diff --git a/Frameworks/AppKit.framework/Versions/C/AppKit.tbd b/Frameworks/AppKit.framework/Versions/C/AppKit.tbd index 405e297b..2df1d557 100644 --- a/Frameworks/AppKit.framework/Versions/C/AppKit.tbd +++ b/Frameworks/AppKit.framework/Versions/C/AppKit.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit' -current-version: 2487.30.104 +current-version: 2575.50.26 compatibility-version: 45 swift-abi-version: 7 reexported-libraries: @@ -2151,339 +2151,128 @@ exports: '$ld$previous$@rpath/libswiftAppKit.dylib$1.0.0$1$10.9$10.15$_$sSo8NSScreenC6AppKitE21auxiliaryTopRightAreaSo6CGRectVSgvg$', '$ld$previous$@rpath/libswiftAppKit.dylib$1.0.0$1$10.9$10.15$_$sSo8NSScreenC6AppKitE21auxiliaryTopRightAreaSo6CGRectVSgvpMV$', '$ld$previous$@rpath/libswiftAppKit.dylib$1.0.0$1$10.9$10.15$_swift_FORCE_LOAD_$', - _GDBDumpCursorStack, _NSAccessibilityAttributeValue, _NSAccessibilityCreateAXUIElementRef, - _NSAccessibilityDraggingDestinationDragAcceptedNotification, - _NSAccessibilityIsAttributeSettable, _NSAccessibilityRaiseUnsupportedActionException, - _NSAccessibilitySetAttributeValue, _NSAppKitPropertyCreator, - _NSAppKitVersionString, _NSAppearanceTextEffectsAttributeName, - _NSBridgedApplyGrammarCheckingIndication, _NSBridgedApplyTextCheckingIndication, - _NSBridgedPerformFinalGrammarChecking, _NSBridgedPerformPendingTextChecking, - _NSBridgedPerformPendingTextCheckingAndReturnInfo, _NSBridgedTextCheckingReplacedStringsKey, - _NSBridgedTextCheckingTextCorrectionsKey, _NSBridgedTextCheckingUnderlineRangesKey, - _NSCarbonWindowPropertyTag, _NSColorLocalPreferencesChangedNotification, - _NSCompositeRect, _NSDatePickerFormatString, _NSDraggingImageComponentDraggingItemKey, - _NSDumpCGImage, _NSDumpImage, _NSExtensionAvailableExtensions, - _NSExtensionAvailableExtensionsChangedNotification, _NSImageNameActionTemplate, - _NSImageNameAddTemplate, _NSImageNameBluetoothTemplate, _NSImageNameBookmarksTemplate, - _NSImageNameColumnViewTemplate, _NSImageNameGoBackTemplate, - _NSImageNameGoForwardTemplate, _NSImageNameGoLeftTemplate, - _NSImageNameGoRightTemplate, _NSImageNameHomeTemplate, _NSImageNameIconViewTemplate, - _NSImageNameListViewTemplate, _NSImageNameLockLockedTemplate, - _NSImageNameLockUnlockedTemplate, _NSImageNamePathTemplate, - _NSImageNameQuickLookTemplate, _NSImageNameRefreshTemplate, - _NSImageNameRemoveTemplate, _NSImageNameShareTemplate, _NSImageNameSlideshowTemplate, - _NSImageNameStopProgressTemplate, _NSImageNameTouchBarAddDetailTemplate, - _NSImageNameTouchBarAddTemplate, _NSImageNameTouchBarAlarmTemplate, - _NSImageNameTouchBarAudioInputMuteTemplate, _NSImageNameTouchBarAudioInputTemplate, - _NSImageNameTouchBarAudioOutputMuteTemplate, _NSImageNameTouchBarAudioOutputVolumeHighTemplate, - _NSImageNameTouchBarAudioOutputVolumeLowTemplate, _NSImageNameTouchBarAudioOutputVolumeMediumTemplate, - _NSImageNameTouchBarAudioOutputVolumeOffTemplate, _NSImageNameTouchBarBookmarksTemplate, - _NSImageNameTouchBarColorPickerFill, _NSImageNameTouchBarColorPickerFont, - _NSImageNameTouchBarColorPickerStroke, _NSImageNameTouchBarCommunicationAudioTemplate, - _NSImageNameTouchBarCommunicationVideoTemplate, _NSImageNameTouchBarComposeTemplate, - _NSImageNameTouchBarDeleteTemplate, _NSImageNameTouchBarDownloadTemplate, - _NSImageNameTouchBarEnterFullScreenTemplate, _NSImageNameTouchBarExitFullScreenTemplate, - _NSImageNameTouchBarFastForwardTemplate, _NSImageNameTouchBarFolderCopyToTemplate, - _NSImageNameTouchBarFolderMoveToTemplate, _NSImageNameTouchBarFolderTemplate, - _NSImageNameTouchBarGetInfoTemplate, _NSImageNameTouchBarGoBackTemplate, - _NSImageNameTouchBarGoDownTemplate, _NSImageNameTouchBarGoForwardTemplate, - _NSImageNameTouchBarGoUpTemplate, _NSImageNameTouchBarHistoryTemplate, - _NSImageNameTouchBarIconViewTemplate, _NSImageNameTouchBarListViewTemplate, - _NSImageNameTouchBarMailTemplate, _NSImageNameTouchBarNewFolderTemplate, - _NSImageNameTouchBarNewMessageTemplate, _NSImageNameTouchBarOpenInBrowserTemplate, - _NSImageNameTouchBarPauseTemplate, _NSImageNameTouchBarPlayPauseTemplate, - _NSImageNameTouchBarPlayTemplate, _NSImageNameTouchBarQuickLookTemplate, - _NSImageNameTouchBarRecordStartTemplate, _NSImageNameTouchBarRecordStopTemplate, - _NSImageNameTouchBarRefreshTemplate, _NSImageNameTouchBarRemoveTemplate, - _NSImageNameTouchBarRewindTemplate, _NSImageNameTouchBarRotateLeftTemplate, - _NSImageNameTouchBarRotateRightTemplate, _NSImageNameTouchBarSearchTemplate, - _NSImageNameTouchBarShareTemplate, _NSImageNameTouchBarSidebarTemplate, - _NSImageNameTouchBarSkipAhead15SecondsTemplate, _NSImageNameTouchBarSkipAhead30SecondsTemplate, - _NSImageNameTouchBarSkipAheadTemplate, _NSImageNameTouchBarSkipBack15SecondsTemplate, - _NSImageNameTouchBarSkipBack30SecondsTemplate, _NSImageNameTouchBarSkipBackTemplate, - _NSImageNameTouchBarSkipToEndTemplate, _NSImageNameTouchBarSkipToStartTemplate, - _NSImageNameTouchBarSlideshowTemplate, _NSImageNameTouchBarTagIconTemplate, - _NSImageNameTouchBarTextBoldTemplate, _NSImageNameTouchBarTextBoxTemplate, - _NSImageNameTouchBarTextCenterAlignTemplate, _NSImageNameTouchBarTextItalicTemplate, - _NSImageNameTouchBarTextJustifiedAlignTemplate, _NSImageNameTouchBarTextLeftAlignTemplate, - _NSImageNameTouchBarTextListTemplate, _NSImageNameTouchBarTextRightAlignTemplate, - _NSImageNameTouchBarTextStrikethroughTemplate, _NSImageNameTouchBarTextUnderlineTemplate, - _NSImageNameTouchBarUserAddTemplate, _NSImageNameTouchBarUserGroupTemplate, - _NSImageNameTouchBarUserTemplate, _NSImageNameTouchBarVolumeDownTemplate, - _NSImageNameTouchBarVolumeUpTemplate, _NSPrintFaxJob, _NSRulerDocViewToRulerConversion, - _NSRulerHashSizeCycle, _NSRulerHashSpacing, _NSRulerLabelInterval, - _NSSetSupplementalWords, _NSSetUseDefaultEmojiReplacementsDictionary, - _NSSidebarCurrentMetrics, _NSSidebarMetricsGroupRow, _NSSidebarTrackingAdapterNoSidebar, - _NSSliderAccessoryWidthDefault, _NSSliderAccessoryWidthWide, - _NSStartSynchronizingDefaults, _NSStopSynchronizingDefaults, - _NSSystemColorPreferencesChangedNotification, _NSTableRowAnimationFromMask, - _NSTableViewGroupViewKey, _NSTextEncapsulationAttributeName, - _NSToolbarCloudSharingItemIdentifier, _NSToolbarDidRemoveItemNotification, - _NSToolbarFlexibleSpaceItemIdentifier, _NSToolbarItemKey, - _NSToolbarPrintItemIdentifier, _NSToolbarShowColorsItemIdentifier, - _NSToolbarShowFontsItemIdentifier, _NSToolbarSidebarSeparatorItemIdentifier, - _NSToolbarSpaceItemIdentifier, _NSToolbarToggleInspectorItemIdentifier, - _NSToolbarToggleSidebarItemIdentifier, _NSToolbarWillAddItemNotification, - _NSTouchBarItemIdentifierCandidateList, _NSTouchBarItemIdentifierFixedSpaceLarge, - _NSTouchBarItemIdentifierFixedSpaceSmall, _NSTouchBarItemIdentifierFlexibleSpace, - _NSTouchBarItemIdentifierOtherItemsProxy, _NSTouchBarItemIdentifierSystemCloseButton, - _NSTypedFilenamesPboardType, _NSUserAccentColorGetHardwareAccentColorName, - _NSUserAccentHasHardwareColor, _ResetNSAlertConstraintBasedLayout, - _ResetNSAlertWeakDelegate, _ResetNSAllowApplicationDisableScreenUpdates, - _ResetNSAutoFillHeuristicControllerEnabled, _ResetNSAutomaticallyTrackKeyValueDependencies, - _ResetNSCollectionViewWeakDelegate, _ResetNSConservativeTAMICConstraintCreation, - _ResetNSConstraintBasedLayoutDetectAmbiguousViews, _ResetNSConstraintBasedLayoutEngageNonLazily, - _ResetNSControlUseTextStyleFonts, _ResetNSDynamicPropertiesCaptureDependencyContextMetadata, - _ResetNSISIconPreparationMode, _ResetNSImageCompositeFromRectIsInRepCoords, - _ResetNSImageRepHardDeprecateEPS, _ResetNSLifeguardOnDuty, - _ResetNSLifeguardTestable, _ResetNSLoadNibDataPolicy, _ResetNSOutlineViewValidateChanges, - _ResetNSPasteboardRequiresSecureCoding, _ResetNSPopoverWeakDelegate, - _ResetNSSafeApertureCompatibilitySetsEnvironmentVariables, - _ResetNSSavePanelForceMicrosoftAccessoryViewCentering, _ResetNSSavePanelWorkAroundBadAccessoryViewFittingSizes, - _ResetNSScreenIsMutable, _ResetNSSplitViewWeakDelegate, _ResetNSStackViewWeakDelegate, - _ResetNSSynchronizeAppKitDefaults, _ResetNSTestRemoteSavePanel, - _ResetNSToolbarSynchronizeConfiguration, _ResetNSUseRemoteSavePanel, - _ResetNSViewControllerSupports10_10Features, _ResetNSViewThrowUnsatisfiableConstraints, - _ResetNSVisualEffectViewAlwaysUseBackdrop, _ResetNSWindowAssertWhenDisplayCycleLimitReached, - _ResetNSWindowTabbingEnabled, _ResetNSWorkspaceRaiseOnInvalidConfigurationDictionary, - _SetNSAlertConstraintBasedLayout, _SetNSAlertWeakDelegate, - _SetNSAllowApplicationDisableScreenUpdates, _SetNSAutoFillHeuristicControllerEnabled, - _SetNSAutomaticallyTrackKeyValueDependencies, _SetNSCollectionViewWeakDelegate, - _SetNSConservativeTAMICConstraintCreation, _SetNSConstraintBasedLayoutDetectAmbiguousViews, - _SetNSConstraintBasedLayoutEngageNonLazily, _SetNSControlUseTextStyleFonts, - _SetNSDynamicPropertiesCaptureDependencyContextMetadata, _SetNSISIconPreparationMode, - _SetNSImageCompositeFromRectIsInRepCoords, _SetNSImageRepHardDeprecateEPS, - _SetNSLifeguardOnDuty, _SetNSLifeguardTestable, _SetNSLoadNibDataPolicy, - _SetNSOutlineViewValidateChanges, _SetNSPasteboardRequiresSecureCoding, - _SetNSPopoverWeakDelegate, _SetNSSafeApertureCompatibilitySetsEnvironmentVariables, - _SetNSSavePanelForceMicrosoftAccessoryViewCentering, _SetNSSavePanelWorkAroundBadAccessoryViewFittingSizes, - _SetNSScreenIsMutable, _SetNSSplitViewWeakDelegate, _SetNSStackViewWeakDelegate, - _SetNSSynchronizeAppKitDefaults, _SetNSTestRemoteSavePanel, - _SetNSToolbarSynchronizeConfiguration, _SetNSUseRemoteSavePanel, - _SetNSViewControllerSupports10_10Features, _SetNSViewThrowUnsatisfiableConstraints, - _SetNSVisualEffectViewAlwaysUseBackdrop, _SetNSWindowAssertWhenDisplayCycleLimitReached, - _SetNSWindowTabbingEnabled, _SetNSWorkspaceRaiseOnInvalidConfigurationDictionary, - __NSAddButtonRectToWindowWithActivation, __NSAddPointValueForAxis, - __NSAddRectsToWindow, __NSAddSizeValueForAxis, __NSAddSpecialCommandRectToWindow, - __NSAppKitGlobalLock, __NSAppendToKillRing, __NSApplicationMetricsGatheringEnabled, - __NSApplyDirectionalInsetsToRect, __NSApplyOffsetFromEdgeInsetsForPoint, - __NSClearButtonRectsInWindow, __NSClearDragRectsInWindow, - __NSClearMarkedRange, __NSCollectionLayoutCompositionalSolverRebasedPreferredSizesForSolutions, - __NSColorFromDefault, __NSColorSpaceNameFromNum, __NSCreateImageRef, - __NSCreateKeyBindingState, __NSDictionaryWithAdditionalKeyAndObject, - __NSDirectionalEdgeForRectAlignmentAndAxis, __NSDirectionalEdgesForAxis, - __NSDirectionalInsetsAdd, __NSDirectionalInsetsFlipped, __NSDirectionalInsetsForInsetsAlongAxis, - __NSDocumentSerializationInfo, __NSEdgeInsetsEqualToInsetsAlongAxis, - __NSEffectiveEdgeInsetsForSize, __NSFrameByPinningToContainerFrameEdge, - __NSGetAppKitMenu, __NSGetCarbonMenu, __NSGetCarbonMenu2, - __NSGetMenuItemForCommandKeyEvent, __NSHIViewDrawNSImage, - __NSImageGetSize, __NSInitializeKillRing, __NSIsCarbonApp, - __NSKitBundle, __NSLeadingOffsetForInsetsAlongAxis, __NSLoadMacSimpleTextFormatWithOptions, - __NSLogCTM, __NSMakeAttributedStringFromCarbonTEData, __NSMakeCarbonTEDataFromAttributedString, - __NSNameFromKeyEquivalentString, __NSNegatedDirectionalInsetsForInsets, - __NSNewCatalogColor, __NSNewKillRingSequence, __NSNormalizeOffsetForContainerRect, - __NSNormalizeRectForPositiveOrigin, __NSOffsetFromCenteredAnchorPointForEdgesInRect, - __NSOpenAndSavePanelServiceRequestsOrderWindow, __NSOpenAndSavePanelServiceRequestsOrderWindowForTimeMachineModeInvocation, - __NSOpenAndSavePanelServiceRequestsSetFrameOfRemoteWindowForTimeMachineMode, - __NSOpenAndSavePanelServiceRequestsUpdateSidebarTrackingPosition, - __NSOpenAndSavePanelsServiceBridgeKeMostRecentCompletion, - __NSOpenAndSavePanelsServiceBridgeKeMostRecentCompletionKeyIndex, - __NSOpenAndSavePanelsServiceBridgeKeMostRecentCompletionKeyResult, - __NSOpenAndSavePanelsServiceBridgeKeyBOOL, __NSOpenAndSavePanelsServiceBridgeKeyNSError, - __NSOpenAndSavePanelsServiceBridgeKeyQueryFilenameOK, __NSOpenAndSavePanelsServiceBridgeKeyRemoteDelegateInvocation, - __NSOpenAndSavePanelsServiceBridgeKeyRemoteIBActionInvocation, - __NSOpenAndSavePanelsServiceBridgeKeyRemoteIBActionNewDocument, - __NSOpenAndSavePanelsServiceBridgeKeyRemoteMethodInvocation, - __NSOpenAndSavePanelsServiceBridgeKeySendDelegateDirectoryChanged, - __NSOpenAndSavePanelsServiceBridgeKeySendDelegateDirectoryURLChanged, - __NSOpenAndSavePanelsServiceBridgeKeySendDelegatePanelShouldEnableURL, - __NSOpenAndSavePanelsServiceBridgeKeySendDelegatePanelUserEnteredFilename, - __NSOpenAndSavePanelsServiceBridgeKeySendDelegatePanelWillExpand, - __NSOpenAndSavePanelsServiceBridgeKeySendDelegateSelectionDidChange, - __NSOpenAndSavePanelsServiceBridgeKeyUniqueID, __NSOpposingDirectionalEdgeForEdge, - __NSOrthogonalAxisForAxis, __NSPinnedFrameForFrameWithContainerFrameVisibleFrame, - __NSPinnedNonOverlappingFramesForContentFrameVisibleFrame, - __NSPointValueForAxis, __NSPopUpCarbonMenu2, __NSPrependToKillRing, - __NSRTreeExpansionCostScoreForFrames, __NSRectAddOffset, __NSRectAdjustWithAnchorPoint, - __NSRectAnchorPointForEdges, __NSRectAnchorPointForUnitAnchorPoint, - __NSRectByAnchoringSizeInContainer, __NSRectClampRectToMinimumSizeForAxis, - __NSRectIntegralWithScale, __NSRectMaxPointValueAlongAxis, - __NSRectMinPointValueAlongAxis, __NSRectSubtractOffset, __NSRectSubtractingRectYieldingDirectionalInsets, - __NSResetKillRingOperationFlag, __NSSetDottedLinePattern, - __NSSetFocusRingStyle, __NSSetKillRingToYankedState, __NSSetPointValueForAxis, - __NSSetSizeValueForAxis, __NSSetWindowOpacity, __NSShapeRoundedWindow, - __NSShapeRoundedWindowWithWeighting, __NSShortAppName, __NSSizeAdd, - __NSSizeClampToMinimumSizeForAxis, __NSSizeEqualToSizeWithPrecision, - __NSSizeEquivalentToSize, __NSSizeRoundToScale, __NSSizeValueForAxis, - __NSTextCellSize, __NSTextContainerForTextCell, __NSToolbarMetricsGetDefault, - __NSTotalEdgeDimensionsForLayoutAxis, __NSTrailingOffsetForInsetsAlongAxis, - __NSUnitAnchorPointForEdges, __NSYankFromKillRing, __NXDrawImage, - __NXDrawTextCell, __NXKitString, __NXLastModalSession, __NXScreenForRect, - __NXScreenMaxYForRect, __NXShowKeyAndMain, __NXSmartPaste, - __compareTabViewItemWidth, __enableNSPreferences, '__swift_FORCE_LOAD_$_swiftAppKit' ] - objc-classes: [ NSAccessibilityMockUIElement, NSAccessibilityProxy, NSApplicationExtensionItem, - NSApplicationExtensionSession, NSAutounbinder, NSButtonImageSource, - NSButtonTouchBarItem, NSCachedRGBColor, NSCalibratedRGBColor, - NSCandidateListTouchBarItem, NSCarbonMenuImpl, NSColorPickerSliders, - NSColorPickerTouchBarItem, NSColorSpaceColor, NSComboBoxWindow, - NSConcretePrintOperation, NSCoreUIImageRep, NSCursor, NSDocumentTitlebarController, - NSDrawerFrame, NSFocusStack, NSGroupTouchBarItem, NSImage, - NSLocalOpenPanel, NSLocalSavePanel, NSMenuItemViewer, NSMenuToolbarItem, - NSMultiplePagePDFImageViewTextAttachmentCell, NSNavOutlineDateCell, - NSNavSplitView, NSNextStepFrame, NSOSPDefaults, NSObservableDefaults, - NSOtherItemsProxyTouchBarItem, NSPickerTouchBarItem, NSPopoverTouchBarItem, - NSRemoteOpenPanel, NSRemoteSavePanel, NSRuleEditorPopupButton, - NSRuleEditorViewSliceRow, NSSearchToolbarItem, NSSecureTextView, - NSSegmentItem, NSSelectionArray, NSSeparatorToolbarItem, NSSharingServicePickerToolbarItem, - NSSharingServicePickerTouchBarItem, NSSharingService_Subsystem, - NSSliderAccessory, NSSliderAccessoryBehavior, NSSliderTouchBarItem, - NSSplitViewSplitter, NSStatusBarButtonCell, NSStepperTouchBarItem, - NSSubTextStorage, NSSynchronizedDefaults, NSSystemInfoPanel, - NSTableRow, NSTableViewCellProxy, NSTextEncapsulation, NSTextViewCompletionController, - NSTextViewCompletionWindow, NSThemeDocumentButton, NSThemeFrame, - NSTitledFrame, NSTokenTextView, NSToolTip, NSToolTipManager, - NSToolTipPanel, NSToolTipStringDrawingLayoutManager, NSToolbar, - NSToolbarButton, NSToolbarFlexibleSpaceItem, NSToolbarItem, - NSToolbarItemGroup, NSToolbarPoofAnimator, NSToolbarSeparatorItem, - NSToolbarSpaceItem, NSTouchBar, NSTouchBarItem, NSTouchBarViewController, - NSTrackingSeparatorToolbarItem, NSTreeControllerTreeNode, - NSUndoReplaceCharacters, NSUndoSetAttributes, NSUndoTextOperation, - NSUndoTyping, NSWindowAuxiliary, _NSBorderlessLayerTreeProjectionWindow, - _NSBrowserColumnsContainerView, _NSBrowserScrollView, _NSDatePickerCalendarOverlay, - _NSDatePickerCellSubfield, _NSDisplayOperationStack, _NSMenuContext, - _NSMenuServicesView, _NSPersistentUIStorageServiceListener, - _NSServiceEntry, _NSServiceFilter, _NSThemeFullScreenButtonCell, - _NSThemeWidget, _NSThemeWidgetCell, _NSToolbarClippedItemsIndicatorCell, - _NSToolbarFlexibleSpace, _NSToolbarItemViewerLabelCellPopUpCell, - _NSToolbarItemViewerLabelView, _NSToolbarSeparator, _NSToolbarSpace, - _NSViewLayoutFeedbackLoopDebugger ] - objc-ivars: [ NSAccessibilityMockUIElement._parent, NSActionCell._action, - NSActionCell._controlView, NSActionCell._target, NSApplication._delegate, - NSApplication._keyWindow, NSApplication._mainWindow, NSBox._borderRect, - NSBox._contentView, NSBrowser._columns, NSBrowser._matrixClass, - NSButtonCell._altContents, NSButtonCell._bcFlags2, NSButtonCell._keyEquivalent, - NSButtonCell._sound, NSCarbonMenuImpl._menu, NSColorPanel._target, - NSColorPickerSliders.sliderModePopUp, NSColorSpaceColor._cachedCGColor, - NSColorSpaceColor.colorSpace, NSColorSpaceColor.components, - NSColorSpaceColor.numComponents, NSColorWell._color, NSColorWell._cwFlags, - NSComboBoxCell._buttonCell, NSComboBoxCell._cbcFlags, NSComboBoxCell._popUp, - NSComboBoxCell._scrollView, NSComboBoxCell._tableView, NSComboBoxWindow._attachedToParent, - NSControl._cell, NSControl._conFlags, NSDrawer._drawerWindow, - NSDrawerFrame.drawerEdge, NSDrawerFrame.trackingTag, NSEPSImageRep._pdfImageRep, - NSEvent._data, NSEvent._eventRef, NSEvent._modifierFlags, - NSEvent._window, NSEvent._windowNumber, NSImage._flags, NSImageCell._scaledImage, - NSImageRep._pixelsHigh, NSImageRep._pixelsWide, NSImageRep._repFlags, - NSImageRep._size, NSImageView._action, NSImageView._target, - NSMatrix._backgroundColor, NSMatrix._cellClass, NSMatrix._cells, - NSMatrix._delegate, NSMatrix._font, NSMatrix._mFlags, NSMatrix._numCols, - NSObjectController._content, NSObjectController._objectHandler, - NSRulerMarker._location, NSRulerMarker._rFlags, NSRulerMarker._ruler, - NSSavePanel._cancelButton, NSSavePanel._nameField, NSSavePanel._newFolderButton, - NSSavePanel._okButton, NSScrollView._cornerView, NSScrollView._extraIvars, - NSScrollView._hScroller, NSScrollView._horizontalRuler, NSScrollView._sFlags, - NSScrollView._vScroller, NSScrollView._verticalRuler, NSScroller._sFlags2, - NSSegmentItem._alternateImage, NSSegmentItem._flags, NSSegmentItem._fullWidth, - NSSegmentItem._image, NSSegmentItem._imageRect, NSSegmentItem._label, - NSSegmentItem._labelRect, NSSegmentItem._menu, NSSegmentItem._menuIndRect, - NSSegmentItem._shrinkage, NSSegmentItem._tag, NSSegmentItem._toolTip, - NSSegmentItem._toolTipTag, NSSegmentItem._width, NSSliderCell._maxValue, - NSSliderCell._minValue, NSSliderCell._numberOfTickMarks, NSSliderCell._scFlags, - NSSliderCell._value, NSSystemInfoPanel._optionsDictionary, - NSSystemInfoPanel.copyrightView, NSSystemInfoPanel.infoPanel, - NSTableColumn._dataCell, NSTableColumn._headerCell, NSTableColumn._maxWidth, - NSTableColumn._minWidth, NSTableHeaderView._draggedColumn, - NSTableHeaderView._draggedDistance, NSTableHeaderView._headerDragImage, - NSTableHeaderView._showHandCursorFired, NSTableHeaderView._skipDrawingSeparator, - NSTableHeaderView._tableView, NSTableHeaderView._toolTipRectsDirty, - NSTableRow._row, NSTableRow._tableView, NSTableView._backgroundColor, - NSTableView._cornerView, NSTableView._dataSource, NSTableView._editingCell, - NSTableView._gridColor, NSTableView._intercellSpacing, NSTableView._selectedRows, - NSTableView._tvFlags, NSTextAttachmentCell._attachment, NSTextFieldCell._backgroundColor, - NSTextFieldCell._textColor, NSTextFieldCell._tfFlags, NSTextViewCompletionController._completionWindow, - NSTextViewCompletionController._tableView, NSThemeFrame._tFlags, - NSTitledFrame.fileButton, NSToolTip.owner, NSToolTip.trackingNum, - NSToolTip.ttFlags, NSToolTip.view, NSToolTipStringDrawingLayoutManager._layoutManager, - NSTreeNode._childNodes, NSTreeNode._parentNode, NSUndoReplaceCharacters._attributedString, - NSUndoReplaceCharacters._replacementRange, NSUndoTextOperation._affectedRange, - NSUndoTextOperation._textStorage, NSUndoTextOperation._undoManager, - NSUndoTyping._attributedString, NSUndoTyping._replacementRange, - NSView._dragTypes, NSView._superview, NSWindow._auxiliaryStorage, - NSWindow._contentView, NSWindow._delegate, NSWindow._styleMask, - NSWindow._wFlags, NSWindowAuxiliary._auxWFlags, NSWindowAuxiliary.docWindow, - _NSBrowserColumnsContainerView._brccvFlags, _NSDatePickerCellSubfield._frame, - _NSServiceEntry._flags, _NSServiceEntry._serviceFilters, _NSServiceEntry.bundleIdentifier, - _NSServiceEntry.defaultTitle, _NSServiceEntry.localizedTitleWithoutSubstitutions, - _NSServiceEntry.sendFileTypes, _NSServiceEntry.sendPasteboardTypes, - _NSServiceFilter.bundleIdentifier, _NSServiceFilter.characterLimit, - _NSServiceFilter.entry, _NSServiceFilter.flags, _NSServiceFilter.linkSchemes, - _NSServiceFilter.textScript, _NSServiceFilter.wordLimit, _NSToolbarItemViewerLabelCellPopUpCell._realTitle, - _NSToolbarSeparator._inPalette ] - - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] - symbols: [ '_$s10Foundation10CocoaErrorV4CodeV6AppKitE016ServiceMalformedg10DictionaryC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE016ServiceMalformedg10DictionaryC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE016ServiceMalformedg10DictionaryC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE017fontAssetDownloadC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE017fontAssetDownloadC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE020ServiceMiscellaneousC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE020ServiceMiscellaneousC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE020serviceMiscellaneousC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE020serviceMiscellaneousC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE022ServiceRequestTimedOutC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE022ServiceRequestTimedOutC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE022serviceRequestTimedOutC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE022serviceRequestTimedOutC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE026ServiceApplicationNotFoundC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE026ServiceApplicationNotFoundC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE026serviceApplicationNotFoundC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE026serviceApplicationNotFoundC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE027SharingServiceNotConfiguredC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE027SharingServiceNotConfiguredC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE027sharingServiceNotConfiguredC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE027sharingServiceNotConfiguredC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE028ServiceInvalidPasteboardDataC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE028ServiceInvalidPasteboardDataC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE028serviceInvalidPasteboardDataC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE028serviceInvalidPasteboardDataC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE030ServiceApplicationLaunchFailedC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE030ServiceApplicationLaunchFailedC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE030serviceApplicationLaunchFailedC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE030serviceApplicationLaunchFailedC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE032TextReadInapplicableDocumentTypeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE032TextReadInapplicableDocumentTypeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE032textReadInapplicableDocumentTypeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE032textReadInapplicableDocumentTypeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE033TextWriteInapplicableDocumentTypeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE033TextWriteInapplicableDocumentTypeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE033serviceMalformedServiceDictionaryC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE033serviceMalformedServiceDictionaryC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE033textWriteInapplicableDocumentTypeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE033textWriteInapplicableDocumentTypeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE20serviceMiscellaneousAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE20serviceMiscellaneousAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE22serviceRequestTimedOutAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE22serviceRequestTimedOutAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE26serviceApplicationNotFoundAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE26serviceApplicationNotFoundAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE27sharingServiceNotConfiguredAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE27sharingServiceNotConfiguredAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE28serviceInvalidPasteboardDataAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE28serviceInvalidPasteboardDataAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE30serviceApplicationLaunchFailedAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE30serviceApplicationLaunchFailedAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE32textReadInapplicableDocumentTypeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE32textReadInapplicableDocumentTypeAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE33serviceMalformedServiceDictionaryAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE33serviceMalformedServiceDictionaryAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV6AppKitE33textWriteInapplicableDocumentTypeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV6AppKitE33textWriteInapplicableDocumentTypeAEvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE015isTextReadWriteC0Sbvg', '_$s10Foundation10CocoaErrorV6AppKitE015isTextReadWriteC0SbvpMV', '_$s10Foundation10CocoaErrorV6AppKitE016ServiceMalformedf10DictionaryC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE016ServiceMalformedf10DictionaryC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE016isSharingServiceC0Sbvg', '_$s10Foundation10CocoaErrorV6AppKitE016isSharingServiceC0SbvpMV', '_$s10Foundation10CocoaErrorV6AppKitE017fontAssetDownloadC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE017fontAssetDownloadC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE020ServiceMiscellaneousC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE020ServiceMiscellaneousC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE020serviceMiscellaneousC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE020serviceMiscellaneousC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE022ServiceRequestTimedOutC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE022ServiceRequestTimedOutC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE022serviceRequestTimedOutC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE022serviceRequestTimedOutC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE026ServiceApplicationNotFoundC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE026ServiceApplicationNotFoundC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE026serviceApplicationNotFoundC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE026serviceApplicationNotFoundC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE027SharingServiceNotConfiguredC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE027SharingServiceNotConfiguredC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE027sharingServiceNotConfiguredC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE027sharingServiceNotConfiguredC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE028ServiceInvalidPasteboardDataC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE028ServiceInvalidPasteboardDataC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE028serviceInvalidPasteboardDataC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE028serviceInvalidPasteboardDataC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE030ServiceApplicationLaunchFailedC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE030ServiceApplicationLaunchFailedC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE030serviceApplicationLaunchFailedC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE030serviceApplicationLaunchFailedC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE032TextReadInapplicableDocumentTypeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE032TextReadInapplicableDocumentTypeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE032textReadInapplicableDocumentTypeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE032textReadInapplicableDocumentTypeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE033TextWriteInapplicableDocumentTypeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE033TextWriteInapplicableDocumentTypeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE033serviceMalformedServiceDictionaryC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE033serviceMalformedServiceDictionaryC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE033textWriteInapplicableDocumentTypeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE033textWriteInapplicableDocumentTypeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE06isFontC0Sbvg', '_$s10Foundation10CocoaErrorV6AppKitE06isFontC0SbvpMV', '_$s10Foundation10CocoaErrorV6AppKitE09isServiceC0Sbvg', '_$s10Foundation10CocoaErrorV6AppKitE09isServiceC0SbvpMV', '_$s10Foundation10CocoaErrorV6AppKitE20serviceMiscellaneousAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE20serviceMiscellaneousAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE22serviceRequestTimedOutAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE22serviceRequestTimedOutAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE26serviceApplicationNotFoundAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE26serviceApplicationNotFoundAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE27sharingServiceNotConfiguredAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE27sharingServiceNotConfiguredAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE28serviceInvalidPasteboardDataAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE28serviceInvalidPasteboardDataAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE30serviceApplicationLaunchFailedAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE30serviceApplicationLaunchFailedAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE32textReadInapplicableDocumentTypeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE32textReadInapplicableDocumentTypeAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE33serviceMalformedServiceDictionaryAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE33serviceMalformedServiceDictionaryAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV6AppKitE33textWriteInapplicableDocumentTypeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV6AppKitE33textWriteInapplicableDocumentTypeAC4CodeVvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE03appE0AcDE0dE10AttributesVmvg', '_$s10Foundation15AttributeScopesO6AppKitE03appE0AcDE0dE10AttributesVmvpMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010AttachmentB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010AttachmentB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010AttachmentB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010AttachmentB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010AttachmentB0OAA28EncodableAttributedStringKeyADMc', @@ -2491,6 +2280,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010AttachmentB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010AttachmentB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010TextEffectB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010TextEffectB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010TextEffectB0O6decode4fromSo06NSTextH5Styleas7Decoder_p_tKFZ', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010TextEffectB0O6encode_2toySo06NSTextH5Stylea_s7Encoder_ptKFZ', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010TextEffectB0OAA19AttributedStringKeyADMc', @@ -2500,6 +2290,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010TextEffectB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV010TextEffectB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011ObliquenessB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011ObliquenessB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011ObliquenessB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011ObliquenessB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011ObliquenessB0OAA28EncodableAttributedStringKeyADMc', @@ -2507,6 +2298,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011ObliquenessB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011ObliquenessB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeColorB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeColorB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeColorB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeColorB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeColorB0OAA28EncodableAttributedStringKeyADMc', @@ -2514,6 +2306,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeColorB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeColorB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeWidthB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeWidthB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeWidthB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeWidthB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeWidthB0OAA28EncodableAttributedStringKeyADMc', @@ -2521,6 +2314,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeWidthB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011StrokeWidthB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011SuperscriptB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011SuperscriptB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011SuperscriptB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011SuperscriptB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011SuperscriptB0OAA28EncodableAttributedStringKeyADMc', @@ -2528,6 +2322,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011SuperscriptB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV011SuperscriptB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014BaselineOffsetB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014BaselineOffsetB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014BaselineOffsetB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014BaselineOffsetB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014BaselineOffsetB0OAA28EncodableAttributedStringKeyADMc', @@ -2535,6 +2330,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014BaselineOffsetB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014BaselineOffsetB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014ParagraphStyleB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014ParagraphStyleB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014ParagraphStyleB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014ParagraphStyleB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014ParagraphStyleB0OAA28EncodableAttributedStringKeyADMc', @@ -2542,6 +2338,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014ParagraphStyleB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014ParagraphStyleB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineColorB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineColorB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineColorB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineColorB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineColorB0OAA28EncodableAttributedStringKeyADMc', @@ -2549,6 +2346,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineColorB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineColorB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineStyleB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineStyleB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineStyleB0O6decode4fromSo011NSUnderlineH0Vs7Decoder_p_tKFZ', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineStyleB0O6encode_2toySo011NSUnderlineH0V_s7Encoder_ptKFZ', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineStyleB0OAA19AttributedStringKeyADMc', @@ -2559,6 +2357,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineStyleB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV014UnderlineStyleB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015BackgroundColorB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015BackgroundColorB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015BackgroundColorB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015BackgroundColorB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015BackgroundColorB0OAA28EncodableAttributedStringKeyADMc', @@ -2566,6 +2365,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015BackgroundColorB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015BackgroundColorB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015ForegroundColorB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015ForegroundColorB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015ForegroundColorB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015ForegroundColorB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015ForegroundColorB0OAA28EncodableAttributedStringKeyADMc', @@ -2573,13 +2373,34 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015ForegroundColorB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV015ForegroundColorB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV016TextAlternativesB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV016TextAlternativesB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV016TextAlternativesB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV016TextAlternativesB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV016TextAlternativesB0OAA28EncodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV016TextAlternativesB0OMa', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV016TextAlternativesB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV016TextAlternativesB0ON', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O13runBoundariesAA16AttributedStringV0b3RunK0OSgvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O13runBoundariesAA16AttributedStringV0b3RunK0OSgvpZMV', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O15objectiveCValue3forSo010NSAdaptivehI0CAA16AttributedStringV8CoreTextE0ghI0V_tKFZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O20inheritedByAddedTextSbvMZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O20inheritedByAddedTextSbvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O20inheritedByAddedTextSbvpZMV', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O20inheritedByAddedTextSbvsZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O4nameSSvpZMV', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O5value3forAA16AttributedStringV8CoreTextE0ghI0VSo010NSAdaptivehI0C_tKFZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O6decode4fromAA16AttributedStringV8CoreTextE0ghI0Vs7Decoder_p_tKFZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0O6encode_2toyAA16AttributedStringV8CoreTextE0ghI0V_s7Encoder_ptKFZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0OAA19AttributedStringKeyADMc', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0OAA28DecodableAttributedStringKeyADMc', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0OAA28EncodableAttributedStringKeyADMc', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0OAA40ObjectiveCConvertibleAttributedStringKeyADMc', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0OMa', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0OMn', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018AdaptiveImageGlyphB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughColorB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughColorB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughColorB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughColorB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughColorB0OAA28EncodableAttributedStringKeyADMc', @@ -2587,6 +2408,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughColorB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughColorB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughStyleB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughStyleB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughStyleB0O6decode4fromSo011NSUnderlineH0Vs7Decoder_p_tKFZ', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughStyleB0O6encode_2toySo011NSUnderlineH0V_s7Encoder_ptKFZ', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughStyleB0OAA19AttributedStringKeyADMc', @@ -2597,6 +2419,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughStyleB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV018StrikethroughStyleB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV019MarkedClauseSegmentB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV019MarkedClauseSegmentB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV019MarkedClauseSegmentB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV019MarkedClauseSegmentB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV019MarkedClauseSegmentB0OAA28EncodableAttributedStringKeyADMc', @@ -2604,6 +2427,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV019MarkedClauseSegmentB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV019MarkedClauseSegmentB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04FontB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04FontB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04FontB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04FontB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04FontB0OAA28EncodableAttributedStringKeyADMc', @@ -2611,6 +2435,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04FontB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04FontB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04KernB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04KernB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04KernB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04KernB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04KernB0OAA28EncodableAttributedStringKeyADMc', @@ -2618,11 +2443,13 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04KernB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV04KernB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06CursorB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06CursorB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06CursorB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06CursorB0OMa', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06CursorB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06CursorB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06ShadowB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06ShadowB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06ShadowB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06ShadowB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06ShadowB0OAA28EncodableAttributedStringKeyADMc', @@ -2630,6 +2457,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06ShadowB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV06ShadowB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV07ToolTipB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV07ToolTipB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV07ToolTipB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV07ToolTipB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV07ToolTipB0OAA28EncodableAttributedStringKeyADMc', @@ -2637,6 +2465,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV07ToolTipB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV07ToolTipB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08LigatureB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08LigatureB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08LigatureB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08LigatureB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08LigatureB0OAA28EncodableAttributedStringKeyADMc', @@ -2644,6 +2473,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08LigatureB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08LigatureB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08TrackingB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08TrackingB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08TrackingB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08TrackingB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08TrackingB0OAA28EncodableAttributedStringKeyADMc', @@ -2651,6 +2481,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08TrackingB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV08TrackingB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09ExpansionB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09ExpansionB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09ExpansionB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09ExpansionB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09ExpansionB0OAA28EncodableAttributedStringKeyADMc', @@ -2658,6 +2489,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09ExpansionB0OMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09ExpansionB0ON', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09GlyphInfoB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09GlyphInfoB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09GlyphInfoB0OAA19AttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09GlyphInfoB0OAA28DecodableAttributedStringKeyADMc', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV09GlyphInfoB0OAA28EncodableAttributedStringKeyADMc', @@ -2694,6 +2526,8 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV15foregroundColorAF010ForegroundhB0OvpMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV16textAlternativesAF04TexthB0Ovg', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV16textAlternativesAF04TexthB0OvpMV', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV18adaptiveImageGlyphAF08AdaptivehiB0Ovg', + '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV18adaptiveImageGlyphAF08AdaptivehiB0OvpMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV18strikethroughColorAF013StrikethroughhB0Ovg', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV18strikethroughColorAF013StrikethroughhB0OvpMV', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesV18strikethroughStyleAF013StrikethroughhB0Ovg', @@ -2724,6 +2558,7 @@ exports: '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesVMa', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesVMn', '_$s10Foundation15AttributeScopesO6AppKitE0dE10AttributesVN', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV6AppKitEyAFSo010NSAdaptivegH0CcfC', '_$s10Foundation17URLResourceValuesV6AppKitE10customIconSo7NSImageCSgvg', '_$s10Foundation17URLResourceValuesV6AppKitE10customIconSo7NSImageCSgvpMV', '_$s10Foundation17URLResourceValuesV6AppKitE10labelColorSo7NSColorCSgvg', @@ -2741,11 +2576,84 @@ exports: '_$s10Foundation9IndexPathV6AppKitE4itemSivpMV', '_$s10Foundation9IndexPathV6AppKitE4itemSivs', '_$s10Foundation9IndexPathV6AppKitE7sectionSivM', '_$s10Foundation9IndexPathV6AppKitE7sectionSivg', '_$s10Foundation9IndexPathV6AppKitE7sectionSivpMV', '_$s10Foundation9IndexPathV6AppKitE7sectionSivs', - '_$s18SuggestionItemType6AppKit25NSTextSuggestionsDelegatePTl', + '_$s10ResultType6AppKit15AwaitableActionPTl', '_$s12CoreGraphics7CGFloatV6AppKit9AwaitableADMc', + '_$s12CoreGraphics7CGFloatV6AppKit9AwaitableADWP', '_$s12CoreGraphics7CGFloatV6AppKitE7perform6action12remoteObjectACSo13OS_xpc_object_p_So8NSObjectCtYaFZ', + '_$s12CoreGraphics7CGFloatV6AppKitE7perform6action12remoteObjectACSo13OS_xpc_object_p_So8NSObjectCtYaFZTu', + '_$s12InternalType6AppKit14ActionWrappingPTl', '_$s12MenuItemType6AppKit0A4BasePTl', + '_$s15ActionInterface6AppKit21TransactionPerformingPTl', '_$s18SuggestionItemType6AppKit25NSTextSuggestionsDelegatePTl', '_$s21DeveloperToolsSupport28PreviewSourceContentCategoryV6AppKitE03appI4ViewACvgZ', + '_$s21DeveloperToolsSupport28PreviewSourceContentCategoryV6AppKitE03appI4ViewACvpZMV', + '_$s21DeveloperToolsSupport7PreviewV6AppKitE_6traits4body9argumentsACSSSg_AA0D5TraitVyAC10ViewTraitsOGdSo16NSViewControllerCxScMYccAA0D9ArgumentsVyxGyXEtclufC', + '_$s21DeveloperToolsSupport7PreviewV6AppKitE_6traits4body9argumentsACSSSg_AA0D5TraitVyAC10ViewTraitsOGdSo6NSViewCxScMYccAA0D9ArgumentsVyxGyXEtclufC', '_$s21DeveloperToolsSupport7PreviewV6AppKitE_6traits4bodyACSSSg_AA0D5TraitVyAC10ViewTraitsOGdSo16NSViewControllerCyScMYcctcfC', '_$s21DeveloperToolsSupport7PreviewV6AppKitE_6traits4bodyACSSSg_AA0D5TraitVyAC10ViewTraitsOGdSo6NSViewCyScMYcctcfC', - '_$s6AppKit01_abB23NumericRawRepresentableMp', '_$s6AppKit01_abB23NumericRawRepresentableP0D5ValueSY_SLTn', + '_$s21DeveloperToolsSupport7PreviewV6AppKitE_6traits9arguments4bodyACSSSg_AA0D5TraitVyAC10ViewTraitsOGdSayxGSo16NSViewControllerCxScMYcctclufC', + '_$s21DeveloperToolsSupport7PreviewV6AppKitE_6traits9arguments4bodyACSSSg_AA0D5TraitVyAC10ViewTraitsOGdSayxGSo6NSViewCxScMYcctclufC', + '_$s2os6LoggerV6AppKitE10appearanceACvgZ', '_$s2os6LoggerV6AppKitE10appearanceACvpZMV', + '_$s2os6LoggerV6AppKitE10colorPanelACvgZ', '_$s2os6LoggerV6AppKitE10colorPanelACvpZMV', + '_$s2os6LoggerV6AppKitE10pasteboardACvgZ', '_$s2os6LoggerV6AppKitE10pasteboardACvpZMV', + '_$s2os6LoggerV6AppKitE10screenTimeACvgZ', '_$s2os6LoggerV6AppKitE10screenTimeACvpZMV', + '_$s2os6LoggerV6AppKitE10scrollViewACvgZ', '_$s2os6LoggerV6AppKitE10scrollViewACvpZMV', + '_$s2os6LoggerV6AppKitE10storyboardACvgZ', '_$s2os6LoggerV6AppKitE10storyboardACvpZMV', + '_$s2os6LoggerV6AppKitE11applicationACvgZ', '_$s2os6LoggerV6AppKitE11applicationACvpZMV', + '_$s2os6LoggerV6AppKitE11defaultSyncACvgZ', '_$s2os6LoggerV6AppKitE11defaultSyncACvpZMV', + '_$s2os6LoggerV6AppKitE11dragAndDropACvgZ', '_$s2os6LoggerV6AppKitE11dragAndDropACvpZMV', + '_$s2os6LoggerV6AppKitE11searchFieldACvgZ', '_$s2os6LoggerV6AppKitE11searchFieldACvpZMV', + '_$s2os6LoggerV6AppKitE12displayCycleACvgZ', '_$s2os6LoggerV6AppKitE12displayCycleACvpZMV', + '_$s2os6LoggerV6AppKitE12intelligenceACvgZ', '_$s2os6LoggerV6AppKitE12intelligenceACvpZMV', + '_$s2os6LoggerV6AppKitE12persistentUIACvgZ', '_$s2os6LoggerV6AppKitE12persistentUIACvpZMV', + '_$s2os6LoggerV6AppKitE13windowSharingACvgZ', '_$s2os6LoggerV6AppKitE13windowSharingACvpZMV', + '_$s2os6LoggerV6AppKitE14collectionViewACvgZ', '_$s2os6LoggerV6AppKitE14collectionViewACvpZMV', + '_$s2os6LoggerV6AppKitE14openSavePanelsACvgZ', '_$s2os6LoggerV6AppKitE14openSavePanelsACvpZMV', + '_$s2os6LoggerV6AppKitE14textGenerationACvgZ', '_$s2os6LoggerV6AppKitE14textGenerationACvpZMV', + '_$s2os6LoggerV6AppKitE16stateRestorationACvgZ', '_$s2os6LoggerV6AppKitE16stateRestorationACvpZMV', + '_$s2os6LoggerV6AppKitE16visualEffectViewACvgZ', '_$s2os6LoggerV6AppKitE16visualEffectViewACvpZMV', + '_$s2os6LoggerV6AppKitE17documentBacktraceACvgZ', '_$s2os6LoggerV6AppKitE17documentBacktraceACvpZMV', + '_$s2os6LoggerV6AppKitE17dynamicPropertiesACvgZ', '_$s2os6LoggerV6AppKitE17dynamicPropertiesACvpZMV', + '_$s2os6LoggerV6AppKitE20automaticTerminationACvgZ', '_$s2os6LoggerV6AppKitE20automaticTerminationACvpZMV', + '_$s2os6LoggerV6AppKitE20keyValueDependenciesACvgZ', '_$s2os6LoggerV6AppKitE20keyValueDependenciesACvpZMV', + '_$s2os6LoggerV6AppKitE21touchBarCustomizationACvgZ', '_$s2os6LoggerV6AppKitE21touchBarCustomizationACvpZMV', + '_$s2os6LoggerV6AppKitE22pasteboardVerificationACvgZ', '_$s2os6LoggerV6AppKitE22pasteboardVerificationACvpZMV', + '_$s2os6LoggerV6AppKitE3pptACvgZ', '_$s2os6LoggerV6AppKitE3pptACvpZMV', + '_$s2os6LoggerV6AppKitE4helpACvgZ', '_$s2os6LoggerV6AppKitE4helpACvpZMV', + '_$s2os6LoggerV6AppKitE4menuACvgZ', '_$s2os6LoggerV6AppKitE4menuACvpZMV', + '_$s2os6LoggerV6AppKitE4viewACvgZ', '_$s2os6LoggerV6AppKitE4viewACvpZMV', + '_$s2os6LoggerV6AppKitE5error6publicAEySSSgyXK_s5Error_pyXKtF', + '_$s2os6LoggerV6AppKitE5imageACvgZ', '_$s2os6LoggerV6AppKitE5imageACvpZMV', + '_$s2os6LoggerV6AppKitE5nscgsACvgZ', '_$s2os6LoggerV6AppKitE5nscgsACvpZMV', + '_$s2os6LoggerV6AppKitE5soundACvgZ', '_$s2os6LoggerV6AppKitE5soundACvpZMV', + '_$s2os6LoggerV6AppKitE6layoutACvgZ', '_$s2os6LoggerV6AppKitE6layoutACvpZMV', + '_$s2os6LoggerV6AppKitE6screenACvgZ', '_$s2os6LoggerV6AppKitE6screenACvpZMV', + '_$s2os6LoggerV6AppKitE6windowACvgZ', '_$s2os6LoggerV6AppKitE6windowACvpZMV', + '_$s2os6LoggerV6AppKitE7generalACvgZ', '_$s2os6LoggerV6AppKitE7generalACvpZMV', + '_$s2os6LoggerV6AppKitE7popoverACvgZ', '_$s2os6LoggerV6AppKitE7popoverACvpZMV', + '_$s2os6LoggerV6AppKitE7toolbarACvgZ', '_$s2os6LoggerV6AppKitE7toolbarACvpZMV', + '_$s2os6LoggerV6AppKitE8controlsACvgZ', '_$s2os6LoggerV6AppKitE8controlsACvpZMV', + '_$s2os6LoggerV6AppKitE8documentACvgZ', '_$s2os6LoggerV6AppKitE8documentACvpZMV', + '_$s2os6LoggerV6AppKitE8printingACvgZ', '_$s2os6LoggerV6AppKitE8printingACvpZMV', + '_$s2os6LoggerV6AppKitE8securityACvgZ', '_$s2os6LoggerV6AppKitE8securityACvpZMV', + '_$s2os6LoggerV6AppKitE8servicesACvgZ', '_$s2os6LoggerV6AppKitE8servicesACvpZMV', + '_$s2os6LoggerV6AppKitE8tabStuffACvgZ', '_$s2os6LoggerV6AppKitE8tabStuffACvpZMV', + '_$s2os6LoggerV6AppKitE8textViewACvgZ', '_$s2os6LoggerV6AppKitE8textViewACvpZMV', + '_$s2os6LoggerV6AppKitE8touchBarACvgZ', '_$s2os6LoggerV6AppKitE8touchBarACvpZMV', + '_$s2os6LoggerV6AppKitE8warnOnceACvgZ', '_$s2os6LoggerV6AppKitE8warnOnceACvpZMV', + '_$s2os6LoggerV6AppKitE9animationACvgZ', '_$s2os6LoggerV6AppKitE9animationACvpZMV', + '_$s2os6LoggerV6AppKitE9responderACvgZ', '_$s2os6LoggerV6AppKitE9responderACvpZMV', + '_$s2os6LoggerV6AppKitE9splitViewACvgZ', '_$s2os6LoggerV6AppKitE9splitViewACvpZMV', + '_$s2os6LoggerV6AppKitE9statusBarACvgZ', '_$s2os6LoggerV6AppKitE9statusBarACvpZMV', + '_$s2os6LoggerV6AppKitE9tableViewACvgZ', '_$s2os6LoggerV6AppKitE9tableViewACvpZMV', + '_$s2os6LoggerV6AppKitE9textInputACvgZ', '_$s2os6LoggerV6AppKitE9textInputACvpZMV', + '_$s2os6LoggerV6AppKitE9trustedUIACvgZ', '_$s2os6LoggerV6AppKitE9trustedUIACvpZMV', + '_$s2os6LoggerV6AppKitE9workspaceACvgZ', '_$s2os6LoggerV6AppKitE9workspaceACvpZMV', + '_$s5Proxy6AppKit0A7CodablePTl', '_$s5Value6AppKit28NSBridgedAnimationContextKeyPTl', + '_$s6AppKit014ForwardEventToA6ActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit014ForwardEventToA6ActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit014ForwardEventToA6ActionVAA03AnyF0AAMc', '_$s6AppKit014ForwardEventToA6ActionVAA03AnyF0AAWP', + '_$s6AppKit014ForwardEventToA6ActionVAA07TrustedF0AAMc', '_$s6AppKit014ForwardEventToA6ActionVAA07TrustedF0AAWP', + '_$s6AppKit014ForwardEventToA6ActionVMa', '_$s6AppKit014ForwardEventToA6ActionVMn', + '_$s6AppKit014ForwardEventToA6ActionVN', '_$s6AppKit014ForwardEventToA6ActionVSEAAMc', + '_$s6AppKit014ForwardEventToA6ActionVSeAAMc', '_$s6AppKit01_abB23NumericRawRepresentableMp', + '_$s6AppKit01_abB23NumericRawRepresentableP0D5ValueSY_SLTn', '_$s6AppKit01_abB23NumericRawRepresentableP0D5ValueSY_SjTn', '_$s6AppKit01_abB23NumericRawRepresentablePAAE1loiySbx_xtFZ', '_$s6AppKit01_abB23NumericRawRepresentablePAAE1poiyx0D5ValueQz_xtFZ', @@ -2755,7 +2663,59 @@ exports: '_$s6AppKit01_abB23NumericRawRepresentablePAAE2peoiyyxz_0D5ValueQztFZ', '_$s6AppKit01_abB23NumericRawRepresentablePAAE2seoiyyxz_0D5ValueQztFZ', '_$s6AppKit01_abB23NumericRawRepresentablePSLTb', '_$s6AppKit01_abB23NumericRawRepresentablePSYTb', - '_$s6AppKit01_abB23NumericRawRepresentableTL', '_$s6AppKit11NSTextTokenV14suggestionItemACyxGAA012NSSuggestionF0VyxG_tcfC', + '_$s6AppKit01_abB23NumericRawRepresentableTL', '_$s6AppKit10MenuRecordC12platformItemACSo6NSMenuC_tcfC', + '_$s6AppKit10MenuRecordC12platformItemACSo6NSMenuC_tcfCTj', + '_$s6AppKit10MenuRecordC12platformItemACSo6NSMenuC_tcfCTq', + '_$s6AppKit10MenuRecordC12platformItemACSo6NSMenuC_tcfc', + '_$s6AppKit10MenuRecordC26isEqualForPasteRelatednessySbACSgF', + '_$s6AppKit10MenuRecordC2id10Foundation4UUIDVvg', '_$s6AppKit10MenuRecordC2id10Foundation4UUIDVvpMV', + '_$s6AppKit10MenuRecordC4fromACs7Decoder_p_tKcfC', '_$s6AppKit10MenuRecordC4fromACs7Decoder_p_tKcfCTj', + '_$s6AppKit10MenuRecordC4fromACs7Decoder_p_tKcfCTq', '_$s6AppKit10MenuRecordC4fromACs7Decoder_p_tKcfc', + '_$s6AppKit10MenuRecordC5itemsSayAA0c4ItemD0CGvM', '_$s6AppKit10MenuRecordC5itemsSayAA0c4ItemD0CGvg', + '_$s6AppKit10MenuRecordC5itemsSayAA0c4ItemD0CGvpMV', '_$s6AppKit10MenuRecordC5itemsSayAA0c4ItemD0CGvs', + '_$s6AppKit10MenuRecordC6encode2toys7Encoder_p_tKF', '_$s6AppKit10MenuRecordCAA0C4BaseAAMc', + '_$s6AppKit10MenuRecordCAA0C4BaseAAWP', '_$s6AppKit10MenuRecordCAA10XPCCodableAAMc', + '_$s6AppKit10MenuRecordCAA10XPCCodableAAWP', '_$s6AppKit10MenuRecordCAA25PasteRelatednessEquatableAAMc', + '_$s6AppKit10MenuRecordCAA25PasteRelatednessEquatableAAWP', + '_$s6AppKit10MenuRecordCMa', '_$s6AppKit10MenuRecordCMm', + '_$s6AppKit10MenuRecordCMn', '_$s6AppKit10MenuRecordCMo', + '_$s6AppKit10MenuRecordCMu', '_$s6AppKit10MenuRecordCN', '_$s6AppKit10MenuRecordCSEAAMc', + '_$s6AppKit10MenuRecordCSeAAMc', '_$s6AppKit10MenuRecordCfD', + '_$s6AppKit10MenuRecordCfd', '_$s6AppKit10MenuRecordCs12IdentifiableAAMc', + '_$s6AppKit10RawCodableV12wrappedValueACyxGx_tcfC', '_$s6AppKit10RawCodableV12wrappedValuexvM', + '_$s6AppKit10RawCodableV12wrappedValuexvg', '_$s6AppKit10RawCodableV12wrappedValuexvpMV', + '_$s6AppKit10RawCodableV12wrappedValuexvs', '_$s6AppKit10RawCodableV4fromACyxGs7Decoder_p_tKcfC', + '_$s6AppKit10RawCodableV6encode2toys7Encoder_p_tKF', '_$s6AppKit10RawCodableVMa', + '_$s6AppKit10RawCodableVMn', '_$s6AppKit10RawCodableVyxGSEAAMc', + '_$s6AppKit10RawCodableVyxGSeAAMc', '_$s6AppKit10XPCCodableMp', + '_$s6AppKit10XPCCodableP10xpcDecoded4fromxSgSo03OS_D7_object_p_tFZTj', + '_$s6AppKit10XPCCodableP10xpcDecoded4fromxSgSo03OS_D7_object_p_tFZTq', + '_$s6AppKit10XPCCodableP10xpcEncodedSo03OS_D7_object_pSgvgTj', + '_$s6AppKit10XPCCodableP10xpcEncodedSo03OS_D7_object_pSgvgTq', + '_$s6AppKit10XPCCodablePA2A12ProxyCodableRzrlE10xpcDecoded4fromxSgSo03OS_F7_object_p_tFZ', + '_$s6AppKit10XPCCodablePA2A12ProxyCodableRzrlE10xpcEncodedSo03OS_F7_object_pSgvg', + '_$s6AppKit10XPCCodablePA2A12ProxyCodableRzrlE10xpcEncodedSo03OS_F7_object_pSgvpMV', + '_$s6AppKit10XPCCodablePAASeRzSERzrlE10xpcDecoded4fromxSgSo03OS_D7_object_p_tFZ', + '_$s6AppKit10XPCCodablePAASeRzSERzrlE10xpcEncodedSo03OS_D7_object_pSgvg', + '_$s6AppKit10XPCCodablePAASeRzSERzrlE10xpcEncodedSo03OS_D7_object_pSgvpMV', + '_$s6AppKit10XPCCodableTL', '_$s6AppKit11MenuContextC4fromACs7Decoder_p_tKcfC', + '_$s6AppKit11MenuContextC4fromACs7Decoder_p_tKcfCTj', '_$s6AppKit11MenuContextC4fromACs7Decoder_p_tKcfCTq', + '_$s6AppKit11MenuContextC4fromACs7Decoder_p_tKcfc', '_$s6AppKit11MenuContextC6encode2toys7Encoder_p_tKF', + '_$s6AppKit11MenuContextCMa', '_$s6AppKit11MenuContextCMm', + '_$s6AppKit11MenuContextCMn', '_$s6AppKit11MenuContextCMo', + '_$s6AppKit11MenuContextCMu', '_$s6AppKit11MenuContextCN', + '_$s6AppKit11MenuContextCSEAAMc', '_$s6AppKit11MenuContextCSeAAMc', + '_$s6AppKit11MenuContextCfD', '_$s6AppKit11MenuContextCfd', + '_$s6AppKit11MenuManagerV10IdentifierO08platformC0yAEyx_GSo6NSMenuCSgcAGmlFWC', + '_$s6AppKit11MenuManagerV10IdentifierO2idyAEyx_G10Foundation4UUIDVcAGmlFWC', + '_$s6AppKit11MenuManagerV10IdentifierOMa', '_$s6AppKit11MenuManagerV10IdentifierOMn', + '_$s6AppKit11MenuManagerV14allIdentifiersSayAC10IdentifierOyx_GGvg', + '_$s6AppKit11MenuManagerV14allIdentifiersSayAC10IdentifierOyx_GGvpMV', + '_$s6AppKit11MenuManagerV5clear9excludingyAC10IdentifierOyx_GSg_tF', + '_$s6AppKit11MenuManagerVACyxGycfC', '_$s6AppKit11MenuManagerVMa', + '_$s6AppKit11MenuManagerVMn', '_$s6AppKit11MenuManagerVyxSgAC10IdentifierOyx_GciM', + '_$s6AppKit11MenuManagerVyxSgAC10IdentifierOyx_Gcig', '_$s6AppKit11MenuManagerVyxSgAC10IdentifierOyx_GcipMV', + '_$s6AppKit11MenuManagerVyxSgAC10IdentifierOyx_Gcis', '_$s6AppKit11NSTextTokenV14suggestionItemACyxGAA012NSSuggestionF0VyxG_tcfC', '_$s6AppKit11NSTextTokenV16representedValue5titleACyxGx_SStcfC', '_$s6AppKit11NSTextTokenV16representedValuexvM', '_$s6AppKit11NSTextTokenV16representedValuexvg', '_$s6AppKit11NSTextTokenV16representedValuexvpMV', '_$s6AppKit11NSTextTokenV16representedValuexvs', @@ -2769,20 +2729,363 @@ exports: '_$s6AppKit11NSTextTokenVAASHRzlE9hashValueSivg', '_$s6AppKit11NSTextTokenVAASHRzlE9hashValueSivpMV', '_$s6AppKit11NSTextTokenVAASQRzlE2eeoiySbACyxG_AEtFZ', '_$s6AppKit11NSTextTokenVMa', '_$s6AppKit11NSTextTokenVMn', '_$s6AppKit11NSTextTokenVyxGSHAASHRzlMc', - '_$s6AppKit11NSTextTokenVyxGSQAASQRzlMc', '_$s6AppKit16NSSuggestionItemV14secondaryTitleSSSgvM', - '_$s6AppKit16NSSuggestionItemV14secondaryTitleSSSgvg', '_$s6AppKit16NSSuggestionItemV14secondaryTitleSSSgvpMV', - '_$s6AppKit16NSSuggestionItemV14secondaryTitleSSSgvs', '_$s6AppKit16NSSuggestionItemV15attributedTitleSo18NSAttributedStringCvM', - '_$s6AppKit16NSSuggestionItemV15attributedTitleSo18NSAttributedStringCvg', - '_$s6AppKit16NSSuggestionItemV15attributedTitleSo18NSAttributedStringCvpMV', - '_$s6AppKit16NSSuggestionItemV15attributedTitleSo18NSAttributedStringCvs', - '_$s6AppKit16NSSuggestionItemV16representedValue15attributedTitleACyxGx_So18NSAttributedStringCtcfC', + '_$s6AppKit11NSTextTokenVyxGSQAASQRzlMc', '_$s6AppKit12ImageCodableV12wrappedValueACyxGxSg_tcfC', + '_$s6AppKit12ImageCodableV12wrappedValueACyxGx_tcfC', '_$s6AppKit12ImageCodableV12wrappedValuexSgvM', + '_$s6AppKit12ImageCodableV12wrappedValuexSgvg', '_$s6AppKit12ImageCodableV12wrappedValuexSgvpMV', + '_$s6AppKit12ImageCodableV12wrappedValuexSgvs', '_$s6AppKit12ImageCodableV4fromACyxGs7Decoder_p_tKcfC', + '_$s6AppKit12ImageCodableV6encode2toys7Encoder_p_tKF', '_$s6AppKit12ImageCodableVMa', + '_$s6AppKit12ImageCodableVMn', '_$s6AppKit12ImageCodableVyxGSEAAMc', + '_$s6AppKit12ImageCodableVyxGSeAAMc', '_$s6AppKit12MenuItemBaseMp', + '_$s6AppKit12MenuItemBaseP08platformD0xSo06NSMenuD0C_tcfCTj', + '_$s6AppKit12MenuItemBaseP08platformD0xSo06NSMenuD0C_tcfCTq', + '_$s6AppKit12MenuItemBaseP13hasCustomViewSbvgTj', '_$s6AppKit12MenuItemBaseP13hasCustomViewSbvgTq', + '_$s6AppKit12MenuItemBaseP13keyEquivalentSSvMTj', '_$s6AppKit12MenuItemBaseP13keyEquivalentSSvMTq', + '_$s6AppKit12MenuItemBaseP13keyEquivalentSSvgTj', '_$s6AppKit12MenuItemBaseP13keyEquivalentSSvgTq', + '_$s6AppKit12MenuItemBaseP13keyEquivalentSSvsTj', '_$s6AppKit12MenuItemBaseP13keyEquivalentSSvsTq', + '_$s6AppKit12MenuItemBaseP25keyEquivalentModifierMaskSo07NSEventH5FlagsVvMTj', + '_$s6AppKit12MenuItemBaseP25keyEquivalentModifierMaskSo07NSEventH5FlagsVvMTq', + '_$s6AppKit12MenuItemBaseP25keyEquivalentModifierMaskSo07NSEventH5FlagsVvgTj', + '_$s6AppKit12MenuItemBaseP25keyEquivalentModifierMaskSo07NSEventH5FlagsVvgTq', + '_$s6AppKit12MenuItemBaseP25keyEquivalentModifierMaskSo07NSEventH5FlagsVvsTj', + '_$s6AppKit12MenuItemBaseP25keyEquivalentModifierMaskSo07NSEventH5FlagsVvsTq', + '_$s6AppKit12MenuItemBaseP2id10Foundation4UUIDVvgTj', '_$s6AppKit12MenuItemBaseP2id10Foundation4UUIDVvgTq', + '_$s6AppKit12MenuItemBaseP5titleSSvMTj', '_$s6AppKit12MenuItemBaseP5titleSSvMTq', + '_$s6AppKit12MenuItemBaseP5titleSSvgTj', '_$s6AppKit12MenuItemBaseP5titleSSvgTq', + '_$s6AppKit12MenuItemBaseP5titleSSvsTj', '_$s6AppKit12MenuItemBaseP5titleSSvsTq', + '_$s6AppKit12MenuItemBaseP9isEnabledSbvgTj', '_$s6AppKit12MenuItemBaseP9isEnabledSbvgTq', + '_$s6AppKit12MenuItemBaseP9submenuID10Foundation4UUIDVSgvMTj', + '_$s6AppKit12MenuItemBaseP9submenuID10Foundation4UUIDVSgvMTq', + '_$s6AppKit12MenuItemBaseP9submenuID10Foundation4UUIDVSgvgTj', + '_$s6AppKit12MenuItemBaseP9submenuID10Foundation4UUIDVSgvgTq', + '_$s6AppKit12MenuItemBaseP9submenuID10Foundation4UUIDVSgvsTj', + '_$s6AppKit12MenuItemBaseP9submenuID10Foundation4UUIDVSgvsTq', + '_$s6AppKit12MenuItemBasePAA10XPCCodableTb', '_$s6AppKit12MenuItemBasePAAE14isPasteRelatedSbvg', + '_$s6AppKit12MenuItemBasePAAE14isPasteRelatedSbvpMV', '_$s6AppKit12MenuItemBasePSETb', + '_$s6AppKit12MenuItemBasePSeTb', '_$s6AppKit12MenuItemBasePs12IdentifiableTb', + '_$s6AppKit12MenuItemBaseTL', '_$s6AppKit12ProxyCodableMp', + '_$s6AppKit12ProxyCodableP0C0AC_AA10XPCCodableTn', '_$s6AppKit12ProxyCodableP0C0AC_SETn', + '_$s6AppKit12ProxyCodableP0C0AC_SeTn', '_$s6AppKit12ProxyCodableP5proxy0C0QzvgTj', + '_$s6AppKit12ProxyCodableP5proxy0C0QzvgTq', '_$s6AppKit12ProxyCodableP7decoded2byx0C0Qz_tFZTj', + '_$s6AppKit12ProxyCodableP7decoded2byx0C0Qz_tFZTq', '_$s6AppKit12ProxyCodableTL', + '_$s6AppKit13AddressStringV16debugDescriptionSSvg', '_$s6AppKit13AddressStringV16debugDescriptionSSvpMV', + '_$s6AppKit13AddressStringVMa', '_$s6AppKit13AddressStringVMn', + '_$s6AppKit13AddressStringVN', '_$s6AppKit13AddressStringVs011CustomDebugD11ConvertibleAAMc', + '_$s6AppKit13AddressStringVyACyXlSgcfC', '_$s6AppKit13CheckInActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit13CheckInActionV6encode2toys7Encoder_p_tKF', '_$s6AppKit13CheckInActionVAA03AnyE0AAMc', + '_$s6AppKit13CheckInActionVAA03AnyE0AAWP', '_$s6AppKit13CheckInActionVAA07TrustedE0AAMc', + '_$s6AppKit13CheckInActionVAA07TrustedE0AAWP', '_$s6AppKit13CheckInActionVMa', + '_$s6AppKit13CheckInActionVMn', '_$s6AppKit13CheckInActionVN', + '_$s6AppKit13CheckInActionVSEAAMc', '_$s6AppKit13CheckInActionVSeAAMc', + '_$s6AppKit13InvalidActionV22isUniquePerTransactionSbvg', + '_$s6AppKit13InvalidActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit13InvalidActionV4fromACs7Decoder_p_tKcfC', '_$s6AppKit13InvalidActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit13InvalidActionVAA03AnyD0AAMc', '_$s6AppKit13InvalidActionVAA03AnyD0AAWP', + '_$s6AppKit13InvalidActionVAA07TrustedD0AAMc', '_$s6AppKit13InvalidActionVAA07TrustedD0AAWP', + '_$s6AppKit13InvalidActionVMa', '_$s6AppKit13InvalidActionVMn', + '_$s6AppKit13InvalidActionVN', '_$s6AppKit13InvalidActionVSEAAMc', + '_$s6AppKit13InvalidActionVSeAAMc', '_$s6AppKit13SecureCodableV12wrappedValueACyxGxSg_tcfC', + '_$s6AppKit13SecureCodableV12wrappedValueACyxGx_tcfC', '_$s6AppKit13SecureCodableV12wrappedValuexSgvM', + '_$s6AppKit13SecureCodableV12wrappedValuexSgvg', '_$s6AppKit13SecureCodableV12wrappedValuexSgvpMV', + '_$s6AppKit13SecureCodableV12wrappedValuexSgvs', '_$s6AppKit13SecureCodableV4fromACyxGs7Decoder_p_tKcfC', + '_$s6AppKit13SecureCodableV6encode2toys7Encoder_p_tKF', '_$s6AppKit13SecureCodableVMa', + '_$s6AppKit13SecureCodableVMn', '_$s6AppKit13SecureCodableVyxGSEAAMc', + '_$s6AppKit13SecureCodableVyxGSeAAMc', '_$s6AppKit13TrustedActionMp', + '_$s6AppKit13TrustedActionPAA03AnyD0Tb', '_$s6AppKit13TrustedActionTL', + '_$s6AppKit14ActionWrappingMp', '_$s6AppKit14ActionWrappingP12InternalTypeAC_AA0cF11ConvertibleTn', + '_$s6AppKit14ActionWrappingP12wrappedValueAA0C3BoxVyxGSgvgTj', + '_$s6AppKit14ActionWrappingP12wrappedValueAA0C3BoxVyxGSgvgTq', + '_$s6AppKit14ActionWrappingTL', '_$s6AppKit14IntelligenceUIO15PromptAmbiguityV2idAC0eF2IDVvg', + '_$s6AppKit14IntelligenceUIO15PromptAmbiguityV2idAC0eF2IDVvpMV', + '_$s6AppKit14IntelligenceUIO15PromptAmbiguityV4dataxvg', '_$s6AppKit14IntelligenceUIO15PromptAmbiguityV4dataxvpMV', + '_$s6AppKit14IntelligenceUIO15PromptAmbiguityV5rangeSo8_NSRangeVvg', + '_$s6AppKit14IntelligenceUIO15PromptAmbiguityV5rangeSo8_NSRangeVvpMV', + '_$s6AppKit14IntelligenceUIO15PromptAmbiguityVMa', '_$s6AppKit14IntelligenceUIO15PromptAmbiguityVMn', + '_$s6AppKit14IntelligenceUIO15PromptAmbiguityVy_xGs12IdentifiableAAMc', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC09accessoryG0So6NSViewCSgvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC09accessoryG0So6NSViewCSgvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC09accessoryG0So6NSViewCSgvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC09accessoryG0So6NSViewCSgvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC09accessoryG0So6NSViewCSgvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC09accessoryG0So6NSViewCSgvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC09accessoryG0So6NSViewCSgvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11ambiguitiesSayAC0E9AmbiguityVy_ypGGyFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11ambiguitiesSayAC0E9AmbiguityVy_ypGGyFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11ambiguitiesySayAC0E9AmbiguityVy_xGGxmlFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11ambiguitiesySayAC0E9AmbiguityVy_xGGxmlFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11controlSizeSo09NSControlI0VvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11controlSizeSo09NSControlI0VvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11controlSizeSo09NSControlI0VvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11controlSizeSo09NSControlI0VvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11controlSizeSo09NSControlI0VvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11controlSizeSo09NSControlI0VvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC11controlSizeSo09NSControlI0VvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC12leadingImageSo7NSImageCSgvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC12leadingImageSo7NSImageCSgvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC12leadingImageSo7NSImageCSgvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC12leadingImageSo7NSImageCSgvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC12leadingImageSo7NSImageCSgvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC12leadingImageSo7NSImageCSgvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC12leadingImageSo7NSImageCSgvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC14characterLimitSiSgvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC14characterLimitSiSgvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC14characterLimitSiSgvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC14characterLimitSiSgvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC14characterLimitSiSgvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC14characterLimitSiSgvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC14characterLimitSiSgvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC16resolveAmbiguity2id12resolvedDatayAC0eI2IDV_xtlFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC16resolveAmbiguity2id12resolvedDatayAC0eI2IDV_xtlFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC16visibleLineLimitSX_pSi5BoundSXRts_XPSgvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC16visibleLineLimitSX_pSi5BoundSXRts_XPSgvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC16visibleLineLimitSX_pSi5BoundSXRts_XPSgvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC16visibleLineLimitSX_pSi5BoundSXRts_XPSgvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC16visibleLineLimitSX_pSi5BoundSXRts_XPSgvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC16visibleLineLimitSX_pSi5BoundSXRts_XPSgvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC16visibleLineLimitSX_pSi5BoundSXRts_XPSgvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC17disambiguatedTextSSvg', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC17disambiguatedTextSSvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC17registerAmbiguity2in4dataAC0eI2IDVSnySS5IndexVG_xtlFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC17registerAmbiguity2in4dataAC0eI2IDVSnySS5IndexVG_xtlFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC17registerAmbiguity2in4dataAC0eI2IDVSo8_NSRangeV_xtlFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC17registerAmbiguity2in4dataAC0eI2IDVSo8_NSRangeV_xtlFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18placeholderStringsSaySSGvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18placeholderStringsSaySSGvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18placeholderStringsSaySSGvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18placeholderStringsSaySSGvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18placeholderStringsSaySSGvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18placeholderStringsSaySSGvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18placeholderStringsSaySSGvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18unresolveAmbiguity2idypSgAC0eI2IDV_tFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18unresolveAmbiguity2idypSgAC0eI2IDV_tFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18usesSingleLineModeSbvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18usesSingleLineModeSbvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18usesSingleLineModeSbvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18usesSingleLineModeSbvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18usesSingleLineModeSbvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18usesSingleLineModeSbvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC18usesSingleLineModeSbvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19resolvedAmbiguitiesSayAC0E9AmbiguityVy_ypGGyFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19resolvedAmbiguitiesSayAC0E9AmbiguityVy_ypGGyFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19resolvedAmbiguitiesySayAC0E9AmbiguityVy_xGGxmlFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19resolvedAmbiguitiesySayAC0E9AmbiguityVy_xGGxmlFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19suggestionsDelegateAA017NSTextSuggestionsI0_pSgvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19suggestionsDelegateAA017NSTextSuggestionsI0_pSgvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19suggestionsDelegateAA017NSTextSuggestionsI0_pSgvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19suggestionsDelegateAA017NSTextSuggestionsI0_pSgvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19suggestionsDelegateAA017NSTextSuggestionsI0_pSgvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19suggestionsDelegateAA017NSTextSuggestionsI0_pSgvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19suggestionsDelegateAA017NSTextSuggestionsI0_pSgvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19unregisterAmbiguity2idyAC0eI2IDV_tFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC19unregisterAmbiguity2idyAC0eI2IDV_tFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationV11intelligentAGvgZ', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationV11intelligentAGvpZMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationV14nonintelligentAGvgZ', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationV14nonintelligentAGvpZMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationV2eeoiySbAG_AGtFZ', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationV4hash4intoys6HasherVz_tF', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationV9hashValueSivg', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationV9hashValueSivpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationVMa', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationVMn', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationVN', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationVSHAAMc', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23BackgroundConfigurationVSQAAMc', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23backgroundConfigurationAE010BackgroundI0VvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23backgroundConfigurationAE010BackgroundI0VvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23backgroundConfigurationAE010BackgroundI0VvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23backgroundConfigurationAE010BackgroundI0VvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23backgroundConfigurationAE010BackgroundI0VvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23backgroundConfigurationAE010BackgroundI0VvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC23backgroundConfigurationAE010BackgroundI0VvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC24unregisterAllAmbiguitiesyyFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC24unregisterAllAmbiguitiesyyFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC26hidesSubmitButtonWhenEmptySbvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC26hidesSubmitButtonWhenEmptySbvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC26hidesSubmitButtonWhenEmptySbvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC26hidesSubmitButtonWhenEmptySbvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC26hidesSubmitButtonWhenEmptySbvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC26hidesSubmitButtonWhenEmptySbvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC26hidesSubmitButtonWhenEmptySbvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC51presentDisambiguationMenuForNextUnresolvedAmbiguitySbyFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC51presentDisambiguationMenuForNextUnresolvedAmbiguitySbyFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegateMp', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegateP06promptfG0_21disambiguationMenuFor17resolvedAmbiguitySo6NSMenuCAE_AC0eN0Vy_ypGAOSgtFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegateP06promptfG0_21disambiguationMenuFor17resolvedAmbiguitySo6NSMenuCAE_AC0eN0Vy_ypGAOSgtFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegateP06promptfG0_26setUpFieldEditorAttributesyAE_So6NSTextCtFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegateP06promptfG0_26setUpFieldEditorAttributesyAE_So6NSTextCtFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegateP06promptfG13TextDidChangeyyAEFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegateP06promptfG13TextDidChangeyyAEFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegateP06promptfG9DidSubmityyAEFTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegateP06promptfG9DidSubmityyAEFTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegatePAAE06promptfG0_26setUpFieldEditorAttributesyAE_So6NSTextCtF', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegatePAAE06promptfG13TextDidChangeyyAEF', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8DelegateTL', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8delegateAE8Delegate_pSgvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8delegateAE8Delegate_pSgvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8delegateAE8Delegate_pSgvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8delegateAE8Delegate_pSgvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8delegateAE8Delegate_pSgvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8delegateAE8Delegate_pSgvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC8delegateAE8Delegate_pSgvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC9canSubmitSbvMTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC9canSubmitSbvMTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC9canSubmitSbvgTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC9canSubmitSbvgTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC9canSubmitSbvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC9canSubmitSbvsTj', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC9canSubmitSbvsTq', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC9textFieldSo06NSTextI0Cvg', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewC9textFieldSo06NSTextI0CvpMV', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewCMa', '_$s6AppKit14IntelligenceUIO15PromptEntryViewCMn', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewCMo', '_$s6AppKit14IntelligenceUIO15PromptEntryViewCMu', + '_$s6AppKit14IntelligenceUIO15PromptEntryViewCN', '_$s6AppKit14IntelligenceUIO15PromptEntryViewCfD', + '_$s6AppKit14IntelligenceUIO17PromptAmbiguityIDV2eeoiySbAE_AEtFZ', + '_$s6AppKit14IntelligenceUIO17PromptAmbiguityIDV4hash4intoys6HasherVz_tF', + '_$s6AppKit14IntelligenceUIO17PromptAmbiguityIDV9hashValueSivg', + '_$s6AppKit14IntelligenceUIO17PromptAmbiguityIDV9hashValueSivpMV', + '_$s6AppKit14IntelligenceUIO17PromptAmbiguityIDVMa', '_$s6AppKit14IntelligenceUIO17PromptAmbiguityIDVMn', + '_$s6AppKit14IntelligenceUIO17PromptAmbiguityIDVN', '_$s6AppKit14IntelligenceUIO17PromptAmbiguityIDVSHAAMc', + '_$s6AppKit14IntelligenceUIO17PromptAmbiguityIDVSQAAMc', '_$s6AppKit14IntelligenceUIOMa', + '_$s6AppKit14IntelligenceUIOMn', '_$s6AppKit14IntelligenceUION', + '_$s6AppKit14InterpolatableMp', '_$s6AppKit14InterpolatableP11interpolate__10percentagexx_xSdtFZTj', + '_$s6AppKit14InterpolatableP11interpolate__10percentagexx_xSdtFZTq', + '_$s6AppKit14InterpolatableTL', '_$s6AppKit14MenuItemRecordC08platformD0ACSo06NSMenuD0C_tcfC', + '_$s6AppKit14MenuItemRecordC08platformD0ACSo06NSMenuD0C_tcfCTj', + '_$s6AppKit14MenuItemRecordC08platformD0ACSo06NSMenuD0C_tcfCTq', + '_$s6AppKit14MenuItemRecordC08platformD0ACSo06NSMenuD0C_tcfc', + '_$s6AppKit14MenuItemRecordC13hasCustomViewSbvM', '_$s6AppKit14MenuItemRecordC13hasCustomViewSbvg', + '_$s6AppKit14MenuItemRecordC13hasCustomViewSbvpMV', '_$s6AppKit14MenuItemRecordC13hasCustomViewSbvs', + '_$s6AppKit14MenuItemRecordC13keyEquivalentSSvM', '_$s6AppKit14MenuItemRecordC13keyEquivalentSSvg', + '_$s6AppKit14MenuItemRecordC13keyEquivalentSSvpMV', '_$s6AppKit14MenuItemRecordC13keyEquivalentSSvs', + '_$s6AppKit14MenuItemRecordC25keyEquivalentModifierMaskSo07NSEventH5FlagsVvM', + '_$s6AppKit14MenuItemRecordC25keyEquivalentModifierMaskSo07NSEventH5FlagsVvg', + '_$s6AppKit14MenuItemRecordC25keyEquivalentModifierMaskSo07NSEventH5FlagsVvpMV', + '_$s6AppKit14MenuItemRecordC25keyEquivalentModifierMaskSo07NSEventH5FlagsVvs', + '_$s6AppKit14MenuItemRecordC26isEqualForPasteRelatednessySbACSgF', + '_$s6AppKit14MenuItemRecordC2eeoiySbAC_ACtFZ', '_$s6AppKit14MenuItemRecordC2id10Foundation4UUIDVvg', + '_$s6AppKit14MenuItemRecordC2id10Foundation4UUIDVvpMV', '_$s6AppKit14MenuItemRecordC4fromACs7Decoder_p_tKcfC', + '_$s6AppKit14MenuItemRecordC4fromACs7Decoder_p_tKcfCTj', '_$s6AppKit14MenuItemRecordC4fromACs7Decoder_p_tKcfCTq', + '_$s6AppKit14MenuItemRecordC4fromACs7Decoder_p_tKcfc', '_$s6AppKit14MenuItemRecordC5titleSSvM', + '_$s6AppKit14MenuItemRecordC5titleSSvg', '_$s6AppKit14MenuItemRecordC5titleSSvpMV', + '_$s6AppKit14MenuItemRecordC5titleSSvs', '_$s6AppKit14MenuItemRecordC6encode2toys7Encoder_p_tKF', + '_$s6AppKit14MenuItemRecordC9isEnabledSbvM', '_$s6AppKit14MenuItemRecordC9isEnabledSbvg', + '_$s6AppKit14MenuItemRecordC9isEnabledSbvpMV', '_$s6AppKit14MenuItemRecordC9isEnabledSbvs', + '_$s6AppKit14MenuItemRecordC9submenuID10Foundation4UUIDVSgvM', + '_$s6AppKit14MenuItemRecordC9submenuID10Foundation4UUIDVSgvg', + '_$s6AppKit14MenuItemRecordC9submenuID10Foundation4UUIDVSgvpMV', + '_$s6AppKit14MenuItemRecordC9submenuID10Foundation4UUIDVSgvs', + '_$s6AppKit14MenuItemRecordCAA0cD4BaseAAMc', '_$s6AppKit14MenuItemRecordCAA0cD4BaseAAWP', + '_$s6AppKit14MenuItemRecordCAA10XPCCodableAAMc', '_$s6AppKit14MenuItemRecordCAA10XPCCodableAAWP', + '_$s6AppKit14MenuItemRecordCAA25PasteRelatednessEquatableAAMc', + '_$s6AppKit14MenuItemRecordCAA25PasteRelatednessEquatableAAWP', + '_$s6AppKit14MenuItemRecordCMa', '_$s6AppKit14MenuItemRecordCMm', + '_$s6AppKit14MenuItemRecordCMn', '_$s6AppKit14MenuItemRecordCMo', + '_$s6AppKit14MenuItemRecordCMu', '_$s6AppKit14MenuItemRecordCN', + '_$s6AppKit14MenuItemRecordCSEAAMc', '_$s6AppKit14MenuItemRecordCSQAAMc', + '_$s6AppKit14MenuItemRecordCSeAAMc', '_$s6AppKit14MenuItemRecordCfD', + '_$s6AppKit14MenuItemRecordCfd', '_$s6AppKit14MenuItemRecordCs12IdentifiableAAMc', + '_$s6AppKit14PropertyUpdateC5apply2toyxz_tF', '_$s6AppKit14PropertyUpdateCMa', + '_$s6AppKit14PropertyUpdateCMn', '_$s6AppKit14PropertyUpdateCMo', + '_$s6AppKit14PropertyUpdateCMu', '_$s6AppKit14PropertyUpdateCfD', + '_$s6AppKit14PropertyUpdateCfd', '_$s6AppKit14PropertyUpdateCyxq_GAA011IncrementalD0AAMc', + '_$s6AppKit14PropertyUpdateCyxq_GAA011IncrementalD0AAWP', + '_$s6AppKit14ShowMenuActionV22isUniquePerTransactionSbvg', + '_$s6AppKit14ShowMenuActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit14ShowMenuActionV4fromACs7Decoder_p_tKcfC', '_$s6AppKit14ShowMenuActionV4menuAA0D0CvM', + '_$s6AppKit14ShowMenuActionV4menuAA0D0Cvg', '_$s6AppKit14ShowMenuActionV4menuAA0D0CvpMV', + '_$s6AppKit14ShowMenuActionV4menuAA0D0Cvs', '_$s6AppKit14ShowMenuActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit14ShowMenuActionV7contextAA0D7ContextCSgvM', '_$s6AppKit14ShowMenuActionV7contextAA0D7ContextCSgvg', + '_$s6AppKit14ShowMenuActionV7contextAA0D7ContextCSgvpMV', + '_$s6AppKit14ShowMenuActionV7contextAA0D7ContextCSgvs', '_$s6AppKit14ShowMenuActionVAA03AnyE0AAMc', + '_$s6AppKit14ShowMenuActionVAA03AnyE0AAWP', '_$s6AppKit14ShowMenuActionVAA07TrustedE0AAMc', + '_$s6AppKit14ShowMenuActionVAA07TrustedE0AAWP', '_$s6AppKit14ShowMenuActionVMa', + '_$s6AppKit14ShowMenuActionVMn', '_$s6AppKit14ShowMenuActionVN', + '_$s6AppKit14ShowMenuActionVSEAAMc', '_$s6AppKit14ShowMenuActionVSeAAMc', + '_$s6AppKit14TimingFunctionV10EaseInSineV11outputValue3forS2d_tF', + '_$s6AppKit14TimingFunctionV10EaseInSineVAA0cD8ProtocolAAMc', + '_$s6AppKit14TimingFunctionV10EaseInSineVAA0cD8ProtocolAAWP', + '_$s6AppKit14TimingFunctionV10EaseInSineVMa', '_$s6AppKit14TimingFunctionV10EaseInSineVMn', + '_$s6AppKit14TimingFunctionV10EaseInSineVN', '_$s6AppKit14TimingFunctionV10easeInSineAC04EasefG0VvgZ', + '_$s6AppKit14TimingFunctionV10easeInSineAC04EasefG0VvpZMV', + '_$s6AppKit14TimingFunctionV6LinearV11outputValue3forS2d_tF', + '_$s6AppKit14TimingFunctionV6LinearVAA0cD8ProtocolAAMc', '_$s6AppKit14TimingFunctionV6LinearVAA0cD8ProtocolAAWP', + '_$s6AppKit14TimingFunctionV6LinearVMa', '_$s6AppKit14TimingFunctionV6LinearVMn', + '_$s6AppKit14TimingFunctionV6LinearVN', '_$s6AppKit14TimingFunctionV6linearAC6LinearVvgZ', + '_$s6AppKit14TimingFunctionV6linearAC6LinearVvpZMV', '_$s6AppKit14TimingFunctionVMa', + '_$s6AppKit14TimingFunctionVMn', '_$s6AppKit14TimingFunctionVN', + '_$s6AppKit14TrustedUIProxyC4send18encodedTransactionySo13OS_xpc_object_p_tFTj', + '_$s6AppKit14TrustedUIProxyC4send18encodedTransactionySo13OS_xpc_object_p_tFTq', + '_$s6AppKit14TrustedUIProxyC5proxyq_SgvMTj', '_$s6AppKit14TrustedUIProxyC5proxyq_SgvMTq', + '_$s6AppKit14TrustedUIProxyC5proxyq_SgvgTj', '_$s6AppKit14TrustedUIProxyC5proxyq_SgvgTq', + '_$s6AppKit14TrustedUIProxyC5proxyq_SgvpMV', '_$s6AppKit14TrustedUIProxyC5proxyq_SgvsTj', + '_$s6AppKit14TrustedUIProxyC5proxyq_SgvsTq', '_$s6AppKit14TrustedUIProxyC7enqueueyyxyXEFTj', + '_$s6AppKit14TrustedUIProxyC7enqueueyyxyXEFTq', '_$s6AppKit14TrustedUIProxyC7performyyxyXEFTj', + '_$s6AppKit14TrustedUIProxyC7performyyxyXEFTq', '_$s6AppKit14TrustedUIProxyC9makeProxyyyFTj', + '_$s6AppKit14TrustedUIProxyC9makeProxyyyFTq', '_$s6AppKit14TrustedUIProxyC9withProxyyyyq_SgcFTj', + '_$s6AppKit14TrustedUIProxyC9withProxyyyyq_SgcFTq', '_$s6AppKit14TrustedUIProxyCACyxq_GycfC', + '_$s6AppKit14TrustedUIProxyCACyxq_GycfCTj', '_$s6AppKit14TrustedUIProxyCACyxq_GycfCTq', + '_$s6AppKit14TrustedUIProxyCACyxq_Gycfc', '_$s6AppKit14TrustedUIProxyCMa', + '_$s6AppKit14TrustedUIProxyCMn', '_$s6AppKit14TrustedUIProxyCMo', + '_$s6AppKit14TrustedUIProxyCMu', '_$s6AppKit14TrustedUIProxyCfD', + '_$s6AppKit14TrustedUIProxyCfd', '_$s6AppKit15AwaitableActionMp', + '_$s6AppKit15AwaitableActionP10ResultTypeAC_AA0C0Tn', '_$s6AppKit15AwaitableActionPAA03AnyD0Tb', + '_$s6AppKit15AwaitableActionTL', '_$s6AppKit15OptionSetUpdateC5apply2toyxz_tF', + '_$s6AppKit15OptionSetUpdateCMa', '_$s6AppKit15OptionSetUpdateCMn', + '_$s6AppKit15OptionSetUpdateCMo', '_$s6AppKit15OptionSetUpdateCMu', + '_$s6AppKit15OptionSetUpdateCfD', '_$s6AppKit15OptionSetUpdateCfd', + '_$s6AppKit15OptionSetUpdateCyxq_GAA011IncrementalE0AAMc', + '_$s6AppKit15OptionSetUpdateCyxq_GAA011IncrementalE0AAWP', + '_$s6AppKit15PasteboardTokenV12wrappedValue10Foundation4DataVvg', + '_$s6AppKit15PasteboardTokenV12wrappedValue10Foundation4DataVvpMV', + '_$s6AppKit15PasteboardTokenV4fromACs7Decoder_p_tKcfC', '_$s6AppKit15PasteboardTokenV6encode2toys7Encoder_p_tKF', + '_$s6AppKit15PasteboardTokenVMa', '_$s6AppKit15PasteboardTokenVMn', + '_$s6AppKit15PasteboardTokenVN', '_$s6AppKit15PasteboardTokenVSEAAMc', + '_$s6AppKit15PasteboardTokenVSeAAMc', '_$s6AppKit15PasteboardTokenVyACSg10Foundation4DataVcfC', + '_$s6AppKit15SendEventActionV22isUniquePerTransactionSbvg', + '_$s6AppKit15SendEventActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit15SendEventActionV4fromACs7Decoder_p_tKcfC', '_$s6AppKit15SendEventActionV5eventAA0D0Vvg', + '_$s6AppKit15SendEventActionV5eventAA0D0VvpMV', '_$s6AppKit15SendEventActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit15SendEventActionVAA03AnyE0AAMc', '_$s6AppKit15SendEventActionVAA03AnyE0AAWP', + '_$s6AppKit15SendEventActionVAA07TrustedE0AAMc', '_$s6AppKit15SendEventActionVAA07TrustedE0AAWP', + '_$s6AppKit15SendEventActionVMa', '_$s6AppKit15SendEventActionVMn', + '_$s6AppKit15SendEventActionVN', '_$s6AppKit15SendEventActionVSEAAMc', + '_$s6AppKit15SendEventActionVSeAAMc', '_$s6AppKit16ActionPerformingMp', + '_$s6AppKit16ActionPerformingP16performAwaitable6action10ResultTypeQyd__Sgqd___tAA0fC0Rd__lFTj', + '_$s6AppKit16ActionPerformingP16performAwaitable6action10ResultTypeQyd__Sgqd___tAA0fC0Rd__lFTq', + '_$s6AppKit16ActionPerformingP16performAwaitable6action10ResultTypeQyd__Sgqd___tYaAA05AsyncfC0Rd__lFTj', + '_$s6AppKit16ActionPerformingP16performAwaitable6action10ResultTypeQyd__Sgqd___tYaAA05AsyncfC0Rd__lFTjTu', + '_$s6AppKit16ActionPerformingP16performAwaitable6action10ResultTypeQyd__Sgqd___tYaAA05AsyncfC0Rd__lFTq', + '_$s6AppKit16ActionPerformingP7perform6action4timeyAA03AnyC0_p_8Dispatch0I4TimeVtFTj', + '_$s6AppKit16ActionPerformingP7perform6action4timeyAA03AnyC0_p_8Dispatch0I4TimeVtFTq', + '_$s6AppKit16ActionPerformingTL', '_$s6AppKit16ConditionMessageC11descriptionSSvMTj', + '_$s6AppKit16ConditionMessageC11descriptionSSvMTq', '_$s6AppKit16ConditionMessageC11descriptionSSvgTj', + '_$s6AppKit16ConditionMessageC11descriptionSSvgTq', '_$s6AppKit16ConditionMessageC11descriptionSSvpMV', + '_$s6AppKit16ConditionMessageC11descriptionSSvsTj', '_$s6AppKit16ConditionMessageC11descriptionSSvsTq', + '_$s6AppKit16ConditionMessageC7isEmptySbvgTj', '_$s6AppKit16ConditionMessageC7isEmptySbvgTq', + '_$s6AppKit16ConditionMessageC7isEmptySbvpMV', '_$s6AppKit16ConditionMessageCACycfC', + '_$s6AppKit16ConditionMessageCACycfCTj', '_$s6AppKit16ConditionMessageCACycfCTq', + '_$s6AppKit16ConditionMessageCACycfc', '_$s6AppKit16ConditionMessageCMa', + '_$s6AppKit16ConditionMessageCMm', '_$s6AppKit16ConditionMessageCMn', + '_$s6AppKit16ConditionMessageCMo', '_$s6AppKit16ConditionMessageCMu', + '_$s6AppKit16ConditionMessageCN', '_$s6AppKit16ConditionMessageCfD', + '_$s6AppKit16ConditionMessageCfd', '_$s6AppKit16ConditionMessageCs23CustomStringConvertibleAAMc', + '_$s6AppKit16ConditionMessageCySbSScigTj', '_$s6AppKit16ConditionMessageCySbSScigTq', + '_$s6AppKit16ConditionMessageCySbSScipMV', '_$s6AppKit16ConditionMessageCyxSgSScluigTj', + '_$s6AppKit16ConditionMessageCyxSgSScluigTq', '_$s6AppKit16ConditionMessageCyxSgSScluipMV', + '_$s6AppKit16NSSuggestionItemV14secondaryTitleSSSgvM', '_$s6AppKit16NSSuggestionItemV14secondaryTitleSSSgvg', + '_$s6AppKit16NSSuggestionItemV14secondaryTitleSSSgvpMV', '_$s6AppKit16NSSuggestionItemV14secondaryTitleSSSgvs', + '_$s6AppKit16NSSuggestionItemV15attributedTitle10Foundation16AttributedStringVvM', + '_$s6AppKit16NSSuggestionItemV15attributedTitle10Foundation16AttributedStringVvg', + '_$s6AppKit16NSSuggestionItemV15attributedTitle10Foundation16AttributedStringVvpMV', + '_$s6AppKit16NSSuggestionItemV15attributedTitle10Foundation16AttributedStringVvs', + '_$s6AppKit16NSSuggestionItemV16representedValue15attributedTitleACyxGx_10Foundation16AttributedStringVtcfC', '_$s6AppKit16NSSuggestionItemV16representedValue5titleACyxGx_SStcfC', '_$s6AppKit16NSSuggestionItemV16representedValuexvM', '_$s6AppKit16NSSuggestionItemV16representedValuexvg', '_$s6AppKit16NSSuggestionItemV16representedValuexvpMV', '_$s6AppKit16NSSuggestionItemV16representedValuexvs', - '_$s6AppKit16NSSuggestionItemV24attributedSecondaryTitleSo18NSAttributedStringCSgvM', - '_$s6AppKit16NSSuggestionItemV24attributedSecondaryTitleSo18NSAttributedStringCSgvg', - '_$s6AppKit16NSSuggestionItemV24attributedSecondaryTitleSo18NSAttributedStringCSgvpMV', - '_$s6AppKit16NSSuggestionItemV24attributedSecondaryTitleSo18NSAttributedStringCSgvs', + '_$s6AppKit16NSSuggestionItemV24attributedSecondaryTitle10Foundation16AttributedStringVSgvM', + '_$s6AppKit16NSSuggestionItemV24attributedSecondaryTitle10Foundation16AttributedStringVSgvg', + '_$s6AppKit16NSSuggestionItemV24attributedSecondaryTitle10Foundation16AttributedStringVSgvpMV', + '_$s6AppKit16NSSuggestionItemV24attributedSecondaryTitle10Foundation16AttributedStringVSgvs', '_$s6AppKit16NSSuggestionItemV5imageSo7NSImageCSgvM', '_$s6AppKit16NSSuggestionItemV5imageSo7NSImageCSgvg', '_$s6AppKit16NSSuggestionItemV5imageSo7NSImageCSgvpMV', '_$s6AppKit16NSSuggestionItemV5imageSo7NSImageCSgvs', '_$s6AppKit16NSSuggestionItemV5titleSSvM', '_$s6AppKit16NSSuggestionItemV5titleSSvg', @@ -2794,10 +3097,156 @@ exports: '_$s6AppKit16NSSuggestionItemVAASQRzlE2eeoiySbACyxG_AEtFZ', '_$s6AppKit16NSSuggestionItemVMa', '_$s6AppKit16NSSuggestionItemVMn', '_$s6AppKit16NSSuggestionItemVyxGSHAASHRzlMc', '_$s6AppKit16NSSuggestionItemVyxGSQAASQRzlMc', - '_$s6AppKit17NSApplicationMainys5Int32VAD_SpySpys4Int8VGSgGtF', - '_$s6AppKit18NSViewInvalidatingMp', '_$s6AppKit18NSViewInvalidatingP10invalidate4viewySo0C0C_tFTj', + '_$s6AppKit16UpdateMenuActionC4fromACs7Decoder_p_tKcfC', '_$s6AppKit16UpdateMenuActionC4fromACs7Decoder_p_tKcfc', + '_$s6AppKit16UpdateMenuActionCMa', '_$s6AppKit16UpdateMenuActionCMm', + '_$s6AppKit16UpdateMenuActionCMn', '_$s6AppKit16UpdateMenuActionCMo', + '_$s6AppKit16UpdateMenuActionCN', '_$s6AppKit16UpdateMenuActionC_4menu06linkedD0AcA011IncrementalcE0C0C0VyAA0D0CAA0D4ItemC_G_A2KSgtcfC', + '_$s6AppKit16UpdateMenuActionC_4menu06linkedD0AcA011IncrementalcE0C0C0VyAA0D0CAA0D4ItemC_G_A2KSgtcfc', + '_$s6AppKit16UpdateMenuActionCfD', '_$s6AppKit16UpdateMenuActionCfd', + '_$s6AppKit17CloseWindowActionV10isAnimatedSbvM', '_$s6AppKit17CloseWindowActionV10isAnimatedSbvg', + '_$s6AppKit17CloseWindowActionV10isAnimatedSbvpMV', '_$s6AppKit17CloseWindowActionV10isAnimatedSbvs', + '_$s6AppKit17CloseWindowActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit17CloseWindowActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit17CloseWindowActionVAA03AnyE0AAMc', '_$s6AppKit17CloseWindowActionVAA03AnyE0AAWP', + '_$s6AppKit17CloseWindowActionVAA07TrustedE0AAMc', '_$s6AppKit17CloseWindowActionVAA07TrustedE0AAWP', + '_$s6AppKit17CloseWindowActionVMa', '_$s6AppKit17CloseWindowActionVMn', + '_$s6AppKit17CloseWindowActionVN', '_$s6AppKit17CloseWindowActionVSEAAMc', + '_$s6AppKit17CloseWindowActionVSeAAMc', '_$s6AppKit17EndTrackingActionV22isUniquePerTransactionSbvg', + '_$s6AppKit17EndTrackingActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit17EndTrackingActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit17EndTrackingActionV4menuAA4MenuCvg', '_$s6AppKit17EndTrackingActionV4menuAA4MenuCvpMV', + '_$s6AppKit17EndTrackingActionV5eventAA5EventVSgvg', '_$s6AppKit17EndTrackingActionV5eventAA5EventVSgvpMV', + '_$s6AppKit17EndTrackingActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit17EndTrackingActionVAA03AnyE0AAMc', '_$s6AppKit17EndTrackingActionVAA03AnyE0AAWP', + '_$s6AppKit17EndTrackingActionVAA07TrustedE0AAMc', '_$s6AppKit17EndTrackingActionVAA07TrustedE0AAWP', + '_$s6AppKit17EndTrackingActionVMa', '_$s6AppKit17EndTrackingActionVMn', + '_$s6AppKit17EndTrackingActionVN', '_$s6AppKit17EndTrackingActionVSEAAMc', + '_$s6AppKit17EndTrackingActionVSeAAMc', '_$s6AppKit17IncrementalUpdateMp', + '_$s6AppKit17IncrementalUpdateP5apply2toy8InstanceQzz_tFTj', + '_$s6AppKit17IncrementalUpdateP5apply2toy8InstanceQzz_tFTq', + '_$s6AppKit17IncrementalUpdateTL', '_$s6AppKit17MenuFrameAccessorV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit17MenuFrameAccessorV6encode2toys7Encoder_p_tKF', + '_$s6AppKit17MenuFrameAccessorV6menuID10Foundation4UUIDVvg', + '_$s6AppKit17MenuFrameAccessorV6menuID10Foundation4UUIDVvpMV', + '_$s6AppKit17MenuFrameAccessorVAA15AwaitableActionAAMc', '_$s6AppKit17MenuFrameAccessorVAA15AwaitableActionAAWP', + '_$s6AppKit17MenuFrameAccessorVAA9AnyActionAAMc', '_$s6AppKit17MenuFrameAccessorVAA9AnyActionAAWP', + '_$s6AppKit17MenuFrameAccessorVMa', '_$s6AppKit17MenuFrameAccessorVMn', + '_$s6AppKit17MenuFrameAccessorVN', '_$s6AppKit17MenuFrameAccessorVSEAAMc', + '_$s6AppKit17MenuFrameAccessorVSeAAMc', '_$s6AppKit17NSApplicationMainys5Int32VAD_SpySpys4Int8VGSgGtF', + '_$s6AppKit17NSLivingColorViewCMa', '_$s6AppKit17NSLivingColorViewCMn', + '_$s6AppKit17NSLivingColorViewCMo', '_$s6AppKit17NSLivingColorViewCMu', + '_$s6AppKit17NSLivingColorViewCN', '_$s6AppKit17NSLivingColorViewCfD', + '_$s6AppKit17OpenSubmenuActionV22isUniquePerTransactionSbvg', + '_$s6AppKit17OpenSubmenuActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit17OpenSubmenuActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit17OpenSubmenuActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit17OpenSubmenuActionVAA03AnyE0AAMc', '_$s6AppKit17OpenSubmenuActionVAA03AnyE0AAWP', + '_$s6AppKit17OpenSubmenuActionVAA07TrustedE0AAMc', '_$s6AppKit17OpenSubmenuActionVAA07TrustedE0AAWP', + '_$s6AppKit17OpenSubmenuActionVMa', '_$s6AppKit17OpenSubmenuActionVMn', + '_$s6AppKit17OpenSubmenuActionVN', '_$s6AppKit17OpenSubmenuActionVSEAAMc', + '_$s6AppKit17OpenSubmenuActionVSeAAMc', '_$s6AppKit17OrderedDictionaryV10compactMapyACyqd__qd_0_Gqd___qd_0_tSgx_q_tXESHRd__r0_lF', + '_$s6AppKit17OrderedDictionaryV10firstIndex2ofSiSgx_tF', '_$s6AppKit17OrderedDictionaryV10firstIndex5whereSiSgSbx_q_tXE_tF', + '_$s6AppKit17OrderedDictionaryV11removeValue6forKeyq_Sgx_tF', + '_$s6AppKit17OrderedDictionaryV12makeIteratorAC0F0Vyxq__GyF', + '_$s6AppKit17OrderedDictionaryV12replaceValue_6forKeyyq__xtF', + '_$s6AppKit17OrderedDictionaryV15reserveCapacityyySiF', '_$s6AppKit17OrderedDictionaryV17dictionaryLiteralACyxq_Gx_q_td_tcfC', + '_$s6AppKit17OrderedDictionaryV3mapyACyqd__qd_0_Gqd___qd_0_tx_q_tXESHRd__r0_lF', + '_$s6AppKit17OrderedDictionaryV4keysSayxGvM', '_$s6AppKit17OrderedDictionaryV4keysSayxGvg', + '_$s6AppKit17OrderedDictionaryV4keysSayxGvpMV', '_$s6AppKit17OrderedDictionaryV4keysSayxGvs', + '_$s6AppKit17OrderedDictionaryV4last5wherex3key_q_5valuetSgSbx_q_tXE_tF', + '_$s6AppKit17OrderedDictionaryV4lastx3key_q_5valuetSgvg', + '_$s6AppKit17OrderedDictionaryV4lastx3key_q_5valuetSgvpMV', + '_$s6AppKit17OrderedDictionaryV5countSivg', '_$s6AppKit17OrderedDictionaryV5countSivpMV', + '_$s6AppKit17OrderedDictionaryV5first5wherex3key_q_5valuetSgSbx_q_tXE_tF', + '_$s6AppKit17OrderedDictionaryV5firstx3key_q_5valuetSgvg', + '_$s6AppKit17OrderedDictionaryV5firstx3key_q_5valuetSgvpMV', + '_$s6AppKit17OrderedDictionaryV6append10contentsOfyACyxq_G_tF', + '_$s6AppKit17OrderedDictionaryV6appendyyx_q_tF', '_$s6AppKit17OrderedDictionaryV6filteryACyxq_GSbx_q_tXEF', + '_$s6AppKit17OrderedDictionaryV6insert__2atyx_q_SitF', '_$s6AppKit17OrderedDictionaryV6reduce4into_qd__qd___yqd__z_x3key_q_5valuettXEtlF', + '_$s6AppKit17OrderedDictionaryV6remove2atx3key_q_5valuetSi_tF', + '_$s6AppKit17OrderedDictionaryV6valuesSayq_Gvg', '_$s6AppKit17OrderedDictionaryV6valuesSayq_GvpMV', + '_$s6AppKit17OrderedDictionaryV7isEmptySbvg', '_$s6AppKit17OrderedDictionaryV7isEmptySbvpMV', + '_$s6AppKit17OrderedDictionaryV8IteratorV4nextx_q_tSgyF', + '_$s6AppKit17OrderedDictionaryV8IteratorVMa', '_$s6AppKit17OrderedDictionaryV8IteratorVMn', + '_$s6AppKit17OrderedDictionaryV8IteratorVyxq__GStAAMc', '_$s6AppKit17OrderedDictionaryV8elementsACyxq_Gqd___tcSTRd__x_q_t7ElementRtd__lufC', + '_$s6AppKit17OrderedDictionaryV8reversedACyxq_GyF', '_$s6AppKit17OrderedDictionaryV9lastIndex2ofSiSgx_tF', + '_$s6AppKit17OrderedDictionaryV9lastIndex5whereSiSgSbx_q_tXE_tF', + '_$s6AppKit17OrderedDictionaryV9removeAll15keepingCapacityySb_tF', + '_$s6AppKit17OrderedDictionaryV9unorderedSDyxq_Gvg', '_$s6AppKit17OrderedDictionaryV9unorderedSDyxq_GvpMV', + '_$s6AppKit17OrderedDictionaryVAASQR_rlE2eeoiySbACyxq_G_AEtFZ', + '_$s6AppKit17OrderedDictionaryVMa', '_$s6AppKit17OrderedDictionaryVMn', + '_$s6AppKit17OrderedDictionaryV_7defaultq_x_q_yXKtcig', '_$s6AppKit17OrderedDictionaryVyq_Sgxcig', + '_$s6AppKit17OrderedDictionaryVyq_SgxcipMV', '_$s6AppKit17OrderedDictionaryVyx3key_q_5valuetSicig', + '_$s6AppKit17OrderedDictionaryVyx3key_q_5valuetSicipMV', '_$s6AppKit17OrderedDictionaryVyxq_GSQAASQR_rlMc', + '_$s6AppKit17OrderedDictionaryVyxq_GSTAAMc', '_$s6AppKit17OrderedDictionaryVyxq_Gs013ExpressibleByD7LiteralAAMc', + '_$s6AppKit17SetMainMenuActionV17devPreviewEnabledSbvg', '_$s6AppKit17SetMainMenuActionV17devPreviewEnabledSbvpMV', + '_$s6AppKit17SetMainMenuActionV22isUniquePerTransactionSbvg', + '_$s6AppKit17SetMainMenuActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit17SetMainMenuActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit17SetMainMenuActionV4menuAA0E0Cvg', '_$s6AppKit17SetMainMenuActionV4menuAA0E0CvpMV', + '_$s6AppKit17SetMainMenuActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit17SetMainMenuActionVAA03AnyF0AAMc', '_$s6AppKit17SetMainMenuActionVAA03AnyF0AAWP', + '_$s6AppKit17SetMainMenuActionVAA07TrustedF0AAMc', '_$s6AppKit17SetMainMenuActionVAA07TrustedF0AAWP', + '_$s6AppKit17SetMainMenuActionVMa', '_$s6AppKit17SetMainMenuActionVMn', + '_$s6AppKit17SetMainMenuActionVN', '_$s6AppKit17SetMainMenuActionVSEAAMc', + '_$s6AppKit17SetMainMenuActionVSeAAMc', '_$s6AppKit18CloseSubmenuActionV12isCoalescingSbvg', + '_$s6AppKit18CloseSubmenuActionV12isCoalescingSbvpMV', '_$s6AppKit18CloseSubmenuActionV22isUniquePerTransactionSbvg', + '_$s6AppKit18CloseSubmenuActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit18CloseSubmenuActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit18CloseSubmenuActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit18CloseSubmenuActionV9submenuID10Foundation4UUIDVvg', + '_$s6AppKit18CloseSubmenuActionV9submenuID10Foundation4UUIDVvpMV', + '_$s6AppKit18CloseSubmenuActionVAA03AnyE0AAMc', '_$s6AppKit18CloseSubmenuActionVAA03AnyE0AAWP', + '_$s6AppKit18CloseSubmenuActionVAA07TrustedE0AAMc', '_$s6AppKit18CloseSubmenuActionVAA07TrustedE0AAWP', + '_$s6AppKit18CloseSubmenuActionVMa', '_$s6AppKit18CloseSubmenuActionVMn', + '_$s6AppKit18CloseSubmenuActionVN', '_$s6AppKit18CloseSubmenuActionVSEAAMc', + '_$s6AppKit18CloseSubmenuActionVSeAAMc', '_$s6AppKit18MenuRepresentationV5local8platformAcA0C0C_So6NSMenuCtcfC', + '_$s6AppKit18MenuRepresentationV5localAA0C0Cvg', '_$s6AppKit18MenuRepresentationV5localAA0C0CvpMV', + '_$s6AppKit18MenuRepresentationV8platformSo6NSMenuCvg', '_$s6AppKit18MenuRepresentationV8platformSo6NSMenuCvpMV', + '_$s6AppKit18MenuRepresentationVMa', '_$s6AppKit18MenuRepresentationVMn', + '_$s6AppKit18MenuRepresentationVN', '_$s6AppKit18NSBridgedAnimationMp', + '_$s6AppKit18NSBridgedAnimationP11shouldMerge8previous5value4time7contextSbAaB_p_qd__SdAA0cD7ContextVyqd__GztAA0cD6VectorRd__lFTj', + '_$s6AppKit18NSBridgedAnimationP11shouldMerge8previous5value4time7contextSbAaB_p_qd__SdAA0cD7ContextVyqd__GztAA0cD6VectorRd__lFTq', + '_$s6AppKit18NSBridgedAnimationP7animate5value4time7contextqd__Sgqd___SdAA0cD7ContextVyqd__GztAA0cD6VectorRd__lFTj', + '_$s6AppKit18NSBridgedAnimationP7animate5value4time7contextqd__Sgqd___SdAA0cD7ContextVyqd__GztAA0cD6VectorRd__lFTq', + '_$s6AppKit18NSBridgedAnimationP8velocity5value4time7contextqd__Sgqd___SdAA0cD7ContextVyqd__GtAA0cD6VectorRd__lFTj', + '_$s6AppKit18NSBridgedAnimationP8velocity5value4time7contextqd__Sgqd___SdAA0cD7ContextVyqd__GtAA0cD6VectorRd__lFTq', + '_$s6AppKit18NSBridgedAnimationTL', '_$s6AppKit18NSViewInvalidatingMp', + '_$s6AppKit18NSViewInvalidatingP10invalidate4viewySo0C0C_tFTj', '_$s6AppKit18NSViewInvalidatingP10invalidate4viewySo0C0C_tFTq', - '_$s6AppKit18NSViewInvalidatingTL', '_$s6AppKit19NSViewPreviewSourceV13contentDomain21DeveloperToolsSupport0de7ContentG0Ovg', + '_$s6AppKit18NSViewInvalidatingTL', '_$s6AppKit19BeginTrackingActionV22isUniquePerTransactionSbvg', + '_$s6AppKit19BeginTrackingActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit19BeginTrackingActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit19BeginTrackingActionV4menuAA4MenuCvg', '_$s6AppKit19BeginTrackingActionV4menuAA4MenuCvpMV', + '_$s6AppKit19BeginTrackingActionV5eventAA5EventVSgvg', '_$s6AppKit19BeginTrackingActionV5eventAA5EventVSgvpMV', + '_$s6AppKit19BeginTrackingActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit19BeginTrackingActionV7contextAA11MenuContextCSgvg', + '_$s6AppKit19BeginTrackingActionV7contextAA11MenuContextCSgvpMV', + '_$s6AppKit19BeginTrackingActionVAA03AnyE0AAMc', '_$s6AppKit19BeginTrackingActionVAA03AnyE0AAWP', + '_$s6AppKit19BeginTrackingActionVAA07TrustedE0AAMc', '_$s6AppKit19BeginTrackingActionVAA07TrustedE0AAWP', + '_$s6AppKit19BeginTrackingActionVMa', '_$s6AppKit19BeginTrackingActionVMn', + '_$s6AppKit19BeginTrackingActionVN', '_$s6AppKit19BeginTrackingActionVSEAAMc', + '_$s6AppKit19BeginTrackingActionVSeAAMc', '_$s6AppKit19NSVerticalDirectionO3SetV2upAEvgZ', + '_$s6AppKit19NSVerticalDirectionO3SetV2upAEvpZMV', '_$s6AppKit19NSVerticalDirectionO3SetV3allAEvgZ', + '_$s6AppKit19NSVerticalDirectionO3SetV3allAEvpZMV', '_$s6AppKit19NSVerticalDirectionO3SetV4downAEvgZ', + '_$s6AppKit19NSVerticalDirectionO3SetV4downAEvpZMV', '_$s6AppKit19NSVerticalDirectionO3SetV6insertySb8inserted_AC17memberAfterInserttACnF', + '_$s6AppKit19NSVerticalDirectionO3SetV6removeyACSgACF', '_$s6AppKit19NSVerticalDirectionO3SetV6update4withACSgACn_tF', + '_$s6AppKit19NSVerticalDirectionO3SetV8containsySbACF', '_$s6AppKit19NSVerticalDirectionO3SetV8rawValueAEs4Int8V_tcfC', + '_$s6AppKit19NSVerticalDirectionO3SetV8rawValues4Int8Vvg', + '_$s6AppKit19NSVerticalDirectionO3SetV8rawValues4Int8VvpMV', + '_$s6AppKit19NSVerticalDirectionO3SetVMa', '_$s6AppKit19NSVerticalDirectionO3SetVMn', + '_$s6AppKit19NSVerticalDirectionO3SetVN', '_$s6AppKit19NSVerticalDirectionO3SetVSHAAMc', + '_$s6AppKit19NSVerticalDirectionO3SetVSQAAMc', '_$s6AppKit19NSVerticalDirectionO3SetVSYAAMc', + '_$s6AppKit19NSVerticalDirectionO3SetVs06OptionE0AAMc', '_$s6AppKit19NSVerticalDirectionO3SetVs0E7AlgebraAAMc', + '_$s6AppKit19NSVerticalDirectionO3SetVs25ExpressibleByArrayLiteralAAMc', + '_$s6AppKit19NSVerticalDirectionO3SetVyAeCcfC', '_$s6AppKit19NSVerticalDirectionO8allCasesSayACGvgZ', + '_$s6AppKit19NSVerticalDirectionO8allCasesSayACGvpZMV', '_$s6AppKit19NSVerticalDirectionO8rawValueACSgs4Int8V_tcfC', + '_$s6AppKit19NSVerticalDirectionO8rawValues4Int8Vvg', '_$s6AppKit19NSVerticalDirectionO8rawValues4Int8VvpMV', + '_$s6AppKit19NSVerticalDirectionOMa', '_$s6AppKit19NSVerticalDirectionOMn', + '_$s6AppKit19NSVerticalDirectionON', '_$s6AppKit19NSVerticalDirectionOSEAAMc', + '_$s6AppKit19NSVerticalDirectionOSHAAMc', '_$s6AppKit19NSVerticalDirectionOSQAAMc', + '_$s6AppKit19NSVerticalDirectionOSYAAMc', '_$s6AppKit19NSVerticalDirectionOSeAAMc', + '_$s6AppKit19NSVerticalDirectionOs12CaseIterableAAMc', '_$s6AppKit19NSViewPreviewSourceV13contentDomain21DeveloperToolsSupport0de7ContentG0Ovg', '_$s6AppKit19NSViewPreviewSourceV13contentDomain21DeveloperToolsSupport0de7ContentG0OvpMV', '_$s6AppKit19NSViewPreviewSourceV15contentCategory21DeveloperToolsSupport0de7ContentG0Vvg', '_$s6AppKit19NSViewPreviewSourceV15contentCategory21DeveloperToolsSupport0de7ContentG0VvpMV', @@ -2807,25 +3256,110 @@ exports: '_$s6AppKit19NSViewPreviewSourceV8makeViewSo0C0CyScMYccvpMV', '_$s6AppKit19NSViewPreviewSourceV8makeViewSo0C0CyScMYccvs', '_$s6AppKit19NSViewPreviewSourceVMa', '_$s6AppKit19NSViewPreviewSourceVMn', - '_$s6AppKit19NSViewPreviewSourceVN', '_$s6AppKit21AdjacentPairsSequenceV12makeIteratorAC0G0Vyx_GyF', - '_$s6AppKit21AdjacentPairsSequenceV19underestimatedCountSivg', - '_$s6AppKit21AdjacentPairsSequenceV19underestimatedCountSivpMV', - '_$s6AppKit21AdjacentPairsSequenceV4baseACyxGx_tcfC', '_$s6AppKit21AdjacentPairsSequenceV4basexvg', - '_$s6AppKit21AdjacentPairsSequenceV4basexvpMV', '_$s6AppKit21AdjacentPairsSequenceV8IteratorV4baseADQzvM', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorV4baseADQzvg', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorV4baseADQzvpMV', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorV4baseADQzvs', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorV4baseAEyx_GADQz_tcfC', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorV4next7ElementQz_AHtSgyF', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorV8previous7ElementQzSgvM', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorV8previous7ElementQzSgvg', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorV8previous7ElementQzSgvpMV', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorV8previous7ElementQzSgvs', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorVMa', '_$s6AppKit21AdjacentPairsSequenceV8IteratorVMn', - '_$s6AppKit21AdjacentPairsSequenceV8IteratorVyx_GStAAMc', - '_$s6AppKit21AdjacentPairsSequenceVMa', '_$s6AppKit21AdjacentPairsSequenceVMn', - '_$s6AppKit21AdjacentPairsSequenceVyxGSTAAMc', '_$s6AppKit21AdjacentPairsSequenceVyxGs04LazyE8ProtocolAAsAERzrlMc', - '_$s6AppKit22NSTextTokensControllerC15untokenizedTextSSvMTj', + '_$s6AppKit19NSViewPreviewSourceVN', '_$s6AppKit20AsyncAwaitableActionMp', + '_$s6AppKit20AsyncAwaitableActionPAA0dE0Tb', '_$s6AppKit20AsyncAwaitableActionTL', + '_$s6AppKit20DidCloseWindowActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit20DidCloseWindowActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit20DidCloseWindowActionVAA03AnyF0AAMc', '_$s6AppKit20DidCloseWindowActionVAA03AnyF0AAWP', + '_$s6AppKit20DidCloseWindowActionVAA07TrustedF0AAMc', '_$s6AppKit20DidCloseWindowActionVAA07TrustedF0AAWP', + '_$s6AppKit20DidCloseWindowActionVMa', '_$s6AppKit20DidCloseWindowActionVMn', + '_$s6AppKit20DidCloseWindowActionVN', '_$s6AppKit20DidCloseWindowActionVSEAAMc', + '_$s6AppKit20DidCloseWindowActionVSeAAMc', '_$s6AppKit20TrustedUITransactionC3add6actionyx_tF', + '_$s6AppKit20TrustedUITransactionC4fromACyxGs7Decoder_p_tKcfC', + '_$s6AppKit20TrustedUITransactionC4fromACyxGs7Decoder_p_tKcfCTj', + '_$s6AppKit20TrustedUITransactionC4fromACyxGs7Decoder_p_tKcfCTq', + '_$s6AppKit20TrustedUITransactionC4fromACyxGs7Decoder_p_tKcfc', + '_$s6AppKit20TrustedUITransactionC6encode2toys7Encoder_p_tKF', + '_$s6AppKit20TrustedUITransactionCACyxGycfC', '_$s6AppKit20TrustedUITransactionCACyxGycfCTj', + '_$s6AppKit20TrustedUITransactionCACyxGycfCTq', '_$s6AppKit20TrustedUITransactionCACyxGycfc', + '_$s6AppKit20TrustedUITransactionCMa', '_$s6AppKit20TrustedUITransactionCMn', + '_$s6AppKit20TrustedUITransactionCMo', '_$s6AppKit20TrustedUITransactionCMu', + '_$s6AppKit20TrustedUITransactionCfD', '_$s6AppKit20TrustedUITransactionCfd', + '_$s6AppKit20TrustedUITransactionCyxGAA10XPCCodableAAMc', + '_$s6AppKit20TrustedUITransactionCyxGAA10XPCCodableAAWP', + '_$s6AppKit20TrustedUITransactionCyxGSEAAMc', '_$s6AppKit20TrustedUITransactionCyxGSeAAMc', + '_$s6AppKit21ActionTypeConvertibleMp', '_$s6AppKit21ActionTypeConvertibleP010associatedcD0AA03AnyC0_pXpvgTj', + '_$s6AppKit21ActionTypeConvertibleP010associatedcD0AA03AnyC0_pXpvgTq', + '_$s6AppKit21ActionTypeConvertiblePSETb', '_$s6AppKit21ActionTypeConvertiblePSYTb', + '_$s6AppKit21ActionTypeConvertiblePSeTb', '_$s6AppKit21ActionTypeConvertibleTL', + '_$s6AppKit21MenuBarSettingsActionV04menudE0AA09UnbridgedcdE0CSgvg', + '_$s6AppKit21MenuBarSettingsActionV04menudE0AA09UnbridgedcdE0CSgvpMV', + '_$s6AppKit21MenuBarSettingsActionV21transactionIdentifiers11AnyHashableVSgvg', + '_$s6AppKit21MenuBarSettingsActionV21transactionIdentifiers11AnyHashableVSgvpMV', + '_$s6AppKit21MenuBarSettingsActionV22isUniquePerTransactionSbvg', + '_$s6AppKit21MenuBarSettingsActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit21MenuBarSettingsActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit21MenuBarSettingsActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit21MenuBarSettingsActionVAA03AnyF0AAMc', '_$s6AppKit21MenuBarSettingsActionVAA03AnyF0AAWP', + '_$s6AppKit21MenuBarSettingsActionVAA07TrustedF0AAMc', '_$s6AppKit21MenuBarSettingsActionVAA07TrustedF0AAWP', + '_$s6AppKit21MenuBarSettingsActionVMa', '_$s6AppKit21MenuBarSettingsActionVMn', + '_$s6AppKit21MenuBarSettingsActionVN', '_$s6AppKit21MenuBarSettingsActionVSEAAMc', + '_$s6AppKit21MenuBarSettingsActionVSeAAMc', '_$s6AppKit21MenuItemFrameAccessorV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit21MenuItemFrameAccessorV6encode2toys7Encoder_p_tKF', + '_$s6AppKit21MenuItemFrameAccessorV7locatorAA0cD0C7LocatorVvg', + '_$s6AppKit21MenuItemFrameAccessorV7locatorAA0cD0C7LocatorVvpMV', + '_$s6AppKit21MenuItemFrameAccessorVAA15AwaitableActionAAMc', + '_$s6AppKit21MenuItemFrameAccessorVAA15AwaitableActionAAWP', + '_$s6AppKit21MenuItemFrameAccessorVAA9AnyActionAAMc', '_$s6AppKit21MenuItemFrameAccessorVAA9AnyActionAAWP', + '_$s6AppKit21MenuItemFrameAccessorVMa', '_$s6AppKit21MenuItemFrameAccessorVMn', + '_$s6AppKit21MenuItemFrameAccessorVN', '_$s6AppKit21MenuItemFrameAccessorVSEAAMc', + '_$s6AppKit21MenuItemFrameAccessorVSeAAMc', '_$s6AppKit21NSHorizontalDirectionO3SetV3allAEvgZ', + '_$s6AppKit21NSHorizontalDirectionO3SetV3allAEvpZMV', '_$s6AppKit21NSHorizontalDirectionO3SetV4leftAEvgZ', + '_$s6AppKit21NSHorizontalDirectionO3SetV4leftAEvpZMV', '_$s6AppKit21NSHorizontalDirectionO3SetV5rightAEvgZ', + '_$s6AppKit21NSHorizontalDirectionO3SetV5rightAEvpZMV', '_$s6AppKit21NSHorizontalDirectionO3SetV6insertySb8inserted_AC17memberAfterInserttACnF', + '_$s6AppKit21NSHorizontalDirectionO3SetV6removeyACSgACF', + '_$s6AppKit21NSHorizontalDirectionO3SetV6update4withACSgACn_tF', + '_$s6AppKit21NSHorizontalDirectionO3SetV8containsySbACF', + '_$s6AppKit21NSHorizontalDirectionO3SetV8rawValueAEs4Int8V_tcfC', + '_$s6AppKit21NSHorizontalDirectionO3SetV8rawValues4Int8Vvg', + '_$s6AppKit21NSHorizontalDirectionO3SetV8rawValues4Int8VvpMV', + '_$s6AppKit21NSHorizontalDirectionO3SetVMa', '_$s6AppKit21NSHorizontalDirectionO3SetVMn', + '_$s6AppKit21NSHorizontalDirectionO3SetVN', '_$s6AppKit21NSHorizontalDirectionO3SetVSHAAMc', + '_$s6AppKit21NSHorizontalDirectionO3SetVSQAAMc', '_$s6AppKit21NSHorizontalDirectionO3SetVSYAAMc', + '_$s6AppKit21NSHorizontalDirectionO3SetVs06OptionE0AAMc', + '_$s6AppKit21NSHorizontalDirectionO3SetVs0E7AlgebraAAMc', + '_$s6AppKit21NSHorizontalDirectionO3SetVs25ExpressibleByArrayLiteralAAMc', + '_$s6AppKit21NSHorizontalDirectionO3SetVyAeCcfC', '_$s6AppKit21NSHorizontalDirectionO7leading10relativeToACSo021NSUserInterfaceLayoutD0V_tFZ', + '_$s6AppKit21NSHorizontalDirectionO8allCasesSayACGvgZ', '_$s6AppKit21NSHorizontalDirectionO8allCasesSayACGvpZMV', + '_$s6AppKit21NSHorizontalDirectionO8rawValueACSgs4Int8V_tcfC', + '_$s6AppKit21NSHorizontalDirectionO8rawValues4Int8Vvg', '_$s6AppKit21NSHorizontalDirectionO8rawValues4Int8VvpMV', + '_$s6AppKit21NSHorizontalDirectionO8trailing10relativeToACSo021NSUserInterfaceLayoutD0V_tFZ', + '_$s6AppKit21NSHorizontalDirectionOMa', '_$s6AppKit21NSHorizontalDirectionOMn', + '_$s6AppKit21NSHorizontalDirectionON', '_$s6AppKit21NSHorizontalDirectionOSEAAMc', + '_$s6AppKit21NSHorizontalDirectionOSHAAMc', '_$s6AppKit21NSHorizontalDirectionOSQAAMc', + '_$s6AppKit21NSHorizontalDirectionOSYAAMc', '_$s6AppKit21NSHorizontalDirectionOSeAAMc', + '_$s6AppKit21NSHorizontalDirectionOs12CaseIterableAAMc', '_$s6AppKit21PerformMenuItemActionV22isUniquePerTransactionSbvg', + '_$s6AppKit21PerformMenuItemActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit21PerformMenuItemActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit21PerformMenuItemActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit21PerformMenuItemActionVAA03AnyF0AAMc', '_$s6AppKit21PerformMenuItemActionVAA03AnyF0AAWP', + '_$s6AppKit21PerformMenuItemActionVAA07TrustedF0AAMc', '_$s6AppKit21PerformMenuItemActionVAA07TrustedF0AAWP', + '_$s6AppKit21PerformMenuItemActionVMa', '_$s6AppKit21PerformMenuItemActionVMn', + '_$s6AppKit21PerformMenuItemActionVN', '_$s6AppKit21PerformMenuItemActionVSEAAMc', + '_$s6AppKit21PerformMenuItemActionVSeAAMc', '_$s6AppKit21TransactionPerformingMp', + '_$s6AppKit21TransactionPerformingP15ActionInterfaceAC_AA0E8WrappingTn', + '_$s6AppKit21TransactionPerformingPAA06ActionD0Tb', '_$s6AppKit21TransactionPerformingPAAE16_performRemotely11transactionySo13OS_xpc_object_p_tF', + '_$s6AppKit21TransactionPerformingPAAE16_performRemotely6actionqd__SgSo13OS_xpc_object_p_tYalF', + '_$s6AppKit21TransactionPerformingPAAE16_performRemotely6actionqd__SgSo13OS_xpc_object_p_tYalFTu', + '_$s6AppKit21TransactionPerformingTL', '_$s6AppKit21TransactionXPCDecoderV6decode4from2asxSo13OS_xpc_object_p_xmtKSeRzlF', + '_$s6AppKit21TransactionXPCDecoderVACycfC', '_$s6AppKit21TransactionXPCDecoderVMa', + '_$s6AppKit21TransactionXPCDecoderVMn', '_$s6AppKit21TransactionXPCDecoderVN', + '_$s6AppKit21TransactionXPCEncoderV6encode_4intoyx_So13OS_xpc_object_ptKSERzlF', + '_$s6AppKit21TransactionXPCEncoderV6encodeySo13OS_xpc_object_pxKSERzlF', + '_$s6AppKit21TransactionXPCEncoderVACycfC', '_$s6AppKit21TransactionXPCEncoderVMa', + '_$s6AppKit21TransactionXPCEncoderVMn', '_$s6AppKit21TransactionXPCEncoderVN', + '_$s6AppKit21TrustedUIFeatureFlagsO07FeatureE00fE3KeyAAMc', + '_$s6AppKit21TrustedUIFeatureFlagsO22pasteboardVerificationyA2CmFWC', + '_$s6AppKit21TrustedUIFeatureFlagsO2eeoiySbAC_ACtFZ', '_$s6AppKit21TrustedUIFeatureFlagsO4hash4intoys6HasherVz_tF', + '_$s6AppKit21TrustedUIFeatureFlagsO6domains12StaticStringVvg', + '_$s6AppKit21TrustedUIFeatureFlagsO6domains12StaticStringVvpMV', + '_$s6AppKit21TrustedUIFeatureFlagsO7features12StaticStringVvg', + '_$s6AppKit21TrustedUIFeatureFlagsO7features12StaticStringVvpMV', + '_$s6AppKit21TrustedUIFeatureFlagsO9hashValueSivg', '_$s6AppKit21TrustedUIFeatureFlagsO9hashValueSivpMV', + '_$s6AppKit21TrustedUIFeatureFlagsO9isEnabledSbvg', '_$s6AppKit21TrustedUIFeatureFlagsO9isEnabledSbvpMV', + '_$s6AppKit21TrustedUIFeatureFlagsOMa', '_$s6AppKit21TrustedUIFeatureFlagsOMn', + '_$s6AppKit21TrustedUIFeatureFlagsON', '_$s6AppKit21TrustedUIFeatureFlagsOSHAAMc', + '_$s6AppKit21TrustedUIFeatureFlagsOSQAAMc', '_$s6AppKit22NSTextTokensControllerC15untokenizedTextSSvMTj', '_$s6AppKit22NSTextTokensControllerC15untokenizedTextSSvMTq', '_$s6AppKit22NSTextTokensControllerC15untokenizedTextSSvgTj', '_$s6AppKit22NSTextTokensControllerC15untokenizedTextSSvgTq', @@ -2844,7 +3378,168 @@ exports: '_$s6AppKit22NSTextTokensControllerCMa', '_$s6AppKit22NSTextTokensControllerCMn', '_$s6AppKit22NSTextTokensControllerCMo', '_$s6AppKit22NSTextTokensControllerCMu', '_$s6AppKit22NSTextTokensControllerCfD', '_$s6AppKit22NSTextTokensControllerCfd', - '_$s6AppKit23NSSuggestionItemSectionV5itemsACyxGSayAA0cD0VyxGG_tcfC', + '_$s6AppKit22RepositionWindowActionV22isUniquePerTransactionSbvg', + '_$s6AppKit22RepositionWindowActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit22RepositionWindowActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit22RepositionWindowActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit22RepositionWindowActionV6offsetSo7CGPointVvM', + '_$s6AppKit22RepositionWindowActionV6offsetSo7CGPointVvg', + '_$s6AppKit22RepositionWindowActionV6offsetSo7CGPointVvpMV', + '_$s6AppKit22RepositionWindowActionV6offsetSo7CGPointVvs', + '_$s6AppKit22RepositionWindowActionVAA03AnyE0AAMc', '_$s6AppKit22RepositionWindowActionVAA03AnyE0AAWP', + '_$s6AppKit22RepositionWindowActionVAA07TrustedE0AAMc', '_$s6AppKit22RepositionWindowActionVAA07TrustedE0AAWP', + '_$s6AppKit22RepositionWindowActionVMa', '_$s6AppKit22RepositionWindowActionVMn', + '_$s6AppKit22RepositionWindowActionVN', '_$s6AppKit22RepositionWindowActionVSEAAMc', + '_$s6AppKit22RepositionWindowActionVSeAAMc', '_$s6AppKit22TimingFunctionProtocolMp', + '_$s6AppKit22TimingFunctionProtocolP11outputValue3forS2d_tFTj', + '_$s6AppKit22TimingFunctionProtocolP11outputValue3forS2d_tFTq', + '_$s6AppKit22TimingFunctionProtocolTL', '_$s6AppKit22TrustedUIServiceActionO011emptyServerE0yA2CmFWC', + '_$s6AppKit22TrustedUIServiceActionO014forwardEventToA0yAcA0G0VcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO015performMenuItemE0yAcA0gH0C7LocatorVSg_AA15PasteboardTokenVSgtcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO11endTrackingyAcA4MenuC_AA5EventVSgtcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO11openSubmenuyAC10Foundation4UUIDV_SitcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO010associatedeG0AA03AnyE0_pXpvg', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO010associatedeG0AA03AnyE0_pXpvpMV', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO011emptyServerE0yA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO014forwardEventToA0yA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO015performMenuItemE0yA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO11endTrackingyA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO11openSubmenuyA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO12closeSubmenuyA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO19sendPasteboardTokenyA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO21updateHighlightedItemyA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO22menuAccessibilityTokenyA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO25updateHostedMenuItemFrameyA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO29menuAccessibilityNotificationyA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO7checkInyA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO8rawValueAESgSi_tcfC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO8rawValueSivg', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO8rawValueSivpMV', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeO9sendEventyA2EmFWC', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeOAA0eG11ConvertibleAAMc', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeOAA0eG11ConvertibleAAWP', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeOMa', '_$s6AppKit22TrustedUIServiceActionO12InternalTypeOMn', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeON', '_$s6AppKit22TrustedUIServiceActionO12InternalTypeOSEAAMc', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeOSHAAMc', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeOSQAAMc', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeOSYAAMc', + '_$s6AppKit22TrustedUIServiceActionO12InternalTypeOSeAAMc', + '_$s6AppKit22TrustedUIServiceActionO12closeSubmenuyAC10Foundation4UUIDV_SbtcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO12wrappedValueAA0E3BoxVyACGSgvg', + '_$s6AppKit22TrustedUIServiceActionO12wrappedValueAA0E3BoxVyACGSgvpMV', + '_$s6AppKit22TrustedUIServiceActionO19sendPasteboardTokenyAcA0gH0VSgcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO21removeHighlightedItemyAC10Foundation4UUIDVcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO21updateHighlightedItemyAC10Foundation4UUIDV_SitcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO22menuAccessibilityTokenyAcA06RemotegH0Vy10Foundation4UUIDVGcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO25updateHostedMenuItemFrameyAC10Foundation4UUIDV_So6CGRectVtcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO29menuAccessibilityNotificationyAC10Foundation4UUIDV_SStcACmFWC', + '_$s6AppKit22TrustedUIServiceActionO7checkInyA2CmFWC', '_$s6AppKit22TrustedUIServiceActionO9sendEventyAC10Foundation4UUIDV_AA0G0VtcACmFWC', + '_$s6AppKit22TrustedUIServiceActionOAA0E8WrappingAAMc', '_$s6AppKit22TrustedUIServiceActionOAA0E8WrappingAAWP', + '_$s6AppKit22TrustedUIServiceActionOMa', '_$s6AppKit22TrustedUIServiceActionOMn', + '_$s6AppKit22TrustedUIServiceActionON', '_$s6AppKit22UpdateMenuRecordActionC4fromACs7Decoder_p_tKcfC', + '_$s6AppKit22UpdateMenuRecordActionC4fromACs7Decoder_p_tKcfc', + '_$s6AppKit22UpdateMenuRecordActionCMa', '_$s6AppKit22UpdateMenuRecordActionCMm', + '_$s6AppKit22UpdateMenuRecordActionCMn', '_$s6AppKit22UpdateMenuRecordActionCMo', + '_$s6AppKit22UpdateMenuRecordActionCN', '_$s6AppKit22UpdateMenuRecordActionC_4menu06linkedD0AcA011IncrementalcF0C0C0VyAA0dE0CAA0d4ItemE0C_G_A2KSgtcfC', + '_$s6AppKit22UpdateMenuRecordActionC_4menu06linkedD0AcA011IncrementalcF0C0C0VyAA0dE0CAA0d4ItemE0C_G_A2KSgtcfc', + '_$s6AppKit22UpdateMenuRecordActionCfD', '_$s6AppKit22UpdateMenuRecordActionCfd', + '_$s6AppKit23AttributedStringCodableV12wrappedValueACSo012NSAttributedD0CSg_tcfC', + '_$s6AppKit23AttributedStringCodableV12wrappedValueSo012NSAttributedD0CSgvM', + '_$s6AppKit23AttributedStringCodableV12wrappedValueSo012NSAttributedD0CSgvg', + '_$s6AppKit23AttributedStringCodableV12wrappedValueSo012NSAttributedD0CSgvpMV', + '_$s6AppKit23AttributedStringCodableV12wrappedValueSo012NSAttributedD0CSgvs', + '_$s6AppKit23AttributedStringCodableV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit23AttributedStringCodableV6encode2toys7Encoder_p_tKF', + '_$s6AppKit23AttributedStringCodableVMa', '_$s6AppKit23AttributedStringCodableVMn', + '_$s6AppKit23AttributedStringCodableVN', '_$s6AppKit23AttributedStringCodableVSEAAMc', + '_$s6AppKit23AttributedStringCodableVSeAAMc', '_$s6AppKit23HighlightMenuItemActionV18allowDisabledItemsSbvg', + '_$s6AppKit23HighlightMenuItemActionV18allowDisabledItemsSbvpMV', + '_$s6AppKit23HighlightMenuItemActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit23HighlightMenuItemActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit23HighlightMenuItemActionV7locatorAA0dE0C7LocatorVvg', + '_$s6AppKit23HighlightMenuItemActionV7locatorAA0dE0C7LocatorVvpMV', + '_$s6AppKit23HighlightMenuItemActionVAA03AnyF0AAMc', '_$s6AppKit23HighlightMenuItemActionVAA03AnyF0AAWP', + '_$s6AppKit23HighlightMenuItemActionVAA09AwaitableF0AAMc', + '_$s6AppKit23HighlightMenuItemActionVAA09AwaitableF0AAWP', + '_$s6AppKit23HighlightMenuItemActionVMa', '_$s6AppKit23HighlightMenuItemActionVMn', + '_$s6AppKit23HighlightMenuItemActionVN', '_$s6AppKit23HighlightMenuItemActionVSEAAMc', + '_$s6AppKit23HighlightMenuItemActionVSeAAMc', '_$s6AppKit23IncrementalUpdateActionC0D0VMa', + '_$s6AppKit23IncrementalUpdateActionC0D0VMn', '_$s6AppKit23IncrementalUpdateActionC10linkedMenuxSgvgTj', + '_$s6AppKit23IncrementalUpdateActionC10linkedMenuxSgvgTq', + '_$s6AppKit23IncrementalUpdateActionC10linkedMenuxSgvpMV', + '_$s6AppKit23IncrementalUpdateActionC21transactionIdentifiers11AnyHashableVSgvgTj', + '_$s6AppKit23IncrementalUpdateActionC21transactionIdentifiers11AnyHashableVSgvgTq', + '_$s6AppKit23IncrementalUpdateActionC21transactionIdentifiers11AnyHashableVSgvpMV', + '_$s6AppKit23IncrementalUpdateActionC22isUniquePerTransactionSbvgTj', + '_$s6AppKit23IncrementalUpdateActionC22isUniquePerTransactionSbvgTq', + '_$s6AppKit23IncrementalUpdateActionC22isUniquePerTransactionSbvpMV', + '_$s6AppKit23IncrementalUpdateActionC4fromACyxq_Gs7Decoder_p_tKcfC', + '_$s6AppKit23IncrementalUpdateActionC4fromACyxq_Gs7Decoder_p_tKcfCTj', + '_$s6AppKit23IncrementalUpdateActionC4fromACyxq_Gs7Decoder_p_tKcfCTq', + '_$s6AppKit23IncrementalUpdateActionC4fromACyxq_Gs7Decoder_p_tKcfc', + '_$s6AppKit23IncrementalUpdateActionC4menuxvgTj', '_$s6AppKit23IncrementalUpdateActionC4menuxvgTq', + '_$s6AppKit23IncrementalUpdateActionC4menuxvpMV', '_$s6AppKit23IncrementalUpdateActionC6encode2toys7Encoder_p_tKFTj', + '_$s6AppKit23IncrementalUpdateActionC6encode2toys7Encoder_p_tKFTq', + '_$s6AppKit23IncrementalUpdateActionCMa', '_$s6AppKit23IncrementalUpdateActionCMn', + '_$s6AppKit23IncrementalUpdateActionCMo', '_$s6AppKit23IncrementalUpdateActionCMu', + '_$s6AppKit23IncrementalUpdateActionC_4menu10linkedMenuACyxq_GAC0D0Vyxq__G_xxSgtcfC', + '_$s6AppKit23IncrementalUpdateActionC_4menu10linkedMenuACyxq_GAC0D0Vyxq__G_xxSgtcfCTj', + '_$s6AppKit23IncrementalUpdateActionC_4menu10linkedMenuACyxq_GAC0D0Vyxq__G_xxSgtcfCTq', + '_$s6AppKit23IncrementalUpdateActionC_4menu10linkedMenuACyxq_GAC0D0Vyxq__G_xxSgtcfc', + '_$s6AppKit23IncrementalUpdateActionCfD', '_$s6AppKit23IncrementalUpdateActionCfd', + '_$s6AppKit23IncrementalUpdateActionCyxq_GAA03AnyE0AAMc', + '_$s6AppKit23IncrementalUpdateActionCyxq_GAA03AnyE0AAWP', + '_$s6AppKit23IncrementalUpdateActionCyxq_GAA07TrustedE0AAMc', + '_$s6AppKit23IncrementalUpdateActionCyxq_GAA07TrustedE0AAWP', + '_$s6AppKit23IncrementalUpdateActionCyxq_GSEAAMc', '_$s6AppKit23IncrementalUpdateActionCyxq_GSeAAMc', + '_$s6AppKit23LocalNotificationCenterO0D0C11addObserver_10identifier8callbackyqd___q_Sgyqd___xtctRld__ClFTj', + '_$s6AppKit23LocalNotificationCenterO0D0C11addObserver_10identifier8callbackyqd___q_Sgyqd___xtctRld__ClFTq', + '_$s6AppKit23LocalNotificationCenterO0D0C11addObserver_10identifier8selectoryqd___q_Sg10ObjectiveC8SelectorVtSo8NSObjectCRbd__lFTj', + '_$s6AppKit23LocalNotificationCenterO0D0C11addObserver_10identifier8selectoryqd___q_Sg10ObjectiveC8SelectorVtSo8NSObjectCRbd__lFTq', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC10identifier8callbackAGy_xq__Gq_Sg_yxctcfC', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC10identifier8callbackAGy_xq__Gq_Sg_yxctcfCTj', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC10identifier8callbackAGy_xq__Gq_Sg_yxctcfCTq', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC10identifier8callbackAGy_xq__Gq_Sg_yxctcfc', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC10identifierq_Sgvg', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC10identifierq_SgvpMV', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC5owneryXlSgvMTj', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC5owneryXlSgvMTq', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC5owneryXlSgvgTj', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC5owneryXlSgvgTq', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC5owneryXlSgvpMV', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC5owneryXlSgvsTj', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC5owneryXlSgvsTq', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC8callbackyyxcvMTj', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC8callbackyyxcvMTq', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC8callbackyyxcvgTj', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC8callbackyyxcvgTq', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC8callbackyyxcvpMV', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC8callbackyyxcvsTj', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverC8callbackyyxcvsTq', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverCMa', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverCMn', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverCMo', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverCMu', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverCfD', + '_$s6AppKit23LocalNotificationCenterO0D0C18RegisteredObserverCfd', + '_$s6AppKit23LocalNotificationCenterO0D0C4post_10identifieryx_q_SgtFTj', + '_$s6AppKit23LocalNotificationCenterO0D0C4post_10identifieryx_q_SgtFTq', + '_$s6AppKit23LocalNotificationCenterO0D0C6remove5owneryyXl_tFTj', + '_$s6AppKit23LocalNotificationCenterO0D0C6remove5owneryyXl_tFTq', + '_$s6AppKit23LocalNotificationCenterO0D0C8register10identifier8callbackypq_Sg_yxctFTj', + '_$s6AppKit23LocalNotificationCenterO0D0C8register10identifier8callbackypq_Sg_yxctFTq', + '_$s6AppKit23LocalNotificationCenterO0D0C9observersSayAE18RegisteredObserverCy_xq__GGvgTj', + '_$s6AppKit23LocalNotificationCenterO0D0C9observersSayAE18RegisteredObserverCy_xq__GGvgTq', + '_$s6AppKit23LocalNotificationCenterO0D0C9observersSayAE18RegisteredObserverCy_xq__GGvpMV', + '_$s6AppKit23LocalNotificationCenterO0D0CAAytRszrlE11addObserver_10identifier8callbackyqd___q_Sgyqd__ctRld__ClF', + '_$s6AppKit23LocalNotificationCenterO0D0CAAytRszrlE4post10identifieryq_Sg_tF', + '_$s6AppKit23LocalNotificationCenterO0D0CMa', '_$s6AppKit23LocalNotificationCenterO0D0CMn', + '_$s6AppKit23LocalNotificationCenterO0D0CMo', '_$s6AppKit23LocalNotificationCenterO0D0CMu', + '_$s6AppKit23LocalNotificationCenterO0D0CfD', '_$s6AppKit23LocalNotificationCenterO0D0Cfd', + '_$s6AppKit23LocalNotificationCenterO28hostedMenuItemDidChangeFrameAC0D0Cy_AA06HostedghkJ0VSSGvgZ', + '_$s6AppKit23LocalNotificationCenterO28hostedMenuItemDidChangeFrameAC0D0Cy_AA06HostedghkJ0VSSGvpZMV', + '_$s6AppKit23LocalNotificationCenterOMa', '_$s6AppKit23LocalNotificationCenterOMn', + '_$s6AppKit23LocalNotificationCenterON', '_$s6AppKit23NSSuggestionItemSectionV5itemsACyxGSayAA0cD0VyxGG_tcfC', '_$s6AppKit23NSSuggestionItemSectionV5itemsSayAA0cD0VyxGGvM', '_$s6AppKit23NSSuggestionItemSectionV5itemsSayAA0cD0VyxGGvg', '_$s6AppKit23NSSuggestionItemSectionV5itemsSayAA0cD0VyxGGvpMV', @@ -2858,6 +3553,31 @@ exports: '_$s6AppKit23NSSuggestionItemSectionVAASQRzlE2eeoiySbACyxG_AEtFZ', '_$s6AppKit23NSSuggestionItemSectionVMa', '_$s6AppKit23NSSuggestionItemSectionVMn', '_$s6AppKit23NSSuggestionItemSectionVyxGSHAASHRzlMc', '_$s6AppKit23NSSuggestionItemSectionVyxGSQAASQRzlMc', + '_$s6AppKit23UpdateWindowFrameActionV10isAnimatedSbvM', '_$s6AppKit23UpdateWindowFrameActionV10isAnimatedSbvg', + '_$s6AppKit23UpdateWindowFrameActionV10isAnimatedSbvpMV', + '_$s6AppKit23UpdateWindowFrameActionV10isAnimatedSbvs', '_$s6AppKit23UpdateWindowFrameActionV22isUniquePerTransactionSbvg', + '_$s6AppKit23UpdateWindowFrameActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit23UpdateWindowFrameActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit23UpdateWindowFrameActionV5frameSo6CGRectVvM', + '_$s6AppKit23UpdateWindowFrameActionV5frameSo6CGRectVvg', + '_$s6AppKit23UpdateWindowFrameActionV5frameSo6CGRectVvpMV', + '_$s6AppKit23UpdateWindowFrameActionV5frameSo6CGRectVvs', + '_$s6AppKit23UpdateWindowFrameActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit23UpdateWindowFrameActionV6offsetSo7CGPointVvM', + '_$s6AppKit23UpdateWindowFrameActionV6offsetSo7CGPointVvg', + '_$s6AppKit23UpdateWindowFrameActionV6offsetSo7CGPointVvpMV', + '_$s6AppKit23UpdateWindowFrameActionV6offsetSo7CGPointVvs', + '_$s6AppKit23UpdateWindowFrameActionVAA03AnyF0AAMc', '_$s6AppKit23UpdateWindowFrameActionVAA03AnyF0AAWP', + '_$s6AppKit23UpdateWindowFrameActionVAA07TrustedF0AAMc', '_$s6AppKit23UpdateWindowFrameActionVAA07TrustedF0AAWP', + '_$s6AppKit23UpdateWindowFrameActionVMa', '_$s6AppKit23UpdateWindowFrameActionVMn', + '_$s6AppKit23UpdateWindowFrameActionVN', '_$s6AppKit23UpdateWindowFrameActionVSEAAMc', + '_$s6AppKit23UpdateWindowFrameActionVSeAAMc', '_$s6AppKit24NSBridgedAnimationVectorMp', + '_$s6AppKit24NSBridgedAnimationVectorP16magnitudeSquaredSdvgTj', + '_$s6AppKit24NSBridgedAnimationVectorP16magnitudeSquaredSdvgTq', + '_$s6AppKit24NSBridgedAnimationVectorP5scale2byySd_tFTj', + '_$s6AppKit24NSBridgedAnimationVectorP5scale2byySd_tFTq', + '_$s6AppKit24NSBridgedAnimationVectorPs18AdditiveArithmeticTb', + '_$s6AppKit24NSBridgedAnimationVectorTL', '_$s6AppKit24NSSuggestionItemResponseV12itemSectionsACyxGSayAA0cD7SectionVyxGG_tcfC', '_$s6AppKit24NSSuggestionItemResponseV12itemSectionsSayAA0cD7SectionVyxGGvM', '_$s6AppKit24NSSuggestionItemResponseV12itemSectionsSayAA0cD7SectionVyxGGvg', '_$s6AppKit24NSSuggestionItemResponseV12itemSectionsSayAA0cD7SectionVyxGGvpMV', @@ -2866,7 +3586,7 @@ exports: '_$s6AppKit24NSSuggestionItemResponseV18preferredHighlightAC0G0Oyx_Gvg', '_$s6AppKit24NSSuggestionItemResponseV18preferredHighlightAC0G0Oyx_GvpMV', '_$s6AppKit24NSSuggestionItemResponseV18preferredHighlightAC0G0Oyx_Gvs', - '_$s6AppKit24NSSuggestionItemResponseV5PhaseO12intermediaryyAEyx_GAGmlFWC', + '_$s6AppKit24NSSuggestionItemResponseV5PhaseO12intermediateyAEyx_GAGmlFWC', '_$s6AppKit24NSSuggestionItemResponseV5PhaseO2eeoiySbAEyx_G_AGtFZ', '_$s6AppKit24NSSuggestionItemResponseV5PhaseO4hash4intoys6HasherVz_tF', '_$s6AppKit24NSSuggestionItemResponseV5PhaseO5finalyAEyx_GAGmlFWC', @@ -2875,6 +3595,7 @@ exports: '_$s6AppKit24NSSuggestionItemResponseV5PhaseOMa', '_$s6AppKit24NSSuggestionItemResponseV5PhaseOMn', '_$s6AppKit24NSSuggestionItemResponseV5PhaseOyx_GSHAAMc', '_$s6AppKit24NSSuggestionItemResponseV5PhaseOyx_GSQAAMc', + '_$s6AppKit24NSSuggestionItemResponseV5itemsACyxGSayAA0cD0VyxGG_tcfC', '_$s6AppKit24NSSuggestionItemResponseV5phaseAC5PhaseOyx_GvM', '_$s6AppKit24NSSuggestionItemResponseV5phaseAC5PhaseOyx_Gvg', '_$s6AppKit24NSSuggestionItemResponseV5phaseAC5PhaseOyx_GvpMV', @@ -2888,6 +3609,10 @@ exports: '_$s6AppKit24NSSuggestionItemResponseV9HighlightOMa', '_$s6AppKit24NSSuggestionItemResponseV9HighlightOMn', '_$s6AppKit24NSSuggestionItemResponseV9HighlightOyx_GSHAAMc', '_$s6AppKit24NSSuggestionItemResponseV9HighlightOyx_GSQAAMc', + '_$s6AppKit24NSSuggestionItemResponseV9textRangeSo8_NSRangeVSgvM', + '_$s6AppKit24NSSuggestionItemResponseV9textRangeSo8_NSRangeVSgvg', + '_$s6AppKit24NSSuggestionItemResponseV9textRangeSo8_NSRangeVSgvpMV', + '_$s6AppKit24NSSuggestionItemResponseV9textRangeSo8_NSRangeVSgvs', '_$s6AppKit24NSSuggestionItemResponseVAASHRzlE4hash4intoys6HasherVz_tF', '_$s6AppKit24NSSuggestionItemResponseVAASHRzlE9hashValueSivg', '_$s6AppKit24NSSuggestionItemResponseVAASHRzlE9hashValueSivpMV', @@ -2896,19 +3621,221 @@ exports: '_$s6AppKit24NSSuggestionItemResponseVMn', '_$s6AppKit24NSSuggestionItemResponseVyACyxGSayAA0cD0VyxGGcfC', '_$s6AppKit24NSSuggestionItemResponseVyACyxGSayAA0cD7SectionVyxGGcfC', '_$s6AppKit24NSSuggestionItemResponseVyxGSHAASHRzlMc', '_$s6AppKit24NSSuggestionItemResponseVyxGSQAASQRzlMc', + '_$s6AppKit24RemoteAccessibilityTokenV10identifierxvg', '_$s6AppKit24RemoteAccessibilityTokenV10identifierxvpMV', + '_$s6AppKit24RemoteAccessibilityTokenV16remoteIdentifierAA0cD7ManagerV07ElementG0Vvg', + '_$s6AppKit24RemoteAccessibilityTokenV16remoteIdentifierAA0cD7ManagerV07ElementG0VvpMV', + '_$s6AppKit24RemoteAccessibilityTokenV20accessibilityElement8hostedBySo8NSObjectCSgs5Int32V_tF', + '_$s6AppKit24RemoteAccessibilityTokenV4fromACyxGs7Decoder_p_tKcfC', + '_$s6AppKit24RemoteAccessibilityTokenV6encode2toys7Encoder_p_tKF', + '_$s6AppKit24RemoteAccessibilityTokenV9attributeSo28NSAccessibilityAttributeNameavg', + '_$s6AppKit24RemoteAccessibilityTokenV9attributeSo28NSAccessibilityAttributeNameavpMV', + '_$s6AppKit24RemoteAccessibilityTokenVMa', '_$s6AppKit24RemoteAccessibilityTokenVMn', + '_$s6AppKit24RemoteAccessibilityTokenV_9presenter10identifier9attributeACyxGSo8NSObjectC_s5Int32VxSo28NSAccessibilityAttributeNameatcfC', + '_$s6AppKit24RemoteAccessibilityTokenVyxGSEAAMc', '_$s6AppKit24RemoteAccessibilityTokenVyxGSeAAMc', + '_$s6AppKit24UnbridgedMenuBarSettingsC03perdeF0SaySDySSypGGvg', + '_$s6AppKit24UnbridgedMenuBarSettingsC03perdeF0SaySDySSypGGvpMV', + '_$s6AppKit24UnbridgedMenuBarSettingsC06globalF0SDySSypGvg', + '_$s6AppKit24UnbridgedMenuBarSettingsC06globalF0SDySSypGvpMV', + '_$s6AppKit24UnbridgedMenuBarSettingsC16applicationTitleSSvg', + '_$s6AppKit24UnbridgedMenuBarSettingsC16applicationTitleSSvpMV', + '_$s6AppKit24UnbridgedMenuBarSettingsC20supportsSecureCodingSbvgZ', + '_$s6AppKit24UnbridgedMenuBarSettingsC20supportsSecureCodingSbvpZMV', + '_$s6AppKit24UnbridgedMenuBarSettingsC5coderACSo7NSCoderC_tcfC', + '_$s6AppKit24UnbridgedMenuBarSettingsC5coderACSo7NSCoderC_tcfCTj', + '_$s6AppKit24UnbridgedMenuBarSettingsC5coderACSo7NSCoderC_tcfCTq', + '_$s6AppKit24UnbridgedMenuBarSettingsC5coderACSo7NSCoderC_tcfc', + '_$s6AppKit24UnbridgedMenuBarSettingsC6encode4withySo7NSCoderC_tF', + '_$s6AppKit24UnbridgedMenuBarSettingsCACycfC', '_$s6AppKit24UnbridgedMenuBarSettingsCACycfc', + '_$s6AppKit24UnbridgedMenuBarSettingsCMa', '_$s6AppKit24UnbridgedMenuBarSettingsCMn', + '_$s6AppKit24UnbridgedMenuBarSettingsCMo', '_$s6AppKit24UnbridgedMenuBarSettingsCMu', + '_$s6AppKit24UnbridgedMenuBarSettingsCN', '_$s6AppKit24UnbridgedMenuBarSettingsCfD', + '_$s6AppKit25HostedMenuItemFrameChangeV04menuE010Foundation4UUIDVvg', + '_$s6AppKit25HostedMenuItemFrameChangeV04menuE010Foundation4UUIDVvpMV', + '_$s6AppKit25HostedMenuItemFrameChangeV06screenF0So6CGRectVvg', + '_$s6AppKit25HostedMenuItemFrameChangeV06screenF0So6CGRectVvpMV', + '_$s6AppKit25HostedMenuItemFrameChangeVMa', '_$s6AppKit25HostedMenuItemFrameChangeVMn', + '_$s6AppKit25HostedMenuItemFrameChangeVN', '_$s6AppKit25NSApplicationIntelligenceC15collectFragment9collectory21UIIntelligenceSupport0dF9CollectorC_tFTj', + '_$s6AppKit25NSApplicationIntelligenceC15collectFragment9collectory21UIIntelligenceSupport0dF9CollectorC_tFTq', + '_$s6AppKit25NSApplicationIntelligenceC21UIIntelligenceSupport0D17ElementCollectingAAMc', + '_$s6AppKit25NSApplicationIntelligenceC25collectApplicationElementy21UIIntelligenceSupport0dG0VAE0D17CollectionContext_pFTj', + '_$s6AppKit25NSApplicationIntelligenceC25collectApplicationElementy21UIIntelligenceSupport0dG0VAE0D17CollectionContext_pFTq', + '_$s6AppKit25NSApplicationIntelligenceC6sharedACvgZ', '_$s6AppKit25NSApplicationIntelligenceC6sharedACvpZMV', + '_$s6AppKit25NSApplicationIntelligenceCMa', '_$s6AppKit25NSApplicationIntelligenceCMm', + '_$s6AppKit25NSApplicationIntelligenceCMn', '_$s6AppKit25NSApplicationIntelligenceCMo', + '_$s6AppKit25NSApplicationIntelligenceCMu', '_$s6AppKit25NSApplicationIntelligenceCN', + '_$s6AppKit25NSApplicationIntelligenceCfD', '_$s6AppKit25NSApplicationIntelligenceCfd', + '_$s6AppKit25NSBridgedAnimationContextVMa', '_$s6AppKit25NSBridgedAnimationContextVMn', + '_$s6AppKit25NSBridgedAnimationContextVy5ValueQyd__qd__mcAA0cdE3KeyRd__luiM', + '_$s6AppKit25NSBridgedAnimationContextVy5ValueQyd__qd__mcAA0cdE3KeyRd__luig', + '_$s6AppKit25NSBridgedAnimationContextVy5ValueQyd__qd__mcAA0cdE3KeyRd__luis', '_$s6AppKit25NSTextSuggestionsDelegateMp', '_$s6AppKit25NSTextSuggestionsDelegateP9textField_014provideUpdatedD0ySo0cG0C_yAA24NSSuggestionItemResponseVy010SuggestionK4TypeQzGctFTj', '_$s6AppKit25NSTextSuggestionsDelegateP9textField_014provideUpdatedD0ySo0cG0C_yAA24NSSuggestionItemResponseVy010SuggestionK4TypeQzGctFTq', - '_$s6AppKit25NSTextSuggestionsDelegateP9textField_0F27CompletionForSuggestionItemSSSgSo0cG0C_AA012NSSuggestionK0Vy0jK4TypeQzGtFTj', - '_$s6AppKit25NSTextSuggestionsDelegateP9textField_0F27CompletionForSuggestionItemSSSgSo0cG0C_AA012NSSuggestionK0Vy0jK4TypeQzGtFTq', - '_$s6AppKit25NSTextSuggestionsDelegateP9textField_23didSelectSuggestionItemySo0cG0C_AA012NSSuggestionK0Vy0jK4TypeQzGtFTj', - '_$s6AppKit25NSTextSuggestionsDelegateP9textField_23didSelectSuggestionItemySo0cG0C_AA012NSSuggestionK0Vy0jK4TypeQzGtFTq', + '_$s6AppKit25NSTextSuggestionsDelegateP9textField_0F13CompletionForSSSgSo0cG0C_AA16NSSuggestionItemVy010SuggestionK4TypeQzGtFTj', + '_$s6AppKit25NSTextSuggestionsDelegateP9textField_0F13CompletionForSSSgSo0cG0C_AA16NSSuggestionItemVy010SuggestionK4TypeQzGtFTq', + '_$s6AppKit25NSTextSuggestionsDelegateP9textField_9didSelectySo0cG0C_AA16NSSuggestionItemVy010SuggestionK4TypeQzGtFTj', + '_$s6AppKit25NSTextSuggestionsDelegateP9textField_9didSelectySo0cG0C_AA16NSSuggestionItemVy010SuggestionK4TypeQzGtFTq', '_$s6AppKit25NSTextSuggestionsDelegatePAAE6filteryAaB_p18SuggestionItemTypeQzAFRS_XPSayAA012NSSuggestionH7SectionVyAFGGAJcF', '_$s6AppKit25NSTextSuggestionsDelegatePAAE6prefixyAaB_p18SuggestionItemTypeQzAFRS_XPSiF', - '_$s6AppKit25NSTextSuggestionsDelegatePAAE9textField_0F27CompletionForSuggestionItemSSSgSo0cG0C_AA012NSSuggestionK0Vy0jK4TypeQzGtF', - '_$s6AppKit25NSTextSuggestionsDelegatePAAE9textField_23didSelectSuggestionItemySo0cG0C_AA012NSSuggestionK0Vy0jK4TypeQzGtF', + '_$s6AppKit25NSTextSuggestionsDelegatePAAE9textField_0F13CompletionForSSSgSo0cG0C_AA16NSSuggestionItemVy010SuggestionK4TypeQzGtF', + '_$s6AppKit25NSTextSuggestionsDelegatePAAE9textField_9didSelectySo0cG0C_AA16NSSuggestionItemVy010SuggestionK4TypeQzGtF', '_$s6AppKit25NSTextSuggestionsDelegatePAASH18SuggestionItemTypeRpzrlE9appendingyAaB_pA2ERS_XPAaB_pA2ERS_XPF', '_$s6AppKit25NSTextSuggestionsDelegatePAASH18SuggestionItemTypeRpzrlE9appendingyAaB_ps11AnyHashableVAERS_XPAaB_pqd__AERS_XPSHRd__lF', - '_$s6AppKit25NSTextSuggestionsDelegateTL', '_$s6AppKit28NSDiffableDataSourceSnapshotV11appendItems_9toSectionySayq_G_xSgtF', + '_$s6AppKit25NSTextSuggestionsDelegatePAASH18SuggestionItemTypeRpzrlE9appendingyQrqd_0_SHRd__ADQyd_0_Rsd__AaBRd_0_r0_lF', + '_$s6AppKit25NSTextSuggestionsDelegatePAASH18SuggestionItemTypeRpzrlE9appendingyQrqd_0_SHRd__ADQyd_0_Rsd__AaBRd_0_r0_lFQOMQ', + '_$s6AppKit25NSTextSuggestionsDelegatePAASH18SuggestionItemTypeRpzrlE9appendingyQrqd__AaBRd__ADQyd__AERSlF', + '_$s6AppKit25NSTextSuggestionsDelegatePAASH18SuggestionItemTypeRpzrlE9appendingyQrqd__AaBRd__ADQyd__AERSlFQOMQ', + '_$s6AppKit25NSTextSuggestionsDelegateTL', '_$s6AppKit25PasteRelatednessEquatableMp', + '_$s6AppKit25PasteRelatednessEquatableP010isEqualForcD0ySbxSgFTj', + '_$s6AppKit25PasteRelatednessEquatableP010isEqualForcD0ySbxSgFTq', + '_$s6AppKit25PasteRelatednessEquatableTL', '_$s6AppKit25SendPasteboardTokenActionV22isUniquePerTransactionSbvg', + '_$s6AppKit25SendPasteboardTokenActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit25SendPasteboardTokenActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit25SendPasteboardTokenActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit25SendPasteboardTokenActionVAA03AnyF0AAMc', '_$s6AppKit25SendPasteboardTokenActionVAA03AnyF0AAWP', + '_$s6AppKit25SendPasteboardTokenActionVAA07TrustedF0AAMc', + '_$s6AppKit25SendPasteboardTokenActionVAA07TrustedF0AAWP', + '_$s6AppKit25SendPasteboardTokenActionVMa', '_$s6AppKit25SendPasteboardTokenActionVMn', + '_$s6AppKit25SendPasteboardTokenActionVN', '_$s6AppKit25SendPasteboardTokenActionVSEAAMc', + '_$s6AppKit25SendPasteboardTokenActionVSeAAMc', '_$s6AppKit26DidUpdateWindowFrameActionV11focusedItemSo6CGRectVvM', + '_$s6AppKit26DidUpdateWindowFrameActionV11focusedItemSo6CGRectVvg', + '_$s6AppKit26DidUpdateWindowFrameActionV11focusedItemSo6CGRectVvpMV', + '_$s6AppKit26DidUpdateWindowFrameActionV11focusedItemSo6CGRectVvs', + '_$s6AppKit26DidUpdateWindowFrameActionV22isUniquePerTransactionSbvg', + '_$s6AppKit26DidUpdateWindowFrameActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit26DidUpdateWindowFrameActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit26DidUpdateWindowFrameActionV5frameSo6CGRectVvM', + '_$s6AppKit26DidUpdateWindowFrameActionV5frameSo6CGRectVvg', + '_$s6AppKit26DidUpdateWindowFrameActionV5frameSo6CGRectVvpMV', + '_$s6AppKit26DidUpdateWindowFrameActionV5frameSo6CGRectVvs', + '_$s6AppKit26DidUpdateWindowFrameActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit26DidUpdateWindowFrameActionVAA03AnyG0AAMc', '_$s6AppKit26DidUpdateWindowFrameActionVAA03AnyG0AAWP', + '_$s6AppKit26DidUpdateWindowFrameActionVAA07TrustedG0AAMc', + '_$s6AppKit26DidUpdateWindowFrameActionVAA07TrustedG0AAWP', + '_$s6AppKit26DidUpdateWindowFrameActionVMa', '_$s6AppKit26DidUpdateWindowFrameActionVMn', + '_$s6AppKit26DidUpdateWindowFrameActionVN', '_$s6AppKit26DidUpdateWindowFrameActionVSEAAMc', + '_$s6AppKit26DidUpdateWindowFrameActionVSeAAMc', '_$s6AppKit26HighlightMenuBarItemActionV18allowDisabledItemsSbvg', + '_$s6AppKit26HighlightMenuBarItemActionV18allowDisabledItemsSbvpMV', + '_$s6AppKit26HighlightMenuBarItemActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit26HighlightMenuBarItemActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit26HighlightMenuBarItemActionV7locatorAA0dF0C7LocatorVvg', + '_$s6AppKit26HighlightMenuBarItemActionV7locatorAA0dF0C7LocatorVvpMV', + '_$s6AppKit26HighlightMenuBarItemActionVAA03AnyG0AAMc', '_$s6AppKit26HighlightMenuBarItemActionVAA03AnyG0AAWP', + '_$s6AppKit26HighlightMenuBarItemActionVAA09AwaitableG0AAMc', + '_$s6AppKit26HighlightMenuBarItemActionVAA09AwaitableG0AAWP', + '_$s6AppKit26HighlightMenuBarItemActionVMa', '_$s6AppKit26HighlightMenuBarItemActionVMn', + '_$s6AppKit26HighlightMenuBarItemActionVN', '_$s6AppKit26HighlightMenuBarItemActionVSEAAMc', + '_$s6AppKit26HighlightMenuBarItemActionVSeAAMc', '_$s6AppKit26RemoteAccessibilityManagerV14removeElements10identifierys11AnyHashableV_tF', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierV10identifier9attributeAEs11AnyHashableV_So28NSAccessibilityAttributeNameatcfC', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierV2eeoiySbAE_AEtFZ', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierV4hash4intoys6HasherVz_tF', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierV4menu9attributeAESo6NSMenuC_So28NSAccessibilityAttributeNameatcfC', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierV9hashValueSivg', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierV9hashValueSivpMV', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierVMa', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierVMn', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierVN', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierVSHAAMc', + '_$s6AppKit26RemoteAccessibilityManagerV17ElementIdentifierVSQAAMc', + '_$s6AppKit26RemoteAccessibilityManagerVACycfC', '_$s6AppKit26RemoteAccessibilityManagerVMa', + '_$s6AppKit26RemoteAccessibilityManagerVMn', '_$s6AppKit26RemoteAccessibilityManagerVN', + '_$s6AppKit26RemoteAccessibilityManagerVySo8NSObjectCSgAC17ElementIdentifierVciM', + '_$s6AppKit26RemoteAccessibilityManagerVySo8NSObjectCSgAC17ElementIdentifierVcig', + '_$s6AppKit26RemoteAccessibilityManagerVySo8NSObjectCSgAC17ElementIdentifierVcipMV', + '_$s6AppKit26RemoteAccessibilityManagerVySo8NSObjectCSgAC17ElementIdentifierVcis', + '_$s6AppKit26UntrustedApplicationActionO011emptyClientE0yA2CmFWC', + '_$s6AppKit26UntrustedApplicationActionO11endTrackingyAcA4MenuC_AA5EventVSgtcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO11setMainMenuyAcA0H0C_SbtcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO010associatedeG0AA03AnyE0_pXpvg', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO010associatedeG0AA03AnyE0_pXpvpMV', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO011emptyClientE0yA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO11endTrackingyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO11setMainMenuyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO12closeSubmenuyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO13beginTrackingyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO16updateMenuRecordyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO17updateVisibleMenuyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO21updateHighlightedItemyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO21updateMenuBarSettingsyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO22menuAccessibilityTokenyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO24performMenuKeyEquivalentyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO8rawValueAESgSi_tcfC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO8rawValueSivg', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO8rawValueSivpMV', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeO8showMenuyA2EmFWC', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeOAA0eG11ConvertibleAAMc', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeOAA0eG11ConvertibleAAWP', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeOMa', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeOMn', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeON', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeOSEAAMc', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeOSHAAMc', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeOSQAAMc', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeOSYAAMc', + '_$s6AppKit26UntrustedApplicationActionO12InternalTypeOSeAAMc', + '_$s6AppKit26UntrustedApplicationActionO12closeSubmenuyAC10Foundation4UUIDV_SbtcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO12wrappedValueAA0E3BoxVyACGSgvg', + '_$s6AppKit26UntrustedApplicationActionO12wrappedValueAA0E3BoxVyACGSgvpMV', + '_$s6AppKit26UntrustedApplicationActionO13beginTrackingyAcA4MenuC_AA0H7ContextCSgAA5EventVSgtcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO16updateMenuRecordyAcA0gH0C_AA017IncrementalUpdateE0C0J0VyAfA0g4ItemH0C_GtcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO17updateVisibleMenuyAcA0H0C_AFSgAA017IncrementalUpdateE0C0J0VyAfA0H4ItemC_GtcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO21removeHighlightedItemyAC10Foundation4UUIDVcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO21updateHighlightedItemyAC10Foundation4UUIDV_SitcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO21updateMenuBarSettingsyAcA09UnbridgedghI0CcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO22menuAccessibilityTokenyAcA06RemotegH0Vy10Foundation4UUIDVGcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO24performMenuKeyEquivalentyAcA0G4ItemC7LocatorV_SiSgAA5EventVtcACmFWC', + '_$s6AppKit26UntrustedApplicationActionO8showMenuyAcA0G0C_AA0G7ContextCSgtcACmFWC', + '_$s6AppKit26UntrustedApplicationActionOAA0E8WrappingAAMc', + '_$s6AppKit26UntrustedApplicationActionOAA0E8WrappingAAWP', + '_$s6AppKit26UntrustedApplicationActionOMa', '_$s6AppKit26UntrustedApplicationActionOMn', + '_$s6AppKit26UntrustedApplicationActionON', '_$s6AppKit27KeyframeAnimationDescriptorV15timingFunctionsSayAA22TimingFunctionProtocol_pGvg', + '_$s6AppKit27KeyframeAnimationDescriptorV15timingFunctionsSayAA22TimingFunctionProtocol_pGvpMV', + '_$s6AppKit27KeyframeAnimationDescriptorV5FrameV12timeIntervalSdvM', + '_$s6AppKit27KeyframeAnimationDescriptorV5FrameV12timeIntervalSdvg', + '_$s6AppKit27KeyframeAnimationDescriptorV5FrameV12timeIntervalSdvpMV', + '_$s6AppKit27KeyframeAnimationDescriptorV5FrameV12timeIntervalSdvs', + '_$s6AppKit27KeyframeAnimationDescriptorV5FrameV5valuexvM', + '_$s6AppKit27KeyframeAnimationDescriptorV5FrameV5valuexvg', + '_$s6AppKit27KeyframeAnimationDescriptorV5FrameV5valuexvpMV', + '_$s6AppKit27KeyframeAnimationDescriptorV5FrameV5valuexvs', + '_$s6AppKit27KeyframeAnimationDescriptorV5FrameVMa', '_$s6AppKit27KeyframeAnimationDescriptorV5FrameVMn', + '_$s6AppKit27KeyframeAnimationDescriptorV5frame12timeIntervalxSd_tF', + '_$s6AppKit27KeyframeAnimationDescriptorV8durationSdvg', '_$s6AppKit27KeyframeAnimationDescriptorV8durationSdvpMV', + '_$s6AppKit27KeyframeAnimationDescriptorV9keyframes15timingFunctionsACyxGSayAC5FrameVyx_GG_SayAA22TimingFunctionProtocol_pGtcfC', + '_$s6AppKit27KeyframeAnimationDescriptorV9keyframesSayAC5FrameVyx_GGvg', + '_$s6AppKit27KeyframeAnimationDescriptorV9keyframesSayAC5FrameVyx_GGvpMV', + '_$s6AppKit27KeyframeAnimationDescriptorVMa', '_$s6AppKit27KeyframeAnimationDescriptorVMn', + '_$s6AppKit27UpdateHighlightedItemActionV21transactionIdentifiers11AnyHashableVSgvg', + '_$s6AppKit27UpdateHighlightedItemActionV21transactionIdentifiers11AnyHashableVSgvpMV', + '_$s6AppKit27UpdateHighlightedItemActionV22isUniquePerTransactionSbvg', + '_$s6AppKit27UpdateHighlightedItemActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit27UpdateHighlightedItemActionV25didHighlightUsingKeyboardSbvg', + '_$s6AppKit27UpdateHighlightedItemActionV25didHighlightUsingKeyboardSbvpMV', + '_$s6AppKit27UpdateHighlightedItemActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit27UpdateHighlightedItemActionV5indexSiSgvg', '_$s6AppKit27UpdateHighlightedItemActionV5indexSiSgvpMV', + '_$s6AppKit27UpdateHighlightedItemActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit27UpdateHighlightedItemActionV6menuID10Foundation4UUIDVvg', + '_$s6AppKit27UpdateHighlightedItemActionV6menuID10Foundation4UUIDVvpMV', + '_$s6AppKit27UpdateHighlightedItemActionVAA03AnyF0AAMc', '_$s6AppKit27UpdateHighlightedItemActionVAA03AnyF0AAWP', + '_$s6AppKit27UpdateHighlightedItemActionVAA07TrustedF0AAMc', + '_$s6AppKit27UpdateHighlightedItemActionVAA07TrustedF0AAWP', + '_$s6AppKit27UpdateHighlightedItemActionVMa', '_$s6AppKit27UpdateHighlightedItemActionVMn', + '_$s6AppKit27UpdateHighlightedItemActionVN', '_$s6AppKit27UpdateHighlightedItemActionVSEAAMc', + '_$s6AppKit27UpdateHighlightedItemActionVSeAAMc', '_$s6AppKit28MenuAccessibilityTokenActionV22isUniquePerTransactionSbvg', + '_$s6AppKit28MenuAccessibilityTokenActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit28MenuAccessibilityTokenActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit28MenuAccessibilityTokenActionV5tokenAA06RemotedE0Vy10Foundation4UUIDVGvg', + '_$s6AppKit28MenuAccessibilityTokenActionV5tokenAA06RemotedE0Vy10Foundation4UUIDVGvpMV', + '_$s6AppKit28MenuAccessibilityTokenActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit28MenuAccessibilityTokenActionVAA03AnyF0AAMc', + '_$s6AppKit28MenuAccessibilityTokenActionVAA03AnyF0AAWP', + '_$s6AppKit28MenuAccessibilityTokenActionVAA07TrustedF0AAMc', + '_$s6AppKit28MenuAccessibilityTokenActionVAA07TrustedF0AAWP', + '_$s6AppKit28MenuAccessibilityTokenActionVMa', '_$s6AppKit28MenuAccessibilityTokenActionVMn', + '_$s6AppKit28MenuAccessibilityTokenActionVN', '_$s6AppKit28MenuAccessibilityTokenActionVSEAAMc', + '_$s6AppKit28MenuAccessibilityTokenActionVSeAAMc', '_$s6AppKit28NSBridgedAnimationContextKeyMp', + '_$s6AppKit28NSBridgedAnimationContextKeyP12defaultValue0H0QzvgZTj', + '_$s6AppKit28NSBridgedAnimationContextKeyP12defaultValue0H0QzvgZTq', + '_$s6AppKit28NSBridgedAnimationContextKeyTL', '_$s6AppKit28NSDiffableDataSourceSnapshotV11appendItems_9toSectionySayq_G_xSgtF', '_$s6AppKit28NSDiffableDataSourceSnapshotV11deleteItemsyySayq_GF', '_$s6AppKit28NSDiffableDataSourceSnapshotV11indexOfItemySiSgq_F', '_$s6AppKit28NSDiffableDataSourceSnapshotV11insertItems_10beforeItemySayq_G_q_tF', @@ -2994,11 +3921,174 @@ exports: '_$s6AppKit29NSViewControllerPreviewSourceV15contentCategory21DeveloperToolsSupport0ef7ContentH0VvpMV', '_$s6AppKit29NSViewControllerPreviewSourceV21DeveloperToolsSupport0eF0AAMc', '_$s6AppKit29NSViewControllerPreviewSourceVMa', '_$s6AppKit29NSViewControllerPreviewSourceVMn', - '_$s6AppKit29NSViewControllerPreviewSourceVN', '_$s6AppKit32CustomConfirmationDialogSettingsCACycfC', + '_$s6AppKit29NSViewControllerPreviewSourceVN', '_$s6AppKit29SetProcessForPasteAlertActionV05otherD0So13audit_token_tavg', + '_$s6AppKit29SetProcessForPasteAlertActionV05otherD0So13audit_token_tavpMV', + '_$s6AppKit29SetProcessForPasteAlertActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit29SetProcessForPasteAlertActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit29SetProcessForPasteAlertActionVAA03AnyH0AAMc', + '_$s6AppKit29SetProcessForPasteAlertActionVAA03AnyH0AAWP', + '_$s6AppKit29SetProcessForPasteAlertActionVAA09AwaitableH0AAMc', + '_$s6AppKit29SetProcessForPasteAlertActionVAA09AwaitableH0AAWP', + '_$s6AppKit29SetProcessForPasteAlertActionVMa', '_$s6AppKit29SetProcessForPasteAlertActionVMn', + '_$s6AppKit29SetProcessForPasteAlertActionVN', '_$s6AppKit29SetProcessForPasteAlertActionVSEAAMc', + '_$s6AppKit29SetProcessForPasteAlertActionVSeAAMc', '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorO11descriptionSSvg', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorO11descriptionSSvpMV', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorO13notExecutableyA2EmFWC', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorO2eeoiySbAE_AEtFZ', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorO4hash4intoys6HasherVz_tF', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorO8notFoundyA2EmFWC', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorO9hashValueSivg', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorO9hashValueSivpMV', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorOMa', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorOMn', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorON', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorOSHAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorOSQAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorOs0G0AAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D14ExecutionErrorOs23CustomStringConvertibleAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsV17cachedIfAvailableAEvgZ', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsV17cachedIfAvailableAEvpZMV', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsV8rawValueAESi_tcfC', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsV8rawValueSivg', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsV8rawValueSivpMV', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsVMa', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsVMn', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsVN', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsVSQAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsVSYAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsVs10SetAlgebraAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsVs25ExpressibleByArrayLiteralAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC0D15FetchingOptionsVs9OptionSetAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC13fetchCommands7optionsSay21UIIntelligenceSupport012IntelligenceD0VGAF0K17CollectionRequestV0D7OptionsV_tF', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextV2eeoiySbAE_AEtFZ', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextV4fromAEs7Decoder_p_tKcfC', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextV4hash4intoys6HasherVz_tF', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextV6encode2toys7Encoder_p_tKF', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextV9hashValueSivg', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextV9hashValueSivpMV', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextVMa', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextVMn', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextVN', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextVSEAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextVSHAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextVSQAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC20RunCompletionContextVSeAAMc', + '_$s6AppKit29_NSIntelligenceCommandManagerC23fetchExecutableCommands7optionsSay21UIIntelligenceSupport012IntelligenceD0VGAC0D15FetchingOptionsV_tF', + '_$s6AppKit29_NSIntelligenceCommandManagerC3runyAC20RunCompletionContextV21UIIntelligenceSupport012IntelligenceD0VYaKF', + '_$s6AppKit29_NSIntelligenceCommandManagerC3runyAC20RunCompletionContextV21UIIntelligenceSupport012IntelligenceD0VYaKFTu', + '_$s6AppKit29_NSIntelligenceCommandManagerC6sharedACvgZ', + '_$s6AppKit29_NSIntelligenceCommandManagerC6sharedACvpZMV', + '_$s6AppKit29_NSIntelligenceCommandManagerCMa', '_$s6AppKit29_NSIntelligenceCommandManagerCMm', + '_$s6AppKit29_NSIntelligenceCommandManagerCMn', '_$s6AppKit29_NSIntelligenceCommandManagerCMo', + '_$s6AppKit29_NSIntelligenceCommandManagerCMu', '_$s6AppKit29_NSIntelligenceCommandManagerCN', + '_$s6AppKit29_NSIntelligenceCommandManagerCfD', '_$s6AppKit29_NSIntelligenceCommandManagerCfd', + '_$s6AppKit30PerformMenuKeyEquivalentActionV12menuBarIndexSiSgvM', + '_$s6AppKit30PerformMenuKeyEquivalentActionV12menuBarIndexSiSgvg', + '_$s6AppKit30PerformMenuKeyEquivalentActionV12menuBarIndexSiSgvpMV', + '_$s6AppKit30PerformMenuKeyEquivalentActionV12menuBarIndexSiSgvs', + '_$s6AppKit30PerformMenuKeyEquivalentActionV21transactionIdentifiers11AnyHashableVSgvg', + '_$s6AppKit30PerformMenuKeyEquivalentActionV21transactionIdentifiers11AnyHashableVSgvpMV', + '_$s6AppKit30PerformMenuKeyEquivalentActionV22isUniquePerTransactionSbvg', + '_$s6AppKit30PerformMenuKeyEquivalentActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit30PerformMenuKeyEquivalentActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit30PerformMenuKeyEquivalentActionV5eventAA5EventVvM', + '_$s6AppKit30PerformMenuKeyEquivalentActionV5eventAA5EventVvg', + '_$s6AppKit30PerformMenuKeyEquivalentActionV5eventAA5EventVvpMV', + '_$s6AppKit30PerformMenuKeyEquivalentActionV5eventAA5EventVvs', + '_$s6AppKit30PerformMenuKeyEquivalentActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit30PerformMenuKeyEquivalentActionV7locatorAA0D4ItemC7LocatorVvM', + '_$s6AppKit30PerformMenuKeyEquivalentActionV7locatorAA0D4ItemC7LocatorVvg', + '_$s6AppKit30PerformMenuKeyEquivalentActionV7locatorAA0D4ItemC7LocatorVvpMV', + '_$s6AppKit30PerformMenuKeyEquivalentActionV7locatorAA0D4ItemC7LocatorVvs', + '_$s6AppKit30PerformMenuKeyEquivalentActionVAA03AnyG0AAMc', + '_$s6AppKit30PerformMenuKeyEquivalentActionVAA03AnyG0AAWP', + '_$s6AppKit30PerformMenuKeyEquivalentActionVAA07TrustedG0AAMc', + '_$s6AppKit30PerformMenuKeyEquivalentActionVAA07TrustedG0AAWP', + '_$s6AppKit30PerformMenuKeyEquivalentActionVMa', '_$s6AppKit30PerformMenuKeyEquivalentActionVMn', + '_$s6AppKit30PerformMenuKeyEquivalentActionVN', '_$s6AppKit30PerformMenuKeyEquivalentActionVSEAAMc', + '_$s6AppKit30PerformMenuKeyEquivalentActionVSeAAMc', '_$s6AppKit30WindowServerNotificationCenterV03RawE0V4data10Foundation4DataVvg', + '_$s6AppKit30WindowServerNotificationCenterV03RawE0V4data10Foundation4DataVvpMV', + '_$s6AppKit30WindowServerNotificationCenterV03RawE0V4typeAC0E4TypeOvg', + '_$s6AppKit30WindowServerNotificationCenterV03RawE0V4typeAC0E4TypeOvpMV', + '_$s6AppKit30WindowServerNotificationCenterV03RawE0VMa', '_$s6AppKit30WindowServerNotificationCenterV03RawE0VMn', + '_$s6AppKit30WindowServerNotificationCenterV03RawE0VN', '_$s6AppKit30WindowServerNotificationCenterV0E0V4dataxvM', + '_$s6AppKit30WindowServerNotificationCenterV0E0V4dataxvg', + '_$s6AppKit30WindowServerNotificationCenterV0E0V4dataxvpMV', + '_$s6AppKit30WindowServerNotificationCenterV0E0V4dataxvs', + '_$s6AppKit30WindowServerNotificationCenterV0E0V4typeAC0E4TypeOvg', + '_$s6AppKit30WindowServerNotificationCenterV0E0V4typeAC0E4TypeOvpMV', + '_$s6AppKit30WindowServerNotificationCenterV0E0VMa', '_$s6AppKit30WindowServerNotificationCenterV0E0VMn', + '_$s6AppKit30WindowServerNotificationCenterV0E4TypeO21didBecomeUnresponsiveyA2EmFWC', + '_$s6AppKit30WindowServerNotificationCenterV0E4TypeO21didResignUnresponsiveyA2EmFWC', + '_$s6AppKit30WindowServerNotificationCenterV0E4TypeO7invalidyA2EmFWC', + '_$s6AppKit30WindowServerNotificationCenterV0E4TypeO8rawValueAESgs6UInt32V_tcfC', + '_$s6AppKit30WindowServerNotificationCenterV0E4TypeO8rawValues6UInt32Vvg', + '_$s6AppKit30WindowServerNotificationCenterV0E4TypeO8rawValues6UInt32VvpMV', + '_$s6AppKit30WindowServerNotificationCenterV0E4TypeOMa', '_$s6AppKit30WindowServerNotificationCenterV0E4TypeOMn', + '_$s6AppKit30WindowServerNotificationCenterV0E4TypeON', '_$s6AppKit30WindowServerNotificationCenterV0E4TypeOSHAAMc', + '_$s6AppKit30WindowServerNotificationCenterV0E4TypeOSQAAMc', + '_$s6AppKit30WindowServerNotificationCenterV0E4TypeOSYAAMc', + '_$s6AppKit30WindowServerNotificationCenterV11addObserver_4type5usingyxm_AC0E4TypeOyAC0E0Vy_xGctlF', + '_$s6AppKit30WindowServerNotificationCenterV14removeObserver4typeyAC0E4TypeO_tF', + '_$s6AppKit30WindowServerNotificationCenterVACycfC', '_$s6AppKit30WindowServerNotificationCenterVMa', + '_$s6AppKit30WindowServerNotificationCenterVMn', '_$s6AppKit30WindowServerNotificationCenterVN', + '_$s6AppKit31UpdateHostedMenuItemFrameActionV21transactionIdentifiers11AnyHashableVSgvg', + '_$s6AppKit31UpdateHostedMenuItemFrameActionV21transactionIdentifiers11AnyHashableVSgvpMV', + '_$s6AppKit31UpdateHostedMenuItemFrameActionV22isUniquePerTransactionSbvg', + '_$s6AppKit31UpdateHostedMenuItemFrameActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit31UpdateHostedMenuItemFrameActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit31UpdateHostedMenuItemFrameActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit31UpdateHostedMenuItemFrameActionVAA03AnyH0AAMc', + '_$s6AppKit31UpdateHostedMenuItemFrameActionVAA03AnyH0AAWP', + '_$s6AppKit31UpdateHostedMenuItemFrameActionVAA07TrustedH0AAMc', + '_$s6AppKit31UpdateHostedMenuItemFrameActionVAA07TrustedH0AAWP', + '_$s6AppKit31UpdateHostedMenuItemFrameActionVMa', '_$s6AppKit31UpdateHostedMenuItemFrameActionVMn', + '_$s6AppKit31UpdateHostedMenuItemFrameActionVN', '_$s6AppKit31UpdateHostedMenuItemFrameActionVSEAAMc', + '_$s6AppKit31UpdateHostedMenuItemFrameActionVSeAAMc', '_$s6AppKit32CustomConfirmationDialogSettingsCACycfC', '_$s6AppKit32CustomConfirmationDialogSettingsCACycfc', '_$s6AppKit32CustomConfirmationDialogSettingsCMa', '_$s6AppKit32CustomConfirmationDialogSettingsCMn', '_$s6AppKit32CustomConfirmationDialogSettingsCMo', '_$s6AppKit32CustomConfirmationDialogSettingsCMu', '_$s6AppKit32CustomConfirmationDialogSettingsCN', - '_$s6AppKit32CustomConfirmationDialogSettingsCfD', '_$s6AppKit34NSCollectionViewDiffableDataSourceC010collectionD012itemProviderACyxq_GSo0cD0C_So0cD4ItemCSgAH_10Foundation9IndexPathVq_tctcfC', + '_$s6AppKit32CustomConfirmationDialogSettingsCfD', '_$s6AppKit33CheckForPermissionOverridesActionV12otherProcessSo13audit_token_tavg', + '_$s6AppKit33CheckForPermissionOverridesActionV12otherProcessSo13audit_token_tavpMV', + '_$s6AppKit33CheckForPermissionOverridesActionV30isAttemptingProgrammaticAccessSbvg', + '_$s6AppKit33CheckForPermissionOverridesActionV30isAttemptingProgrammaticAccessSbvpMV', + '_$s6AppKit33CheckForPermissionOverridesActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit33CheckForPermissionOverridesActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit33CheckForPermissionOverridesActionVAA014AsyncAwaitableG0AAMc', + '_$s6AppKit33CheckForPermissionOverridesActionVAA014AsyncAwaitableG0AAWP', + '_$s6AppKit33CheckForPermissionOverridesActionVAA03AnyG0AAMc', + '_$s6AppKit33CheckForPermissionOverridesActionVAA03AnyG0AAWP', + '_$s6AppKit33CheckForPermissionOverridesActionVAA09AwaitableG0AAMc', + '_$s6AppKit33CheckForPermissionOverridesActionVAA09AwaitableG0AAWP', + '_$s6AppKit33CheckForPermissionOverridesActionVMa', '_$s6AppKit33CheckForPermissionOverridesActionVMn', + '_$s6AppKit33CheckForPermissionOverridesActionVN', '_$s6AppKit33CheckForPermissionOverridesActionVSEAAMc', + '_$s6AppKit33CheckForPermissionOverridesActionVSeAAMc', '_$s6AppKit33TrustedUIServiceContextMenuActionO11closeWindowyACSb_tcACmFWC', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeO010associatedgI0AA03AnyG0_pXpvg', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeO010associatedgI0AA03AnyG0_pXpvpMV', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeO11closeWindowyA2EmFWC', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeO16repositionWindowyA2EmFWC', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeO17updateWindowFrameyA2EmFWC', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeO8rawValueAESgSi_tcfC', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeO8rawValueSivg', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeO8rawValueSivpMV', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeOAA0gI11ConvertibleAAMc', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeOAA0gI11ConvertibleAAWP', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeOMa', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeOMn', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeON', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeOSEAAMc', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeOSHAAMc', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeOSQAAMc', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeOSYAAMc', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12InternalTypeOSeAAMc', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12wrappedValueAA0G3BoxVyACGSgvg', + '_$s6AppKit33TrustedUIServiceContextMenuActionO12wrappedValueAA0G3BoxVyACGSgvpMV', + '_$s6AppKit33TrustedUIServiceContextMenuActionO16repositionWindowyACSo7CGPointV_tcACmFWC', + '_$s6AppKit33TrustedUIServiceContextMenuActionO17updateWindowFrameyACSo6CGRectV_So7CGPointVSbtcACmFWC', + '_$s6AppKit33TrustedUIServiceContextMenuActionOAA0G8WrappingAAMc', + '_$s6AppKit33TrustedUIServiceContextMenuActionOAA0G8WrappingAAWP', + '_$s6AppKit33TrustedUIServiceContextMenuActionOMa', '_$s6AppKit33TrustedUIServiceContextMenuActionOMn', + '_$s6AppKit33TrustedUIServiceContextMenuActionON', '_$s6AppKit34NSCollectionViewDiffableDataSourceC010collectionD012itemProviderACyxq_GSo0cD0C_So0cD4ItemCSgAH_10Foundation9IndexPathVq_tctcfC', '_$s6AppKit34NSCollectionViewDiffableDataSourceC010collectionD012itemProviderACyxq_GSo0cD0C_So0cD4ItemCSgAH_10Foundation9IndexPathVq_tctcfCTj', '_$s6AppKit34NSCollectionViewDiffableDataSourceC010collectionD012itemProviderACyxq_GSo0cD0C_So0cD4ItemCSgAH_10Foundation9IndexPathVq_tctcfCTq', '_$s6AppKit34NSCollectionViewDiffableDataSourceC010collectionD012itemProviderACyxq_GSo0cD0C_So0cD4ItemCSgAH_10Foundation9IndexPathVq_tctcfc', @@ -3031,21 +4121,291 @@ exports: '_$s6AppKit34NSCollectionViewDiffableDataSourceCACyxq_Gycfc', '_$s6AppKit34NSCollectionViewDiffableDataSourceCMa', '_$s6AppKit34NSCollectionViewDiffableDataSourceCMn', '_$s6AppKit34NSCollectionViewDiffableDataSourceCMo', '_$s6AppKit34NSCollectionViewDiffableDataSourceCMu', - '_$s6AppKit34NSCollectionViewDiffableDataSourceCfD', '_$s6AppKit9NSRectSetCACycfC', - '_$s6AppKit9NSRectSetCACycfc', '_$s6AppKit9NSRectSetCMa', - '_$s6AppKit9NSRectSetCMn', '_$s6AppKit9NSRectSetCMo', '_$s6AppKit9NSRectSetCN', - '_$s6AppKit9NSRectSetCfD', '_$sST6AppKitE13adjacentPairsAA08AdjacentD8SequenceVyxGyF', - '_$sST6AppKitE8isSorted2byS2b7ElementQz_AEtKXE_tKF', '_$sST6AppKitSL7ElementRpzrlE8isSortedSbyF', + '_$s6AppKit34NSCollectionViewDiffableDataSourceCfD', '_$s6AppKit34_NSIntelligenceUIWashAnimationViewC5coderACSgSo7NSCoderC_tcfC', + '_$s6AppKit34_NSIntelligenceUIWashAnimationViewC5coderACSgSo7NSCoderC_tcfc', + '_$s6AppKit34_NSIntelligenceUIWashAnimationViewC5frameACSo6CGRectV_tcfC', + '_$s6AppKit34_NSIntelligenceUIWashAnimationViewC5frameACSo6CGRectV_tcfc', + '_$s6AppKit34_NSIntelligenceUIWashAnimationViewC7animate10startColor03endI017completionHandlerySo7NSColorC_AIyycSgtF', + '_$s6AppKit34_NSIntelligenceUIWashAnimationViewC7animate10startColor03endI020normalizedStartPoint0k3EndM017completionHandlerySo7NSColorC_AKSo7CGPointVAMyycSgtF', + '_$s6AppKit34_NSIntelligenceUIWashAnimationViewCMa', '_$s6AppKit34_NSIntelligenceUIWashAnimationViewCMn', + '_$s6AppKit34_NSIntelligenceUIWashAnimationViewCMo', '_$s6AppKit34_NSIntelligenceUIWashAnimationViewCMu', + '_$s6AppKit34_NSIntelligenceUIWashAnimationViewCN', '_$s6AppKit34_NSIntelligenceUIWashAnimationViewCfD', + '_$s6AppKit35MenuAccessibilityNotificationActionV22isUniquePerTransactionSbvg', + '_$s6AppKit35MenuAccessibilityNotificationActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit35MenuAccessibilityNotificationActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit35MenuAccessibilityNotificationActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit35MenuAccessibilityNotificationActionVAA03AnyF0AAMc', + '_$s6AppKit35MenuAccessibilityNotificationActionVAA03AnyF0AAWP', + '_$s6AppKit35MenuAccessibilityNotificationActionVAA07TrustedF0AAMc', + '_$s6AppKit35MenuAccessibilityNotificationActionVAA07TrustedF0AAWP', + '_$s6AppKit35MenuAccessibilityNotificationActionVMa', '_$s6AppKit35MenuAccessibilityNotificationActionVMn', + '_$s6AppKit35MenuAccessibilityNotificationActionVN', '_$s6AppKit35MenuAccessibilityNotificationActionVSEAAMc', + '_$s6AppKit35MenuAccessibilityNotificationActionVSeAAMc', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionV19presentationOptionsAA4MenuC012PresentationJ0Vvg', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionV19presentationOptionsAA4MenuC012PresentationJ0VvpMV', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionV7locatorAA8MenuItemC7LocatorVvg', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionV7locatorAA8MenuItemC7LocatorVvpMV', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionV7submenuAA4MenuCvg', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionV7submenuAA4MenuCvpMV', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionVAA03AnyH0AAMc', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionVAA03AnyH0AAWP', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionVAA0gH0AAMc', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionVAA0gH0AAWP', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionVMa', '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionVMn', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionVN', '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionVSEAAMc', + '_$s6AppKit35PrepareToOpenSubmenuAwaitableActionVSeAAMc', + '_$s6AppKit35UntrustedApplicationAwaitableActionV10returnTypeAA0E0_pXpvg', + '_$s6AppKit35UntrustedApplicationAwaitableActionV10returnTypeAA0E0_pXpvpMV', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO010associatedfH0AA03AnyF0_pXpvg', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO010associatedfH0AA03AnyF0_pXpvpMV', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO13highlightItemyA2EmFWC', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO13menuItemFrameyA2EmFWC', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO20highlightMenuBarItemyA2EmFWC', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO20prepareToOpenSubmenuyA2EmFWC', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO23setProcessForPasteAlertyA2EmFWC', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO27checkForPermissionOverridesyA2EmFWC', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO36cancelIndirectPasteVerificationAlertyA2EmFWC', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO8rawValueAESgSi_tcfC', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO8rawValueSivg', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO8rawValueSivpMV', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeO9menuFrameyA2EmFWC', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeOAA0fH11ConvertibleAAMc', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeOAA0fH11ConvertibleAAWP', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeOMa', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeOMn', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeON', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeOSEAAMc', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeOSHAAMc', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeOSQAAMc', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeOSYAAMc', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12InternalTypeOSeAAMc', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12wrappedValueAA0F3BoxVyACGSgvg', + '_$s6AppKit35UntrustedApplicationAwaitableActionV12wrappedValueAA0F3BoxVyACGSgvpMV', + '_$s6AppKit35UntrustedApplicationAwaitableActionV6actionAA0eF0_pvg', + '_$s6AppKit35UntrustedApplicationAwaitableActionV6actionAA0eF0_pvpMV', + '_$s6AppKit35UntrustedApplicationAwaitableActionVAA0F8WrappingAAMc', + '_$s6AppKit35UntrustedApplicationAwaitableActionVAA0F8WrappingAAWP', + '_$s6AppKit35UntrustedApplicationAwaitableActionVMa', '_$s6AppKit35UntrustedApplicationAwaitableActionVMn', + '_$s6AppKit35UntrustedApplicationAwaitableActionVN', '_$s6AppKit36_LocationInterpolatingLinearGradientV010normalizedF10StartPointSo7CGPointVvM', + '_$s6AppKit36_LocationInterpolatingLinearGradientV010normalizedF10StartPointSo7CGPointVvg', + '_$s6AppKit36_LocationInterpolatingLinearGradientV010normalizedF10StartPointSo7CGPointVvpMV', + '_$s6AppKit36_LocationInterpolatingLinearGradientV010normalizedF10StartPointSo7CGPointVvs', + '_$s6AppKit36_LocationInterpolatingLinearGradientV010normalizedF8EndPointSo7CGPointVvM', + '_$s6AppKit36_LocationInterpolatingLinearGradientV010normalizedF8EndPointSo7CGPointVvg', + '_$s6AppKit36_LocationInterpolatingLinearGradientV010normalizedF8EndPointSo7CGPointVvpMV', + '_$s6AppKit36_LocationInterpolatingLinearGradientV010normalizedF8EndPointSo7CGPointVvs', + '_$s6AppKit36_LocationInterpolatingLinearGradientV11interpolate__10percentageA2C_ACSdtFZ', + '_$s6AppKit36_LocationInterpolatingLinearGradientV2eeoiySbAC_ACtFZ', + '_$s6AppKit36_LocationInterpolatingLinearGradientV8gradientSo10NSGradientCvM', + '_$s6AppKit36_LocationInterpolatingLinearGradientV8gradientSo10NSGradientCvg', + '_$s6AppKit36_LocationInterpolatingLinearGradientV8gradientSo10NSGradientCvpMV', + '_$s6AppKit36_LocationInterpolatingLinearGradientV8gradientSo10NSGradientCvs', + '_$s6AppKit36_LocationInterpolatingLinearGradientVAA14InterpolatableAAMc', + '_$s6AppKit36_LocationInterpolatingLinearGradientVAA14InterpolatableAAWP', + '_$s6AppKit36_LocationInterpolatingLinearGradientVMa', '_$s6AppKit36_LocationInterpolatingLinearGradientVMn', + '_$s6AppKit36_LocationInterpolatingLinearGradientVN', '_$s6AppKit36_LocationInterpolatingLinearGradientVSQAAMc', + '_$s6AppKit37UntrustedApplicationContextMenuActionO04showF0yAcA0F0C_AA0fE0CSgtcACmFWC', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeO010associatedgI0AA03AnyG0_pXpvg', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeO010associatedgI0AA03AnyG0_pXpvpMV', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeO04showF0yA2EmFWC', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeO14didCloseWindowyA2EmFWC', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeO20didUpdateWindowFrameyA2EmFWC', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeO8rawValueAESgSi_tcfC', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeO8rawValueSivg', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeO8rawValueSivpMV', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeOAA0gI11ConvertibleAAMc', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeOAA0gI11ConvertibleAAWP', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeOMa', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeOMn', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeON', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeOSEAAMc', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeOSHAAMc', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeOSQAAMc', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeOSYAAMc', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12InternalTypeOSeAAMc', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12wrappedValueAA0G3BoxVyACGSgvg', + '_$s6AppKit37UntrustedApplicationContextMenuActionO12wrappedValueAA0G3BoxVyACGSgvpMV', + '_$s6AppKit37UntrustedApplicationContextMenuActionO14didCloseWindowyA2CmFWC', + '_$s6AppKit37UntrustedApplicationContextMenuActionO20didUpdateWindowFrameyACSo6CGRectV_AFtcACmFWC', + '_$s6AppKit37UntrustedApplicationContextMenuActionOAA0G8WrappingAAMc', + '_$s6AppKit37UntrustedApplicationContextMenuActionOAA0G8WrappingAAWP', + '_$s6AppKit37UntrustedApplicationContextMenuActionOMa', '_$s6AppKit37UntrustedApplicationContextMenuActionOMn', + '_$s6AppKit37UntrustedApplicationContextMenuActionON', '_$s6AppKit42CancelIndirectPasteVerificationAlertActionV12otherProcessSo13audit_token_tavg', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionV12otherProcessSo13audit_token_tavpMV', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionV22isUniquePerTransactionSbvg', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionV22isUniquePerTransactionSbvpMV', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionV6encode2toys7Encoder_p_tKF', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionVAA03AnyH0AAMc', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionVAA03AnyH0AAWP', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionVAA09AwaitableH0AAMc', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionVAA09AwaitableH0AAWP', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionVMa', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionVMn', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionVN', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionVSEAAMc', + '_$s6AppKit42CancelIndirectPasteVerificationAlertActionVSeAAMc', + '_$s6AppKit4MenuC06linkedC010identifierACSg10Foundation4UUIDV_tF', + '_$s6AppKit4MenuC06linkedC0yACSgSo6NSMenuCSgF', '_$s6AppKit4MenuC11linkedMenusSayACGvg', + '_$s6AppKit4MenuC11linkedMenusSayACGvpMV', '_$s6AppKit4MenuC11supermenuID10Foundation4UUIDVSgvg', + '_$s6AppKit4MenuC11supermenuID10Foundation4UUIDVSgvpMV', '_$s6AppKit4MenuC12platformItemACSo6NSMenuC_tcfC', + '_$s6AppKit4MenuC12platformItemACSo6NSMenuC_tcfCTj', '_$s6AppKit4MenuC12platformItemACSo6NSMenuC_tcfCTq', + '_$s6AppKit4MenuC12platformItemACSo6NSMenuC_tcfc', '_$s6AppKit4MenuC12platformItemSo6NSMenuCvg', + '_$s6AppKit4MenuC12platformItemSo6NSMenuCvpMV', '_$s6AppKit4MenuC12submenuIndex3forSiSg10Foundation4UUIDV_tF', + '_$s6AppKit4MenuC16platformItemTypeSo6NSMenuCmvMZ', '_$s6AppKit4MenuC16platformItemTypeSo6NSMenuCmvgZ', + '_$s6AppKit4MenuC16platformItemTypeSo6NSMenuCmvpZMV', '_$s6AppKit4MenuC16platformItemTypeSo6NSMenuCmvsZ', + '_$s6AppKit4MenuC19PresentationOptionsV09secondaryC0AEvgZ', + '_$s6AppKit4MenuC19PresentationOptionsV09secondaryC0AEvpZMV', + '_$s6AppKit4MenuC19PresentationOptionsV28beginTrackingSessionIfNeededAEvgZ', + '_$s6AppKit4MenuC19PresentationOptionsV28beginTrackingSessionIfNeededAEvpZMV', + '_$s6AppKit4MenuC19PresentationOptionsV8rawValueAESi_tcfC', + '_$s6AppKit4MenuC19PresentationOptionsV8rawValueSivg', '_$s6AppKit4MenuC19PresentationOptionsV8rawValueSivpMV', + '_$s6AppKit4MenuC19PresentationOptionsV9unfocusedAEvgZ', '_$s6AppKit4MenuC19PresentationOptionsV9unfocusedAEvpZMV', + '_$s6AppKit4MenuC19PresentationOptionsVMa', '_$s6AppKit4MenuC19PresentationOptionsVMn', + '_$s6AppKit4MenuC19PresentationOptionsVN', '_$s6AppKit4MenuC19PresentationOptionsVSQAAMc', + '_$s6AppKit4MenuC19PresentationOptionsVSYAAMc', '_$s6AppKit4MenuC19PresentationOptionsVs10SetAlgebraAAMc', + '_$s6AppKit4MenuC19PresentationOptionsVs25ExpressibleByArrayLiteralAAMc', + '_$s6AppKit4MenuC19PresentationOptionsVs9OptionSetAAMc', '_$s6AppKit4MenuC21synchronizeProperties4intoySo6NSMenuC_tF', + '_$s6AppKit4MenuC2id10Foundation4UUIDVvg', '_$s6AppKit4MenuC2id10Foundation4UUIDVvpMV', + '_$s6AppKit4MenuC4fromACs7Decoder_p_tKcfC', '_$s6AppKit4MenuC4fromACs7Decoder_p_tKcfCTj', + '_$s6AppKit4MenuC4fromACs7Decoder_p_tKcfCTq', '_$s6AppKit4MenuC4fromACs7Decoder_p_tKcfc', + '_$s6AppKit4MenuC5itemsSayAA0C4ItemCGvM', '_$s6AppKit4MenuC5itemsSayAA0C4ItemCGvg', + '_$s6AppKit4MenuC5itemsSayAA0C4ItemCGvpMV', '_$s6AppKit4MenuC5itemsSayAA0C4ItemCGvs', + '_$s6AppKit4MenuC6encode2toys7Encoder_p_tKF', '_$s6AppKit4MenuC9linkMenus08platformC08providerySo6NSMenuC_AHSgACXEtF', + '_$s6AppKit4MenuCAA0C4BaseAAMc', '_$s6AppKit4MenuCAA0C4BaseAAWP', + '_$s6AppKit4MenuCAA10XPCCodableAAMc', '_$s6AppKit4MenuCAA10XPCCodableAAWP', + '_$s6AppKit4MenuCMa', '_$s6AppKit4MenuCMm', '_$s6AppKit4MenuCMn', + '_$s6AppKit4MenuCMo', '_$s6AppKit4MenuCMu', '_$s6AppKit4MenuCN', + '_$s6AppKit4MenuCSEAAMc', '_$s6AppKit4MenuCSeAAMc', '_$s6AppKit4MenuCfD', + '_$s6AppKit4MenuCfd', '_$s6AppKit4MenuCs12IdentifiableAAMc', + '_$s6AppKit5EventV12wrappedValueSo7NSEventCvg', '_$s6AppKit5EventV12wrappedValueSo7NSEventCvpMV', + '_$s6AppKit5EventV24isVerifiedByWindowServerSbvM', '_$s6AppKit5EventV24isVerifiedByWindowServerSbvg', + '_$s6AppKit5EventV24isVerifiedByWindowServerSbvs', '_$s6AppKit5EventV4fromACs7Decoder_p_tKcfC', + '_$s6AppKit5EventV6encode2toys7Encoder_p_tKF', '_$s6AppKit5EventV9timestampSdvg', + '_$s6AppKit5EventV9timestampSdvpMV', '_$s6AppKit5EventVMa', + '_$s6AppKit5EventVMn', '_$s6AppKit5EventVN', '_$s6AppKit5EventVSEAAMc', + '_$s6AppKit5EventVSeAAMc', '_$s6AppKit5EventVyACSgSo7NSEventCSgcfC', + '_$s6AppKit7DebugIDV11descriptionSSvg', '_$s6AppKit7DebugIDV11descriptionSSvpMV', + '_$s6AppKit7DebugIDV2id10Foundation4UUIDVSgvg', '_$s6AppKit7DebugIDV2id10Foundation4UUIDVSgvpMV', + '_$s6AppKit7DebugIDVMa', '_$s6AppKit7DebugIDVMn', '_$s6AppKit7DebugIDVN', + '_$s6AppKit7DebugIDVs12IdentifiableAAMc', '_$s6AppKit7DebugIDVs23CustomStringConvertibleAAMc', + '_$s6AppKit7DebugIDVyAC10Foundation4UUIDVcfC', '_$s6AppKit8MenuBaseMp', + '_$s6AppKit8MenuBaseP0C8ItemTypeAC_AA0ceD0Tn', '_$s6AppKit8MenuBaseP12platformItemxSo6NSMenuC_tcfCTj', + '_$s6AppKit8MenuBaseP12platformItemxSo6NSMenuC_tcfCTq', '_$s6AppKit8MenuBaseP2id10Foundation4UUIDVvgTj', + '_$s6AppKit8MenuBaseP2id10Foundation4UUIDVvgTq', '_$s6AppKit8MenuBaseP5itemsSay0C8ItemTypeQzGvMTj', + '_$s6AppKit8MenuBaseP5itemsSay0C8ItemTypeQzGvMTq', '_$s6AppKit8MenuBaseP5itemsSay0C8ItemTypeQzGvgTj', + '_$s6AppKit8MenuBaseP5itemsSay0C8ItemTypeQzGvgTq', '_$s6AppKit8MenuBaseP5itemsSay0C8ItemTypeQzGvsTj', + '_$s6AppKit8MenuBaseP5itemsSay0C8ItemTypeQzGvsTq', '_$s6AppKit8MenuBasePAA10XPCCodableTb', + '_$s6AppKit8MenuBasePAAE23platformItemForMatchingySo6NSMenuCAaB_pSg10Foundation4UUIDVXEF', + '_$s6AppKit8MenuBasePAAEy0C8ItemTypeQzSgSicig', '_$s6AppKit8MenuBasePAAEy0C8ItemTypeQzSgSicipMV', + '_$s6AppKit8MenuBasePSETb', '_$s6AppKit8MenuBasePSeTb', '_$s6AppKit8MenuBasePs12IdentifiableTb', + '_$s6AppKit8MenuBaseTL', '_$s6AppKit8MenuItemC07paletteC0AA0C0CSgvM', + '_$s6AppKit8MenuItemC07paletteC0AA0C0CSgvg', '_$s6AppKit8MenuItemC07paletteC0AA0C0CSgvpMV', + '_$s6AppKit8MenuItemC07paletteC0AA0C0CSgvs', '_$s6AppKit8MenuItemC08platformD0ACSo06NSMenuD0C_tcfC', + '_$s6AppKit8MenuItemC08platformD0ACSo06NSMenuD0C_tcfCTj', + '_$s6AppKit8MenuItemC08platformD0ACSo06NSMenuD0C_tcfCTq', + '_$s6AppKit8MenuItemC08platformD0ACSo06NSMenuD0C_tcfc', '_$s6AppKit8MenuItemC08platformD4TypeSo06NSMenuD0CmvMZ', + '_$s6AppKit8MenuItemC08platformD4TypeSo06NSMenuD0CmvgZ', '_$s6AppKit8MenuItemC08platformD4TypeSo06NSMenuD0CmvpZMV', + '_$s6AppKit8MenuItemC08platformD4TypeSo06NSMenuD0CmvsZ', '_$s6AppKit8MenuItemC10CustomViewV17contextIdentifiers6UInt32Vvg', + '_$s6AppKit8MenuItemC10CustomViewV17contextIdentifiers6UInt32VvpMV', + '_$s6AppKit8MenuItemC10CustomViewV18accessibilityTokenAA019RemoteAccessibilityH0Vy10Foundation4UUIDVGvg', + '_$s6AppKit8MenuItemC10CustomViewV18accessibilityTokenAA019RemoteAccessibilityH0Vy10Foundation4UUIDVGvpMV', + '_$s6AppKit8MenuItemC10CustomViewV4fromAEs7Decoder_p_tKcfC', + '_$s6AppKit8MenuItemC10CustomViewV4sizeSo6CGSizeVvM', '_$s6AppKit8MenuItemC10CustomViewV4sizeSo6CGSizeVvg', + '_$s6AppKit8MenuItemC10CustomViewV4sizeSo6CGSizeVvpMV', '_$s6AppKit8MenuItemC10CustomViewV4sizeSo6CGSizeVvs', + '_$s6AppKit8MenuItemC10CustomViewV6encode2toys7Encoder_p_tKF', + '_$s6AppKit8MenuItemC10CustomViewVMa', '_$s6AppKit8MenuItemC10CustomViewVMn', + '_$s6AppKit8MenuItemC10CustomViewVN', '_$s6AppKit8MenuItemC10CustomViewVSEAAMc', + '_$s6AppKit8MenuItemC10CustomViewVSeAAMc', '_$s6AppKit8MenuItemC10customViewAC06CustomF0VSgvg', + '_$s6AppKit8MenuItemC10customViewAC06CustomF0VSgvpMV', '_$s6AppKit8MenuItemC13hasCustomViewSbvg', + '_$s6AppKit8MenuItemC13hasCustomViewSbvpMV', '_$s6AppKit8MenuItemC13keyEquivalentSSvM', + '_$s6AppKit8MenuItemC13keyEquivalentSSvg', '_$s6AppKit8MenuItemC13keyEquivalentSSvpMV', + '_$s6AppKit8MenuItemC13keyEquivalentSSvs', '_$s6AppKit8MenuItemC14customViewSizeSo6CGSizeVvg', + '_$s6AppKit8MenuItemC14customViewSizeSo6CGSizeVvpMV', '_$s6AppKit8MenuItemC21synchronizeProperties4intoySo06NSMenuD0C_tF', + '_$s6AppKit8MenuItemC25keyEquivalentModifierMaskSo07NSEventG5FlagsVvM', + '_$s6AppKit8MenuItemC25keyEquivalentModifierMaskSo07NSEventG5FlagsVvg', + '_$s6AppKit8MenuItemC25keyEquivalentModifierMaskSo07NSEventG5FlagsVvpMV', + '_$s6AppKit8MenuItemC25keyEquivalentModifierMaskSo07NSEventG5FlagsVvs', + '_$s6AppKit8MenuItemC2id10Foundation4UUIDVvg', '_$s6AppKit8MenuItemC2id10Foundation4UUIDVvpMV', + '_$s6AppKit8MenuItemC4fromACs7Decoder_p_tKcfC', '_$s6AppKit8MenuItemC4fromACs7Decoder_p_tKcfCTj', + '_$s6AppKit8MenuItemC4fromACs7Decoder_p_tKcfCTq', '_$s6AppKit8MenuItemC4fromACs7Decoder_p_tKcfc', + '_$s6AppKit8MenuItemC5titleSSvM', '_$s6AppKit8MenuItemC5titleSSvg', + '_$s6AppKit8MenuItemC5titleSSvpMV', '_$s6AppKit8MenuItemC5titleSSvs', + '_$s6AppKit8MenuItemC6encode2toys7Encoder_p_tKF', '_$s6AppKit8MenuItemC7LocatorV04menuD2ID10Foundation4UUIDVSgvg', + '_$s6AppKit8MenuItemC7LocatorV04menuD2ID10Foundation4UUIDVSgvpMV', + '_$s6AppKit8MenuItemC7LocatorV04rootC2ID10Foundation4UUIDVvg', + '_$s6AppKit8MenuItemC7LocatorV04rootC2ID10Foundation4UUIDVvpMV', + '_$s6AppKit8MenuItemC7LocatorV4fromAEs7Decoder_p_tKcfC', '_$s6AppKit8MenuItemC7LocatorV5indexSivg', + '_$s6AppKit8MenuItemC7LocatorV5indexSivpMV', '_$s6AppKit8MenuItemC7LocatorV6encode2toys7Encoder_p_tKF', + '_$s6AppKit8MenuItemC7LocatorV6menuID10Foundation4UUIDVvg', + '_$s6AppKit8MenuItemC7LocatorV6menuID10Foundation4UUIDVvpMV', + '_$s6AppKit8MenuItemC7LocatorVMa', '_$s6AppKit8MenuItemC7LocatorVMn', + '_$s6AppKit8MenuItemC7LocatorVN', '_$s6AppKit8MenuItemC7LocatorVSEAAMc', + '_$s6AppKit8MenuItemC7LocatorVSeAAMc', '_$s6AppKit8MenuItemC7LocatorVyAESgSo06NSMenuD0CcfC', + '_$s6AppKit8MenuItemC9isEnabledSbvg', '_$s6AppKit8MenuItemC9isEnabledSbvpMV', + '_$s6AppKit8MenuItemC9submenuID10Foundation4UUIDVSgvM', '_$s6AppKit8MenuItemC9submenuID10Foundation4UUIDVSgvg', + '_$s6AppKit8MenuItemC9submenuID10Foundation4UUIDVSgvpMV', + '_$s6AppKit8MenuItemC9submenuID10Foundation4UUIDVSgvs', '_$s6AppKit8MenuItemCAA0cD4BaseAAMc', + '_$s6AppKit8MenuItemCAA0cD4BaseAAWP', '_$s6AppKit8MenuItemCAA10XPCCodableAAMc', + '_$s6AppKit8MenuItemCAA10XPCCodableAAWP', '_$s6AppKit8MenuItemCMa', + '_$s6AppKit8MenuItemCMm', '_$s6AppKit8MenuItemCMn', '_$s6AppKit8MenuItemCMo', + '_$s6AppKit8MenuItemCMu', '_$s6AppKit8MenuItemCN', '_$s6AppKit8MenuItemCSEAAMc', + '_$s6AppKit8MenuItemCSeAAMc', '_$s6AppKit8MenuItemCfD', '_$s6AppKit8MenuItemCfd', + '_$s6AppKit8MenuItemCs12IdentifiableAAMc', '_$s6AppKit9ActionBoxV09awaitableC0AA09AwaitableC0_pSgvg', + '_$s6AppKit9ActionBoxV09awaitableC0AA09AwaitableC0_pSgvpMV', + '_$s6AppKit9ActionBoxV4fromACyxGs7Decoder_p_tKcfC', '_$s6AppKit9ActionBoxV6encode2toys7Encoder_p_tKF', + '_$s6AppKit9ActionBoxVMa', '_$s6AppKit9ActionBoxVMn', '_$s6AppKit9ActionBoxVyxGSEAAMc', + '_$s6AppKit9ActionBoxVyxGSeAAMc', '_$s6AppKit9AnyActionMp', + '_$s6AppKit9AnyActionP21transactionIdentifiers0C8HashableVSgvgTj', + '_$s6AppKit9AnyActionP21transactionIdentifiers0C8HashableVSgvgTq', + '_$s6AppKit9AnyActionP22isUniquePerTransactionSbvgTj', '_$s6AppKit9AnyActionP22isUniquePerTransactionSbvgTq', + '_$s6AppKit9AnyActionP5mergeyyAaB_pFTj', '_$s6AppKit9AnyActionP5mergeyyAaB_pFTq', + '_$s6AppKit9AnyActionPAAE21transactionIdentifiers0C8HashableVSgvg', + '_$s6AppKit9AnyActionPAAE21transactionIdentifiers0C8HashableVSgvpMV', + '_$s6AppKit9AnyActionPAAE22isUniquePerTransactionSbvg', '_$s6AppKit9AnyActionPAAE22isUniquePerTransactionSbvpMV', + '_$s6AppKit9AnyActionPAAE5mergeyyAaB_pF', '_$s6AppKit9AnyActionPAAE9unwrapped2to10completionyqd__m_yqd__XEtlF', + '_$s6AppKit9AnyActionPAAE9unwrapped2to15asyncCompletionyqd__m_yqd__YaXEtYalF', + '_$s6AppKit9AnyActionPAAE9unwrapped2to15asyncCompletionyqd__m_yqd__YaXEtYalFTu', + '_$s6AppKit9AnyActionPSETb', '_$s6AppKit9AnyActionPSeTb', + '_$s6AppKit9AnyActionTL', '_$s6AppKit9AwaitableMp', '_$s6AppKit9AwaitableP7perform6action12remoteObjectxSo13OS_xpc_object_p_So8NSObjectCtYaFZTj', + '_$s6AppKit9AwaitableP7perform6action12remoteObjectxSo13OS_xpc_object_p_So8NSObjectCtYaFZTjTu', + '_$s6AppKit9AwaitableP7perform6action12remoteObjectxSo13OS_xpc_object_p_So8NSObjectCtYaFZTq', + '_$s6AppKit9AwaitableTL', '_$s6AppKit9NSRectSetCACycfC', '_$s6AppKit9NSRectSetCACycfc', + '_$s6AppKit9NSRectSetCMa', '_$s6AppKit9NSRectSetCMn', '_$s6AppKit9NSRectSetCMo', + '_$s6AppKit9NSRectSetCN', '_$s6AppKit9NSRectSetCfD', '_$s8Instance6AppKit17IncrementalUpdatePTl', + '_$sSD6AppKitSSRszypRs_rlE7perform6action12remoteObjectSDySSypGSo13OS_xpc_object_p_So8NSObjectCtYaFZ', + '_$sSD6AppKitSSRszypRs_rlE7perform6action12remoteObjectSDySSypGSo13OS_xpc_object_p_So8NSObjectCtYaFZTu', + '_$sSDyxq_G6AppKit9AwaitableABSSRszypRs_rlMc', '_$sSDyxq_G6AppKit9AwaitableABSSRszypRs_rlWP', '_$sST6AppKitSo6CGRectV7ElementRtzrlE4clipyyF', '_$sST6AppKitSo6CGRectV7ElementRtzrlE4fill5usingySo22NSCompositingOperationV_tF', '_$sST6AppKitSo6CGRectV_12CoreGraphics7CGFloatV4grayt7ElementRtzrlE4fill5usingySo22NSCompositingOperationV_tF', '_$sST6AppKitSo6CGRectV_So7NSColorCt7ElementRtzrlE4fill5usingySo22NSCompositingOperationV_tF', + '_$sSb6AppKit9AwaitableAAMc', '_$sSb6AppKit9AwaitableAAWP', + '_$sSb6AppKitE7perform6action12remoteObjectSbSo13OS_xpc_object_p_So8NSObjectCtYaFZ', + '_$sSb6AppKitE7perform6action12remoteObjectSbSo13OS_xpc_object_p_So8NSObjectCtYaFZTu', + '_$sSi6AppKit9AwaitableAAMc', '_$sSi6AppKit9AwaitableAAWP', + '_$sSi6AppKitE7perform6action12remoteObjectSiSo13OS_xpc_object_p_So8NSObjectCtYaFZ', + '_$sSi6AppKitE7perform6action12remoteObjectSiSo13OS_xpc_object_p_So8NSObjectCtYaFZTu', '_$sSo10NSGradientC6AppKitE10colorSpaceSo07NSColorE0Cvg', '_$sSo10NSGradientC6AppKitE10colorSpaceSo07NSColorE0CvpMV', '_$sSo10NSGradientC6AppKitE17interpolatedColor10atLocationSo7NSColorC12CoreGraphics7CGFloatV_tF', '_$sSo10NSGradientC6AppKitE18colorsAndLocationsABSgSo7NSColorC_12CoreGraphics7CGFloatVtd_tcfC', '_$sSo10NSGradientC6AppKitE18colorsAndLocationsABSgSo7NSColorC_12CoreGraphics7CGFloatVtd_tcfc', '_$sSo10NSGradientC6AppKitE18numberOfColorStopsSivg', '_$sSo10NSGradientC6AppKitE18numberOfColorStopsSivpMV', - '_$sSo10NSGradientC6AppKitE20supportsSecureCodingSbvgZ', '_$sSo10NSGradientC6AppKitE4copy4withyp10ObjectiveC6NSZoneVSg_tF', + '_$sSo10NSGradientC6AppKitE20supportsSecureCodingSbvgZ', '_$sSo10NSGradientC6AppKitE20supportsSecureCodingSbvpZMV', + '_$sSo10NSGradientC6AppKitE27intelligenceAmbientGradient10startColor03endH0ABSo7NSColorCSg_AItFZ', + '_$sSo10NSGradientC6AppKitE28intelligenceComputedGradient10startColor03endH0ABSo7NSColorCSg_AItFZ', + '_$sSo10NSGradientC6AppKitE30intelligenceProcessingGradient10startColor03endH0ABSo7NSColorCSg_AItFZ', + '_$sSo10NSGradientC6AppKitE34textAssistantPonderingFillGradientABvgZ', + '_$sSo10NSGradientC6AppKitE34textAssistantPonderingFillGradientABvpZMV', + '_$sSo10NSGradientC6AppKitE39textAssistantReplacementBuildInGradientABvgZ', + '_$sSo10NSGradientC6AppKitE39textAssistantReplacementBuildInGradientABvpZMV', + '_$sSo10NSGradientC6AppKitE40textAssistantPonderingLightSheenGradientABvgZ', + '_$sSo10NSGradientC6AppKitE40textAssistantPonderingLightSheenGradientABvpZMV', + '_$sSo10NSGradientC6AppKitE40textAssistantReplacementBuildOutGradientABvgZ', + '_$sSo10NSGradientC6AppKitE40textAssistantReplacementBuildOutGradientABvpZMV', + '_$sSo10NSGradientC6AppKitE4copy4withyp10ObjectiveC6NSZoneVSg_tF', '_$sSo10NSGradientC6AppKitE4draw10fromCenter6radius02toF0AF7optionsySo7CGPointV_12CoreGraphics7CGFloatVAjMSo0A14DrawingOptionsVtF', '_$sSo10NSGradientC6AppKitE4draw2in22relativeCenterPositionySo12NSBezierPathC_So7CGPointVtF', '_$sSo10NSGradientC6AppKitE4draw2in22relativeCenterPositionySo6CGRectV_So7CGPointVtF', @@ -3064,6 +4424,10 @@ exports: '_$sSo10NSGradientC6AppKitEABycfC', '_$sSo10NSGradientC6AppKitEABycfc', '_$sSo10NSGradientCMa', '_$sSo10NSMenuItemC6AppKitE13sectionHeader5titleABSS_tFZ', '_$sSo10NSMenuItemC6AppKitE13sectionHeader9withTitleABSS_tFZ', + '_$sSo10NSTextViewC6AppKitE22_intelligenceBaseClassyXlXpvg', + '_$sSo10NSTextViewC6AppKitE23_textHighlightMenuItemsSaySo10NSMenuItemCGyFZ', + '_$sSo10NSTextViewC6AppKitE27_insertStringUsingColorWipeyySSF', + '_$sSo10NSTextViewC6AppKitE27_intelligenceCollectContent2in9collectorySo6CGRectV_21UIIntelligenceSupport0K16ElementCollectorCtF', '_$sSo10NSTouchBarC6AppKitE33_defaultCustomPlaygroundQuickLooks01_ghI0Ovg', '_$sSo10NSTouchBarC6AppKitE33_defaultCustomPlaygroundQuickLooks01_ghI0OvpMV', '_$sSo10NSTouchBarCs38__DefaultCustomPlaygroundQuickLookable6AppKitMc', @@ -3076,48 +4440,147 @@ exports: '_$sSo11NSImageViewC6AppKitE18removeSymbolEffect6ofType7options8animatedyx_7Symbols0fG7OptionsVSbtAH010IndefinitefG0RzAH0fG0RzlF', '_$sSo11NSImageViewC6AppKitE18removeSymbolEffect6ofType7options8animatedyx_7Symbols0fG7OptionsVSbtAH08DiscretefG0RzAH010IndefinitefG0RzAH0fG0RzlF', '_$sSo11NSImageViewC6AppKitE18removeSymbolEffect6ofType7options8animatedyx_7Symbols0fG7OptionsVSbtAH08DiscretefG0RzAH0fG0RzlF', + '_$sSo11NSImageViewC6AppKitE22_intelligenceBaseClassyXlXpvg', '_$sSo11NSImageViewC6AppKitE22removeAllSymbolEffects7options8animatedy7Symbols0G13EffectOptionsV_SbtF', + '_$sSo11NSImageViewC6AppKitE27_intelligenceCollectContent2in9collectorySo6CGRectV_21UIIntelligenceSupport0K16ElementCollectorCtF', + '_$sSo11NSTableViewC6AppKitE22_intelligenceBaseClassyXlXpvg', + '_$sSo11NSTableViewC6AppKitE31_intelligenceCollectSubelements2in5using15transformToRootySo6CGRectV_21UIIntelligenceSupport0N16ElementCollectorCAISo6NSViewC_AItXEtF', + '_$sSo11NSTableViewC6AppKitE36_appIntentsDataSourcePayloadProvider21UIIntelligenceSupport012IntelligencecfghI9Providing_pSgvM', + '_$sSo11NSTableViewC6AppKitE36_appIntentsDataSourcePayloadProvider21UIIntelligenceSupport012IntelligencecfghI9Providing_pSgvg', + '_$sSo11NSTableViewC6AppKitE36_appIntentsDataSourcePayloadProvider21UIIntelligenceSupport012IntelligencecfghI9Providing_pSgvpMV', + '_$sSo11NSTableViewC6AppKitE36_appIntentsDataSourcePayloadProvider21UIIntelligenceSupport012IntelligencecfghI9Providing_pSgvs', '_$sSo11NSTextFieldC6AppKitE19suggestionsDelegateAC0a11SuggestionsF0_pSgvM', '_$sSo11NSTextFieldC6AppKitE19suggestionsDelegateAC0a11SuggestionsF0_pSgvg', '_$sSo11NSTextFieldC6AppKitE19suggestionsDelegateAC0a11SuggestionsF0_pSgvpMV', '_$sSo11NSTextFieldC6AppKitE19suggestionsDelegateAC0a11SuggestionsF0_pSgvs', '_$sSo11NSTextFieldC6AppKitE20textTokensController6ofTypeAC0afG0CyxGxm_tlF', + '_$sSo11NSTextFieldC6AppKitE22_intelligenceBaseClassyXlXpvg', + '_$sSo11NSTextFieldC6AppKitE27_insertStringUsingColorWipeyySSF', + '_$sSo11NSTextFieldC6AppKitE27_intelligenceCollectContent2in9collectorySo6CGRectV_21UIIntelligenceSupport0K16ElementCollectorCtF', '_$sSo12NSFontWeighta6AppKit01_cdD23NumericRawRepresentableACMc', '_$sSo12NSFontWeighta6AppKit01_cdD23NumericRawRepresentableACWP', - '_$sSo12NSFontWeightaSL6AppKitMc', '_$sSo12NSStoryboardC6AppKitE21instantiateController10identifier7creatorxSS_xSgSo7NSCoderCcSgtSo06NSViewE0CRbzlF', + '_$sSo12NSFontWeightaSL6AppKitMc', '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV12moneyAmountsSaySo18DDMatchMoneyAmountCGvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV12moneyAmountsSaySo18DDMatchMoneyAmountCGvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV12phoneNumbersSaySo18DDMatchPhoneNumberCGvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV12phoneNumbersSaySo18DDMatchPhoneNumberCGvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV13flightNumbersSaySo19DDMatchFlightNumberCGvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV13flightNumbersSaySo19DDMatchFlightNumberCGvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV14calendarEventsSaySo20DDMatchCalendarEventCGvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV14calendarEventsSaySo20DDMatchCalendarEventCGvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV14emailAddressesSaySo19DDMatchEmailAddressCGvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV14emailAddressesSaySo19DDMatchEmailAddressCGvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV14probableWebURLSSvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV14probableWebURLSSvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV15postalAddressesSaySo20DDMatchPostalAddressCGvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV15postalAddressesSaySo20DDMatchPostalAddressCGvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV17probableWebSearchSSvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV17probableWebSearchSSvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV23shipmentTrackingNumbersSaySo015DDMatchShipmentG6NumberCGvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV23shipmentTrackingNumbersSaySo015DDMatchShipmentG6NumberCGvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV5linksSaySo11DDMatchLinkCGvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV5linksSaySo11DDMatchLinkCGvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV6numberSdSgvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV6numberSdSgvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV8patternsShys14PartialKeyPathCyAEGGvg', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesV8patternsShys14PartialKeyPathCyAEGGvpMV', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesVMa', '_$sSo12NSPasteboardC6AppKitE14DetectedValuesVMn', + '_$sSo12NSPasteboardC6AppKitE14DetectedValuesVN', '_$sSo12NSPasteboardC6AppKitE14accessBehaviorSo0a6AccessE0Vvg', + '_$sSo12NSPasteboardC6AppKitE14accessBehaviorSo0a6AccessE0VvpMV', + '_$sSo12NSPasteboardC6AppKitE14detectedValues3forAbCE08DetectedE0VShys14PartialKeyPathCyAGGG_tYaKF', + '_$sSo12NSPasteboardC6AppKitE14detectedValues3forAbCE08DetectedE0VShys14PartialKeyPathCyAGGG_tYaKFTu', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesV10resolutionSo7CGPointVSgvg', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesV10resolutionSo7CGPointVSgvpMV', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesV11orientationSo26CGImagePropertyOrientationVSgvg', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesV11orientationSo26CGImagePropertyOrientationVSgvpMV', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesV12bitsPerPixelSiSgvg', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesV12bitsPerPixelSiSgvpMV', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesV8hasAlphaSbSgvg', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesV8hasAlphaSbSgvpMV', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesV9pixelSizeSo6CGSizeVSgvg', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesV9pixelSizeSo6CGSizeVSgvpMV', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesVMa', '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesVMn', + '_$sSo12NSPasteboardC6AppKitE15ImagePropertiesVN', '_$sSo12NSPasteboardC6AppKitE16DetectedMetadataV11contentType07UniformG11Identifiers6UTTypeVSgvg', + '_$sSo12NSPasteboardC6AppKitE16DetectedMetadataV11contentType07UniformG11Identifiers6UTTypeVSgvpMV', + '_$sSo12NSPasteboardC6AppKitE16DetectedMetadataV13metadataTypesShys14PartialKeyPathCyAEGGvg', + '_$sSo12NSPasteboardC6AppKitE16DetectedMetadataV13metadataTypesShys14PartialKeyPathCyAEGGvpMV', + '_$sSo12NSPasteboardC6AppKitE16DetectedMetadataV15imagePropertiesAbCE05ImageG0VSgvg', + '_$sSo12NSPasteboardC6AppKitE16DetectedMetadataV15imagePropertiesAbCE05ImageG0VSgvpMV', + '_$sSo12NSPasteboardC6AppKitE16DetectedMetadataVMa', '_$sSo12NSPasteboardC6AppKitE16DetectedMetadataVMn', + '_$sSo12NSPasteboardC6AppKitE16DetectedMetadataVN', '_$sSo12NSPasteboardC6AppKitE16detectedMetadata3forAbCE08DetectedE0VShys14PartialKeyPathCyAGGG_tYaKF', + '_$sSo12NSPasteboardC6AppKitE16detectedMetadata3forAbCE08DetectedE0VShys14PartialKeyPathCyAGGG_tYaKFTu', + '_$sSo12NSPasteboardC6AppKitE16detectedPatterns3forShys14PartialKeyPathCyAbCE14DetectedValuesVGGAK_tYaKF', + '_$sSo12NSPasteboardC6AppKitE16detectedPatterns3forShys14PartialKeyPathCyAbCE14DetectedValuesVGGAK_tYaKFTu', + '_$sSo12NSScrollViewC6AppKitE22_intelligenceBaseClassyXlXpvg', + '_$sSo12NSScrollViewC6AppKitE27_intelligenceCollectContent2in9collectorySo6CGRectV_21UIIntelligenceSupport0K16ElementCollectorCtF', + '_$sSo12NSStoryboardC6AppKitE21instantiateController10identifier7creatorxSS_xSgSo7NSCoderCcSgtSo06NSViewE0CRbzlF', '_$sSo12NSStoryboardC6AppKitE21instantiateController10identifier7creatorxSS_xSgSo7NSCoderCcSgtSo08NSWindowE0CRbzlF', '_$sSo12NSStoryboardC6AppKitE28instantiateInitialController7creatorxSgAFSo7NSCoderCcSg_tSo06NSViewF0CRbzlF', '_$sSo12NSStoryboardC6AppKitE28instantiateInitialController7creatorxSgAFSo7NSCoderCcSg_tSo08NSWindowF0CRbzlF', - '_$sSo13NSApplicationC6AppKitE15loadApplicationyyFZ', '_$sSo13NSWindowDepthV6AppKitE04bestB014colorSpaceName13bitsPerSample0iJ5Pixel8isPlanarAB_Sb0M10ExactMatchtSo07NSColorgH0a_S2iSbtFZ', + '_$sSo13NSApplicationC6AppKitE15loadApplicationyyFZ', '_$sSo13NSOutlineViewC6AppKitE22_intelligenceBaseClassyXlXpvg', + '_$sSo13NSPopUpButtonC6AppKitE03popB4Menu6target6actionABSo6NSMenuC_yXlSg10ObjectiveC8SelectorVSgtcfC', + '_$sSo13NSPopUpButtonC6AppKitE03popB4Menu6target6actionABSo6NSMenuC_yXlSg10ObjectiveC8SelectorVSgtcfc', + '_$sSo13NSPopUpButtonC6AppKitE5image12pullDownMenuABSo7NSImageC_So6NSMenuCtcfC', + '_$sSo13NSPopUpButtonC6AppKitE5image12pullDownMenuABSo7NSImageC_So6NSMenuCtcfc', + '_$sSo13NSPopUpButtonC6AppKitE5title5image12pullDownMenuABSS_So7NSImageCSgSo6NSMenuCtcfC', + '_$sSo13NSPopUpButtonC6AppKitE5title5image12pullDownMenuABSS_So7NSImageCSgSo6NSMenuCtcfc', + '_$sSo13NSWindowDepthV6AppKitE04bestB014colorSpaceName13bitsPerSample0iJ5Pixel8isPlanarAB_Sb0M10ExactMatchtSo07NSColorgH0a_S2iSbtFZ', '_$sSo13NSWindowDepthV6AppKitE15availableDepthsSayABGvgZ', + '_$sSo13NSWindowDepthV6AppKitE15availableDepthsSayABGvpZMV', '_$sSo13NSWindowLevela6AppKit01_cdD23NumericRawRepresentableACMc', '_$sSo13NSWindowLevela6AppKit01_cdD23NumericRawRepresentableACWP', - '_$sSo13NSWindowLevelaSL6AppKitMc', '_$sSo14NSTouchBarItemC6AppKitE33_defaultCustomPlaygroundQuickLooks01_hiJ0Ovg', + '_$sSo13NSWindowLevelaSL6AppKitMc', '_$sSo13audit_token_ta6AppKitE2eeoiySbAB_ABtFZ', + '_$sSo13audit_token_ta6AppKitE4fromABs7Decoder_p_tKcfC', '_$sSo13audit_token_ta6AppKitE6encode2toys7Encoder_p_tKF', + '_$sSo13audit_token_ta6AppKitE8rawValueABSgAB_tcfC', '_$sSo13audit_token_ta6AppKitE8rawValueABvg', + '_$sSo13audit_token_ta6AppKitE8rawValueABvpMV', '_$sSo13audit_token_taSE6AppKitMc', + '_$sSo13audit_token_taSQ6AppKitMc', '_$sSo13audit_token_taSY6AppKitMc', + '_$sSo13audit_token_taSe6AppKitMc', '_$sSo14NSTouchBarItemC6AppKitE33_defaultCustomPlaygroundQuickLooks01_hiJ0Ovg', '_$sSo14NSTouchBarItemC6AppKitE33_defaultCustomPlaygroundQuickLooks01_hiJ0OvpMV', '_$sSo14NSTouchBarItemCs38__DefaultCustomPlaygroundQuickLookable6AppKitMc', '_$sSo15NSAppKitVersiona03AppB001_dbB23NumericRawRepresentableACMc', '_$sSo15NSAppKitVersiona03AppB001_dbB23NumericRawRepresentableACWP', - '_$sSo15NSAppKitVersiona03AppB0E11number10_14ABvgZ', '_$sSo15NSAppKitVersiona03AppB0E11number10_15ABvgZ', - '_$sSo15NSAppKitVersiona03AppB0E13number10_14_1ABvgZ', '_$sSo15NSAppKitVersiona03AppB0E13number10_14_2ABvgZ', - '_$sSo15NSAppKitVersiona03AppB0E13number10_14_3ABvgZ', '_$sSo15NSAppKitVersiona03AppB0E13number10_14_4ABvgZ', - '_$sSo15NSAppKitVersiona03AppB0E13number10_14_5ABvgZ', '_$sSo15NSAppKitVersionaSL03AppB0Mc', - '_$sSo15NSMenuItemBadgeC6AppKitE11stringValueSSSgvg', '_$sSo15NSMenuItemBadgeC6AppKitE11stringValueSSSgvpMV', + '_$sSo15NSAppKitVersiona03AppB0E11number10_14ABvgZ', '_$sSo15NSAppKitVersiona03AppB0E11number10_14ABvpZMV', + '_$sSo15NSAppKitVersiona03AppB0E11number10_15ABvgZ', '_$sSo15NSAppKitVersiona03AppB0E11number10_15ABvpZMV', + '_$sSo15NSAppKitVersiona03AppB0E13number10_14_1ABvgZ', '_$sSo15NSAppKitVersiona03AppB0E13number10_14_1ABvpZMV', + '_$sSo15NSAppKitVersiona03AppB0E13number10_14_2ABvgZ', '_$sSo15NSAppKitVersiona03AppB0E13number10_14_2ABvpZMV', + '_$sSo15NSAppKitVersiona03AppB0E13number10_14_3ABvgZ', '_$sSo15NSAppKitVersiona03AppB0E13number10_14_3ABvpZMV', + '_$sSo15NSAppKitVersiona03AppB0E13number10_14_4ABvgZ', '_$sSo15NSAppKitVersiona03AppB0E13number10_14_4ABvpZMV', + '_$sSo15NSAppKitVersiona03AppB0E13number10_14_5ABvgZ', '_$sSo15NSAppKitVersiona03AppB0E13number10_14_5ABvpZMV', + '_$sSo15NSAppKitVersionaSL03AppB0Mc', '_$sSo15NSMenuItemBadgeC6AppKitE11stringValueSSSgvg', + '_$sSo15NSMenuItemBadgeC6AppKitE11stringValueSSSgvpMV', '_$sSo15NSMenuItemBadgeC6AppKitE4fromABs7Decoder_p_tKcfC', + '_$sSo15NSMenuItemBadgeC6AppKitE4fromABs7Decoder_p_tKcfc', + '_$sSo15NSMenuItemBadgeC6AppKitE6encode2toys7Encoder_p_tKF', '_$sSo15NSMenuItemBadgeC6AppKitE7isEmptySbvg', '_$sSo15NSMenuItemBadgeC6AppKitE7isEmptySbvpMV', + '_$sSo15NSMenuItemBadgeCSE6AppKitMc', '_$sSo15NSMenuItemBadgeCSe6AppKitMc', '_$sSo15NSOpenGLContextC6AppKitE13openGLVersions5Int32V5major_AF5minortvgZ', + '_$sSo15NSOpenGLContextC6AppKitE13openGLVersions5Int32V5major_AF5minortvpZMV', + '_$sSo16NSCollectionViewC6AppKitE22_intelligenceBaseClassyXlXpvg', + '_$sSo16NSCollectionViewC6AppKitE31_intelligenceCollectSubelements2in5using15transformToRootySo6CGRectV_21UIIntelligenceSupport0N16ElementCollectorCAISo6NSViewC_AItXEtF', + '_$sSo16NSCollectionViewC6AppKitE36_appIntentsDataSourcePayloadProvider21UIIntelligenceSupport012IntelligencecfghI9Providing_pSgvM', + '_$sSo16NSCollectionViewC6AppKitE36_appIntentsDataSourcePayloadProvider21UIIntelligenceSupport012IntelligencecfghI9Providing_pSgvg', + '_$sSo16NSCollectionViewC6AppKitE36_appIntentsDataSourcePayloadProvider21UIIntelligenceSupport012IntelligencecfghI9Providing_pSgvpMV', + '_$sSo16NSCollectionViewC6AppKitE36_appIntentsDataSourcePayloadProvider21UIIntelligenceSupport012IntelligencecfghI9Providing_pSgvs', '_$sSo16NSLayoutPrioritya6AppKit01_cdD23NumericRawRepresentableACMc', '_$sSo16NSLayoutPrioritya6AppKit01_cdD23NumericRawRepresentableACWP', - '_$sSo16NSLayoutPriorityaSL6AppKitMc', '_$sSo16NSUnderlineStyleVSH6AppKitMc', - '_$sSo16NSViewControllerC6AppKitE11ViewLoadingV12wrappedValueAEy_xGx_tcfC', + '_$sSo16NSLayoutPriorityaSL6AppKitMc', '_$sSo16NSPasteboardItemC6AppKitE14detectedValues3forSo0A0CACE08DetectedF0VShys14PartialKeyPathCyAIGG_tYaKF', + '_$sSo16NSPasteboardItemC6AppKitE14detectedValues3forSo0A0CACE08DetectedF0VShys14PartialKeyPathCyAIGG_tYaKFTu', + '_$sSo16NSPasteboardItemC6AppKitE16detectedMetadata3forSo0A0CACE08DetectedF0VShys14PartialKeyPathCyAIGG_tYaKF', + '_$sSo16NSPasteboardItemC6AppKitE16detectedMetadata3forSo0A0CACE08DetectedF0VShys14PartialKeyPathCyAIGG_tYaKFTu', + '_$sSo16NSPasteboardItemC6AppKitE16detectedPatterns3forShys14PartialKeyPathCySo0A0CACE14DetectedValuesVGGAM_tYaKF', + '_$sSo16NSPasteboardItemC6AppKitE16detectedPatterns3forShys14PartialKeyPathCySo0A0CACE14DetectedValuesVGGAM_tYaKFTu', + '_$sSo16NSUnderlineStyleVSH6AppKitMc', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingV12wrappedValueAEy_xGx_tcfC', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingV12wrappedValuexvM', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingV12wrappedValuexvg', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingV12wrappedValuexvpMV', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingV12wrappedValuexvs', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xGGtcABRbd__luiMZ', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xGGtcABRbd__luigZ', + '_$sSo16NSViewControllerC6AppKitE11ViewLoadingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xGGtcABRbd__luipZMV', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xGGtcABRbd__luisZ', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingVAEy_xGycfC', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingVMa', '_$sSo16NSViewControllerC6AppKitE11ViewLoadingVMn', + '_$sSo16NSViewControllerC6AppKitE31_intelligenceCollectSubelements2in5using15transformToRootySo6CGRectV_21UIIntelligenceSupport0N16ElementCollectorCAISo0A0C_AItXEtF', '_$sSo17NSAnimationEffectV6AppKitE4show10centeredAt4size17completionHandlerySo7CGPointV_So6CGSizeVyyctF', + '_$sSo18NSAnimationContextC6AppKitE7animate5using7changes10completionyx_yyXEyyctAC18NSBridgedAnimationRzlFZ', '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingV12wrappedValueAEy_xGx_tcfC', '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingV12wrappedValuexvM', '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingV12wrappedValuexvg', @@ -3125,25 +4588,129 @@ exports: '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingV12wrappedValuexvs', '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xGGtcABRbd__luiMZ', '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xGGtcABRbd__luigZ', + '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xGGtcABRbd__luipZMV', '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xGGtcABRbd__luisZ', '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingVAEy_xGycfC', '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingVMa', '_$sSo18NSWindowControllerC6AppKitE13WindowLoadingVMn', - '_$sSo20NSOpenGLGlobalOptionV6AppKitE11globalValues5Int32VvM', + '_$sSo20NSAdaptiveImageGlyphC6AppKitEyAB10Foundation16AttributedStringV8CoreTextE08AdaptivebC0VcfC', + '_$sSo20NSAdaptiveImageGlyphC6AppKitEyAB10Foundation16AttributedStringV8CoreTextE08AdaptivebC0Vcfc', + '_$sSo20NSContentMaskingViewC6AppKitE4maskSo6NSViewCSgvg', + '_$sSo20NSContentMaskingViewC6AppKitE4maskSo6NSViewCSgvs', + '_$sSo20NSContentMaskingViewC6AppKitE5coderABSgSo7NSCoderC_tcfC', + '_$sSo20NSContentMaskingViewC6AppKitE5coderABSgSo7NSCoderC_tcfc', + '_$sSo20NSContentMaskingViewC6AppKitE6encode4withySo7NSCoderC_tF', + '_$sSo20NSContentMaskingViewCMa', '_$sSo20NSLinearGradientViewC6AppKitE16_setLayoutEngineyyypSgF', + '_$sSo20NSLinearGradientViewC6AppKitE16defaultAnimation6forKeyypSgSS_tFZ', + '_$sSo20NSLinearGradientViewC6AppKitE4drawyySo6CGRectVF', + '_$sSo20NSLinearGradientViewC6AppKitE5coderABSgSo7NSCoderC_tcfC', + '_$sSo20NSLinearGradientViewC6AppKitE5coderABSgSo7NSCoderC_tcfc', + '_$sSo20NSLinearGradientViewC6AppKitE5frameABSo6CGRectV_tcfC', + '_$sSo20NSLinearGradientViewC6AppKitE5frameABSo6CGRectV_tcfc', + '_$sSo20NSLinearGradientViewC6AppKitE6encode4withySo7NSCoderC_tF', + '_$sSo20NSLinearGradientViewCMa', '_$sSo20NSOpenGLGlobalOptionV6AppKitE11globalValues5Int32VvM', '_$sSo20NSOpenGLGlobalOptionV6AppKitE11globalValues5Int32Vvg', '_$sSo20NSOpenGLGlobalOptionV6AppKitE11globalValues5Int32VvpMV', '_$sSo20NSOpenGLGlobalOptionV6AppKitE11globalValues5Int32Vvs', + '_$sSo21NSSplitViewControllerC6AppKitE31_intelligenceCollectSubelements2in5using15transformToRootySo6CGRectV_21UIIntelligenceSupport0O16ElementCollectorCAISo6NSViewC_AItXEtF', '_$sSo22NSTouchBarItemPrioritya6AppKit01_efF23NumericRawRepresentableACMc', '_$sSo22NSTouchBarItemPrioritya6AppKit01_efF23NumericRawRepresentableACWP', - '_$sSo22NSTouchBarItemPriorityaSL6AppKitMc', '_$sSo29NSStackViewVisibilityPrioritya6AppKit01_efF23NumericRawRepresentableACMc', + '_$sSo22NSTouchBarItemPriorityaSL6AppKitMc', '_$sSo26NSWindowRestorationArchiveC6AppKitE20supportsSecureCodingSbvgZ', + '_$sSo26NSWindowRestorationArchiveC6AppKitE20supportsSecureCodingSbvpZMV', + '_$sSo26NSWindowRestorationArchiveC6AppKitE5coderABSgSo7NSCoderC_tcfC', + '_$sSo26NSWindowRestorationArchiveC6AppKitE5coderABSgSo7NSCoderC_tcfc', + '_$sSo26NSWindowRestorationArchiveC6AppKitE6encode4withySo7NSCoderC_tF', + '_$sSo26NSWindowRestorationArchiveC6AppKitE7archive3for7options17completionHandlerySaySo0A0CG_So0aB16ArchivingOptionsCSgyABSg_s5Error_pSgtctFZ', + '_$sSo26NSWindowRestorationArchiveC6AppKitE7restore_7options17completionHandleryAB_So0aB7OptionsCSgySaySo0A0CG_s5Error_pSgtctFZ', + '_$sSo26NSWindowRestorationArchiveC6AppKitEABycfC', '_$sSo26NSWindowRestorationArchiveC6AppKitEABycfc', + '_$sSo26NSWindowRestorationArchiveCMa', '_$sSo26NSWindowRestorationOptionsC6AppKitE25restoreToActiveSpacesOnlySbvg', + '_$sSo26NSWindowRestorationOptionsC6AppKitE25restoreToActiveSpacesOnlySbvpMV', + '_$sSo26NSWindowRestorationOptionsC6AppKitE25restoreToActiveSpacesOnlySbvpWvd', + '_$sSo26NSWindowRestorationOptionsC6AppKitE25restoreToActiveSpacesOnlySbvs', + '_$sSo26NSWindowRestorationOptionsC6AppKitE4copy4withyp10ObjectiveC6NSZoneVSg_tF', + '_$sSo26NSWindowRestorationOptionsC6AppKitEABycfC', '_$sSo26NSWindowRestorationOptionsC6AppKitEABycfc', + '_$sSo26NSWindowRestorationOptionsCMa', '_$sSo27NSCursorFrameResizePositionV6AppKitE10topLeading10relativeToABSo30NSUserInterfaceLayoutDirectionV_tFZ', + '_$sSo27NSCursorFrameResizePositionV6AppKitE11topTrailing10relativeToABSo30NSUserInterfaceLayoutDirectionV_tFZ', + '_$sSo27NSCursorFrameResizePositionV6AppKitE13bottomLeading10relativeToABSo30NSUserInterfaceLayoutDirectionV_tFZ', + '_$sSo27NSCursorFrameResizePositionV6AppKitE14bottomTrailing10relativeToABSo30NSUserInterfaceLayoutDirectionV_tFZ', + '_$sSo27NSCursorFrameResizePositionV6AppKitE7leading10relativeToABSo30NSUserInterfaceLayoutDirectionV_tFZ', + '_$sSo27NSCursorFrameResizePositionV6AppKitE8allCasesSayABGvgZ', + '_$sSo27NSCursorFrameResizePositionV6AppKitE8allCasesSayABGvpZMV', + '_$sSo27NSCursorFrameResizePositionV6AppKitE8trailing10relativeToABSo30NSUserInterfaceLayoutDirectionV_tFZ', + '_$sSo27NSCursorFrameResizePositionVs12CaseIterable6AppKitMc', + '_$sSo28NSAccessibilityAttributeNamea6AppKitE4selfABvgZ', + '_$sSo28NSAccessibilityAttributeNamea6AppKitE4selfABvpZMV', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE07contentC0So6NSViewCSgvg', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE07contentC0So6NSViewCSgvpMV', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE07contentC0So6NSViewCSgvs', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE10audioLevelSdvg', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE10audioLevelSdvpMV', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE10audioLevelSdvpWvd', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE10audioLevelSdvs', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE12cornerRadius12CoreGraphics7CGFloatVvg', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE12cornerRadius12CoreGraphics7CGFloatVvs', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE13clipsToBoundsSbvg', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE13clipsToBoundsSbvs', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsV10isBorderedSbvM', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsV10isBorderedSbvg', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsV10isBorderedSbvpMV', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsV10isBorderedSbvs', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsV5point10isBorderedAESo7CGPointV_SbtcfC', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsV5pointSo7CGPointVvM', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsV5pointSo7CGPointVvg', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsV5pointSo7CGPointVvpMV', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsV5pointSo7CGPointVvs', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsVMa', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsVMn', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE14ShimmerOptionsVN', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE15usesAudioLevelsSbvg', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE15usesAudioLevelsSbvpMV', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE15usesAudioLevelsSbvpWvd', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE15usesAudioLevelsSbvs', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE16defaultAnimation6forKeyypSgSS_tFZ', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE16hasExteriorLightSbvg', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE16hasExteriorLightSbvpMV', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE16hasExteriorLightSbvpWvd', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE16hasExteriorLightSbvs', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE16hasInteriorLightSbvg', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE16hasInteriorLightSbvpMV', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE16hasInteriorLightSbvpWvd', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE16hasInteriorLightSbvs', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE30indicatesIndeterminateProgressSbvg', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE30indicatesIndeterminateProgressSbvpMV', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE30indicatesIndeterminateProgressSbvpWvd', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE30indicatesIndeterminateProgressSbvs', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE5coderABSgSo7NSCoderC_tcfC', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE5coderABSgSo7NSCoderC_tcfc', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE5frameABSo6CGRectV_tcfC', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE5frameABSo6CGRectV_tcfc', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE7shimmer4fromySo10NSRectEdgeV_tF', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE7shimmer4fromySo7CGPointV_tF', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE7shimmer7optionsyAbCE14ShimmerOptionsV_tF', + '_$sSo28_NSIntelligenceUIPlatterViewC6AppKitE7shimmeryyF', + '_$sSo28_NSIntelligenceUIPlatterViewCMa', '_$sSo29NSStackViewVisibilityPrioritya6AppKit01_efF23NumericRawRepresentableACMc', '_$sSo29NSStackViewVisibilityPrioritya6AppKit01_efF23NumericRawRepresentableACWP', '_$sSo29NSStackViewVisibilityPriorityaSL6AppKitMc', '_$sSo31NSToolbarItemVisibilityPrioritya6AppKit01_efF23NumericRawRepresentableACMc', '_$sSo31NSToolbarItemVisibilityPrioritya6AppKit01_efF23NumericRawRepresentableACWP', - '_$sSo31NSToolbarItemVisibilityPriorityaSL6AppKitMc', '_$sSo37_NSCollectionViewFeedbackLoopDebuggerC6AppKitEABycfC', + '_$sSo31NSToolbarItemVisibilityPriorityaSL6AppKitMc', '_$sSo35NSWindowRestorationArchivingOptionsC6AppKitE4copy4withyp10ObjectiveC6NSZoneVSg_tF', + '_$sSo35NSWindowRestorationArchivingOptionsC6AppKitEABycfC', + '_$sSo35NSWindowRestorationArchivingOptionsC6AppKitEABycfc', + '_$sSo35NSWindowRestorationArchivingOptionsCMa', '_$sSo37_NSCollectionViewFeedbackLoopDebuggerC6AppKitEABycfC', '_$sSo37_NSCollectionViewFeedbackLoopDebuggerC6AppKitEABycfc', - '_$sSo37_NSCollectionViewFeedbackLoopDebuggerCMa', '_$sSo6CGRectV6AppKitE4clipyyF', + '_$sSo37_NSCollectionViewFeedbackLoopDebuggerCMa', '_$sSo6CGRectV6AppKit9AwaitableACMc', + '_$sSo6CGRectV6AppKit9AwaitableACWP', '_$sSo6CGRectV6AppKitE4clipyyF', '_$sSo6CGRectV6AppKitE4fill5usingySo22NSCompositingOperationV_tF', '_$sSo6CGRectV6AppKitE5frame9withWidth5usingy12CoreGraphics7CGFloatV_So22NSCompositingOperationVtF', - '_$sSo6NSMenuC6AppKitE7palette6colors6titles8template17onSelectionChangeABSaySo7NSColorCG_SaySSGSo7NSImageCSgyABcSgtFZ', + '_$sSo6CGRectV6AppKitE7perform6action12remoteObjectABSo13OS_xpc_object_p_So8NSObjectCtYaFZ', + '_$sSo6CGRectV6AppKitE7perform6action12remoteObjectABSo13OS_xpc_object_p_So8NSObjectCtYaFZTu', + '_$sSo6NSMenuC6AppKit12ProxyCodableACMc', '_$sSo6NSMenuC6AppKit12ProxyCodableACWP', + '_$sSo6NSMenuC6AppKitE14flashHighlight9itemIndexySi_tF', '_$sSo6NSMenuC6AppKitE14flashHighlightyyF', + '_$sSo6NSMenuC6AppKitE20startContextTracking4impl8delegate7contextyypSg_AhC04MenuE0CSgtF', + '_$sSo6NSMenuC6AppKitE20startMenuBarTracking5event8delegateyAC5EventVSg_ypSgtF', + '_$sSo6NSMenuC6AppKitE25decodeRemoteDisplayWindow4fromypSg10Foundation4DataV_tKFZ', + '_$sSo6NSMenuC6AppKitE25updatePresentationContextyyAC04MenuF0CF', + '_$sSo6NSMenuC6AppKitE2id10Foundation4UUIDVvg', '_$sSo6NSMenuC6AppKitE2id10Foundation4UUIDVvpMV', + '_$sSo6NSMenuC6AppKitE5proxyAC4MenuCvg', '_$sSo6NSMenuC6AppKitE5proxyAC4MenuCvpMV', + '_$sSo6NSMenuC6AppKitE7decoded2byABXDAC4MenuC_tFZ', '_$sSo6NSMenuC6AppKitE7palette6colors6titles8template17onSelectionChangeABSaySo7NSColorCG_SaySSGSo7NSImageCSgyABcSgtFZ', '_$sSo6NSViewC6AppKitE12InvalidatingV12wrappedValue_AEy_xq_Gx_q_tcfC', '_$sSo6NSViewC6AppKitE12InvalidatingV12wrappedValue__AEy_xAbCE13InvalidationsO5TupleVy__qd__qd_0_GGx_qd__qd_0_tcAKRs_AC0aD0Rd__AcMRd_0_r0_lufC', '_$sSo6NSViewC6AppKitE12InvalidatingV12wrappedValue___AEy_xAbCE13InvalidationsO5TupleVy__AJy__qd__qd_0_Gqd_1_GGx_qd__qd_0_qd_1_tcALRs_AC0aD0Rd__AcNRd_0_AcNRd_1_r1_lufC', @@ -3158,6 +4725,7 @@ exports: '_$sSo6NSViewC6AppKitE12InvalidatingV12wrappedValuexvpMV', '_$sSo6NSViewC6AppKitE12InvalidatingV12wrappedValuexvs', '_$sSo6NSViewC6AppKitE12InvalidatingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xq_GGtcABRbd__luiMZ', '_$sSo6NSViewC6AppKitE12InvalidatingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xq_GGtcABRbd__luigZ', + '_$sSo6NSViewC6AppKitE12InvalidatingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xq_GGtcABRbd__luipZMV', '_$sSo6NSViewC6AppKitE12InvalidatingV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAJyqd__AEy_xq_GGtcABRbd__luisZ', '_$sSo6NSViewC6AppKitE12InvalidatingVMa', '_$sSo6NSViewC6AppKitE12InvalidatingVMn', '_$sSo6NSViewC6AppKitE13InvalidationsO11ConstraintsV10invalidate4viewyAB_tF', @@ -3195,83 +4763,468 @@ exports: '_$sSo6NSViewC6AppKitE13InvalidationsO7DisplayVAGycfC', '_$sSo6NSViewC6AppKitE13InvalidationsO7DisplayVMa', '_$sSo6NSViewC6AppKitE13InvalidationsO7DisplayVMn', '_$sSo6NSViewC6AppKitE13InvalidationsO7DisplayVN', '_$sSo6NSViewC6AppKitE13InvalidationsOMa', '_$sSo6NSViewC6AppKitE13InvalidationsOMn', - '_$sSo6NSViewC6AppKitE13InvalidationsON', '_$sSo6NSViewC6AppKitE33_defaultCustomPlaygroundQuickLooks01_fgH0Ovg', + '_$sSo6NSViewC6AppKitE13InvalidationsON', '_$sSo6NSViewC6AppKitE22_intelligenceBaseClassyXlXpvg', + '_$sSo6NSViewC6AppKitE22_intelligenceBaseClassyXlXpvpMV', + '_$sSo6NSViewC6AppKitE26_intelligenceVisibleBoundsSo6CGRectVvg', + '_$sSo6NSViewC6AppKitE26_intelligenceVisibleBoundsSo6CGRectVvpMV', + '_$sSo6NSViewC6AppKitE27_intelligenceCollectContent2in9collectorySo6CGRectV_21UIIntelligenceSupport0J16ElementCollectorCtF', + '_$sSo6NSViewC6AppKitE27_intelligenceCollectElement3for2in5using15transformToRootyAB_So6CGRectV21UIIntelligenceSupport0nF9CollectorCAjB_AJtXEtF', + '_$sSo6NSViewC6AppKitE28_intelligenceRemoteTransformSo08CGAffineF0Vvg', + '_$sSo6NSViewC6AppKitE28_intelligenceRemoteTransformSo08CGAffineF0VvpMV', + '_$sSo6NSViewC6AppKitE31_appIntentsIntelligenceProvider21UIIntelligenceSupport0fbE16PayloadProviding_AE0f10SubelementK0pSgvM', + '_$sSo6NSViewC6AppKitE31_appIntentsIntelligenceProvider21UIIntelligenceSupport0fbE16PayloadProviding_AE0f10SubelementK0pSgvg', + '_$sSo6NSViewC6AppKitE31_appIntentsIntelligenceProvider21UIIntelligenceSupport0fbE16PayloadProviding_AE0f10SubelementK0pSgvpMV', + '_$sSo6NSViewC6AppKitE31_appIntentsIntelligenceProvider21UIIntelligenceSupport0fbE16PayloadProviding_AE0f10SubelementK0pSgvs', + '_$sSo6NSViewC6AppKitE31_intelligenceCollectSubelements2in5using15transformToRootySo6CGRectV_21UIIntelligenceSupport0M16ElementCollectorCAiB_AItXEtF', + '_$sSo6NSViewC6AppKitE33_defaultCustomPlaygroundQuickLooks01_fgH0Ovg', '_$sSo6NSViewC6AppKitE33_defaultCustomPlaygroundQuickLooks01_fgH0OvpMV', + '_$sSo6NSViewC6AppKitE33_intelligenceCollectRemoteContent2in20remoteContextWrapperySo6CGRectV_21UIIntelligenceSupport0m10CollectionfjK0CtF', + '_$sSo6NSViewC6AppKitE38_intelligenceRemoteContextWrapperClassyXlXpvgZ', + '_$sSo6NSViewC6AppKitE38_intelligenceRemoteContextWrapperClassyXlXpvpZMV', '_$sSo6NSViewCs38__DefaultCustomPlaygroundQuickLookable6AppKitMc', + '_$sSo7CGPointV6AppKit14InterpolatableACMc', '_$sSo7CGPointV6AppKit14InterpolatableACWP', + '_$sSo7CGPointV6AppKit9AwaitableACMc', '_$sSo7CGPointV6AppKit9AwaitableACWP', + '_$sSo7CGPointV6AppKitE11interpolate__10percentageA2B_ABSdtFZ', + '_$sSo7CGPointV6AppKitE7perform6action12remoteObjectABSo13OS_xpc_object_p_So8NSObjectCtYaFZ', + '_$sSo7CGPointV6AppKitE7perform6action12remoteObjectABSo13OS_xpc_object_p_So8NSObjectCtYaFZTu', + '_$sSo7NSAlertC6AppKitE33_defaultKeyboardShortcutForButton9withTitleSS3key_So20NSEventModifierFlagsV9modifierstSgSS_tFZ', '_$sSo7NSColorC16CoreTransferable0C06AppKitMc', '_$sSo7NSColorC6AppKitE16_colorLiteralRed5green4blue5alphaABSf_S3ftcfC', '_$sSo7NSColorC6AppKitE16_colorLiteralRed5green4blue5alphaABSf_S3ftcfc', - '_$sSo7NSColorC6AppKitE22transferRepresentationQrvgZ', '_$sSo7NSColorC6AppKitE22transferRepresentationQrvpZQOMQ', + '_$sSo7NSColorC6AppKitE22transferRepresentationQrvgZ', '_$sSo7NSColorC6AppKitE22transferRepresentationQrvpZMV', + '_$sSo7NSColorC6AppKitE22transferRepresentationQrvpZQOMQ', '_$sSo7NSColorC6AppKitE8resourceAB21DeveloperToolsSupport13ColorResourceV_tcfC', '_$sSo7NSColorC6AppKitE8resourceAB21DeveloperToolsSupport13ColorResourceV_tcfc', '_$sSo7NSColorCs26_ExpressibleByColorLiteral6AppKitMc', '_$sSo7NSEventC6AppKitE10SpecialKeyV10deleteLineAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV10insertLineAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV10modeSwitchAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV10rightArrowAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV10scrollLockAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV11printScreenAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV12clearDisplayAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV10deleteLineAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV10insertLineAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV10insertLineAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV10modeSwitchAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV10modeSwitchAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV10rightArrowAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV10rightArrowAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV10scrollLockAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV10scrollLockAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV11printScreenAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV11printScreenAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV12clearDisplayAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV12clearDisplayAEvpZMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV13deleteForwardAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV13deleteForwardAEvpZMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV13lineSeparatorAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV13lineSeparatorAEvpZMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV13unicodeScalars7UnicodeO0G0Vvg', '_$sSo7NSEventC6AppKitE10SpecialKeyV13unicodeScalars7UnicodeO0G0VvpMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV14carriageReturnAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV14carriageReturnAEvpZMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV15deleteCharacterAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV15deleteCharacterAEvpZMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV15insertCharacterAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV15insertCharacterAEvpZMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV18paragraphSeparatorAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV2f1AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f2AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV2f3AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f4AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV2f5AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f6AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV2f7AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f8AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV2f9AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3endAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f10AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f11AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f12AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f13AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f14AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f15AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f16AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f17AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f18AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f19AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f20AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f21AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f22AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f23AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f24AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f25AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f26AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f27AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f28AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f29AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f30AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f31AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f32AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f33AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3f34AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f35AEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV3tabAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4findAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV4helpAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4homeAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV4menuAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4nextAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV4prevAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4redoAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV4stopAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4undoAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV4userAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV5beginAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV5breakAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV5enterAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV5pauseAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV5printAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV5resetAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV6deleteAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV6insertAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV6pageUpAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV6selectAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV6sysReqAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV6systemAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV7backTabAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV7executeAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV7newlineAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV7upArrowAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV8formFeedAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV8pageDownAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV8rawValueAESi_tcfC', - '_$sSo7NSEventC6AppKitE10SpecialKeyV8rawValueSivg', '_$sSo7NSEventC6AppKitE10SpecialKeyV8rawValueSivpMV', - '_$sSo7NSEventC6AppKitE10SpecialKeyV9backspaceAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV9clearLineAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyV9downArrowAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV9leftArrowAEvgZ', - '_$sSo7NSEventC6AppKitE10SpecialKeyVMa', '_$sSo7NSEventC6AppKitE10SpecialKeyVMn', - '_$sSo7NSEventC6AppKitE10SpecialKeyVN', '_$sSo7NSEventC6AppKitE10SpecialKeyVSHACMc', - '_$sSo7NSEventC6AppKitE10SpecialKeyVSQACMc', '_$sSo7NSEventC6AppKitE10SpecialKeyVSYACMc', - '_$sSo7NSEventC6AppKitE10specialKeyAbCE07SpecialE0VSgvg', + '_$sSo7NSEventC6AppKitE10SpecialKeyV18paragraphSeparatorAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV2f1AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f1AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV2f2AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f2AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV2f3AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f3AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV2f4AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f4AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV2f5AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f5AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV2f6AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f6AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV2f7AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f7AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV2f8AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f8AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV2f9AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV2f9AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3endAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3endAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f10AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f10AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f11AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f11AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f12AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f12AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f13AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f13AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f14AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f14AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f15AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f15AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f16AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f16AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f17AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f17AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f18AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f18AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f19AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f19AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f20AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f20AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f21AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f21AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f22AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f22AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f23AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f23AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f24AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f24AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f25AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f25AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f26AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f26AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f27AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f27AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f28AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f28AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f29AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f29AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f30AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f30AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f31AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f31AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f32AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f32AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f33AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f33AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f34AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f34AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3f35AEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3f35AEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV3tabAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV3tabAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV4findAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4findAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV4helpAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4helpAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV4homeAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4homeAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV4menuAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4menuAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV4nextAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4nextAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV4prevAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4prevAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV4redoAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4redoAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV4stopAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4stopAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV4undoAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4undoAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV4userAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV4userAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV5beginAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV5beginAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV5breakAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV5breakAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV5enterAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV5enterAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV5pauseAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV5pauseAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV5printAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV5printAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV5resetAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV5resetAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV6deleteAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV6deleteAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV6insertAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV6insertAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV6pageUpAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV6pageUpAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV6selectAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV6selectAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV6sysReqAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV6sysReqAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV6systemAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV6systemAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV7backTabAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV7backTabAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV7executeAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV7executeAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV7newlineAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV7newlineAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV7upArrowAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV7upArrowAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV8formFeedAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV8formFeedAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV8pageDownAEvgZ', '_$sSo7NSEventC6AppKitE10SpecialKeyV8pageDownAEvpZMV', + '_$sSo7NSEventC6AppKitE10SpecialKeyV8rawValueAESi_tcfC', '_$sSo7NSEventC6AppKitE10SpecialKeyV8rawValueSivg', + '_$sSo7NSEventC6AppKitE10SpecialKeyV8rawValueSivpMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV9backspaceAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV9backspaceAEvpZMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV9clearLineAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV9clearLineAEvpZMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV9downArrowAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV9downArrowAEvpZMV', '_$sSo7NSEventC6AppKitE10SpecialKeyV9leftArrowAEvgZ', + '_$sSo7NSEventC6AppKitE10SpecialKeyV9leftArrowAEvpZMV', '_$sSo7NSEventC6AppKitE10SpecialKeyVMa', + '_$sSo7NSEventC6AppKitE10SpecialKeyVMn', '_$sSo7NSEventC6AppKitE10SpecialKeyVN', + '_$sSo7NSEventC6AppKitE10SpecialKeyVSHACMc', '_$sSo7NSEventC6AppKitE10SpecialKeyVSQACMc', + '_$sSo7NSEventC6AppKitE10SpecialKeyVSYACMc', '_$sSo7NSEventC6AppKitE10specialKeyAbCE07SpecialE0VSgvg', '_$sSo7NSEventC6AppKitE10specialKeyAbCE07SpecialE0VSgvpMV', '_$sSo7NSImageC16CoreTransferable0C06AppKitMc', '_$sSo7NSImageC6AppKitE22transferRepresentationQrvgZ', - '_$sSo7NSImageC6AppKitE22transferRepresentationQrvpZQOMQ', + '_$sSo7NSImageC6AppKitE22transferRepresentationQrvpZMV', '_$sSo7NSImageC6AppKitE22transferRepresentationQrvpZQOMQ', '_$sSo7NSImageC6AppKitE24imageLiteralResourceNameABSS_tcfC', '_$sSo7NSImageC6AppKitE24imageLiteralResourceNameABSS_tcfc', '_$sSo7NSImageC6AppKitE8resourceAB21DeveloperToolsSupport13ImageResourceV_tcfC', '_$sSo7NSImageC6AppKitE8resourceAB21DeveloperToolsSupport13ImageResourceV_tcfc', '_$sSo7NSImageCs26_ExpressibleByImageLiteral6AppKitMc', '_$sSo7NSSoundC16CoreTransferable0C06AppKitMc', - '_$sSo7NSSoundC6AppKitE22transferRepresentationQrvgZ', '_$sSo7NSSoundC6AppKitE22transferRepresentationQrvpZQOMQ', - '_$sSo7NSSoundC6AppKitE4beepyyFZ', '_$sSo8NSCursorC6AppKitE33_defaultCustomPlaygroundQuickLooks01_fgH0Ovg', + '_$sSo7NSSoundC6AppKitE22transferRepresentationQrvgZ', '_$sSo7NSSoundC6AppKitE22transferRepresentationQrvpZMV', + '_$sSo7NSSoundC6AppKitE22transferRepresentationQrvpZQOMQ', + '_$sSo7NSSoundC6AppKitE4beepyyFZ', '_$sSo8NSButtonC6AppKitE28illuminateLightAcrossContentyyF', + '_$sSo8NSCursorC6AppKitE11frameResize8position10directionsABSo0a5FrameE8PositionV_AbCE0hE9DirectionO3SetVtFZ', + '_$sSo8NSCursorC6AppKitE12columnResize10directionsAbC21NSHorizontalDirectionO3SetV_tFZ', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV3allAGvgZ', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV3allAGvpZMV', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV6insertySb8inserted_AE17memberAfterInserttAEnF', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV6inwardAGvgZ', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV6inwardAGvpZMV', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV6removeyAESgAEF', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV6update4withAESgAEn_tF', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV7outwardAGvgZ', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV7outwardAGvpZMV', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV8containsySbAEF', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV8rawValueAGs4Int8V_tcfC', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV8rawValues4Int8Vvg', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetV8rawValues4Int8VvpMV', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetVMa', '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetVMn', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetVN', '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetVSHACMc', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetVSQACMc', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetVSYACMc', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetVs06OptionG0ACMc', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetVs0G7AlgebraACMc', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetVs25ExpressibleByArrayLiteralACMc', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO3SetVyAgEcfC', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO6inwardyA2EmFWC', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO7outwardyA2EmFWC', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO8allCasesSayAEGvgZ', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO8allCasesSayAEGvpZMV', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO8rawValueAESgs4Int8V_tcfC', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO8rawValues4Int8Vvg', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionO8rawValues4Int8VvpMV', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionOMa', '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionOMn', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionON', '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionOSHACMc', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionOSQACMc', '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionOSYACMc', + '_$sSo8NSCursorC6AppKitE20FrameResizeDirectionOs12CaseIterableACMc', + '_$sSo8NSCursorC6AppKitE33_defaultCustomPlaygroundQuickLooks01_fgH0Ovg', '_$sSo8NSCursorC6AppKitE33_defaultCustomPlaygroundQuickLooks01_fgH0OvpMV', + '_$sSo8NSCursorC6AppKitE9rowResize10directionsAbC19NSVerticalDirectionO3SetV_tFZ', '_$sSo8NSCursorCs38__DefaultCustomPlaygroundQuickLookable6AppKitMc', '_$sSo8NSScreenC6AppKitE20auxiliaryTopLeftAreaSo6CGRectVSgvg', '_$sSo8NSScreenC6AppKitE20auxiliaryTopLeftAreaSo6CGRectVSgvpMV', '_$sSo8NSScreenC6AppKitE21auxiliaryTopRightAreaSo6CGRectVSgvg', '_$sSo8NSScreenC6AppKitE21auxiliaryTopRightAreaSo6CGRectVSgvpMV', - _IBAppleScriptFramework, _IBCarbonFramework, _IBCocoaFramework, + _GDBDumpCursorStack, _NSAccessibilityAttributeValue, _NSAccessibilityCreateAXUIElementRef, + _NSAccessibilityDraggingDestinationDragAcceptedNotification, + _NSAccessibilityIsAttributeSettable, _NSAccessibilityRaiseUnsupportedActionException, + _NSAccessibilitySetAttributeValue, _NSAppKitPropertyCreator, + _NSAppKitVersionString, _NSAppearanceTextEffectsAttributeName, + _NSBridgedApplyGrammarCheckingIndication, _NSBridgedApplyTextCheckingIndication, + _NSBridgedPerformFinalGrammarChecking, _NSBridgedPerformPendingTextChecking, + _NSBridgedPerformPendingTextCheckingAndReturnInfo, _NSBridgedTextCheckingReplacedStringsKey, + _NSBridgedTextCheckingTextCorrectionsKey, _NSBridgedTextCheckingUnderlineRangesKey, + _NSCarbonWindowPropertyTag, _NSColorLocalPreferencesChangedNotification, + _NSCompositeRect, _NSDatePickerFormatString, _NSDumpCGImage, + _NSDumpImage, _NSExtensionAvailableExtensions, _NSExtensionAvailableExtensionsChangedNotification, + _NSImageNameActionTemplate, _NSImageNameAddTemplate, _NSImageNameBluetoothTemplate, + _NSImageNameBookmarksTemplate, _NSImageNameColumnViewTemplate, + _NSImageNameGoBackTemplate, _NSImageNameGoForwardTemplate, + _NSImageNameGoLeftTemplate, _NSImageNameGoRightTemplate, _NSImageNameHomeTemplate, + _NSImageNameIconViewTemplate, _NSImageNameListViewTemplate, + _NSImageNameLockLockedTemplate, _NSImageNameLockUnlockedTemplate, + _NSImageNamePathTemplate, _NSImageNameQuickLookTemplate, _NSImageNameRefreshTemplate, + _NSImageNameRemoveTemplate, _NSImageNameShareTemplate, _NSImageNameSlideshowTemplate, + _NSImageNameStopProgressTemplate, _NSImageNameTouchBarAddDetailTemplate, + _NSImageNameTouchBarAddTemplate, _NSImageNameTouchBarAlarmTemplate, + _NSImageNameTouchBarAudioInputMuteTemplate, _NSImageNameTouchBarAudioInputTemplate, + _NSImageNameTouchBarAudioOutputMuteTemplate, _NSImageNameTouchBarAudioOutputVolumeHighTemplate, + _NSImageNameTouchBarAudioOutputVolumeLowTemplate, _NSImageNameTouchBarAudioOutputVolumeMediumTemplate, + _NSImageNameTouchBarAudioOutputVolumeOffTemplate, _NSImageNameTouchBarBookmarksTemplate, + _NSImageNameTouchBarColorPickerFill, _NSImageNameTouchBarColorPickerFont, + _NSImageNameTouchBarColorPickerStroke, _NSImageNameTouchBarCommunicationAudioTemplate, + _NSImageNameTouchBarCommunicationVideoTemplate, _NSImageNameTouchBarComposeTemplate, + _NSImageNameTouchBarDeleteTemplate, _NSImageNameTouchBarDownloadTemplate, + _NSImageNameTouchBarEnterFullScreenTemplate, _NSImageNameTouchBarExitFullScreenTemplate, + _NSImageNameTouchBarFastForwardTemplate, _NSImageNameTouchBarFolderCopyToTemplate, + _NSImageNameTouchBarFolderMoveToTemplate, _NSImageNameTouchBarFolderTemplate, + _NSImageNameTouchBarGetInfoTemplate, _NSImageNameTouchBarGoBackTemplate, + _NSImageNameTouchBarGoDownTemplate, _NSImageNameTouchBarGoForwardTemplate, + _NSImageNameTouchBarGoUpTemplate, _NSImageNameTouchBarHistoryTemplate, + _NSImageNameTouchBarIconViewTemplate, _NSImageNameTouchBarListViewTemplate, + _NSImageNameTouchBarMailTemplate, _NSImageNameTouchBarNewFolderTemplate, + _NSImageNameTouchBarNewMessageTemplate, _NSImageNameTouchBarOpenInBrowserTemplate, + _NSImageNameTouchBarPauseTemplate, _NSImageNameTouchBarPlayPauseTemplate, + _NSImageNameTouchBarPlayTemplate, _NSImageNameTouchBarQuickLookTemplate, + _NSImageNameTouchBarRecordStartTemplate, _NSImageNameTouchBarRecordStopTemplate, + _NSImageNameTouchBarRefreshTemplate, _NSImageNameTouchBarRemoveTemplate, + _NSImageNameTouchBarRewindTemplate, _NSImageNameTouchBarRotateLeftTemplate, + _NSImageNameTouchBarRotateRightTemplate, _NSImageNameTouchBarSearchTemplate, + _NSImageNameTouchBarShareTemplate, _NSImageNameTouchBarSidebarTemplate, + _NSImageNameTouchBarSkipAhead15SecondsTemplate, _NSImageNameTouchBarSkipAhead30SecondsTemplate, + _NSImageNameTouchBarSkipAheadTemplate, _NSImageNameTouchBarSkipBack15SecondsTemplate, + _NSImageNameTouchBarSkipBack30SecondsTemplate, _NSImageNameTouchBarSkipBackTemplate, + _NSImageNameTouchBarSkipToEndTemplate, _NSImageNameTouchBarSkipToStartTemplate, + _NSImageNameTouchBarSlideshowTemplate, _NSImageNameTouchBarTagIconTemplate, + _NSImageNameTouchBarTextBoldTemplate, _NSImageNameTouchBarTextBoxTemplate, + _NSImageNameTouchBarTextCenterAlignTemplate, _NSImageNameTouchBarTextItalicTemplate, + _NSImageNameTouchBarTextJustifiedAlignTemplate, _NSImageNameTouchBarTextLeftAlignTemplate, + _NSImageNameTouchBarTextListTemplate, _NSImageNameTouchBarTextRightAlignTemplate, + _NSImageNameTouchBarTextStrikethroughTemplate, _NSImageNameTouchBarTextUnderlineTemplate, + _NSImageNameTouchBarUserAddTemplate, _NSImageNameTouchBarUserGroupTemplate, + _NSImageNameTouchBarUserTemplate, _NSImageNameTouchBarVolumeDownTemplate, + _NSImageNameTouchBarVolumeUpTemplate, _NSPrintFaxJob, _NSRulerDocViewToRulerConversion, + _NSRulerHashSizeCycle, _NSRulerHashSpacing, _NSRulerLabelInterval, + _NSSetSupplementalWords, _NSSetUseDefaultEmojiReplacementsDictionary, + _NSSidebarCurrentMetrics, _NSSidebarMetricsGroupRow, _NSSidebarTrackingAdapterNoSidebar, + _NSSliderAccessoryWidthDefault, _NSSliderAccessoryWidthWide, + _NSStartSynchronizingDefaults, _NSStopSynchronizingDefaults, + _NSSystemColorPreferencesChangedNotification, _NSTableRowAnimationFromMask, + _NSTableViewGroupViewKey, _NSTextEncapsulationAttributeName, + _NSToolbarCloudSharingItemIdentifier, _NSToolbarDidRemoveItemNotification, + _NSToolbarFlexibleSpaceItemIdentifier, _NSToolbarItemKey, + _NSToolbarNewIndexKey, _NSToolbarPrintItemIdentifier, _NSToolbarShowColorsItemIdentifier, + _NSToolbarShowFontsItemIdentifier, _NSToolbarSidebarSeparatorItemIdentifier, + _NSToolbarSpaceItemIdentifier, _NSToolbarToggleInspectorItemIdentifier, + _NSToolbarToggleSidebarItemIdentifier, _NSToolbarWillAddItemNotification, + _NSToolbarWritingToolsItemIdentifier, _NSTouchBarItemIdentifierCandidateList, + _NSTouchBarItemIdentifierFixedSpaceLarge, _NSTouchBarItemIdentifierFixedSpaceSmall, + _NSTouchBarItemIdentifierFlexibleSpace, _NSTouchBarItemIdentifierOtherItemsProxy, + _NSTouchBarItemIdentifierSystemCloseButton, _NSTypedFilenamesPboardType, + _NSUserAccentColorGetHardwareAccentColorName, _NSUserAccentHasHardwareColor, + _ResetNSAlertConstraintBasedLayout, _ResetNSAlertWeakDelegate, + _ResetNSAllowApplicationDisableScreenUpdates, _ResetNSAllowMultipleDrags, + _ResetNSAutoFillHeuristicControllerEnabled, _ResetNSAutomaticallyTrackKeyValueDependencies, + _ResetNSCollectionViewWeakDelegate, _ResetNSConservativeTAMICConstraintCreation, + _ResetNSConstraintBasedLayoutDetectAmbiguousViews, _ResetNSConstraintBasedLayoutEngageNonLazily, + _ResetNSControlUseTextStyleFonts, _ResetNSDragAsync, _ResetNSDynamicPropertiesCaptureDependencyContextMetadata, + _ResetNSISIconPreparationMode, _ResetNSImageCompositeFromRectIsInRepCoords, + _ResetNSImageRepHardDeprecateEPS, _ResetNSLifeguardOnDuty, + _ResetNSLifeguardTestable, _ResetNSLoadNibDataPolicy, _ResetNSMenuAllowHotKeyAssignmentByAction, + _ResetNSOutlineViewValidateChanges, _ResetNSPasteboardRequiresSecureCoding, + _ResetNSPopoverWeakDelegate, _ResetNSSafeApertureCompatibilitySetsEnvironmentVariables, + _ResetNSSavePanelForceMicrosoftAccessoryViewCentering, _ResetNSSavePanelWorkAroundBadAccessoryViewFittingSizes, + _ResetNSScreenIsMutable, _ResetNSSplitViewWeakDelegate, _ResetNSStackViewWeakDelegate, + _ResetNSSynchronizeAppKitDefaults, _ResetNSTestRemoteSavePanel, + _ResetNSToolbarSynchronizeConfiguration, _ResetNSUseRemoteSavePanel, + _ResetNSViewControllerSupports10_10Features, _ResetNSViewThrowUnsatisfiableConstraints, + _ResetNSVisualEffectViewAlwaysUseBackdrop, _ResetNSWindowAssertWhenDisplayCycleLimitReached, + _ResetNSWindowTabbingEnabled, _ResetNSWorkspaceRaiseOnInvalidConfigurationDictionary, + _SetNSAlertConstraintBasedLayout, _SetNSAlertWeakDelegate, + _SetNSAllowApplicationDisableScreenUpdates, _SetNSAllowMultipleDrags, + _SetNSAutoFillHeuristicControllerEnabled, _SetNSAutomaticallyTrackKeyValueDependencies, + _SetNSCollectionViewWeakDelegate, _SetNSConservativeTAMICConstraintCreation, + _SetNSConstraintBasedLayoutDetectAmbiguousViews, _SetNSConstraintBasedLayoutEngageNonLazily, + _SetNSControlUseTextStyleFonts, _SetNSDragAsync, _SetNSDynamicPropertiesCaptureDependencyContextMetadata, + _SetNSISIconPreparationMode, _SetNSImageCompositeFromRectIsInRepCoords, + _SetNSImageRepHardDeprecateEPS, _SetNSLifeguardOnDuty, _SetNSLifeguardTestable, + _SetNSLoadNibDataPolicy, _SetNSMenuAllowHotKeyAssignmentByAction, + _SetNSOutlineViewValidateChanges, _SetNSPasteboardRequiresSecureCoding, + _SetNSPopoverWeakDelegate, _SetNSSafeApertureCompatibilitySetsEnvironmentVariables, + _SetNSSavePanelForceMicrosoftAccessoryViewCentering, _SetNSSavePanelWorkAroundBadAccessoryViewFittingSizes, + _SetNSScreenIsMutable, _SetNSSplitViewWeakDelegate, _SetNSStackViewWeakDelegate, + _SetNSSynchronizeAppKitDefaults, _SetNSTestRemoteSavePanel, + _SetNSToolbarSynchronizeConfiguration, _SetNSUseRemoteSavePanel, + _SetNSViewControllerSupports10_10Features, _SetNSViewThrowUnsatisfiableConstraints, + _SetNSVisualEffectViewAlwaysUseBackdrop, _SetNSWindowAssertWhenDisplayCycleLimitReached, + _SetNSWindowTabbingEnabled, _SetNSWorkspaceRaiseOnInvalidConfigurationDictionary, + __NSAddButtonRectToWindowWithActivation, __NSAddPointValueForAxis, + __NSAddRectsToWindow, __NSAddSizeValueForAxis, __NSAddSpecialCommandRectToWindow, + __NSAppKitGlobalLock, __NSAppendToKillRing, __NSApplicationMetricsGatheringEnabled, + __NSApplyDirectionalInsetsToRect, __NSApplyOffsetFromEdgeInsetsForPoint, + __NSClearButtonRectsInWindow, __NSClearDragRectsInWindow, + __NSClearMarkedRange, __NSCollectionLayoutCompositionalSolverRebasedPreferredSizesForSolutions, + __NSColorFromDefault, __NSColorSpaceNameFromNum, __NSCreateImageRef, + __NSCreateKeyBindingState, __NSDictionaryWithAdditionalKeyAndObject, + __NSDiffableDataSourceApplyDeleteUpdate, __NSDiffableDataSourceApplyInsertUpdate, + __NSDiffableDataSourceApplyMoveUpdate, __NSDirectionalEdgeForRectAlignmentAndAxis, + __NSDirectionalEdgesForAxis, __NSDirectionalInsetsAdd, __NSDirectionalInsetsFlipped, + __NSDirectionalInsetsForInsetsAlongAxis, __NSDocumentSerializationInfo, + __NSEdgeInsetsEqualToInsetsAlongAxis, __NSEffectiveEdgeInsetsForSize, + __NSFrameByPinningToContainerFrameEdge, __NSGetAppKitMenu, + __NSGetCarbonMenu, __NSGetCarbonMenu2, __NSGetMenuItemForCommandKeyEvent, + __NSHIViewDrawNSImage, __NSImageGetSize, __NSInitializeKillRing, + __NSIsCarbonApp, __NSKitBundle, __NSLeadingOffsetForInsetsAlongAxis, + __NSLoadMacSimpleTextFormatWithOptions, __NSLogCTM, __NSMakeAttributedStringFromCarbonTEData, + __NSMakeCarbonTEDataFromAttributedString, __NSNameFromKeyEquivalentString, + __NSNegatedDirectionalInsetsForInsets, __NSNewCatalogColor, + __NSNewKillRingSequence, __NSNormalizeOffsetForContainerRect, + __NSNormalizeRectForPositiveOrigin, __NSOffsetFromCenteredAnchorPointForEdgesInRect, + __NSOpenAndSavePanelServiceRequestsOrderWindow, __NSOpenAndSavePanelServiceRequestsUpdateSidebarTrackingPosition, + __NSOpenAndSavePanelsServiceBridgeKeMostRecentCompletion, + __NSOpenAndSavePanelsServiceBridgeKeMostRecentCompletionKeyIndex, + __NSOpenAndSavePanelsServiceBridgeKeMostRecentCompletionKeyResult, + __NSOpenAndSavePanelsServiceBridgeKeyBOOL, __NSOpenAndSavePanelsServiceBridgeKeyNSError, + __NSOpenAndSavePanelsServiceBridgeKeyQueryFilenameOK, __NSOpenAndSavePanelsServiceBridgeKeyRemoteDelegateInvocation, + __NSOpenAndSavePanelsServiceBridgeKeyRemoteIBActionInvocation, + __NSOpenAndSavePanelsServiceBridgeKeyRemoteIBActionNewDocument, + __NSOpenAndSavePanelsServiceBridgeKeyRemoteMethodInvocation, + __NSOpenAndSavePanelsServiceBridgeKeySendDelegateDirectoryChanged, + __NSOpenAndSavePanelsServiceBridgeKeySendDelegateDirectoryURLChanged, + __NSOpenAndSavePanelsServiceBridgeKeySendDelegatePanelShouldEnableURL, + __NSOpenAndSavePanelsServiceBridgeKeySendDelegatePanelUserEnteredFilename, + __NSOpenAndSavePanelsServiceBridgeKeySendDelegatePanelWillExpand, + __NSOpenAndSavePanelsServiceBridgeKeySendDelegateSelectionDidChange, + __NSOpenAndSavePanelsServiceBridgeKeyUniqueID, __NSOpposingDirectionalEdgeForEdge, + __NSOrthogonalAxisForAxis, __NSPinnedFrameForFrameWithContainerFrameVisibleFrame, + __NSPinnedNonOverlappingFramesForContentFrameVisibleFrame, + __NSPointValueForAxis, __NSPopUpCarbonMenu2, __NSPrependToKillRing, + __NSRTreeExpansionCostScoreForFrames, __NSRectAddOffset, __NSRectAdjustWithAnchorPoint, + __NSRectAnchorPointForEdges, __NSRectAnchorPointForUnitAnchorPoint, + __NSRectByAnchoringSizeInContainer, __NSRectClampRectToMinimumSizeForAxis, + __NSRectIntegralWithScale, __NSRectMaxPointValueAlongAxis, + __NSRectMinPointValueAlongAxis, __NSRectSubtractOffset, __NSRectSubtractingRectYieldingDirectionalInsets, + __NSResetKillRingOperationFlag, __NSSetDottedLinePattern, + __NSSetFocusRingStyle, __NSSetKillRingToYankedState, __NSSetPointValueForAxis, + __NSSetSizeValueForAxis, __NSSetWindowOpacity, __NSShapeRoundedWindow, + __NSShapeRoundedWindowWithWeighting, __NSShortAppName, __NSSizeAdd, + __NSSizeClampToMinimumSizeForAxis, __NSSizeEqualToSizeWithPrecision, + __NSSizeEquivalentToSize, __NSSizeRoundToScale, __NSSizeValueForAxis, + __NSTextCellSize, __NSTextContainerForTextCell, __NSToolbarMetricsGetDefault, + __NSTotalEdgeDimensionsForLayoutAxis, __NSTrailingOffsetForInsetsAlongAxis, + __NSUnitAnchorPointForEdges, __NSYankFromKillRing, __NXDrawImage, + __NXDrawTextCell, __NXKitString, __NXLastModalSession, __NXScreenForRect, + __NXScreenMaxYForRect, __NXShowKeyAndMain, __NXSmartPaste, + __compareTabViewItemWidth, __enableNSPreferences, '__swift_FORCE_LOAD_$_swiftAppKit' ] + objc-classes: [ NSAccessibilityMockUIElement, NSAccessibilityProxy, NSApplicationExtensionItem, + NSApplicationExtensionSession, NSAutounbinder, NSButtonAppearanceBasedVisualProvider, + NSButtonImageSource, NSButtonTouchBarItem, NSCachedRGBColor, + NSCalibratedRGBColor, NSCandidateListTouchBarItem, NSCarbonMenuImpl, + NSColorPickerSliders, NSColorPickerTouchBarItem, NSColorSpaceColor, + NSComboBoxWindow, NSConcretePrintOperation, NSContentMaskingView, + NSCoreUIImageRep, NSCursor, NSDocumentCustomConfirmationDialogSettings, + NSDocumentTitlebarController, NSDrawerFrame, NSFocusStack, + NSGradient, NSGroupTouchBarItem, NSImage, NSLinearGradientView, + NSLocalOpenPanel, NSLocalSavePanel, NSMenuItemViewer, NSMenuToolbarItem, + NSMultiplePagePDFImageViewTextAttachmentCell, NSNavSplitView, + NSNextStepFrame, NSOSPDefaults, NSObservableDefaults, NSOtherItemsProxyTouchBarItem, + NSPickerTouchBarItem, NSPopoverTouchBarItem, NSRectSet, NSRemoteOpenPanel, + NSRemoteSavePanel, NSRuleEditorPopupButton, NSRuleEditorViewSliceRow, + NSSearchToolbarItem, NSSecureTextView, NSSelectionArray, NSSeparatorToolbarItem, + NSSharingServicePickerToolbarItem, NSSharingServicePickerTouchBarItem, + NSSharingService_Subsystem, NSSliderAccessory, NSSliderAccessoryBehavior, + NSSliderTouchBarItem, NSSplitViewSplitter, NSStatusBarButtonCell, + NSStepperTouchBarItem, NSSubTextStorage, NSSynchronizedDefaults, + NSSystemInfoPanel, NSTableRow, NSTableViewCellProxy, NSTextEncapsulation, + NSTextSmartReplyReceiver, NSTextViewCompletionController, + NSTextViewCompletionWindow, NSThemeDocumentButton, NSThemeFrame, + NSTitledFrame, NSTokenTextView, NSToolTip, NSToolTipManager, + NSToolTipPanel, NSToolTipStringDrawingLayoutManager, NSToolbar, + NSToolbarButton, NSToolbarFlexibleSpaceItem, NSToolbarItem, + NSToolbarItemGroup, NSToolbarPoofAnimator, NSToolbarSeparatorItem, + NSToolbarSpaceItem, NSTouchBar, NSTouchBarItem, NSTouchBarViewController, + NSTrackingSeparatorToolbarItem, NSTreeControllerTreeNode, + NSUndoReplaceCharacters, NSUndoSetAttributes, NSUndoTextOperation, + NSUndoTyping, NSWindowAuxiliary, NSWindowRestorationArchive, + NSWindowRestorationArchivingOptions, NSWindowRestorationOptions, + NSWritingToolsCoordinatorAnimationParameters, NSWritingToolsCoordinatorContext, + _NSBorderlessLayerTreeProjectionWindow, _NSBrowserColumnsContainerView, + _NSBrowserScrollView, _NSCollectionViewFeedbackLoopDebugger, + _NSDatePickerCalendarOverlay, _NSDatePickerCellSubfield, _NSDiffableDataSourceDiffer, + _NSDiffableDataSourceState, _NSDiffableDataSourceViewUpdater, + _NSDisplayOperationStack, _NSGenericCollectionViewUpdateItem, + _NSIntelligenceUIPlatterView, _NSMenuContext, _NSMenuServicesView, + _NSPersistentUIStorageServiceListener, _NSServiceEntry, _NSServiceFilter, + _NSThemeFullScreenButtonCell, _NSThemeWidget, _NSThemeWidgetCell, + _NSToolbarClippedItemsIndicatorCell, _NSToolbarFlexibleSpace, + _NSToolbarItemViewerLabelCellPopUpCell, _NSToolbarItemViewerLabelView, + _NSToolbarSeparator, _NSToolbarSpace, _NSViewLayoutFeedbackLoopDebugger, + _NSWTUITextChunk, _NSWTUITextPreview, _TtC6AppKit17NSLivingColorView, + _TtC6AppKit24UnbridgedMenuBarSettings, _TtC6AppKit34_NSIntelligenceUIWashAnimationView, + _TtCO6AppKit14IntelligenceUI15PromptEntryView, __NSDiffableDataSource, + __NSDiffableDataSourceSnapshot ] + objc-ivars: [ NSAccessibilityMockUIElement._parent, NSActionCell._action, + NSActionCell._controlView, NSActionCell._target, NSApplication._delegate, + NSApplication._keyWindow, NSApplication._mainWindow, NSBox._borderRect, + NSBox._contentView, NSBrowser._columns, NSBrowser._matrixClass, + NSButtonCell._altContents, NSButtonCell._bcFlags2, NSButtonCell._keyEquivalent, + NSButtonCell._sound, NSCarbonMenuImpl._menu, NSColorPanel._target, + NSColorPickerSliders.sliderModePopUp, NSColorSpaceColor._cachedCGColor, + NSColorSpaceColor.colorSpace, NSColorSpaceColor.components, + NSColorSpaceColor.numComponents, NSColorWell._color, NSColorWell._cwFlags, + NSComboBoxCell._buttonCell, NSComboBoxCell._cbcFlags, NSComboBoxCell._popUp, + NSComboBoxCell._scrollView, NSComboBoxCell._tableView, NSComboBoxWindow._attachedToParent, + NSControl._cell, NSControl._conFlags, NSDrawer._drawerWindow, + NSDrawerFrame.drawerEdge, NSDrawerFrame.trackingTag, NSEPSImageRep._pdfImageRep, + NSEvent._data, NSEvent._eventRef, NSEvent._modifierFlags, + NSEvent._window, NSEvent._windowNumber, NSImage._flags, NSImageCell._scaledImage, + NSImageRep._pixelsHigh, NSImageRep._pixelsWide, NSImageRep._repFlags, + NSImageRep._size, NSImageView._action, NSImageView._target, + NSMatrix._backgroundColor, NSMatrix._cellClass, NSMatrix._cells, + NSMatrix._delegate, NSMatrix._font, NSMatrix._mFlags, NSMatrix._numCols, + NSObjectController._content, NSObjectController._objectHandler, + NSRulerMarker._location, NSRulerMarker._rFlags, NSRulerMarker._ruler, + NSSavePanel._cancelButton, NSSavePanel._nameField, NSSavePanel._newFolderButton, + NSSavePanel._okButton, NSScrollView._cornerView, NSScrollView._extraIvars, + NSScrollView._hScroller, NSScrollView._horizontalRuler, NSScrollView._sFlags, + NSScrollView._vScroller, NSScrollView._verticalRuler, NSScroller._sFlags2, + NSSegmentItem._alternateImage, NSSegmentItem._flags, NSSegmentItem._fullWidth, + NSSegmentItem._image, NSSegmentItem._imageRect, NSSegmentItem._label, + NSSegmentItem._labelRect, NSSegmentItem._menu, NSSegmentItem._menuIndRect, + NSSegmentItem._shrinkage, NSSegmentItem._tag, NSSegmentItem._toolTip, + NSSegmentItem._toolTipTag, NSSegmentItem._width, NSSliderCell._maxValue, + NSSliderCell._minValue, NSSliderCell._numberOfTickMarks, NSSliderCell._scFlags, + NSSliderCell._value, NSSystemInfoPanel._optionsDictionary, + NSSystemInfoPanel.copyrightView, NSSystemInfoPanel.infoPanel, + NSTableColumn._dataCell, NSTableColumn._headerCell, NSTableColumn._maxWidth, + NSTableColumn._minWidth, NSTableHeaderView._draggedColumn, + NSTableHeaderView._draggedDistance, NSTableHeaderView._headerDragImage, + NSTableHeaderView._showHandCursorFired, NSTableHeaderView._skipDrawingSeparator, + NSTableHeaderView._tableView, NSTableHeaderView._toolTipRectsDirty, + NSTableRow._row, NSTableRow._tableView, NSTableView._backgroundColor, + NSTableView._cornerView, NSTableView._dataSource, NSTableView._editingCell, + NSTableView._gridColor, NSTableView._intercellSpacing, NSTableView._selectedRows, + NSTableView._tvFlags, NSTextAttachmentCell._attachment, NSTextFieldCell._backgroundColor, + NSTextFieldCell._textColor, NSTextFieldCell._tfFlags, NSTextViewCompletionController._completionWindow, + NSTextViewCompletionController._tableView, NSThemeFrame._tFlags, + NSTitledFrame.fileButton, NSToolTip.owner, NSToolTip.trackingNum, + NSToolTip.ttFlags, NSToolTip.view, NSToolTipStringDrawingLayoutManager._layoutManager, + NSTreeNode._childNodes, NSTreeNode._parentNode, NSUndoReplaceCharacters._attributedString, + NSUndoReplaceCharacters._replacementRange, NSUndoTextOperation._affectedRange, + NSUndoTextOperation._textStorage, NSUndoTextOperation._undoManager, + NSUndoTyping._attributedString, NSUndoTyping._replacementRange, + NSView._dragTypes, NSView._superview, NSWindow._auxiliaryStorage, + NSWindow._contentView, NSWindow._delegate, NSWindow._styleMask, + NSWindow._wFlags, NSWindowAuxiliary._auxWFlags, NSWindowAuxiliary.docWindow, + _NSBrowserColumnsContainerView._brccvFlags, _NSDatePickerCellSubfield._frame, + _NSServiceEntry._flags, _NSServiceEntry._serviceFilters, _NSServiceEntry.bundleIdentifier, + _NSServiceEntry.defaultTitle, _NSServiceEntry.localizedTitleWithoutSubstitutions, + _NSServiceEntry.sendFileTypes, _NSServiceEntry.sendPasteboardTypes, + _NSServiceFilter.bundleIdentifier, _NSServiceFilter.characterLimit, + _NSServiceFilter.entry, _NSServiceFilter.flags, _NSServiceFilter.linkSchemes, + _NSServiceFilter.textScript, _NSServiceFilter.wordLimit, _NSToolbarItemViewerLabelCellPopUpCell._realTitle, + _NSToolbarSeparator._inPalette ] + - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] + symbols: [ _IBAppleScriptFramework, _IBCarbonFramework, _IBCocoaFramework, _IBSwingFramework, _NSAbortModalException, _NSAbortPrintingException, _NSAboutPanelOptionApplicationIcon, _NSAboutPanelOptionApplicationName, _NSAboutPanelOptionApplicationVersion, _NSAboutPanelOptionCredits, @@ -3563,6 +5516,8 @@ exports: _NSApplicationLaunchRemoteNotificationKey, _NSApplicationLaunchUserNotificationKey, _NSApplicationLoad, _NSApplicationMain, _NSApplicationProtectedDataDidBecomeAvailableNotification, _NSApplicationProtectedDataWillBecomeUnavailableNotification, + _NSApplicationShouldBeginSuppressingHighDynamicRangeContentNotification, + _NSApplicationShouldEndSuppressingHighDynamicRangeContentNotification, _NSApplicationTestingNotificationTestNameKey, _NSApplicationTestingNotificationTestResultsKey, _NSApplicationTestingStartIsStrictKey, _NSApplicationTestingTestFinishedNotification, _NSApplicationWillBecomeActiveNotification, _NSApplicationWillFinishLaunchingNotification, @@ -3767,25 +5722,26 @@ exports: _NSImageNameTouchBarControlStripNotificationCenterTemplate, _NSImageNameTouchBarControlStripQuickActionsTemplate, _NSImageNameTouchBarControlStripScreenSaverTemplate, _NSImageNameTouchBarControlStripScreenshotTemplate, _NSImageNameTouchBarControlStripShowDesktopTemplate, - _NSImageNameTouchBarControlStripSiri, _NSImageNameTouchBarControlStripSleepTemplate, - _NSImageNameTouchBarControlStripSpotlightTemplate, _NSImageNameTouchBarControlStripVolumeDownTemplate, - _NSImageNameTouchBarControlStripVolumeUpTemplate, _NSImageNameTouchBarCurrentLocationTemplate, - _NSImageNameTouchBarDesktopTemplate, _NSImageNameTouchBarDocumentsTemplate, - _NSImageNameTouchBarFavoriteOffTemplate, _NSImageNameTouchBarFavoriteOnTemplate, - _NSImageNameTouchBarFlowViewTemplate, _NSImageNameTouchBarGalleryViewTemplate, - _NSImageNameTouchBarGetInfoOutlineTemplate, _NSImageNameTouchBarGridTemplate, - _NSImageNameTouchBarHomeLocationTemplate, _NSImageNameTouchBarHomeTemplate, - _NSImageNameTouchBarHomepageTemplate, _NSImageNameTouchBarInternationalHandwritingTemplate, - _NSImageNameTouchBarLinkSafariTemplate, _NSImageNameTouchBarLoveOffTemplate, - _NSImageNameTouchBarLoveOnTemplate, _NSImageNameTouchBarMoreTemplate, - _NSImageNameTouchBarNewFolderWithSelectionTemplate, _NSImageNameTouchBarPlayheadTemplate, - _NSImageNameTouchBarPrintTemplate, _NSImageNameTouchBarSearchMagGlassTemplate, - _NSImageNameTouchBarStopTemplate, _NSImageNameTouchBarTextOptionsTemplate, - _NSImageNameTouchBarTransferDownloadTemplate, _NSImageNameTouchBarTrashTemplate, - _NSImageNameTouchBarWorkTemplate, _NSImageNameTouchBariCloudTemplate, - _NSImageNameTrashEmpty, _NSImageNameTrashFull, _NSImageNameUser, - _NSImageNameUserAccounts, _NSImageNameUserGroup, _NSImageNameUserGuest, - _NSImageProgressive, _NSImageRGBColorTable, _NSImageRepRegistryDidChangeNotification, + _NSImageNameTouchBarControlStripSiri, _NSImageNameTouchBarControlStripSiriAppleIntelligence, + _NSImageNameTouchBarControlStripSleepTemplate, _NSImageNameTouchBarControlStripSpotlightTemplate, + _NSImageNameTouchBarControlStripVolumeDownTemplate, _NSImageNameTouchBarControlStripVolumeUpTemplate, + _NSImageNameTouchBarCurrentLocationTemplate, _NSImageNameTouchBarDesktopTemplate, + _NSImageNameTouchBarDocumentsTemplate, _NSImageNameTouchBarFavoriteOffTemplate, + _NSImageNameTouchBarFavoriteOnTemplate, _NSImageNameTouchBarFlowViewTemplate, + _NSImageNameTouchBarGalleryViewTemplate, _NSImageNameTouchBarGetInfoOutlineTemplate, + _NSImageNameTouchBarGridTemplate, _NSImageNameTouchBarHomeLocationTemplate, + _NSImageNameTouchBarHomeTemplate, _NSImageNameTouchBarHomepageTemplate, + _NSImageNameTouchBarInternationalHandwritingTemplate, _NSImageNameTouchBarLinkSafariTemplate, + _NSImageNameTouchBarLoveOffTemplate, _NSImageNameTouchBarLoveOnTemplate, + _NSImageNameTouchBarMoreTemplate, _NSImageNameTouchBarNewFolderWithSelectionTemplate, + _NSImageNameTouchBarPlayheadTemplate, _NSImageNameTouchBarPrintTemplate, + _NSImageNameTouchBarSearchMagGlassTemplate, _NSImageNameTouchBarStopTemplate, + _NSImageNameTouchBarTextOptionsTemplate, _NSImageNameTouchBarTransferDownloadTemplate, + _NSImageNameTouchBarTrashTemplate, _NSImageNameTouchBarWorkTemplate, + _NSImageNameTouchBariCloudTemplate, _NSImageNameTrashEmpty, + _NSImageNameTrashFull, _NSImageNameUser, _NSImageNameUserAccounts, + _NSImageNameUserGroup, _NSImageNameUserGuest, _NSImageProgressive, + _NSImageRGBColorTable, _NSImageRepRegistryDidChangeNotification, _NSImageSetConverterFunction, _NSIncludedKeysBinding, _NSInitialKeyBinding, _NSInitialValueBinding, _NSInitializeCGFocusRingStyleForTime, _NSInkTextPboardType, _NSInputAlignmentFilterGuideEqualityThreshold, @@ -3816,6 +5772,7 @@ exports: _NSNullPlaceholderBindingOption, _NSNumberOfColorComponents, _NSObservedKeyPathKey, _NSObservedObjectKey, _NSOcclusionDetectionViewDidBecomeOccludedNotification, _NSOcclusionDetectionViewDidBecomeUnoccludedNotification, + _NSOcclusionDetectionViewDidChangeOcclusionReasonNotification, _NSOffStateImageBinding, _NSOnStateImageBinding, _NSOpenGLGetOption, _NSOpenGLGetVersion, _NSOpenGLSetOption, _NSOptionsKey, _NSOutlineViewColumnDidMoveNotification, _NSOutlineViewColumnDidResizeNotification, _NSOutlineViewDisclosureButtonKey, @@ -3825,11 +5782,17 @@ exports: _NSOutlineViewShowHideButtonKey, _NSPDFPboardType, _NSPICTPboardType, _NSPNGPboardType, _NSPPDIncludeNotFoundException, _NSPPDIncludeStackOverflowException, _NSPPDIncludeStackUnderflowException, _NSPPDParseException, - _NSPasteboardCommunicationException, _NSPasteboardNameDrag, - _NSPasteboardNameFind, _NSPasteboardNameFont, _NSPasteboardNameGeneral, - _NSPasteboardNameRuler, _NSPasteboardTypeColor, _NSPasteboardTypeFileURL, - _NSPasteboardTypeFindPanelSearchOptions, _NSPasteboardTypeFont, - _NSPasteboardTypeHTML, _NSPasteboardTypeMultipleTextSelection, + _NSPasteboardCommunicationException, _NSPasteboardDetectionPatternCalendarEvent, + _NSPasteboardDetectionPatternEmailAddress, _NSPasteboardDetectionPatternFlightNumber, + _NSPasteboardDetectionPatternLink, _NSPasteboardDetectionPatternMoneyAmount, + _NSPasteboardDetectionPatternNumber, _NSPasteboardDetectionPatternPhoneNumber, + _NSPasteboardDetectionPatternPostalAddress, _NSPasteboardDetectionPatternProbableWebSearch, + _NSPasteboardDetectionPatternProbableWebURL, _NSPasteboardDetectionPatternShipmentTrackingNumber, + _NSPasteboardMetadataTypeContentType, _NSPasteboardMetadataTypeImageProperties, + _NSPasteboardNameDrag, _NSPasteboardNameFind, _NSPasteboardNameFont, + _NSPasteboardNameGeneral, _NSPasteboardNameRuler, _NSPasteboardTypeColor, + _NSPasteboardTypeFileURL, _NSPasteboardTypeFindPanelSearchOptions, + _NSPasteboardTypeFont, _NSPasteboardTypeHTML, _NSPasteboardTypeMultipleTextSelection, _NSPasteboardTypePDF, _NSPasteboardTypePNG, _NSPasteboardTypeRTF, _NSPasteboardTypeRTFD, _NSPasteboardTypeRuler, _NSPasteboardTypeSound, _NSPasteboardTypeString, _NSPasteboardTypeTIFF, _NSPasteboardTypeTabularText, @@ -3935,12 +5898,12 @@ exports: _NSSidebarGroupRowTextColorForState, _NSSidebarGroupRowTextColor_isEmphasized, _NSSidebarIconColorForState_isEmphasized, _NSSidebarMetricsForRowSize, _NSSidebarTextColorForState_isEmphasized, _NSSortDescriptorsBinding, - _NSSoundPboardType, _NSSourceTextScalingDocumentOption, _NSSpeechCharacterModeProperty, - _NSSpeechCommandDelimiterProperty, _NSSpeechCommandPrefix, - _NSSpeechCommandSuffix, _NSSpeechCurrentVoiceProperty, _NSSpeechDictionaryAbbreviations, - _NSSpeechDictionaryEntryPhonemes, _NSSpeechDictionaryEntrySpelling, - _NSSpeechDictionaryLocaleIdentifier, _NSSpeechDictionaryModificationDate, - _NSSpeechDictionaryPronunciations, _NSSpeechErrorCount, _NSSpeechErrorNewestCharacterOffset, + _NSSoundPboardType, _NSSpeechCharacterModeProperty, _NSSpeechCommandDelimiterProperty, + _NSSpeechCommandPrefix, _NSSpeechCommandSuffix, _NSSpeechCurrentVoiceProperty, + _NSSpeechDictionaryAbbreviations, _NSSpeechDictionaryEntryPhonemes, + _NSSpeechDictionaryEntrySpelling, _NSSpeechDictionaryLocaleIdentifier, + _NSSpeechDictionaryModificationDate, _NSSpeechDictionaryPronunciations, + _NSSpeechErrorCount, _NSSpeechErrorNewestCharacterOffset, _NSSpeechErrorNewestCode, _NSSpeechErrorOldestCharacterOffset, _NSSpeechErrorOldestCode, _NSSpeechErrorsProperty, _NSSpeechInputModeProperty, _NSSpeechModeLiteral, _NSSpeechModeNormal, _NSSpeechModePhoneme, @@ -3970,70 +5933,75 @@ exports: _NSSplitViewControllerAutomaticDimension, _NSSplitViewDidResizeSubviewsNotification, _NSSplitViewDividerIndexKey, _NSSplitViewItemUnspecifiedDimension, _NSSplitViewUserResizeKey, _NSSplitViewWillResizeSubviewsNotification, - _NSStatusBarLayoutChangedNotificationName, _NSStringPboardType, - _NSSystemColorsDidChangeNotification, _NSTIFFException, _NSTIFFPboardType, - _NSTableViewColumnDidMoveNotification, _NSTableViewColumnDidResizeNotification, + _NSStatusBarLayoutChangedNotificationName, _NSStringFromEventType, + _NSStringPboardType, _NSSystemColorsDidChangeNotification, + _NSTIFFException, _NSTIFFPboardType, _NSTableViewColumnDidMoveNotification, + _NSTableViewColumnDidResizeNotification, _NSTableViewCurrentRowSelectionUserInfoKey, _NSTableViewCurrentRowSizeStyle, _NSTableViewCurrentRowSizeStyleDidChange, - _NSTableViewDefaultRowSizeStyle, _NSTableViewRowViewKey, _NSTableViewSelectionDidChangeNotification, + _NSTableViewDefaultRowSizeStyle, _NSTableViewPreviousRowSelectionUserInfoKey, + _NSTableViewRowViewKey, _NSTableViewSelectionDidChangeNotification, _NSTableViewSelectionIsChangingNotification, _NSTableViewTrackingAreaColumnKey, _NSTableViewTrackingAreaRowKey, _NSTabularTextPboardType, - _NSTargetBinding, _NSTargetTextScalingDocumentOption, _NSTextCheckingAppIdentifierKey, - _NSTextCheckingAppendCorrectionLanguageKey, _NSTextCheckingBackgroundLoadKey, - _NSTextCheckingCompletionRangesKey, _NSTextCheckingCompletionStringsKey, - _NSTextCheckingControlRepeatedAutocorrectionsKey, _NSTextCheckingDocumentAuthorKey, - _NSTextCheckingDocumentTitleKey, _NSTextCheckingDocumentURLKey, - _NSTextCheckingEditedRangeKey, _NSTextCheckingGenerateInlinePredictionsKey, - _NSTextCheckingIgnoreTerminationKey, _NSTextCheckingInlinePredictionsOnlyKey, - _NSTextCheckingInputContextHistoryDictionaryKey, _NSTextCheckingInsertionPointKey, - _NSTextCheckingKeyEventArrayKey, _NSTextCheckingKeyEventDataKey, - _NSTextCheckingOrthographyKey, _NSTextCheckingParameterBundlesKey, - _NSTextCheckingPredictionKey, _NSTextCheckingPrefixKey, _NSTextCheckingQuotesKey, - _NSTextCheckingRecheckOrthographyKey, _NSTextCheckingReferenceDateKey, - _NSTextCheckingReferenceTimeZoneKey, _NSTextCheckingRegularExpressionsKey, - _NSTextCheckingReplacedStringsKey, _NSTextCheckingReplacementsKey, - _NSTextCheckingResponseKey, _NSTextCheckingSelectedRangeKey, - _NSTextCheckingSelectedRangeLengthKey, _NSTextCheckingSelectedRangeLocationKey, - _NSTextCheckingSoftSpaceRangeKey, _NSTextCheckingSupplementalDictionaryNameKey, - _NSTextCheckingSuppressAdaptationKey, _NSTextCheckingSuppressInitialCapitalizationKey, - _NSTextCheckingSuppressKeyEventDataKey, _NSTextCheckingSuppressPostEditingKey, - _NSTextCheckingTextCorrectionsKey, _NSTextCheckingUnderlineRangesKey, - _NSTextColorBinding, _NSTextCompletedAttributeName, _NSTextCompletionAttributeName, - _NSTextContentTypeAddressCity, _NSTextContentTypeAddressCityAndState, - _NSTextContentTypeAddressState, _NSTextContentTypeBirthdate, - _NSTextContentTypeBirthdateDay, _NSTextContentTypeBirthdateMonth, - _NSTextContentTypeBirthdateYear, _NSTextContentTypeCountryName, - _NSTextContentTypeCreditCardExpiration, _NSTextContentTypeCreditCardExpirationMonth, - _NSTextContentTypeCreditCardExpirationYear, _NSTextContentTypeCreditCardFamilyName, - _NSTextContentTypeCreditCardGivenName, _NSTextContentTypeCreditCardMiddleName, - _NSTextContentTypeCreditCardName, _NSTextContentTypeCreditCardNumber, - _NSTextContentTypeCreditCardSecurityCode, _NSTextContentTypeCreditCardType, - _NSTextContentTypeDateTime, _NSTextContentTypeEmailAddress, - _NSTextContentTypeFamilyName, _NSTextContentTypeFlightNumber, - _NSTextContentTypeFullStreetAddress, _NSTextContentTypeGivenName, - _NSTextContentTypeJobTitle, _NSTextContentTypeLocation, _NSTextContentTypeMiddleName, - _NSTextContentTypeName, _NSTextContentTypeNamePrefix, _NSTextContentTypeNameSuffix, - _NSTextContentTypeNewPassword, _NSTextContentTypeNickname, - _NSTextContentTypeOneTimeCode, _NSTextContentTypeOrganizationName, - _NSTextContentTypePassword, _NSTextContentTypePostalCode, - _NSTextContentTypeShipmentTrackingNumber, _NSTextContentTypeStreetAddressLine1, - _NSTextContentTypeStreetAddressLine2, _NSTextContentTypeSublocality, - _NSTextContentTypeTelephoneAreaCode, _NSTextContentTypeTelephoneCountryCode, - _NSTextContentTypeTelephoneExtension, _NSTextContentTypeTelephoneLocalNumber, - _NSTextContentTypeTelephoneNationalNumber, _NSTextContentTypeTelephoneNumber, - _NSTextContentTypeURL, _NSTextContentTypeUsername, _NSTextDidBeginEditingNotification, + _NSTargetBinding, _NSTextCheckingAppIdentifierKey, _NSTextCheckingAppendCorrectionLanguageKey, + _NSTextCheckingBackgroundLoadKey, _NSTextCheckingCompletionRangesKey, + _NSTextCheckingCompletionStringsKey, _NSTextCheckingControlRepeatedAutocorrectionsKey, + _NSTextCheckingDocumentAuthorKey, _NSTextCheckingDocumentTitleKey, + _NSTextCheckingDocumentURLKey, _NSTextCheckingEditedRangeKey, + _NSTextCheckingGenerateInlinePredictionsKey, _NSTextCheckingIgnoreTerminationKey, + _NSTextCheckingInlinePredictionsOnlyKey, _NSTextCheckingInputContextHistoryDictionaryKey, + _NSTextCheckingInsertionPointKey, _NSTextCheckingKeyEventArrayKey, + _NSTextCheckingKeyEventDataKey, _NSTextCheckingOrthographyKey, + _NSTextCheckingParameterBundlesKey, _NSTextCheckingPredictionKey, + _NSTextCheckingPrefixKey, _NSTextCheckingQuotesKey, _NSTextCheckingRecheckOrthographyKey, + _NSTextCheckingReferenceDateKey, _NSTextCheckingReferenceTimeZoneKey, + _NSTextCheckingRegularExpressionsKey, _NSTextCheckingReplacedStringsKey, + _NSTextCheckingReplacementsKey, _NSTextCheckingResponseKey, + _NSTextCheckingSelectedRangeKey, _NSTextCheckingSelectedRangeLengthKey, + _NSTextCheckingSelectedRangeLocationKey, _NSTextCheckingSoftSpaceRangeKey, + _NSTextCheckingSupplementalDictionaryNameKey, _NSTextCheckingSuppressAdaptationKey, + _NSTextCheckingSuppressInitialCapitalizationKey, _NSTextCheckingSuppressKeyEventDataKey, + _NSTextCheckingSuppressPostEditingKey, _NSTextCheckingTextCorrectionsKey, + _NSTextCheckingUnderlineRangesKey, _NSTextColorBinding, _NSTextCompletedAttributeName, + _NSTextCompletionAttributeName, _NSTextContentTypeAddressCity, + _NSTextContentTypeAddressCityAndState, _NSTextContentTypeAddressState, + _NSTextContentTypeBirthdate, _NSTextContentTypeBirthdateDay, + _NSTextContentTypeBirthdateMonth, _NSTextContentTypeBirthdateYear, + _NSTextContentTypeCountryName, _NSTextContentTypeCreditCardExpiration, + _NSTextContentTypeCreditCardExpirationMonth, _NSTextContentTypeCreditCardExpirationYear, + _NSTextContentTypeCreditCardFamilyName, _NSTextContentTypeCreditCardGivenName, + _NSTextContentTypeCreditCardMiddleName, _NSTextContentTypeCreditCardName, + _NSTextContentTypeCreditCardNumber, _NSTextContentTypeCreditCardSecurityCode, + _NSTextContentTypeCreditCardType, _NSTextContentTypeDateTime, + _NSTextContentTypeEmailAddress, _NSTextContentTypeFamilyName, + _NSTextContentTypeFlightNumber, _NSTextContentTypeFullStreetAddress, + _NSTextContentTypeGivenName, _NSTextContentTypeJobTitle, _NSTextContentTypeLocation, + _NSTextContentTypeMiddleName, _NSTextContentTypeName, _NSTextContentTypeNamePrefix, + _NSTextContentTypeNameSuffix, _NSTextContentTypeNewPassword, + _NSTextContentTypeNickname, _NSTextContentTypeOneTimeCode, + _NSTextContentTypeOrganizationName, _NSTextContentTypePassword, + _NSTextContentTypePostalCode, _NSTextContentTypeShipmentTrackingNumber, + _NSTextContentTypeStreetAddressLine1, _NSTextContentTypeStreetAddressLine2, + _NSTextContentTypeSublocality, _NSTextContentTypeTelephoneAreaCode, + _NSTextContentTypeTelephoneCountryCode, _NSTextContentTypeTelephoneExtension, + _NSTextContentTypeTelephoneLocalNumber, _NSTextContentTypeTelephoneNationalNumber, + _NSTextContentTypeTelephoneNumber, _NSTextContentTypeURL, + _NSTextContentTypeUsername, _NSTextDidBeginEditingNotification, _NSTextDidChangeNotification, _NSTextDidEndEditingNotification, _NSTextFinderCaseInsensitiveKey, _NSTextFinderMatchingTypeKey, - _NSTextInputChromaticMarkedTextAttributeName, _NSTextInputContextKeyboardSelectionDidChangeNotification, - _NSTextInputMarkedCandidatesForSearchAttributeName, _NSTextInputReplacementRangeAttributeName, - _NSTextInsertionUndoableAttributeName, _NSTextLineTooLongException, - _NSTextMovementUserInfoKey, _NSTextNoSelectionException, _NSTextPlaceholderAttributeName, - _NSTextReadException, _NSTextViewDidDowngradeToLayoutManagerNotification, + _NSTextInputAdaptiveImageGlyphKey, _NSTextInputChromaticMarkedTextAttributeName, + _NSTextInputContextKeyboardSelectionDidChangeNotification, + _NSTextInputContextTIPropertyEmojiImageTextAttachment, _NSTextInputContextTIPropertySupportsEmojiImageTextAttachments, + _NSTextInputEmojiImageTextAttachmentDataKey, _NSTextInputEmojiImageTextAttachmentKey, + _NSTextInputEmojiImageTextAttachmentRangeKey, _NSTextInputMarkedCandidatesForSearchAttributeName, + _NSTextInputReplacementRangeAttributeName, _NSTextInsertionUndoableAttributeName, + _NSTextLineTooLongException, _NSTextMovementUserInfoKey, _NSTextNoSelectionException, + _NSTextPlaceholderAttributeName, _NSTextReadException, _NSTextViewDidDowngradeToLayoutManagerNotification, _NSTextViewDidSwitchToNSLayoutManagerNotification, _NSTextViewWillDowngradeToLayoutManagerNotification, _NSTextViewWillSwitchToNSLayoutManagerNotification, _NSTextWriteException, _NSThemeSpace, _NSTintColorEffectKey, _NSTitleBinding, _NSToolTipBinding, _NSToolTipHelpKey, _NSToolbarCustomizeToolbarItemIdentifier, - _NSToolbarDidReorderItemNotification, _NSToolbarFixedWidthSpaceItemIdentifier, - _NSToolbarInspectorTrackingSeparatorItemIdentifier, _NSToolbarSeparatorItemIdentifier, + _NSToolbarDidReorderItemNotification, _NSToolbarInspectorTrackingSeparatorItemIdentifier, + _NSToolbarOldIndexKey, _NSToolbarSeparatorItemIdentifier, _NSToolbarSidebarTrackingSeparatorItemIdentifier, _NSTouchBarCustomizationIdentifierRichTextView, _NSTouchBarCustomizationIdentifierTextFormat, _NSTouchBarCustomizationIdentifierTextView, _NSTouchBarDidEnterCustomization, _NSTouchBarDidExitCustomization, @@ -4106,11 +6074,12 @@ exports: _NSWorkspaceVolumeOldLocalizedNameKey, _NSWorkspaceVolumeOldURLKey, _NSWorkspaceVolumeURLKey, _NSWorkspaceWillLaunchApplicationNotification, _NSWorkspaceWillPowerOffNotification, _NSWorkspaceWillSleepNotification, - _NSWorkspaceWillUnmountNotification, __NSAccessibilityCustomActionsAttribute, - __NSAccessibilityCustomElementDataProviderSystemTypeFromDataElementSpecifier, - __NSAccessibilityFrameAttribute, __NSAccessibilityFrameInParentSpaceAttribute, - __NSAccessibilityLabelAttribute, __NSAccessibilityTestingElementFromAXUIElementRef, - __NSAppleMenuName, __NSAppleVersionDebug, __NSApplicationMainWithInfoDictionary, + _NSWorkspaceWillUnmountNotification, __NSAccessibilityBeginChildCaching, + __NSAccessibilityCustomActionsAttribute, __NSAccessibilityCustomElementDataProviderSystemTypeFromDataElementSpecifier, + __NSAccessibilityEndChildCaching, __NSAccessibilityFrameAttribute, + __NSAccessibilityFrameInParentSpaceAttribute, __NSAccessibilityLabelAttribute, + __NSAccessibilityTestingElementFromAXUIElementRef, __NSAppleMenuName, + __NSAppleVersionDebug, __NSApplicationMainWithInfoDictionary, __NSBrowserDidUserResizeColumns, __NSBrowserWillUserResizeColumns, __NSCenteredRectForImage, __NSCloudKitContainerID, __NSCloudKitContainerIdentifier, __NSCloudKitContainerSetupInfo, __NSCloudKitContainerType, @@ -4132,28 +6101,28 @@ exports: __NSHelpMenuName, __NSIBProvideResolvedValueForRelationBetween, __NSIndexPathForItem, __NSInvalidateShortcutsServicesCache, __NSKeyEquivalentModifierMaskMatchesModifierFlags, __NSKeyboardUIHandleSymbolicHotKey, - __NSKeyboardUIHotKeysCleanup, __NSKeyboardUIHotKeysInitialize, - __NSKeyboardUISelectAnyValidResponder, __NSLibraryPathsForType, + __NSKeyboardUIHandleSymbolicHotKeyEvent, __NSKeyboardUIHotKeysCleanup, + __NSKeyboardUIHotKeysInitialize, __NSKeyboardUISelectAnyValidResponder, + __NSKeyboardUITranslateToSymbolicHotKey, __NSLibraryPathsForType, __NSLocalizedUserInterfaceWidthFactor, __NSMainMenuName, __NSMenuDidCloseNotification, __NSMenuItemSelectedNotification, __NSMenuLocalUserKEsDidChangeNotification, - __NSMenuWillOpenNotification, __NSNavDrawLabelColorIndex, - __NSNavDrawLabelColorIndexRects, __NSObjectForItem, __NSParseWithFormat, - __NSPathForSystemFramework, __NSPersistentUICreateCGImageFromFile, - __NSPersistentUICrossEncrypt, __NSPersistentUIMetadataWasSignedWithKey, - __NSPersistentUIReadMetadataFromOpenFile, __NSPersistentUIReadMetadataFromURL, - __NSPopUpCarbonMenu3, __NSPreferencesSetPrefsBundleSearchBundle, - __NSPrintProtected, __NSPrintersPath, __NSQuickActionPresentationModeFinder, - __NSQuickActionPresentationModeTouchBar, __NSReboundDeltaForElasticDelta, - __NSReboundDeltaForElasticDelta2, __NSRecentDocumentsMenuName, - __NSRecommendedScrollerStyle, __NSResetServiceActions, __NSResetUnusedServiceActions, - __NSRevertDocumentMenuName, __NSSavePanelFilenameExtensionIndexOfFileType, - __NSSavePanelInitOptionKeyAuditToken, __NSSavePanelInitOptionKeyPID, - __NSSavePanelInitOptionKeyService, __NSSavePanelPAPerfOperation, - __NSSavePanelPAPerfOperationMarkInterval, __NSSavePanelPAPerfOperationMarkName, - __NSSavePresentationModeServiceActionOrder, __NSSaveServiceActions, - __NSSendDirectTouchesEvent, __NSServicesMenuName, __NSServicesUIAgentMain, - __NSSetDefaultControlTint, __NSSetDraggingSource, __NSSetOpaqueForEvents, - __NSSetUseCoreUI, __NSSetViewsPostSubviewHierarchyChangedNotifications, + __NSMenuWillOpenNotification, __NSOSPTranslateAllowedFileTypes, + __NSObjectForItem, __NSParseWithFormat, __NSPathForSystemFramework, + __NSPersistentUICreateCGImageFromFile, __NSPersistentUICrossEncrypt, + __NSPersistentUIMetadataWasSignedWithKey, __NSPersistentUIReadMetadataFromOpenFile, + __NSPersistentUIReadMetadataFromURL, __NSPopUpCarbonMenu3, + __NSPreferencesSetPrefsBundleSearchBundle, __NSPrintProtected, + __NSPrintersPath, __NSQuickActionPresentationModeFinder, __NSQuickActionPresentationModeTouchBar, + __NSReboundDeltaForElasticDelta, __NSReboundDeltaForElasticDelta2, + __NSRecentDocumentsMenuName, __NSRecommendedScrollerStyle, + __NSResetServiceActions, __NSResetUnusedServiceActions, __NSRevertDocumentMenuName, + __NSSavePanelFilenameExtensionIndexOfFileType, __NSSavePanelInitOptionKeyAuditToken, + __NSSavePanelInitOptionKeyPID, __NSSavePanelInitOptionKeyService, + __NSSavePanelPAPerfOperation, __NSSavePanelPAPerfOperationMarkInterval, + __NSSavePanelPAPerfOperationMarkName, __NSSavePresentationModeServiceActionOrder, + __NSSaveServiceActions, __NSSendDirectTouchesEvent, __NSServicesMenuName, + __NSServicesUIAgentMain, __NSSetDefaultControlTint, __NSSetDraggingSourceForDrag, + __NSSetOpaqueForEvents, __NSSetUseCoreUI, __NSSetViewsPostSubviewHierarchyChangedNotifications, __NSShakeForAuthenticationFailureAmplitude, __NSShakeForAuthenticationFailureDuration, __NSSharingServiceNameCloudSharingCopyLink, __NSSharingServiceNameCloudSharingInvitation, __NSSharingServiceNameLaunchMessages, __NSSubviewHierarchyDidChangeNotification, @@ -4194,37 +6163,37 @@ exports: NSAccessibilityCustomChooserSearchPredicate, NSAccessibilityCustomRotor, NSAccessibilityCustomRotorItemResult, NSAccessibilityCustomRotorSearchParameters, NSAccessibilityElement, NSAccessibilityRemoteUIElement, NSActionCell, - NSAlert, NSAlignmentFeedbackFilter, NSAnimation, NSAnimationContext, - NSAnimationManager, NSAppearance, NSApplication, NSArrayController, - NSAutoFillTextSuggestion, NSBannerView, NSBehindWindowVibrancyKillingView, - NSBezierPath, NSBindingSelectionMarker, NSBitmapGraphicsContext, - NSBitmapImageRep, NSBox, NSBrowser, NSBrowserCell, NSBrowserColumnViewController, - NSBrowserTableView, NSButton, NSButtonCell, NSButtonGroupTouchBarItem, - NSCGImageRep, NSCGSContext, NSCIImageRep, NSCachedImageRep, - NSCandidateBarCompositeCandidate, NSCarbonWindow, NSCatalogColor, - NSCell, NSClassSwapper, NSClickGestureRecognizer, NSClipView, - NSCloudKitShareProvider, NSCloudSharingPanel, NSCollectionView, - NSCollectionViewCompositionalLayout, NSCollectionViewCompositionalLayoutConfiguration, - NSCollectionViewFlowLayout, NSCollectionViewFlowLayoutInvalidationContext, - NSCollectionViewGridLayout, NSCollectionViewItem, NSCollectionViewLayout, - NSCollectionViewLayoutAttributes, NSCollectionViewLayoutInvalidationContext, - NSCollectionViewTransitionLayout, NSCollectionViewUpdateItem, - NSColor, NSColorGamut, NSColorList, NSColorPanel, NSColorPicker, - NSColorPopoverController, NSColorSampler, NSColorScaleSlider, - NSColorScaleSliderCell, NSColorSpace, NSColorSwatchScrubberItemView, - NSColorWell, NSComboBox, NSComboBoxCell, NSComboButton, NSControl, - NSController, NSCustomImageRep, NSCustomObject, NSCustomResource, - NSCustomTouchBarItem, NSCustomView, NSDatePicker, NSDatePickerCell, - NSDictionaryController, NSDictionaryControllerKeyValuePair, - NSDockTile, NSDocument, NSDocumentController, NSDocumentCustomConfirmationDialogSettings, - NSDragEventTracker, NSDraggingImageComponent, NSDraggingItem, - NSDraggingSession, NSDrawer, NSDrawerWindow, NSDynamicNamedColor, - NSEPSImageRep, NSEvent, NSEventTracker, NSFileActionsPopoverController, - NSFileMoveController, NSFilePromiseProvider, NSFilePromiseReceiver, - NSFindIndicator, NSFloatRange, NSFontCollection, NSFontManager, - NSFontPanel, NSForceClickMonitor, NSForm, NSFormCell, NSFrameView, - NSFunctionRow, NSFunctionRowBackgroundBlurView, NSGestureRecognizer, - NSGlobalPreferenceTransition, NSGradient, NSGraphicsContext, + NSAlert, NSAlertAction, NSAlertController, NSAlignmentFeedbackFilter, + NSAnimation, NSAnimationContext, NSAnimationManager, NSAppearance, + NSApplication, NSArrayController, NSAutoFillTextSuggestion, + NSBannerView, NSBehindWindowVibrancyKillingView, NSBezierPath, + NSBindingSelectionMarker, NSBitmapGraphicsContext, NSBitmapImageRep, + NSBox, NSBrowser, NSBrowserCell, NSBrowserColumnViewController, + NSBrowserTableView, NSButton, NSButtonBezelConfiguration, + NSButtonCell, NSButtonGroupTouchBarItem, NSCGImageRep, NSCGSContext, + NSCIImageRep, NSCachedImageRep, NSCandidateBarCompositeCandidate, + NSCarbonWindow, NSCatalogColor, NSCell, NSClassSwapper, NSClickGestureRecognizer, + NSClipView, NSCloudKitShareProvider, NSCloudSharingPanel, + NSCollectionView, NSCollectionViewCompositionalLayout, NSCollectionViewCompositionalLayoutConfiguration, + NSCollectionViewDiffableDataSource, NSCollectionViewFlowLayout, + NSCollectionViewFlowLayoutInvalidationContext, NSCollectionViewGridLayout, + NSCollectionViewItem, NSCollectionViewLayout, NSCollectionViewLayoutAttributes, + NSCollectionViewLayoutInvalidationContext, NSCollectionViewTransitionLayout, + NSCollectionViewUpdateItem, NSColor, NSColorGamut, NSColorList, + NSColorPanel, NSColorPicker, NSColorPopoverController, NSColorSampler, + NSColorScaleSlider, NSColorScaleSliderCell, NSColorSpace, + NSColorSwatchScrubberItemView, NSColorWell, NSComboBox, NSComboBoxCell, + NSComboButton, NSControl, NSController, NSCustomImageRep, + NSCustomObject, NSCustomResource, NSCustomTouchBarItem, NSCustomView, + NSDatePicker, NSDatePickerCell, NSDictionaryController, NSDictionaryControllerKeyValuePair, + NSDockTile, NSDocument, NSDocumentController, NSDragEventTracker, + NSDraggingImageComponent, NSDraggingItem, NSDraggingSession, + NSDrawer, NSDrawerWindow, NSDynamicNamedColor, NSEPSImageRep, + NSEvent, NSEventTracker, NSFileActionsPopoverController, NSFilePromiseProvider, + NSFilePromiseReceiver, NSFindIndicator, NSFloatRange, NSFontCollection, + NSFontManager, NSFontPanel, NSForceClickMonitor, NSForm, NSFormCell, + NSFrameView, NSFunctionRow, NSFunctionRowBackgroundBlurView, + NSGestureRecognizer, NSGlobalPreferenceTransition, NSGraphicsContext, NSGridCell, NSGridColumn, NSGridRow, NSGridView, NSHMDDevice, NSHMDDisplayLink, NSHMDDisplayLinkInvocation, NSHMDIOSurfaceDrawable, NSHMDIOSurfaceSession, NSHMDMetalSession, NSHapticFeedbackManager, @@ -4239,61 +6208,64 @@ exports: NSInputMethodUICandidateTouchBarItemController, NSInputServer, NSInspectorBar, NSInspectorBarItem, NSKeyBindingManager, NSKeyboardShortcut, NSLabelView, NSLabelViewCell, NSLayoutGuide, NSLevelIndicator, - NSLevelIndicatorCell, NSLongClickGestureRecognizer, NSMagnificationGestureRecognizer, - NSMatrix, NSMediaLibraryBrowserController, NSMenu, NSMenuItem, - NSMenuItemBadge, NSMenuItemCell, NSMenuTemplate, NSMenuWindowManager, - NSMouseTracker, NSMoveHelper, NSMovePanel, NSMovie, NSMovieViewTextAttachmentCell, - NSMutableFontCollection, NSNavBannerButtonCell, NSNavBannerView, - NSNavSharedServerController, NSNib, NSNibAXAttributeConnector, - NSNibAXRelationshipConnector, NSNibAuxiliaryActionConnector, - NSNibBindingConnector, NSNibConnector, NSNibControlConnector, - NSNibExternalObjectEntry, NSNibExternalObjectPlaceholder, + NSLevelIndicatorCell, NSLocalGlobalPreferenceTransition, NSLongClickGestureRecognizer, + NSMagnificationGestureRecognizer, NSMatrix, NSMediaLibraryBrowserController, + NSMenu, NSMenuItem, NSMenuItemBadge, NSMenuItemCell, NSMenuTemplate, + NSMenuWindowManager, NSMouseTracker, NSMoveHelper, NSMovePanel, + NSMovie, NSMovieViewTextAttachmentCell, NSMutableFontCollection, + NSNavBannerButtonCell, NSNavBannerView, NSNavSharedServerController, + NSNib, NSNibAXAttributeConnector, NSNibAXRelationshipConnector, + NSNibAuxiliaryActionConnector, NSNibBindingConnector, NSNibConnector, + NSNibControlConnector, NSNibExternalObjectEntry, NSNibExternalObjectPlaceholder, NSNibOutletCollectionConnector, NSNibOutletConnector, NSObjectController, NSOcclusionDetectionView, NSOpenGLContext, NSOpenGLLayer, NSOpenGLPixelBuffer, NSOpenGLPixelFormat, NSOpenGLView, NSOpenPanel, NSOutlineView, NSPDFImageRep, NSPDFInfo, NSPDFPanel, NSPDFPanelAccessoryViewController, NSPICTImageRep, NSPPDParse, NSPageController, NSPageLayout, - NSPanGestureRecognizer, NSPanel, NSPasteboard, NSPasteboardItem, - NSPathCell, NSPathComponentCell, NSPathControl, NSPathControlItem, - NSPersistentDocument, NSPopUpButton, NSPopUpButtonCell, NSPopover, - NSPopoverAnimationController, NSPopoverColorWell, NSPopoverFrame, - NSPredicateEditor, NSPredicateEditorRowTemplate, NSPreferences, - NSPreferencesModule, NSPressGestureRecognizer, NSPressureConfiguration, - NSPressureSensitivePanGestureRecognizer, NSPreviewRepresentingActivityItem, - NSPrintInfo, NSPrintOperation, NSPrintPanel, NSPrinter, NSPrivacyIndicatorView, - NSProgressIndicator, NSProgressPanel, NSPulseGestureRecognizer, - NSRectSet, NSResponder, NSRotationGestureRecognizer, NSRuleEditor, - NSRuleEditorButtonCell, NSRulerMarker, NSRulerView, NSRunningApplication, - NSSLSTransaction, NSSavePanel, NSSavePanelCustomAction, NSScreen, - NSScreenBackgroundView, NSScrollAnimationHelper, NSScrollView, - NSScroller, NSScrollerImp, NSScrollerImpPair, NSScrubber, - NSScrubberArrangedView, NSScrubberFlowLayout, NSScrubberImageItemView, - NSScrubberItemView, NSScrubberLayout, NSScrubberLayoutAttributes, - NSScrubberOutlineSelectionOverlayView, NSScrubberProportionalLayout, - NSScrubberRoundedSelectionBackgroundView, NSScrubberSelectionStyle, - NSScrubberSelectionView, NSScrubberTextItemView, NSSearchField, - NSSearchFieldCell, NSSecureTextField, NSSecureTextFieldCell, - NSSegmentedCell, NSSegmentedControl, NSServiceMaster, NSServicesImportFromDevicePasteboardInfo, + NSPanGestureRecognizer, NSPanel, NSPasteControl, NSPasteboard, + NSPasteboardImageProperties, NSPasteboardItem, NSPathCell, + NSPathComponentCell, NSPathControl, NSPathControlItem, NSPersistentDocument, + NSPopUpButton, NSPopUpButtonBezelConfiguration, NSPopUpButtonCell, + NSPopover, NSPopoverAnimationController, NSPopoverColorWell, + NSPopoverFrame, NSPredicateEditor, NSPredicateEditorRowTemplate, + NSPreferences, NSPreferencesModule, NSPressGestureRecognizer, + NSPressureConfiguration, NSPressureSensitivePanGestureRecognizer, + NSPreviewRepresentingActivityItem, NSPrintInfo, NSPrintOperation, + NSPrintPanel, NSPrinter, NSPrivacyIndicatorView, NSProgressIndicator, + NSProgressIndicatorConfiguration, NSProgressPanel, NSPulseGestureRecognizer, + NSResponder, NSRotationGestureRecognizer, NSRuleEditor, NSRuleEditorButtonCell, + NSRulerMarker, NSRulerView, NSRunningApplication, NSSLSTransaction, + NSSavePanel, NSSavePanelCustomAction, NSScreen, NSScreenBackgroundView, + NSScrollAnimationHelper, NSScrollView, NSScroller, NSScrollerImp, + NSScrollerImpPair, NSScrubber, NSScrubberArrangedView, NSScrubberFlowLayout, + NSScrubberImageItemView, NSScrubberItemView, NSScrubberLayout, + NSScrubberLayoutAttributes, NSScrubberOutlineSelectionOverlayView, + NSScrubberProportionalLayout, NSScrubberRoundedSelectionBackgroundView, + NSScrubberSelectionStyle, NSScrubberSelectionView, NSScrubberTextItemView, + NSSearchField, NSSearchFieldCell, NSSecureTextField, NSSecureTextFieldCell, + NSSegmentItem, NSSegmentedCell, NSSegmentedControl, NSSegmentedControlBezelConfiguration, + NSServiceMaster, NSServicesImportFromDevicePasteboardInfo, NSServicesMenuHandler, NSServicesMonitor, NSServicesRolloverButtonCell, - NSSharingService, NSSharingServiceItemProvider, NSSharingServicePicker, - NSSlider, NSSliderCell, NSSound, NSSpaceTouchBarItem, NSSpeechRecognizer, - NSSpeechSynthesizer, NSSpellChecker, NSSplitView, NSSplitViewController, - NSSplitViewItem, NSStackView, NSStatusBar, NSStatusBarButton, - NSStatusItem, NSStepper, NSStepperCell, NSStoryboard, NSStoryboardControllerPlaceholder, - NSStoryboardEmbedSegueTemplate, NSStoryboardModalSegueTemplate, - NSStoryboardPopoverSegueTemplate, NSStoryboardSegue, NSStoryboardSegueTemplate, - NSStoryboardSheetSegueTemplate, NSStoryboardShowSegueTemplate, - NSSuggestionItem, NSSuggestionItemResponse, NSSuggestionItemSection, - NSSwipeGestureRecognizer, NSSwitch, NSTabBar, NSTabBarItem, - NSTabView, NSTabViewController, NSTabViewControllerSegmentedControlUIProvider, + NSSharingCollaborationModeRestriction, NSSharingService, NSSharingServiceItemProvider, + NSSharingServicePicker, NSSlider, NSSliderCell, NSSound, NSSpaceTouchBarItem, + NSSpeechRecognizer, NSSpeechSynthesizer, NSSpellChecker, NSSplitView, + NSSplitViewController, NSSplitViewItem, NSStackView, NSStatusBar, + NSStatusBarButton, NSStatusItem, NSStepper, NSStepperCell, + NSStoryboard, NSStoryboardControllerPlaceholder, NSStoryboardEmbedSegueTemplate, + NSStoryboardModalSegueTemplate, NSStoryboardPopoverSegueTemplate, + NSStoryboardSegue, NSStoryboardSegueTemplate, NSStoryboardSheetSegueTemplate, + NSStoryboardShowSegueTemplate, NSSuggestionItem, NSSuggestionItemResponse, + NSSuggestionItemSection, NSSwipeGestureRecognizer, NSSwitch, + NSTabBar, NSTabBarItem, NSTabView, NSTabViewController, NSTabViewControllerSegmentedControlUIProvider, NSTabViewItem, NSTableCellView, NSTableColumn, NSTableHeaderCell, NSTableHeaderView, NSTableRowView, NSTableView, NSTableViewDiffableDataSource, - NSTableViewDiffableDataSourceImpl, NSTableViewRowAction, NSTableViewStyleData, - NSTearOffTabWindow, NSText, NSTextAttachmentCell, NSTextCheckingController, - NSTextField, NSTextFieldCell, NSTextFinder, NSTextInputContext, - NSTextInsertionIndicator, NSTextPlaceholder, NSTextToken, - NSTextTokensController, NSTextTouchBarItemController, NSTextView, - NSTintConfiguration, NSTitlebarAccessoryViewController, NSTitlebarSeparatorView, + NSTableViewRowAction, NSTableViewStyleData, NSTearOffTabWindow, + NSText, NSTextAttachmentCell, NSTextCheckingController, NSTextField, + NSTextFieldCell, NSTextFinder, NSTextIndicatorOverlay, NSTextInputContext, + NSTextInsertionIndicator, NSTextPlaceholder, NSTextPreview, + NSTextSelectionRect, NSTextToken, NSTextTokensController, + NSTextTouchBarItemController, NSTextView, NSTintConfiguration, + NSTitlebarAccessoryViewController, NSTitlebarSeparatorView, NSTokenAttachment, NSTokenAttachmentCell, NSTokenField, NSTokenFieldCell, NSToolbarItemViewer, NSToolbarView, NSTouch, NSTouchBarColorListPickerScrubberLayout, NSTouchBarColorPickerViewController, NSTouchBarControlStripGrabber, @@ -4315,23 +6287,26 @@ exports: NSWindowController, NSWindowGraphicsContext, NSWindowSharingSessionHostButton, NSWindowSnappingPrefsViewController, NSWindowTab, NSWindowTabGroup, NSWindowTemplate, NSWorkspace, NSWorkspaceAuthorization, NSWorkspaceOpenConfiguration, - _NS1DVelocityFilter, _NS2DVelocityFilter, _NSBrowserColumnView, - _NSBrowserTableColumnViewController, _NSCGEventBuffer, _NSCloudSharingParticipantDetails, - _NSCollectionLayoutAnchor, _NSCollectionLayoutBoundarySupplementaryItem, - _NSCollectionLayoutDecorationItem, _NSCollectionLayoutDimension, - _NSCollectionLayoutEdgeSpacing, _NSCollectionLayoutGroup, - _NSCollectionLayoutItem, _NSCollectionLayoutSection, _NSCollectionLayoutSize, - _NSCollectionLayoutSpacing, _NSCollectionLayoutSupplementaryItem, + NSWritingToolsCoordinator, NSWritingToolsUnderlineView, _NS1DVelocityFilter, + _NS2DVelocityFilter, _NSBrowserColumnView, _NSBrowserTableColumnViewController, + _NSCGEventBuffer, _NSCloudSharingParticipantDetails, _NSCollectionLayoutAnchor, + _NSCollectionLayoutBoundarySupplementaryItem, _NSCollectionLayoutDecorationItem, + _NSCollectionLayoutDimension, _NSCollectionLayoutEdgeSpacing, + _NSCollectionLayoutGroup, _NSCollectionLayoutItem, _NSCollectionLayoutSection, + _NSCollectionLayoutSize, _NSCollectionLayoutSpacing, _NSCollectionLayoutSupplementaryItem, _NSCollectionViewCompositionalLayout, _NSCollectionViewCompositionalLayoutMutableConfiguration, - _NSCollectionViewFeedbackLoopDebugger, _NSConstraintBasedLayoutHostingView, - _NSDatePickerFieldElementData, _NSInputAlignmentControllerSession, + _NSCollectionViewDiffableDataSource, _NSConstraintBasedLayoutHostingView, + _NSDatePickerFieldElementData, _NSDiffableDataSource, _NSDiffableDataSourceSnapshot, + _NSDiffableDataSourceSnapshotter, _NSInputAlignmentControllerSession, _NSInputAlignmentGuide, _NSInputAlignmentItem, _NSInputAlignmentMatch, _NSKeyboardFocusClipView, _NSQuickAction, _NSQuickActionConfiguration, _NSQuickActionProvider, _NSQuickActionValidator, _NSRecentItemsMenuController, _NSScrollingMomentumCalculator, _NSScrollingPredominantAxisFilter, _NSScrollingRubberbandFilter, _NSScrollingScoreKeeper, _NSSliderTouchBarItemView, - _NSWindowDesktopIconRectInfo, _NSWindowTransformAnimation, - __NSInspectorBarItemController ] + _NSTextPlaceholderAttachment, _NSWTUIDirectionalLightEffectView, + _NSWTUILightEffectPalette, _NSWTUIPonderingTextEffect, _NSWTUITextEffectID, + _NSWTUITextEffectView, _NSWTUIView, _NSWindowDesktopIconRectInfo, + _NSWindowTransformAnimation, __NSInspectorBarItemController ] objc-ivars: [ NSApplication._appFlags, NSApplication._mainMenu, NSApplication._running, NSBox._bFlags, NSBox._titleCell, NSBox._titleRect, NSButtonCell._alternateImageOrKeyEquivalentFont, NSButtonCell._bcFlags, NSButtonCell._normalImage, NSCGSContext._cgsContext, @@ -4358,46 +6333,50 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/PrivateFrameworks/CollectionViewCore.framework/Versions/A/CollectionViewCore' -allowable-clients: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, - arm64e-macos, arm64e-maccatalyst ] - clients: [ AppKit, UIKitCore ] exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] - symbols: [ _UICollectionLayoutSectionOrthogonalScrollingDecelerationRateAutomatic, + symbols: [ _BUG_IN_CLIENT_OF_DIFFABLE_DATA_SOURCE__EQUAL_IDENTIFIERS_HAVE_DIFFERENT_HASH_VALUES, + _BUG_IN_CLIENT_OF_DIFFABLE_DATA_SOURCE__IDENTIFIERS_ARE_NOT_UNIQUE, + _BUG_IN_CLIENT_OF_DIFFABLE_DATA_SOURCE__IDENTIFIER_ALREADY_EXISTS, + _BUG_IN_CLIENT_OF_DIFFABLE_DATA_SOURCE__IDENTIFIER_HASH_VALUE_CHANGED, + _BUG_IN_CLIENT_OF_DIFFABLE_DATA_SOURCE__IDENTIFIER_IS_NOT_EQUAL_TO_ITSELF, + _UICollectionLayoutSectionOrthogonalScrollingDecelerationRateAutomatic, _UICollectionLayoutSectionOrthogonalScrollingDecelerationRateFast, - _UICollectionLayoutSectionOrthogonalScrollingDecelerationRateNormal ] + _UICollectionLayoutSectionOrthogonalScrollingDecelerationRateNormal, + __CVCDiffableDataSourceInitializeWithUpdateItemClass, __UIDiffableDataSourceApplyDeleteUpdate, + __UIDiffableDataSourceApplyInsertUpdate, __UIDiffableDataSourceApplyMoveUpdate, + __UIDiffableDataSourceInsertIdentifiersAtIndex, __UIDiffableDataSourceValidateIdentifiers, + __UIDiffableDataSourceValidateIdentifiersForDiff, ___CVCForceCastToSnapshotImpl ] objc-classes: [ NSCollectionLayoutAnchor, NSCollectionLayoutBoundarySupplementaryItem, NSCollectionLayoutDecorationItem, NSCollectionLayoutDimension, NSCollectionLayoutEdgeSpacing, NSCollectionLayoutGroup, NSCollectionLayoutGroupCustomItem, NSCollectionLayoutItem, NSCollectionLayoutSection, NSCollectionLayoutSize, NSCollectionLayoutSpacing, NSCollectionLayoutSupplementaryItem, - UICollectionLayoutSectionOrthogonalScrollingProperties ] + NSDiffableDataSourceSnapshot, UICollectionLayoutSectionOrthogonalScrollingProperties, + _UIDataSourceSnapshot, _UIDataSourceSnapshotter, _UIDiffableDataSourceState, + _UIDiffableDataSourceUpdate, __UIDiffableDataSourceSnapshot ] --- !tapi-tbd tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation' -current-version: 908.3 +current-version: 970.5 allowable-clients: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] - clients: [ AppKit, CoreTransferable, UIKitCore ] + clients: [ AppKit, CoreTransferable, SwiftUICore, UIKitCore, UserNotificationsCore, + _SwiftUICore ] exports: - - targets: [ x86_64-macos, x86_64-maccatalyst ] - weak-symbols: [ __ZTINSt3__120__shared_ptr_emplaceI10_DiffEntryNS_9allocatorIS1_EEEE, - __ZTINSt3__120__shared_ptr_emplaceI11_DiffSymbolNS_9allocatorIS1_EEEE, - __ZTSNSt3__120__shared_ptr_emplaceI10_DiffEntryNS_9allocatorIS1_EEEE, - __ZTSNSt3__120__shared_ptr_emplaceI11_DiffSymbolNS_9allocatorIS1_EEEE ] - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] - symbols: [ _NSAccessibilitySpellingStateAttributeName, _NSAllRomanInputSourcesLocaleIdentifier, - _NSAntialiasThresholdChangedNotification, _NSAppearanceDocumentAttribute, - _NSAttachmentAttributeName, _NSAttachmentEditableDataAttributeName, - _NSAttachmentEditableDataTypeIdentifierAttributeName, _NSAuthorDocumentAttribute, - _NSBackgroundColorAttributeName, _NSBackgroundColorDocumentAttribute, - _NSBackgroundLayoutTrace, _NSBaseURLDocumentOption, _NSBaselineOffsetAttributeName, + symbols: [ _NSAccessibilitySpellingStateAttributeName, _NSAdaptiveImageGlyphAttributeName, + _NSAllRomanInputSourcesLocaleIdentifier, _NSAntialiasThresholdChangedNotification, + _NSAppearanceDocumentAttribute, _NSAttachmentAttributeName, + _NSAttachmentEditableDataAttributeName, _NSAttachmentEditableDataTypeIdentifierAttributeName, + _NSAuthorDocumentAttribute, _NSBackgroundColorAttributeName, + _NSBackgroundColorDocumentAttribute, _NSBackgroundLayoutTrace, + _NSBaseURLDocumentOption, _NSBaselineOffsetAttributeName, _NSBottomMarginDocumentAttribute, _NSCategoryDocumentAttribute, _NSCharacterEncodingDocumentAttribute, _NSCharacterEncodingDocumentOption, _NSCharacterShapeAttributeName, _NSCocoaRTFVersionDocumentAttribute, @@ -4411,20 +6390,24 @@ exports: _NSDocFormatTextDocumentType, _NSDocumentTypeDocumentAttribute, _NSDocumentTypeDocumentOption, _NSDominantLanguageAttributeName, _NSDominantScriptAttributeName, _NSEditorDocumentAttribute, - _NSExcludedElementsDocumentAttribute, _NSExpansionAttributeName, - _NSFileTypeDocumentAttribute, _NSFileTypeDocumentOption, _NSFirstLineHeadIndentRulerMarkerTag, - _NSFontAttributeName, _NSFontFaceAttribute, _NSFontFamilyAttribute, - _NSFontFlippedMatrix, _NSFontIdentityMatrix, _NSFontKernAttribute, - _NSFontMatrixAttribute, _NSFontNameAttribute, _NSFontSetChangedNotification, - _NSFontSizeAttribute, _NSFontSymbolicTrait, _NSFontTraitAttributeName, - _NSFontTraitsAttribute, _NSFontVisibleNameAttribute, _NSForegroundColorAttributeName, + _NSEmojiImageContentTypeDefault, _NSEmojiImagePropertyKeyOrigin, + _NSEmojiImageSourceCopyImageStrikes, _NSEmojiImageSourceCreateWithData, + _NSEmojiImageSourceGetImageIndex, _NSExcludedElementsDocumentAttribute, + _NSExpansionAttributeName, _NSFileTypeDocumentAttribute, _NSFileTypeDocumentOption, + _NSFirstLineHeadIndentRulerMarkerTag, _NSFontAttributeName, + _NSFontFaceAttribute, _NSFontFamilyAttribute, _NSFontFlippedMatrix, + _NSFontIdentityMatrix, _NSFontKernAttribute, _NSFontMatrixAttribute, + _NSFontNameAttribute, _NSFontSetChangedNotification, _NSFontSizeAttribute, + _NSFontSymbolicTrait, _NSFontTraitAttributeName, _NSFontTraitsAttribute, + _NSFontVisibleNameAttribute, _NSForegroundColorAttributeName, _NSGeneratorDocumentAttribute, _NSGlyphDisplayInvalidationTrace, _NSGlyphGenerationTrace, _NSGlyphGeometryTrace, _NSGlyphInfoAttributeName, _NSGrammarLeftOffsetAttributeName, _NSGrammarRightOffsetAttributeName, - _NSHTMLTextDocumentType, _NSHeadIndentRulerMarkerTag, _NSHyphenationFactorDocumentAttribute, - _NSIgnoringSubstitutionAttributeName, _NSKernAttributeName, - _NSKeywordsDocumentAttribute, _NSLanguageAttributeName, _NSLeftMarginDocumentAttribute, - _NSLigatureAttributeName, _NSLinkAttributeName, _NSMacSimpleTextDocumentType, + _NSHTMLAllowNetworkAccess, _NSHTMLTextDocumentType, _NSHeadIndentRulerMarkerTag, + _NSHyphenationFactorDocumentAttribute, _NSIgnoringSubstitutionAttributeName, + _NSKernAttributeName, _NSKeywordsDocumentAttribute, _NSLanguageAttributeName, + _NSLeftMarginDocumentAttribute, _NSLigatureAttributeName, + _NSLineBreakContextNull, _NSLinkAttributeName, _NSMacSimpleTextDocumentType, _NSManagerDocumentAttribute, _NSMarkedClauseSegmentAttributeName, _NSMarkedTextSelectionAttributeName, _NSMarkedTextStyleAttributeName, _NSModificationTimeDocumentAttribute, _NSNoIndexDocumentAttribute, @@ -4437,27 +6420,35 @@ exports: _NSReadOnlyDocumentAttribute, _NSReaderDelegateDocumentOption, _NSReplacedStringAttributeName, _NSRightMarginDocumentAttribute, _NSShadowAttributeName, _NSSmallCapsAttributeName, _NSSourceTextScalingDocumentAttribute, - _NSSourceTextScalingDocumentReadingOption, _NSSpellingStateAttributeName, - _NSStrikeThroughAttributeName, _NSStrikethroughColorAttributeName, - _NSStrikethroughStyleAttributeName, _NSStrokeColorAttributeName, - _NSStrokeWidthAttributeName, _NSSubjectDocumentAttribute, - _NSSuperscriptAttributeName, _NSTabColumnTerminatorsAttributeName, - _NSTailIndentRulerMarkerTag, _NSTargetTextScalingDocumentReadingOption, + _NSSourceTextScalingDocumentOption, _NSSourceTextScalingDocumentReadingOption, + _NSSpellingStateAttributeName, _NSStrikeThroughAttributeName, + _NSStrikethroughColorAttributeName, _NSStrikethroughStyleAttributeName, + _NSStrokeColorAttributeName, _NSStrokeWidthAttributeName, + _NSSubjectDocumentAttribute, _NSSuperscriptAttributeName, + _NSTabColumnTerminatorsAttributeName, _NSTailIndentRulerMarkerTag, + _NSTargetTextScalingDocumentOption, _NSTargetTextScalingDocumentReadingOption, _NSTemporaryTextCorrectionAttributeName, _NSTextAlignmentFromCTTextAlignment, _NSTextAlignmentToCTTextAlignment, _NSTextAlternativesAttributeName, _NSTextAlternativesDisplayStyleAttributeName, _NSTextAlternativesSelectedAlternativeKey, _NSTextAlternativesSelectedAlternativeStringNotification, - _NSTextCheckedAttributeName, _NSTextContentManagerUnsupportedAttributeNotification, - _NSTextContentStorageBreakOnEnumerateWhileEditing, _NSTextContentStorageUnsupportedAttributeAddedNotification, + _NSTextAnimationAttributeName, _NSTextCheckedAttributeName, + _NSTextContentManagerUnsupportedAttributeNotification, _NSTextContentStorageBreakOnEnumerateWhileEditing, + _NSTextContentStorageUnsupportedAttributeAddedNotification, _NSTextCorrectionAttributeName, _NSTextDrawingTrace, _NSTextEditedAttributeName, _NSTextEffectAttributeName, _NSTextEffectLetterpressStyle, _NSTextEncodingNameDocumentAttribute, _NSTextEncodingNameDocumentOption, - _NSTextKeyTrace, _NSTextLayoutManagerBreakOnNilContentManager, - _NSTextLayoutSectionOrientation, _NSTextLayoutSectionRange, - _NSTextLayoutSectionsAttribute, _NSTextListMarkerAttachment, - _NSTextListMarkerBox, _NSTextListMarkerCheck, _NSTextListMarkerCircle, - _NSTextListMarkerDecimal, _NSTextListMarkerDiamond, _NSTextListMarkerDisc, - _NSTextListMarkerHyphen, _NSTextListMarkerLowercaseAlpha, + _NSTextHighlightAttributeName, _NSTextHighlightColorSchemeAttributeName, + _NSTextHighlightColorSchemeBlue, _NSTextHighlightColorSchemeDefault, + _NSTextHighlightColorSchemeMint, _NSTextHighlightColorSchemeOrange, + _NSTextHighlightColorSchemePink, _NSTextHighlightColorSchemePurple, + _NSTextHighlightOutlineColorAttributeName, _NSTextHighlightStyleAttributeName, + _NSTextHighlightStyleDefault, _NSTextHighlightStyleOutlined, + _NSTextHighlightStyleSystemDefault, _NSTextKeyTrace, _NSTextKit1ListMarkerFormatDocumentOption, + _NSTextLayoutManagerBreakOnNilContentManager, _NSTextLayoutSectionOrientation, + _NSTextLayoutSectionRange, _NSTextLayoutSectionsAttribute, + _NSTextListMarkerAttachment, _NSTextListMarkerBox, _NSTextListMarkerCheck, + _NSTextListMarkerCircle, _NSTextListMarkerDecimal, _NSTextListMarkerDiamond, + _NSTextListMarkerDisc, _NSTextListMarkerHyphen, _NSTextListMarkerLowercaseAlpha, _NSTextListMarkerLowercaseHexadecimal, _NSTextListMarkerLowercaseLatin, _NSTextListMarkerLowercaseRoman, _NSTextListMarkerOctal, _NSTextListMarkerSquare, _NSTextListMarkerUppercaseAlpha, _NSTextListMarkerUppercaseHexadecimal, @@ -4476,10 +6467,10 @@ exports: _NSViewSizeDocumentAttribute, _NSViewZoomDocumentAttribute, _NSWebArchiveTextDocumentType, _NSWebPreferencesDocumentOption, _NSWebResourceLoadDelegateDocumentOption, _NSWordMLTextDocumentType, - _NSWritingDirectionAttributeName, _NSZipTextDocumentType, - _UIAppendBytesForValueToData, _UIAppendVInt32ToData, _UIArchiveHeaderIdentifier, - _UICreateOrderedAndStrippedCoderValues, _UICurrentCoderVersion, - _UIDataLooksLikeNibArchive, _UIDistanceBetweenPointAndRect, + _NSWritingDirectionAttributeName, _NSWritingToolsExclusionAttributeName, + _NSZipTextDocumentType, _UIAppendBytesForValueToData, _UIAppendVInt32ToData, + _UIArchiveHeaderIdentifier, _UICreateOrderedAndStrippedCoderValues, + _UICurrentCoderVersion, _UIDataLooksLikeNibArchive, _UIDistanceBetweenPointAndRect, _UIFixedByteLengthForType, _UIFontDescriptorCascadeListAttribute, _UIFontDescriptorCharacterSetAttribute, _UIFontDescriptorFaceAttribute, _UIFontDescriptorFamilyAttribute, _UIFontDescriptorFeatureSettingsAttribute, @@ -4512,62 +6503,58 @@ exports: _UIWriteArchiveToData, __CFArrayApplyBlock, __CFArraySortValuesWithBlock, __CFDictionaryApplyBlock, __CFSetApplyBlock, __NSAttachmentCharacterSet, __NSBidiControlCharacterSet, __NSBidiEmbeddingAndOverrideCharSet, - __NSBlockNumberForIndex, __NSCalculateContainerOrigin, __NSDiffableDataSourceApplyDeleteUpdate, - __NSDiffableDataSourceApplyInsertUpdate, __NSDiffableDataSourceApplyMoveUpdate, - __NSFontAttributeNames, __NSHTMLEncoding, __NSLayoutManagerObservedTextViewChangeNotification, + __NSBlockNumberForIndex, __NSCalculateContainerOrigin, __NSFontAttributeNames, + __NSHTMLEncoding, __NSLayoutManagerObservedTextViewChangeNotification, __NSNewTextView, __NSNonAttachmentCharacterSet, __NSOldTextView, __NSOriginalFontAttributeName, __NSReadAttributedStringFromData, __NSReadAttributedStringFromURL, __NSReadAttributedStringFromURLOrData, __NSReadAttributedStringFromURLOrDataAgent, __NSReadAttributedStringFromURLOrDataAsync, __NSReadAttributedStringFromURLOrDataSync, __NSStringDrawingCore, __NSStringHasRightToLeftBaseWritingDirectionAtIndex, __NSStringHasRightToLeftCharactersInRange, - __NSStringImputedBaseWritingDirectionAtIndex, __NSXMLEncoding, + __NSStringImputedBaseWritingDirectionAtIndex, __NSTextAnimatorPhaseDefault, + __NSTextAnimatorPhaseOff, __NSTextAnimatorPhaseOn, __NSXMLEncoding, __UIFoundationRoundedInverseTextScalingFactor, __UIFoundationRoundedTextScalingFactor, - __UISystemFontName, ___CTFontGetExtraData, ___NSHTMLReaderDelegateDocumentOption, - ___NSLineBreakStrategyStandardActualOptions, ___NSTokenizerLanguageSet, - _setCurrentCGContextDuringBlock_iOS, _setCurrentCGContextDuringBlock_macOS, - _setCurrentNSGraphicsContextDuringBlock_macOS ] - objc-classes: [ NSATSGlyphStorage, NSATSLineFragment, NSATSTypesetter, NSAttributeDictionary, - NSAttributeDictionaryEnumerator, NSCIDGlyphInfo, NSCTFont, - NSCTFontDescriptor, NSCTGlyphInfo, NSCollectionViewDiffableDataSource, - NSConcreteGlyphGenerator, NSConcreteNotifyingMutableAttributedString, - NSConcreteTextStorage, NSCoreTypesetter, NSCountableTextLocation, - NSCountableTextRange, NSDataAsset, NSDiffableDataSourceSnapshot, - NSDocFormatReader, NSDocFormatWriter, NSExtraLMData, NSFont, - NSFontAssetRequest, NSFontDescriptor, NSGlyphGenerator, NSGlyphInfo, - NSGlyphNameGlyphInfo, NSHTMLReader, NSHTMLWebDelegate, NSHTMLWriter, - NSIdRunStorage, NSIdentityGlyphInfo, NSInsertionPointHelper, - NSLayoutManager, NSLayoutManagerTextBlockHelper, NSLayoutManagerTextBlockRowArrayCache, - NSLineFragmentRenderingContext, NSMutableFontDescriptor, NSMutableParagraphStyle, - NSNotATextLocation, NSOpenDocumentReader, NSOpenDocumentWriter, - NSParagraphArbitrator, NSParagraphStyle, NSParagraphStyleExtraData, - NSRTFReader, NSRTFReaderTableState, NSRTFWriter, NSRunStorage, - NSShadow, NSSingleLineTypesetter, NSStorage, NSStringDrawingContext, + __UISystemFontName, ___CTFontGetExtraData, ___NSLineBreakStrategyStandardActualOptions, + ___NSTokenizerLanguageSet, _setCurrentCGContextDuringBlock_iOS, + _setCurrentCGContextDuringBlock_macOS, _setCurrentNSGraphicsContextDuringBlock_macOS ] + objc-classes: [ NSATSGlyphStorage, NSATSLineFragment, NSATSTypesetter, NSAdaptiveImageGlyph, + NSAttributeDictionary, NSAttributeDictionaryEnumerator, NSCIDGlyphInfo, + NSCTFont, NSCTFontDescriptor, NSCTGlyphInfo, NSConcreteGlyphGenerator, + NSConcreteNotifyingMutableAttributedString, NSConcreteTextStorage, + NSCoreTypesetter, NSCountableTextLocation, NSCountableTextRange, + NSDataAsset, NSDocFormatReader, NSDocFormatWriter, NSEmojiImageTextAttachment, + NSExtraLMData, NSFont, NSFontAssetRequest, NSFontDescriptor, + NSGlyphGenerator, NSGlyphInfo, NSGlyphNameGlyphInfo, NSHTMLReader, + NSHTMLWebDelegate, NSHTMLWriter, NSIdRunStorage, NSIdentityGlyphInfo, + NSInsertionPointHelper, NSLayoutManager, NSLayoutManagerTextBlockHelper, + NSLayoutManagerTextBlockRowArrayCache, NSLineFragmentRenderingContext, + NSMutableFontDescriptor, NSMutableParagraphStyle, NSNotATextLocation, + NSOpenDocumentReader, NSOpenDocumentWriter, NSParagraphArbitrator, + NSParagraphStyle, NSParagraphStyleExtraData, NSRTFReader, + NSRTFReaderTableState, NSRTFWriter, NSRunStorage, NSShadow, + NSSingleLineTypesetter, NSStorage, NSStringDrawingContext, NSStringDrawingTextStorage, NSStringDrawingTextStorageSettings, NSSubstituteWebResource, NSTempAttributeDictionary, NSTextAlternatives, - NSTextAttachment, NSTextAttachmentViewProvider, NSTextBlock, - NSTextBlockLayoutHelper, NSTextContainer, NSTextContentManager, + NSTextAnimationContext, NSTextAttachment, NSTextAttachmentViewProvider, + NSTextBlock, NSTextBlockLayoutHelper, NSTextContainer, NSTextContentManager, NSTextContentStorage, NSTextCorrectionMarkerRendering, NSTextElement, - NSTextGraphicsContextProvider, NSTextLayoutFragment, NSTextLayoutManager, - NSTextLineFragment, NSTextList, NSTextListElement, NSTextParagraph, - NSTextRange, NSTextSelection, NSTextSelectionNavigation, NSTextStorage, + NSTextGraphicsContextProvider, NSTextHighlightShapeProvider, + NSTextLayoutFragment, NSTextLayoutManager, NSTextLineFragment, + NSTextList, NSTextListElement, NSTextParagraph, NSTextRange, + NSTextSelection, NSTextSelectionNavigation, NSTextStorage, NSTextTab, NSTextTable, NSTextTableBlock, NSTextViewportLayoutController, - NSTypesetter, NSWordMLReader, NSWordMLWriter, NSZipTextReader, - UIBoxcarFilterPointFIFO, UIFont, UIFontDescriptor, UINibCoderValue, - UINibDecoder, UINibEncoder, UINibStringIDTable, UIPointFIFO, - UIQuadCurvePointFIFO, _NSATSTypesetterGuts, _NSAttributeRun, - _NSAttributedStringAsyncReadReply, _NSAttributedStringIntentResolver, + NSTypesetter, NSWordMLReader, NSWordMLWriter, NSWritingToolsContextState, + NSWritingToolsEditTracker, NSWritingToolsProofreadingController, + NSWritingToolsProofreadingSuggestion, NSZipTextReader, UIBoxcarFilterPointFIFO, + UIFont, UIFontDescriptor, UINibCoderValue, UINibDecoder, UINibEncoder, + UINibStringIDTable, UIPointFIFO, UIQuadCurvePointFIFO, _NSATSTypesetterGuts, + _NSAttributeRun, _NSAttributedStringAsyncReadReply, _NSAttributedStringIntentResolver, _NSAttributedStringWithResolvedIntents, _NSAttributes, _NSCachedAttributedString, - _NSCollectionViewDiffableDataSource, _NSDataSourceSnapshotter, - _NSDiffableDataSource, _NSDiffableDataSourceDiffer, _NSDiffableDataSourceSnapshot, - _NSDiffableDataSourceSnapshotter, _NSDiffableDataSourceState, - _NSDiffableDataSourceUpdate, _NSDiffableDataSourceViewUpdater, - _NSDiffableSectionBoundaryMoveDetector, _NSGenericCollectionViewUpdateItem, - _NSIdentifierDiffer, _NSIdentifierDifferMovePair, _NSOptimalLineBreaker, + _NSCustomTextRenderingDisplayLinkInfo, _NSOptimalLineBreaker, _NSTextStorageSideData, _UICache, _UIFontCacheKey, _UIFontDescriptorCacheKey, _UIFontNameCacheKey, _UIFontSystemCacheKey, _UIFontTextStyleCacheKey, - __NSATSStringSegment, __NSDiffableDataSource, __NSDiffableDataSourceSnapshot, - __NSFontExtraData, __NSFontTypefaceInfo, __NSUIAnimator ] + __NSATSStringSegment, __NSFontExtraData, __NSFontTypefaceInfo, + __NSUIAnimator ] objc-ivars: [ NSATSTypesetter.attributedString, NSATSTypesetter.currentParagraphStyle, NSATSTypesetter.currentTextContainer, NSATSTypesetter.currentTextContainerIndex, NSATSTypesetter.currentTextContainerSize, NSATSTypesetter.layoutManager, @@ -4747,4 +6734,8 @@ exports: __NSFontTypefaceInfo._liveInstances, __NSFontTypefaceInfo._normalizedFontDescriptor, __NSFontTypefaceInfo._postscriptName, __NSFontTypefaceInfo._tiFlags, __NSFontTypefaceInfo._verticalOriginDeltaCache ] +reexports: + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] + objc-classes: [ NSEmojiImageAsset, NSEmojiImageStrike ] ... diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/AppKit.h b/Frameworks/AppKit.framework/Versions/C/Headers/AppKit.h index 9af40924..68cafbaf 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/AppKit.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/AppKit.h @@ -1,7 +1,7 @@ /* AppKit.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. This file is included by all AppKit application source files for easy building. Using this file is preferred over importing individual files because it will use a precompiled version. @@ -34,6 +34,7 @@ #import #import #import +#import #import #import #import @@ -126,6 +127,7 @@ #import #import #import +#import #import #import #import @@ -276,3 +278,8 @@ #import #import #import +#import + +#import +#import +#import diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/AppKitDefines.h b/Frameworks/AppKit.framework/Versions/C/Headers/AppKitDefines.h index bcf4d72c..0b76ced2 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/AppKitDefines.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/AppKitDefines.h @@ -1,7 +1,7 @@ /* AppKitDefines.h Application Kit - Copyright (c) 1995-2023, Apple Inc. + Copyright (c) 1995-2024, Apple Inc. All rights reserved. */ #ifndef _APPKITDEFINES_H diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/AppKitErrors.h b/Frameworks/AppKit.framework/Versions/C/Headers/AppKitErrors.h index 9da94d80..0f4e17e9 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/AppKitErrors.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/AppKitErrors.h @@ -1,7 +1,7 @@ /* AppKitErrors.h Application Kit - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2024, Apple Inc. All rights reserved. */ @@ -56,6 +56,14 @@ enum { NSWindowSharingRequestUnspecifiedError API_AVAILABLE(macos(13.3)) = 67458, NSWindowSharingErrorMinimum API_AVAILABLE(macos(13.3)) = 67456, NSWindowSharingErrorMaximum API_AVAILABLE(macos(13.3)) = 67466, + + // NSPasteboard + NSPasteboardMiscellaneousError API_AVAILABLE(macos(15.4)) = 67584, + NSPasteboardCommunicationError API_AVAILABLE(macos(15.4)) = 67585, + NSPasteboardInvalidArgumentError API_AVAILABLE(macos(15.4)) = 67586, + NSPasteboardContentsNotAvailableError API_AVAILABLE(macos(15.4)) = 67587, + NSPasteboardErrorMinimum API_AVAILABLE(macos(15.4)) = 67584, + NSPasteboardErrorMaximum API_AVAILABLE(macos(15.4)) = 67839, }; API_UNAVAILABLE_END diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSATSTypesetter.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSATSTypesetter.h index 59d99ae5..6d75df6f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSATSTypesetter.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSATSTypesetter.h @@ -2,7 +2,7 @@ /* NSATSTypesetter.h Application Kit - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibility.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibility.h index b1d9c4cc..a49a619b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibility.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibility.h @@ -1,7 +1,7 @@ /* NSAccessibility.h Application Kit - Copyright (c) 2001-2023, Apple Inc. + Copyright (c) 2001-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityColor.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityColor.h index 2d841d14..22af3a48 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityColor.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityColor.h @@ -1,7 +1,7 @@ /* NSAccessibilityColor.h Application Kit - Copyright (c) 2020-2023, Apple Inc. + Copyright (c) 2020-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityConstants.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityConstants.h index 619517ad..6e70b61f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityConstants.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityConstants.h @@ -1,7 +1,7 @@ /* NSAccessibilityConstants.h Application Kit - Copyright (c) 2001-2023, Apple Inc. + Copyright (c) 2001-2024, Apple Inc. All rights reserved. */ #import diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityCustomAction.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityCustomAction.h index 1a795c8f..fd0cf4f6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityCustomAction.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityCustomAction.h @@ -1,7 +1,7 @@ /* NSAccessibilityCustomAction.h Application Kit - Copyright (c) 2017-2023, Apple Inc. All rights reserved. + Copyright (c) 2017-2024, Apple Inc. All rights reserved. */ #import diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityCustomRotor.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityCustomRotor.h index c99b3455..1e9d2321 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityCustomRotor.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityCustomRotor.h @@ -1,7 +1,7 @@ /* NSAccessibilityCustomRotor.h Application Kit - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityElement.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityElement.h index 79c59c9d..71e6c3ae 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityElement.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityElement.h @@ -1,7 +1,7 @@ /* NSAccessibilityElement.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityProtocols.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityProtocols.h index 42b55ad2..c7af01ff 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityProtocols.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAccessibilityProtocols.h @@ -1,7 +1,7 @@ /* NSAccessibilityProtocols.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSActionCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSActionCell.h index 251d05d2..ac997d56 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSActionCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSActionCell.h @@ -1,7 +1,7 @@ /* NSActionCell.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAdaptiveImageGlyph.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAdaptiveImageGlyph.h new file mode 100644 index 00000000..99c02cde --- /dev/null +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAdaptiveImageGlyph.h @@ -0,0 +1,49 @@ +#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include() +#include + +#if !TARGET_OS_IPHONE +// +// NSAdaptiveImageGlyph.h +// Text Kit +// +// Copyright (c) 2024, Apple Inc. All rights reserved. +// + +#import +#import +#import + +@protocol CTAdaptiveImageProviding; +@class UTType; + +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + +// NSAdaptiveImageGlyph is a data model object representing an image containing multiple resolutions and representations conforming to the image format described by NSAdaptiveImageGlyph.contentType. It can be applied to a range of text with NSAttributedString.Key.adaptiveImageGlyph (NSAdaptiveImageGlyphAttributeName). + +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)) NS_SWIFT_SENDABLE +@interface NSAdaptiveImageGlyph : NSObject + +- (instancetype)initWithImageContent:(NSData *)imageContent NS_DESIGNATED_INITIALIZER; // Initialization: imageContent must conform to the image data format identified by contentType +- (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; +- (instancetype)init NS_UNAVAILABLE; + +@property (readonly) NSData *imageContent; + +// Unique identifier, derived from the underlying image data which can be used as a persistent / durable way to reference the content represented by this adaptive image glyph instance. +@property (readonly) NSString *contentIdentifier; + +// Brief textual alternate representation of the represented contents, useful for non-graphical depiction of the image data or searching. Note that the value of this property is derived from the underlying image data. +@property (readonly, copy) NSString *contentDescription; + +@property (class, readonly) UTType *contentType; // A UTType identifying the image data format +@end + +@interface NSAttributedString (NSAttributedStringAdaptiveImageGlyphConveniences) +// A convenience method for creating an attributed string containing an NSAdaptiveImageGlyph with attributes using NSAttachmentCharacter as the base character. ++ (instancetype)attributedStringWithAdaptiveImageGlyph:(NSAdaptiveImageGlyph *)adaptiveImageGlyph attributes:(NSDictionary *)attributes API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); +@end +NS_HEADER_AUDIT_END(nullability, sendability) +#endif // !TARGET_OS_IPHONE +#else +#import +#endif diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAffineTransform.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAffineTransform.h index 333fed21..ca88c78d 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAffineTransform.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAffineTransform.h @@ -1,7 +1,7 @@ /* NSAffineTransform.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAlert.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAlert.h index b9854f1e..76af5586 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAlert.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAlert.h @@ -1,7 +1,7 @@ /* NSAlert.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAlignmentFeedbackFilter.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAlignmentFeedbackFilter.h index 08757237..2420dbd9 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAlignmentFeedbackFilter.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAlignmentFeedbackFilter.h @@ -1,7 +1,7 @@ /* NSAlignmentFeedbackFilter.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAnimation.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAnimation.h index 8b2f7a13..edfbfaf4 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAnimation.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAnimation.h @@ -1,7 +1,7 @@ /* NSAnimation.h Application Kit - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAnimationContext.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAnimationContext.h index 173c2430..0e6afbbd 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAnimationContext.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAnimationContext.h @@ -1,7 +1,7 @@ /* NSAnimationContext.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAppearance.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAppearance.h index ec4422bf..8583971e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAppearance.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAppearance.h @@ -1,7 +1,7 @@ /* NSAppearance.h Application Kit - Copyright (c) 2011-2023, Apple Inc. + Copyright (c) 2011-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAppleScriptExtensions.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAppleScriptExtensions.h index d1b206e2..2e667d41 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAppleScriptExtensions.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAppleScriptExtensions.h @@ -1,7 +1,7 @@ /* NSAppleScriptExtensions.h Application Kit - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSApplication.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSApplication.h index 18b32bb3..7fb73d2f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSApplication.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSApplication.h @@ -1,7 +1,7 @@ /* NSApplication.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -209,7 +209,8 @@ APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR - (void)deactivate; /// Makes the receiver the active app. -- (void)activateIgnoringOtherApps:(BOOL)flag API_DEPRECATED("This method will be deprecated in a future release. Use NSApp.activate instead.", macos(10.0, API_TO_BE_DEPRECATED)); +/// - Parameter ignoreOtherApps: If `NO`, the app is activated only if no other app is currently active. If `YES`, the app activates regardless. +- (void)activateIgnoringOtherApps:(BOOL)ignoreOtherApps API_DEPRECATED("This method will be deprecated in a future release. Use NSApp.activate instead.", macos(10.0, API_TO_BE_DEPRECATED)); /// Makes the receiver the active app, if possible. /// @@ -344,7 +345,7 @@ typedef NS_ENUM(NSUInteger, NSApplicationDelegateReply) { @interface NSApplication(NSEvent) - (void)sendEvent:(NSEvent *)event; -- (void)postEvent:(NSEvent *)event atStart:(BOOL)flag; +- (void)postEvent:(NSEvent *)event atStart:(BOOL)atStart; @property (nullable, readonly, strong) NSEvent *currentEvent; - (nullable NSEvent *)nextEventMatchingMask:(NSEventMask)mask untilDate:(nullable NSDate *)expiration inMode:(NSRunLoopMode)mode dequeue:(BOOL)deqFlag; - (void)discardEventsMatchingMask:(NSEventMask)mask beforeEvent:(nullable NSEvent *)lastEvent; @@ -369,9 +370,9 @@ typedef NS_ENUM(NSUInteger, NSApplicationDelegateReply) { @end @interface NSApplication(NSFullKeyboardAccess) -/** - Use this method to get the status of Full Keyboard Access, as configured in the Keyboard preference pane. You may use this status to implement your own key loop or to implement in-control tabbing behavior similar to @c NSTableView. Because of the nature of the preference storage, you will not be notified of changes to the key if you attempt to observe it via key-value observing; however, calling this method is fairly inexpensive, so you should always call it when you need the underlying value instead of caching it. - */ +/// A Boolean value indicating whether keyboard navigation is enabled in System Settings > Keyboard. +/// - Note: The value of this property is `YES` if keyboard navigation is enabled or `NO` if it’s not. You might use this value to implement your own key loop or to implement in-control tabbing behavior similar to `NSTableView`. Because of the nature of the preference storage, you won’t be notified of changes to this property if you attempt to observe it through key-value observing; however, accessing this property is fairly inexpensive, so you can access it directly rather than caching it. +/// - Note: This property’s value isn’t necessarily reflective of the separate accessibility setting named “Full Keyboard Access†in System Settings > Accessibility > Keyboard. @property (getter=isFullKeyboardAccessEnabled, readonly) BOOL fullKeyboardAccessEnabled API_AVAILABLE(macos(10.6)); @end @@ -415,7 +416,7 @@ typedef NS_ENUM(NSUInteger, NSApplicationPrintReply) { - (BOOL)application:(NSApplication *)sender printFile:(NSString *)filename NS_SWIFT_UI_ACTOR; - (NSApplicationPrintReply)application:(NSApplication *)application printFiles:(NSArray *)fileNames withSettings:(NSDictionary *)printSettings showPrintPanels:(BOOL)showPrintPanels NS_SWIFT_UI_ACTOR; - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender NS_SWIFT_UI_ACTOR; -- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag NS_SWIFT_UI_ACTOR; +- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)hasVisibleWindows NS_SWIFT_UI_ACTOR; - (nullable NSMenu *)applicationDockMenu:(NSApplication *)sender NS_SWIFT_UI_ACTOR; - (NSError *)application:(NSApplication *)application willPresentError:(NSError *)error NS_SWIFT_UI_ACTOR; @@ -700,7 +701,7 @@ enum { - (void)endSheet:(NSWindow *)sheet API_DEPRECATED("Use -[NSWindow endSheet:] instead", macos(10.0,10.10)); - (void)endSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode API_DEPRECATED("Use -[NSWindow endSheet:returnCode:] instead", macos(10.0,10.10)); -- (nullable NSWindow *)makeWindowsPerform:(SEL)selector inOrder:(BOOL)flag API_DEPRECATED("Use -enumerateWindowsWithOptions:usingBlock: instead", macos(10.0,10.14)); +- (nullable NSWindow *)makeWindowsPerform:(SEL)selector inOrder:(BOOL)inOrder API_DEPRECATED("Use -enumerateWindowsWithOptions:usingBlock: instead", macos(10.0,10.14)); /** This method is deprecated as of macOS 10.12. Beginning in OS X 10.11 it would always return nil. Prior to this it would return an undefined graphics context that was not generally suitable for drawing. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSApplicationScripting.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSApplicationScripting.h index 827b1f5a..098c3e72 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSApplicationScripting.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSApplicationScripting.h @@ -1,7 +1,7 @@ /* NSApplicationScripting.h AppKit Framework - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSArrayController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSArrayController.h index 4944eab1..a7b5c7e9 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSArrayController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSArrayController.h @@ -1,7 +1,7 @@ /* NSArrayController.h Application Kit - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSAttributedString.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSAttributedString.h index b22dfff6..8f2ba473 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSAttributedString.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSAttributedString.h @@ -1,63 +1,60 @@ -#if !__has_include() +#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include() +#include + +#if !TARGET_OS_IPHONE +#import + /* NSAttributedString.h - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. This file defines Application Kit extensions to NSAttributedString and NSMutableAttributedString. */ #import -#import -#import -#import -#import -#import -@class NSTextBlock, NSTextTable, NSTextList; + +@class NSAttributedString; @class NSFileWrapper; @class NSURL; NS_HEADER_AUDIT_BEGIN(nullability, sendability) -#if !TARGET_OS_IPHONE /************************ Attributes ************************/ // Predefined character attributes for text. If the key is not present in the dictionary, it indicates the default value described below. -APPKIT_EXTERN NSAttributedStringKey NSFontAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSFont, default Helvetica(Neue) 12 -APPKIT_EXTERN NSAttributedStringKey NSParagraphStyleAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSParagraphStyle, default defaultParagraphStyle -APPKIT_EXTERN NSAttributedStringKey NSForegroundColorAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSColor, default blackColor -APPKIT_EXTERN NSAttributedStringKey NSBackgroundColorAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSColor, default nil: no background -APPKIT_EXTERN NSAttributedStringKey NSLigatureAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSNumber containing integer, default 1: default ligatures, 0: no ligatures -APPKIT_EXTERN NSAttributedStringKey NSKernAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSNumber containing floating point value, in points; amount to modify default kerning. 0 means kerning is disabled. -APPKIT_EXTERN NSAttributedStringKey NSTrackingAttributeName API_AVAILABLE(macos(11.0), ios(14.0), watchos(7.0), tvos(14.0)); // NSNumber containing floating point value, in points; amount to modify default tracking. 0 means tracking is disabled. -APPKIT_EXTERN NSAttributedStringKey NSStrikethroughStyleAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSNumber containing integer, default 0: no strikethrough -APPKIT_EXTERN NSAttributedStringKey NSUnderlineStyleAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSNumber containing integer, default 0: no underline -APPKIT_EXTERN NSAttributedStringKey NSStrokeColorAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSColor, default nil: same as foreground color -APPKIT_EXTERN NSAttributedStringKey NSStrokeWidthAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSNumber containing floating point value, in percent of font point size, default 0: no stroke; positive for stroke alone, negative for stroke and fill (a typical value for outlined text would be 3.0) -APPKIT_EXTERN NSAttributedStringKey NSShadowAttributeName API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); // NSShadow, default nil: no shadow -APPKIT_EXTERN NSAttributedStringKey const NSTextEffectAttributeName API_AVAILABLE(macos(10.10), ios(7.0), watchos(2.0), tvos(9.0)); // NSString, default nil: no text effect - -APPKIT_EXTERN NSAttributedStringKey NSAttachmentAttributeName API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // NSTextAttachment, default nil -APPKIT_EXTERN NSAttributedStringKey NSLinkAttributeName API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // NSURL (preferred) or NSString -APPKIT_EXTERN NSAttributedStringKey NSBaselineOffsetAttributeName API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // NSNumber containing floating point value, in points; offset from baseline, default 0 -APPKIT_EXTERN NSAttributedStringKey NSUnderlineColorAttributeName API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // NSColor, default nil: same as foreground color -APPKIT_EXTERN NSAttributedStringKey NSStrikethroughColorAttributeName API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // NSColor, default nil: same as foreground color - -APPKIT_EXTERN NSAttributedStringKey NSWritingDirectionAttributeName API_AVAILABLE(macos(10.6), ios(7.0), watchos(2.0), tvos(9.0)); // NSArray of NSNumbers representing the nested levels of writing direction overrides as defined by Unicode LRE, RLE, LRO, and RLO characters. The control characters can be obtained by masking NSWritingDirection and NSWritingDirectionFormatType values. LRE: NSWritingDirectionLeftToRight|NSWritingDirectionEmbedding, RLE: NSWritingDirectionRightToLeft|NSWritingDirectionEmbedding, LRO: NSWritingDirectionLeftToRight|NSWritingDirectionOverride, RLO: NSWritingDirectionRightToLeft|NSWritingDirectionOverride, - -APPKIT_EXTERN NSAttributedStringKey NSCursorAttributeName; // NSCursor, default IBeamCursor -APPKIT_EXTERN NSAttributedStringKey NSToolTipAttributeName; // NSString, default nil: no tooltip - -APPKIT_EXTERN NSAttributedStringKey NSMarkedClauseSegmentAttributeName; // Clause segment index NSNumber (intValue). This attribute is used in marked text indicating clause segments - -APPKIT_EXTERN NSAttributedStringKey NSTextAlternativesAttributeName API_AVAILABLE(macos(10.8)); // An NSTextAlternatives object. Used primarily as a temporary attribute, with primaryString equal to the substring for the range to which it is attached, and alternativeStrings representing alternatives for that string that may be presented to the user. - -APPKIT_EXTERN NSAttributedStringKey NSSpellingStateAttributeName; // NSSpellingStateAttributeName is used and recognized only as a temporary attribute (see NSLayoutManager.h). It indicates that spelling and/or grammar indicators should be shown for the specified characters, default 0: no spelling or grammar indicator - - -APPKIT_EXTERN NSAttributedStringKey NSSuperscriptAttributeName; // NSNumber containing integer, default 0 -APPKIT_EXTERN NSAttributedStringKey NSGlyphInfoAttributeName; // NSGlyphInfo specifying glyph for the associated attribute range - +APPKIT_EXTERN NSAttributedStringKey NSFontAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // UIFont, default Helvetica(Neue) 12 +APPKIT_EXTERN NSAttributedStringKey NSParagraphStyleAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSParagraphStyle, default defaultParagraphStyle +APPKIT_EXTERN NSAttributedStringKey NSForegroundColorAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // UIColor, default blackColor +APPKIT_EXTERN NSAttributedStringKey NSBackgroundColorAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // UIColor, default nil: no background +APPKIT_EXTERN NSAttributedStringKey NSLigatureAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSNumber containing integer, default 1: default ligatures, 0: no ligatures +APPKIT_EXTERN NSAttributedStringKey NSKernAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSNumber containing floating point value, in points; amount to modify default kerning. 0 means kerning is disabled. +APPKIT_EXTERN NSAttributedStringKey NSTrackingAttributeName API_AVAILABLE(macos(11.0), ios(14.0), watchos(7.0), tvos(14.0), visionos(1.0)); // NSNumber containing floating point value, in points; amount to modify default tracking. 0 means tracking is disabled. +APPKIT_EXTERN NSAttributedStringKey NSStrikethroughStyleAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSNumber containing integer, default 0: no strikethrough +APPKIT_EXTERN NSAttributedStringKey NSUnderlineStyleAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSNumber containing integer, default 0: no underline +APPKIT_EXTERN NSAttributedStringKey NSStrokeColorAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // UIColor, default nil: same as foreground color +APPKIT_EXTERN NSAttributedStringKey NSStrokeWidthAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSNumber containing floating point value, in percent of font point size, default 0: no stroke; positive for stroke alone, negative for stroke and fill (a typical value for outlined text would be 3.0) +APPKIT_EXTERN NSAttributedStringKey NSShadowAttributeName API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSShadow, default nil: no shadow +APPKIT_EXTERN NSAttributedStringKey const NSTextEffectAttributeName API_AVAILABLE(macos(10.10), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSString, default nil: no text effect + +APPKIT_EXTERN NSAttributedStringKey NSAttachmentAttributeName API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSTextAttachment, default nil +APPKIT_EXTERN NSAttributedStringKey NSLinkAttributeName API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSURL (preferred) or NSString +APPKIT_EXTERN NSAttributedStringKey NSBaselineOffsetAttributeName API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSNumber containing floating point value, in points; offset from baseline, default 0 +APPKIT_EXTERN NSAttributedStringKey NSUnderlineColorAttributeName API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // UIColor, default nil: same as foreground color +APPKIT_EXTERN NSAttributedStringKey NSStrikethroughColorAttributeName API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // UIColor, default nil: same as foreground color + +APPKIT_EXTERN NSAttributedStringKey NSWritingDirectionAttributeName API_AVAILABLE(macos(10.6), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSArray of NSNumbers representing the nested levels of writing direction overrides as defined by Unicode LRE, RLE, LRO, and RLO characters. The control characters can be obtained by masking NSWritingDirection and NSWritingDirectionFormatType values. LRE: NSWritingDirectionLeftToRight|NSWritingDirectionEmbedding, RLE: NSWritingDirectionRightToLeft|NSWritingDirectionEmbedding, LRO: NSWritingDirectionLeftToRight|NSWritingDirectionOverride, RLO: NSWritingDirectionRightToLeft|NSWritingDirectionOverride, + +// NSTextHighlightStyleAttributeName is a character-level NSAttributedStringKey for decorating a section of text highlighted for emphasis. +APPKIT_EXTERN NSAttributedStringKey const NSTextHighlightStyleAttributeName API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); // NSTextHighlightStyle, default nil: no highlight + +// NSTextHighlightColorSchemeAttributeName is a character-level NSAttributedStringKey for specifying the color scheme used by NSTextHighlightStyleAttributeName at the same range. +APPKIT_EXTERN NSAttributedStringKey const NSTextHighlightColorSchemeAttributeName API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); // The default color scheme. The color is based on the tint/accent color for the rendering context. By default UIKit uses UIView.tintColor and AppKit uses NSColor.controlAccentColor. + +APPKIT_EXTERN NSAttributedStringKey const NSAdaptiveImageGlyphAttributeName API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); // NSAdaptiveImageGlyph, default nil + +// NSNumber (Boolean) value. Default is false. The range of text with NSWritingToolsExclusionAttributeName=true is excluded from the WritingTools processing and preserved. +APPKIT_EXTERN NSAttributedStringKey const NSWritingToolsExclusionAttributeName API_AVAILABLE(ios(18.2), macos(15.2)) API_UNAVAILABLE(visionos, tvos, watchos); /************************ Attribute values ************************/ // This defines currently supported values for NSUnderlineStyleAttributeName and NSStrikethroughStyleAttributeName. These values are or'ed together to produce an underline style. @@ -65,82 +62,213 @@ APPKIT_EXTERN NSAttributedStringKey NSGlyphInfoAttributeName; // NSGlyphInfo sp typedef NS_OPTIONS(NSInteger, NSUnderlineStyle) { NSUnderlineStyleNone = 0x00, NSUnderlineStyleSingle = 0x01, - NSUnderlineStyleThick API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)) = 0x02, - NSUnderlineStyleDouble API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)) = 0x09, + NSUnderlineStyleThick API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 0x02, + NSUnderlineStyleDouble API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 0x09, - NSUnderlineStylePatternSolid API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)) = 0x0000, - NSUnderlineStylePatternDot API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)) = 0x0100, - NSUnderlineStylePatternDash API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)) = 0x0200, - NSUnderlineStylePatternDashDot API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)) = 0x0300, - NSUnderlineStylePatternDashDotDot API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)) = 0x0400, + NSUnderlineStylePatternSolid API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 0x0000, + NSUnderlineStylePatternDot API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 0x0100, + NSUnderlineStylePatternDash API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 0x0200, + NSUnderlineStylePatternDashDot API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 0x0300, + NSUnderlineStylePatternDashDotDot API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 0x0400, - NSUnderlineStyleByWord API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)) = 0x8000 -} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); + NSUnderlineStyleByWord API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 0x8000 +} API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSWritingDirectionFormatType values used by NSWritingDirectionAttributeName. It is or'ed with either NSWritingDirectionLeftToRight or NSWritingDirectionRightToLeft. Can specify the formatting controls defined by Unicode Bidirectional Algorithm. typedef NS_ENUM(NSInteger, NSWritingDirectionFormatType) { NSWritingDirectionEmbedding = (0 << 1), NSWritingDirectionOverride = (1 << 1) -} API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); +} API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSTextEffectAttributeName values -typedef NSString * NSTextEffectStyle NS_TYPED_ENUM; -APPKIT_EXTERN NSTextEffectStyle const NSTextEffectLetterpressStyle API_AVAILABLE(macos(10.10), ios(7.0), watchos(2.0), tvos(9.0)); +typedef NSString * NSTextEffectStyle NS_TYPED_ENUM API_AVAILABLE(macos(10.10), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextEffectStyle const NSTextEffectLetterpressStyle API_AVAILABLE(macos(10.10), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); + +// NSTextHighlightStyleAttributeName values +typedef NSString * NSTextHighlightStyle NS_TYPED_EXTENSIBLE_ENUM API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); +APPKIT_EXTERN NSTextHighlightStyle const NSTextHighlightStyleDefault API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); // The system-defined default highlight type. Supported only with TextKit2 + +// NSTextHighlightColorSchemeAttributeName values +typedef NSString * NSTextHighlightColorScheme NS_TYPED_EXTENSIBLE_ENUM API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); +APPKIT_EXTERN NSTextHighlightColorScheme const NSTextHighlightColorSchemeDefault API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); // The system-defined default highlight type. Supported only with TextKit2 +APPKIT_EXTERN NSTextHighlightColorScheme const NSTextHighlightColorSchemePurple API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); +APPKIT_EXTERN NSTextHighlightColorScheme const NSTextHighlightColorSchemePink API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); +APPKIT_EXTERN NSTextHighlightColorScheme const NSTextHighlightColorSchemeOrange API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); +APPKIT_EXTERN NSTextHighlightColorScheme const NSTextHighlightColorSchemeMint API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); +APPKIT_EXTERN NSTextHighlightColorScheme const NSTextHighlightColorSchemeBlue API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); -// Flag values supported for NSSpellingStateAttributeName as of Mac OS X version 10.5. Prior to 10.5, any non-zero value caused the spelling indicator to be shown. -typedef NS_ENUM(NSInteger, NSSpellingState) { - NSSpellingStateSpellingFlag API_AVAILABLE(macos(10.5)) = (1 << 0), - NSSpellingStateGrammarFlag API_AVAILABLE(macos(10.5)) = (1 << 1) -}; /************************ Attribute fixing ************************/ @interface NSMutableAttributedString (NSAttributedStringAttributeFixing) // This method fixes attribute inconsistencies inside range. It ensures NSFontAttributeName covers the characters, NSParagraphStyleAttributeName is only changing at paragraph boundaries, and NSTextAttachmentAttributeName is assigned to NSAttachmentCharacter. NSTextStorage automatically invokes this method via -ensureAttributesAreFixedInRange:. -- (void)fixAttributesInRange:(NSRange)range API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); +- (void)fixAttributesInRange:(NSRange)range API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); -- (void)fixFontAttributeInRange:(NSRange)range; -- (void)fixParagraphStyleAttributeInRange:(NSRange)range; -- (void)fixAttachmentAttributeInRange:(NSRange)range; @end /************************ Document formats ************************/ -typedef NSString * NSAttributedStringDocumentType NS_TYPED_EXTENSIBLE_ENUM; +typedef NSString * NSAttributedStringDocumentType NS_TYPED_EXTENSIBLE_ENUM API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // Supported document types for the NSDocumentTypeDocumentAttribute key in the document attributes dictionary. -APPKIT_EXTERN NSAttributedStringDocumentType NSPlainTextDocumentType API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); -APPKIT_EXTERN NSAttributedStringDocumentType NSRTFTextDocumentType API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); -APPKIT_EXTERN NSAttributedStringDocumentType NSRTFDTextDocumentType API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); -APPKIT_EXTERN NSAttributedStringDocumentType NSHTMLTextDocumentType API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); -APPKIT_EXTERN NSAttributedStringDocumentType NSMacSimpleTextDocumentType; -APPKIT_EXTERN NSAttributedStringDocumentType NSDocFormatTextDocumentType; -APPKIT_EXTERN NSAttributedStringDocumentType NSWordMLTextDocumentType; -APPKIT_EXTERN NSAttributedStringDocumentType NSWebArchiveTextDocumentType; -APPKIT_EXTERN NSAttributedStringDocumentType NSOfficeOpenXMLTextDocumentType API_AVAILABLE(macos(10.5)); -APPKIT_EXTERN NSAttributedStringDocumentType NSOpenDocumentTextDocumentType API_AVAILABLE(macos(10.5)); +APPKIT_EXTERN NSAttributedStringDocumentType NSPlainTextDocumentType API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSAttributedStringDocumentType NSRTFTextDocumentType API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSAttributedStringDocumentType NSRTFDTextDocumentType API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSAttributedStringDocumentType NSHTMLTextDocumentType API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); -typedef NSString * NSTextLayoutSectionKey NS_TYPED_ENUM; +typedef NSString * NSTextLayoutSectionKey NS_TYPED_ENUM API_AVAILABLE(macos(10.7), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // Keys for NSLayoutOrientationSectionsAttribute. -APPKIT_EXTERN NSTextLayoutSectionKey NSTextLayoutSectionOrientation API_AVAILABLE(macos(10.7), ios(7.0), watchos(2.0), tvos(9.0)); // NSNumber containing NSTextLayoutOrientation value. default: NSTextLayoutOrientationHorizontal -APPKIT_EXTERN NSTextLayoutSectionKey NSTextLayoutSectionRange API_AVAILABLE(macos(10.7), ios(7.0), watchos(2.0), tvos(9.0)); // NSValue containing NSRange representing a character range. default: a range covering the whole document +APPKIT_EXTERN NSTextLayoutSectionKey NSTextLayoutSectionOrientation API_AVAILABLE(macos(10.7), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSNumber containing NSTextLayoutOrientation value. default: NSTextLayoutOrientationHorizontal +APPKIT_EXTERN NSTextLayoutSectionKey NSTextLayoutSectionRange API_AVAILABLE(macos(10.7), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSValue containing NSRange representing a character range. default: a range covering the whole document // Supported values for NSTextScalingDocumentAttribute, NSSourceTextScalingDocumentAttribute, NSTargetTextScalingDocumentOption, NSSourceTextScalingDocumentOption typedef NS_ENUM(NSInteger, NSTextScalingType) { NSTextScalingStandard = 0, // Font sizes throughout the document should appear visually similar to how they would render on macOS and non-Apple platforms NSTextScalingiOS // Font sizes throughout the document should appear visually similar to how they would render on iOS -} API_AVAILABLE(macos(10.15), ios(13.0)); +} API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0), visionos(1.0)); -typedef NSString * NSAttributedStringDocumentAttributeKey NS_TYPED_EXTENSIBLE_ENUM; +typedef NSString * NSAttributedStringDocumentAttributeKey NS_TYPED_EXTENSIBLE_ENUM API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // Keys for options and document attributes dictionaries. They are in and out document properties used by both read/write methods. -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSDocumentTypeDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // @"DocumentType", one of the document types declared above. For reader methods, this key in options can specify the document type for interpreting the contents. Upon return, the document attributes can contain this key for indicating the actual format used to read the contents. For write methods, this key specifies the format for generating the data. +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSDocumentTypeDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"DocumentType", one of the document types declared above. For reader methods, this key in options can specify the document type for interpreting the contents. Upon return, the document attributes can contain this key for indicating the actual format used to read the contents. For write methods, this key specifies the format for generating the data. + + +// NSPlainTextDocumentType document attributes +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSCharacterEncodingDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"CharacterEncoding", NSNumber containing integer specifying NSStringEncoding for the file; default for plain text is the default encoding. This key in options can specify the string encoding for reading the data. Upon return, the document attributes can contain the actual encoding used. For writing methods, this value is used for generating the plain text data. +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSDefaultAttributesDocumentAttribute API_AVAILABLE(macos(10.11), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"DefaultAttributes", NSDictionary containing attributes to be applied to plain files. Used by reader methods. This key in options can specify the default attributes applied to the entire document contents. The document attributes can contain this key indicating the actual attributes used. + + +// NSRTFTextDocumentType and NSRTFDTextDocumentType document attributes +// Document dimension +// They are document attributes used by read/write methods. +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSPaperSizeDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"PaperSize", NSValue containing CGSize (in points) + +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSViewSizeDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"ViewSize", NSValue containing CGSize (in points) +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSViewZoomDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"ViewZoom", NSNumber containing floating point value (100 == 100% zoom) +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSViewModeDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"ViewMode", NSNumber containing integer; 0 = normal; 1 = page layout + +// NSHTMLTextDocumentType document attributes +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey const NSDefaultFontExcludedDocumentAttribute API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0), visionos(1.0)); // for HTML writing only; NSNumber containing a BOOL, when true the HTML writer will not include font information unless specified + +// Document settings +// They are document attributes used by read/write methods. +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSReadOnlyDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"ReadOnly", NSNumber containing integer; if missing, or 0 or negative, not readonly; 1 or more, readonly. Note that this has nothing to do with the file system protection on the file, but instead, on how the file should be displayed to the user +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSBackgroundColorDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"BackgroundColor", UIColor, representing the document-wide page background color +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSHyphenationFactorDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"HyphenationFactor", NSNumber containing floating point value (0=off, 1=full hyphenation) +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSDefaultTabIntervalDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"DefaultTabInterval", NSNumber containing floating point value, representing the document-wide default tab stop interval, in points +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSTextLayoutSectionsAttribute API_AVAILABLE(macos(10.7), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NSArray of dictionaries. Each dictionary describing a layout orientation section. The dictionary can have two attributes: NSTextLayoutSectionOrientation and NSTextLayoutSectionRange. When there is a gap between sections, it's assumed to have NSTextLayoutOrientationHorizontal. + +// Document text scaling and Cocoa version +// They are document attributes used by read/write methods. +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey const NSTextScalingDocumentAttribute API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0), visionos(1.0)); // @"TextScaling", one of the text scaling types declared above. Only affects RTF documents. For reading methods, this indicates the type of text scaling used in the returned attributed string. For write methods, this attribute can be used in two different ways: (1) Passing only this attribute will overwrite the text scaling metadata in the document, but will not perform any conversion on the font sizes in the document, or (2) Passing both this attribute and NSSourceTextScalingDocumentAttribute will convert the font sizes in the document from the source text scaling type to the text scaling type specified by this attribute. + +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey const NSSourceTextScalingDocumentAttribute API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0), visionos(1.0)); // @"SourceTextScaling", one of the text scaling types declared above. Only affects RTF documents. For writing methods, this indicates the type of text scaling in the attributed string that will be used as the base type for conversion. Use this in conjunction with NSTextScalingDocumentAttribute to convert font point sizes between text scalings when writing attributed strings to RTF. This attribute is optional and does nothing unless NSTextScalingDocumentAttribute is also specified. + +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSCocoaVersionDocumentAttribute API_AVAILABLE(macos(10.4), ios(13.0), watchos(6.0), tvos(13.0), visionos(1.0)); // @"CocoaRTFVersion", NSNumber containing integer. Stores the version of Cocoa the file was created with. NSNumber containing float. Absence of this value indicates file not labelled as being created by Cocoa or its predecessors. Values less than 100 are pre-Mac OS X; 100 is Mac OS X 10.0 and 10.1; 102 is Mac OS X 10.2 and 10.3; values greater than 102 correspond to values of NSAppKitVersionNumber on 10.4-10.14 systems. Beginning with iOS 13 and macOS 10.15, this version number does not have a one-to-one correspondence with any single system framework version, but is guaranteed to monotonically increase with each OS version. + +typedef NSString * NSAttributedStringDocumentReadingOptionKey NS_TYPED_EXTENSIBLE_ENUM API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); + +APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey NSDocumentTypeDocumentOption API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"DocumentType", NSString indicating a document type to be forced when loading the document, specified as one of the NSDocumentTypeDocumentAttribute constants listed above +APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey NSDefaultAttributesDocumentOption API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"DefaultAttributes", for plain text only; NSDictionary containing attributes to be applied to plain files +APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey NSCharacterEncodingDocumentOption API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // @"CharacterEncoding", for plain text and HTML; NSNumber containing integer specifying NSStringEncoding to be used to interpret the file + +APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey const NSTargetTextScalingDocumentOption API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0), visionos(1.0)); // @"TargetTextScaling", one of the text scaling types declared above. Only affects RTF documents. For reading methods, you can pass this option to request that the returned attributed string uses the specified scaling. The font point sizes in the document may be converted if necessary. If this option is not provided, the system will deduce the target text scaling type based on application framework and platform. + +APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey const NSSourceTextScalingDocumentOption API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0), visionos(1.0)); // @"SourceTextScaling", one of the text scaling types declared above. Only affects RTF documents. For reading methods, you can pass this option to indicate the source text scaling type of the RTF document being read. Use this in conjunction with NSTargetTextScalingDocumentOption to control text scaling conversions on the font point sizes in the returned attributed string. This option does nothing unless NSTargetTextScalingDocumentOption is also specified. If this option is not provided, the system will deduce the source text scaling type based on the information in the document. + +// NSNumber containing a boolean value. When true, the TextKit1-style text list including the marker format string will be produced. +// NSAttributedString uses two representations for the text list. With TextKit2, the paragraph representing a text list item only contains the content. For example, " - text list A" is represented as "test list A" with a .hyphen NSTextList. TextKit1 requires the entire resolved text list content including the marker format string. +APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey const NSTextKit1ListMarkerFormatDocumentOption API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); + + +@interface NSAttributedString (NSAttributedStringDocumentFormats) +// Methods initializing the receiver contents with an external document data. options specify document attributes for interpreting the document contents. NSDocumentTypeDocumentAttribute, NSCharacterEncodingDocumentAttribute, and NSDefaultAttributesDocumentAttribute are supported options key. When they are not specified, these methods will examine the data and do their best to detect the appropriate attributes. If dict is non-NULL, it will return a dictionary with various document-wide attributes accessible via NS...DocumentAttribute keys. +- (nullable instancetype)initWithURL:(NSURL *)url options:(NSDictionary *)options documentAttributes:(NSDictionary * __nullable * __nullable)dict error:(NSError **)error API_AVAILABLE(macos(10.4), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); +- (nullable instancetype)initWithData:(NSData *)data options:(NSDictionary *)options documentAttributes:(NSDictionary * __nullable * __nullable)dict error:(NSError **)error API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); + +// Generates an NSData object for the receiver contents in range. It requires a document attributes dict specifying at least the NSDocumentTypeDocumentAttribute to determine the format to be written. +- (nullable NSData *)dataFromRange:(NSRange)range documentAttributes:(NSDictionary *)dict error:(NSError **)error API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); + +// Returns an NSFileWrapper object for the receiver contents in range. It requires a document attributes dict specifying at least the NSDocumentTypeDocumentAttribute to determine the format to be written. The method returns a directory file wrapper for those document types represented by a file package such as NSRTFDTextDocumentType; otherwise, it returns a regular-file file wrapper. +- (nullable NSFileWrapper *)fileWrapperFromRange:(NSRange)range documentAttributes:(NSDictionary *)dict error:(NSError **)error API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); + +@end + +@interface NSMutableAttributedString (NSMutableAttributedStringDocumentFormats) +// Methods replacing the receiver contents with an external document data. options specify document attributes for interpreting the document contents. NSDocumentTypeDocumentAttribute, NSCharacterEncodingDocumentAttribute, and NSDefaultAttributesDocumentAttribute are supported options key. When they are not specified, these methods will examine the data and do their best to detect the appropriate attributes. If dict is non-NULL, it will return a dictionary with various document-wide attributes accessible via NS...DocumentAttribute keys. +- (BOOL)readFromURL:(NSURL *)url options:(NSDictionary *)opts documentAttributes:(NSDictionary * __nullable * __nullable)dict error:(NSError **)error API_AVAILABLE(macosx(10.5), ios(9.0), watchos(2.0), tvos(9.0)); +- (BOOL)readFromData:(NSData *)data options:(NSDictionary *)opts documentAttributes:(NSDictionary * __nullable * __nullable)dict error:(NSError **)error API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +@end + + +/************************ Misc methods ************************/ +@interface NSAttributedString (NSAttributedStringKitAdditions) +// Returns YES if the receiver contains a property configured (NSAttachmentAttributeName with NSAttachmentCharacter) in range +- (BOOL)containsAttachmentsInRange:(NSRange)range API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); + +// Returns YES when any attribute preferring RTFD found in range. This method should be preferred over containsAttachmentsInRange() for determining its preferred external document format. +- (BOOL)prefersRTFDInRange:(NSRange)range API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); +@end + +NS_HEADER_AUDIT_END(nullability, sendability) + +#endif // !TARGET_OS_IPHONE +#else +#import +#endif + +#import +#import +#import +#import +#import +#import + +@class NSTextBlock, NSTextTable, NSTextList; +@class NSFileWrapper; +@class NSURL; + +#if !TARGET_OS_IPHONE +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + +APPKIT_EXTERN NSAttributedStringKey NSCursorAttributeName; // NSCursor, default IBeamCursor +APPKIT_EXTERN NSAttributedStringKey NSToolTipAttributeName; // NSString, default nil: no tooltip + +APPKIT_EXTERN NSAttributedStringKey NSMarkedClauseSegmentAttributeName; // Clause segment index NSNumber (intValue). This attribute is used in marked text indicating clause segments + +APPKIT_EXTERN NSAttributedStringKey NSTextAlternativesAttributeName API_AVAILABLE(macos(10.8)); // An NSTextAlternatives object. Used primarily as a temporary attribute, with primaryString equal to the substring for the range to which it is attached, and alternativeStrings representing alternatives for that string that may be presented to the user. + +APPKIT_EXTERN NSAttributedStringKey NSSpellingStateAttributeName; // NSSpellingStateAttributeName is used and recognized only as a temporary attribute (see NSLayoutManager.h). It indicates that spelling and/or grammar indicators should be shown for the specified characters, default 0: no spelling or grammar indicator + + +APPKIT_EXTERN NSAttributedStringKey NSSuperscriptAttributeName; // NSNumber containing integer, default 0 +APPKIT_EXTERN NSAttributedStringKey NSGlyphInfoAttributeName; // NSGlyphInfo specifying glyph for the associated attribute range + +// Flag values supported for NSSpellingStateAttributeName as of Mac OS X version 10.5. Prior to 10.5, any non-zero value caused the spelling indicator to be shown. +typedef NS_ENUM(NSInteger, NSSpellingState) { + NSSpellingStateSpellingFlag API_AVAILABLE(macos(10.5)) = (1 << 0), + NSSpellingStateGrammarFlag API_AVAILABLE(macos(10.5)) = (1 << 1) +}; + +/************************ Attribute fixing ************************/ + +@interface NSMutableAttributedString (NSAttributedStringAppKitAttributeFixing) +- (void)fixFontAttributeInRange:(NSRange)range; +- (void)fixParagraphStyleAttributeInRange:(NSRange)range; +- (void)fixAttachmentAttributeInRange:(NSRange)range; +@end + +APPKIT_EXTERN NSAttributedStringDocumentType NSMacSimpleTextDocumentType; +APPKIT_EXTERN NSAttributedStringDocumentType NSDocFormatTextDocumentType; +APPKIT_EXTERN NSAttributedStringDocumentType NSWordMLTextDocumentType; +APPKIT_EXTERN NSAttributedStringDocumentType NSWebArchiveTextDocumentType; +APPKIT_EXTERN NSAttributedStringDocumentType NSOfficeOpenXMLTextDocumentType API_AVAILABLE(macos(10.5)); +APPKIT_EXTERN NSAttributedStringDocumentType NSOpenDocumentTextDocumentType API_AVAILABLE(macos(10.5)); APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSConvertedDocumentAttribute; // @"Converted", NSNumber containing integer; if missing, or 0, the file was originally in the format specified by document type; if negative, the file was originally in the format specified by document type, but the conversion to NSAttributedString may have been lossy; if 1 or more, it was converted to the specified type by a filter service -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSCocoaVersionDocumentAttribute; // @"CocoaRTFVersion", NSNumber containing integer. Stores the version of Cocoa the file was created with. NSNumber containing float. Absence of this value indicates file not labelled as being created by Cocoa or its predecessors. Values less than 100 are pre-Mac OS X; 100 is Mac OS X 10.0 and 10.1; 102 is Mac OS X 10.2 and 10.3; values greater than 102 correspond to values of NSAppKitVersionNumber on 10.4 and later systems. APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSFileTypeDocumentAttribute API_AVAILABLE(macos(10.6)); // NSString indicating which document type was used to interpret the document, specified as a UTI; for reading, this is available along with NSDocumentTypeDocumentAttribute, but for writing the two are mutually exclusive APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSTitleDocumentAttribute; // NSString containing document title @@ -157,52 +285,16 @@ APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSManagerDocumentAttribute APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSCategoryDocumentAttribute API_AVAILABLE(macos(10.6)); // NSString containing the document category APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSAppearanceDocumentAttribute API_AVAILABLE(macos(10.14)); // NSAppearance used to evaluate named NSColors when saving. The appearance itself is not written out; it is just used to determine the generated color component values. If not specified the canonical default light appearance is used. -// NSPlainTextDocumentType document attributes -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSCharacterEncodingDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // @"CharacterEncoding", NSNumber containing integer specifying NSStringEncoding for the file; default for plain text is the default encoding. This key in options can specify the string encoding for reading the data. Upon return, the document attributes can contain the actual encoding used. For writing methods, this value is used for generating the plain text data. -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSDefaultAttributesDocumentAttribute API_AVAILABLE(macos(10.11), ios(7.0), watchos(2.0), tvos(9.0)); // @"DefaultAttributes", NSDictionary containing attributes to be applied to plain files. Used by reader methods. This key in options can specify the default attributes applied to the entire document contents. The document attributes can contain this key indicating the actual attributes used. - - -// NSRTFTextDocumentType and NSRTFDTextDocumentType document attributes -// Document dimension -// They are document attributes used by read/write methods. -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSPaperSizeDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // @"PaperSize", NSValue containing NSSize (in points) -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSLeftMarginDocumentAttribute; // @"LeftMargin", NSNumber containing floating point value (in points) -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSRightMarginDocumentAttribute; // @"RightMargin", NSNumber containing floating point value (in points) -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSTopMarginDocumentAttribute; // @"TopMargin", NSNumber containing floating point value (in points) -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSBottomMarginDocumentAttribute; // @"BottomMargin", NSNumber containing floating point value (in points) - -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSViewSizeDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // @"ViewSize", NSValue containing NSSize (in points) -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSViewZoomDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // @"ViewZoom", NSNumber containing floating point value (100 == 100% zoom) -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSViewModeDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // @"ViewMode", NSNumber containing integer; 0 = normal; 1 = page layout - -// Document settings -// They are document attributes used by read/write methods. -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSReadOnlyDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // @"ReadOnly", NSNumber containing integer; if missing, or 0 or negative, not readonly; 1 or more, readonly. Note that this has nothing to do with the file system protection on the file, but instead, on how the file should be displayed to the user -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSBackgroundColorDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // @"BackgroundColor", NSColor, representing the document-wide page background color -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSHyphenationFactorDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // @"HyphenationFactor", NSNumber containing floating point value (0=off, 1=full hyphenation) -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSDefaultTabIntervalDocumentAttribute API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // @"DefaultTabInterval", NSNumber containing floating point value, representing the document-wide default tab stop interval, in points -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSTextLayoutSectionsAttribute API_AVAILABLE(macos(10.7), ios(7.0), watchos(2.0), tvos(9.0)); // NSArray of dictionaries. Each dictionary describing a layout orientation section. The dictionary can have two attributes: NSTextLayoutSectionOrientation and NSTextLayoutSectionRange. When there is a gap between sections, it's assumed to have NSTextLayoutOrientationHorizontal. - // NSHTMLTextDocumentType document attributes // Additional document attributes added in 10.4, for HTML writing only. These provide control over the form of generated HTML. NSExcludedElementsDocumentAttribute allows control over the tags used. The recognized values in the NSExcludedElementsDocumentAttribute array are (case-insensitive) HTML tags, plus DOCTYPE (representing a doctype declaration) and XML (representing an XML declaration). By default, if this attribute is not present, the excluded elements will be those deprecated in HTML 4 (APPLET, BASEFONT, CENTER, DIR, FONT, ISINDEX, MENU, S, STRIKE, and U) plus XML. If XML is on the list, HTML forms will be used; if XML is not on the list, XHTML forms will be used where there is a distinction. Either NSCharacterEncodingDocumentAttribute or NSTextEncodingNameDocumentAttribute may be used to control the encoding used for generated HTML; character entities will be used for characters not representable in the specified encoding. Finally, NSPrefixSpacesDocumentAttribute allows some control over formatting. APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSExcludedElementsDocumentAttribute; // for HTML writing only; NSArray containing NSStrings, representing HTML elements not to be used in generated HTML APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSTextEncodingNameDocumentAttribute; // for HTML writing only; NSString containing the name, IANA or otherwise, of a text encoding to be used; mutually exclusive with NSCharacterEncodingDocumentAttribute APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSPrefixSpacesDocumentAttribute; // for HTML writing only; NSNumber containing integer, default 0, representing the number of spaces per level by which to indent certain nested HTML elements -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey const NSDefaultFontExcludedDocumentAttribute API_AVAILABLE(macos(14), ios(17), watchos(10), tvos(17)); // for HTML writing only; NSNumber containing a BOOL, when true the HTML writer will not include font information unless specified. - -// Document text scaling -// They are document attributes used by read/write methods. -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey const NSTextScalingDocumentAttribute API_AVAILABLE(macos(10.15), ios(13.0)); // @"TextScaling", one of the text scaling types declared above. Only affects RTF documents. For reading methods, this indicates the type of text scaling used in the returned attributed string. For write methods, this attribute can be used in two different ways: (1) Passing only this attribute will overwrite the text scaling metadata in the document, but will not perform any conversion on the font sizes in the document, or (2) Passing both this attribute and NSSourceTextScalingDocumentAttribute will convert the font sizes in the document from the source text scaling type to the text scaling type specified by this attribute. - -APPKIT_EXTERN NSAttributedStringDocumentAttributeKey const NSSourceTextScalingDocumentAttribute API_AVAILABLE(macos(10.15), ios(13.0)); // @"SourceTextScaling", one of the text scaling types declared above. Only affects RTF documents. For writing methods, this indicates the type of text scaling in the attributed string that will be used as the base type for conversion. Use this in conjunction with NSTextScalingDocumentAttribute to convert font point sizes between text scalings when writing attributed strings to RTF. This attribute is optional and does nothing unless NSTextScalingDocumentAttribute is also specified. -// The following are keys for various options that can be specified in the options dictionaries for the text import APIs below. Except for NSTextSizeMultiplierDocumentOption and NSFileTypeDocumentOption, the values have been recognized for some time, but the actual identifier shown below was added in 10.4. If you want your app to run on earlier systems, you need to continue using the actual string value that these identifiers represent. The actual string value is specified in the comments below. - -typedef NSString * NSAttributedStringDocumentReadingOptionKey NS_TYPED_EXTENSIBLE_ENUM; - -APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey NSDocumentTypeDocumentOption; // @"DocumentType", NSString indicating a document type to be forced when loading the document, specified as one of the NSDocumentTypeDocumentAttribute constants listed above -APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey NSDefaultAttributesDocumentOption; // @"DefaultAttributes", for plain text only; NSDictionary containing attributes to be applied to plain files -APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey NSCharacterEncodingDocumentOption; // @"CharacterEncoding", for plain text and HTML; NSNumber containing integer specifying NSStringEncoding to be used to interpret the file +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSLeftMarginDocumentAttribute; // @"LeftMargin", NSNumber containing floating point value (in points) +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSRightMarginDocumentAttribute; // @"RightMargin", NSNumber containing floating point value (in points) +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSTopMarginDocumentAttribute; // @"TopMargin", NSNumber containing floating point value (in points) +APPKIT_EXTERN NSAttributedStringDocumentAttributeKey NSBottomMarginDocumentAttribute; // @"BottomMargin", NSNumber containing floating point value (in points) APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey NSTextEncodingNameDocumentOption; // @"TextEncodingName", for HTML only; NSString containing a name, IANA or otherwise, specifying an encoding to be used to interpret the file; mutually exclusive with NSCharacterEncodingDocumentOption APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey NSBaseURLDocumentOption; // @"BaseURL", for HTML only; NSURL containing a URL to be treated as the base URL for the document @@ -214,21 +306,7 @@ APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey NSFileTypeDocumentOptio // In Mac OS X 10.4 and later, WebKit is always used for HTML documents, and all of the above options are recognized. In Mac OS X 10.3, there is an additional options key, @"UseWebKit" (NSNumber containing integer; if present and positive, specifies that WebKit-based HTML importing is to be used). In Mac OS X 10.3, the Timeout, WebPreferences, and WebResourceLoadDelegate options are recognized only when WebKit-based HTML importing is used. -APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey const NSTargetTextScalingDocumentOption API_AVAILABLE(macos(10.15), ios(13.0)); // @"TargetTextScaling", one of the text scaling types declared above. Only affects RTF documents. For reading methods, you can pass this option to request that the returned attributed string uses the specified scaling. The font point sizes in the document may be converted if necessary. If this option is not provided, the system will deduce the target text scaling type based on application framework and platform. - -APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey const NSSourceTextScalingDocumentOption API_AVAILABLE(macos(10.15), ios(13.0)); // @"SourceTextScaling", one of the text scaling types declared above. Only affects RTF documents. For reading methods, you can pass this option to indicate the source text scaling type of the RTF document being read. Use this in conjunction with NSTargetTextScalingDocumentOption to control text scaling conversions on the font point sizes in the returned attributed string. This option does nothing unless NSTargetTextScalingDocumentOption is also specified. If this option is not provided, the system will deduce the source text scaling type based on the information in the document. - -@interface NSAttributedString (NSAttributedStringDocumentFormats) -// Methods initializing the receiver contents with an external document data. options specify document attributes for interpreting the document contents. NSDocumentTypeDocumentAttribute, NSCharacterEncodingDocumentAttribute, and NSDefaultAttributesDocumentAttribute are supported options key. When they are not specified, these methods will examine the data and do their best to detect the appropriate attributes. If dict is non-NULL, it will return a dictionary with various document-wide attributes accessible via NS...DocumentAttribute keys. -- (nullable instancetype)initWithURL:(NSURL *)url options:(NSDictionary *)options documentAttributes:(NSDictionary * _Nullable * _Nullable)dict error:(NSError **)error API_AVAILABLE(macos(10.4), ios(9.0), watchos(2.0), tvos(9.0)); -- (nullable instancetype)initWithData:(NSData *)data options:(NSDictionary *)options documentAttributes:(NSDictionary * _Nullable * _Nullable)dict error:(NSError **)error API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); - -// Generates an NSData object for the receiver contents in range. It requires a document attributes dict specifying at least the NSDocumentTypeDocumentAttribute to determine the format to be written. -- (nullable NSData *)dataFromRange:(NSRange)range documentAttributes:(NSDictionary *)dict error:(NSError **)error API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); - -// Returns an NSFileWrapper object for the receiver contents in range. It requires a document attributes dict specifying at least the NSDocumentTypeDocumentAttribute to determine the format to be written. The method returns a directory file wrapper for those document types represented by a file package such as NSRTFDTextDocumentType; otherwise, it returns a regular-file file wrapper. -- (nullable NSFileWrapper *)fileWrapperFromRange:(NSRange)range documentAttributes:(NSDictionary *)dict error:(NSError **)error API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); - +@interface NSAttributedString (NSAttributedStringAppKitDocumentFormats) - (nullable instancetype)initWithRTF:(NSData *)data documentAttributes:(NSDictionary * _Nullable * _Nullable)dict; - (nullable instancetype)initWithRTFD:(NSData *)data documentAttributes:(NSDictionary * _Nullable * _Nullable)dict; - (nullable instancetype)initWithHTML:(NSData *)data documentAttributes:(NSDictionary * _Nullable * _Nullable)dict; @@ -242,24 +320,14 @@ APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey const NSSourceTextScali - (nullable NSData *)docFormatFromRange:(NSRange)range documentAttributes:(NSDictionary *)dict; @end -@interface NSMutableAttributedString (NSMutableAttributedStringDocumentFormats) -// Methods replacing the receiver contents with an external document data. options specify document attributes for interpreting the document contents. NSDocumentTypeDocumentAttribute, NSCharacterEncodingDocumentAttribute, and NSDefaultAttributesDocumentAttribute are supported options key. When they are not specified, these methods will examine the data and do their best to detect the appropriate attributes. If dict is non-NULL, it will return a dictionary with various document-wide attributes accessible via NS...DocumentAttribute keys. -- (BOOL)readFromURL:(NSURL *)url options:(NSDictionary *)opts documentAttributes:(NSDictionary * _Nullable * _Nullable)dict error:(NSError **)error API_AVAILABLE(macos(10.5), ios(9.0), watchos(2.0), tvos(9.0)); -- (BOOL)readFromData:(NSData *)data options:(NSDictionary *)opts documentAttributes:(NSDictionary * _Nullable * _Nullable)dict error:(NSError **)error API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); -@end - - /************************ Misc methods ************************/ -@interface NSAttributedString (NSAttributedStringKitAdditions) +@interface NSAttributedString (NSAttributedStringAppKitAdditions) // Attributes which should be copied/pasted with "copy font". - (NSDictionary *)fontAttributesInRange:(NSRange)range; // Attributes which should be copied/pasted with "copy ruler". - (NSDictionary *)rulerAttributesInRange:(NSRange)range; -// Returns YES if the receiver contains a property configured (NSAttachmentAttributeName with NSAttachmentCharacter) in range -- (BOOL)containsAttachmentsInRange:(NSRange)range API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); - // Returns NSNotFound if no line break location found in the specified range; otherwise returns the index of the first character that should go on the NEXT line. - (NSUInteger)lineBreakBeforeIndex:(NSUInteger)location withinRange:(NSRange)aRange; - (NSUInteger)lineBreakByHyphenatingBeforeIndex:(NSUInteger)location withinRange:(NSRange)aRange; @@ -281,7 +349,7 @@ APPKIT_EXTERN NSAttributedStringDocumentReadingOptionKey const NSSourceTextScali @property(class, readonly, copy) NSArray *textUnfilteredTypes API_AVAILABLE(macos(10.5)); @end -@interface NSMutableAttributedString (NSMutableAttributedStringKitAdditions) +@interface NSMutableAttributedString (NSMutableAttributedStringAppKitAdditions) - (void)superscriptRange:(NSRange)range; - (void)subscriptRange:(NSRange)range; - (void)unscriptRange:(NSRange)range; @@ -335,8 +403,5 @@ APPKIT_EXTERN NSUInteger NSUnderlineByWordMask API_DEPRECATED("Use NSUnderlineBy - (BOOL)readFromURL:(NSURL *)url options:(NSDictionary *)options documentAttributes:(NSDictionary* _Nullable * _Nullable)dict API_DEPRECATED("Use -readFromURL:options:documentAttributes:error: instead", macos(10.0,10.11)); - (BOOL)readFromData:(NSData *)data options:(NSDictionary *)options documentAttributes:(NSDictionary* _Nullable * _Nullable)dict API_DEPRECATED("Use -readFromData:options:documentAttributes:error: instead", macos(10.0,10.11)); @end -#endif // !TARGET_OS_IPHONE NS_HEADER_AUDIT_END(nullability, sendability) -#else -#import -#endif +#endif // !TARGET_OS_IPHONE diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSBezierPath.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSBezierPath.h index f8855fb0..26968044 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSBezierPath.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSBezierPath.h @@ -1,7 +1,7 @@ /* NSBezierPath.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSBitmapImageRep.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSBitmapImageRep.h index e0ee5f1d..8d0e8078 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSBitmapImageRep.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSBitmapImageRep.h @@ -1,7 +1,7 @@ /* NSBitmapImageRep.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSBox.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSBox.h index 7a90191c..f8489f4b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSBox.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSBox.h @@ -1,7 +1,7 @@ /* NSBox.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSBrowser.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSBrowser.h index a2313cfd..3a82ceff 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSBrowser.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSBrowser.h @@ -1,7 +1,7 @@ /* NSBrowser.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSBrowserCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSBrowserCell.h index 0d63d29a..c5e2624b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSBrowserCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSBrowserCell.h @@ -1,7 +1,7 @@ /* NSBrowserCell.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSButton.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSButton.h index 656f937c..c11699d0 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSButton.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSButton.h @@ -1,7 +1,7 @@ /* NSButton.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -140,7 +140,7 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST /*! Specifies a combination of point size, weight, and scale to use when sizing and displaying symbol images. If a symbol configuration isn't provided, the symbol is matched to the button's `font` property. The default value is nil. */ -@property (nullable, copy) NSImageSymbolConfiguration *symbolConfiguration API_AVAILABLE(macos(11)); +@property (nullable, copy) NSImageSymbolConfiguration *symbolConfiguration API_AVAILABLE(macos(11.0)); #pragma mark Managing Button State diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSButtonCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSButtonCell.h index 79b87f2c..0c8bc24a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSButtonCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSButtonCell.h @@ -1,7 +1,7 @@ /* NSButtonCell.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSButtonTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSButtonTouchBarItem.h index b5d305b5..11f0820a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSButtonTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSButtonTouchBarItem.h @@ -1,7 +1,7 @@ /* NSButtonTouchBarItem.h Application Kit - Copyright (c) 2019-2023, Apple Inc. + Copyright (c) 2019-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCIImageRep.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCIImageRep.h index 1df60a95..46f4ff4b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCIImageRep.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCIImageRep.h @@ -1,7 +1,7 @@ /* NSCIImageRep.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCachedImageRep.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCachedImageRep.h index 4317d78d..a833d37f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCachedImageRep.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCachedImageRep.h @@ -1,7 +1,7 @@ /* NSCachedImageRep.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCandidateListTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCandidateListTouchBarItem.h index 9a66dafb..63cadd4e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCandidateListTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCandidateListTouchBarItem.h @@ -1,7 +1,7 @@ /* NSCandidateListTouchBarItem.h Application Kit - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCell.h index 7ebd1f44..e8376b2a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCell.h @@ -1,7 +1,7 @@ /* NSCell.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSClickGestureRecognizer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSClickGestureRecognizer.h index d979df2b..9b4b9337 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSClickGestureRecognizer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSClickGestureRecognizer.h @@ -1,7 +1,7 @@ /* NSClickGestureRecognizer.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSClipView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSClipView.h index c6e9ad63..bbe24ae3 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSClipView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSClipView.h @@ -1,7 +1,7 @@ /* NSClipView.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionView.h index 42ee8276..c9439258 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionView.h @@ -1,7 +1,7 @@ /* NSCollectionView.h Application Kit - Copyright (c) 2005-2023, Apple Inc. + Copyright (c) 2005-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewCompositionalLayout.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewCompositionalLayout.h index a94a6499..cf9dcb8b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewCompositionalLayout.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewCompositionalLayout.h @@ -1,7 +1,7 @@ /* NSCollectionViewCompositionalLayout.h Application Kit - Copyright (c) 2019-2023, Apple Inc. + Copyright (c) 2019-2024, Apple Inc. All rights reserved. */ @@ -82,7 +82,7 @@ NS_INLINE NSDirectionalEdgeInsets NSDirectionalEdgeInsetsMake(CGFloat top, CGFlo /* End temporary declarations */ -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @interface NSCollectionViewCompositionalLayoutConfiguration : NSObject @property NSCollectionViewScrollDirection scrollDirection; @property CGFloat interSectionSpacing; @@ -131,7 +131,7 @@ typedef NS_ENUM(NSInteger,NSCollectionLayoutSectionOrthogonalScrollingBehavior) typedef void (^NSCollectionLayoutSectionVisibleItemsInvalidationHandler)(NSArray> *visibleItems, NSPoint contentOffset, id layoutEnvironment); -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @interface NSCollectionLayoutSection : NSObject + (instancetype)sectionWithGroup:(NSCollectionLayoutGroup*)group; - (instancetype)init NS_UNAVAILABLE; @@ -157,7 +157,7 @@ API_AVAILABLE(macos(10.15)) @end -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @interface NSCollectionLayoutItem : NSObject + (instancetype)itemWithLayoutSize:(NSCollectionLayoutSize*)layoutSize; + (instancetype)itemWithLayoutSize:(NSCollectionLayoutSize*)layoutSize supplementaryItems:(NSArray*)supplementaryItems; @@ -211,7 +211,7 @@ API_AVAILABLE(macos(10.15)) @property(readonly) NSArray *supplementaryItems; @end -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @interface NSCollectionLayoutGroupCustomItem : NSObject + (instancetype)customItemWithFrame:(NSRect)frame; + (instancetype)customItemWithFrame:(NSRect)frame zIndex:(NSInteger)zIndex; @@ -294,7 +294,7 @@ API_AVAILABLE(macos(10.15)) @end -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @interface NSCollectionLayoutDimension : NSObject // dimension is computed as a fraction of the width of the containing group + (instancetype)fractionalWidthDimension:(CGFloat)fractionalWidth; @@ -318,7 +318,7 @@ API_AVAILABLE(macos(10.15)) @property(readonly) CGFloat dimension; @end -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @interface NSCollectionLayoutSize : NSObject + (instancetype)sizeWithWidthDimension:(NSCollectionLayoutDimension*)width heightDimension:(NSCollectionLayoutDimension*)height; - (instancetype)init NS_UNAVAILABLE; @@ -328,7 +328,7 @@ API_AVAILABLE(macos(10.15)) @property(readonly) NSCollectionLayoutDimension *heightDimension; @end -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @interface NSCollectionLayoutSpacing : NSObject + (instancetype)flexibleSpacing:(CGFloat)flexibleSpacing; // i.e. >= + (instancetype)fixedSpacing:(CGFloat)fixedSpacing; // i.e. == @@ -341,7 +341,7 @@ API_AVAILABLE(macos(10.15)) @property(readonly) BOOL isFixedSpacing; @end -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @interface NSCollectionLayoutEdgeSpacing : NSObject // Edge spacing specifies additional outsets around items required when performing layout. @@ -524,7 +524,7 @@ API_AVAILABLE(macos(10.15)) @property(readonly) NSString *elementKind; @end -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @interface NSCollectionLayoutAnchor : NSObject // +------------------+ +------+ +------------------+ @@ -581,7 +581,7 @@ API_AVAILABLE(macos(10.15)) @property(readonly) BOOL isFractionalOffset; @end -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @protocol NSCollectionLayoutContainer @property(readonly) NSSize contentSize; // resolved size of container (before any insets are applied) @property(readonly) NSSize effectiveContentSize; // after insets are applied @@ -589,12 +589,12 @@ API_AVAILABLE(macos(10.15)) @property(readonly) NSDirectionalEdgeInsets effectiveContentInsets; // resolved value after resolving any unit values @end -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @protocol NSCollectionLayoutEnvironment @property(readonly) id container; @end -API_AVAILABLE(macos(10.15)) +API_AVAILABLE(macos(10.15)) NS_SWIFT_UI_ACTOR @protocol NSCollectionLayoutVisibleItem @property CGFloat alpha; @property NSInteger zIndex; diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewFlowLayout.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewFlowLayout.h index e332221c..4027ae8b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewFlowLayout.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewFlowLayout.h @@ -1,7 +1,7 @@ /* NSCollectionViewFlowLayout.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewGridLayout.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewGridLayout.h index 4c5d7513..91b837e4 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewGridLayout.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewGridLayout.h @@ -1,7 +1,7 @@ /* NSCollectionViewGridLayout.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewLayout.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewLayout.h index d697af8f..31c34926 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewLayout.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewLayout.h @@ -1,7 +1,7 @@ /* NSCollectionViewLayout.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ @@ -36,7 +36,7 @@ APPKIT_EXTERN NSCollectionViewSupplementaryElementKind const NSCollectionElement @class NSCollectionView; @class NSNib; -APPKIT_EXTERN API_AVAILABLE(macos(10.11)) +APPKIT_EXTERN API_AVAILABLE(macos(10.11)) NS_SWIFT_UI_ACTOR @interface NSCollectionViewLayoutAttributes : NSObject @property NSRect frame; @@ -64,7 +64,7 @@ typedef NS_ENUM(NSInteger, NSCollectionUpdateAction) { NSCollectionUpdateActionNone } API_AVAILABLE(macos(10.11)); -APPKIT_EXTERN API_AVAILABLE(macos(10.11)) +APPKIT_EXTERN API_AVAILABLE(macos(10.11)) NS_SWIFT_UI_ACTOR @interface NSCollectionViewUpdateItem : NSObject @property (nullable, readonly) NSIndexPath *indexPathBeforeUpdate; // nil for NSCollectionUpdateActionInsert @@ -73,7 +73,7 @@ APPKIT_EXTERN API_AVAILABLE(macos(10.11)) @end -APPKIT_EXTERN API_AVAILABLE(macos(10.11)) +APPKIT_EXTERN API_AVAILABLE(macos(10.11)) NS_SWIFT_UI_ACTOR @interface NSCollectionViewLayoutInvalidationContext : NSObject @property (readonly) BOOL invalidateEverything; // set to YES when invalidation occurs because the collection view is sent -reloadData @@ -93,7 +93,7 @@ APPKIT_EXTERN API_AVAILABLE(macos(10.11)) /* The NSCollectionViewLayout class is provided as an abstract class for subclassing to define custom collection layouts. Defining a custom layout is an advanced operation intended for applications with complex needs. */ -APPKIT_EXTERN API_AVAILABLE(macos(10.11)) +APPKIT_EXTERN API_AVAILABLE(macos(10.11)) NS_SWIFT_UI_ACTOR @interface NSCollectionViewLayout : NSObject /* Methods in this class are meant to be overridden and will be called by its collection view to gather layout information. To get the truth on the current state of the collection view, call methods on NSCollectionView rather than these. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewTransitionLayout.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewTransitionLayout.h index 7fe3daca..a5310a88 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewTransitionLayout.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCollectionViewTransitionLayout.h @@ -1,7 +1,7 @@ /* NSCollectionViewTransitionLayout.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSColor.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSColor.h index 84e8c062..2c662e7c 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSColor.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSColor.h @@ -1,7 +1,7 @@ /* NSColor.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorList.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorList.h index d3a10954..7f865591 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorList.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorList.h @@ -1,7 +1,7 @@ /* NSColorList.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPanel.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPanel.h index bcce0b3c..f5ac7f7b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPanel.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPanel.h @@ -1,7 +1,7 @@ /* NSColorPanel.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPicker.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPicker.h index 2e49e024..fad281d9 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPicker.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPicker.h @@ -1,7 +1,7 @@ /* NSColorPicker.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPickerTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPickerTouchBarItem.h index 7c4fabd4..ac49f92a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPickerTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPickerTouchBarItem.h @@ -1,7 +1,7 @@ /* NSColorPickerTouchBarItem.h Application Kit - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPicking.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPicking.h index 4315eabc..1399102a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPicking.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorPicking.h @@ -1,7 +1,7 @@ /* NSColorPicking.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorSampler.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorSampler.h index 6b28ef1b..b731df4f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorSampler.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorSampler.h @@ -1,7 +1,7 @@ /* NSColorSampler.h Application Kit - Copyright (c) 2018-2023, Apple Inc. + Copyright (c) 2018-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorSpace.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorSpace.h index 9d8efc9d..728a043c 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorSpace.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorSpace.h @@ -1,7 +1,7 @@ /* NSColorSpace.h Application Kit - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorWell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorWell.h index b52595af..e59b6aa2 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSColorWell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSColorWell.h @@ -1,7 +1,7 @@ /* NSColorWell.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSComboBox.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSComboBox.h index c3c6e6b7..e73c0042 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSComboBox.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSComboBox.h @@ -1,7 +1,7 @@ /* NSComboBox.h Application Kit - Copyright (c) 1996-2023, Apple Inc. + Copyright (c) 1996-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSComboBoxCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSComboBoxCell.h index 0fae1ab0..cf0bfb50 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSComboBoxCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSComboBoxCell.h @@ -1,7 +1,7 @@ /* NSComboBoxCell.h Application Kit - Copyright (c) 1996-2023, Apple Inc. + Copyright (c) 1996-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSComboButton.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSComboButton.h index d3fa7474..fe6f7f2b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSComboButton.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSComboButton.h @@ -1,7 +1,7 @@ /* NSComboButton.h Application Kit - Copyright (c) 2021-2023, Apple Inc. + Copyright (c) 2021-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSControl.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSControl.h index e1a71cbf..a176e9d9 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSControl.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSControl.h @@ -1,7 +1,7 @@ /* NSControl.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSController.h index 899dca23..7ecf0632 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSController.h @@ -1,7 +1,7 @@ /* NSController.h Application Kit - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCursor.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCursor.h index 124027fc..098b6456 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCursor.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCursor.h @@ -1,14 +1,15 @@ /* NSCursor.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ #import #import -#import #import +#import +#import NS_HEADER_AUDIT_BEGIN(nullability, sendability) @@ -20,40 +21,7 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) API_AVAILABLE(macos(10.0), ios(13.0)) @interface NSCursor : NSObject -/** Returns the application’s current cursor. This is not necessarily the cursor that is currently being displayed on the system. If you need the currently displayed cursor, use `NSCursor.currentSystemCursor`. -*/ -@property (class, readonly, strong) NSCursor *currentCursor; - -/** Returns an `NSCursor` whose image and hot spot match those of the cursor that is currently being displayed on the system, regardless of which application set that cursor. - - For example, this allows an inactive application to examine the image and hot spot of a cursor set by the active application. - - In the case that the current system cursor is hidden, this property is an `NSCursor` whose image matches the cursor you would see if it were visible. - - Only the cursor image and hot spot are replicated in the returned `NSCursor`. Other properties (such as `isSetOnMouseExited` and `isSetOnMouseEntered`) will not necessarily be accurate. The returned instance **cannot** be used for pointer (`==`) or object (`-isEqual:`) equality operations, since a new instance is created lazily on each access of this property. - - This property is `nil` if the currently displayed cursor couldn’t be fetched. - */ -@property (class, readonly, nullable, strong) NSCursor *currentSystemCursor API_AVAILABLE(macos(10.6)); - -@property (class, readonly, strong) NSCursor *arrowCursor; -@property (class, readonly, strong) NSCursor *IBeamCursor; -@property (class, readonly, strong) NSCursor *pointingHandCursor; -@property (class, readonly, strong) NSCursor *closedHandCursor; -@property (class, readonly, strong) NSCursor *openHandCursor; -@property (class, readonly, strong) NSCursor *resizeLeftCursor; -@property (class, readonly, strong) NSCursor *resizeRightCursor; -@property (class, readonly, strong) NSCursor *resizeLeftRightCursor; -@property (class, readonly, strong) NSCursor *resizeUpCursor; -@property (class, readonly, strong) NSCursor *resizeDownCursor; -@property (class, readonly, strong) NSCursor *resizeUpDownCursor; -@property (class, readonly, strong) NSCursor *crosshairCursor; -@property (class, readonly, strong) NSCursor *disappearingItemCursor; -@property (class, readonly, strong) NSCursor *operationNotAllowedCursor API_AVAILABLE(macos(10.5)); -@property (class, readonly, strong) NSCursor *dragLinkCursor API_AVAILABLE(macos(10.6)); -@property (class, readonly, strong) NSCursor *dragCopyCursor API_AVAILABLE(macos(10.6)); -@property (class, readonly, strong) NSCursor *contextualMenuCursor API_AVAILABLE(macos(10.6)); -@property (class, readonly, strong) NSCursor *IBeamCursorForVerticalLayout API_AVAILABLE(macos(10.7)); +// MARK: - Initializing a New Cursor #if !TARGET_OS_IPHONE - (instancetype)initWithImage:(NSImage *)newImage hotSpot:(NSPoint)point NS_DESIGNATED_INITIALIZER; @@ -62,10 +30,7 @@ API_AVAILABLE(macos(10.0), ios(13.0)) #endif - (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; -+ (void)hide; -+ (void)unhide; -+ (void)setHiddenUntilMouseMoves:(BOOL)flag; -+ (void)pop; +// MARK: - Setting Cursor Attributes #if !TARGET_OS_IPHONE @property (readonly, strong) NSImage *image; @@ -74,14 +39,130 @@ API_AVAILABLE(macos(10.0), ios(13.0)) #endif @property (readonly) NSPoint hotSpot; -- (void)push; +// MARK: - Controlling Which Cursor Is Current + ++ (void)hide; ++ (void)unhide; ++ (void)setHiddenUntilMouseMoves:(BOOL)flag; ++ (void)pop; - (void)pop; +- (void)push; - (void)set; +// MARK: - Retrieving Cursor Instances + +/// Returns the application’s current cursor. +/// - Note: This isn’t necessarily the cursor that is currently being displayed, as the system may be showing the cursor for another running application. +@property (class, readonly, strong) NSCursor *currentCursor; + +/// Returns the default cursor, the arrow cursor. +/// - Discussion: The default cursor, a slanted arrow with its hot spot at the tip. The arrow cursor is the one you’re used to seeing over buttons, scrollers, and many other objects in the window system. +@property (class, readonly, strong) NSCursor *arrowCursor; + +@property (class, readonly, strong) NSCursor *crosshairCursor; +@property (class, readonly, strong) NSCursor *disappearingItemCursor; +@property (class, readonly, strong) NSCursor *operationNotAllowedCursor API_AVAILABLE(macos(10.5)); +@property (class, readonly, strong) NSCursor *dragLinkCursor API_AVAILABLE(macos(10.6)); +@property (class, readonly, strong) NSCursor *dragCopyCursor API_AVAILABLE(macos(10.6)); +@property (class, readonly, strong) NSCursor *contextualMenuCursor API_AVAILABLE(macos(10.6)); + +// MARK: Hand Cursors + +@property (class, readonly, strong) NSCursor *pointingHandCursor; +@property (class, readonly, strong) NSCursor *closedHandCursor; +@property (class, readonly, strong) NSCursor *openHandCursor; + +// MARK: I-Beam Cursors + +@property (class, readonly, strong) NSCursor *IBeamCursor; +@property (class, readonly, strong) NSCursor *IBeamCursorForVerticalLayout API_AVAILABLE(macos(10.7)); + +// MARK: Zoom Cursors + +/// Returns the zoom-in cursor. +/// - Note: This cursor is used to indicate zooming in on (magnifying) a canvas or object. +@property (class, readonly, strong) NSCursor *zoomInCursor API_AVAILABLE(macos(15.0)); + +/// Returns the zoom-out cursor. +/// - Note: This cursor is used to indicate zooming out of a canvas or object. +@property (class, readonly, strong) NSCursor *zoomOutCursor API_AVAILABLE(macos(15.0)); + +// MARK: Column Resize Cursors + +/// Returns the cursor for resizing a column (vertical divider) in either direction. +@property (class, readonly, strong) NSCursor *columnResizeCursor NS_SWIFT_NAME(columnResize) API_AVAILABLE(macos(15.0)); + +/// Returns the cursor for resizing a column (vertical divider) in the specified directions. +/// - Parameter directions: The direction in which a column can be resized. ++ (NSCursor *)columnResizeCursorInDirections:(NSHorizontalDirections)directions NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.0)); + +// MARK: Row Resize Cursors + +/// Returns the cursor for resizing a row (horizontal divider) in either direction. +@property (class, readonly, strong) NSCursor *rowResizeCursor NS_SWIFT_NAME(rowResize) API_AVAILABLE(macos(15.0)); + +/// Returns the cursor for resizing a row (horizontal divider) in the specified directions. +/// - Parameter directions: The direction in which a row can be resized. ++ (NSCursor *)rowResizeCursorInDirections:(NSVerticalDirections)directions NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.0)); + +// MARK: Frame Resize Cursors + +/// The position along the perimeter of a rectangular frame (its edges and corners) from which it’s resized. +typedef NS_CLOSED_ENUM(NSUInteger, NSCursorFrameResizePosition) { + /// The top edge of the frame. + NSCursorFrameResizePositionTop = (1 << 0), + /// The left edge of the frame. + NSCursorFrameResizePositionLeft = (1 << 1), + /// The bottom edge of the frame. + NSCursorFrameResizePositionBottom = (1 << 2), + /// The right edge of the frame. + NSCursorFrameResizePositionRight = (1 << 3), + /// The top left corner of the frame. + NSCursorFrameResizePositionTopLeft = (NSCursorFrameResizePositionTop | NSCursorFrameResizePositionLeft), + /// The top right corner of the frame. + NSCursorFrameResizePositionTopRight = (NSCursorFrameResizePositionTop | NSCursorFrameResizePositionRight), + /// The bottom left corner of the frame. + NSCursorFrameResizePositionBottomLeft = (NSCursorFrameResizePositionBottom | NSCursorFrameResizePositionLeft), + /// The bottom right corner of the frame. + NSCursorFrameResizePositionBottomRight = (NSCursorFrameResizePositionBottom | NSCursorFrameResizePositionRight), +} NS_SWIFT_NAME(NSCursor.FrameResizePosition) API_AVAILABLE(macos(15.0)); + +/// The directions in which a rectangular frame can be resized. +typedef NS_OPTIONS(NSUInteger, NSCursorFrameResizeDirections) { + /// Indicates that the shape can be resized inwards to be smaller. + NSCursorFrameResizeDirectionsInward = (1 << 0), + /// Indicates that the shape can be resized outwards to be larger. + NSCursorFrameResizeDirectionsOutward = (1 << 1), + /// Indicates that the shape can be resized inwards or wards to be either smaller or larger, respectively. + NSCursorFrameResizeDirectionsAll = (NSCursorFrameResizeDirectionsInward | NSCursorFrameResizeDirectionsOutward), +} NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.0)); + +/// Returns the cursor for resizing a rectangular frame from the specified edge or corner. +/// - Parameters: +/// - position: The position along the perimeter of a rectangular frame (its edges and corners) from which it’s resized. +/// - directions: The directions in which a rectangular frame can be resized. ++ (NSCursor *)frameResizeCursorFromPosition:(NSCursorFrameResizePosition)position inDirections:(NSCursorFrameResizeDirections)directions NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.0)); + @end +// MARK: - Deprecated + APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST static const NSAppKitVersion NSAppKitVersionNumberWithCursorSizeSupport = 682.0; +API_UNAVAILABLE_END + +@interface NSCursor (Deprecated) +/// This property will always be `nil` in a future version of macOS. +@property (class, readonly, nullable, strong) NSCursor *currentSystemCursor API_DEPRECATED("No longer recommended. Use ScreenCaptureKit to capture the screen. Use the `showsCursor` property on `SCStreamConfiguration` to control whether or not to include the cursor in the capture. Or, use `NSCursor.currentCursor` if needing to just get the current cursor for this application.", macos(10.6, API_TO_BE_DEPRECATED)); +@property (class, readonly, strong) NSCursor *resizeLeftCursor API_DEPRECATED("Use either `+[NSCursor columnResizeCursorInDirections:]` or `+[NSCursor frameResizeCursorFromPosition:inDirections:]` instead, depending on whether a divider is being re-positioned or a rectangular frame is being resized.", macos(10.0, API_TO_BE_DEPRECATED)); +@property (class, readonly, strong) NSCursor *resizeRightCursor API_DEPRECATED("Use either `+[NSCursor columnResizeCursorInDirections:]` or `+[NSCursor frameResizeCursorFromPosition:inDirections:]` instead, depending on whether a divider is being re-positioned or a rectangular frame is being resized.", macos(10.0, API_TO_BE_DEPRECATED)); +@property (class, readonly, strong) NSCursor *resizeLeftRightCursor API_DEPRECATED("Use either `+[NSCursor columnResizeCursorInDirections:]` or `+[NSCursor frameResizeCursorFromPosition:inDirections:]` instead, depending on whether a divider is being re-positioned or a rectangular frame is being resized.", macos(10.0, API_TO_BE_DEPRECATED)); +@property (class, readonly, strong) NSCursor *resizeUpCursor API_DEPRECATED("Use either `+[NSCursor rowResizeCursorInDirections:]` or `+[NSCursor frameResizeCursorFromPosition:inDirections:]` instead, depending on whether a divider is being re-positioned or a rectangular frame is being resized.", macos(10.0, API_TO_BE_DEPRECATED)); +@property (class, readonly, strong) NSCursor *resizeDownCursor API_DEPRECATED("Use either `+[NSCursor rowResizeCursorInDirections:]` or `+[NSCursor frameResizeCursorFromPosition:inDirections:]` instead, depending on whether a divider is being re-positioned or a rectangular frame is being resized.", macos(10.0, API_TO_BE_DEPRECATED)); +@property (class, readonly, strong) NSCursor *resizeUpDownCursor API_DEPRECATED("Use either `+[NSCursor rowResizeCursorInDirections:]` or `+[NSCursor frameResizeCursorFromPosition:inDirections:]` instead, depending on whether a divider is being re-positioned or a rectangular frame is being resized.", macos(10.0, API_TO_BE_DEPRECATED)); +@end + +APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @interface NSCursor (NSDeprecated) - (instancetype)initWithImage:(NSImage *)newImage foregroundColorHint:(nullable NSColor *)fg backgroundColorHint:(nullable NSColor *)bg hotSpot:(NSPoint)hotSpot API_DEPRECATED("Color hints are ignored. Use -initWithImage:hotSpot: instead", macos(10.0,10.12)); - (void)setOnMouseExited:(BOOL)flag API_DEPRECATED("setOnMouseExited is unused and should not be called", macos(10.0,10.13)); diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCustomImageRep.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCustomImageRep.h index 099669e9..fa02c403 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCustomImageRep.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCustomImageRep.h @@ -1,7 +1,7 @@ /* NSCustomImageRep.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSCustomTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSCustomTouchBarItem.h index 06372512..ad5db6d9 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSCustomTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSCustomTouchBarItem.h @@ -1,7 +1,7 @@ /* NSCustomTouchBarItem.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDataAsset.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDataAsset.h index af76925a..1f65952b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDataAsset.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDataAsset.h @@ -1,7 +1,7 @@ /* NSDataAsset.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDatePicker.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDatePicker.h index d808dbc0..a9336b61 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDatePicker.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDatePicker.h @@ -1,7 +1,7 @@ /* NSDatePicker.h Application Kit - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDatePickerCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDatePickerCell.h index 836a434a..d9f8ea27 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDatePickerCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDatePickerCell.h @@ -1,7 +1,7 @@ /* NSDatePickerCell.h Application Kit - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDictionaryController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDictionaryController.h index d04a4689..aa05be7a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDictionaryController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDictionaryController.h @@ -1,7 +1,7 @@ /* NSDictionaryController.h Application Kit - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDiffableDataSource.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDiffableDataSource.h index 69176b6d..b2345efd 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDiffableDataSource.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDiffableDataSource.h @@ -1,7 +1,7 @@ /* NSDiffableDataSource.h Application Kit - Copyright (c) 2019-2023, Apple Inc. + Copyright (c) 2019-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDirection.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDirection.h new file mode 100644 index 00000000..fc977814 --- /dev/null +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDirection.h @@ -0,0 +1,32 @@ +/* + NSDirection.h + Application Kit + Copyright (c) 2024-2024, Apple Inc. + All rights reserved. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// The absolute directions on the horizontal axis. +typedef NS_OPTIONS(NSUInteger, NSHorizontalDirections) { + /// The left direction. + NSHorizontalDirectionsLeft = (1 << 0), + /// The right direction. + NSHorizontalDirectionsRight = (1 << 1), + /// All horizontal directions (left and right). + NSHorizontalDirectionsAll = (NSHorizontalDirectionsLeft | NSHorizontalDirectionsRight), +} NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.0)); + +/// The directions on the vertical axis. +typedef NS_OPTIONS(NSUInteger, NSVerticalDirections) { + /// The upwards direction. + NSVerticalDirectionsUp = (1 << 0), + /// The downward direction. + NSVerticalDirectionsDown = (1 << 1), + /// All vertical directions (up and down). + NSVerticalDirectionsAll = (NSVerticalDirectionsUp | NSVerticalDirectionsDown), +} NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.0)); + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDockTile.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDockTile.h index 38f30bfa..1b2d49ea 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDockTile.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDockTile.h @@ -1,7 +1,7 @@ /* NSDockTile.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDocument.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDocument.h index f5ff3e45..e43ec399 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDocument.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDocument.h @@ -1,8 +1,8 @@ /* - NSDocument.h - Application Kit - Copyright (c) 1997-2023, Apple Inc. - All rights reserved. + NSDocument.h + Application Kit + Copyright (c) 1997-2024, Apple Inc. + All rights reserved. */ #import @@ -361,15 +361,15 @@ The list of conditions for which NSDocument checks is subject to change. Regardl - (void)document:(NSDocument *)document didSave:(BOOL)didSaveSuccessfully contextInfo:(void *)contextInfo; -The default implementation of this method first makes sure that any editor registered using Cocoa Bindings' NSEditorRegistration protocol has committed its changes, then creates a save panel, adds a standard "file format" accessory view if there is more than one file type for the user to choose from and [self shouldRunSavePanelWithAccessoryView] returns YES, sets various attributes of the panel, invokes [self prepareSavePanel:theSavePanel] to provide an opportunity for customization, then presents the panel. If the user OKs the panel -saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo: is invoked. +The default implementation of this method first makes sure that any editor registered using Cocoa Bindings' NSEditorRegistration protocol has committed its changes. It then creates a save panel, adds a standard file formats selection control if there is more than one file type for the user to choose from and self.savePanelShowsFileFormatsControl returns YES, sets various attributes of the panel, invokes [self prepareSavePanel:theSavePanel] to provide an opportunity for customization, and presents the panel. If the user OKs the panel -saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo: is invoked. For backward binary compatibility with Mac OS 10.3 and earlier, the default implementation of this method instead invokes [self saveToFile:nil saveOperation:saveOperation delegate:delegate didSaveSelector:contextInfo:] if -saveToFile:saveOperation:delegate:didSaveSelector:contextInfo: is overridden, even if the user cancels the panel (because that's what 10.3 did). */ - (void)runModalSavePanelForSaveOperation:(NSSaveOperationType)saveOperation delegate:(nullable id)delegate didSaveSelector:(nullable SEL)didSaveSelector contextInfo:(nullable void *)contextInfo; -/* Return YES if -runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo: should add NSDocument's standard file format accessory view to the save panel, NO otherwise. The default implementation of this method returns YES. You can override this method to prevent NSDocument from adding an accessory view to the save panel so that your application can add its own when -prepareSavePanel is invoked. +/* Return YES if -runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo: should add the standard file formats selection control to the save panel, NO otherwise. The default implementation of this property returns YES. */ -@property (readonly) BOOL shouldRunSavePanelWithAccessoryView; +@property (readonly) BOOL savePanelShowsFileFormatsControl API_AVAILABLE(macos(15.0)); /* Given the save panel that -runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo: is about to present to the user, make any final changes before it is presented, and return YES for success. Return NO for failure, to cancel the save operation. The default implementation of this method just returns YES. */ @@ -443,7 +443,7 @@ The default implementation of this method invokes [self hasUnautosavedChanges] a AppKit invokes this method at a variety of times, and not always on the main thread. For example, -autosaveWithImplicitCancellability:completionHandler: invokes this as part of determining whether the autosaving will be an NSAutosaveInPlaceOperation instead of an NSAutosaveElsewhereOperation. For another example, -canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo: and NSDocumentController's machinery for handling unsaved changes at application termination time both invoke this as part of determining whether alerts about unsaved changes should be presented to the user. */ -@property(class, readonly) BOOL autosavesInPlace API_AVAILABLE(macos(10.7)); +@property(class, readonly) BOOL autosavesInPlace NS_SWIFT_NONISOLATED API_AVAILABLE(macos(10.7)); /* Return YES if the receiving subclass of NSDocument supports Mac OS 10.7 version preservation, NO otherwise. The default implementation of this method returns [self autosavesInPlace]. You can override it and return NO to declare that NSDocument should not preserve old document versions. @@ -834,6 +834,10 @@ You can override this method to customize the appending of extensions to file na @interface NSDocument(NSDeprecated) +/* APIs that will be deprecated in an imminent future release. +*/ +@property (readonly) BOOL shouldRunSavePanelWithAccessoryView API_DEPRECATED_WITH_REPLACEMENT("savePanelShowsFileFormatsControl", macos(10.0, API_TO_BE_DEPRECATED)); + #pragma mark *** Backward Compatibility *** /* Methods that were deprecated in Mac OS 10.6. See the comments above for information about when your overrides of them are still invoked, for backward binary compatibility. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDocumentController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDocumentController.h index 3e149ee8..7a772dbd 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDocumentController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDocumentController.h @@ -1,8 +1,8 @@ /* - NSDocumentController.h - Application Kit - Copyright (c) 1997-2023, Apple Inc. - All rights reserved. + NSDocumentController.h + Application Kit + Copyright (c) 1997-2024, Apple Inc. + All rights reserved. */ #import diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDocumentScripting.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDocumentScripting.h index f810bd0b..2e79f9b5 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDocumentScripting.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDocumentScripting.h @@ -1,7 +1,7 @@ /* NSDocumentScripting.h AppKit Framework - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDragging.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDragging.h index 0e5ebceb..b51f9d10 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDragging.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDragging.h @@ -1,7 +1,7 @@ /* NSDragging.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDraggingItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDraggingItem.h index 63448023..f8d9a04a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDraggingItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDraggingItem.h @@ -1,7 +1,7 @@ /* NSDraggingItem.h Application Kit - Copyright (c) 2010-2023, Apple Inc. + Copyright (c) 2010-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDraggingSession.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDraggingSession.h index 6947ea40..69a429e8 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDraggingSession.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDraggingSession.h @@ -1,7 +1,7 @@ /* NSDraggingSession.h Application Kit - Copyright (c) 2010-2023, Apple Inc. + Copyright (c) 2010-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSDrawer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSDrawer.h index 2fa53392..9df9027d 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSDrawer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSDrawer.h @@ -1,7 +1,7 @@ /* NSDrawer.h Application Kit - Copyright (c) 1999-2023, Apple Inc. + Copyright (c) 1999-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSEPSImageRep.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSEPSImageRep.h index ec468bf7..94deda81 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSEPSImageRep.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSEPSImageRep.h @@ -1,7 +1,7 @@ /* NSEPSImageRep.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSErrors.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSErrors.h index 75ff2b0b..e81e3b72 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSErrors.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSErrors.h @@ -1,7 +1,7 @@ /* NSErrors.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSEvent.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSEvent.h index 9c73afc2..c925979a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSEvent.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSEvent.h @@ -1,7 +1,7 @@ /* NSEvent.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFilePromiseProvider.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFilePromiseProvider.h index b339b074..83ec1773 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFilePromiseProvider.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFilePromiseProvider.h @@ -1,7 +1,7 @@ /* NSFilePromiseProvider.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFilePromiseReceiver.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFilePromiseReceiver.h index 13f8adbf..938f9cf6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFilePromiseReceiver.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFilePromiseReceiver.h @@ -1,7 +1,7 @@ /* NSFilePromiseReceiver.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFileWrapper.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFileWrapper.h index 5c3354c1..453266ad 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFileWrapper.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFileWrapper.h @@ -1,7 +1,7 @@ /* NSFileWrapper.h Application Kit - Copyright (c) 1995-2023, Apple Inc. + Copyright (c) 1995-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFileWrapperExtensions.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFileWrapperExtensions.h index 95178809..ed269613 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFileWrapperExtensions.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFileWrapperExtensions.h @@ -1,7 +1,7 @@ /* NSFileWrapperExtensions.h Application Kit - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFont.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFont.h index 08a76377..cd9e3db2 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFont.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFont.h @@ -1,7 +1,7 @@ /* NSFont.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFontAssetRequest.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFontAssetRequest.h index 0464b4bf..d5ab0ea6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFontAssetRequest.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFontAssetRequest.h @@ -1,7 +1,7 @@ /* NSFontAssetRequest.h Application Kit - Copyright (c) 2017-2023, Apple Inc. + Copyright (c) 2017-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFontCollection.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFontCollection.h index bf1ce3b8..5a687f95 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFontCollection.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFontCollection.h @@ -1,7 +1,7 @@ /* NSFontCollection.h Application Kit - Copyright (c) 2010-2023, Apple Inc. + Copyright (c) 2010-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFontDescriptor.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFontDescriptor.h index cfc756e8..e296501a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFontDescriptor.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFontDescriptor.h @@ -1,7 +1,7 @@ /* NSFontDescriptor.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFontManager.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFontManager.h index 49f85675..795973e4 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFontManager.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFontManager.h @@ -1,7 +1,7 @@ /* NSFontManager.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFontPanel.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFontPanel.h index 932636ab..659418c1 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFontPanel.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFontPanel.h @@ -1,7 +1,7 @@ /* NSFontPanel.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSForm.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSForm.h index cc45de41..61505ae5 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSForm.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSForm.h @@ -1,7 +1,7 @@ /* NSForm.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSFormCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSFormCell.h index 985a9fce..538f7f4d 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSFormCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSFormCell.h @@ -1,7 +1,7 @@ /* NSFormCell.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSGestureRecognizer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSGestureRecognizer.h index 19553998..0aca659e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSGestureRecognizer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSGestureRecognizer.h @@ -1,7 +1,7 @@ /* NSGestureRecognizer.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSGlyphGenerator.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSGlyphGenerator.h index 418de657..18df564f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSGlyphGenerator.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSGlyphGenerator.h @@ -2,7 +2,7 @@ /* NSGlyphGenerator.h Application Kit - Copyright (c) 1993-2023, Apple Inc. + Copyright (c) 1993-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSGlyphInfo.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSGlyphInfo.h index d380a014..f673ec3b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSGlyphInfo.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSGlyphInfo.h @@ -1,7 +1,7 @@ #if !__has_include() /* NSGlyphInfo.h - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSGradient.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSGradient.h index eeda4b27..5dd4d100 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSGradient.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSGradient.h @@ -1,7 +1,7 @@ /* NSGradient.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSGraphics.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSGraphics.h index 85b131e8..c6f3a11b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSGraphics.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSGraphics.h @@ -1,7 +1,7 @@ /* NSGraphics.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSGraphicsContext.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSGraphicsContext.h index b98be1de..aa65d43a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSGraphicsContext.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSGraphicsContext.h @@ -1,7 +1,7 @@ /* NSGraphicsContext.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ @@ -42,9 +42,6 @@ typedef NS_ENUM(NSUInteger, NSImageInterpolation) { // Instantiates from an appropriate concrete subclass depending on NSGraphicsContextDestinationAttributeName attribute + (nullable NSGraphicsContext *)graphicsContextWithAttributes:(NSDictionary *)attributes; -// Convenience cover method for [NSGraphicsContext graphicsContextWithAttributes:[NSDictionary dictionaryWithObject: forKey:NSGraphicsContextDestinationAttributeName]] -+ (NSGraphicsContext *)graphicsContextWithWindow:(NSWindow *)window; - /* Convenience cover method for [NSGraphicsContext graphicsContextWithAttributes:[NSDictionary dictionaryWithObject: forKey:NSGraphicsContextDestinationAttributeName]]. Only NSBitmapImageRep instances with isPlanar == NO are supported. */ + (nullable NSGraphicsContext *)graphicsContextWithBitmapImageRep:(NSBitmapImageRep *)bitmapRep; @@ -109,6 +106,8 @@ typedef NS_ENUM(NSUInteger, NSImageInterpolation) { + (NSGraphicsContext *)graphicsContextWithGraphicsPort:(void *)graphicsPort flipped:(BOOL)initialFlippedState API_DEPRECATED_WITH_REPLACEMENT("graphicsContextWithCGContext:flipped:", macos(10.0,10.14)); @property (readonly) void *graphicsPort NS_RETURNS_INNER_POINTER API_DEPRECATED_WITH_REPLACEMENT("CGContext", macos(10.0,10.14)); ++ (NSGraphicsContext *)graphicsContextWithWindow:(NSWindow *)window API_DEPRECATED("Add instances of NSView to display content in a window", macos(10.0,10.14)); + @end API_UNAVAILABLE_END diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSGridView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSGridView.h index 21372f87..f3e02649 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSGridView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSGridView.h @@ -1,7 +1,7 @@ /* NSGridView.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSGroupTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSGroupTouchBarItem.h index 7c3987fd..39b11fb5 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSGroupTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSGroupTouchBarItem.h @@ -1,7 +1,7 @@ /* NSGroupTouchBarItem.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSHapticFeedback.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSHapticFeedback.h index 8fa3f3b6..08262072 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSHapticFeedback.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSHapticFeedback.h @@ -1,7 +1,7 @@ /* NSHapticFeedback.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSHelpManager.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSHelpManager.h index 4cda3cb6..097f6aa0 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSHelpManager.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSHelpManager.h @@ -1,7 +1,7 @@ /* NSHelpManager.h Application Kit - Copyright (c) 1995-2023, Apple Inc. + Copyright (c) 1995-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSImage.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSImage.h index fa026c52..06aeee1b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSImage.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSImage.h @@ -1,7 +1,7 @@ /* NSImage.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSImageCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSImageCell.h index 6cc5442b..be73ecf9 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSImageCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSImageCell.h @@ -1,7 +1,7 @@ /* NSImageCell.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSImageRep.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSImageRep.h index 574d8ce1..b7de890a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSImageRep.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSImageRep.h @@ -1,7 +1,7 @@ /* NSImageRep.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSImageView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSImageView.h index 150e5b39..8122920e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSImageView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSImageView.h @@ -1,7 +1,7 @@ /* NSImageView.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -50,7 +50,7 @@ typedef NS_ENUM(NSInteger, NSImageDynamicRange) { /*! Specifies a combination of point size, weight, and scale to use when sizing and displaying symbol images. If a symbol configuration isn't provided, the image view uses a default size, weight, and scale provided by the system. The default value is `nil`. */ -@property (nullable, copy) NSImageSymbolConfiguration *symbolConfiguration API_AVAILABLE(macos(11)); +@property (nullable, copy) NSImageSymbolConfiguration *symbolConfiguration API_AVAILABLE(macos(11.0)); /*! A tint color to be used when rendering template image content. This color may be combined with other effects to produce a theme-appropriate rendition of the template image. A nil value indicates the standard set of effects without color modification. The default value is nil. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSInputManager.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSInputManager.h index e496d8e4..aa59dd40 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSInputManager.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSInputManager.h @@ -1,7 +1,7 @@ /* NSInputManager.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSInputServer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSInputServer.h index 51e1d7fd..b9d91954 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSInputServer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSInputServer.h @@ -1,7 +1,7 @@ /* NSInputServer.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSInterfaceStyle.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSInterfaceStyle.h index 41bb1fea..7426add7 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSInterfaceStyle.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSInterfaceStyle.h @@ -1,7 +1,7 @@ /* NSInterfaceStyle.h Application Kit - Copyright (c) 1995-2023, Apple Inc. + Copyright (c) 1995-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSItemProvider.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSItemProvider.h index d143ee83..f82481d1 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSItemProvider.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSItemProvider.h @@ -1,7 +1,7 @@ /* NSItemProvider.h Application Kit - Copyright (c) 2014-2023, Apple Inc. + Copyright (c) 2014-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSKeyValueBinding.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSKeyValueBinding.h index 87597e4e..f9bb5888 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSKeyValueBinding.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSKeyValueBinding.h @@ -1,7 +1,7 @@ /* NSKeyValueBinding.h Application Kit - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutAnchor.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutAnchor.h index 4b955990..5a056cb4 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutAnchor.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutAnchor.h @@ -1,7 +1,7 @@ /* NSLayoutAnchor.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutConstraint.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutConstraint.h index 681d328a..26e200f3 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutConstraint.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutConstraint.h @@ -1,7 +1,7 @@ /* NSLayoutConstraint.h Application Kit - Copyright (c) 2009-2023, Apple Inc. + Copyright (c) 2009-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutGuide.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutGuide.h index 7bd361c3..9ad36672 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutGuide.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutGuide.h @@ -1,7 +1,7 @@ /* NSLayoutGuide.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutManager.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutManager.h index 49813de8..961eb858 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutManager.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSLayoutManager.h @@ -2,7 +2,7 @@ /* NSLayoutManager.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSLevelIndicator.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSLevelIndicator.h index b06bad2d..cd140386 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSLevelIndicator.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSLevelIndicator.h @@ -1,7 +1,7 @@ /* NSLevelIndicator.h Application Kit - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSLevelIndicatorCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSLevelIndicatorCell.h index 4b2c74e8..9a056400 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSLevelIndicatorCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSLevelIndicatorCell.h @@ -1,7 +1,7 @@ /* NSLevelIndicatorCell.h Application Kit - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSMagnificationGestureRecognizer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSMagnificationGestureRecognizer.h index ebcece3b..7d1b6163 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSMagnificationGestureRecognizer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSMagnificationGestureRecognizer.h @@ -1,7 +1,7 @@ /* NSMagnificationGestureRecognizer.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSMatrix.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSMatrix.h index 06f30133..859b08c9 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSMatrix.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSMatrix.h @@ -1,7 +1,7 @@ /* NSMatrix.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSMediaLibraryBrowserController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSMediaLibraryBrowserController.h index 5db17e9a..4c5de998 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSMediaLibraryBrowserController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSMediaLibraryBrowserController.h @@ -1,7 +1,7 @@ /* NSMediaLibraryBrowserController.h Application Kit - Copyright (c) 2012-2023, Apple Inc. + Copyright (c) 2012-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSMenu.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSMenu.h index b55ff2e7..0dd32070 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSMenu.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSMenu.h @@ -1,7 +1,7 @@ /* NSMenu.h Application Kit - Copyright (c) 1996-2023, Apple Inc. + Copyright (c) 1996-2024, Apple Inc. All rights reserved. */ @@ -184,6 +184,9 @@ typedef NS_ENUM(NSInteger, NSMenuSelectionMode) { */ @property BOOL allowsContextMenuPlugIns API_AVAILABLE(macos(10.6)); +/* Determines whether Writing Tools menu items may be inserted into the menu, if used as a context menu. The default is YES. */ +@property BOOL automaticallyInsertsWritingToolsItems API_AVAILABLE(macos(15.2)); + /* Determines whether the menu contains a column for the state image. The default is YES. */ @property BOOL showsStateColumn API_AVAILABLE(macos(10.5)); diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItem.h index fbcb1d2d..ec2c6b13 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItem.h @@ -1,7 +1,7 @@ /* NSMenuItem.h Application Kit - Copyright (c) 1996-2023, Apple Inc. + Copyright (c) 1996-2024, Apple Inc. All rights reserved. */ @@ -31,6 +31,10 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST /// Items created using this method are non-interactive and do not perform an action. + (instancetype)sectionHeaderWithTitle:(NSString *)title API_AVAILABLE(macos(14.0)) NS_REFINED_FOR_SWIFT; +/// An array of standard menu items related to Writing Tools. +/// Each call to this method returns an array of newly allocated instances of NSMenuItem. +@property (class, readonly, copy) NSArray *writingToolsItems API_AVAILABLE(macos(15.2)); + - (instancetype)initWithTitle:(NSString *)string action:(nullable SEL)selector keyEquivalent:(NSString *)charCode NS_DESIGNATED_INITIALIZER; - (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; @@ -46,6 +50,13 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @property (copy) NSString *title; @property (nullable, copy) NSAttributedString *attributedTitle; +/*! + @abstract Used to specify a standard subtitle for the menu item. + @discussion The subtitle is displayed below the standard title. + @note On macOS 14, a menu item with an attributed title does not show the subtitle. The subtitle is shown on macOS 15 and later. +*/ +@property (copy, nullable) NSString *subtitle API_AVAILABLE(macos(14.4)); + @property (getter=isSeparatorItem, readonly) BOOL separatorItem; /// Indicates whether the item is a section header. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItemBadge.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItemBadge.h index adb072a4..edff1dab 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItemBadge.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItemBadge.h @@ -1,7 +1,7 @@ /* NSMenuItemBadge.h Application Kit - Copyright (c) 2023-2023, Apple Inc. + Copyright (c) 2023-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItemCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItemCell.h index b946bf7a..fcfa6f03 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItemCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuItemCell.h @@ -1,7 +1,7 @@ /* NSMenuItemCell.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuToolbarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuToolbarItem.h index 9acc9b74..8fcd186b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuToolbarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSMenuToolbarItem.h @@ -1,7 +1,7 @@ /* NSMenuToolbarItem.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSMovie.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSMovie.h index a70e40dd..98c634b3 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSMovie.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSMovie.h @@ -1,7 +1,7 @@ /* NSMovie.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSNib.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSNib.h index 2071a1d2..69ec2c44 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSNib.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSNib.h @@ -1,7 +1,7 @@ /* NSNib.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. NSNib serves as a wrapper around a single InterfaceBuilder nib. When an NSNib instance is created from a nib file, all of the data needed to instantiate the nib (the object graph as well as images and sounds that might be in the nib bundle) are read from the disk, however the nib is not instantiated until you call one of the instantiation methods. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSNibConnector.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSNibConnector.h index a9699eef..30bace75 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSNibConnector.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSNibConnector.h @@ -1,7 +1,7 @@ /* NSNibConnector.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSNibControlConnector.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSNibControlConnector.h index 9a662967..3467a58c 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSNibControlConnector.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSNibControlConnector.h @@ -1,7 +1,7 @@ /* NSNibControlConnector.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSNibDeclarations.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSNibDeclarations.h index cf76596d..dce03b66 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSNibDeclarations.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSNibDeclarations.h @@ -1,7 +1,7 @@ /* NSNibDeclarations.h Application Kit - Copyright (c) 1996-2023, Apple Inc. + Copyright (c) 1996-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSNibLoading.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSNibLoading.h index 1ae40475..aee41efa 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSNibLoading.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSNibLoading.h @@ -1,7 +1,7 @@ /* NSNibLoading.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSNibOutletConnector.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSNibOutletConnector.h index 0839e6b2..967baeff 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSNibOutletConnector.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSNibOutletConnector.h @@ -1,7 +1,7 @@ /* NSNibOutletConnector.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSObjectController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSObjectController.h index 65864c3b..fa32affb 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSObjectController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSObjectController.h @@ -1,7 +1,7 @@ /* NSObjectController.h Application Kit - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGL.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGL.h index 37a23111..5dbe5a8f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGL.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGL.h @@ -1,7 +1,7 @@ /* NSOpenGL.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGLLayer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGLLayer.h index c70208c3..f1d1d4c3 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGLLayer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGLLayer.h @@ -1,7 +1,7 @@ /* NSOpenGLLayer.h Application Kit - Copyright (c) 2008-2023, Apple Inc. + Copyright (c) 2008-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGLView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGLView.h index a8a66572..2ce15399 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGLView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenGLView.h @@ -1,7 +1,7 @@ /* NSOpenGLView.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenPanel.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenPanel.h index e7a4074a..3fb5d87c 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenPanel.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSOpenPanel.h @@ -1,7 +1,7 @@ /* NSOpenPanel.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -50,6 +50,12 @@ To provide the ideal user experience, you should set this property to NO and dow @end +@interface NSOpenPanel (InheritedAndUnavailable) + +@property BOOL showsContentTypes NS_UNAVAILABLE; + +@end + @interface NSOpenPanel (NSDeprecated) /* Use URLs instead. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSOutlineView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSOutlineView.h index e27459b1..6eaa4241 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSOutlineView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSOutlineView.h @@ -1,7 +1,7 @@ /* NSOutlineView.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ @@ -371,11 +371,11 @@ enum { NSOutlineViewDropOnItemIndex = -1 }; /* Optional - Column Visibility User Control. Return YES for any column whose visibility is meant to be user-controllable. Implementing this method enables outline view to provide a menu or equivalent UI that allows users to hide or show columns. Any column that is meant to be user-controllable in this way should have a non-empty `.title` property. Note: setting the `.menu` property on outlineView's `.headerView` will take precedence over this built-in mechanism. */ -- (BOOL)outlineView:(NSOutlineView *)outlineView userCanChangeVisibilityOfTableColumn:(NSTableColumn *)column NS_SWIFT_NAME(outlineView(_:userCanChangeVisibilityOf:)) API_AVAILABLE(macos(14.0)); +- (BOOL)outlineView:(NSOutlineView *)outlineView userCanChangeVisibilityOfTableColumn:(NSTableColumn *)column NS_SWIFT_UI_ACTOR NS_SWIFT_NAME(outlineView(_:userCanChangeVisibilityOf:)) API_AVAILABLE(macos(14.0)); /* Optional - Column Visibility User Control. Called when the user alters the visibility of one or more columns via the `tableView:userCanChangeVisibilityOfTableColumn:` UI affordance. */ -- (void)outlineView:(NSOutlineView *)outlineView userDidChangeVisibilityOfTableColumns:(NSArray *)columns NS_SWIFT_NAME(outlineView(_:userDidChangeVisibilityOf:)) API_AVAILABLE(macos(14.0)); +- (void)outlineView:(NSOutlineView *)outlineView userDidChangeVisibilityOfTableColumns:(NSArray *)columns NS_SWIFT_NAME(outlineView(_:userDidChangeVisibilityOf:)) NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(14.0)); /* Notifications - see comments below for more information about the @"NSObject" parameter in the userInfo dictionary. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFImageRep.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFImageRep.h index 9f8e3593..c29c94f1 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFImageRep.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFImageRep.h @@ -1,7 +1,7 @@ /* NSPDFImageRep.h Application Kit - Copyright (c) 1999-2023, Apple Inc. + Copyright (c) 1999-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFInfo.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFInfo.h index 69fbb963..76d1ed76 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFInfo.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFInfo.h @@ -1,7 +1,7 @@ /* NSPDFInfo.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFPanel.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFPanel.h index 6612a216..5f196e86 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFPanel.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPDFPanel.h @@ -1,7 +1,7 @@ /* NSPDFPanel.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPICTImageRep.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPICTImageRep.h index 668e202c..6b301d93 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPICTImageRep.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPICTImageRep.h @@ -1,7 +1,7 @@ /* NSPICTImageRep.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPageController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPageController.h index 87981f28..ae9fe80f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPageController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPageController.h @@ -1,7 +1,7 @@ /* NSPageController.h Application Kit - Copyright (c) 2011-2023, Apple Inc. + Copyright (c) 2011-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPageLayout.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPageLayout.h index f17fdb4e..17847c70 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPageLayout.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPageLayout.h @@ -1,7 +1,7 @@ /* NSPageLayout.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPanGestureRecognizer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPanGestureRecognizer.h index 5a6f0e5b..b7deeaf0 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPanGestureRecognizer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPanGestureRecognizer.h @@ -1,7 +1,7 @@ /* NSPanGestureRecognizer.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPanel.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPanel.h index 85ab0b12..287b646d 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPanel.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPanel.h @@ -1,7 +1,7 @@ /* NSPanel.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSParagraphStyle.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSParagraphStyle.h index 10991024..2e1d9de6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSParagraphStyle.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSParagraphStyle.h @@ -1,21 +1,26 @@ -#if !__has_include() +#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include() +#include + +#if !TARGET_OS_IPHONE +#import + /* NSParagraphStyle.h - Copyright (c) 1994-2023, Apple Inc. All rights reserved. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. NSParagraphStyle and NSMutableParagraphStyle hold paragraph style information NSTextTab holds information about a single tab stop */ -#import +#import #import -@class NSTextBlock; @class NSTextList; NS_HEADER_AUDIT_BEGIN(nullability, sendability) -#if !TARGET_OS_IPHONE +#if !__NSPARAGRAPH_STYLE_SHARED_SECTION__ +#define __NSPARAGRAPH_STYLE_SHARED_SECTION__ 1 typedef NS_ENUM(NSUInteger, NSLineBreakMode) { NSLineBreakByWordWrapping = 0, // Wrap at word boundaries, default @@ -24,7 +29,7 @@ typedef NS_ENUM(NSUInteger, NSLineBreakMode) { NSLineBreakByTruncatingHead, // Truncate at head of line: "...wxyz" NSLineBreakByTruncatingTail, // Truncate at tail of line: "abcd..." NSLineBreakByTruncatingMiddle // Truncate middle of line: "ab...yz" -} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); +} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0), visionos(1.0)); // Line break strategy describes a collection of options that can affect where line breaks are placed in a paragraph. // This is independent from line break mode, which describes what happens when text is too long to fit within its container. @@ -35,33 +40,32 @@ typedef NS_OPTIONS(NSUInteger, NSLineBreakStrategy) { // Use the push out line break strategy. // This strategy allows the text system to "push out" individual lines by some number of words to avoid an orphan word on the last line of the paragraph. // The current implementation usually pushes out the last line by a single word. - NSLineBreakStrategyPushOut API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 0, + NSLineBreakStrategyPushOut API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 1 << 0, // When specified, it prohibits breaking between Hangul characters. It is the preferable typesetting strategy for the modern Korean documents suitable for UI strings. - NSLineBreakStrategyHangulWordPriority API_AVAILABLE(macos(11.0), ios(14.0)) = 1 << 1, + NSLineBreakStrategyHangulWordPriority API_AVAILABLE(macos(11.0), ios(14.0), watchos(7.0), tvos(14.0), visionos(1.0)) = 1 << 1, // Use the same configuration of line break strategies that the system uses for standard UI labels. This set of line break strategies is optimized for displaying shorter strings that are common in UI labels and may not be suitable for large amounts of text. - NSLineBreakStrategyStandard API_AVAILABLE(macos(11.0), ios(14.0)) = 0xFFFF -}; - -// NSTextTab -typedef NSString * NSTextTabOptionKey NS_TYPED_ENUM; -APPKIT_EXTERN NSTextTabOptionKey NSTabColumnTerminatorsAttributeName API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // An attribute for NSTextTab options. The value is NSCharacterSet. The character set is used to determine the tab column terminating character. The tab and newline characters are implied even if not included in the character set. + NSLineBreakStrategyStandard API_AVAILABLE(macos(11.0), ios(14.0), watchos(7.0), tvos(14.0), visionos(1.0)) = 0xFFFF +} API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); -API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)) @interface NSTextTab : NSObject +#endif // !__NSPARAGRAPH_STYLE_SHARED_SECTION__ -+ (NSCharacterSet *)columnTerminatorsForLocale:(nullable NSLocale *)aLocale API_AVAILABLE(macos(10.11), ios(7.0), watchos(2.0), tvos(9.0)); // Returns the column terminators for locale. Passing nil returns an instance corresponding to +[NSLocale systemLocale]. For matching user's formatting preferences, pass +[NSLocale currentLocale]. Can be used as the value for NSTabColumnTerminatorsAttributeName to make a decimal tab stop. +// NSTextTab +typedef NSString * NSTextTabOptionKey NS_TYPED_ENUM API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextTabOptionKey NSTabColumnTerminatorsAttributeName API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // An attribute for NSTextTab options. The value is NSCharacterSet. The character set is used to determine the tab column terminating character. The tab and newline characters are implied even if not included in the character set. -- (instancetype)initWithTextAlignment:(NSTextAlignment)alignment location:(CGFloat)loc options:(NSDictionary *)options NS_DESIGNATED_INITIALIZER; // Initializes a text tab with the text alignment, location, and options. The text alignment is used to determine the position of text inside the tab column. +APPKIT_EXTERN API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) +@interface NSTextTab : NSObject ++ (NSCharacterSet *)columnTerminatorsForLocale:(nullable NSLocale *)aLocale API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // Returns the column terminators for locale. Passing nil returns an instance corresponding to +[NSLocale systemLocale]. For matching user's formatting preferences, pass +[NSLocale currentLocale]. Can be used as the value for NSTabColumnTerminatorsAttributeName to make a decimal tab stop. -@property (readonly) NSTextAlignment alignment; // Defines the alignment of tab column contents. NSTextAlignmentNatural and NSTextAlignmentJustified are resolved either NSTextAlignmentLeft or NSTextAlignmentRight based on the user's preferred language. @property (readonly) CGFloat location; // Location of the tab stop inside the line fragment rect coordinate system @property (readonly) NSDictionary *options; // Optional configuration attributes @end // NSParagraphStyle - -API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)) @interface NSParagraphStyle : NSObject +APPKIT_EXTERN API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)) +@interface NSParagraphStyle : NSObject @property (class, readonly, copy) NSParagraphStyle *defaultParagraphStyle; // This class property returns a shared and cached NSParagraphStyle instance with the default style settings, with same value as the result of [[NSParagraphStyle alloc] init]. @@ -69,7 +73,6 @@ API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)) @interface NSParag @property (readonly) CGFloat lineSpacing; // "Leading": distance between the bottom of one line fragment and top of next (applied between lines in the same container). This value is included in the line fragment heights in layout manager. @property (readonly) CGFloat paragraphSpacing; // Distance between the bottom of this paragraph and top of next (or the beginning of its paragraphSpacingBefore, if any). -@property (readonly) NSTextAlignment alignment; // The following values are relative to the appropriate margin (depending on the paragraph direction) @@ -91,32 +94,25 @@ API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)) @interface NSParag @property (readonly) float hyphenationFactor; // A property controlling the hyphenation behavior for the paragraph associated with the paragraph style. The exact hyphenation logic is dynamically determined by the layout context such as language, platform, etc. When YES, it affects the return value from -hyphenationFactor when the property is set to 0.0. -@property (readonly) BOOL usesDefaultHyphenation API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0)); +@property (readonly) BOOL usesDefaultHyphenation API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0)); -@property (readonly,copy) NSArray *tabStops API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // An array of NSTextTabs. Contents should be ordered by location. The default value is an array of 12 left-aligned tabs at 28pt interval -@property (readonly) CGFloat defaultTabInterval API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // The default tab interval used for locations beyond the last element in tabStops +@property (readonly,copy) NSArray *tabStops API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // An array of NSTextTabs. Contents should be ordered by location. The default value is an array of 12 left-aligned tabs at 28pt interval +@property (readonly) CGFloat defaultTabInterval API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // The default tab interval used for locations beyond the last element in tabStops -@property (readonly) BOOL allowsDefaultTighteningForTruncation API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); // Tightens inter-character spacing in attempt to fit lines wider than the available space if the line break mode is one of the truncation modes before starting to truncate. YES by default for apps linked against 10.11 and later SDK. The maximum amount of tightening performed is determined by the system based on contexts such as font, line width, etc. +@property (readonly, copy) NSArray *textLists API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // Array to specify the text lists containing the paragraph, nested from outermost to innermost. -// Specifies the threshold for using tightening as an alternative to truncation when -allowsDefaultTighteningForTruncation=NO. When the line break mode specifies truncation, the text system will attempt to tighten inter-character spacing as an alternative to truncation, provided that the ratio of the text width to the line fragment width does not exceed 1.0 + tighteningFactorForTruncation. Otherwise the text will be truncated at a location determined by the line break mode. The default value is 0.0 for apps linked against 10.11 and later SDK. This property is ignored when -allowsDefaultTighteningForTruncation=YES. Explicitly setting this property to 0.0 has a side effect of also setting -allowsDefaultTighteningForTruncation to NO. -@property (readonly) float tighteningFactorForTruncation; +@property (readonly) BOOL allowsDefaultTighteningForTruncation API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); // Tightens inter-character spacing in attempt to fit lines wider than the available space if the line break mode is one of the truncation modes before starting to truncate. NO by default. The maximum amount of tightening performed is determined by the system based on contexts such as font, line width, etc. -@property (readonly, copy) NSArray<__kindof NSTextBlock *> *textBlocks; // Array to specify the text blocks containing the paragraph, nested from outermost to innermost. -@property (readonly, copy) NSArray *textLists; // Array to specify the text lists containing the paragraph, nested from outermost to innermost. +@property (readonly) NSLineBreakStrategy lineBreakStrategy API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); // Specifies the line break strategies that may be used for laying out the paragraph. The default value is NSLineBreakStrategyNone. -// Specifies whether the paragraph is to be treated as a header for purposes of HTML generation. Should be set to 0 (the default value) if the paragraph is not a header, or from 1 through 6 if the paragraph is to be treated as a header. -@property (readonly) NSInteger headerLevel; - -// Specifies the line break strategies that may be used for laying out the paragraph. The default value is NSLineBreakStrategyNone. -@property (readonly) NSLineBreakStrategy lineBreakStrategy API_AVAILABLE(macos(10.11), ios(9.0)); @end -API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)) @interface NSMutableParagraphStyle : NSParagraphStyle +APPKIT_EXTERN API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)) +@interface NSMutableParagraphStyle : NSParagraphStyle @property CGFloat lineSpacing; @property CGFloat paragraphSpacing; -@property NSTextAlignment alignment; @property CGFloat firstLineHeadIndent; @property CGFloat headIndent; @property CGFloat tailIndent; @@ -127,21 +123,61 @@ API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)) @interface NSMutab @property CGFloat lineHeightMultiple; @property CGFloat paragraphSpacingBefore; @property float hyphenationFactor; -@property (readwrite) BOOL usesDefaultHyphenation API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0)); -@property (null_resettable, copy) NSArray *tabStops API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); -@property CGFloat defaultTabInterval API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); -@property BOOL allowsDefaultTighteningForTruncation API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); +@property (readwrite) BOOL usesDefaultHyphenation API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0)); +@property (null_resettable, copy) NSArray *tabStops API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +@property CGFloat defaultTabInterval API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +@property BOOL allowsDefaultTighteningForTruncation API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); +@property NSLineBreakStrategy lineBreakStrategy API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); +@property (NS_NONATOMIC_IOSONLY, copy) NSArray *textLists API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); + +- (void)addTabStop:(NSTextTab *)anObject API_AVAILABLE(macos(10.0), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); +- (void)removeTabStop:(NSTextTab *)anObject API_AVAILABLE(macos(10.0), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); + +- (void)setParagraphStyle:(NSParagraphStyle *)obj API_AVAILABLE(macos(10.0), ios(9.0), tvos(9.0), watchos(2.0), visionos(1.0)); + +@end + +NS_HEADER_AUDIT_END(nullability, sendability) +#endif // !TARGET_OS_IPHONE +#else +#import +#endif + +#import +#import +#import + +@class NSTextList; +@class NSTextBlock; + +#if !TARGET_OS_IPHONE +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + +API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0), visionos(1.0)) @interface NSTextTab () -- (void)addTabStop:(NSTextTab *)anObject API_AVAILABLE(macos(10.0), ios(9.0), watchos(2.0), tvos(9.0)); -- (void)removeTabStop:(NSTextTab *)anObject API_AVAILABLE(macos(10.0), ios(9.0), watchos(2.0), tvos(9.0)); +- (instancetype)initWithTextAlignment:(NSTextAlignment)alignment location:(CGFloat)loc options:(NSDictionary *)options NS_DESIGNATED_INITIALIZER; // Initializes a text tab with the text alignment, location, and options. The text alignment is used to determine the position of text inside the tab column. +@property (readonly) NSTextAlignment alignment; // Defines the alignment of tab column contents. NSTextAlignmentNatural and NSTextAlignmentJustified are resolved either NSTextAlignmentLeft or NSTextAlignmentRight based on the user's preferred language. + +@end -- (void)setParagraphStyle:(NSParagraphStyle *)obj API_AVAILABLE(macos(10.0), ios(9.0), watchos(2.0), tvos(9.0)); +API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0), visionos(1.0)) @interface NSParagraphStyle () +@property (readonly) NSTextAlignment alignment; + +// Specifies the threshold for using tightening as an alternative to truncation when -allowsDefaultTighteningForTruncation=NO. When the line break mode specifies truncation, the text system will attempt to tighten inter-character spacing as an alternative to truncation, provided that the ratio of the text width to the line fragment width does not exceed 1.0 + tighteningFactorForTruncation. Otherwise the text will be truncated at a location determined by the line break mode. The default value is 0.0 for apps linked against 10.11 and later SDK. This property is ignored when -allowsDefaultTighteningForTruncation=YES. Explicitly setting this property to 0.0 has a side effect of also setting -allowsDefaultTighteningForTruncation to NO. +@property (readonly) float tighteningFactorForTruncation; +@property (readonly, copy) NSArray<__kindof NSTextBlock *> *textBlocks; // Array to specify the text blocks containing the paragraph, nested from outermost to innermost. + +// Specifies whether the paragraph is to be treated as a header for purposes of HTML generation. Should be set to 0 (the default value) if the paragraph is not a header, or from 1 through 6 if the paragraph is to be treated as a header. +@property (readonly) NSInteger headerLevel; + +@end + +API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0), visionos(1.0)) @interface NSMutableParagraphStyle () +@property NSTextAlignment alignment; @property float tighteningFactorForTruncation; @property (copy) NSArray<__kindof NSTextBlock *> *textBlocks; -@property (copy) NSArray *textLists; @property NSInteger headerLevel; -@property NSLineBreakStrategy lineBreakStrategy API_AVAILABLE(macos(10.11), ios(9.0)); @end /************************ Deprecated ************************/ @@ -160,10 +196,5 @@ typedef NS_ENUM(NSUInteger, NSTextTabType) { -#endif // !TARGET_OS_IPHONE - NS_HEADER_AUDIT_END(nullability, sendability) -#else -#import -#endif - +#endif // !TARGET_OS_IPHONE diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPasteboard.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPasteboard.h index 6b08cc7d..885eeaf2 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPasteboard.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPasteboard.h @@ -1,7 +1,7 @@ /* NSPasteboard.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -48,6 +48,88 @@ APPKIT_EXTERN NSPasteboardName NSPasteboardNameRuler API_AVAILABLE(macos(10.13)) APPKIT_EXTERN NSPasteboardName NSPasteboardNameFind API_AVAILABLE(macos(10.13)); APPKIT_EXTERN NSPasteboardName NSPasteboardNameDrag API_AVAILABLE(macos(10.13)); + +/* Behavior in case of programmatic pasteboard access */ + +/// A value indicating pasteboard access behavior. +typedef NS_ENUM(NSInteger, NSPasteboardAccessBehavior) { + + /// The default behavior for the General pasteboard is to ask upon programmatic access. All other pasteboards default to always allow access. + /// If an app has never triggered a pasteboard access alert, its General pasteboard will report `.default` behavior. Such an app is not shown in the corresponding System Settings pane. + /// Once programmatic pasteboard access triggers the first pasteboard access alert, the state automatically changes to `.ask`. At this point the app starts being shown in System Settings, where the user can toggle the behavior between `.ask`, `.alwaysAllow`, and `.alwaysDeny`. + NSPasteboardAccessBehaviorDefault = 0, + + /// The system will notify the user and ask for permission before granting pasteboard access. However, access that is both user originated and paste related will always be allowed, and will not result in a notification. The app is listed in the corresponding System Settings pane. + NSPasteboardAccessBehaviorAsk = 1, + + /// The system will automatically allow all pasteboard access, without notifying the user. The app is listed in the corresponding System Settings pane. + NSPasteboardAccessBehaviorAlwaysAllow = 2, + + /// The system will automatically deny all pasteboard access, without notifying the user. However, access that is both user originated and paste related will always be allowed, and will not result in a notification. The app is listed in the corresponding System Settings pane. + NSPasteboardAccessBehaviorAlwaysDeny = 3 +} NS_SWIFT_NAME(NSPasteboard.AccessBehavior) API_AVAILABLE(macos(15.4)); + + +/* Detection */ + +/// A pattern to detect on the pasteboard, such as a URL, text, or a number. +typedef NSString * NSPasteboardDetectionPattern NS_REFINED_FOR_SWIFT NS_TYPED_ENUM API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string that consists of a web URL. +/// @returns NSString value, suitable for implementing "Paste and Go" +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternProbableWebURL NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string suitable for use as a web search term. +/// @returns NSString value, suitable for implementing "Paste and Search" +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternProbableWebSearch NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string that consists of a numeric value. +/// @returns NSNumber value +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternNumber NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string that contains a URL. +/// @returns array of DDMatchLink values +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternLink NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string that contains a phone number. +/// @returns array of DDMatchPhoneNumber values +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternPhoneNumber NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string that contains an email address. +/// @returns array of DDMatchEmailAddress values +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternEmailAddress NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string that contains a postal address. +/// @returns array of DDMatchPostalAddress values +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternPostalAddress NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string that contains a calendar event. +/// @returns array of DDMatchCalendarEvent values +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternCalendarEvent NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string that contains a parcel tracking number and carrier. +/// @returns array of DDMatchShipmentTrackingNumber values +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternShipmentTrackingNumber NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string that contains a flight number. +/// @returns array of DDMatchFlightNumber values +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternFlightNumber NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// A pattern that indicates the pasteboard detects a string that contains an amount of money. +/// @returns array of DDMatchMoneyAmount values +APPKIT_EXTERN NSPasteboardDetectionPattern const NSPasteboardDetectionPatternMoneyAmount NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + + +/* Metadata */ + +/// A metadata type to detect on the pasteboard. +typedef NSString * NSPasteboardMetadataType NS_REFINED_FOR_SWIFT NS_TYPED_ENUM API_AVAILABLE(macos(15.4)); + +/// A metadata type that returns the content type if the pasteboard detects a reference to a file. +/// @returns UTType value for the detected content type of the file URL, if a file URL type is present. +APPKIT_EXTERN NSPasteboardMetadataType const NSPasteboardMetadataTypeContentType NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + + /* Options for prepareForNewContentsWithOptions: */ typedef NS_OPTIONS(NSUInteger, NSPasteboardContentsOptions) { @@ -84,6 +166,9 @@ APPKIT_EXTERN NSPasteboardReadingOptionKey const NSPasteboardURLReadingContentsC - (oneway void)releaseGlobally; +/// The current pasteboard access behavior. The user can customize this behavior per-app in System Settings for any app that has triggered a pasteboard access alert in the past. +@property (readonly, assign) NSPasteboardAccessBehavior accessBehavior API_AVAILABLE(macos(15.4)); + /* Prepares the pasteboard for new contents, clearing the existing contents of the pasteboard. This is the first step in providing data on the pasteboard. Any options specified will persist until prepareForNewContentsWithOptions: or clearContents is called. Returns the change count of the pasteboard. */ - (NSInteger)prepareForNewContentsWithOptions:(NSPasteboardContentsOptions)options API_AVAILABLE(macos(10.12)); @@ -154,6 +239,42 @@ Example: there are five items on the pasteboard, two contain TIFF data, two cont - (nullable NSString *)stringForType:(NSPasteboardType)dataType; +/* Detection / Metadata */ + +/// Determines whether the first pasteboard item matches the specified patterns, without notifying the user. +/// +/// Because this method only gives an indication of whether a pasteboard item matches a particular pattern and doesn’t allow the app to access the contents, the system doesn’t notify the user about reading the contents of the pasteboard. +/// +/// @param patterns The patterns to detect on the pasteboard. +/// @param completionHandler A block that the system invokes after detecting patterns on the pasteboard. The block receives either a set with the patterns found on the pasteboard or an error if detection failed. +- (void)detectPatternsForPatterns:(NSSet *)patterns + completionHandler:(void(^)(NSSet * _Nullable detectedPatterns, + NSError * _Nullable error))completionHandler NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// Determines whether the first pasteboard item matches the specified patterns, reading the contents if it finds a match. +/// +/// - Important: Calling this method notifies the user that the app has read the contents of the pasteboard, if a match is found. +/// +/// For details about the types returned for each pattern, see `NSPasteboardDetectionPattern`. +/// +/// @param patterns The patterns to detect on the pasteboard. +/// @param completionHandler A block that the system invokes after detecting patterns on the pasteboard. The block returns either dictionary with the patterns found on the pasteboard or an error if detection failed. The dictionary keys specify the matched patterns, and the values specify the corresponding content of the pasteboard. +- (void)detectValuesForPatterns:(NSSet *)patterns + completionHandler:(void(^)(NSDictionary * _Nullable detectedValues, + NSError * _Nullable error))completionHandler NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// Determines available metadata from the specified metadata types for the first pasteboard item, without notifying the user. +/// +/// Because this method only gives access to limited types of metadata and doesn’t allow the app to access the contents, the system doesn’t notify the user about reading the contents of the pasteboard. +/// +/// For details about the metadata returned for each type, see `NSPasteboardMetadataType`. +/// +/// @param types The metadata types to detect on the pasteboard. +/// @param completionHandler A block that the system invokes after detecting metadata on the pasteboard. The block receives either a dictionary with the metadata types found on the pasteboard or an error if detection failed. The dictionary keys specify the matched metadata types, and the values specify the corresponding metadata. +- (void)detectMetadataForTypes:(NSSet *)types + completionHandler:(void(^)(NSDictionary * _Nullable detectedMetadata, + NSError * _Nullable error))completionHandler NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + @end diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPasteboardItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPasteboardItem.h index 44de4686..b76741d1 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPasteboardItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPasteboardItem.h @@ -1,7 +1,7 @@ /* NSPasteboardItem.h Application Kit - Copyright (c) 2008-2023, Apple Inc. + Copyright (c) 2008-2024, Apple Inc. All rights reserved. */ @@ -60,6 +60,43 @@ API_AVAILABLE(macos(10.6)) - (nullable NSString *)stringForType:(NSPasteboardType)type; - (nullable id)propertyListForType:(NSPasteboardType)type; + +/* Detection / Metadata */ + +/// Determines whether this pasteboard item matches the specified patterns, without notifying the user. +/// +/// Because this method only gives an indication of whether a pasteboard item matches a particular pattern and doesn’t allow the app to access the contents, the system doesn’t notify the user about reading the contents of the pasteboard. +/// +/// @param patterns The patterns to detect on the pasteboard item. +/// @param completionHandler A block that the system invokes after detecting patterns on the pasteboard item. The block receives either a set with the patterns found on the pasteboard item or an error if detection failed. +- (void)detectPatternsForPatterns:(NSSet *)patterns + completionHandler:(void(^)(NSSet * _Nullable detectedPatterns, + NSError * _Nullable error))completionHandler NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// Determines whether this pasteboard item matches the specified patterns, reading the contents if it finds a match. +/// +/// - Important: Calling this method notifies the user that the app has read the contents of the pasteboard, if a match is found. +/// +/// For details about the types returned for each pattern, see `NSPasteboardDetectionPattern`. +/// +/// @param patterns The patterns to detect on the pasteboard item. +/// @param completionHandler A block that the system invokes after detecting patterns on the pasteboard item. The block returns either dictionary with the patterns found on the pasteboard item or an error if detection failed. The dictionary keys specify the matched patterns, and the values specify the corresponding content of the pasteboard. +- (void)detectValuesForPatterns:(NSSet *)patterns + completionHandler:(void(^)(NSDictionary * _Nullable detectedValues, + NSError * _Nullable error))completionHandler NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + +/// Determines available metadata from the specified metadata types for this pasteboard item, without notifying the user. +/// +/// Because this method only gives access to limited types of metadata and doesn’t allow the app to access the contents, the system doesn’t notify the user about reading the contents of the pasteboard. +/// +/// For details about the metadata returned for each type, see `NSPasteboardMetadataType`. +/// +/// @param types The metadata types to detect on the pasteboard item. +/// @param completionHandler A block that the system invokes after detecting metadata on the pasteboard item. The block receives either a dictionary with the metadata types found on the pasteboard item or an error if detection failed. The dictionary keys specify the matched metadata types, and the values specify the corresponding metadata. +- (void)detectMetadataForTypes:(NSSet *)types + completionHandler:(void(^)(NSDictionary * _Nullable detectedMetadata, + NSError * _Nullable error))completionHandler NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.4)); + @end diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPathCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPathCell.h index ddec5b71..41cede6e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPathCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPathCell.h @@ -1,7 +1,7 @@ /* NSPathCell.h Application Kit - Copyright (c) 2005-2023, Apple Inc. + Copyright (c) 2005-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPathComponentCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPathComponentCell.h index 8e09e23c..59d37fe4 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPathComponentCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPathComponentCell.h @@ -1,7 +1,7 @@ /* NSPathComponentCell.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPathControl.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPathControl.h index 30816bdb..218ef906 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPathControl.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPathControl.h @@ -1,7 +1,7 @@ /* NSPathControl.h Application Kit - Copyright (c) 2005-2023, Apple Inc. + Copyright (c) 2005-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPathControlItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPathControlItem.h index 6fc2a703..e0c721db 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPathControlItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPathControlItem.h @@ -1,7 +1,7 @@ /* NSPathControlItem.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPersistentDocument.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPersistentDocument.h index f3501d2f..baeb39a4 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPersistentDocument.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPersistentDocument.h @@ -1,8 +1,8 @@ /* - NSPersistentDocument.h - Application Kit - Copyright (c) 2004-2023, Apple Inc. - All rights reserved. + NSPersistentDocument.h + Application Kit + Copyright (c) 2004-2024, Apple Inc. + All rights reserved. */ @@ -47,5 +47,3 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST API_UNAVAILABLE_END NS_HEADER_AUDIT_END(nullability, sendability) - - diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPickerTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPickerTouchBarItem.h index b15bb9a6..e51a8862 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPickerTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPickerTouchBarItem.h @@ -1,7 +1,7 @@ /* NSPickerTouchBarItem.h Application Kit - Copyright (c) 2019-2023, Apple Inc. + Copyright (c) 2019-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPopUpButton.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPopUpButton.h index 6ee4caa5..c418d7d6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPopUpButton.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPopUpButton.h @@ -1,13 +1,13 @@ /* NSPopUpButton.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ #import #import -#import +#import #import #import @@ -18,20 +18,68 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @interface NSPopUpButton : NSButton +/*! + Creates a standard pop-up button with a menu, target, and action. + @param menu A menu presented by the pop-up button, containing items that the user can choose between. + @param target The target object that receives action messages from the control. + @param action The action message sent by the control. + @discussion If `menu` is non-empty, the pop-up button uses the first item for its initial selection. + @return An initialized pop-up button object. + */ ++ (instancetype)popUpButtonWithMenu:(NSMenu *)menu target:(nullable id)target action:(nullable SEL)action NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.0)); + +/*! + Creates a standard pull-down button with a title and menu. + @param title The localized title string that is displayed on the button. + @param menu The pull-down menu to present when interacting with the button. + @discussion Pull-down buttons created using this method have the `usesItemFromMenu` property set to `NO`. + @return An initialized pull-down button object. + */ ++ (instancetype)pullDownButtonWithTitle:(NSString *)title menu:(NSMenu *)menu NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.0)); + +/*! + Creates a standard pull-down button with an image and menu. + @param image The icon that is displayed on the button. + @param menu The pull-down menu to present when interacting with the button. + @discussion Pull-down buttons created using this method have the `usesItemFromMenu` property set to `NO`. + @return An initialized pull-down button object. + */ ++ (instancetype)pullDownButtonWithImage:(NSImage *)image menu:(NSMenu *)menu NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.0)); + +/*! + Creates a standard pull-down button with a title, image, and menu. + @param title The localized title string that is displayed on the button. + @param image The icon that is displayed on the button. + @param menu The pull-down menu to present when interacting with the button. + @discussion Pull-down buttons created using this method have the `usesItemFromMenu` property set to `NO`. + @return An initialized pull-down button object. + */ ++ (instancetype)pullDownButtonWithTitle:(NSString *)title image:(NSImage *)image menu:(NSMenu *)menu NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(15.0)); + - (instancetype)initWithFrame:(NSRect)buttonFrame pullsDown:(BOOL)flag; -// Overrides behavior of NSView. This is the menu for the popup, not a context menu. PopUpButtons do not have context menus. +#pragma mark Configuration + +/*! The menu that is presented by the popup button. This overrides the inherited NSView property and replaces NSView's standard context menu behavior. */ @property (nullable, strong) NSMenu *menu; -// Behavior settings +/*! When the value of this property is `YES` the button adopts 'pull-down' behavior, displaying static button contents and presenting its menu at the edge of the button. When the value of this property is `NO` the button behaves as a popup, displaying the currently-selected menu item and presenting its menu above the button, positioning the selected menu item to match the button's contents. */ @property BOOL pullsDown; - + +/*! When the value of this property is `YES`, the popup button automatically enables and disables its menu items according to the `NSMenuValidation` protocol prior to user interaction. */ @property BOOL autoenablesItems; +/*! For pull-down buttons and for popups under severe screen position restrictions, this property specifies the edge of the control that the menu should present from. */ @property NSRectEdge preferredEdge; - // The preferred edge is used for pull down menus and for popups under severe screen position restrictions. It indicates what edge of the cell the menu should pop out from. -// Adding and removing items +/*! When `usesItemFromMenu` is `YES`, a pull-down button uses the title of the first menu item and hides the first menu item. A pop-up button uses the title of the currently selected menu. The default value is `YES`. */ +@property BOOL usesItemFromMenu API_AVAILABLE(macos(15.0)); + +/*! When the value of this property is `YES`, the selected menu item's `state` is set to `NSControlStateValueOn`. When the value of this property is `NO`, the menu item's `state` is not changed. When this property changes, the `state` of the currently selected item is updated appropriately. This property is ignored for pull-down buttons. */ +@property BOOL altersStateOfSelectedItem API_AVAILABLE(macos(15.0)); + +#pragma mark Adding and Removing Items + - (void)addItemWithTitle:(NSString *)title; - (void)addItemsWithTitles:(NSArray *)itemTitles; - (void)insertItemWithTitle:(NSString *)title atIndex:(NSInteger)index; @@ -40,8 +88,8 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST - (void)removeItemAtIndex:(NSInteger)index; - (void)removeAllItems; +#pragma mark Accessing Items -// Accessing the items @property (readonly, copy) NSArray *itemArray; @property (readonly) NSInteger numberOfItems; @@ -55,8 +103,8 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST - (nullable NSMenuItem *)itemWithTitle:(NSString *)title; @property (nullable, readonly, strong) NSMenuItem *lastItem; +#pragma mark Selecting Items -// Dealing with selection - (void)selectItem:(nullable NSMenuItem *)item; - (void)selectItemAtIndex:(NSInteger)index; - (void)selectItemWithTitle:(NSString *)title; @@ -68,14 +116,14 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @property (readonly) NSInteger selectedTag; - (void)synchronizeTitleAndSelectedItem; -// Title conveniences +#pragma mark Item Title Conveniences + - (NSString *)itemTitleAtIndex:(NSInteger)index; @property (readonly, copy) NSArray *itemTitles; @property (nullable, readonly, copy) NSString *titleOfSelectedItem; @end -/* Notifications */ APPKIT_EXTERN NSNotificationName NSPopUpButtonWillPopUpNotification; API_UNAVAILABLE_END diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPopUpButtonCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPopUpButtonCell.h index be5bbe07..5814c540 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPopUpButtonCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPopUpButtonCell.h @@ -1,7 +1,7 @@ /* NSPopUpButtonCell.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPopover.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPopover.h index dbecaf9c..adea41b5 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPopover.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPopover.h @@ -1,7 +1,7 @@ /* NSPopover.h Application Kit - Copyright (c) 2010-2023, Apple Inc. + Copyright (c) 2010-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPopoverTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPopoverTouchBarItem.h index 26171a79..fc11be9e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPopoverTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPopoverTouchBarItem.h @@ -1,7 +1,7 @@ /* NSPopoverTouchBarItem.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPredicateEditor.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPredicateEditor.h index 618560a4..a44ef501 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPredicateEditor.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPredicateEditor.h @@ -1,7 +1,7 @@ /* NSPredicateEditor.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPredicateEditorRowTemplate.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPredicateEditorRowTemplate.h index d94c26fd..43ec2c15 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPredicateEditorRowTemplate.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPredicateEditorRowTemplate.h @@ -1,7 +1,7 @@ /* NSPredicateEditorRowTemplate.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPressGestureRecognizer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPressGestureRecognizer.h index 8f8b7fd3..99e058d6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPressGestureRecognizer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPressGestureRecognizer.h @@ -1,7 +1,7 @@ /* NSPressGestureRecognizer.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPressureConfiguration.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPressureConfiguration.h index 1f75d969..4a9d36c2 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPressureConfiguration.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPressureConfiguration.h @@ -1,7 +1,7 @@ /* NSPressureConfiguration.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPreviewRepresentingActivityItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPreviewRepresentingActivityItem.h index 110e5b49..65b691fc 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPreviewRepresentingActivityItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPreviewRepresentingActivityItem.h @@ -1,7 +1,7 @@ /* NSPreviewRepresentingActivityItem.h Application Kit - Copyright (c) 2022-2023, Apple Inc. + Copyright (c) 2022-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintInfo.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintInfo.h index b3b3de70..a7ff7ad7 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintInfo.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintInfo.h @@ -1,7 +1,7 @@ /* NSPrintInfo.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintOperation.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintOperation.h index eb66d7b4..1c3c3b14 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintOperation.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintOperation.h @@ -1,7 +1,7 @@ /* NSPrintOperation.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintPanel.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintPanel.h index 1b4679d4..a89c360c 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintPanel.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPrintPanel.h @@ -1,7 +1,7 @@ /* NSPrintPanel.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSPrinter.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSPrinter.h index 6ba08dab..a895a172 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSPrinter.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSPrinter.h @@ -1,7 +1,7 @@ /* NSPrinter.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSProgressIndicator.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSProgressIndicator.h index 0917f600..53aa22f5 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSProgressIndicator.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSProgressIndicator.h @@ -1,7 +1,7 @@ /* NSProgressIndicator.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSResponder.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSResponder.h index a1061c8e..464fd80b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSResponder.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSResponder.h @@ -1,7 +1,7 @@ /* NSResponder.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -81,6 +81,24 @@ NS_SWIFT_UI_ACTOR - (void)pressureChangeWithEvent:(NSEvent *)event API_AVAILABLE(macos(10.10.3)); +/*! + @method `contextMenuKeyDown` + @abstract Handle a key event that should present a context menu at the user focus. + @discussion Most applications should not override this method. Instead, you should customize the context menu displayed from a keyboard event by implementing `menuForEvent:` and `selectionAnchorRect`, or `showContextMenuForSelection:`, rather than this method. + + You should only override this method when you do not want the system-provided default behavior for the context menu hotkey, either for a specific key combination, or for the hotkey in general. For example, if your application already provides a different behavior for control-Return (the default context menu hotkey definition), and you want to preserve that behavior, you should override this method to handle that specific key combination, and then return without calling `super`. Note that the user may customize the hotkey to a different key combination, so in this example, if any other key combination is passed to your method, you would call `super`. + + An implementation of this method should call `[super contextMenuKeyDown:event]` to pass the request up the responder chain. If the message reaches the application object, NSApplication's implementation of this method will send `showContextMenuForSelection:` to the responder chain. If you do not call `super`, then no further handling of the key event will be performed. + + @note In some cases, `showContextMenuForSelection:` will be called without a prior call to `contextMenuKeyDown:`. This occurs when a view receives an Accessibility ShowMenu action, or when the user has created a Cocoa Text key binding to map a different key combination to the `showContextMenuForSelection:` action. + + @param event + The key down event that matches the system-wide context menu hotkey combination. + + @seealso `showContextMenuForSelection:` + */ +- (void)contextMenuKeyDown:(NSEvent *)event API_AVAILABLE(macos(15.0)); + - (void)noResponderFor:(SEL)eventSelector; @property (readonly) BOOL acceptsFirstResponder; - (BOOL)becomeFirstResponder; @@ -261,6 +279,26 @@ NS_SWIFT_UI_ACTOR */ - (void)quickLookPreviewItems:(nullable id)sender API_AVAILABLE(macos(10.8)); +/*! + @method `showContextMenuForSelection` + @abstract Present a context menu at the text cursor position, selection, or wherever is appropriate for your responder. + @discussion NSView has a default implementation of this method. For any view that returns a non-nil value from `-menuForEvent:`, the default implementation will display that menu automatically. The NSView implementation uses the `selectionAnchorRect` method in the `NSViewContentSelectionInfo` protocol to determine the location of the selection and of the menu. The NSView implementation determines the menu to display by calling `menuForEvent:` with a right-mouse-down event that is centered on the anchor rect. If `selectionAnchorRect` is not implemented, then the NSView implementation calls `menuForEvent` with a right-mouse-down event that is centered on the view's bounds, and also displays the menu at that location. + + You should only override this method in a custom view if you need full control over the display of a context menu from the keyboard or Accessibility, beyond what is provided by default by NSView. + + If the view does not support a context menu, then you should call `[[self nextResponder] tryToPerform:_cmd with:sender]` to pass the request up the responder chain. + + @note In some cases, this method will be called without a prior call to `contextMenuKeyDown:`. This occurs when a view receives an Accessibility ShowMenu action, or when the user has created a Cocoa Text key binding to map a different key combination to the `showContextMenuForSelection:` action. + + @param sender + The object that originated the display of the context menu. + + @seealso `menuForEvent:` + @seealso `selectionAnchorRect` + @seealso `contextMenuKeyDown:` + */ +- (void)showContextMenuForSelection:(nullable id)sender API_AVAILABLE(macos(15.0)); + @end @interface NSResponder (NSStandardKeyBindingMethods) @@ -339,6 +377,12 @@ You can override this method to customize the presentation of errors by examinin @end +@interface NSResponder(NSWritingToolsSupport) + +- (IBAction)showWritingTools:(nullable id)sender API_AVAILABLE(macos(15.2)); + +@end + @interface NSResponder(NSDeprecated) diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSRotationGestureRecognizer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSRotationGestureRecognizer.h index 237443d9..1edcef47 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSRotationGestureRecognizer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSRotationGestureRecognizer.h @@ -1,7 +1,7 @@ /* NSRotationGestureRecognizer.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSRuleEditor.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSRuleEditor.h index d269d710..c563d04a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSRuleEditor.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSRuleEditor.h @@ -1,7 +1,7 @@ /* NSRuleEditor.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSRulerMarker.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSRulerMarker.h index b07282c7..4aa12f30 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSRulerMarker.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSRulerMarker.h @@ -1,7 +1,7 @@ /* NSRulerMarker.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSRulerView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSRulerView.h index dd2a1c41..e457d10e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSRulerView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSRulerView.h @@ -1,7 +1,7 @@ /* NSRulerView.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSRunningApplication.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSRunningApplication.h index cf93d4f6..61030889 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSRunningApplication.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSRunningApplication.h @@ -1,7 +1,7 @@ /* NSRunningApplication.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -59,7 +59,7 @@ typedef NS_ENUM(NSInteger, NSApplicationActivationPolicy) { To access the list of all running applications, use the `-runningApplications` method on `NSWorkspace`. */ -API_AVAILABLE(macos(10.6)) +API_AVAILABLE(macos(10.6)) NS_SWIFT_SENDABLE @interface NSRunningApplication : NSObject /// Indicates that the process is an exited application. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSavePanel.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSavePanel.h index ce9d737a..bea39fb5 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSavePanel.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSavePanel.h @@ -1,7 +1,7 @@ /* NSSavePanel.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -17,183 +17,246 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @protocol NSOpenSavePanelDelegate; @class UTType; -/* Return codes from the open/save panel. -*/ -enum { - NSFileHandlingPanelCancelButton API_DEPRECATED_WITH_REPLACEMENT("NSModalResponseCancel", macos(10.0,10.13)) = NSModalResponseCancel, - NSFileHandlingPanelOKButton API_DEPRECATED_WITH_REPLACEMENT("NSModalResponseOK", macos(10.0,10.13)) = NSModalResponseOK, -}; - @interface NSSavePanel : NSPanel +/** + A note on when properties can be set. + Both the NSSavePanel and NSOpenPanel have two phases — configuration and running. + The configuration phase is when the panel is not displayed. The running phase is when the panel is displayed — i.e. after `-beginSheetModalForWindow:completionHandler:`, `-beginWithCompletionHandler:`, `-runModal`. When a panel is dismissed, the panel reverts back to the configuration phase and can be reused. + Some properties can only be set during the configuration phase. Those properties may be changed by the panel during the run phase. Unless otherwise mentioned a property can be changed any time. + */ -/* Creates a new instance of the NSSavePanel. This class is not a singleton. -*/ +/** + Creates a new instance of the NSSavePanel. This class is not a singleton. + */ + (NSSavePanel *)savePanel; -#pragma mark - -#pragma mark Result Properties +// MARK: - Result Properties -/* NSSavePanel: Returns the URL to save the file at. A file may already exist at 'URL' if the user choose to overwrite it. - NSOpenPanel: Returns the single filename selected by the user. Note: if -allowsMultipleSelection is set, you should use the -URLs on NSOpenPanel instead. -*/ +/** + `NSSavePanel`: Returns the URL to save the file at. A file may already exist at `url` if the user choose to overwrite it. + `NSOpenPanel`: Returns the single filename selected by the user. Note: if -allowsMultipleSelection is set, you should use the -URLs on NSOpenPanel instead. + */ @property (nullable, readonly, copy) NSURL *URL; -#pragma mark - -#pragma mark Configuration Properties +// MARK: - Configuration Properties -/* Gets and sets the identifier. - The panel's current state such as the root directory and the current directory are saved and restored relative to the identifier. - Note: When the identifier is changed, the properties that depend on the identifier are updated from user defaults. Properties that have a null default value are not changed (and keep their existing value). -*/ +/** + Sets and returns the identifier. + + The panel's current state such as the root directory and the current directory are saved and restored relative to the identifier. + - Note: When the identifier is changed, the properties that depend on the identifier are updated from user defaults. Properties that have a null value in user defaults are not changed (and keep their existing value). + - Note: Can only be set during the configuration phase. + */ @property (nullable, copy) NSUserInterfaceItemIdentifier identifier; -/* NSSavePanel/NSOpenPanel: Gets and sets the directoryURL shown. A value of nil indicates that the last directory shown to the user will be used. This method will not block to resolve the URL, and the directory will asyncronously be set, if required. -*/ +/** + `NSSavePanel`/`NSOpenPanel`: Sets and returns the directory that is displayed. Set to `nil` to display the default directory. This method will not block to resolve the URL, and the directory will asyncronously be set, if required. + - Note: Can only be set during the configuration phase. + */ @property (nullable, copy) NSURL *directoryURL API_AVAILABLE(macos(10.6)); -/* - NSSavePanel: An array of UTTypes specifying the file types the user can save the file as. An empty value indicates that any file type can be used. If no extension is given by the user, the first preferred extension from the array will be used as the extension for the save panel. If the user specifies a type not in the array, and 'allowsOtherFileTypes' is YES, they will be presented with another dialog when prompted to save. The default value is the empty array. - NSOpenPanel: This property determines which files should be enabled in the open panel. Using the deprecated methods to show the open panel (the ones that take a "types:" parameter) will overwrite this value, and should not be used. The allowedContentTypes can be changed while the panel is running (ie: from an accessory view). This is also known as the "enabled file types". An empty value indicates that all files should be enabled. -*/ +/** + `NSSavePanel`: An array of UTTypes specifying the file types the user can save the file as. Set to `@[]` to specify that any file type can be used. If no extension is given by the user, the first preferred extension from the array will be used as the extension for the save panel. If the user specifies a type not in the array, and `allowsOtherFileTypes` is `YES`, they will be presented with another dialog when prompted to save. The default value is the empty array. + `NSOpenPanel`: This property determines which files should be enabled in the open panel. Using the deprecated methods to show the open panel (the ones that take a "types:" parameter) will overwrite this value, and should not be used. `allowedContentTypes` can be changed while the panel is running (ie: from an accessory view). This is also known as the "enabled file types". Set to `@[]` to specify that all files should be enabled. + */ @property (copy) NSArray *allowedContentTypes API_AVAILABLE(macos(11.0)); -/* NSSavePanel: Returns a BOOL value that indicates whether the receiver allows the user to save files with an extension that's not in the list of 'allowedFileTypes'. - NSOpenPanel: Not used. -*/ +/** + `NSSavePanel`: Returns a BOOL value that indicates whether the panel allows the user to save files with an extension that is not in the list of `allowedFileTypes`. + `NSOpenPanel`: Not used. + */ @property BOOL allowsOtherFileTypes; -/* Gets and sets the accessory view shown in the panel. For applications that link on SnowLeopard and higher, the accessoryView's frame will be observed, and any changes the programmer makes to the frame will automatically be reflected in the panel (including animated changes to the frame height). -*/ +/** + `NSSavePanel`:The current type. If set to `nil`, resets to the first allowed content type. Returns `nil` if `allowedContentTypes` is empty. + `NSOpenPanel`: Not used. + - Note: Asserts that `currentContentType` conforms to `UTTypeData` or `UTTypeDirectory`. + */ +@property (nullable, copy) UTType *currentContentType API_AVAILABLE(macos(15.0)); + +/** + Sets and returns the accessory view shown in the panel. For applications that link on SnowLeopard and higher, the accessoryView's frame will be observed, and any changes the programmer makes to the frame will automatically be reflected in the panel (including animated changes to the frame height). + */ @property (nullable, strong) NSView *accessoryView; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wincompatible-property-type" -/* Gets and sets the delegate. -*/ +/** + `NSSavePanel`/`NSOpenPanel`: Sets and returns the delegate. + */ @property (nullable, weak) id delegate; #pragma clang diagnostic pop - -/* NSSavePanel: Returns YES if the panel is expanded. Defaults to NO, and persists in the user defaults. - NSOpenPanel: Not used. -*/ +/** + `NSSavePanel`: Returns `YES` if the panel is expanded. Defaults to `NO`. Persists in the user defaults. + - Note: Can only be set during the configuration phase. + `NSOpenPanel`: Not used. + */ @property (getter=isExpanded, readonly) BOOL expanded; -/* NSSavePanel/NSOpenPanel: Set to YES to allow the "New Folder" button to be shown. -*/ +/** + `NSSavePanel`/`NSOpenPanel`: Set to `YES` to show the "New Folder" button. Default is `YES`. + */ @property BOOL canCreateDirectories; -/* NSSavePanel: Set to YES to show the extension-hiding checkbox. - NSOpenPanel: Should not be used. -*/ +/** + `NSSavePanel`: Set to `YES` to show the "Hide Extension" menu item. + `NSOpenPanel`: Not used. + */ @property BOOL canSelectHiddenExtension; -/* NSSavePanel: Set to YES if the extension-hiding checkbox should be checked. - NSOpenPanel: Should not be used. +/** + `NSSavePanel`: Set to `YES` if the filename extension should be hidden. Otherwise, `NO` if the filename extension should be shown. Default is `YES`. + - Note: Can only be set during the configuration phase. + `NSOpenPanel`: Not used. */ @property (getter=isExtensionHidden) BOOL extensionHidden; -/* NSSavePanel/NSOpenPanel: If set to YES, the user can open into file packages, as though they were directories. -*/ +/** + `NSSavePanel`/`NSOpenPanel`: If set to `YES`, the user can navigate into file packages as if they were directories. Default is `NO`. + */ @property BOOL treatsFilePackagesAsDirectories; -/* NSSavePanel/NSOpenPanel: Sets the text shown on the Open or Save button. If set to an empty string, it will show a localized "Open" for the NSOpenPanel and "Save" for the NSSavePanel. The default value will be the correct localized prompt for the open or save panel, as appropriate. -*/ +/** + `NSSavePanel`/`NSOpenPanel`: Sets the text shown on the Open or Save button. If set to an empty string, it will show a localized "Open" for the NSOpenPanel and "Save" for the NSSavePanel. The default value will be the correct localized prompt for the open or save panel, as appropriate. + */ @property (null_resettable, copy) NSString *prompt; -/* NSSavePanel/NSOpenPanel: Gets and sets the title for the panel shown at the top of the window. -*/ +/** + `NSSavePanel`/`NSOpenPanel`: Sets and returns the title for the panel shown at the top of the window. + - Note: The open and save panel does not currently have a titlebar. So the title is not displayed. + */ @property (null_resettable, copy) NSString *title; -/* NSSavePanel: Gets and sets the text shown to the left of the "name field". Default value is a localized "Save As:" string. - NSOpenPanel: Not used. +/** + `NSSavePanel`: Sets and returns the text shown to the left of the "name field". Default value is a localized "Save As:" string. + `NSOpenPanel`: Not used. */ @property (null_resettable, copy) NSString *nameFieldLabel; -/* NSSavePanel: Gets and sets the user-editable file name shown in the name field. 'value' must not be nil. NOTE: calling the deprecated methods that take a "name:" parameter will overwrite any values set before the panel was shown. Note that 'value' may have the file extension stripped, if [panel isExtensionHidden] is set to YES. - NSOpenPanel: Not used. +/** + `NSSavePanel`: Sets and returns the user-editable file name shown in the name field. + - Note: Calling the deprecated methods that take a "name:" parameter will overwrite any values set before the panel is shown. + - Note: If `[panel isExtensionHidden]` is set to `YES`, the extension will be hidden. + - Note: Can only be set during the configuration phase. + `NSOpenPanel`: Not used. */ @property (copy) NSString *nameFieldStringValue API_AVAILABLE(macos(10.6)); -/* NSSavePanel/NSOpenPanel: Gets and sets the message shown under title of the panel. 'message' must not be nil. -*/ +/** + `NSSavePanel`/`NSOpenPanel`: Sets and returns the message shown under title of the panel. + */ @property (null_resettable, copy) NSString *message; -- (void)validateVisibleColumns; - -/* NSSavePanel/NSOpenPanel: If showsHiddenFiles is set to YES, files that are normally hidden from the user are displayed. This method was published in Mac OS 10.6, but has existed since Mac OS 10.4. This property is KVO compliant. The user may invoke the keyboard shortcut (cmd-shift-.) to show or hide hidden files. Any user interface shown in an an accessory view should be updated by using key value observing (KVO) to watch for changes of this property. Alternatively, the user interface can be directly bound to this property. The default value is NO. -*/ +/** + `NSSavePanel`/`NSOpenPanel`: If `showsHiddenFiles` is set to `YES`, files that are normally hidden from the user are displayed. This method was published in Mac OS 10.6, but has existed since Mac OS 10.4. This property is KVO compliant. The user may invoke the keyboard shortcut (cmd-shift-.) to show or hide hidden files. Any user interface shown in an an accessory view should be updated by using key value observing (KVO) to watch for changes of this property. Alternatively, the user interface can be directly bound to this property. The default value is `NO`. + */ @property BOOL showsHiddenFiles; -/* NSSavePanel: Shows or hides the "Tags" field in the receiver. By passing YES, you become responsible for setting Tag names on the resulting file after saving is complete. - NSOpenPanel: Should not be used. +/** + `NSSavePanel`: Shows or hides the "Tags" field in the receiver. By passing `YES`, you become responsible for setting Tag names on the resulting file after saving is complete. Default is `YES`. + `NSOpenPanel`: Not used. */ @property BOOL showsTagField API_AVAILABLE(macos(10.9)); -/* NSSavePanel: When -showsTagField returns YES, set any initial Tag names to be displayed, if necessary, prior to displaying the receiver. Also, if the user clicks "Save", take the result of -tagNames, and set them on the resulting file after saving is complete. Tag names are NSStrings, arrays of which can be used directly with the NSURLTagNamesKey API for getting and setting tags on files. Passing nil or an empty array to -setTagNames: will result in no initial Tag names appearing in the receiver. When -showsTagField returns YES, -tagNames always returns a non-nil array, and when NO, -tagNames always returns nil. - NSOpenPanel: Should not be used. -*/ +/** + `NSSavePanel`: When -showsTagField returns YES, set any initial Tag names to be displayed, if necessary, prior to displaying the receiver. Also, if the user clicks "Save", take the result of -tagNames, and set them on the resulting file after saving is complete. Tag names are NSStrings, arrays of which can be used directly with the NSURLTagNamesKey API for getting and setting tags on files. Passing `nil` or an empty array to -setTagNames: will result in no initial Tag names appearing in the receiver. When -showsTagField returns YES, -tagNames always returns a non-nil array, and when NO, -tagNames always returns `nil`. + `NSOpenPanel`: Not used. + */ @property (nullable, copy) NSArray *tagNames API_AVAILABLE(macos(10.9)); -#pragma mark - -#pragma mark Actions +/** + `NSSavePanel`: Whether or not to show a control for selecting the type of the saved file. + The control shows the types in `allowedContentTypes`. Default is `NO`. + - Note: If @c allowedContentTypes is empty, the control is not displayed. + `NSOpenPanel`: Not used. + */ +@property BOOL showsContentTypes API_AVAILABLE(macos(15.0)); + +/** + Refreshes the open or save panel's contents. + */ +- (void)validateVisibleColumns; + +// MARK: - Actions - (IBAction)ok:(nullable id)sender; - (IBAction)cancel:(nullable id)sender; -#pragma mark - -#pragma mark Displaying/Showing +// MARK: - Displaying/Showing -/* NSSavePanel/NSOpenPanel: Presents the panel as a sheet modal to 'window' and returns immediately. Desired properties of the panel should be properly setup before calling this method. The completion handler block will be called after the user has closed the panel, however, the open/save panel sheet may still be on screen. If you require the sheet to be offscreen (for example, to show an alert), first call [savePanel orderOut:nil] to close it. The passed in 'result' will be NSModalResponseOK==1 or NSModalResponseCancel==0. +/** + `NSSavePanel`/`NSOpenPanel`: Presents the panel as a sheet modal to `window` and returns immediately. Configure the panel before calling this method. The completion handler block will be called after the user has closed the panel, however, the open/save panel sheet may still be on screen. If you require the sheet to be offscreen (for example, to show an alert), first call `[savePanel orderOut:nil]` to close it. The `result` will be `NSModalResponseOK`, `NSModalResponseCancel`, or if the panel fails to display, `NSModalResponseAbort`. */ - (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(NSModalResponse result))handler API_AVAILABLE(macos(10.6)); -/* NSSavePanel/NSOpenPanel: Presents the panel as a modeless window and returns immediately. Desired properties of the panel should be properly setup before calling this method. The completion handler block will be called after the user has closed the panel. The passed in 'result' will be NSModalResponseOK==1 or NSModalResponseCancel==0. +/** + `NSSavePanel`/`NSOpenPanel`: Presents the panel as a modeless window and returns immediately. Configure the panel before calling this method. The completion handler block will be called after the user has closed the panel. The `result` will be `NSModalResponseOK`, `NSModalResponseCancel`, or if the panel fails to display, `NSModalResponseAbort`. */ - (void)beginWithCompletionHandler:(void (^)(NSModalResponse result))handler API_AVAILABLE(macos(10.6)); -/* NSSavePanel/NSOpenPanel: Presents the panel as an application modal window. It returns only after the user has closed the panel. The return value is NSModalResponseOK==1 or NSModalResponseCancel==0. +/** + `NSSavePanel`/`NSOpenPanel`: Presents the panel as an application modal window. Returns after the user has closed the panel. + - Returns: `NSModalResponseOK`, `NSModalResponseCancel` or if the panel fails to display, `NSModalResponseAbort`. */ - (NSModalResponse)runModal; @end +// MARK: - @protocol NSOpenSavePanelDelegate @optional -/* Optional - enabled URLs. - NSOpenPanel: Return YES to allow the 'url' to be enabled in the panel. Delegate implementations should be fast to avoid stalling the UI. Applications linked on Mac OS 10.7 and later should be prepared to handle non-file URL schemes. - NSSavePanel: This method is not called; all urls are always disabled. +/** Optional — Enabling URLs. + `NSSavePanel`: This method is not sent. All urls are always disabled. + `NSOpenPanel`: Return `YES` to allow the `url` to be enabled in the panel. Delegate implementations should be fast to avoid stalling the UI. Applications linked on Mac OS 10.7 and later should be prepared to handle non-file URL schemes. */ - (BOOL)panel:(id)sender shouldEnableURL:(NSURL *)url NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.6)); -/* Optional - URL validation for saving and opening files. - NSSavePanel: The method is called once by the save panel when the user chooses the Save button. The user is intending to save a file at 'url'. Return YES if the 'url' is a valid location to save to. Note that an item at 'url' may not physically exist yet, unless the user decided to overwrite an existing item. Return NO and fill in the 'outError' with a user displayable error message for why the 'url' is not valid. If a recovery option is provided by the error, and recovery succeeded, the panel will attempt to close again. - NSOpenPanel: The method is called once for each selected filename (or directory) when the user chooses the Open button. Return YES if the 'url' is acceptable to open. Return NO and fill in the 'outError' with a user displayable message for why the 'url' is not valid for opening. You would use this method over panel:shouldEnableURL: if the processing of the selected item takes a long time. If a recovery option is provided by the error, and recovery succeeded, the panel will attempt to close again. +/** Optional — URL validation for saving and opening files. + `NSSavePanel`: Sent once by the save panel when the user clicks the Save button. The user is intending to save a file at `url`. Return `YES` if the `url` is a valid location to save to. Return `NO` and return by reference `outError` with a user displayable error message for why the `url` is not valid. If a recovery option is provided by the error, and recovery succeeded, the panel will attempt to close again. + - Note: An item at `url` may not physically exist yet, unless the user decided to overwrite an existing item. + `NSOpenPanel`: Sent once for each selected filename (or directory) when the user chooses the Open button. Return `YES` if the `url` is acceptable to open. Return `NO` and return by reference `outError` with a user displayable message for why the `url` is not valid for opening. If a recovery option is provided by the error, and recovery succeeded, the panel will attempt to close again. + - Note: Implement this delegate method instead of `panel:shouldEnableURL:` if the processing of the selected item takes a long time. */ - (BOOL)panel:(id)sender validateURL:(NSURL *)url error:(NSError **)outError NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.6)); -/* Optional - Sent when the user has changed the selected directory to the directory located at 'url'. 'url' may be nil, if the current directory can't be represented by an NSURL object (ie: the media sidebar directory, or the "Computer"). +/** + Optional — Sent when the user selected the directory located at `url`. `url` may be `nil`. if the current directory can't be represented by an NSURL object (ie: the media sidebar directory, or the "Computer"). */ - (void)panel:(id)sender didChangeToDirectoryURL:(nullable NSURL *)url NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.6)); -/* Optional - Filename customization for the NSSavePanel. Allows the delegate to customize the filename entered by the user, before the extension is appended, and before the user is potentially asked to replace a file. +/** Optional — Filename customization for the NSSavePanel. Allows the delegate to customize the filename entered by the user, before the extension is appended, and before the user is potentially asked to replace a file. */ - (nullable NSString *)panel:(id)sender userEnteredFilename:(NSString *)filename confirmed:(BOOL)okFlag NS_SWIFT_UI_ACTOR; -/* Optional - Sent when the user clicks the disclosure triangle to expand or collapse the file browser while in NSOpenPanel. +/** Optional — Sent when the user clicks the disclosure triangle to expand or collapse the file browser while in NSOpenPanel. */ - (void)panel:(id)sender willExpand:(BOOL)expanding NS_SWIFT_UI_ACTOR; -/* Optional - Sent when the user has changed the selection. +/** Optional — Sent when the user has changed the selection. */ - (void)panelSelectionDidChange:(nullable id)sender NS_SWIFT_UI_ACTOR; +/** + `NSSavePanel`: Optional — Sent when the content type popup is displayed and the save panel needs the display name for a type. If `nil` is returned, the save panel will display type's `localizedDescription`. + `NSOpenPanel`: Not sent. +*/ +- (nullable NSString *)panel:(id)sender displayNameForType:(UTType *)type API_AVAILABLE(macos(15.0)) NS_SWIFT_UI_ACTOR; + +/** + `NSSavePanel`: Optional — Sent when the user changes the current type. + `NSOpenPanel`: Not sent. +*/ +- (void)panel:(id)sender didSelectType:(nullable UTType *)type API_AVAILABLE(macos(15.0)) NS_SWIFT_UI_ACTOR; + @end +// MARK: - + @interface NSObject(NSSavePanelDelegateDeprecated) - (BOOL)panel:(id)sender isValidFilename:(NSString *)filename API_DEPRECATED("Use -panel:validateURL:error: instead", macos(10.0,10.6)); @@ -203,23 +266,30 @@ enum { @end +// MARK: - + @interface NSSavePanel(NSDeprecated) - (NSString *)filename API_DEPRECATED("Use -URL instead", macos(10.0,10.6)); - (NSString *)directory API_DEPRECATED("Use -directoryURL instead", macos(10.0,10.6)); - (void)setDirectory:(nullable NSString *)path API_DEPRECATED("Use -setDirectoryURL: instead", macos(10.0,10.6)); -- (nullable NSString *)requiredFileType API_DEPRECATED("Use -allowedFileTypes instead", macos(10.0,10.6)); -- (void)setRequiredFileType:(nullable NSString *)type API_DEPRECATED("Use -setAllowedFileTypes: instead", macos(10.0,10.6)); -- (void)beginSheetForDirectory:(NSString *)path file:(nullable NSString *)name modalForWindow:(nullable NSWindow *)docWindow modalDelegate:(nullable id)delegate didEndSelector:(nullable SEL)didEndSelector contextInfo:(nullable void *)contextInfo API_DEPRECATED("Use beginSheetModalForWindow:completionHandler: instead. The following parameters are replaced by properties: 'path' is replaced by 'directoryURL' and 'name' by 'nameFieldStringValue'.", macos(10.0,10.6)); +- (nullable NSString *)requiredFileType API_DEPRECATED("Use -allowedContentTypes instead", macos(10.0,10.6)); +- (void)setRequiredFileType:(nullable NSString *)type API_DEPRECATED("Use -allowedContentTypes: instead", macos(10.0,10.6)); +- (void)beginSheetForDirectory:(nullable NSString *)path file:(nullable NSString *)name modalForWindow:(nullable NSWindow *)docWindow modalDelegate:(nullable id)delegate didEndSelector:(nullable SEL)didEndSelector contextInfo:(nullable void *)contextInfo API_DEPRECATED("Use beginSheetModalForWindow:completionHandler: instead. The following parameters are replaced by properties: 'path' is replaced by 'directoryURL' and 'name' by 'nameFieldStringValue'.", macos(10.0,10.6)); - (NSInteger)runModalForDirectory:(nullable NSString *)path file:(nullable NSString *)name API_DEPRECATED("Use -runModal instead. The following parameters are replaced by properties: 'path' is replaced by 'directoryURL' and 'name' by 'nameFieldStringValue'.", macos(10.0,10.6)); - (IBAction)selectText:(nullable id)sender API_DEPRECATED("Default implementation does nothing.", macos(10.0,10.3)); -/* - NSSavePanel: An array of NSStrings specifying the file types the user can save the file as. The file type can be a common file extension, or a UTI. A nil value indicates that any file type can be used. If the array is not nil and the array contains no items, an exception will be raised. If no extension is given by the user, the first item in the allowedFileTypes will be used as the extension for the save panel. If the user specifies a type not in the array, and 'allowsOtherFileTypes' is YES, they will be presented with another dialog when prompted to save. The default value is 'nil'. - NSOpenPanel: On versions less than 10.6, this property is ignored. For applications that link against 10.6 and higher, this property will determine which files should be enabled in the open panel. Using the deprecated methods to show the open panel (the ones that take a "types:" parameter) will overwrite this value, and should not be used. The allowedFileTypes can be changed while the panel is running (ie: from an accessory view). The file type can be a common file extension, or a UTI. This is also known as the "enabled file types". A nil value indicates that all files should be enabled. +/** + `NSSavePanel`: An array of NSStrings specifying the file types the user can save the file as. The file type can be a common file extension, or a UTI. A nil value indicates that any file type can be used. If the array is not nil and the array contains no items, an exception will be raised. If no extension is given by the user, the first item in the allowedFileTypes will be used as the extension for the save panel. If the user specifies a type not in the array, and 'allowsOtherFileTypes' is YES, they will be presented with another dialog when prompted to save. The default value is 'nil'. + `NSOpenPanel`: On versions less than 10.6, this property is ignored. For applications that link against 10.6 and higher, this property will determine which files should be enabled in the open panel. Using the deprecated methods to show the open panel (the ones that take a "types:" parameter) will overwrite this value, and should not be used. The allowedFileTypes can be changed while the panel is running (ie: from an accessory view). The file type can be a common file extension, or a UTI. This is also known as the "enabled file types". A nil value indicates that all files should be enabled. */ @property (nullable, copy) NSArray *allowedFileTypes API_DEPRECATED("Use -allowedContentTypes instead", macos(10.3,12.0)); @end +enum { + NSFileHandlingPanelCancelButton API_DEPRECATED_WITH_REPLACEMENT("NSModalResponseCancel", macos(10.0,10.13)) = NSModalResponseCancel, + NSFileHandlingPanelOKButton API_DEPRECATED_WITH_REPLACEMENT("NSModalResponseOK", macos(10.0,10.13)) = NSModalResponseOK, +}; + API_UNAVAILABLE_END NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSScreen.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSScreen.h index 0c687ffa..760c6b6c 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSScreen.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSScreen.h @@ -1,7 +1,7 @@ /* NSScreen.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSScrollView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSScrollView.h index 750ed00d..b13a45f6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSScrollView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSScrollView.h @@ -1,7 +1,7 @@ /* NSScrollView.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSScroller.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSScroller.h index 7ae88c2a..647904a0 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSScroller.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSScroller.h @@ -1,7 +1,7 @@ /* NSScroller.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubber.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubber.h index 0abca581..cd80fe75 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubber.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubber.h @@ -1,7 +1,7 @@ /* NSScrubber.h Application Kit - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubberItemView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubberItemView.h index 08bda554..2beac75f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubberItemView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubberItemView.h @@ -1,7 +1,7 @@ /* NSScrubberItemView.h Application Kit - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubberLayout.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubberLayout.h index 971321b1..9fa6c677 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubberLayout.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSScrubberLayout.h @@ -1,7 +1,7 @@ /* NSScrubberLayout.h Application Kit - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchField.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchField.h index 155470f2..dc1fe80a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchField.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchField.h @@ -1,7 +1,7 @@ /* NSSearchField.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchFieldCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchFieldCell.h index 574b67c2..d2aabf3b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchFieldCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchFieldCell.h @@ -1,7 +1,7 @@ /* NSSearchFieldCell.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchToolbarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchToolbarItem.h index 03cced3d..b7241dc3 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchToolbarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSearchToolbarItem.h @@ -1,7 +1,7 @@ /* NSSearchToolbarItem.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ @@ -16,27 +16,50 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST -// NSSearchToolbarItem provides the standard UI behavior for integrating a search field into the toolbar. +/** + `NSSearchToolbarItem` provides the standard UI behavior for integrating a search field into the toolbar. + */ API_AVAILABLE(macos(11.0)) API_UNAVAILABLE(macCatalyst) @interface NSSearchToolbarItem : NSToolbarItem -// An NSSearchField displayed in the toolbar item. While inside the toolbar item, the field properties and layout constraints are managed by the item. The field should be configured before assigned. The width constraint for the field could be updated after assigned. When set to nil, will reset to a search field with the default configuration. +/** + An `NSSearchField` displayed in the toolbar item. + While inside the toolbar item, the field properties and layout constraints are managed by the item. + The field should be configured before assigned. + The width constraint for the field could be updated after assigned. + When set to nil, will reset to a search field with the default configuration. + */ @property (strong) NSSearchField *searchField API_UNAVAILABLE(macCatalyst); -// The base view property is owned by the toolbar item and not available for customization. +/** + The base view property is owned by the toolbar item and not available for customization. + */ @property (nullable, strong) NSView *view NS_UNAVAILABLE; -// When YES, the cancel button in the field resigns the first responder status of the search field as clearing the contents. The default is YES. +/** + When YES, the cancel button in the field resigns the first responder status of the search field as clearing the contents. + The default is YES. + */ @property BOOL resignsFirstResponderWithCancel; -// The preferred width for the search field. This value is used to configure the search field width whenever it gets the keyboard focus.If specifying custom width constraints to the search field, they should not conflict with this value. +/** + The preferred width for the search field. + This value is used to configure the search field width whenever it gets the keyboard focus. + If specifying custom width constraints to the search field, they should not conflict with this value. + */ @property CGFloat preferredWidthForSearchField; -// With the following two methods, clients of this toolbar item API can explicitly control the search interaction session programatically. -// Starts a search interaction. If necessary, expands to the preferred width and moves the keyboard focus to the search field. +/** + Starts a search interaction. + If necessary, expands to the preferred width and moves the keyboard focus to the search field. + */ - (void)beginSearchInteraction; -// Ends a search interaction. Gives up the first responder by calling -endEditing: to the search field. Adjusts to the natural available width for the toolbar item if necessary. +/** + Ends a search interaction. + Gives up the first responder by calling `-endEditing:` to the search field. + Adjusts to the natural available width for the toolbar item if necessary. + */ - (void)endSearchInteraction; @end diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSecureTextField.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSecureTextField.h index a0eb4359..b4704b8e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSecureTextField.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSecureTextField.h @@ -1,7 +1,7 @@ /* NSSecureTextField.h Application Kit - Copyright (c) 1995-2023, Apple Inc. + Copyright (c) 1995-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSegmentedCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSegmentedCell.h index 86abe6b8..e3516e30 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSegmentedCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSegmentedCell.h @@ -1,7 +1,7 @@ /* NSSegmentedCell.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSegmentedControl.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSegmentedControl.h index 64dee2f4..708a0034 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSegmentedControl.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSegmentedControl.h @@ -1,7 +1,7 @@ /* NSSegmentedControl.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSShadow.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSShadow.h index 48f2c051..45f2d740 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSShadow.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSShadow.h @@ -2,7 +2,7 @@ /* NSShadow.h Application Kit - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingCollaborationModeRestriction.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingCollaborationModeRestriction.h new file mode 100644 index 00000000..b69c3eb3 --- /dev/null +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingCollaborationModeRestriction.h @@ -0,0 +1,84 @@ +// +/* + NSSharingCollaborationModeRestriction.h + Application Kit + Copyright (c) 2023-2024, Apple Inc. + All rights reserved. +*/ + +#import +#import +#import +#import + +NS_HEADER_AUDIT_BEGIN(nullability, sendability) +APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST + +/// Represents the types of sharing (collaborating on an item vs. sending a copy of the item) +/// The share picker supports up to two modes, each of which corresponds to one of these types +API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(ios, watchos, tvos) +typedef NS_ENUM(NSInteger, NSSharingCollaborationMode) { + NSSharingCollaborationModeSendCopy, + NSSharingCollaborationModeCollaborate, +}; + +/// Specifies whether a specific type of sharing should be disabled in the share picker, and if so, whether a reason should be provided for the disablement +/// If a reason is provided, the corresponding mode will show up as an option, but an alert explaining why it is disabled will show if it is chosen, and the mode will switch back to the supported one +/// Optionally, an extra alert button can be provided for a "recovery suggestion". This can give a user a way to fix whatever is causing this type of sharing to be disabled +/// If no reason is provided, the corresponding mode will not show up as an option +API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(ios, watchos, tvos) +NS_SWIFT_NAME(NSSharingServicePicker.CollaborationModeRestriction) +@interface NSSharingCollaborationModeRestriction : NSObject + +/// The type of sharing which should be disabled +@property (readonly) NSSharingCollaborationMode disabledMode; + +/// The title of the alert if a reason for disabling is provided +@property (readonly, copy, nullable) NSString *alertTitle; + +/// The message of the alert if a reason for disabling is provided +@property (readonly, copy, nullable) NSString *alertMessage; + +/// The label on the alert button which will simply confirm that the alert was viewed and dismiss it +/// Defaults to "OK" +@property (readonly, copy, nullable) NSString *alertDismissButtonTitle; + +/// The label on the recovery suggestion button if it is provided +@property (readonly, copy, nullable) NSString *alertRecoverySuggestionButtonTitle; + +/// The URL that is opened when the user selects the recovery suggestion, if any +@property (readonly, copy, nullable) NSURL *alertRecoverySuggestionButtonLaunchURL; + +/// - Parameters: +/// - disabledMode: The disabled type of sharing +- (instancetype)initWithDisabledMode:(NSSharingCollaborationMode)disabledMode; + +/// - Parameters: +/// - disabledMode: The disabled type of sharing +/// - alertTitle: The alert title +/// - alertMessage: The alert message +- (instancetype)initWithDisabledMode:(NSSharingCollaborationMode)disabledMode alertTitle:(NSString *)alertTitle alertMessage:(NSString *)alertMessage; + +/// - Parameters: +/// - disabledMode: The disabled type of sharing +/// - alertTitle: The alert title +/// - alertMessage: The alert message +/// - alertDismissButtonTitle: The label on the default alert button +- (instancetype)initWithDisabledMode:(NSSharingCollaborationMode)disabledMode alertTitle:(NSString *)alertTitle alertMessage:(NSString *)alertMessage alertDismissButtonTitle:(NSString *)alertDismissButtonTitle; + +/// - Parameters: +/// - disabledMode: The disabled type of sharing +/// - alertTitle: The alert title +/// - alertMessage: The alert message +/// - alertDismissButtonTitle: The label on the default alert button +/// - alertRecoverySuggestionButtonTitle: The label on the optional recovery suggestion button on the alert +/// - alertRecoverySuggestionButtonLaunchURL: The URL that is opened when the optional recovery suggestion button is selected +- (instancetype)initWithDisabledMode:(NSSharingCollaborationMode)disabledMode alertTitle:(NSString *)alertTitle alertMessage:(NSString *)alertMessage alertDismissButtonTitle:(NSString *)alertDismissButtonTitle alertRecoverySuggestionButtonTitle:(NSString *)alertRecoverySuggestionButtonTitle alertRecoverySuggestionButtonLaunchURL:(NSURL *)alertRecoverySuggestionButtonLaunchURL; + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +@end + +API_UNAVAILABLE_END +NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingService.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingService.h index f526c30d..7825c607 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingService.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingService.h @@ -1,7 +1,7 @@ /* NSSharingService.h Application Kit - Copyright (c) 2011-2023, Apple Inc. + Copyright (c) 2011-2024, Apple Inc. All rights reserved. */ @@ -12,7 +12,7 @@ #import #import -@class NSString, NSImage, NSMenuItem, NSView, NSError, NSWindow; +@class NSString, NSImage, NSMenuItem, NSView, NSError, NSWindow, NSSharingCollaborationModeRestriction; @class CKShare, CKContainer; NS_HEADER_AUDIT_BEGIN(nullability, sendability) @@ -313,6 +313,12 @@ API_AVAILABLE(macos(10.8)) */ - (void)sharingServicePicker:(NSSharingServicePicker *)sharingServicePicker didChooseSharingService:(nullable NSSharingService *)service; +/** + Used to specify the case where the share picker should not support some modes of sharing even if they are supported by the items being shared. + Disabling all possible modes at the same time is not supported behavior. + */ +- (nullable NSArray *)sharingServicePickerCollaborationModeRestrictions:(NSSharingServicePicker *)sharingServicePicker API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(ios, watchos, tvos); + @end API_UNAVAILABLE_END diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingServicePickerToolbarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingServicePickerToolbarItem.h index b3a7baa3..64387ea7 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingServicePickerToolbarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingServicePickerToolbarItem.h @@ -1,7 +1,7 @@ /* NSSharingServicePickerToolbarItem.h Application Kit - Copyright (c) 2019-2023, Apple Inc. + Copyright (c) 2019-2024, Apple Inc. All rights reserved. */ #import @@ -26,7 +26,10 @@ API_AVAILABLE(macos(10.15), ios(10.13)) #if !TARGET_OS_IPHONE @protocol NSSharingServicePickerToolbarItemDelegate @required -/* Return the items that represent the objects to be shared. They must conform to the protocol or be an NSItemProvider. (e.g. NSString, NSImage, NSURL, etc.). */ +/** + Return the items that represent the objects to be shared. + They must conform to the protocol or be an NSItemProvider. (e.g. NSString, NSImage, NSURL, etc.). + */ - (NSArray *)itemsForSharingServicePickerToolbarItem:(NSSharingServicePickerToolbarItem *)pickerToolbarItem NS_SWIFT_UI_ACTOR; @end diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingServicePickerTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingServicePickerTouchBarItem.h index 936c1292..aeec7862 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingServicePickerTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSharingServicePickerTouchBarItem.h @@ -1,7 +1,7 @@ /* NSSharingServicePickerTouchBarItem.h Application Kit - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSlider.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSlider.h index 5d8d47c6..8bb5bf80 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSlider.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSlider.h @@ -1,7 +1,7 @@ /* NSSlider.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderAccessory.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderAccessory.h index 51761873..5a2d88a3 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderAccessory.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderAccessory.h @@ -1,7 +1,7 @@ /* NSSliderAccessory.h Application Kit - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderCell.h index 4ecfc81f..ebd23027 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderCell.h @@ -1,7 +1,7 @@ /* NSSliderCell.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderTouchBarItem.h index aa771615..7af8c920 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSliderTouchBarItem.h @@ -1,7 +1,7 @@ /* NSSliderTouchBarItem.h Application Kit - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSound.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSound.h index 5ec33260..cec1e620 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSound.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSound.h @@ -1,7 +1,7 @@ /* NSSound.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSpeechRecognizer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSpeechRecognizer.h index c42fcaba..5930ff83 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSpeechRecognizer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSpeechRecognizer.h @@ -1,7 +1,7 @@ /* NSSpeechRecognizer.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSpeechSynthesizer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSpeechSynthesizer.h index d56cc2f5..cdafc5a4 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSpeechSynthesizer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSpeechSynthesizer.h @@ -1,7 +1,7 @@ /* NSSpeechSynthesizer.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellChecker.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellChecker.h index d259d303..89f220b2 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellChecker.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellChecker.h @@ -1,7 +1,7 @@ /* NSSpellChecker.h Application Kit - Copyright (c) 1990-2023, Apple Inc. + Copyright (c) 1990-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellProtocol.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellProtocol.h index 265509e9..0c8914ed 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellProtocol.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellProtocol.h @@ -1,7 +1,7 @@ /* NSSpellProtocol.h Application Kit - Copyright (c) 1990-2023, Apple Inc. + Copyright (c) 1990-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellServer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellServer.h index 88e98185..9eb5c51d 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellServer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSpellServer.h @@ -1,7 +1,7 @@ /* NSSpellServer.h Application Kit - Copyright (c) 1990-2023, Apple Inc. + Copyright (c) 1990-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitView.h index cd29495e..a93dd47e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitView.h @@ -1,7 +1,7 @@ /* NSSplitView.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitViewController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitViewController.h index 76743827..f3f1ddd0 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitViewController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitViewController.h @@ -1,7 +1,7 @@ /* NSSplitViewController.h Application Kit - Copyright (c) 2014-2023, Apple Inc. + Copyright (c) 2014-2024, Apple Inc. All rights reserved. */ @@ -9,7 +9,6 @@ #import #import #import -#import #import NS_HEADER_AUDIT_BEGIN(nullability, sendability) diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitViewItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitViewItem.h index 6726008d..8ede70bc 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitViewItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSplitViewItem.h @@ -1,7 +1,7 @@ /* NSSplitViewItem.h Application Kit - Copyright (c) 2014-2023, Apple Inc. + Copyright (c) 2014-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSStackView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSStackView.h index 6fa02ce5..08786868 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSStackView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSStackView.h @@ -1,7 +1,7 @@ /* NSStackView.h Application Kit - Copyright (c) 2012-2023, Apple Inc. + Copyright (c) 2012-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusBar.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusBar.h index 4fc1db5e..1c45b555 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusBar.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusBar.h @@ -1,7 +1,7 @@ /* NSStatusBar.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusBarButton.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusBarButton.h index 8c7b1554..6b64ae4d 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusBarButton.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusBarButton.h @@ -1,7 +1,7 @@ /* NSStatusBarButton.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusItem.h index 67adc28e..c527b8a6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSStatusItem.h @@ -1,7 +1,7 @@ /* NSStatusItem.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSStepper.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSStepper.h index 4b3895cc..fa4fb6d2 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSStepper.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSStepper.h @@ -1,7 +1,7 @@ /* NSStepper.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSStepperCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSStepperCell.h index c3d93d4b..4018aac6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSStepperCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSStepperCell.h @@ -1,7 +1,7 @@ /* NSStepperCell.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSStepperTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSStepperTouchBarItem.h index 44213e42..c965d8b4 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSStepperTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSStepperTouchBarItem.h @@ -1,7 +1,7 @@ /* NSStepperTouchBarItem.h Application Kit - Copyright (c) 1995-2023, Apple Inc. + Copyright (c) 1995-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSStoryboard.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSStoryboard.h index 63228545..d64dcd88 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSStoryboard.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSStoryboard.h @@ -1,7 +1,7 @@ /* NSStoryboard.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSStoryboardSegue.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSStoryboardSegue.h index 4089b963..c7a96ef7 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSStoryboardSegue.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSStoryboardSegue.h @@ -1,7 +1,7 @@ /* NSStoryboardSegue.h Application Kit - Copyright (c) 2013-2023, Apple Inc. + Copyright (c) 2013-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSStringDrawing.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSStringDrawing.h index 9feda4a5..27ede754 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSStringDrawing.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSStringDrawing.h @@ -1,20 +1,28 @@ -#if !__has_include() +#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include() +#include + +#if !TARGET_OS_IPHONE +#import + /* NSStringDrawing.h - Copyright (c) 1994-2023, Apple Inc. All rights reserved. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ -#import +#import +#import #import +@class NSAttributedString; +@class NSString; @class NSStringDrawingContext; NS_HEADER_AUDIT_BEGIN(nullability, sendability) -#if !TARGET_OS_IPHONE -// When attributes=nil, the methods declared here uses the default behavior for each attribute described in . When stringDrawingContext=nil, it's equivalent of passing the default instance initialized with [[NSStringDrawingContext alloc] init]. +// When attributes=nil, the methods declared here uses the default behavior for each attribute described in . When stringDrawingContext=nil, it's equivalent of passing the default instance initialized with [[NSStringDrawingContext alloc] init]. -API_AVAILABLE(macos(10.11), ios(6.0), watchos(2.0), tvos(9.0)) @interface NSStringDrawingContext : NSObject +APPKIT_EXTERN API_AVAILABLE(macos(10.11), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)) +@interface NSStringDrawingContext : NSObject // Minimum scale factor for drawWithRect:options:context: and boundingRectWithSize:options:context: methods. If this property is set, the extended string drawing methods will attempt to draw the attributed string in the given bounds by proportionally scaling the font(s) in the attributed string @property CGFloat minimumScaleFactor; @@ -23,45 +31,62 @@ API_AVAILABLE(macos(10.11), ios(6.0), watchos(2.0), tvos(9.0)) @interface NSStri @property (readonly) CGFloat actualScaleFactor; // bounds of the string drawn by the previous invocation of drawWithRect:options:context: -@property (readonly) NSRect totalBounds; +@property (readonly) CGRect totalBounds; @end @interface NSString(NSStringDrawing) -- (NSSize)sizeWithAttributes:(nullable NSDictionary *)attrs API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); -- (void)drawAtPoint:(NSPoint)point withAttributes:(nullable NSDictionary *)attrs API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); -- (void)drawInRect:(NSRect)rect withAttributes:(nullable NSDictionary *)attrs API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); +- (CGSize)sizeWithAttributes:(nullable NSDictionary *)attrs API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +- (void)drawAtPoint:(CGPoint)point withAttributes:(nullable NSDictionary *)attrs API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +- (void)drawInRect:(CGRect)rect withAttributes:(nullable NSDictionary *)attrs API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); @end @interface NSAttributedString(NSStringDrawing) -- (NSSize)size API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); -- (void)drawAtPoint:(NSPoint)point API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); -- (void)drawInRect:(NSRect)rect API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); +- (CGSize)size API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); +- (void)drawAtPoint:(CGPoint)point API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); +- (void)drawInRect:(CGRect)rect API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); @end typedef NS_OPTIONS(NSInteger, NSStringDrawingOptions) { NSStringDrawingUsesLineFragmentOrigin = 1 << 0, // The specified origin is the line fragment origin, not the base line origin NSStringDrawingUsesFontLeading = 1 << 1, // Uses the font leading for calculating line heights NSStringDrawingUsesDeviceMetrics = 1 << 3, // Uses image glyph bounds instead of typographic bounds - NSStringDrawingTruncatesLastVisibleLine API_AVAILABLE(macos(10.5), ios(6.0), watchos(2.0), tvos(9.0)) = 1 << 5, // Truncates and adds the ellipsis character to the last visible line if the text doesn't fit into the bounds specified. Ignored if NSStringDrawingUsesLineFragmentOrigin is not also set. - + NSStringDrawingTruncatesLastVisibleLine API_AVAILABLE(macos(10.5), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 1 << 5, // Truncates and adds the ellipsis character to the last visible line if the text doesn't fit into the bounds specified. Ignored if NSStringDrawingUsesLineFragmentOrigin is not also set. NSStringDrawingDisableScreenFontSubstitution API_DEPRECATED("", macos(10.0,10.11)) = (1 << 2), - NSStringDrawingOneShot API_DEPRECATED("", macos(10.0,10.11)) = (1 << 4) -} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); + NSStringDrawingOneShot API_DEPRECATED("", macos(10.0,10.11)) = (1 << 4), +} +NS_SWIFT_NAME(NSString.DrawingOptions) +API_AVAILABLE(macos(10.0), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); // NOTE: All of the following methods will default to drawing on a baseline, limiting drawing to a single line. // To correctly draw and size multi-line text, pass NSStringDrawingUsesLineFragmentOrigin in the options parameter. @interface NSString (NSExtendedStringDrawing) -- (void)drawWithRect:(NSRect)rect options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary *)attributes context:(nullable NSStringDrawingContext *)context API_AVAILABLE(macos(10.11), ios(7.0), watchos(2.0), tvos(9.0)); -- (NSRect)boundingRectWithSize:(NSSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary *)attributes context:(nullable NSStringDrawingContext *)context API_AVAILABLE(macos(10.11), ios(7.0), watchos(2.0), tvos(9.0)); +- (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary *)attributes context:(nullable NSStringDrawingContext *)context API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary *)attributes context:(nullable NSStringDrawingContext *)context API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); @end @interface NSAttributedString (NSExtendedStringDrawing) -- (void)drawWithRect:(NSRect)rect options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context API_AVAILABLE(macos(10.11), ios(6.0), watchos(2.0), tvos(9.0)); -- (NSRect)boundingRectWithSize:(NSSize)size options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context API_AVAILABLE(macos(10.11), ios(6.0), watchos(2.0), tvos(9.0)); +- (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context API_AVAILABLE(macos(10.11), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); +- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context API_AVAILABLE(macos(10.11), ios(6.0), tvos(9.0), watchos(2.0), visionos(1.0)); @end +NS_HEADER_AUDIT_END(nullability, sendability) +#endif // !TARGET_OS_IPHONE +#else +#import +#endif + +#import +#import + +@class NSAttributedString; +@class NSString; +@class NSStringDrawingContext; + +#if !TARGET_OS_IPHONE +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + /************************ Deprecated ************************/ // Following NSStringDrawing methods are soft deprecated starting with OS X 10.11. It will be officially deprecated in a future release. Use corresponding API with NSStringDrawingContext instead @interface NSString (NSStringDrawingDeprecated) @@ -75,9 +100,5 @@ typedef NS_OPTIONS(NSInteger, NSStringDrawingOptions) { - (NSRect)boundingRectWithSize:(NSSize)size options:(NSStringDrawingOptions)options; // Use -boundingRectWithSize:options:context: instead @end -#endif // !TARGET_OS_IPHONE NS_HEADER_AUDIT_END(nullability, sendability) -#else -#import -#endif - +#endif // !TARGET_OS_IPHONE diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSSwitch.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSSwitch.h index e7a92f05..2da634bf 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSSwitch.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSSwitch.h @@ -1,7 +1,7 @@ /* NSSwitch.h Application Kit - Copyright (c) 2019-2023, Apple Inc. + Copyright (c) 2019-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTabView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTabView.h index 9b47f0a7..6a96faed 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTabView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTabView.h @@ -1,7 +1,7 @@ /* NSTabView.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTabViewController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTabViewController.h index c4a4fe03..924ea704 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTabViewController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTabViewController.h @@ -1,7 +1,7 @@ /* NSTabViewController.h Application Kit - Copyright (c) 2014-2023, Apple Inc. + Copyright (c) 2014-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTabViewItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTabViewItem.h index e8e691c5..7279766d 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTabViewItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTabViewItem.h @@ -1,7 +1,7 @@ /* NSTabViewItem.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableCellView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableCellView.h index 83840d1a..a04077de 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableCellView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableCellView.h @@ -1,7 +1,7 @@ /* NSTableCellView.h Application Kit - Copyright (c) 2009-2023, Apple Inc. + Copyright (c) 2009-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableColumn.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableColumn.h index 03788340..d0f2aa68 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableColumn.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableColumn.h @@ -1,7 +1,7 @@ /* NSTableColumn.h Application Kit - Copyright (c) 1995-2023, Apple Inc. + Copyright (c) 1995-2024, Apple Inc. All rights reserved. */ @@ -23,6 +23,7 @@ typedef NS_OPTIONS(NSUInteger, NSTableColumnResizingOptions) { NSTableColumnUserResizingMask = ( 1 << 1 ), // The user can resize this column manually. }; +NS_SWIFT_UI_ACTOR @interface NSTableColumn : NSObject /* Designated initializer for NSTableColumns. Prior to 10.7, the parameter type was 'id', but it is now an 'NSString *'. See also -setIdentifier: and -identifier, and NSUserInterfaceItemIdentification. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableHeaderCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableHeaderCell.h index 0c17e777..e3895583 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableHeaderCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableHeaderCell.h @@ -1,7 +1,7 @@ /* NSTableHeaderCell.h Application Kit - Copyright (c) 1995-2023, Apple Inc. + Copyright (c) 1995-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableHeaderView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableHeaderView.h index a78b29ef..517196a0 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableHeaderView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableHeaderView.h @@ -1,7 +1,7 @@ /* NSTableHeaderView.h Application Kit - Copyright (c) 1995-2023, Apple Inc. + Copyright (c) 1995-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableRowView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableRowView.h index 12d580f4..7974948d 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableRowView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableRowView.h @@ -1,7 +1,7 @@ /* NSTableRowView.h Application Kit - Copyright (c) 2008-2023, Apple Inc. + Copyright (c) 2008-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableView.h index 2224c692..8b72a43e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableView.h @@ -1,7 +1,7 @@ /* NSTableView.h Application Kit - Copyright (c) 1995-2023, Apple Inc. + Copyright (c) 1995-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableViewDiffableDataSource.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableViewDiffableDataSource.h index e55433ff..ed36f74a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableViewDiffableDataSource.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableViewDiffableDataSource.h @@ -1,7 +1,7 @@ /* NSTableViewDiffableDataSource.h Application Kit - Copyright (c) 2019-2023, Apple Inc. + Copyright (c) 2019-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableViewRowAction.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableViewRowAction.h index b5a96259..62325fe1 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTableViewRowAction.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTableViewRowAction.h @@ -1,7 +1,7 @@ /* NSTableViewRowAction.h Application Kit - Copyright (c) 2014-2023, Apple Inc. + Copyright (c) 2014-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSText.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSText.h index 999af31a..15d6dbef 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSText.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSText.h @@ -1,14 +1,38 @@ -#if !__has_include() +#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include() +#include + +#if !TARGET_OS_IPHONE +#import +#import + /* NSText.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + +#if !__NSWRITING_DIRECTION_SHARED_SECTION__ +#define __NSWRITING_DIRECTION_SHARED_SECTION__ 1 +#pragma mark NSWritingDirection +typedef NS_ENUM(NSInteger, NSWritingDirection) { + NSWritingDirectionNatural = -1, // Determines direction using the Unicode Bidi Algorithm rules P2 and P3 + NSWritingDirectionLeftToRight = 0, // Left to right writing direction + NSWritingDirectionRightToLeft = 1 // Right to left writing direction +} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0), visionos(1.0)); +#endif // !__NSWRITING_DIRECTION_SHARED_SECTION__ + +NS_HEADER_AUDIT_END(nullability, sendability) +#endif // !TARGET_OS_IPHONE +#else +#import +#endif + +#import #import #import -#import @class NSColor, NSFont, NSNotification; @protocol NSTextDelegate; @@ -17,8 +41,8 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) #if !TARGET_OS_IPHONE -#if !__NSTEXT_SHARED_SECTION__ -#define __NSTEXT_SHARED_SECTION__ 1 +#if !__NSTEXT_ALIGNMENT_SHARED_SECTION__ +#define __NSTEXT_ALIGNMENT_SHARED_SECTION__ 1 #pragma mark NSTextAlignment typedef NS_ENUM(NSInteger, NSTextAlignment) { NSTextAlignmentLeft = 0, // Visually left aligned @@ -31,15 +55,8 @@ typedef NS_ENUM(NSInteger, NSTextAlignment) { #endif NSTextAlignmentJustified = 3, // Fully-justified. The last line in a paragraph is natural-aligned. NSTextAlignmentNatural = 4 // Indicates the default alignment for script -} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); - -#pragma mark NSWritingDirection -typedef NS_ENUM(NSInteger, NSWritingDirection) { - NSWritingDirectionNatural = -1, // Determines direction using the Unicode Bidi Algorithm rules P2 and P3 - NSWritingDirectionLeftToRight = 0, // Left to right writing direction - NSWritingDirectionRightToLeft = 1 // Right to left writing direction -} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0)); -#endif // __NSTEXT_SHARED_SECTION__ +} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0), visionos(1.0)); +#endif // !__NSTEXT_ALIGNMENT_SHARED_SECTION__ #endif // !TARGET_OS_IPHONE @@ -195,7 +212,5 @@ static const NSTextAlignment NSCenterTextAlignment API_DEPRECATED_WITH_REPLACEME static const NSTextAlignment NSJustifiedTextAlignment API_DEPRECATED_WITH_REPLACEMENT("NSTextAlignmentJustified", macos(10.0,10.12)) = NSTextAlignmentJustified; static const NSTextAlignment NSNaturalTextAlignment API_DEPRECATED_WITH_REPLACEMENT("NSTextAlignmentNatural", macos(10.0,10.12)) = NSTextAlignmentNatural; #endif // !TARGET_OS_IPHONE + NS_HEADER_AUDIT_END(nullability, sendability) -#else -#import -#endif diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAlternatives.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAlternatives.h index 10003856..ed2ca5ff 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAlternatives.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAlternatives.h @@ -2,7 +2,7 @@ /* NSTextAlternatives.h Application Kit - Copyright (c) 2011-2023, Apple Inc. + Copyright (c) 2011-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAttachment.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAttachment.h index a7da9bcf..d07b636b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAttachment.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAttachment.h @@ -6,7 +6,7 @@ /* NSTextAttachment.h - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -16,8 +16,8 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) enum { - NSAttachmentCharacter API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos) = 0xFFFC // Replacement character is used for attachments -}; + NSAttachmentCharacter API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) = 0xFFFC // Replacement character is used for attachments +} API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); @class NSTextContainer; @class NSLayoutManager; @@ -31,38 +31,26 @@ enum { @protocol NSTextAttachmentCell; -// This protocol defines the interface to attachment objects from NSLayoutManager -@protocol NSTextAttachmentContainer -// This protocol is available only for Objective-C 2 or later architecture - -// Returns the image object rendered by NSLayoutManager at imageBounds inside textContainer. It should return an image appropriate for the target rendering context derived by arguments to this method. The NSTextAttachment implementation returns -image when non-nil. If -image==nil, it returns an image based on -contents and -fileType properties. -- (nullable NSImage *)imageForBounds:(CGRect)imageBounds textContainer:(nullable NSTextContainer *)textContainer characterIndex:(NSUInteger)charIndex API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); - - -// Returns the layout bounds to the layout manager. The bounds origin is interpreted to match position inside lineFrag. The NSTextAttachment implementation returns -bounds if not CGRectZero; otherwise, it derives the bounds value from -[image size]. Conforming objects can implement more sophisticated logic for negotiating the frame size based on the available container space and proposed line fragment rect. -- (CGRect)attachmentBoundsForTextContainer:(nullable NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); - -@end - // This protocol defines the interface to attachment objects from NSTextLayoutManager +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0)) @protocol NSTextAttachmentLayout // Returns the image object rendered at bounds inside textContainer. It should return an image appropriate for the target rendering context derived by arguments to this method. The NSTextAttachment implementation returns -image when non-nil. If -image==nil, it returns an image based on -contents and -fileType properties. -- (nullable NSImage *)imageForBounds:(CGRect)bounds attributes:(NSDictionary *)attributes location:(id )location textContainer:(nullable NSTextContainer *)textContainer API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +- (nullable NSImage *)imageForBounds:(CGRect)bounds attributes:(NSDictionary *)attributes location:(id )location textContainer:(nullable NSTextContainer *)textContainer API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0)); // Returns the layout bounds. The bounds origin is interpreted to match position inside proposedLineFragment. The NSTextAttachment implementation returns -bounds if not CGRectZero; otherwise, it derives the bounds value from image.size. Conforming objects can implement more sophisticated logic for negotiating the frame size based on the available container space and proposed line fragment rect. -- (CGRect)attachmentBoundsForAttributes:(NSDictionary *)attributes location:(id )location textContainer:(nullable NSTextContainer *)textContainer proposedLineFragment:(CGRect)proposedLineFragment position:(CGPoint)position API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +- (CGRect)attachmentBoundsForAttributes:(NSDictionary *)attributes location:(id )location textContainer:(nullable NSTextContainer *)textContainer proposedLineFragment:(CGRect)proposedLineFragment position:(CGPoint)position API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0)); // Returns the text attachment view provider corresponding to -fileType. The default implementation queries the text attachment view provider class via +[NSTextAttachment textAttachmentViewProviderClassForFileType:]. When non-nil, it instantiates a view, then, fills properties declared in NSTextAttachmentViewProvider if implemented -- (nullable NSTextAttachmentViewProvider *)viewProviderForParentView:(nullable NSView *)parentView location:(id )location textContainer:(nullable NSTextContainer *)textContainer API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +- (nullable NSTextAttachmentViewProvider *)viewProviderForParentView:(nullable NSView *)parentView location:(id )location textContainer:(nullable NSTextContainer *)textContainer API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); @end -API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface NSTextAttachment : NSObject +API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) @interface NSTextAttachment : NSObject /**************************** Initialization ****************************/ // Designated initializer. Both arguments can be nil. When contentData==nil || uti==nil, the receiver is consider to be an attachment without document contents. In this case, the NSAttributedString methods writing external file format tries to save the return value of -[NSTextAttachment image] instead. -- (instancetype)initWithData:(nullable NSData *)contentData ofType:(nullable NSString *)uti NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); +- (instancetype)initWithData:(nullable NSData *)contentData ofType:(nullable NSString *)uti NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // Previous designated initializer on OS X. This method invokes -initWithData:ofType: with nil arguments, then, fills -fileWrapper property. - (instancetype)initWithFileWrapper:(nullable NSFileWrapper *)fileWrapper; @@ -71,16 +59,16 @@ API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interf /**************************** Content properties ****************************/ // These two properties define the contents for the text attachment. Modifying these properties have a side effect of invalidating -image and -fileWrapper properties. -fileType is an UTI describing the format for -contents. -@property (nullable, copy) NSData *contents API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -@property (nullable, copy) NSString *fileType API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); +@property (nullable, copy) NSData *contents API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +@property (nullable, copy) NSString *fileType API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); /**************************** Rendering/layout properties ****************************/ // Image representing the text attachment contents. Modifying this property invalidates -contents, -fileType, and -FileWrapper properties. -@property (nullable, strong) NSImage *image API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); +@property (nullable, strong) NSImage *image API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); // Defines the layout bounds of the receiver's graphical representation in the text coordinate system. The origin is at the glyph location on the text baseline. The default value is CGRectZero. -@property CGRect bounds API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); +@property CGRect bounds API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); /**************************** Non-image contents properties ****************************/ @@ -88,31 +76,34 @@ API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interf @property (nullable, strong) NSFileWrapper *fileWrapper; // The cell which handles user interaction. By default an instance of NSTextAttachmentCell is used. -@property (nullable, strong) id attachmentCell API_AVAILABLE(macos(10.0)) API_UNAVAILABLE(ios, watchos, tvos); +@property (nullable, strong) id attachmentCell API_AVAILABLE(macos(10.0)) API_UNAVAILABLE(ios, watchos, tvos, visionos); #pragma mark Advanced Layout Properties // Layout padding before and after the text attachment bounds. The layout and rendering bounds X origin gets inset by the padding value. This affects the relationship between the text attachment bounds. 0.0 by default -@property CGFloat lineLayoutPadding API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +@property CGFloat lineLayoutPadding API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0)); #pragma mark View-based attachments // Factory methods for defining the mapping between UTI and text attachment view provider class -+ (nullable Class)textAttachmentViewProviderClassForFileType:(NSString *)fileType API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); -+ (void)registerTextAttachmentViewProviderClass:(Class)textAttachmentViewProviderClass forFileType:(NSString *)fileType API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); ++ (nullable Class)textAttachmentViewProviderClassForFileType:(NSString *)fileType API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); ++ (void)registerTextAttachmentViewProviderClass:(Class)textAttachmentViewProviderClass forFileType:(NSString *)fileType API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); // When YES, the text attachment tries to use a text attachment view returned by -viewProviderForParentView:location:textContainer:. YES by default -@property BOOL allowsTextAttachmentView API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +@property BOOL allowsTextAttachmentView API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); // Returns YES if the text attachment is configured to use text attachment views. By default, it checks -allowsTextAttachmentView, +textAttachmentViewClassForFileType:, and its contents -@property (readonly) BOOL usesTextAttachmentView API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +@property (readonly) BOOL usesTextAttachmentView API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); @end @interface NSAttributedString (NSAttributedStringAttachmentConveniences) // A convenience method for creating an attributed string containing attachment using NSAttachmentCharacter as the base character. -+ (NSAttributedString *)attributedStringWithAttachment:(NSTextAttachment *)attachment API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); ++ (NSAttributedString *)attributedStringWithAttachment:(NSTextAttachment *)attachment API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); + +// A convenience method for creating an attributed string containing an attachment with attributes using NSAttachmentCharacter as the base character. ++ (instancetype)attributedStringWithAttachment:(NSTextAttachment *)attachment attributes:(NSDictionary *)attributes API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); @end -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextAttachmentViewProvider : NSObject - (instancetype)initWithTextAttachment:(NSTextAttachment *)textAttachment parentView:(nullable NSView *)parentView textLayoutManager:(nullable NSTextLayoutManager *)textLayoutManager location:(id )location NS_DESIGNATED_INITIALIZER; @@ -145,6 +136,24 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) @end +// This protocol defines the interface to attachment objects from NSLayoutManager +API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos) +@protocol NSTextAttachmentContainer +// This protocol is available only for Objective-C 2 or later architecture + +// Returns the image object rendered by NSLayoutManager at imageBounds inside textContainer. It should return an image appropriate for the target rendering context derived by arguments to this method. The NSTextAttachment implementation returns -image when non-nil. If -image==nil, it returns an image based on -contents and -fileType properties. +- (nullable NSImage *)imageForBounds:(CGRect)imageBounds textContainer:(nullable NSTextContainer *)textContainer characterIndex:(NSUInteger)charIndex API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); + + +// Returns the layout bounds to the layout manager. The bounds origin is interpreted to match position inside lineFrag. The NSTextAttachment implementation returns -bounds if not CGRectZero; otherwise, it derives the bounds value from -[image size]. Conforming objects can implement more sophisticated logic for negotiating the frame size based on the available container space and proposed line fragment rect. +- (CGRect)attachmentBoundsForTextContainer:(nullable NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); + +@end + +API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos) +@interface NSTextAttachment(NSTextAttachment_Deprecation) +@end + NS_HEADER_AUDIT_END(nullability, sendability) #endif // !TARGET_OS_IPHONE #else diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAttachmentCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAttachmentCell.h index 0781b40f..a35fe34c 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAttachmentCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextAttachmentCell.h @@ -1,6 +1,6 @@ /* NSTextAttachmentCell.h - Copyright (c) 2021-2023, Apple Inc. + Copyright (c) 2021-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextCheckingClient.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextCheckingClient.h index d67e4ac5..60d33b21 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextCheckingClient.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextCheckingClient.h @@ -1,7 +1,7 @@ /* NSTextCheckingClient.h Application Kit - Copyright (c) 2018-2023, Apple Inc. + Copyright (c) 2018-2024, Apple Inc. All rights reserved. */ @@ -25,6 +25,37 @@ typedef NS_ENUM(NSInteger, NSTextInputTraitType) { NSTextInputTraitTypeYes, }; +typedef NS_ENUM(NSInteger, NSWritingToolsBehavior) { + // Writing Tools will ignore this view + NSWritingToolsBehaviorNone = -1, + + // System-defined behavior, may resolve to `None`, `Complete`, or `Limited` + NSWritingToolsBehaviorDefault = 0, + + // The complete inline-editing experience will be provided if possible. + NSWritingToolsBehaviorComplete, + + // The limited, overlay-panel experience will be provided if possible. + NSWritingToolsBehaviorLimited, +} API_AVAILABLE(macos(15.0)); + +typedef NS_OPTIONS(NSUInteger, NSWritingToolsResultOptions) { + // System—defined behavior + NSWritingToolsResultDefault = 0, + + // Writing Tools will provide plain text in proofreading suggestions or rewrites + NSWritingToolsResultPlainText = 1 << 0, + + // as well as plain text, Writing Tools will provide text attributes in proofreading suggestions or rewrites that are natively supported or known to be easily adopted (such as lists) + NSWritingToolsResultRichText = 1 << 1, + + // implies `RichText`, and Writing Tools may provide attributes for list layout + NSWritingToolsResultList = 1 << 2, + + // implies `RichText`, and Writing Tools may provide attributes for tabular layout + NSWritingToolsResultTable = 1 << 3, +} API_AVAILABLE(macos(15.0)); + @protocol NSTextInputTraits @optional @property NSTextInputTraitType autocorrectionType; @@ -38,6 +69,10 @@ typedef NS_ENUM(NSInteger, NSTextInputTraitType) { @property NSTextInputTraitType linkDetectionType; @property NSTextInputTraitType textCompletionType; @property NSTextInputTraitType inlinePredictionType API_AVAILABLE(macos(14.0)); +@property NSTextInputTraitType mathExpressionCompletionType API_AVAILABLE(macos(15.0)); + +@property NSWritingToolsBehavior writingToolsBehavior API_AVAILABLE(macos(15.0)); +@property NSWritingToolsResultOptions allowedWritingToolsResultOptions API_AVAILABLE(macos(15.0)); @end @protocol NSTextCheckingClient diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextCheckingController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextCheckingController.h index dc80d287..6b016a40 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextCheckingController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextCheckingController.h @@ -1,7 +1,7 @@ /* NSTextCheckingController.h Application Kit - Copyright (c) 2018-2023, Apple Inc. + Copyright (c) 2018-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContainer.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContainer.h index a787a31c..3a0d9779 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContainer.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContainer.h @@ -1,51 +1,40 @@ -#if !__has_include() +#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include() +#include + +#if !TARGET_OS_IPHONE +#import + /* NSTextContainer.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ - -#import +#import #import -#import -@class NSBezierPath; @class NSTextLayoutManager; NS_HEADER_AUDIT_BEGIN(nullability, sendability) -#if !TARGET_OS_IPHONE -API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) @interface NSTextContainer : NSObject +APPKIT_EXTERN API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos) +@interface NSTextContainer : NSObject /**************************** Initialization ****************************/ -- (instancetype)initWithSize:(NSSize)size NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)); +- (instancetype)initWithSize:(CGSize)size NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); - (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; - -/**************************** Layout ****************************/ - -// Accessor for the NSLayoutManager object owning the receiver. -// Avoid assigning a layout manager directly through this property. Adding a text container to a layout manager through -[NSLayoutManager addTextContainer:] will use the property for assigning the new layout manager. -@property (nullable, assign) NSLayoutManager *layoutManager; - -// This method should be used instead of the primitive -setLayoutManager: if you need to replace a container's layoutManager with a new one leaving the rest of the web intact. All the NSTextContainers on the old NSLayoutManager get transferred to the new one. This method deals with all the work of making sure the containers don't get deallocated and removing the old layoutManager from the text storage and replacing it with the new one. -- (void)replaceLayoutManager:(NSLayoutManager *)newLayoutManager API_AVAILABLE(macos(10.0), ios(9.0), tvos(9.0)); - // Returns NSTextLayoutManager owning the text container. When non-nil, -layoutManager should be nil. -@property (weak, nullable, readonly) NSTextLayoutManager *textLayoutManager API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +@property (weak, nullable, readonly) NSTextLayoutManager *textLayoutManager API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); /************************* Container shape properties *************************/ // Default value: CGSizeZero Defines the maximum size for the layout area returned from -lineFragmentRectForProposedRect:writingDirection:remainingRect:. 0.0 and less means no limitation. -@property NSSize size API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)); - -// Default value : empty array An array of NSBezierPath representing the exclusion paths inside the receiver's bounding rect. -@property (copy) NSArray *exclusionPaths API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)); +@property CGSize size API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); // Default value: NSLineBreakByWordWrapping The line break mode defines the behavior of the last line inside the text container. -@property NSLineBreakMode lineBreakMode API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)); +@property NSLineBreakMode lineBreakMode API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); /************************* Layout constraint properties *************************/ @@ -53,15 +42,15 @@ API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) @interface NSTextContainer : NSO @property CGFloat lineFragmentPadding; // Default value: 0 (no limit) The maximum number of lines that can be stored in the receiver. This value is utilized by NSLayoutManager for determining the maximum number of lines associated with the text container. -@property NSUInteger maximumNumberOfLines API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)); +@property NSUInteger maximumNumberOfLines API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); /**************************** Line fragments ****************************/ // Returns the bounds of a line fragment rect inside the receiver for proposedRect. This is the intersection of proposedRect and the receiver's bounding rect defined by -size property. The regions defined by -exclusionPaths property are excluded from the return value. charIndex is the character location inside the text storage for the line fragment being processed. It is possible that proposedRect can be divided into multiple line fragments due to exclusion paths. In that case, remainingRect returns the remainder that can be passed in as the proposed rect for the next iteration. baseWritingDirection determines the direction of advancement for line fragments inside a visual horizontal line. The values passed into the method are either NSWritingDirectionLeftToRight or NSWritingDirectionRightToLeft. This method can be overridden by subclasses for further text container region customization. -- (NSRect)lineFragmentRectForProposedRect:(NSRect)proposedRect atIndex:(NSUInteger)characterIndex writingDirection:(NSWritingDirection)baseWritingDirection remainingRect:(nullable NSRect *)remainingRect API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0)); +- (CGRect)lineFragmentRectForProposedRect:(CGRect)proposedRect atIndex:(NSUInteger)characterIndex writingDirection:(NSWritingDirection)baseWritingDirection remainingRect:(nullable CGRect *)remainingRect API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); // Returns YES if the receiver is a rectangular shape defined simply by -size. TextKit utilizes this information for enabling various layout optimizations. NSLayoutManager disables non-contiguous layout when this property is NO. The default implementation returns NO when -exclusionPaths has 1 or more items, -maximumNumberOfLines is not 0, or -lineFragmentRectForProposedRect:atIndex:writingDirection:remainingRect: is overridden. It's recommended to override this property when -lineFragmentRectForProposedRect:atIndex:writingDirection:remainingRect: is overridden. -@property (getter=isSimpleRectangularTextContainer, readonly) BOOL simpleRectangularTextContainer NS_AVAILABLE(10_0, 9_0); +@property (getter=isSimpleRectangularTextContainer, readonly) BOOL simpleRectangularTextContainer API_AVAILABLE(macos(10.0), ios(9.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); /**************************** View synchronization ****************************/ @@ -70,6 +59,37 @@ API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) @interface NSTextContainer : NSO @property BOOL widthTracksTextView; @property BOOL heightTracksTextView; +@end + +NS_HEADER_AUDIT_END(nullability, sendability) +#endif // !TARGET_OS_IPHONE +#else +#import +#endif + +#import +#import +#import +#import + +@class NSBezierPath; +@class NSTextLayoutManager; + +#if !TARGET_OS_IPHONE +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface NSTextContainer () + +// Accessor for the NSLayoutManager object owning the receiver. +// Avoid assigning a layout manager directly through this property. Adding a text container to a layout manager through -[NSLayoutManager addTextContainer:] will use the property for assigning the new layout manager. +@property (nullable, assign) NSLayoutManager *layoutManager API_AVAILABLE(macos(10.0), ios(9.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); + +// This method should be used instead of the primitive -setLayoutManager: if you need to replace a container's layoutManager with a new one leaving the rest of the web intact. All the NSTextContainers on the old NSLayoutManager get transferred to the new one. This method deals with all the work of making sure the containers don't get deallocated and removing the old layoutManager from the text storage and replacing it with the new one. +- (void)replaceLayoutManager:(NSLayoutManager *)newLayoutManager NS_SWIFT_NAME(replaceLayoutManager(_:)) API_AVAILABLE(macos(10.0), ios(9.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); + +// Default value : empty array An array of NSBezierPath representing the exclusion paths inside the receiver's bounding rect. +@property (copy) NSArray *exclusionPaths API_AVAILABLE(macos(10.11), ios(7.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos); + // Set/get the view which the container is drawn in. Having a view is optional. #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12 @property (nullable, strong) NSTextView *textView; @@ -108,8 +128,5 @@ typedef NS_ENUM(NSUInteger, NSLineMovementDirection) { -#endif // !TARGET_OS_IPHONE NS_HEADER_AUDIT_END(nullability, sendability) -#else -#import -#endif +#endif // !TARGET_OS_IPHONE diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContent.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContent.h index 4178f95b..19266ffe 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContent.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContent.h @@ -1,7 +1,7 @@ /* NSTextContent.h Application Kit - Copyright (c) 2020-2023, Apple Inc. + Copyright (c) 2020-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContentManager.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContentManager.h index 6c7c6428..97671fd0 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContentManager.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextContentManager.h @@ -6,7 +6,7 @@ // NSTextContentManager.h // Text Kit // -// Copyright (c) 2018-2023, Apple Inc. All rights reserved. +// Copyright (c) 2018-2024, Apple Inc. All rights reserved. // #import @@ -29,10 +29,10 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) typedef NS_OPTIONS(NSUInteger, NSTextContentManagerEnumerationOptions) { NSTextContentManagerEnumerationOptionsNone = 0, NSTextContentManagerEnumerationOptionsReverse = (1 << 0) -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); // NSTextElementProvider is a protocol conformed by NSTextContentManager and its concrete subclasses. It defines the base interface for interacting with a custom text document content type. -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @protocol NSTextElementProvider // Declares the starting and ending locations for the document. The subclass could use its own implementation of a location object conforming to NSTextRange. @property (strong, readonly) NSTextRange *documentRange; @@ -59,7 +59,7 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) #pragma mark NSTextContentManager // NSTextContentManager is an abstract class defining the interface for managing the text document contents and the default implementation. The concrete subclass overrides NSTextElementProvider for managing the content backing store. It is the root object strongly referencing the rest of objects in the TextKit network via an array of NSTextLayoutManager. Also, it manages the editing transaction by tracking the active NSTextLayoutManager focused to be editing. -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextContentManager : NSObject #pragma mark Initialization - (instancetype)init NS_DESIGNATED_INITIALIZER; @@ -103,7 +103,7 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) @end #pragma mark NSTextContentManagerDelegate -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @protocol NSTextContentManagerDelegate @optional // Returns a custom element for location. When non-nil, textContentManager uses the element instead of creating based on its standard mapping logic. @@ -114,7 +114,7 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) @end #pragma mark NSTextContentStorageDelegate -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @protocol NSTextContentStorageDelegate @optional // Returns a custom NSTextParagraph for range in NSTextContentStorage.attributedString. When non-nil, textContentStorage uses the text paragraph instead of creating the standard NSTextParagraph with the attributed substring in range. The attributed string for a custom text paragraph must have range.length. @@ -123,7 +123,7 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) #pragma mark NSTextContentStorage // NSTextContentStorage is a concrete subclass of NSTextContentManager providing support for NSAttributedString backing-store. It also implements NSTextStorageObserving participating as a client of NSTextStorage. The facility only supports a single NSTextContentStorage associated with a text storage. When -textStorage!=nil, -attributedString is ignored. By default, NSTextContentStorage is initialized with NSTextStorage as the backing-store. -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextContentStorage : NSTextContentManager #pragma mark Basic properties @property (weak, nullable) id delegate; @@ -151,7 +151,7 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) @end // Posted by NSTextContentStorage when a text attribute unsupported by NSTextContentStorage is added to the underlying text storage. -APPKIT_EXTERN NSNotificationName NSTextContentStorageUnsupportedAttributeAddedNotification API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +APPKIT_EXTERN NSNotificationName NSTextContentStorageUnsupportedAttributeAddedNotification API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); NS_HEADER_AUDIT_END(nullability, sendability) #endif // !TARGET_OS_IPHONE diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextElement.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextElement.h index 927ce241..fe68bca9 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextElement.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextElement.h @@ -6,7 +6,7 @@ // NSTextElement.h // Text Kit // -// Copyright (c) 2018-2023, Apple Inc. All rights reserved. +// Copyright (c) 2018-2024, Apple Inc. All rights reserved. // @@ -18,7 +18,7 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) // NSTextElement is an abstract base class for representing the smallest text layout unit typically paragraphs, tables, or attachments. A text element is associated with an NSTextContentManager. -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextElement : NSObject #pragma mark Initialization - (instancetype)initWithTextContentManager:(nullable NSTextContentManager *)textContentManager NS_DESIGNATED_INITIALIZER; @@ -33,19 +33,19 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) #pragma mark Child Elements // A concrete NSTextElement subclass can be structured in a tree. An element can have zero or more child elements. This section provides interface for supporting such a configuration. // Returns an array of children. The array can contain zero or more elements. -@property (readonly, copy) NSArray<__kindof NSTextElement *> *childElements API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)) API_UNAVAILABLE(watchos); +@property (readonly, copy) NSArray<__kindof NSTextElement *> *childElements API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), visionos(1.0)) API_UNAVAILABLE(watchos); // Returns the parent element if the receiver is a child. -@property (nullable, readonly, weak) __kindof NSTextElement *parentElement API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)) API_UNAVAILABLE(watchos); +@property (nullable, readonly, weak) __kindof NSTextElement *parentElement API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), visionos(1.0)) API_UNAVAILABLE(watchos); // Returns YES if it is an element represented in text layout. It is enumerated by NSTextContentManager. -@property (readonly) BOOL isRepresentedElement API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)) API_UNAVAILABLE(watchos); +@property (readonly) BOOL isRepresentedElement API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), visionos(1.0)) API_UNAVAILABLE(watchos); @end #pragma mark NSTextParagraph // NSTextParagraph represents a single paragraph backed by NSAttributedString as the contents. -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextParagraph : NSTextElement #pragma mark Initialization - (instancetype)initWithAttributedString:(nullable NSAttributedString *)attributedString NS_DESIGNATED_INITIALIZER; diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextField.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextField.h index cac09a9d..bbc1e7d0 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextField.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextField.h @@ -1,7 +1,7 @@ /* NSTextField.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -57,6 +57,8 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @property NSLineBreakStrategy lineBreakStrategy API_AVAILABLE(macos(10.15)); #endif +@property BOOL allowsWritingTools API_AVAILABLE(macos(15.2)); // Default is YES. Configures its field editor to work with Writing Tools. +@property BOOL allowsWritingToolsAffordance API_AVAILABLE(macos(15.4)); // Default is NO. @end #pragma mark NSTextField NSTouchBar Properties diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextFieldCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextFieldCell.h index 043ae477..bbef3e68 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextFieldCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextFieldCell.h @@ -1,7 +1,7 @@ /* NSTextFieldCell.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextFinder.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextFinder.h index 79ec720f..a743193b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextFinder.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextFinder.h @@ -1,7 +1,7 @@ /* NSTextFinder.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInputClient.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInputClient.h index 7aa49b3f..73ceb8bc 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInputClient.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInputClient.h @@ -1,7 +1,7 @@ /* NSTextInputClient.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ @@ -16,6 +16,7 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @class NSAttributedString; +@class NSAdaptiveImageGlyph; typedef NS_ENUM(NSInteger, NSTextCursorAccessoryPlacement) { NSTextCursorAccessoryPlacementUnspecified, @@ -100,18 +101,25 @@ typedef NS_ENUM(NSInteger, NSTextCursorAccessoryPlacement) { */ - (NSTextCursorAccessoryPlacement)preferredTextAccessoryPlacement; -/* Return rect which covers whole selected text in screen coordinate. If this method isn't provided, -selectedRange + -firstRectForCharRange:actualRange: will be used. +/* Return rect which covers whole selected text in screen coordinate. If this method isn't provided, -selectedRange + -firstRectForCharRange:actualRange: will be used. If the selected text is partially visible in the current clip view, it’s ok for `unionRectInVisibleSelectedRange` to go beyond `documentVisibleRect`. - To support dictation indicator on custom text view, expose this method and `-documentVisibleRect`, and also calls `-[NSTextInputContext willStartScrollingOrZooming]`/ `-[NSTextInputContext didEndScrollingOrZooming]` when needed. + To support dictation indicator on custom text view, expose this method and `-documentVisibleRect`, and call `-[NSTextInputContext willStartScrollingOrZooming]`/ `-[NSTextInputContext didEndScrollingOrZooming]` when needed. + To support Writing Tools affordance on custom text view, expose this method and `-documentVisibleRect`, and call `-[NSTextInputContext textInputClientDidUpdateSelectionRect]` when needed. */ @property (readonly) NSRect unionRectInVisibleSelectedRange API_AVAILABLE(macos(14.0)); /* Return visible rect of document area in screen coordinate. If this method isn't provided, -[NSView visibleRect] will be used. - To support dictation indicator on custom text view, expose this method and `-selectionRect`, and also calls `-[NSTextInputContext willStartScrollingOrZooming]`/ `-[NSTextInputContext didEndScrollingOrZooming]` when needed. + To support dictation indicator on custom text view, expose this method and `-unionRectInVisibleSelectedRange`, and call `-[NSTextInputContext willStartScrollingOrZooming]`/ `-[NSTextInputContext didEndScrollingOrZooming]` when needed. + To support Writing Tools affordance on custom text view, expose this method and `-unionRectInVisibleSelectedRange `, and call `-[NSTextInputContext textInputClientDidUpdateSelectionRect]` when needed. */ @property (readonly) NSRect documentVisibleRect API_AVAILABLE(macos(14.0)); +@optional +@property (readonly) BOOL supportsAdaptiveImageGlyph API_AVAILABLE(macos(15.0)); + +- (void)insertAdaptiveImageGlyph:(NSAdaptiveImageGlyph *)adaptiveImageGlyph replacementRange:(NSRange)replacementRange NS_SWIFT_NAME(insert(_:replacementRange:)) API_AVAILABLE(macos(15.0)); + @end API_UNAVAILABLE_END diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInputContext.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInputContext.h index 422b3dc1..f7ed68e6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInputContext.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInputContext.h @@ -1,7 +1,7 @@ /* NSTextInputContext.h Application Kit - Copyright (c) 2008-2023, Apple Inc. + Copyright (c) 2008-2024, Apple Inc. All rights reserved. */ @@ -73,6 +73,12 @@ API_AVAILABLE(macos(10.6)) This method should be called after -invalidateCharacterCoordinates. */ - (void)textInputClientDidEndScrollingOrZooming API_AVAILABLE(macos(14.0)); +// Notify when the text view selection is changed. +- (void)textInputClientDidUpdateSelection API_AVAILABLE(macos(15.4)); + +// Notify when the text view scroll location is changed. +- (void)textInputClientDidScroll API_AVAILABLE(macos(15.4)); + /**** Text Input sources handling ****/ /* Text Input source handling API identifies text input sources with text input source identifier strings (i.e. "com.apple.inputmethod.Kotoeri.Japanese") supplied by the underlying TextInputSources framework. The ID corresponds to the kTISPropertyInputSourceID attribute. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInsertionIndicator.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInsertionIndicator.h index 86403329..aa292e6d 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInsertionIndicator.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextInsertionIndicator.h @@ -1,7 +1,7 @@ /* NSTextInsertionIndicator.h Application Kit - Copyright (c) 2023-2023, Apple Inc. + Copyright (c) 2023-2024, Apple Inc. All rights reserved. */ @@ -28,8 +28,8 @@ API_AVAILABLE(macos(14.0)) @property NSTextInsertionIndicatorDisplayMode displayMode; /// The color of the indicator. -/// @discussion Defaults to the system accent color. -/// @note If set to @c nil, uses the system accent color. +/// @discussion Defaults to NSColor.textInsertionPointColor. +/// @note If set to @c nil, uses NSColor.textInsertionPointColor. @property(copy, null_resettable) NSColor *color; /// Options for the NSTextInsertionIndicatorDisplayModeAutomatic display mode. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLayoutFragment.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLayoutFragment.h index d13a745d..b6a8f400 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLayoutFragment.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLayoutFragment.h @@ -6,7 +6,7 @@ // NSTextLayoutFragment.h // Text Kit // -// Copyright (c) 2017-2023, Apple Inc. All rights reserved. +// Copyright (c) 2017-2024, Apple Inc. All rights reserved. // #import @@ -31,16 +31,16 @@ typedef NS_OPTIONS(NSUInteger, NSTextLayoutFragmentEnumerationOptions) { NSTextLayoutFragmentEnumerationOptionsEstimatesSize = (1 << 1), // When enumerating, the layout fragments will be asked to estimate their size. NSTextLayoutFragmentEnumerationOptionsEnsuresLayout = (1 << 2), // When enumerating, the layout fragments will be asked to layout. NSTextLayoutFragmentEnumerationOptionsEnsuresExtraLineFragment = (1 << 3), // It synthesizes the extra line fragment when necessary. -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); typedef NS_ENUM(NSUInteger, NSTextLayoutFragmentState) { NSTextLayoutFragmentStateNone = 0, // No layout information NSTextLayoutFragmentStateEstimatedUsageBounds = 1, // When associated with NSTextLayoutManager, filled with an estimated rect if no layout NSTextLayoutFragmentStateCalculatedUsageBounds = 2, // layout fragment measurements available without textLineFragments NSTextLayoutFragmentStateLayoutAvailable = 3 // textLineFragments and layout fragment measurements available -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextLayoutFragment : NSObject #pragma mark Initialization - (instancetype)initWithTextElement:(NSTextElement *)textElement range:(nullable NSTextRange *)rangeInElement NS_DESIGNATED_INITIALIZER; @@ -63,10 +63,10 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) @property (copy, readonly) NSArray *textLineFragments; // Returns the NSTextLineFragment containing verticalOffset if found. When requiresExactMatch=NO, it returns the closest line fragment beyond verticalOffset if no line fragment contains verticalOffset. -- (nullable NSTextLineFragment *)textLineFragmentForVerticalOffset:(CGFloat)verticalOffset requiresExactMatch:(BOOL)requiresExactMatch API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos); +- (nullable NSTextLineFragment *)textLineFragmentForVerticalOffset:(CGFloat)verticalOffset requiresExactMatch:(BOOL)requiresExactMatch API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), visionos(1.0)) API_UNAVAILABLE(watchos); // Returns the NSTextLineFragment containing textLocation. When isUpstreamAffinity=YES, it returns the text line fragment ending at textLocation. -- (nullable NSTextLineFragment *)textLineFragmentForTextLocation:(id )textLocation isUpstreamAffinity:(BOOL)isUpstreamAffinity API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos); +- (nullable NSTextLineFragment *)textLineFragmentForTextLocation:(id )textLocation isUpstreamAffinity:(BOOL)isUpstreamAffinity API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), visionos(1.0)) API_UNAVAILABLE(watchos); // When non-nil, the layout operation is dispatched to the queue asynchronously. @property (nullable, strong) NSOperationQueue *layoutQueue; diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLayoutManager.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLayoutManager.h index 6ea2917f..4ba51c1b 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLayoutManager.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLayoutManager.h @@ -6,7 +6,7 @@ // NSTextLayoutManager.h // Text Kit // -// Copyright (c) 2017-2023, Apple Inc. All rights reserved. +// Copyright (c) 2017-2024, Apple Inc. All rights reserved. // @@ -31,7 +31,7 @@ typedef NS_ENUM(NSInteger, NSTextLayoutManagerSegmentType) { NSTextLayoutManagerSegmentTypeStandard = 0, // The standard segment matching the typographic bounds of range. NSTextLayoutManagerSegmentTypeSelection = 1, // The segment behavior suitable for the selection rendering. Extends the last segment in a line fragment to the trailing edge if continuing to the next line. NSTextLayoutManagerSegmentTypeHighlight = 2, // The segment behavior suitable for highlighting. -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); typedef NS_OPTIONS(NSUInteger, NSTextLayoutManagerSegmentOptions) { NSTextLayoutManagerSegmentOptionsNone = 0, @@ -40,10 +40,10 @@ typedef NS_OPTIONS(NSUInteger, NSTextLayoutManagerSegmentOptions) { NSTextLayoutManagerSegmentOptionsHeadSegmentExtended = (1 << 2), // When specified, the segment is extended to the head edge NSTextLayoutManagerSegmentOptionsTailSegmentExtended = (1 << 3), // When specified, the segment is extended to the tail edge. NSTextLayoutManagerSegmentOptionsUpstreamAffinity = (1 << 4), // When specified, the segment is placed based on the upstream affinity for an empty range. -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); // NSTextLayoutManager is the center piece of the TextKit object network maintaining the layout geometry via an array of NSTextContainer and layout results with NSTextLayoutFragment associated with NSTextElement vended from the owner NSTextContentManager. -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextLayoutManager : NSObject #pragma mark Initialization - (instancetype)init NS_DESIGNATED_INITIALIZER; @@ -145,7 +145,7 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) @end #pragma mark NSTextLayoutManagerDelegate -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @protocol NSTextLayoutManagerDelegate @optional // NSTextLayoutFragment management diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLineFragment.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLineFragment.h index 64dbf551..73617360 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLineFragment.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextLineFragment.h @@ -6,7 +6,7 @@ // NSTextLineFragment.h // Text Kit // -// Copyright (c) 2017-2023, Apple Inc. All rights reserved. +// Copyright (c) 2017-2024, Apple Inc. All rights reserved. // #import @@ -17,7 +17,7 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) #pragma mark NSTextLineFragment // NSTextLineFragment represents a single textual layout and rendering unit inside NSTextLayoutFragment. -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextLineFragment : NSObject #pragma mark Initialization - (instancetype)initWithAttributedString:(NSAttributedString *)attributedString range:(NSRange)range NS_DESIGNATED_INITIALIZER; @@ -42,7 +42,7 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) // Rendering origin for the left most glyph in the line fragment coordinate system @property (readonly) CGPoint glyphOrigin; -// Renders the line fragment contents at the rendering origin. The origin can be specified as (NSMinX(typographicBounds) + glyphOrigin.x, NSMinY(typographicBounds) + glyphOrigin.y) relative to the line fragment group coordinate system +// Renders the line fragment contents at the rendering origin. The origin can be specified as (CGRectGetMinX(typographicBounds), CGRectGetMinY(typographicBounds)) relative to the parent layout fragment coordinate system. - (void)drawAtPoint:(CGPoint)point inContext:(CGContextRef)context; #pragma mark Character and point mappings diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextList.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextList.h index 3ec623b6..45777a22 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextList.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextList.h @@ -6,7 +6,7 @@ // NSTextList.h // Text Kit // -// Copyright (c) 2004-2023, Apple Inc. All rights reserved. +// Copyright (c) 2004-2024, Apple Inc. All rights reserved. #import #import @@ -15,33 +15,33 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) // NSTextList represents a stylistic format of a group of text list items belonging to the same nested level. It supports both ordered and unordered lists. The type of marker is defined by markerFormat. typedef NS_OPTIONS(NSUInteger, NSTextListOptions) { - NSTextListPrependEnclosingMarker API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos) = (1 << 0), // All marker strings up to the top-level parent are concatenated to the marker string used by the text list item. -}; + NSTextListPrependEnclosingMarker API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) = (1 << 0), // All marker strings up to the top-level parent are concatenated to the marker string used by the text list item. +} API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); -typedef NSString * NSTextListMarkerFormat NS_TYPED_EXTENSIBLE_ENUM API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerBox API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerCheck API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerCircle API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerDiamond API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerDisc API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerHyphen API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerSquare API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerLowercaseHexadecimal API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerUppercaseHexadecimal API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerOctal API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerLowercaseAlpha API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerUppercaseAlpha API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerLowercaseLatin API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerUppercaseLatin API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerLowercaseRoman API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerUppercaseRoman API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); -APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerDecimal API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * NSTextListMarkerFormat NS_TYPED_EXTENSIBLE_ENUM API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerBox API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerCheck API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerCircle API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerDiamond API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerDisc API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerHyphen API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerSquare API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerLowercaseHexadecimal API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerUppercaseHexadecimal API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerOctal API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerLowercaseAlpha API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerUppercaseAlpha API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerLowercaseLatin API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerUppercaseLatin API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerLowercaseRoman API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerUppercaseRoman API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); +APPKIT_EXTERN NSTextListMarkerFormat const NSTextListMarkerDecimal API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)); -API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0), watchos(2.0), visionos(1.0)) @interface NSTextList : NSObject #pragma mark Initialization -- (instancetype)initWithMarkerFormat:(NSTextListMarkerFormat)markerFormat options:(NSTextListOptions)options startingItemNumber:(NSInteger)startingItemNumber NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)) API_UNAVAILABLE(watchos); +- (instancetype)initWithMarkerFormat:(NSTextListMarkerFormat)markerFormat options:(NSTextListOptions)options startingItemNumber:(NSInteger)startingItemNumber NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0), visionos(1.0)); - (instancetype)initWithMarkerFormat:(NSTextListMarkerFormat)markerFormat options:(NSUInteger)options; - (nullable instancetype) initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; @@ -55,7 +55,7 @@ API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos) @property NSInteger startingItemNumber; // Yes if markerFormat is an ordered text list type -@property (readonly, getter=isOrdered) BOOL ordered API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)) API_UNAVAILABLE(watchos); +@property (readonly, getter=isOrdered) BOOL ordered API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0), visionos(1.0)); #pragma mark Resolved Marker String // Returns the marker corresponding to itemNumber. itemNumber is ignored if < 1 or isOrdered==NO. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextListElement.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextListElement.h index 92e0afb6..fa80e9c7 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextListElement.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextListElement.h @@ -6,7 +6,7 @@ // NSTextListElement.h // Text Kit // -// Copyright (c) 2021-2023, Apple Inc. All rights reserved. +// Copyright (c) 2021-2024, Apple Inc. All rights reserved. // #import @@ -19,7 +19,7 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) // NSTextListElement is a concrete subclass of NSTextElement representing a text list node. It can contain an array of child element. A text list can be represented by a tree of NSTextListElements. #pragma mark NSTextListElement -API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextListElement : NSTextParagraph #pragma mark Initializer // Designated initializer. Initializes 2 types of NSTextListElement: a standard list item and nesting parent element. Either of contents, markerAttributes, or childElements must be non-nil. Clients should typically use one of 2 factory methods below for instantiating with a specific type. When markerAttributes!=nil, it will be used to format the marker; otherwise, it is derived from contents. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextRange.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextRange.h index 1ad3a0a6..72ab660d 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextRange.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextRange.h @@ -6,7 +6,7 @@ // NSTextRange.h // Text Kit // -// Copyright (c) 2018-2023, Apple Inc. All rights reserved. +// Copyright (c) 2018-2024, Apple Inc. All rights reserved. // #import @@ -15,16 +15,16 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) #pragma mark NSTextLocation // NSTextLocation represents an abstract location inside document contents. A concrete class conforming to the protocol should be associated with a particular document backing store type. The interpretation of a location in enumeration operations is depending on the logical direction. When enumerating forward, it should start with the item containing the location. The enumeration should start with an item preceding the location for reverse operations. -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) NS_PROTOCOL_REQUIRES_EXPLICIT_IMPLEMENTATION +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0)) NS_PROTOCOL_REQUIRES_EXPLICIT_IMPLEMENTATION @protocol NSTextLocation // Compares and returns the logical ordering to location -- (NSComparisonResult)compare:(id )location API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +- (NSComparisonResult)compare:(id )location API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0)); @end #pragma mark NSTextRange // NSTextRange represents a contiguous range between two locations inside document contents. It consists of the starting location and terminating location. They are the two basic properties, location and endLocation, respectively. The terminating location, endLocation, is directly following the last location in the range. So, a location is contained in a range if (range.location <= location) && (location < range.endLocation). -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0)) @interface NSTextRange : NSObject #pragma mark Initialization // Returns an empty range when endLocation=nil diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextSelection.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextSelection.h index f1ca7c39..dcb1821e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextSelection.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextSelection.h @@ -6,7 +6,7 @@ // NSTextSelection.h // Text Kit // -// Copyright (c) 2018-2023, Apple Inc. All rights reserved. +// Copyright (c) 2018-2024, Apple Inc. All rights reserved. // #import @@ -26,14 +26,14 @@ typedef NS_ENUM(NSInteger, NSTextSelectionGranularity) { NSTextSelectionGranularityParagraph, NSTextSelectionGranularityLine, NSTextSelectionGranularitySentence -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); typedef NS_ENUM(NSInteger, NSTextSelectionAffinity) { NSTextSelectionAffinityUpstream = 0, NSTextSelectionAffinityDownstream = 1 -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextSelection : NSObject #pragma mark Initialization // textRanges should be ordered and not overlapping. Otherwise, textRanges would get normalized by reordered and merging overlapping ranges. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextSelectionNavigation.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextSelectionNavigation.h index 91385f6d..d2984b82 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextSelectionNavigation.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextSelectionNavigation.h @@ -6,7 +6,7 @@ // NSTextSelectionNavigation.h // Text Kit // -// Copyright (c) 2019-2023, Apple Inc. All rights reserved. +// Copyright (c) 2019-2024, Apple Inc. All rights reserved. // #import @@ -35,7 +35,7 @@ typedef NS_ENUM(NSInteger, NSTextSelectionNavigationDirection) { NSTextSelectionNavigationDirectionLeft, NSTextSelectionNavigationDirectionUp, NSTextSelectionNavigationDirectionDown -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); typedef NS_ENUM(NSInteger, NSTextSelectionNavigationDestination) { NSTextSelectionNavigationDestinationCharacter, // Moving to the next extended grapheme cluster boundary. Could result in a location inside a cluster depending on operations. When the movement direction is not along the line (i.e. up and down for a horizontal line), it moves to the adjacent line using the anchor point instead of resolving to the logical direction @@ -45,25 +45,25 @@ typedef NS_ENUM(NSInteger, NSTextSelectionNavigationDestination) { NSTextSelectionNavigationDestinationParagraph, // Moving to the next paragraph boundary. Ignores the end of line elastic characters and paragraph separators NSTextSelectionNavigationDestinationContainer, // Moving to the next container/page boundary. Ignores the end of line elastic characters and container/page separators NSTextSelectionNavigationDestinationDocument, // Moving to the document boundary -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); typedef NS_OPTIONS(NSUInteger, NSTextSelectionNavigationModifier) { NSTextSelectionNavigationModifierExtend = (1 << 0), // Extends the selection by not moving the initial location while drag selection NSTextSelectionNavigationModifierVisual = (1 << 1), // Extends the selection visually inside the rectangular area defined by the anchor and dragged positions NSTextSelectionNavigationModifierMultiple = (1 << 2), // Extends the selection visually inside the rectangular area defined by the anchor and dragged positions and produces an NSTextSelection per line -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); typedef NS_ENUM(NSInteger, NSTextSelectionNavigationWritingDirection) { NSTextSelectionNavigationWritingDirectionLeftToRight = 0, // Left to right writing direction NSTextSelectionNavigationWritingDirectionRightToLeft = 1 // Right to left writing direction -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); typedef NS_ENUM(NSInteger, NSTextSelectionNavigationLayoutOrientation) { NSTextSelectionNavigationLayoutOrientationHorizontal = 0, // Lines rendered horizontally, grow top to bottom NSTextSelectionNavigationLayoutOrientationVertical = 1, // Lines rendered vertically, grow right to left -} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos); -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextSelectionNavigation : NSObject #pragma mark Initialization - (instancetype)initWithDataSource:(id )dataSource NS_DESIGNATED_INITIALIZER; @@ -106,7 +106,7 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) - (NSArray *)deletionRangesForTextSelection:(NSTextSelection *)textSelection direction:(NSTextSelectionNavigationDirection)direction destination:(NSTextSelectionNavigationDestination)destination allowsDecomposition:(BOOL)allowsDecomposition; @end -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @protocol NSTextSelectionDataSource @required // Declares the starting and ending locations for the document. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextStorage.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextStorage.h index 8219fefe..a675852f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextStorage.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextStorage.h @@ -1,7 +1,7 @@ #if !__has_include() /* NSTextStorage.h - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextStorageScripting.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextStorageScripting.h index 6d8c7eec..72e93753 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextStorageScripting.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextStorageScripting.h @@ -1,7 +1,7 @@ /* NSTextStorageScripting.h AppKit Framework - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextTable.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextTable.h index a1374489..9f5551dc 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextTable.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextTable.h @@ -1,7 +1,7 @@ #if !__has_include() /* NSTextTable.h - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2024, Apple Inc. All rights reserved. Classes to represent text tables and other text blocks. diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextView.h index 2975d758..631b2803 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextView.h @@ -1,7 +1,7 @@ /* NSTextView.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -50,6 +50,7 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @class NSSharingServicePicker; @class NSValue; @class NSTextAttachment; +@class NSTextRange; /* Values for NSSelectionGranularity */ typedef NS_ENUM(NSUInteger, NSSelectionGranularity) { @@ -234,6 +235,7 @@ NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE #pragma mark Dark Mode // When YES, enables the adaptive color mapping mode. In this mode under the dark effective appearance, NSTextView maps all colors with NSColorTypeComponentBased by inverting the brightness whenever they are coming in and out of the model object, NSTextStorage. For example, when rendering, interacting with NSColorPanel and NSFontManager, and converting from/to the pasteboard and external formats, the color values are converted between the model and rendering contexts. Note that the color conversion algorithm compresses the brightness range and, therefore, does not retain the round-trip fidelity between the light and dark appearances. It may not be suitable for rich text authoring, so it is a good idea to provide a command or preference for your users to see and edit their docs without this option, or in light mode. @property BOOL usesAdaptiveColorMappingForDarkAppearance API_AVAILABLE(macos(10.14)); + @end @interface NSTextView (NSCompletion) @@ -251,7 +253,6 @@ NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE // Called with final == NO as the user moves through the potential completions, then with final == YES when a completion is definitively selected (or completion is cancelled and the original value is reinserted). The default implementation inserts the completion into the text at the appropriate location. The movement argument takes its values from the movement codes defined in NSText.h, and allows subclassers to distinguish between canceling completion and selection by arrow keys, by return, by tab, or by other means such as clicking. - (void)insertCompletion:(NSString *)word forPartialWordRange:(NSRange)charRange movement:(NSInteger)movement isFinal:(BOOL)flag; - @end @interface NSTextView (NSPasteboard) @@ -420,12 +421,19 @@ NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE @property BOOL usesFontPanel; @property (getter=isRulerVisible) BOOL rulerVisible; - (void)setSelectedRange:(NSRange)charRange; - // Other NSText methods are implemented in the base NSTextView implementation rather than in this category. See NSText.h for declarations. +// Other NSText methods are implemented in the base NSTextView implementation rather than in this category. See NSText.h for declarations. /*************************** Input Source support ***************************/ /* Returns an array of locale identifiers representing keyboard input sources allowed to be enabled when the receiver has the keyboard focus. */ @property (nullable, copy) NSArray *allowedInputSourceLocales API_AVAILABLE(macos(10.5)); + +#pragma mark WritingTools +@property(nonatomic,readonly,getter=isWritingToolsActive) BOOL writingToolsActive API_AVAILABLE(macos(15.0)); + +@property NSWritingToolsBehavior writingToolsBehavior API_AVAILABLE(macos(15.0)); +@property NSWritingToolsResultOptions allowedWritingToolsResultOptions API_AVAILABLE(macos(15.0)); + @end @interface NSTextView (NSTextChecking) @@ -476,6 +484,9 @@ NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE // Allows clients to turn inline prediction on or off for this view. The default setting should be appropriate for most purposes, but in some cases clients may wish to set this explicitly. @property NSTextInputTraitType inlinePredictionType API_AVAILABLE(macos(14.0)); +// Allows clients to turn math inline completion on or off for this view. +@property NSTextInputTraitType mathExpressionCompletionType API_AVAILABLE(macos(15.0)); + @end @interface NSTextView (NSQuickLookPreview) @@ -539,6 +550,20 @@ NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE + (NSScrollView *)scrollablePlainDocumentContentTextView API_AVAILABLE(macos(10.14)); @end +#pragma mark NSTextHighlight +@interface NSTextView (NSTextView_TextHighlight) +/*************************** Text Highlight support ***************************/ +// Attributes for NSTextHighlightStyleAttributeName rendering. It is consulted when the corresponding NSTextHighlightColorSchemeAttributeName is NSTextHighlightColorSchemeDefault. NSForegroundColorAttributeName overrides the text color, and NSBackgroundColorAttributeName specifies the highlight color rendered with drawTextHighlightBackground(for textRange:, origin:). When NSForegroundColorAttributeName is missing, it uses the text color specified by the document content. When NSBackgroundColorAttributeName is not specified, it is derived from NSForegroundColorAttributeName. +@property (copy) NSDictionary *textHighlightAttributes API_AVAILABLE(macos(15.0)); + +// Renders the text highlight background for NSTextHighlightStyleAttributeName in textRange. origin specifies the coordinate origin in the NSTextContainer coordinate system of the rendering context. +- (void)drawTextHighlightBackgroundForTextRange:(NSTextRange *)textRange origin:(NSPoint)origin API_AVAILABLE(macos(15.0)); + +/// An action for toggling `NSTextHighlightStyleAttributeName` in the receiver’s selected range. +/// The sender should be a menu item with a `representedObject` of type (`NSTextHighlightColorScheme`). +- (IBAction)highlight:(nullable id)sender API_AVAILABLE(macos(15.0)); +@end + @interface NSTextView (NSDeprecated) // toggleBaseWritingDirection: will be deprecated in favor of the new NSResponder methods makeBaseWritingDirectionNatural:, makeBaseWritingDirectionLeftToRight:, and makeBaseWritingDirectionRightToLeft:, which NSTextView now implements. @@ -629,6 +654,11 @@ NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE // Delegate only. Notifies the delegate that the user selected the candidate at index in -[NSCandidateListTouchBarItem candidates] for textView.candidateListTouchBarItem. When no candidate selected, index is NSNotFound. Returning YES allows textView to insert the candidate into the text storage if it's NSString, NSAttributedString, or NSTextCheckingResult. - (BOOL)textView:(NSTextView *)textView shouldSelectCandidateAtIndex:(NSUInteger)index NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.12.2)); +#pragma mark WritingTools +// Delegate only. +- (void)textViewWritingToolsWillBegin:(NSTextView *)textView NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(15.0)); +- (void)textViewWritingToolsDidEnd:(NSTextView *)textView NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(15.0)); +- (NSArray *)textView:(NSTextView *)textView writingToolsIgnoredRangesInEnclosingRange:(NSRange)enclosingRange NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(15.0)); // The following delegate-only methods are deprecated in favor of the more verbose ones above. - (BOOL)textView:(NSTextView *)textView clickedOnLink:(null_unspecified id)link API_DEPRECATED("Use -textView:clickedOnLink:atIndex: instead", macos(10.0,10.6)); diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextViewportLayoutController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextViewportLayoutController.h index 95253e08..ff49d2a6 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTextViewportLayoutController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTextViewportLayoutController.h @@ -6,7 +6,7 @@ // NSTextViewportLayoutController.h // Text Kit // -// Copyright (c) 2017-2023, Apple Inc. All rights reserved. +// Copyright (c) 2017-2024, Apple Inc. All rights reserved. // #import @@ -23,7 +23,7 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) // A viewport is a rectangular area within a flipped coordinate system expanding along the y-axis. With text contents, lines advance along the expanding direction typically. It defines the active area where text layout fragments laid out. The area corresponds to the user visible area with additional over-scroll region in most cases. NSTextViewportLayoutController manages the layout process inside the viewport interacting with its delegate. #pragma mark NSTextViewportLayoutControllerDelegate -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @protocol NSTextViewportLayoutControllerDelegate #pragma mark Properties // The current viewport, typically the view visible bounds with overdraw. @@ -48,7 +48,7 @@ API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) @end #pragma mark NSTextViewportLayoutController -API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) +API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), visionos(1.0)) API_UNAVAILABLE(watchos) @interface NSTextViewportLayoutController : NSObject #pragma mark Initialization - (instancetype)initWithTextLayoutManager:(NSTextLayoutManager *)textLayoutManager NS_DESIGNATED_INITIALIZER; diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTintConfiguration.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTintConfiguration.h index 49979523..be508e63 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTintConfiguration.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTintConfiguration.h @@ -1,7 +1,7 @@ /* NSTintConfiguration.h Application Kit - Copyright (c) 2020-2023, Apple Inc. + Copyright (c) 2020-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTitlebarAccessoryViewController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTitlebarAccessoryViewController.h index 5289220b..df910af4 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTitlebarAccessoryViewController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTitlebarAccessoryViewController.h @@ -1,7 +1,7 @@ /* NSTitlebarAccessoryViewController.h Application Kit - Copyright (c) 2014-2023, Apple Inc. + Copyright (c) 2014-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTokenField.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTokenField.h index 36f4e228..77548cb8 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTokenField.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTokenField.h @@ -1,7 +1,7 @@ /* NSTokenField.h Application Kit - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTokenFieldCell.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTokenFieldCell.h index d3faa42b..d099771e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTokenFieldCell.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTokenFieldCell.h @@ -1,7 +1,7 @@ /* NSTokenFieldCell.h Application Kit - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbar.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbar.h index e3c19ebd..a5bf145e 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbar.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbar.h @@ -1,7 +1,7 @@ /* NSToolbar.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ @@ -15,6 +15,7 @@ typedef NSString * NSToolbarItemIdentifier NS_TYPED_EXTENSIBLE_ENUM API_AVAILABL typedef NSString * NSToolbarUserInfoKey NS_TYPED_ENUM; APPKIT_EXTERN NSToolbarUserInfoKey const NSToolbarItemKey API_AVAILABLE(macos(13.0)); +APPKIT_EXTERN NSToolbarUserInfoKey const NSToolbarNewIndexKey API_AVAILABLE(macos(15.0)); @class NSToolbarItem, NSWindow, NSView; @protocol NSToolbarDelegate; @@ -36,131 +37,253 @@ typedef NS_ENUM(NSUInteger, NSToolbarSizeMode) { API_AVAILABLE(ios(13.0)) NS_SWIFT_UI_ACTOR @interface NSToolbar : NSObject -/* The identifier is used to form the toolbar's autosave name. Also, toolbars with the same identifier are implicitly synchronized so that they maintain the same state. */ +/** + The identifier is used to form the toolbar's autosave name. + Toolbars with the same identifier are implicitly synchronized so that they maintain the same state. + */ - (instancetype)initWithIdentifier:(NSToolbarIdentifier)identifier NS_DESIGNATED_INITIALIZER; -/* Calls through to -initWithIdentifier: with an empty string identifier. Customizable toolbars should use -initWithIdentifier: with a unique identifier instead. */ +/** + Calls through to -initWithIdentifier: with an empty string identifier. + Customizable toolbars should use `-initWithIdentifier:` with a unique identifier instead. + */ - (instancetype)init API_AVAILABLE(macos(10.13)); -/* Primitives for explicitly adding and removing items. Any change made will be propagated immediately to all other toolbars with the same identifier. */ +/** + Inserts an item with the specified identifier in the receiving toolbar at the specified index. + + Any change made will be propagated immediately to all other toolbars with the same identifier. + */ - (void)insertItemWithItemIdentifier:(NSToolbarItemIdentifier)itemIdentifier atIndex:(NSInteger)index; + +/** + Removes the item at the specified index in the receiving toolbar. + + Any change made will be propagated immediately to all other toolbars with the same identifier. + */ - (void)removeItemAtIndex:(NSInteger)index; -/* Customizable toolbars must have a delegate, and must implement the required NSToolbarDelegate methods. */ +/** + Removes the item with matching `itemIdentifier` in the receiving toolbar. If multiple items share the same identifier (as is the case with space items) all matching items will be removed. To remove only a single space item, use `-removeItemAtIndex:` instead. + + Any change made will be propagated immediately to all other toolbars with the same identifier. + */ +- (void)removeItemWithItemIdentifier:(NSToolbarItemIdentifier)itemIdentifier API_AVAILABLE(macos(15.0), ios(18.0)) NS_SWIFT_NAME(removeItem(identifier:)); + +/** + Customizable toolbars must have a delegate, and must implement the required `NSToolbarDelegate` methods. + */ @property (nullable, weak) id delegate; -/* toggles the visibility of the toolbar. This property is KVO compliant on macOS 14.0 and higher. */ +/** + Toggles the visibility of the toolbar. + This property may be modified by the user in toolbars with `allowsUserCustomization` enabled. + This property is key value observable on macOS 14.0 and higher. + */ @property (getter=isVisible) BOOL visible; -/* Customizable toolbars (those with delegates) can show a palette which allows users to populate the toolbar with individual items or to reset the toolbar to some default set of items. The items and item sets in the palette are specified by the delegate (-toolbarAllowedItemIdentifiers: and -toolbarDefaultItemIdentifiers:). When the user is done configuring, they will dismiss the palette. */ +/** + Customizable toolbars (those with delegates) can show a palette which allows users to populate the toolbar with individual items or to reset the toolbar to some default set of items. + The items and item sets in the palette are specified by the delegate (`-toolbarAllowedItemIdentifiers:` and `-toolbarDefaultItemIdentifiers:`). + When the user is done configuring, they will dismiss the palette. + */ - (void)runCustomizationPalette:(nullable id)sender; + +/** + Whether or not the customization palette is currently running. + On macOS 15.0 and above this property is key value observable. + */ @property (readonly) BOOL customizationPaletteIsRunning; -// ----- Toolbar Attributes ----- +# pragma mark - Toolbar Attributes +/** + The current display mode of items in the toolbar. + In toolbars with `allowsDisplayModeCustomization` enabled this is a user modifiable property. + This property is key value observable. + */ @property NSToolbarDisplayMode displayMode; -/* Sets the toolbar's selected item by identifier. Use this to force an item identifier to be selected. Toolbar manages selection of image items automatically. This method can be used to select identifiers of custom view items, or to force a selection change. (see toolbarSelectableItemIdentifiers: delegate method for more details). */ +/** + Sets the toolbar's selected item by identifier. + Use this to force an item identifier to be selected. + Toolbar manages selection of image items automatically. + This method can be used to select identifiers of custom view items, or to force a selection change. + See `-toolbarSelectableItemIdentifiers:` delegate method for more details. + This property is key value observable. + */ @property (nullable, copy) NSToolbarItemIdentifier selectedItemIdentifier; -@property NSToolbarSizeMode sizeMode API_UNAVAILABLE(ios) API_DEPRECATED("NSToolbarSizeMode is no longer recommended and will be ignored in the future", macos(10.0, API_TO_BE_DEPRECATED)); - -/* Use this API to hide the baseline NSToolbar draws between itself and the main window contents. The default is YES. This method should only be used before the toolbar is attached to its window (-[NSWindow setToolbar:]). -*/ -@property BOOL showsBaselineSeparator; - -/* This flag controls whether or not users can configure the toolbar by dragging items around, and whether or not the customization palette can be used. The default value is NO, but can be changed at any time. For instance, a developer may not want users to be able to edit the toolbar while some event is being processed. */ +/** + This flag controls whether or not users can configure the toolbar by dragging items around, and whether or not the customization palette can be used. + The default value is NO, but can be changed at any time. + For instance, a developer may not want users to be able to edit the toolbar while some event is being processed. + */ @property BOOL allowsUserCustomization; +/** + Whether or not the user is allowed to change display modes at run time. + This functionality is independent of customizing the order of the items themselves. + Only disable when the functionality or legibility of your toolbar could not be improved by another display mode. + The user's selection will be persisted using the toolbar's `identifier` when `autosavesConfiguration` is enabled. + The default is YES for apps linked on macOS 15.0 and above. + */ +@property BOOL allowsDisplayModeCustomization API_AVAILABLE(macos(15.0), ios(18.0)); -// ----- Accessing toolbar info ----- -/* All toolbars with the same name will share the same display attributes, and item order. Also, if a toolbar autosaves its configuration, the item identifier will be used as the autosave name. */ +# pragma mark - Accessing toolbar info + +/** + All toolbars with the same name will share the same display attributes, and item order. + If a toolbar autosaves its configuration, the item identifier will be used as the autosave name. + */ @property (readonly, copy) NSToolbarIdentifier identifier; -/* Allows you to access all current items in the toolbar. */ +/** + Allows you to access all current items in the toolbar. + */ @property (readonly, copy) NSArray<__kindof NSToolbarItem *> *items; -/* Allows you to access the current visible items (non clipped). */ +/** + Allows you to access the current visible items (non clipped). + */ @property (nullable, readonly, copy) NSArray<__kindof NSToolbarItem *> *visibleItems; /** - Items with centered identifiers will be centered together in the Toolbar relative to the window assuming space allows. The order of items is initially defined by the default set of identifiers, but may be customized by the user. Centered items may not be moved outside of the center set of items by the user. - - This property is archived. + An array of itemIdentifiers that represent the current items in the toolbar. + Setting this property will set the current items in the toolbar by diffing against items that already exist. + Use this with great caution if `allowsUserCustomization` is enabled as it will override any customizations the user has made. + This property is key value observable. */ -@property (copy) NSSet *centeredItemIdentifiers API_AVAILABLE(macos(13.0), ios(16.0)); +@property (copy) NSArray *itemIdentifiers API_AVAILABLE(macos(15.0), ios(18.0)); -/* - The item with the specified identifier will be positioned in the absolute center of the Toolbar relative to the window assuming space allows. When the window shrinks, the highest priority is to have the most items visible. Thus, centering is broken first (it'll be pushed off to the left/right as necessary). Next, items will be shrunk down a little at a time towards their min size, at the same rate. Finally, items will be removed based on their visibility priority. - +/** + Items with centered identifiers will be centered together in the Toolbar relative to the window assuming space allows. + The order of items is initially defined by the default set of identifiers, but may be customized by the user. + Centered items may not be moved outside of the center set of items by the user. This property is archived. */ -@property (nullable, copy) NSToolbarItemIdentifier centeredItemIdentifier API_DEPRECATED("Use the centeredItemIdentifiers property instead", macos(10.14, API_TO_BE_DEPRECATED)); +@property (copy) NSSet *centeredItemIdentifiers API_AVAILABLE(macos(13.0), ios(16.0)); -// ----- Autosaving The Configuration ----- +# pragma mark - Autosaving The Configuration -/* If autosavesConfiguration is YES, the toolbar will automatically write changes the user makes to user defaults. Customizable toolbars will want to set this flag to YES. Setting this to NO means changes in configuration are not written automatically, however you can use the configurationDictionary method to do it yourself. Default is NO. */ +/** + If `autosavesConfiguration` is YES, the toolbar will automatically write changes the user makes to user defaults. + Customizable toolbars will want to set this flag to YES. + Setting this to NO means changes in configuration are not written automatically, however you can use the `configurationDictionary` method to do it yourself. + Default is NO. + */ @property BOOL autosavesConfiguration; -/* Set and get the current toolbar configuration using a dictionary representation. */ -- (void)setConfigurationFromDictionary:(NSDictionary *)configDict API_UNAVAILABLE(ios); -@property (readonly, copy) NSDictionary *configurationDictionary API_UNAVAILABLE(ios); +# pragma mark - Item Validation -// ----- Validation of the items ----- - -/* Typically you should not invoke this method. This method is called on window updates with the purpose of validating - each of the visible items. The toolbar will iterate through the list of visible items, sending each a -validate message. - If this method is invoked directly, all visible items including those with autovalidates disabled will get a -validate message. */ +/** + Typically you should not invoke this method. + This method is called on window updates with the purpose of validating each of the visible items. + The toolbar will iterate through the list of visible items, sending each a `-validate` message. + If this method is invoked directly, all visible items including those with `autovalidates` disabled will get a `-validate` message. + */ - (void)validateVisibleItems API_UNAVAILABLE(ios); -// ----- Extension toolbar items ----- -/* When YES, the receiver can dynamically create toolbar items for Action extensions in the toolbar configuration panel. To be included, an extension needs to declare NSExtensionServiceAllowsToolbarItem=YES in its Info.plist. The default value is NO. + +# pragma mark - Extension toolbar items + +/** + When YES, the receiver can dynamically create toolbar items for Action extensions in the toolbar configuration panel. + To be included, an extension needs to declare NSExtensionServiceAllowsToolbarItem=YES in its Info.plist. + The default value is NO. */ @property BOOL allowsExtensionItems API_AVAILABLE(macos(10.10)) API_UNAVAILABLE(ios); @end +# pragma mark - Delegate + API_AVAILABLE(ios(13.0)) @protocol NSToolbarDelegate -/*The following three methods are required for toolbars that are not created in Interface Builder. If the toolbar is created in IB, you may omit them. If you do implement them, any items returned by the delegate will be used alongside items created in Interface Builder. */ +/** + The following three methods are required for toolbars that are not created in Interface Builder. + If the toolbar is created in IB, you may omit them. + If you do implement them, any items returned by the delegate will be used alongside items created in Interface Builder. + */ @optional -/* Given an item identifier, this method returns an item. Note that, it is expected that each toolbar receives its own distinct copies. If the item has a custom view, that view should be in place when the item is returned. Finally, do not assume the returned item is going to be added as an active item in the toolbar. In fact, the toolbar may ask for items here in order to construct the customization palette (it makes copies of the returned items). if willBeInsertedIntoToolbar is YES, the returned item will be inserted, and you can expect toolbarWillAddItem: is about to be posted. */ +/** + Given an item identifier, this method returns an item. + Note that it is expected that each toolbar receives its own distinct copies and each time this method is called a new item must be returned. + If the item has a custom view, that view should be in place when the item is returned. + Finally, do not assume the returned item is going to be added as an active item in the toolbar. + In fact, the toolbar may ask for items here in order to construct the customization palette. + If `willBeInsertedIntoToolbar` is YES, the returned item will be inserted, and you can expect `toolbarWillAddItem:` is about to be posted. + */ - (nullable NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSToolbarItemIdentifier)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag NS_SWIFT_UI_ACTOR; -/* Returns the ordered list of items to be shown in the toolbar by default. If during initialization, no overriding values are found in the user defaults, or if the user chooses to revert to the default items this set will be used. */ +/** + Returns the ordered list of items to be shown in the toolbar by default. + If during initialization, no overriding values are found in the user defaults, or if the user chooses to revert to the default items this set will be used. + */ - (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar NS_SWIFT_UI_ACTOR; -/* Returns the list of all allowed items by identifier. By default, the toolbar does not assume any items are allowed, even the separator. So, every allowed item must be explicitly listed. The set of allowed items is used to construct the customization palette. The order of items does not necessarily guarantee the order of appearance in the palette. At minimum, you should return the default item list.*/ +/** + Returns the list of all allowed items by identifier. + By default, the toolbar does not assume any items are allowed so every allowed item must be explicitly listed. + The set of allowed items is used to construct the customization palette. + The order of items does not necessarily guarantee the order of appearance in the palette. + At minimum, you should return the default item list. + */ - (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar NS_SWIFT_UI_ACTOR; @optional -/* Optional method. Those wishing to indicate item selection in a toolbar should implement this method to return a non-empty array of selectable item identifiers. If implemented, the toolbar will remember and display the selected item with a special highlight. A selected item is one whose item identifier matches the current selected item identifier. Clicking on an item whose identifier is selectable will automatically update the toolbar's selectedItemIdentifier when possible. (see setSelectedItemIdentifier: for more details) */ +/** + Optional method. + Those wishing to indicate item selection in a toolbar should implement this method to return a non-empty array of selectable item identifiers. + If implemented, the toolbar will remember and display the selected item with a special highlight. + A selected item is one whose item identifier matches the current selected item identifier. + Clicking on an item whose identifier is selectable will automatically update the toolbar's `selectedItemIdentifier` when possible. + See `selectedItemIdentifier` for more details. + */ - (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar NS_SWIFT_UI_ACTOR; -/// Items in this set cannot be dragged or removed by the user +/** + Items in this set cannot be dragged or removed by the user. + */ - (NSSet *)toolbarImmovableItemIdentifiers:(NSToolbar *)toolbar NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(13.0), ios(16.0)); -/// Whether or not an item can be moved to a specified position in the toolbar. If implemented, this method will be called during a user drag and does not necessarily indicate the final position of an item. An index of NSNotFound indicates the item would be removed from the toolbar +/** + Whether or not an item can be moved to a specified position in the toolbar. + If implemented, this method will be called during a user drag and does not necessarily indicate the final position of an item. + An index of NSNotFound indicates the item would be removed from the toolbar. + */ - (BOOL)toolbar:(NSToolbar *)toolbar itemIdentifier:(NSToolbarItemIdentifier)itemIdentifier canBeInsertedAtIndex:(NSInteger)index NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(13.0), ios(16.0)); - /* Notifications */ -/* Before a new item is added to the toolbar, this notification is posted. This is the best place to notice a new item is going into the toolbar. For instance, if you need to cache a reference to the toolbar item or need to set up some initial state, this is the best place to do it. The notification object is the toolbar to which the item is being added. The item being added is found by referencing the NSToolbarItemKey in the userInfo. */ +# pragma mark - Notifications + +/** + Before a new item is added to the toolbar, this notification is posted. + This is the best place to notice a new item is going into the toolbar. + For instance, if you need to cache a reference to the toolbar item or need to set up some initial state, this is the best place to do it. + The notification object is the toolbar to which the item is being added. + The item being added and its new index can be found by referencing `NSToolbarItemKey` and `NSToolbarNewIndexKey` in the userInfo dictionary respectively. + */ - (void)toolbarWillAddItem:(NSNotification *)notification NS_SWIFT_UI_ACTOR; -/* After an item is removed from a toolbar the notification is sent. This allows the chance to tear down information related to the item that may have been cached. The notification object is the toolbar from which the item is being removed. The item being removed is found by referencing the NSToolbarItemKey in the userInfo. */ +/** + After an item is removed from a toolbar the notification is sent. + This allows the chance to tear down information related to the item that may have been cached. + The notification object is the toolbar from which the item is being removed. + The item being removed is found by referencing the `NSToolbarItemKey` in the userInfo. + */ - (void)toolbarDidRemoveItem:(NSNotification *)notification NS_SWIFT_UI_ACTOR; @end -/* Notifications */ +/** Notifications */ APPKIT_EXTERN NSNotificationName NSToolbarWillAddItemNotification API_AVAILABLE(ios(13.0)); APPKIT_EXTERN NSNotificationName NSToolbarDidRemoveItemNotification API_AVAILABLE(ios(13.0)); @@ -168,20 +291,14 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @interface NSToolbar(NSDeprecated) -/* - Sets the toolbar full screen accessory view. When entering full screen, the accessory view is removed from the window if necessary, and attaches underneath the toolbar. When leaving full screen, the accessory view is returned to the window, if it was in the window previously. To customize this latter behavior, you can implement the NSWindow delegate method windowWillExitFullScreen:. - */ +@property NSToolbarSizeMode sizeMode API_UNAVAILABLE(ios) API_DEPRECATED("NSToolbarSizeMode is no longer recommended and will be ignored in the future", macos(10.0, API_TO_BE_DEPRECATED)); +@property (nullable, copy) NSToolbarItemIdentifier centeredItemIdentifier API_DEPRECATED("Use the centeredItemIdentifiers property instead", macos(10.14, API_TO_BE_DEPRECATED), ios(13.0, API_TO_BE_DEPRECATED)); @property (nullable, strong) NSView *fullScreenAccessoryView API_DEPRECATED("Use NSTitlebarAccessoryViewController with NSWindow instead", macos(10.7,10.13)); - -/* - The following properties control the minimum and maximum height of the accessory view. The minimum height is used when the menu bar is hidden, and the max height to a fully revealed menu bar. During the reveal, the accessory view's frame is interpolated between its minimum and maximum height. - - If the minimum height is zero (which it is by default), the accessory view is not resized; instead a special transition is used to reveal it with the menu bar. This simplifies the accessory view's task, because it does not have to handle the case of being set to zero height. To create a fixed-height accessory view, set the min and max height to be equal. - - By default, the min height is 0 and the max height gets set to the height of the accessory view's frame when it is set. - */ @property CGFloat fullScreenAccessoryViewMinHeight API_DEPRECATED("Use NSTitlebarAccessoryViewController and its fullScreenMinHeight property with NSWindow instead.", macos(10.7,10.13)); @property CGFloat fullScreenAccessoryViewMaxHeight API_DEPRECATED("Use NSTitlebarAccessoryViewController with NSWindow instead. The max height of a titlebar accessory is implied by its view's height.", macos(10.7,10.13)); +@property BOOL showsBaselineSeparator API_DEPRECATED("No longer supported", macos(10.0, 15.0)); +@property (readonly, copy) NSDictionary *configurationDictionary API_DEPRECATED("Use -itemIdentifiers and -displayMode instead.", macos(10.0, 15.0)); +- (void)setConfigurationFromDictionary:(NSDictionary *)configDict API_DEPRECATED("Use -setItemIdentifiers: and -setDisplayMode: instead.", macos(10.0, 15.0)); @end diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbarItem.h index 269957b4..1897de50 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbarItem.h @@ -1,7 +1,7 @@ /* NSToolbarItem.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ @@ -33,66 +33,112 @@ static const NSToolbarItemVisibilityPriority NSToolbarItemVisibilityPriorityUser API_AVAILABLE(ios(13.0)) NS_SWIFT_UI_ACTOR @interface NSToolbarItem : NSObject -/* Initialize the toolbar item with an identifier which is a development language string used by the toolbar and its delegate for identification purposes. */ +/** + Initialize the toolbar item with an identifier which is a development language string used by the toolbar and its delegate for identification purposes. + */ - (instancetype)initWithItemIdentifier:(NSToolbarItemIdentifier)itemIdentifier NS_DESIGNATED_INITIALIZER; @property (readonly, copy) NSToolbarItemIdentifier itemIdentifier; -/* Use this to determine the toolbar in which an item is currently displayed. */ +/** + Use this to determine the toolbar in which an item is currently displayed. + */ @property (readonly, nullable, weak) NSToolbar *toolbar; -// ----- Setters and Getters ----- -/* Use this to set the item's label that appears in the toolbar. The implication here is that the toolbar will draw the label for the item, and a redraw is triggered by this method. The toolbar is in charge of the label area. It is fine for an item to have no toolbar label. Also, developers should make sure the length of the label is appropriate and not too long. */ +# pragma mark - Setters and Getters + +/** + Use this to set the item's label that appears in the toolbar. + The label may also be used for the default `menuFormRepresentation` of the item. + Also, developers should make sure the length of the label is appropriate and not too long. + */ @property (copy) NSString *label; -/* Use this to set the item's label that appears when the item is in the customization palette. All Items must have a palette label, and for most things it is reasonable to set them to the same string as the label used in the toolbar. */ +/** + Use this to set the item's label that appears when the item is in the customization palette. + All Items must have a palette label, and for most things it is reasonable to set them to the same string as the label used in the toolbar. + */ @property (copy) NSString *paletteLabel; /** - An array of all alternate labels this item may display. The item will use the size of the longest label to prevent resizing when the label is changed. + An array of all alternate labels this item may display. + The item will use the size of the longest label to prevent resizing when the label is changed. */ @property (copy) NSSet *possibleLabels API_AVAILABLE(macos(13.0)); -/* Use this to set a tooltip to be used when the item is displayed in the toolbar. (forwards to -view if it responds) */ +/** + Use this to set a tooltip to be used when the item is displayed in the toolbar. (forwards to `-view` if it responds) + */ @property (nullable, copy) NSString *toolTip; -/* The menu form of a toolbar item's purpose is twofold. First, when the window is too small to display an item, it will be clipped but remain accessible from a "clipped items" menu containing the menu item returned here. Second, in text only mode, the menu returned will be used to create the displayed items. Singleton menu items will be clickable, while submenu items will be represented as a pull down. For instance, say you want a button that allows you to switch between modes A, B, and C. You could represent this as a menu by : a menu item "mode" with three submenu items "A", "B", and "C". By default, this method returns a singleton menu item with item label as the title. For standard items, the target, action is set. */ +/** + The menu form of a toolbar item's purpose is twofold. + First, when the window is too small to display an item, it will be clipped but remain accessible from a "clipped items" menu containing the menu item returned here. + Second, in text only mode, the menu returned will be used to create the displayed items. + Singleton menu items will be clickable, while submenu items will be represented as a pull down. + For instance, say you want a button that allows you to switch between modes A, B, and C. + You could represent this as a menu by: a menu item "mode" with three submenu items "A", "B", and "C". + By default, this method returns a singleton menu item with item label as the title. + For standard items, the target, action is set. + */ @property (nullable, strong) NSMenuItem *menuFormRepresentation API_UNAVAILABLE(ios); -/* Tag for your own custom purpose. (forwards to -view if it responds) */ +/** + Tag for your own custom purpose. (forwards to `-view` if it responds) + */ @property NSInteger tag; -/* Set and get the action of an item. (forwards to -view if it responds) */ +/** + Set and get the action of an item. (forwards to `-view` if it responds) + */ @property (nullable, weak) id target; -/* Set and get the action of an item. For custom views, this method will call setAction:/action on the view if it responds. (forwards to -view if it responds) */ +/** + Set and get the action of an item. + For custom views, this method will call `-setAction:` on the view if it responds. (forwards to `-view` if it responds) + */ @property (nullable) SEL action; -/* Set and get the enabled flag of an item. For custom views, this method will call setEnabled:/isEnabled on the view if it responds. (forwards to -view if it responds) */ +/** + Set and get the enabled flag of an item. + For custom views, this method will call `-setEnabled:` on the view if it responds. (forwards to `-view` if it responds) + */ @property (getter=isEnabled) BOOL enabled; -/* Set and get the image of an item. For custom views, this method will call setImage:/image on the view if it responds. (forwards to -view if it responds) */ +/** + Set and get the image of an item. + For custom views, this method will call `-setImage:` on the view if it responds. (forwards to `-view` if it responds) + */ #if !TARGET_OS_IPHONE @property (nullable, strong) NSImage *image; #else @property (nullable, strong) UIImage *image API_AVAILABLE(ios(13.0)); #endif -/* Set and get the title of an item. For custom views, this method will call setTitle:/title on the view if it responds. (forwards to -view if it responds) */ +/** + Set and get the title of an item. + For custom views, this method will call `-setTitle:` on the view if it responds. (forwards to `-view` if it responds) + */ @property (copy) NSString *title API_AVAILABLE(macos(10.15), ios(13.0)); -/* +/** When set on an item without a custom view, the button produced will have a bordered style. Defaults to NO. */ @property (getter=isBordered) BOOL bordered API_AVAILABLE(macos(10.15), ios(13.0)); -/* -Whether or not the item behaves as a navigation item (i.e. back/forward) in the toolbar. Navigation items may be specially positioned by the system outside the normal list of items of the toolbar in the order specified by -toolbarDefaultItemIdentifiers:. +/** + Whether or not the item behaves as a navigation item (i.e. back/forward) in the toolbar. + Navigation items may be specially positioned by the system outside the normal list of items of the toolbar in the order specified by `-toolbarDefaultItemIdentifiers:`. + Defaults to NO. */ @property (getter=isNavigational) BOOL navigational API_AVAILABLE(macos(11.0), ios(14.0)); -/* Use setView: if you want your toolbar item to use something other than the standard. Note that, by default, many of the set/get methods will be implemented by calls forwarded to the view you set, if it responds to it. */ +/** + Items with automatically generated views will return nil from this getter. + Custom views may be provided but not all `NSToolbarItem` subclasses support custom views. + Note that, by default, many of the set/get methods will be implemented by calls forwarded to the view you set, if it responds to it. + */ @property (nullable, strong) NSView *view API_UNAVAILABLE(ios); /** @@ -101,7 +147,12 @@ Whether or not the item behaves as a navigation item (i.e. back/forward) in the */ @property (readonly, getter=isVisible) BOOL visible API_AVAILABLE(macos(12.0), ios(16.0)); -/* +/** + When an item is hidden it will not be visible in the toolbar. The item will still be visible in the customization panel. Because hidden items may be visible during user customization, use the `visible` property to determine if an item is currently displayed. Note that even hidden toolbar items are sync'd to other toolbars with a shared identifier, but its `hidden` state can be unique to each instance. Use this property to show a toolbar item in one toolbar instance but not another. + */ +@property (getter=isHidden) BOOL hidden API_AVAILABLE(macos(15.0), ios(18.0)); + +/** Unless you have already set your own custom view, you should not call these methods. The min size should be small enough to look nice in all display modes. If you do not set a min/max size, the view's size properties will be calculated using constraints. Apps linked before 10.14 will use the view's current size. @@ -110,25 +161,42 @@ Whether or not the item behaves as a navigation item (i.e. back/forward) in the @property NSSize minSize API_DEPRECATED("This property is no longer recommended. Instead, let the system automatically measure the size of the view using constraints.", macos(10.0, 12.0)) API_UNAVAILABLE(ios); @property NSSize maxSize API_DEPRECATED("This property is no longer recommended. Instead, let the system automatically measure the size of the view using constraints.", macos(10.0, 12.0)) API_UNAVAILABLE(ios); -/* When a toolbar does not have enough space to fit all its items, it must push some into the overflow menu. Items with the highest visibility priority level are choosen last for the overflow menu. The default visibilityPriority value is NSToolbarItemVisibilityPriorityStandard. To suggest that an item always remain visible, give it a value greater than NSToolbarItemVisibilityPriorityStandard, but less than NSToolbarItemVisibilityPriorityUser. In 10.7, users can no longer modify the toolbar item visibility priority. */ +/** + When a toolbar does not have enough space to fit all its items, it must push some into the overflow menu. + Items with the highest `visibilityPriority` level are chosen last for the overflow menu. + The default `visibilityPriority` value is `NSToolbarItemVisibilityPriorityStandard`. + To suggest that an item always remain visible, give it a value greater than `NSToolbarItemVisibilityPriorityStandard`, but less than `NSToolbarItemVisibilityPriorityUser`. + In 10.7, users can no longer modify the toolbar item visibility priority. + */ @property NSToolbarItemVisibilityPriority visibilityPriority; -// ----- Validation of the items ----- +# pragma mark - Validation of the items -/* Typically you should not invoke this method. This method is called by its toolbar during validation. Standard items validate themselves by sending the validateToolbarItem: validate message to the current validator. Since items with custom views don't always have meaningful target/actions, they do nothing. So for your custom items it may be useful to override this method and invent your own validation. */ +/** + Typically you should not invoke this method. + This method is called by its toolbar during validation. + Standard items validate themselves by sending the `-validateToolbarItem:` validate message to the current validator. + Since items with custom views don't always have meaningful target/actions, they do nothing. + So for your custom items it may be useful to override this method and invent your own validation. + */ - (void)validate API_AVAILABLE(ios(13.0)); -/* This property only affects automatic validation performed by NSToolbar. Explicit validation requests, such as the `-[NSToolbar validateVisibleItems]` method, will invoke the `-validate` method even if `autovalidates` is `NO`. */ +/** + This property only affects automatic validation performed by NSToolbar. + Explicit validation requests, such as the `-[NSToolbar validateVisibleItems]` method, will invoke the `-validate` method even if `autovalidates` is `NO`. + Defaults to YES. + */ @property BOOL autovalidates API_AVAILABLE(ios(13.0)); +# pragma mark - Controlling Duplicates In The Toolbar -// ----- Controlling Duplicates In The Toolbar ----- - -/* Return YES to allow dragging duplicate items into the toolbar. By default, if an item with the same identifier is already in the toolbar, dragging in will act as a move of this item. However, for instance, the separator item drags in as a duplicate always. */ -@property (readonly) BOOL allowsDuplicatesInToolbar API_UNAVAILABLE(ios); +/** + Duplicate items outside of spaces are not allowed. + */ +@property (readonly) BOOL allowsDuplicatesInToolbar API_UNAVAILABLE(ios) API_DEPRECATED("Duplicates are no longer supported.", macos(10.0, 15.0)); @end @@ -141,7 +209,10 @@ Whether or not the item behaves as a navigation item (i.e. back/forward) in the @protocol NSToolbarItemValidation -/* NSToolbarItemValidation extends the standard validation idea by introducing this new method which is sent to validators for each visible standard NSToolbarItem with a valid target/action pair. Note: This message is sent from NSToolbarItem's validate method, however validate will not send this message for items that have custom views. */ +/** + `NSToolbarItemValidation` extends the standard validation idea by introducing this new method which is sent to validators for each visible standard `NSToolbarItem` with a valid target/action pair. + Note: This message is sent from NSToolbarItem's validate method, however validate will not send this message for items that have custom views. + */ - (BOOL)validateToolbarItem:(NSToolbarItem *)item NS_SWIFT_UI_ACTOR; @end @@ -154,48 +225,62 @@ Whether or not the item behaves as a navigation item (i.e. back/forward) in the @protocol NSCloudSharingValidation -/* NSToolbarItems created with NSToolbarCloudSharingItemIdentifier use this method for further validation after sending `-validateToolbarItem:` or `-validateUserInterfaceItem:`. The validator for the item's action should return the current CKShare corresponding to the selected item, if any. The state of the item will be changed reflect the state of the CKShare. */ +/** + `NSToolbarItems` created with `NSToolbarCloudSharingItemIdentifier` use this method for further validation after sending `-validateToolbarItem:` or `-validateUserInterfaceItem:`. + The validator for the item's action should return the current CKShare corresponding to the selected item, if any. + The state of the item will be changed reflect the state of the CKShare. + */ - (nullable CKShare *)cloudShareForUserInterfaceItem:(id )item NS_SWIFT_UI_ACTOR; @end #endif -/* - These are the standard toolbar item identifiers that AppKit will automatically create when they appear in the default or allowed item sets. As such, the delegate method -toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar: will not be called for these items. +/** + These are the standard toolbar item identifiers that AppKit will automatically create when they appear in the default or allowed item sets. + As such, the delegate method `-toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:` will not be called for these items. */ -/* A space item of a standard fixed size. */ +/** A space item of a standard fixed size. */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarSpaceItemIdentifier API_AVAILABLE(ios(13.0)); -/* A space item of flexible width. */ +/** A space item of flexible width. */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarFlexibleSpaceItemIdentifier API_AVAILABLE(ios(13.0)); -/* A standard item that is configured to show the color panel when invoked. */ +/** A standard item that is configured to show the color panel when invoked. */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarShowColorsItemIdentifier API_AVAILABLE(ios(13.0)); -/* A standard item that is configured to show the font panel when invoked. */ +/** A standard item that is configured to show the font panel when invoked. */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarShowFontsItemIdentifier API_AVAILABLE(ios(13.0)); -/* A standard item that is configured to send -printDocument: to the firstResponder when invoked */ +/** A standard item that is configured to send -printDocument: to the firstResponder when invoked */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarPrintItemIdentifier API_AVAILABLE(ios(13.0)); -/* A standard item that is configured to send -toggleSidebar: to the firstResponder when invoked. */ +/** A standard item that is configured to send -toggleSidebar: to the firstResponder when invoked. */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarToggleSidebarItemIdentifier API_AVAILABLE(macos(10.11), ios(13.0)); -/* A standard item that is configured to send -toggleInspector: to the firstResponder when invoked. */ +/** A standard item that is configured to send -toggleInspector: to the firstResponder when invoked. */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarToggleInspectorItemIdentifier API_AVAILABLE(macos(14.0), ios(17.0)); -/* A standard item for cloud sharing via NSSharingServiceNameCloudSharing. It validates itself and modifies its appearance by using the NSCloudSharingValidation protocol. It sends -performCloudSharing: to the firstResponder. */ +/** A standard item for cloud sharing via NSSharingServiceNameCloudSharing. It validates itself and modifies its appearance by using the NSCloudSharingValidation protocol. It sends -performCloudSharing: to the firstResponder. */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarCloudSharingItemIdentifier API_AVAILABLE(macos(10.12)); -/* Creates a new NSTrackingSeparatorToolbarItem and automatically configures it to track the divider of the sidebar if one is discovered. */ +/** A standard item that is configured to send -showWritingTools: to the firstResponder when invoked. */ +APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarWritingToolsItemIdentifier API_AVAILABLE(macos(15.2)); + +/** + Creates a new NSTrackingSeparatorToolbarItem and automatically configures it to track the divider of the sidebar if one is discovered. + Only applies to windows with `NSWindowStyleMaskFullSizeContentView` applied. + */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarSidebarTrackingSeparatorItemIdentifier API_AVAILABLE(macos(11.0)) API_UNAVAILABLE(ios); -/* Creates a new NSTrackingSeparatorToolbarItem and automatically configures it to track the divider of the inspector if one is discovered. */ +/** + Creates a new NSTrackingSeparatorToolbarItem and automatically configures it to track the divider of the inspector if one is discovered. + Only applies to windows with `NSWindowStyleMaskFullSizeContentView` applied. + */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarInspectorTrackingSeparatorItemIdentifier API_AVAILABLE(macos(14.0)) API_UNAVAILABLE(ios); -/* +/** Deprecated Item Identifiers */ APPKIT_EXTERN NSToolbarItemIdentifier NSToolbarSeparatorItemIdentifier API_DEPRECATED("This item is no longer recommended and will be ignored on 10.7 and later.", macos(10.0, 11.0)) API_UNAVAILABLE(ios); diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbarItemGroup.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbarItemGroup.h index f565f684..544e62fa 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbarItemGroup.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSToolbarItemGroup.h @@ -1,7 +1,7 @@ /* NSToolbarItemGroup.h Application Kit - Copyright (c) 2000-2023, Apple Inc. + Copyright (c) 2000-2024, Apple Inc. All rights reserved. */ @@ -13,9 +13,10 @@ @class UIImage; #endif -/* - NSToolbarItemGroup is a subclass of NSToolbarItem which can be used to create sets of NSToolbarItems that are always attached to one another and that are added, removed, or reordered as a single unit. Properties that get set on the parent toolbar item, such as label or view, apply to the entire item. Otherwise, the individual properties are displayed adjacent to one another. - +/** + `NSToolbarItemGroup` is a subclass of `NSToolbarItem` which can be used to create sets of `NSToolbarItems` that are always attached to one another and that are added, removed, or reordered as a single unit. + Properties that get set on the parent toolbar item, such as label or view, apply to the entire item. + Otherwise, the individual properties are displayed adjacent to one another. Subitems will inherit the group's action if no action is defined on the subitem and will validate based on that action when autovalidates is enabled. */ @@ -28,15 +29,15 @@ typedef NS_ENUM(NSInteger, NSToolbarItemGroupSelectionMode) { } API_AVAILABLE(macos(10.15), ios(13.0)); typedef NS_ENUM(NSInteger, NSToolbarItemGroupControlRepresentation) { - NSToolbarItemGroupControlRepresentationAutomatic, // The representation will be chosen based on available space - NSToolbarItemGroupControlRepresentationExpanded, // All functions of the control will be visible in a horizontal representation - NSToolbarItemGroupControlRepresentationCollapsed // All functions of the control will be presented through a menu + NSToolbarItemGroupControlRepresentationAutomatic, // The representation will be chosen based on available space + NSToolbarItemGroupControlRepresentationExpanded, // All functions of the control will be visible in a horizontal representation + NSToolbarItemGroupControlRepresentationCollapsed // All functions of the control will be presented through a menu } API_AVAILABLE(macos(10.15), ios(13.0)); API_AVAILABLE(macos(10.5), ios(13.0)) @interface NSToolbarItemGroup : NSToolbarItem -/* +/** Convenience constructors for creating segmented control based toolbar items with images or text. The item returned will have a custom view for representing the control and automatically create subitems for the group. The labels array, if not nil, will be used to provide individual labels under the item for each segment of the control. @@ -50,27 +51,32 @@ API_AVAILABLE(macos(10.5), ios(13.0)) + (instancetype)groupWithItemIdentifier:(NSToolbarItemIdentifier)itemIdentifier images:(NSArray *)images selectionMode:(NSToolbarItemGroupSelectionMode)selectionMode labels:(nullable NSArray *)labels target:(nullable id)target action:(nullable SEL)action; #endif -/* Set or get the array of subitems for the toolbar item. By default, a NSToolbarItemGroup has an empty array of subitems. You should call this to set the subitems before returning the item to the toolbar. NSToolbarItemGroups may not contain other NSToolbarItemGroups as subitems. +/** + Set or get the array of subitems for the toolbar item. + By default, a `NSToolbarItemGroup` has an empty array of subitems. + You should call this to set the subitems before returning the item to the toolbar. + `NSToolbarItemGroups` may not contain other `NSToolbarItemGroups` as subitems. */ @property (copy) NSArray<__kindof NSToolbarItem *> *subitems; -/* +/** The style in which this item will be represented to the user. - Defaults to NSToolbarItemGroupControlRepresentationAutomatic. + Defaults to `NSToolbarItemGroupControlRepresentationAutomatic`. */ @property NSToolbarItemGroupControlRepresentation controlRepresentation API_AVAILABLE(macos(10.15)); -/* +/** Get and set how selection is handled by the control. + Only applies when using one of the constructors to create the item with a system defined control representation. */ @property NSToolbarItemGroupSelectionMode selectionMode API_AVAILABLE(macos(10.15)); -/* +/** The most recently selected item of the group, or -1 if nothing is selected. */ @property NSInteger selectedIndex API_AVAILABLE(macos(10.15)); -/* +/** Get and set selection of individual subitems of the group item. */ - (void)setSelected:(BOOL)selected atIndex:(NSInteger)index API_AVAILABLE(macos(10.15)); diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTouch.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTouch.h index 5b2417a6..e963dcdf 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTouch.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTouch.h @@ -1,7 +1,7 @@ /* NSTouch.h Application Kit - Copyright (c) 2009-2023, Apple Inc. + Copyright (c) 2009-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTouchBar.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTouchBar.h index 022b604a..2e960042 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTouchBar.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTouchBar.h @@ -1,7 +1,7 @@ /* NSTouchBar.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTouchBarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTouchBarItem.h index 9d638fad..7b643998 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTouchBarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTouchBarItem.h @@ -1,7 +1,7 @@ /* NSTouchBarItem.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTrackingArea.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTrackingArea.h index 6541be8e..9df8f329 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTrackingArea.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTrackingArea.h @@ -1,7 +1,7 @@ /* NSTrackingArea.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTrackingSeparatorToolbarItem.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTrackingSeparatorToolbarItem.h index 1579cd70..35118593 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTrackingSeparatorToolbarItem.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTrackingSeparatorToolbarItem.h @@ -1,7 +1,7 @@ /* NSTrackingSeparatorToolbarItem.h Application Kit - Copyright (c) 2019-2023, Apple Inc. + Copyright (c) 2019-2024, Apple Inc. All rights reserved. */ @@ -13,19 +13,22 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) API_AVAILABLE(macos(11.0)) API_UNAVAILABLE(ios) @interface NSTrackingSeparatorToolbarItem : NSToolbarItem -/* - Creates a new NSTrackingSeparatorToolbarItem and configures it to attempt to visually align with the specified divider of the splitView. - The splitView must be in the same window as the toolbar containing this item by the time the toolbar is shown. Only vertical split views are supported. + +/** + Creates a new `NSTrackingSeparatorToolbarItem` and configures it to attempt to visually align with the specified divider of the `splitView`. + The `splitView` must be in the same window as the toolbar containing this item by the time the toolbar is shown. + Only vertical `splitViews` are supported. */ + (instancetype)trackingSeparatorToolbarItemWithIdentifier:(NSToolbarItemIdentifier)identifier splitView:(NSSplitView *)splitView dividerIndex:(NSInteger)dividerIndex API_UNAVAILABLE(ios); -/* - The splitView must be in the same window as the toolbar containing this item by the time the toolbar is shown. Only vertical split views are supported. +/** + The `splitView` must be in the same window as the toolbar containing this item by the time the toolbar is shown. + Only vertical `splitViews` are supported. */ @property (strong) NSSplitView *splitView API_UNAVAILABLE(ios); -/* - The specific divider of the splitView which will be tracked. +/** + The specific divider of the `splitView` which will be tracked. */ @property NSInteger dividerIndex API_UNAVAILABLE(ios); diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTreeController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTreeController.h index da2a115a..97c22ced 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTreeController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTreeController.h @@ -1,7 +1,7 @@ /* NSTreeController.h Application Kit - Copyright (c) 2003-2023, Apple Inc. + Copyright (c) 2003-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTreeNode.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTreeNode.h index 4cfc6ab7..b26ff4e5 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTreeNode.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTreeNode.h @@ -1,7 +1,7 @@ /* NSTreeNode.h AppKit - Copyright (c) 2007-2023, Apple Inc. + Copyright (c) 2007-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSTypesetter.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSTypesetter.h index 15123404..3a1512a2 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSTypesetter.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSTypesetter.h @@ -1,7 +1,7 @@ #if !__has_include() /* NSTypesetter.h - Copyright (c) 1994-2023, Apple Inc. All rights reserved. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. An abstract class to lay glyphs out in horizontal or vertical boxes */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserActivity.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserActivity.h index 9ab2bd98..18a2010f 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserActivity.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserActivity.h @@ -1,7 +1,7 @@ /* NSUserActivity.h Application Kit - Copyright (c) 2014-2023, Apple Inc. + Copyright (c) 2014-2024, Apple Inc. All rights reserved. */ @@ -20,16 +20,16 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @protocol NSUserActivityRestoring -/* This method exists to be overridden and will be called from the main thread. It will be called on any objects passed to the restorationHandler given to application:continueUserActivity:restorationHandler: below. You should use the state in the userInfo to restore the object. On OS X, activities managed by NSDocument can be restored automatically, if NO is returned from application:continueActivity:restorationHandler: (or it is unimplemented). In this situation, the document will be opened via -[NSDocumentController openDocumentWithContentsOfURL:display:completionHandler:], and will have restoreUserActivityState: called on it. */ +/* This method exists to be overridden and will be called from the main thread. It will be called on any objects passed to the restorationHandler given to application:continueUserActivity:restorationHandler: below. You should use the state in the userInfo to restore the object. On macOS, activities managed by NSDocument can be restored automatically, if NO is returned from application:continueActivity:restorationHandler: (or it is unimplemented). In this situation, the document will be opened via -[NSDocumentController openDocumentWithContentsOfURL:display:completionHandler:], and will have restoreUserActivityState: called on it. */ - (void)restoreUserActivityState:(NSUserActivity *)userActivity NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.10)); @end @interface NSResponder (NSUserActivity) /* - Setting an NSUserActivity will cause it to become managed by AppKit/UIKIt. NSUserActivities managed by AppKit/UIKIt will be saved automatically at an appropriate time. You will have an opportunity to add state representing the user’s activity via the below updateUserActivityState: override. It is recommended that you override the updateUserActivityState: method to lazily write any state to the userInfo. + Setting an NSUserActivity will cause it to become managed by AppKit/UIKit. NSUserActivities managed by AppKit/UIKit will be saved automatically at an appropriate time. You will have an opportunity to add state representing the user’s activity via the below updateUserActivityState: override. It is recommended that you override the updateUserActivityState: method to lazily write any state to the userInfo. - On OS X, NSUserActivities managed by NSResponder will automatically becomeCurrent based on the main window and the responder chain. + On macOS, NSUserActivities managed by NSResponder will automatically becomeCurrent based on the main window and the responder chain. To unassociate an object from the user activity, you can set this to nil. If no objects are associated with an NSUserActivity managed by AppKit/UIKit, it will be removed. @@ -49,13 +49,13 @@ APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST /* This works just like the above responder methods for the most part. - On OS X, NSUserActivities managed by NSDocument will automatically become current when any of the document window controller's window's become main. You will need to invoke [[document userActivity] becomeCurrent] at an appropriate time if there aren't any. + On macOS, NSUserActivities managed by NSDocument will automatically become current when any of the document window controller's window's become main. You will need to invoke [[document userActivity] becomeCurrent] at an appropriate time if there aren't any. - If there is a CFBundleDocumentTypes entry for the document's type with a NSUbiquitousDocumentUserActivityType key, AppKit/UIKIt will automatically create an NSUserActivity with the given activityType when the document is ubiquitous. When it is non-ubiquitous, the userActivity will be nil. Note that userActivity is KVO observable, in case the userActivity is being shared with other objects that need to be kept in sync as the document moves into and out of iCloud. + If there is a CFBundleDocumentTypes entry for the document's type with a NSUbiquitousDocumentUserActivityType key, AppKit/UIKit will automatically create an NSUserActivity with the given activityType when the document is ubiquitous. When it is non-ubiquitous, the userActivity will be nil. Note that userActivity is KVO observable, in case the userActivity is being shared with other objects that need to be kept in sync as the document moves into and out of iCloud. */ @property (nullable, strong) NSUserActivity *userActivity API_AVAILABLE(macos(10.10)); -/* On OS X, The default implementation of this will put the fileURL into the userInfo with the NSUserActivityDocumentURLKey. NSDocument will automatically call needsSave on the userActivity when the fileURL changes. */ +/* On macOS, the default implementation of this will put the fileURL into the userInfo with the NSUserActivityDocumentURLKey. NSDocument will automatically call needsSave on the userActivity when the fileURL changes. */ - (void)updateUserActivityState:(NSUserActivity *)activity API_AVAILABLE(macos(10.10)); @end diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserDefaultsController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserDefaultsController.h index e9388144..69e843ea 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserDefaultsController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserDefaultsController.h @@ -1,7 +1,7 @@ /* NSUserDefaultsController.h Application Kit - Copyright (c) 2002-2023, Apple Inc. + Copyright (c) 2002-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceCompression.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceCompression.h index b7e1745d..f4b6c045 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceCompression.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceCompression.h @@ -1,7 +1,7 @@ /* NSUserInterfaceCompression.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceItemIdentification.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceItemIdentification.h index 8e322775..66e6d4d8 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceItemIdentification.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceItemIdentification.h @@ -1,7 +1,7 @@ /* NSUserInterfaceItemIdentification.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceItemSearching.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceItemSearching.h index 0e74c0d6..f852d480 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceItemSearching.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceItemSearching.h @@ -1,7 +1,7 @@ /* NSUserInterfaceItemSearching.h Application Kit - Copyright (c) 2008-2023, Apple Inc. + Copyright (c) 2008-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceLayout.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceLayout.h index c0df6b07..f7f06eaa 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceLayout.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceLayout.h @@ -1,7 +1,7 @@ /* NSUserInterfaceLayout.h Application Kit - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceValidation.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceValidation.h index d1530399..12c08799 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceValidation.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSUserInterfaceValidation.h @@ -1,7 +1,7 @@ /* NSUserInterfaceValidation.h Application Kit - Copyright (c) 1999-2023, Apple Inc. + Copyright (c) 1999-2024, Apple Inc. All rights reserved. */ @@ -11,12 +11,12 @@ /* This file defines the protocols used by AppKit's standard user interface validation mechanism. The NSValidatedUserInterfaceItem protocol must be implemented by validated objects. The validated object should send a -validateUserInterfaceItem: message to its validator. A validator can be determined by calling the -[NSApplication targetForAction:to:from:] method from the -update method in the validated object. -You can extend this functionality by introducing a new set of protocols that are targeted to your specific validated objects. NSMenuItem protocol is one example extending this validation machinary to allow validators to modify menu items being validated. These are the steps to extend UI validation: +You can extend this functionality by introducing a new set of protocols that are targeted to your specific validated objects. NSMenuItem protocol is one example extending this validation machinery to allow validators to modify menu items being validated. These are the steps to extend UI validation: 1) Declare a subprotocol of NSValidatedUserInterfaceItem You can add as many features as you want for your validated objects in this protocol i.e. - @protocol NSValidatedToobarItem + @protocol NSValidatedToolbarItem - (NSImage *)image; - (void)setImage:(NSImage *)image - (NSString *)toolTip; @@ -27,7 +27,7 @@ You can extend this functionality by introducing a new set of protocols that are You should declare your new selector that takes your object as the argument. i.e. @protocol NSToolbarItemValidation - - (BOOL)validateToolbarItem:(id )item; + - (BOOL)validateToolbarItem:(id )item; @end 3) Implement your -update method @@ -54,7 +54,7 @@ You can extend this functionality by introducing a new set of protocols that are i.e. @implementation NSTextView (NSToolbarItemValidation) - - (BOOL)validateToolbarItem:(id )item { + - (BOOL)validateToolbarItem:(id )item { BOOL returnValue = [self validateUserInterfaceItem:item]; // Your own validation diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSView.h index 3401c6d0..aa8ec9ab 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSView.h @@ -1,7 +1,7 @@ /* NSView.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -22,6 +22,7 @@ #import @protocol NSDraggingSource; +@class NSWritingToolsCoordinator; NS_HEADER_AUDIT_BEGIN(nullability, sendability) APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST @@ -403,6 +404,26 @@ typedef NSInteger NSToolTipTag; @end #endif +/*! + @protocol `NSViewContentSelectionInfo` + @abstract A protocol to request information from NSView subclasses about the selected content in the view. + */ +@protocol NSViewContentSelectionInfo +/*! + @method `selectionAnchorRect` + + @abstract Provides a rect that is used to position system UI, such as context menus and popovers, at an appropriate location in the view. + + @discussion This method is used in macOS 15 to display a context menu in response to the context menu keyboard hotkey. The menu will be displayed adjacent to the anchor rect, but not overlapping. It is not used when displaying a context menu in response to a mouse or trackpad click; in that case, the mouse event has location information, and the context menu is displayed at the location of the event. + + @return A bounding rect in view coordinates. If the view has a current selection, then this rect should typically contain the entire selection, but this is not required if the view wants to position system UI at an alternate location. The return value may be CGRectNull to indicate that no system UI should be presented for the view at this time; in that case, the next responder is examined for a context menu. + + @seealso `showContextMenuForSelection:` +*/ +@optional +@property (readonly) NSRect selectionAnchorRect API_AVAILABLE(macos(15.0)); +@end + @interface NSView(NSKeyboardUI) @property (nullable, assign) NSView *nextKeyView; @property (nullable, readonly, assign) NSView *previousKeyView; @@ -613,6 +634,10 @@ API_AVAILABLE(macos(14.0)) @end +API_AVAILABLE(macos(15.2)) +@interface NSView (NSWritingToolsCoordinator) +@property (nullable) NSWritingToolsCoordinator *writingToolsCoordinator; +@end /* Notifications */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSViewController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSViewController.h index 535481f8..35fb3bc8 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSViewController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSViewController.h @@ -1,7 +1,7 @@ /* NSViewController.h Application Kit - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSVisualEffectView.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSVisualEffectView.h index a3e5785b..9fd9f74a 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSVisualEffectView.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSVisualEffectView.h @@ -1,7 +1,7 @@ /* NSVisualEffectView.h Application Kit - Copyright (c) 2014-2023, Apple Inc. + Copyright (c) 2014-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindow.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindow.h index 2bda2350..00160dcf 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindow.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindow.h @@ -1,7 +1,7 @@ /* NSWindow.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ @@ -81,13 +81,11 @@ enum { * @typedef NSWindowSharingType * * @const NSWindowSharingNone Window contents may not be read by another process. - * @const NSWindowSharingReadOnly Window contents may be read but not modified by another process. - * @const NSWindowSharingReadWrite Window contents may be read or modified by another process. + * @const NSWindowSharingReadOnly Window contents may be read by another process. */ typedef NS_ENUM(NSUInteger, NSWindowSharingType) { NSWindowSharingNone = 0, NSWindowSharingReadOnly = 1, - NSWindowSharingReadWrite = 2 } API_AVAILABLE(macos(10.5)); /*! @@ -111,7 +109,7 @@ typedef NS_ENUM(NSUInteger, NSWindowSharingType) { * * @discussion You may specify at most one of \c NSWindowCollectionBehaviorParticipatesInCycle or \c NSWindowCollectionBehaviorIgnoresCycle. If unspecified, the window gets the default behavior determined by its window level. * - * @const NSWindowCollectionBehaviorParticipatesInCycle Default behavior if `windowLevel != NSNormalWindowLevel`. + * @const NSWindowCollectionBehaviorParticipatesInCycle Default behavior if `windowLevel == NSNormalWindowLevel`. * @const NSWindowCollectionBehaviorIgnoresCycle Default behavior if `windowLevel != NSNormalWindowLevel`. * * @discussion You may specify at most one of \c NSWindowCollectionBehaviorFullScreenPrimary, \c NSWindowCollectionBehaviorFullScreenAuxiliary, or \c NSWindowCollectionBehaviorFullScreenNone. @@ -238,7 +236,7 @@ typedef NS_ENUM(NSInteger, NSWindowTitleVisibility) { * * @const NSWindowToolbarStyleAutomatic The default value. The style will be determined by the window's given configuration. * @const NSWindowToolbarStyleExpanded The toolbar will appear below the window title. - * @const NSWindowToolbarStylePreference The toolbar will appear below the window title and the items in the toolbar will attempt to have equal widths when possible. + * @const NSWindowToolbarStylePreference For Settings windows only. The toolbar will appear below the window title and the items in the toolbar will attempt to have equal widths when possible. * @const NSWindowToolbarStyleUnified The window title will appear inline with the toolbar when visible. * @const NSWindowToolbarStyleUnifiedCompact Same as \c NSWindowToolbarStyleUnified, but with reduced margins in the toolbar allowing more focus to be on the contents of the window. */ @@ -352,6 +350,12 @@ typedef NSString * NSWindowTabbingIdentifier NS_SWIFT_BRIDGED_TYPEDEF; - (void)setFrameOrigin:(NSPoint)point; - (void)setFrameTopLeftPoint:(NSPoint)point; - (NSPoint)cascadeTopLeftFromPoint:(NSPoint)topLeftPoint; + +/*! + @abstract The frame to use when cascading or sizing a new window based on the receiver's position or size. This may be different from `frame` when the receiver is positioned by the system. +*/ +@property (readonly) NSRect cascadingReferenceFrame API_AVAILABLE(macos(15.0)); + @property (readonly) NSRect frame; /*! Subclasses can override \c animationResizeTime: to control the total time for the frame change. @@ -434,7 +438,7 @@ typedef NSString * NSWindowTabbingIdentifier NS_SWIFT_BRIDGED_TYPEDEF; @property (readonly) BOOL canBecomeKeyWindow; @property (readonly) BOOL canBecomeMainWindow; -/*! Makes the window key and main if eligible, updating NSAppication's `-keyWindow` and `-mainWindow` properties. +/*! Makes the window key and main if eligible, updating NSApplication's `-keyWindow` and `-mainWindow` properties. */ - (void)makeKeyWindow; @@ -460,8 +464,9 @@ typedef NSString * NSWindowTabbingIdentifier NS_SWIFT_BRIDGED_TYPEDEF; @property (readonly) BOOL worksWhenModal; -/*! Normally, application termination is prohibited when a modal window or sheet is open, without consulting the application delegate. Some windows like the open panel or toolbar customization sheet should not prevent application termination. `-setPreventsApplicationTerminationWhenModal:NO` on a modal window or sheet will override the default behavior and allow application termination to proceed, either through the sudden termination path if enabled, or on to the next step of consulting the application delegate. By default, `-preventsApplicationTerminationWhenModal` returns \c YES - */ +/// A Boolean value that indicates whether or not to prevent application termination when the receiving window is presented modally. +/// The value of this property is `YES` if the window should prevent application termination when modal; otherwise, `NO`. +/// The default value is `YES`. However, note that some window subclasses and some windows created indirectly (like those created by UI frameworks like AppKit and SwiftUI), may have different default values. For example, the Open panel and toolbar customization sheets should not prevent application termination, so those windows have `preventsApplicationTerminationWhenModal` set to `NO`. Some `NSAlert`s, like those that are simply informational, have windows that do not prevent application termination by default. Setting this property overrides the default behavior. @property BOOL preventsApplicationTerminationWhenModal API_AVAILABLE(macos(10.6)); /* Methods to convert window coordinates to screen coordinates */ @@ -512,7 +517,7 @@ typedef NSString * NSWindowTabbingIdentifier NS_SWIFT_BRIDGED_TYPEDEF; @property (getter=isOpaque) BOOL opaque; -/*! `-setSharingType:` specifies whether the window content can be read and/or written from another process. The default sharing type is \c NSWindowSharingReadOnly, which means other processes can read the window content (eg. for window capture) but cannot modify it. If you set your window sharing type to \c NSWindowSharingNone, so that the content cannot be captured, your window will also not be able to participate in a number of system services, so this setting should be used with caution. If you set your window sharing type to \c NSWindowSharingReadWrite, other processes can both read and modify the window content. +/*! `-setSharingType:` specifies whether the window content can be read from another process. The default sharing type is \c NSWindowSharingReadOnly, which means other processes can read the window content (eg. for window capture) but cannot modify it. If you set your window sharing type to \c NSWindowSharingNone, so that the content cannot be captured, your window will also not be able to participate in a number of system services, so this setting should be used with caution. */ @property NSWindowSharingType sharingType API_AVAILABLE(macos(10.5)); @@ -522,11 +527,6 @@ typedef NSString * NSWindowTabbingIdentifier NS_SWIFT_BRIDGED_TYPEDEF; @property BOOL displaysWhenScreenProfileChanges; -/*! - In recent macOS versions this method does not do anything and should not be called. - */ -- (void)disableScreenUpdatesUntilFlush; - /*! This API controls whether the receiver is permitted onscreen before the user has logged in. This property is off by default. Alert panels and windows presented by input managers are examples of windows which should have this property set. */ @property BOOL canBecomeVisibleWithoutLogin API_AVAILABLE(macos(10.5)); @@ -735,7 +735,7 @@ typedef NSString * NSWindowTabbingIdentifier NS_SWIFT_BRIDGED_TYPEDEF; A window that is replacing the reciever in representing the user's current activity. @param completionHandler A completion block that is called after the request finishes. - @param error + @c error In the event of a failed transfer request, a non-nil error contains details about the failure. */ - (void)transferWindowSharingToWindow:(NSWindow *)window completionHandler:(void(^)(NSError * _Nullable error))completionHandler API_AVAILABLE(macos(13.3)); @@ -745,6 +745,30 @@ typedef NSString * NSWindowTabbingIdentifier NS_SWIFT_BRIDGED_TYPEDEF; */ @property (readonly) BOOL hasActiveWindowSharingSession API_AVAILABLE(macos(13.3)); +/*! + @abstract Request sharing of window. If there is an available ScreenCaptureKit sharing session, an alert will be presented asking the user to confirm the share + @param window + The window to share + @param completionHandler + A completion block that is called after the request finishes. + @c error + The error will be non-nil if the request does not result in a window being shared. The error will be NSUserCancelledError if there is no ScreenCaptureKit session, or if the user rejects the offer to share. If sharing fails for some other reason, the error will provide the details. + */ +- (void)requestSharingOfWindow:(NSWindow *)window completionHandler:(void (^)(NSError * _Nullable error))completionHandler NS_SWIFT_NAME(requestSharingOfWindow(_:completionHandler:)) API_AVAILABLE(macos(15.0)); + +/*! + @abstract Request sharing of window to be provided later. If there is an available ScreenCaptureKit sharing session, an alert will be presented asking the user to confirm the share. The delegate will be asked to provide the window to share via windowForSharingRequestFromWindow: + @param image + An image showing a preview of the window to share + @param title + The title to show in a confirmation dialog + @param completionHandler + A completion block that is called after the request finishes. + @c error + The error will be non-nil if the request does not result in a window being shared. The error will be NSUserCancelledError if there is no ScreenCaptureKit session, or if the user rejects the offer to share. If sharing fails for some other reason, the error will provide the details. + */ +- (void)requestSharingOfWindowUsingPreview:(NSImage *)image title:(NSString *)title completionHandler:(void (^)(NSError * _Nullable error))completionHandler NS_SWIFT_NAME(requestSharingOfWindow(usingPreview:title:completionHandler:)) API_AVAILABLE(macos(15.0)); + #pragma mark - Other /*! Retrieve the layout direction of the window titlebar: this includes the standard window buttons (close/minimize/maximize buttons) and the title for this window. In general, this will return "right to left" (RTL) if the primary system language is RTL. The layout direction may be RTL even in applications that do not have a RTL language localization. This value should be utilized if an application uses titlebarAppearsTransparent and places controls underneath the titlebar. @@ -781,21 +805,13 @@ typedef NSString * NSWindowTabbingIdentifier NS_SWIFT_BRIDGED_TYPEDEF; @end @interface NSWindow(NSDrag) -- (void)dragImage:(NSImage *)image at:(NSPoint)baseLocation offset:(NSSize)initialOffset event:(NSEvent *)event pasteboard:(NSPasteboard *)pboard source:(id)sourceObj slideBack:(BOOL)slideFlag; -- (void)registerForDraggedTypes:(NSArray *)newTypes; -- (void)unregisterDraggedTypes; -@end +- (NSDraggingSession *)beginDraggingSessionWithItems:(NSArray *)items event:(NSEvent *)event source:(id)source NS_SWIFT_NAME(beginDraggingSession(items:event:source:)) API_AVAILABLE(macos(15.0)); -@interface NSWindow(NSCarbonExtensions) +- (void)dragImage:(NSImage *)image at:(NSPoint)baseLocation offset:(NSSize)initialOffset event:(NSEvent *)event pasteboard:(NSPasteboard *)pboard source:(id)sourceObj slideBack:(BOOL)slideFlag API_DEPRECATED("Use -[NSWindow beginDraggingSessionWithItems:event:source:] instead.", macos(10.0, API_TO_BE_DEPRECATED)); -/*! Create an \c NSWindow for a Carbon window - \c windowRef must be a Carbon \c WindowRef - see `MacWindows.h`. This method can only be called on \c NSWindow, and not subclasses of \c NSWindow. On 10.11, it will throw an exception if this is done. - */ -- (nullable NSWindow *)initWithWindowRef:(void * /* WindowRef */)windowRef; - -/*! Return the Carbon \c WindowRef for this window, creating if necessary: - see `MacWindows.h`. - */ -@property (readonly) void * /* WindowRef */windowRef NS_RETURNS_INNER_POINTER; +- (void)registerForDraggedTypes:(NSArray *)newTypes; +- (void)unregisterDraggedTypes; @end API_AVAILABLE(macos(14.0)) @@ -879,6 +895,10 @@ API_AVAILABLE(macos(14.0)) */ - (NSArray> *_Nullable)previewRepresentableActivityItemsForWindow:(NSWindow *)window NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(13.2)) API_UNAVAILABLE(ios); +/*! Method called to get the window to share once sharing is confirmed, after a request is initiated by requestSharingOfWindowUsingPreview:title:completionHandler:. Implement this on the delegate of the requesting window + */ +- (nullable NSWindow *)windowForSharingRequestFromWindow:(NSWindow *)window NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(15.0)); + /* Notifications */ - (void)windowDidResize:(NSNotification *)notification NS_SWIFT_UI_ACTOR; @@ -1009,8 +1029,12 @@ typedef NS_ENUM(NSUInteger, NSWindowBackingLocation) { @property NSWindowBackingLocation preferredBackingLocation API_DEPRECATED("This property does not do anything and should not be used", macos(10.5,10.14)); @property (readonly) NSWindowBackingLocation backingLocation API_DEPRECATED("This property does not do anything and should not be used", macos(10.5,10.14)); -// showsResizeIndicator is soft-deprecated in 10.14. It is ignored on 10.7 and newer, and should not be used. -@property BOOL showsResizeIndicator; +@property BOOL showsResizeIndicator API_DEPRECATED("This property does not do anything and should not be used.", macos(10.0,15.0)); + +- (nullable NSWindow *)initWithWindowRef:(void * /* WindowRef */)windowRef API_DEPRECATED("This method should not be used.", macos(10.0,15.0)); +@property (readonly) void * /* WindowRef */windowRef NS_RETURNS_INNER_POINTER API_DEPRECATED("This method should not be used.", macos(10.0,15.0)); + +- (void)disableScreenUpdatesUntilFlush API_DEPRECATED("This method does not do anything and should not be called.", macos(10.0,15.0)); @end @@ -1039,6 +1063,8 @@ static const NSWindowButton NSWindowFullScreenButton API_DEPRECATED("The standar */ static const NSWindowLevel NSDockWindowLevel API_DEPRECATED("", macos(10.0,10.13)) = kCGDockWindowLevel; +static const NSWindowSharingType NSWindowSharingReadWrite NS_SWIFT_NAME(NSWindowSharingType.readWrite) API_DEPRECATED("Use NSWindowSharingReadOnly instead", macos(10.5, 15.0)) = (NSWindowSharingType)2; + API_UNAVAILABLE_END diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowController.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowController.h index a78696b1..e6302aad 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowController.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowController.h @@ -1,7 +1,7 @@ /* NSWindowController.h Application Kit - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowRestoration.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowRestoration.h index c31c4f72..0b786e41 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowRestoration.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowRestoration.h @@ -1,7 +1,7 @@ /* NSWindowRestoration.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowScripting.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowScripting.h index faa35e95..61481c46 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowScripting.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowScripting.h @@ -1,7 +1,7 @@ /* NSWindowScripting.h AppKit Framework - Copyright (c) 1997-2023, Apple Inc. + Copyright (c) 1997-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowTab.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowTab.h index 42b064ea..34091d56 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowTab.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowTab.h @@ -1,7 +1,7 @@ /* NSWindowTab.h Application Kit - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowTabGroup.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowTabGroup.h index c4626ea9..c14d16c9 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowTabGroup.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSWindowTabGroup.h @@ -1,7 +1,7 @@ /* NSWindowTabGroup.h Application Kit - Copyright (c) 2017-2023, Apple Inc. + Copyright (c) 2017-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSWorkspace.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSWorkspace.h index 265bfa74..ecb4cb15 100644 --- a/Frameworks/AppKit.framework/Versions/C/Headers/NSWorkspace.h +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSWorkspace.h @@ -1,7 +1,7 @@ /* NSWorkspace.h Application Kit - Copyright (c) 1994-2023, Apple Inc. + Copyright (c) 1994-2024, Apple Inc. All rights reserved. */ diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSWritingToolsCoordinator.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSWritingToolsCoordinator.h new file mode 100644 index 00000000..809b1f06 --- /dev/null +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSWritingToolsCoordinator.h @@ -0,0 +1,1089 @@ +/* + NSWritingToolsCoordinator.h + Application Kit + Copyright (c) 2024, Apple Inc. + All rights reserved. +*/ + +#import +#import +#import +#import + +APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST +NS_ASSUME_NONNULL_BEGIN + +@class NSWritingToolsCoordinator; +@class NSWritingToolsCoordinatorContext; +@class NSWritingToolsCoordinatorAnimationParameters; +@class NSTextPreview; +@class NSAttributedString; +@class NSView; +@class NSBezierPath; +@class NSUUID; +@protocol NSWritingToolsCoordinatorDelegate; + +#pragma mark NSWritingToolsCoordinator +/// Constants that specify the reason you updated your view’s content +/// outside of the Writing Tools workflow. +/// +/// If you modify your view’s text storage while Writing Tools is active, +/// report those changes to your ``NSWritingToolsCoordinator`` object +/// so it can track them correctly. Call the +/// ``NSWritingToolsCoordinator/updateRange(_:with:reason:forContextWithIdentifier:)`` +/// method to report changes that occur inside one of your context objects. Call the +/// ``NSWritingToolsCoordinator/updateForReflowedTextInContextWithIdentifier(_:)`` +/// method for changes that affect the layout of your text, such as text insertions +/// before a context object or changes to your view’s frame rectangle. +typedef NS_ENUM(NSInteger, NSWritingToolsCoordinatorTextUpdateReason) { + + /// An operation that involved a person editing the text in your view. + /// + /// Specify this option when the changes come from the text input system. + NSWritingToolsCoordinatorTextUpdateReasonTyping, + + /// An operation that changed the view’s text as part of an undo or + /// redo command. + /// + /// Specify this option when an undo or redo command initiated the + /// change to your view. + NSWritingToolsCoordinatorTextUpdateReasonUndoRedo, +} API_AVAILABLE(macos(15.2)) NS_SWIFT_NAME(NSWritingToolsCoordinator.TextUpdateReason); + +/// The states that indicate the current activity, if any, Writing Tools +/// is performing in your view. +/// +/// Making changes to your view requires several different levels of +/// interaction. Initially, Writing Tools displays its UI and collects +/// information about what the person wants to do. When the person selects +/// an operation, Writing Tools sends the relevant details to a large language +/// model (LLM) and processes the results. It then works with the custom view to +/// integrate any changes into the view’s text storage. During each +/// of these activities, the coordinator reflects what’s happening in +/// its ``NSWritingToolsCoordinator/state`` property. You can use +/// the current state as a guide to making decisions in other parts of your view. +typedef NS_ENUM(NSInteger, NSWritingToolsCoordinatorState) { + // Open question: Do we also want a `Disabled` state? + + /// A state that indicates Writing Tools isn’t currently performing + /// any work on your view’s content. + /// + /// The coordinator starts in the `inactive` state, and transitions + /// immediately to the ``noninteractive`` or ``interactiveResting`` + /// state when someone chooses an option from the Writing Tools UI. + /// After the coordinator finishes incorporating any changes for the + /// current operation, it returns to the `inactive` state and waits + /// for the person to choose a different option or dismiss the Writing Tools UI. + NSWritingToolsCoordinatorStateInactive, // Writing Tools is not active + + /// A state that indicates Writing Tools is handling interactions in + /// the system UI, instead of in your view. + /// + /// Writing Tools transitions to this state when the coordinator uses + /// the ``NSWritingToolsBehavior/limited`` experience or when someone chooses an + /// option that displays its results in the Writing Tools UI. When + /// the person accepts the changes from the tool or dismisses the + /// Writing Tools UI, the coordinator returns to the ``inactive`` + /// state. If the person discards the change and selects a tool with + /// an interactive experience instead, the coordinator transitions + /// to the ``interactiveResting`` state. + NSWritingToolsCoordinatorStateNoninteractive, // Writing Tools is presenting UI, and the WTC may call the -writingToolsCoordinator:replaceRange:inContext:withText:reason: delegate method (with NSWritingToolsCoordinatorTextReplacementReasonNoninteractive) if the textual view is editable + + /// A state that indicates Writing Tools is in the resting state + /// for an inline editing experience. + /// + /// When someone initially selects a tool with an interactive experience, + /// the coordinator transitions briefly to this state and starts the + /// operation. The coordinator transitions swiftly to the ``interactiveStreaming`` + /// state when it submits the request and delivers the results to your + /// view. When it finishes delivering the results, it transitions back + /// to the `interactiveResting` state and awaits further commands. If + /// the person accepts the changes or dismisses the Writing Tools UI, + /// the coordinator transitions from this state to the ``inactive`` state. + NSWritingToolsCoordinatorStateInteractiveResting, // Writing Tools is providing the full inline-editing experience, and has delivered a complete set of results. + + /// A state that indicates Writing Tools is processing a request and + /// incorporating changes interactively into your view. + /// + /// The coordinator transitions swiftly from the ``interactiveResting`` + /// state to this state at the start of an operation. In this state, + /// the coordinator submits the request for processing and delivers + /// the results back to your view. When the coordinator finishes delivering + /// the results, it transitions back to the ``interactiveResting`` state. + NSWritingToolsCoordinatorStateInteractiveStreaming, // Writing Tools is providing the full inline-editing experience, and is updating text, either because results are provided from AppleIntelligence, or because user interaction has requested changes, such as showing a different revision +} API_AVAILABLE(macos(15.2)) NS_SWIFT_NAME(NSWritingToolsCoordinator.State); + +/// Options that indicate whether Writing Tools is animating changes to +/// your view’s text. +/// +/// During an operation, Writing Tools delivers replacement text to the +/// delegate of the active ``NSWritingToolsCoordinator`` object. Depending +/// on the configured experience for your view, it delivers these changes +/// as either interactive or noninteractive replacements. For interactive +/// replacements, Writing Tools animates the change automatically and provides +/// you with the information you need to perform any related animations. +typedef NS_ENUM(NSInteger, NSWritingToolsCoordinatorTextReplacementReason) { + + /// An option to animate the replacement of text in your view. + /// + /// When Writing Tools requests an interactive change in your delegate’s + /// ``NSWritingToolsCoordinator/writingToolsCoordinator(_:replaceRange:inContext:proposedText:reason:animationParameters:completion:)`` + /// method, it passes a valid set of animation parameters to that method. + /// Update your view’s text storage and use the provided ``NSWritingToolsCoordinator/AnimationParameters`` + /// type to create any view-specific animations you need to support the + /// animated replacement of the text. + NSWritingToolsCoordinatorTextReplacementReasonInteractive, // animating a chunk from a proofreading or rewrite inline delivery + + /// An option to replace the text in your view without animating the change. + /// + /// When Writing Tools requests a noninteractive change in your delegate’s + /// ``NSWritingToolsCoordinator/writingToolsCoordinator(_:replaceRange:inContext:proposedText:reason:animationParameters:completion:)`` + /// method, update your view’s text storage without animating the change. + NSWritingToolsCoordinatorTextReplacementReasonNoninteractive, // an unanimated replacement prompted from writing tools, perhaps copied from the overlay-panel experience, perhaps a reverted rewrite or individual proofreading suggestion, and so forth +} API_AVAILABLE(macos(15.2)) NS_SWIFT_NAME(NSWritingToolsCoordinator.TextReplacementReason); + +/// Options that indicate how much of your content Writing Tools requested. +/// +/// At the start of any Writing Tools interaction, you provide the text for +/// the system to evaluate from your ``NS/UIWritingToolsCoordinator/Delegate`` +/// object. The request for your content comes with a scope constant that +/// indicates how much of your view’s text to provide. +typedef NS_ENUM(NSInteger, NSWritingToolsCoordinatorContextScope) { + + /// An option to provide only the view’s currently selected text. + /// + /// With this option, include the selected text in your context object, + /// along with some additional text before and after the selection. When + /// performing changes inline with your view’s content, Writing Tools + /// applies animations only to the selected text. + NSWritingToolsCoordinatorContextScopeUserSelection, // inline editing on a user selection; Writing Tools visual effects appear within the text view + + /// An option to provide all of your view’s text. + /// + /// With this option, include all of the text your view manages. If your + /// view has multiple text storage objects, create a separate context object + /// for each one. + NSWritingToolsCoordinatorContextScopeFullDocument, // full document is needed independent of user selection, for Writing Tools to, for example, create additional text; Writing Tools visual effects appear within the text view + + /// An option to provide only the text in the currently visible portion + /// of your view. + /// + /// With this option, include only the currently visible text, along with + /// some additional text before and after the visible text. + NSWritingToolsCoordinatorContextScopeVisibleArea, // inline editing on a user visible text; Writing Tools visual effects appear within the text view +} API_AVAILABLE(macos(15.2)) NS_SWIFT_NAME(NSWritingToolsCoordinator.ContextScope); + +/// Use the `NSWritingToolsCoordinator.TextAnimation` constants to determine +/// the type of animation that is occurring. During an interactive change to +/// your view, Writing Tools creates animations to provide feedback about what’s +/// happening. During the setup for each animation, Writing Tools reports the +/// type of animation to the coordinator’s delegate, so that you can perform +/// additional actions related to that animation. For example, during an insertion +/// animation, you might animate changes to other views in your interface. +typedef NS_ENUM(NSInteger, NSWritingToolsCoordinatorTextAnimation) { + + /// The animation that Writing Tools performs when waiting to receive + /// results from the large language model. + /// + /// This type of animation applies a visual effect to the text that + /// Writing Tools is evaluating. When preparing for this animation, hide + /// the text that Writing Tools is about to evaluate. In the same space + /// where that text appears, Writing Tools displays a preview image that + /// you provide and animates changes to that image. + NSWritingToolsCoordinatorTextAnimationAnticipate, // The animation effect for the text awaiting the results of the Writing Tools evaluation + + /// The animation that Writing Tools performs when removing text from your view. + /// + /// This type of animation shows the removal of text from your view. When + /// preparing for this animation, hide the text in the provided range if + /// you haven’t already. If you support animating the reflow of your view’s + /// text, you can also prepare any other animations you need. Writing Tools + /// uses a preview object you provide to animate the removal of the text. + NSWritingToolsCoordinatorTextAnimationRemove, // The animation effect for washing out text that will be replaced by a Writing Tools delivery + + /// The animation that Writing Tools performs when inserting text into your view. + /// + /// This type of animation shows the insertion of text to your view. When preparing + /// for this animation, hide the text in the provided range if you haven’t + /// already. If you support animating the reflow of your view’s text, you can + /// also prepare any other animations you need. Writing Tools uses a preview + /// object you provide to animate the insertion of the text. + NSWritingToolsCoordinatorTextAnimationInsert, // The animation effect for washing in replacement text from a Writing Tools delivery + + /// The animation effect that Writing Tools performs when the view is waiting + /// for results, but the system isn’t actively evaluating the text. + /// + /// When Writing Tools isn’t actively evaluating your text, it creates this animation. + /// When preparing for this animation, display the text in the specified range + /// with a foreground color of 50% grey. + NSWritingToolsCoordinatorTextAnimationAnticipateInactive = 8, // The animation effect for the text awaiting the results of the Writing Tools evaluation but not actively pondering + + /// The animation effect that Writing Tools performs on text situated after + /// the insertion point. + /// + /// When Writing Tools inserts text at a given location, it creates an animation + /// to make room for the new text. When preparing for this animation, hide the + /// text between the insertion point and the end of your text storage. When + /// finishing the animation, show the text again. + NSWritingToolsCoordinatorTextAnimationTranslate = 9, // The animation effect for translating the trailing or "remainder" text during a replace animation +} API_AVAILABLE(macos(15.2)) NS_SWIFT_NAME(NSWritingToolsCoordinator.TextAnimation); + +/// An object that manages interactions between Writing Tools and +/// your custom text view. +/// +/// Add a `NSWritingToolsCoordinator` object to a custom view when you +/// want to add Writing Tools support to that view. The coordinator manages +/// interactions between your view and the Writing Tools UI and back-end +/// capabilities. When creating a coordinator, you supply a delegate object +/// to respond to requests from the system and provide needed information. +/// Your delegate delivers your view’s text to Writing Tools, incorporates +/// suggested changes back into your text storage, and supports the animations +/// that Writing Tools creates to show the state of an operation. +/// +/// Create the `NSWritingToolsCoordinator` object when setting up your UI, and +/// initialize it with a custom object that adopts the ``NSWritingToolsCoordinator/Delegate`` +/// protocol. Add the coordinator to the ``NSView/writingToolsCoordinator`` property +/// of your view. When a coordinator is present on a view, the system adds UI elements +/// to initiate Writing Tools operations. +/// +/// When defining the delegate, choose an object from your app that has access +/// to your view and its text storage. You can adopt the ``NSWritingToolsCoordinator/Delegate`` +/// protocol in the view itself, or in another type that your view uses to +/// manage content. During the interactions with Writing Tools, the delegate +/// gets and sets the contents of the view’s text storage and supports Writing Tools behaviors. +/// +/// > Note: You don’t need to create an `NSWritingToolsCoordinator` object +/// if you display text using a , +/// ``NSTextField``, +/// ``NSTextView``, +/// , or +/// view. +/// Those views already include the required support to handle Writing Tools +/// interactions. +API_AVAILABLE(macos(15.2)) NS_SWIFT_UI_ACTOR +@interface NSWritingToolsCoordinator : NSObject + +/// A Boolean value that indicates whether Writing Tools features are +/// currently available. +/// +/// The value of this property is `true` when Writing Tools features are +/// available, and `false` when they aren’t. Writing Tools support might +/// be unavailable because of device constraints or because the system isn’t +/// ready to process Writing Tools requests. +@property (class, readonly) BOOL isWritingToolsAvailable; + +// Convenience initializers + +/// Creates a writing tools coordinator and assigns the specified +/// delegate object to it. +/// +/// - Parameters: +/// - delegate: An object capable of handling Writing Tools interactions +/// for your view. The delegate must be able to modify your view’s text +/// storage and refresh the view’s layout and appearance. +/// +/// Create the coordinator object during your view’s initialization, and assign +/// the object to your view. Assign the coordinator to the ``NSView/writingToolsCoordinator`` +/// property of your view. +- (instancetype)initWithDelegate:(nullable id )delegate; + +/// The object that handles Writing Tools interactions for your view. +/// +/// Specify this object at initialization time when creating your `NSWritingToolsCoordinator` +/// object. The object must adopt the ``NSWritingToolsCoordinator/Delegate`` +/// protocol, and be capable of modifying your view’s text storage and +/// refreshing the view’s layout and appearance. +@property (weak, nullable, readonly) id delegate; + +/// The view that currently uses the writing tools coordinator. +/// +/// Use this property to refer to the view that currently owns the coordinator +/// object. The system updates this property automatically when you assign the +/// coordinator to the ``NSView/writingToolsCoordinator`` property of your view. +/// The value of this property is `nil` if there is no associated view. +@property (nullable, weak, readonly) __kindof NSView *view; + +// Note: The effectContainerView and decorationContainerView may only be changed when state (below) is NSWritingToolsCoordinatorStateInactive, otherwise the setters will throw an exception + +/// The view that Writing Tools uses to display visual effects during +/// the text-rewriting process. +/// +/// Writing Tools uses the view in this property to host the visual effects +/// it creates when making interactive changes to your view’s content. +/// These visual effects let people know the state of the text and provide +/// feedback about what’s happening to it. Set this property to a subview +/// that sits visually above, and covers, all of the text in your custom +/// text view. If you don’t assign a value to this property, the coordinator +/// places its own effect view in front of the subviews in your custom view. +/// The default value of this property is `nil`. +/// +/// If you display your view’s text using multiple text containers, implement the +/// ``NSWritingToolsCoordinator/Delegate/writingToolsCoordinator(_:singleContainerSubrangesOf:in:)`` +/// method to request multiple previews. +@property (weak, nullable) NSView *effectContainerView; // When nil, uses the view property. The WTC will have a "real" effect container which will be kept in front of all the public container's subviews. Ignored if the delegate implements -requestsEffectContainerView + +/// The view that Writing Tools uses to display background decorations +/// such as proofreading marks. +/// +/// Writing Tools uses the view in this property to host proofreading marks +/// and other visual elements that show any suggested changes. Set this +/// property to a subview situated visibly below the text in your custom +/// text view. It's also satisfactory to place this view visually in front +/// of the text. Make sure the size of the view is big enough to +/// cover all of the affected text. If you don’t assign a value to this +/// property, the coordinator places its own decoration view behind the subviews +/// in your custom view. The default value of this property is `nil`. +/// +/// If you display your view’s text using multiple text containers, implement the +/// ``NSWritingToolsCoordinator/Delegate/writingToolsCoordinator(_:singleContainerSubrangesOf:in:)`` +/// and ``NSWritingToolsCoordinator/Delegate/writingToolsCoordinator(_:decorationContainerViewFor:in:)`` +/// methods to provide separate decoration views for each container. +@property (weak, nullable) NSView *decorationContainerView; // When nil, uses the view property. The WTC will have a "real" decorations container which will be kept behind all the public container's subviews. Ignored if the delegate implements -requestsDecorationContainerView + +/// The current level of Writing Tools activity in your view. +/// +/// Use this property to determine when Writing Tools is actively making +/// changes to your view. During the course of Writing Tools interactions, +/// the system reports state changes to the delegate’s +/// ``NSWritingToolsCoordinator/Delegate/writingToolsCoordinator(_:willChangeTo:completion:)`` +/// method and updates this property accordingly. +@property (readonly) NSWritingToolsCoordinatorState state; // Values: Inactive, Noninteractive, InteractiveResting, InteractiveStreaming + +/// Stops the current Writing Tools operation and dismisses the system UI. +/// +/// Call this method to abort the current Writing Tools operation. This +/// method dismisses the system’s Writing Tools UI and stops any in-flight +/// interactions with your view. This method does not undo any changes that +/// Writing Tools already made to your view’s content. +- (void)stopWritingTools; + +/// The level of Writing Tools support you want the system to provide +/// for your view. +/// +/// Use this property to request an inline or panel-based experience, +/// or to disable Writing Tools for your view altogether. The default +/// value of this property is ``NSWritingToolsBehavior/default``. +@property NSWritingToolsBehavior preferredBehavior; // Defaults to "Default" + +/// The actual level of Writing Tools support the system provides for your view. +/// +/// The system chooses this value based on the device capabilities, and takes +/// the value in the ``preferredBehavior`` property into consideration when +/// making the choice. The value in this property is never the default option, +/// and is instead one of the specific options such as ``NSWritingToolsBehavior/none``, +/// ``NSWritingToolsBehavior/limited``, or ``NSWritingToolsBehavior/complete``. +@property (readonly) NSWritingToolsBehavior behavior; // Returns None, Limited, or Complete after considering system information along with the value of preferredBehavior + +/// The type of content you allow Writing Tools to generate for your custom +/// text view. +/// +/// Writing Tools can create plain text or rich text, and it can format text +/// using lists or tables as needed. If your view doesn’t support specific +/// types of content, specify the types you do support in this property. +/// The default value of this property is ``NSWritingToolsResult/default``, +/// which lets the system determine the type of content to generate. +@property NSWritingToolsResultOptions preferredResultOptions; // Defaults to "Default" + +/// The type of content the system generates for your custom text view. +/// +/// This property contains the set of options that Writing Tools outputs +/// for your view. Writing Tools takes the value in the +/// ``NSWritingToolsCoordinator/preferredResultOptions`` property into +/// consideration when determining this value. +@property (readonly) NSWritingToolsResultOptions resultOptions; // Returns a nonzero value after considering system information along with the value of preferredResultOptions + +/// Informs the coordinator about changes your app made to the text +/// in the specified context object. +/// +/// - Parameters: +/// - range: The range of text to replace. This range is relative to +/// the starting location of the specified context object’s text in +/// your view’s text storage. If you initialized the context object +/// with the entire contents of your view’s text storage, specify the +/// range of text you’re replacing in your text storage. However, if +/// you initialized the context object with only a portion of your +/// view’s text, specify a range that is relative to the starting +/// location of the context object’s text. +/// - replacementText: The text that replaces the previous content in +/// `range`. Specify an empty string to delete the text in the specified range. +/// - reason: The reason you updated the text. +/// - contextID: The unique identifier of the context object that +/// contains the text you modified. +/// +/// If you make any changes to the text Writing Tools is evaluating, call +/// this method to report those changes to your view’s coordinator object. +/// You might make changes in response to an undo command or when someone +/// types into the same part of your view’s text. Calling this method +/// keeps the coordinator object informed of any changes, and ensures +/// it delivers accurate information to its delegate. In response, the +/// coordinator refreshes previews and other information related to your +/// view. If the scope of the update is significantly large, the coordinator +/// can optionally cancel the Writing Tools session altogether. +/// +/// Use this method to report changes that precisely intersect your context +/// object’s text. The first time you call this method for a context object, +/// report changes only to the original attributed string in that object. +/// If you call this method more than once, report changes to the newly +/// modified version of that string. Don’t use this method to report changes +/// to text that comes before or after the context object. If you make +/// changes before your context object, report those changes separately using the +/// ``updateForReflowedTextInContextWithIdentifier(_:)`` method. +/// +/// > Warning: Failure to call this method for a change can cause Writing Tools +/// to deliver inaccurate information to your delegate and lead to data loss. +- (void)updateRange:(NSRange)range withText:(NSAttributedString *)replacementText reason:(NSWritingToolsCoordinatorTextUpdateReason)reason forContextWithIdentifier:(NSUUID *)contextID NS_SWIFT_NAME(updateRange(_:with:reason:forContextWithIdentifier:)); + +/// Informs the coordinator that a change occurred to the view or its text +/// that requires a layout update. +/// +/// - Parameters: +/// - contextID: The unique identifier of the context object affected +/// by the change. Pass the identifier for the context object that comes +/// after the changes. +/// +/// Use this method to inform Writing Tools when the geometry of your view +/// changes, or when the text that precedes one of your context objects changes. +/// Changes to the view’s geometry or text can affect the flow of any remaining +/// text, and require a layout update. Writing Tools uses this method to +/// refresh any layout-dependent information it’s currently tracking. For +/// example, it uses it to refresh the location of proofreading marks it’s +/// displaying in your view. +/// +/// If a text change affects the text inside a context object, call the +/// ``updateRange(_:with:reason:forContextWithIdentifier:)`` method to report +/// that change instead. +- (void)updateForReflowedTextInContextWithIdentifier:(NSUUID *)contextID NS_SWIFT_NAME(updateForReflowedTextInContextWithIdentifier(_:)); +@end + +#pragma mark NSWritingToolsCoordinatorDelegate +/// An interface that you use to manage interactions between Writing Tools +/// and your custom text view. +/// +/// Adopt the `NSWritingToolsCoordinator.Delegate` protocol in the type you +/// use to manage your custom text view. When you add a ``NSWritingToolsCoordinator`` +/// object to your view, the coordinator uses this protocol to communicate +/// with that view. The protocol lets Writing Tools fetch your view’s text, +/// report suggested changes back to your view, and deliver visual feedback +/// when Writing Tools features are active. Make sure the type that adopts +/// this protocol has access to your view’s text storage and can perform +/// relevant tasks on behalf of the view. +/// +/// Writing Tools expects you to call the provided handler blocks at the end +/// of your delegate methods. It’s crucial that you execute these blocks in a +/// timely manner to allow Writing Tools to perform subsequent tasks. For example, +/// Writing Tools waits for you to execute the handlers for animation-related methods +/// before moving on to the next stage of the animations. +API_AVAILABLE(macos(15.2)) NS_SWIFT_NAME(NSWritingToolsCoordinator.Delegate) +@protocol NSWritingToolsCoordinatorDelegate + +/// Asks your delegate to provide the text to evaluate during the Writing Tools +/// operation. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object requesting information +/// from your custom view. +/// - scope: The amount of text the coordinator requested. Use this property +/// to determine if Writing Tools is evaluating all of your text or only a subset. +/// - completion: A completion block to execute with the required information. +/// You must execute this block once at end of your method's implementation. +/// The block has no return value and takes an array of +/// ``NSWritingToolsCoordinator/Context`` objects that contain the requested information. +/// +/// At the start of every operation, the ``NSWritingToolsCoordinator`` object calls +/// this method to request the text to evaluate. Use this method to create one or +/// more ``NSWritingToolsCoordinator/Context`` objects with your view’s text. +/// Create only one ``NSWritingToolsCoordinator/Context`` object if your view has +/// only one text storage object. If your view contains multiple text storage objects, +/// create separate ``NSWritingToolsCoordinator/Context`` objects for each +/// text storage object. Writing Tools returns updates for each context object +/// separately, making it easier for you to incorporate changes into the correct +/// text storage object. Don’t create multiple context objects if your view has +/// only one text storage object. +/// +/// The `scope` parameter tells you what content Writing Tools expects you to provide +/// in your context object. For example, Writing Tools expects you to provide the +/// selected text when the parameter contains the ``NSWritingToolsCoordinator/ContextScope/userSelection`` +/// option. When Writing Tools requests a subset of your overall text, include +/// some of the surrounding text in your context object too. Writing Tools can +/// use the extra text you provide to improve the results of its evaluation. For +/// example, it might use an entire paragraph, instead of only the selected sentence, +/// to evaluate ways to rewrite that sentence. It’s best to include the text up +/// to the nearest paragraph boundary before and after the selection. If you +/// include extra text in your context object, set the ``NSWritingToolsCoordinator/Context/range`` +/// property to the range of the selected text. +/// +/// > Note: When a context object stores only a subset of your view’s text, record +/// additional information to map the location of that text to the correct location +/// in your view’s text storage. Keep that information up-to-date throughout the +/// Writing Tools session. +/// +/// Pass the context objects you create to the provided completion handler before +/// your method returns. Writing Tools waits for you to call the completion +/// handler before proceeding with the operation. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator requestsContextsForScope:(NSWritingToolsCoordinatorContextScope)scope completion:(void(^)(NSArray *))completion NS_SWIFT_ASYNC_NAME(writingToolsCoordinator(_:contextsFor:)); + +/// Tells the delegate that there are text changes to incorporate into the view. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object providing the changes +/// to your custom view. +/// - range: A range of text to update. This range is relative to the text +/// in your context object, and it’s your responsibility to match that location +/// to the correct location in your text storage. If you initialized the +/// context object with the entire contents of your view’s text storage, +/// you can use `range` as-is to access that text storage. However, if you +/// initialized the context object with only a portion of your view’s text, +/// add the starting location of your context object’s text to this value +/// to get the correct range for that text storage. +/// - context: The context object that contains the original text to modify. +/// Use this object to locate the correct text storage object for your view. +/// - replacementText: The text to insert in place of the current text at `range`. +/// You can insert this text as-is, insert a modified version of this string, +/// or reject the replacement text altogether. +/// - reason: The type of replacement Writing Tools performs. This parameter +/// indicates whether Writing Tools is replacing the text with or without animations. +/// - animationParameters: The animation parameters for any interactive changes, +/// or `nil` if the changes aren’t interactive. Use this object to create any +/// additional animations for the system to run alongside the changes Writing Tools +/// makes. For example, use it to update other views that contain related information. +/// - completion: A completion handler to execute with the results of the operation. +/// The handler has no return value and takes an optional attributed string as +/// a parameter. If you incorporate the replacement text, either as-is or with +/// modifications, pass the actual string you incorporated to the completion +/// block. If you reject the suggested change and leave the original text +/// unchanged, specify `nil` for this parameter. +/// +/// Use this method to update your view’s text storage with the proposed changes. +/// Writing Tools can call this method multiple times during the course of a +/// session to notify you of changes to different ranges of text. Incorporate +/// the changes into your view’s text storage and notify your layout manager +/// so it can refresh the view. +/// +/// > Important: When integrating changes, remember to update `range.location` as needed +/// to get the correct location in your view’s text storage. +/// +/// Remove the text in the appropriate range of your text storage, and replace +/// it with the contents of `replacementText`. When you finish, call the completion +/// handler and pass in the replacement text you inserted. If you change the +/// string in `replacementText` before incorporating it into your text storage, +/// return your modified string instead. Returning the string lets Writing Tools +/// track any alterations you made to it. You can also pass `nil` to the +/// completion handler if you don’t incorporate the replacement text. +/// +/// For interactive changes, Writing Tools works with your delegate to animate +/// the removal of the old text and the insertion of any replacement text. If +/// you need to modify other parts of your interface to reflect the changes, +/// use the provided ``NSWritingToolsCoordinator/AnimationParameters`` object +/// to create additional animations to run at the same time as the system-provided animations. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator replaceRange:(NSRange)range inContext:(NSWritingToolsCoordinatorContext *)context proposedText:(NSAttributedString *)replacementText reason:(NSWritingToolsCoordinatorTextReplacementReason)reason animationParameters:(NSWritingToolsCoordinatorAnimationParameters *__nullable)animationParameters completion:(void(^)(NSAttributedString *__nullable attributedString))completion; + +/// Asks the delegate to update your view’s current text selection. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object making the change +/// to your view. +/// - ranges: One or more ranges of text to select. Each range is relative +/// to the text in your context object, and it’s your responsibility to +/// match each location to the correct location in your text storage. If +/// you initialized the context object with the entire contents of your +/// view’s text storage, you can use the ranges as-is to access that text +/// storage. However, if you initialized the context object with only a +/// portion of your view’s text, add the starting location of your context +/// object’s text to each value to get the correct range for that text storage. +/// - context: The context object you use to identify the associated text storage. +/// - completion: The completion handler to execute when your delegate finishes updating +/// the selection. The handler has no parameters or return value. You must +/// call this handler at some point during the implementation of your method. +/// +/// As Writing Tools suggests changes to your view’s text, it calls this method +/// to update the text selection accordingly. Use this method to update the +/// current selection in your view’s text storage. When you finish making the +/// changes, call the provided completion block to let Writing Tools know you’re finished. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator selectRanges:(NSArray *)ranges inContext:(NSWritingToolsCoordinatorContext *)context completion:(void(^)(void))completion NS_SWIFT_NAME(writingToolsCoordinator(_:select:in:completion:)); + +/// Asks the delegate to provide the bounding paths for the specified +/// text in your view. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object requesting information +/// from your custom view. +/// - range: The range of text to evaluate. This range is relative to the +/// text in your context object, and it’s your responsibility to match that +/// location to the correct location in your text storage. If you initialized +/// the context object with the entire contents of your view’s text storage, +/// you can use `range` as-is to access that text storage. However, if you +/// initialized the context object with only a portion of your view’s text, +/// add the starting location of your context object’s text to this value to +/// get the correct range for that text storage. +/// - context: The context object with the target text. Use this object to +/// find the text in your view’s text storage. +/// - completion: A handler to execute with the required information. The +/// handler has no return value and takes an array of Bezier paths as a +/// parameter. You must call this handler at some point during your method’s implementation. +/// +/// After applying proofreading marks to your view’s text, Writing Tools lets +/// the person accept or reject individual suggestions. To facilitate interactions, +/// the coordinator asks your delegate to provide one or more Bezier paths that +/// surround those proofreading suggestions. For each distinct range of text +/// with a suggestion, it calls this method to get the Bezier paths that surround +/// the corresponding text. +/// +/// After you determine the location of the specified range of text in your view’s +/// text storage, find the rectangle around that text. If you're using TextKit, call the +/// method of your view’s +/// to compute the selection rectangles for that text. That method finds the text +/// segments that contain the text and returns the frame rectangle for each one. +/// Create a Bezier path for each rectangle, and convert the coordinates of each path +/// to the coordinate space of the view in your coordinator's ``NSWritingToolsCoordinator/decorationContainerView`` +/// property. Pass the resulting paths to the completion handler. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator requestsBoundingBezierPathsForRange:(NSRange)range inContext:(NSWritingToolsCoordinatorContext *)context completion:(void(^)(NSArray *bezierPaths))completion NS_SWIFT_ASYNC_NAME(writingToolsCoordinator(_:boundingBezierPathsFor:context:)); + +/// Asks the delegate to provide an underline shape for the specified text +/// during a proofreading session. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object requesting information +/// from your custom view. +/// - range: The range of text to evaluate. This range is relative to the +/// text in your context object, and it’s your responsibility to match that +/// location to the correct location in your text storage. If you initialized +/// the context object with the entire contents of your view’s text storage, +/// you can use `range` as-is to access that text storage. However, if you +/// initialized the context object with only a portion of your view’s text, +/// add the starting location of your context object’s text to this value +/// to get the correct range for that text storage. +/// - context: The context object with the target text. Use this object to +/// find the text in your view’s text storage. +/// - completion: A handler to execute with the required information. The +/// handler has no return value and takes an array of Bezier paths as a +/// parameter. You must call this handler at some point during your method’s implementation. +/// +/// When applying proofreading marks to your view’s content, the coordinator +/// calls this method to retrieve a shape to draw under the specified text. +/// You provide the shape using one or more Bezier paths, and the coordinator +/// draws and animates that shape during the proofreading session. +/// +/// After you determine the location of the specified range of text in your +/// view’s text storage, find the rectangle around that text. If you're using +/// TextKit, you can call the +/// method of your view’s +/// to get the rectangles for a range of text. Convert the coordinates of each rectangle +/// to the coordinate space of the view in your coordinator's ``NSWritingToolsCoordinator/decorationContainerView`` +/// property. Use those rectangles to create the Bezier paths for your text. +/// For example, you might create a path with a straight or wavy line at the +/// bottom of the rectangle. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator requestsUnderlinePathsForRange:(NSRange)range inContext:(NSWritingToolsCoordinatorContext *)context completion:(void(^)(NSArray *bezierPaths))completion NS_SWIFT_ASYNC_NAME(writingToolsCoordinator(_:underlinePathsFor:context:)); + +// +// Animation support +// +// range.location is an offset from the beginning of the resolvedRange throughout. Expected to match textual view's text storage, presuming client has been updating as expected through the text delegate replaceRange + +/// Prepare for animations for the content that Writing Tools is evaluating. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object notifying you that +/// animations are about to begin. +/// - textAnimation: The type of animation Writing Tools is preparing. +/// - range: The range of text affected by the animation. This range is +/// relative to the text in your context object, and it’s your responsibility +/// to match that location to the correct location in your text storage. +/// If you initialized the context object with the entire contents of your +/// view’s text storage, you can use `range` as-is to access that text +/// storage. However, if you initialized the context object with only a portion +/// of your view’s text, add the starting location of your context object’s +/// text to this value to get the correct range for that text storage. +/// - context: The context object that contains the original text. Use this +/// object to fetch the current text, and to match that text to your underlying +/// text storage. +/// - completion: A completion handler to execute when you are done. The handler +/// has no return value and takes no parameters. You must call this handler +/// at some point during your implementation. +/// +/// During an interactive evaluation of your view’s text, Writing Tools creates +/// different animations to provide feedback on what’s happening. For example, it +/// creates an ``NSWritingToolsCoordinator/TextAnimation/anticipate`` animation to +/// let people know the system is evaluating the text. The `textAnimation` parameter +/// tells you what type of animation to prepare for. +/// +/// Use this method to prepare for the system-provided animations of your view’s +/// content. For interactive animations, hide the text in the specified range temporarily +/// while the system animations run. For non-interactive animations, dim the text +/// for the duration of the animation to indicate it’s not editable. For animations +/// to remove or insert text, you can also use this method to set up animations +/// to reflow your view’s content to match the changes. At the end of a given animation, +/// use your delegate’s ``writingToolsCoordinator(_:finish:for:in:completion:)`` +/// method to undo any changes you make to your content. +/// +/// For a single animation type, the system calls this method, followed sequentially +/// by the ``writingToolsCoordinator(_:previewFor:range:context:completion:)`` +/// and ``writingToolsCoordinator(_:finish:for:in:completion:)`` +/// methods. Each method executes asynchronously, but the system calls the next +/// method in the sequence only after you call the completion handler of the previous +/// method. However, multiple animations can run simultaneously, so check the +/// `textAnimation` and `range` parameters to differentiate sequences. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator prepareForTextAnimation:(NSWritingToolsCoordinatorTextAnimation)textAnimation forRange:(NSRange)range inContext:(NSWritingToolsCoordinatorContext *)context completion:(void(^)(void))completion; + +/// Asks the delegate for a preview image and layout information for the +/// specified text. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object notifying you that +/// animations are about to begin. +/// - textAnimation: The type of animation Writing Tools is preparing. +/// - range: The range of text that requires a preview image. This range +/// is relative to the text in your context object, and it’s your responsibility +/// to match that location to the correct location in your text storage. +/// If you initialized the context object with the entire contents of +/// your view’s text storage, you can use `range` as-is to access that +/// text storage. However, if you initialized the context object with only +/// a portion of your view’s text, add the starting location of your +/// context object’s text to this value to get the correct range for that +/// text storage. +/// - context: The context object that contains the original text. Use this +/// object to fetch the current text, and to match that text to your +/// underlying text storage. +/// - completion: A completion handler to execute when you are done. The +/// handler has no return value and takes an ``NSTextPreview`` object +/// as a parameter. You must call this handler at some point during your implementation. +/// +/// During an interactive evaluation of your view’s text, Writing Tools creates +/// different animations to provide feedback on what’s happening. As part of +/// the preparation for those animations, Writing Tools asks you to provide +/// a preview of the affected content in your view. Writing Tools uses this +/// preview to build and execute the animations in the view stored in the +/// ``NSWritingToolsCoordinator/effectContainerView`` property of the coordinator object. +/// +/// To build a preview of your content in macOS, render the specified range of text +/// into an image with a transparent background and use that image to create your +/// ``NSTextPreview`` object directly. Set the ``NSTextPreview/presentationFrame`` +/// property to the rectangle in your view’s coordinate space that contains the +/// text you captured. Set the ``NSTextPreview/candidateRects`` property to the +/// selection rectangles for the text, which you get from your view’s layout manager. +/// Writing Tools uses this information to place your image directly above the text in your view. +/// +/// For a single animation type, the system calls the +/// ``writingToolsCoordinator(_:prepareFor:range:context:completion:)`` +/// method, followed sequentially by this method and then the +/// ``writingToolsCoordinator(_:finish:for:in:completion:)`` +/// method. Each method executes asynchronously, but the system calls the next +/// method in the sequence only after you call the completion handler of the +/// previous method. However, multiple animations can run simultaneously, so +/// check the `textAnimation` parameter to differentiate sequences. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator requestsPreviewForTextAnimation:(NSWritingToolsCoordinatorTextAnimation)textAnimation ofRange:(NSRange)range inContext:(NSWritingToolsCoordinatorContext *)context completion:(void(^)(NSArray * _Nullable textPreviews))completion NS_SWIFT_ASYNC_NAME(writingToolsCoordinator(_:previewFor:range:context:)); + +/// Asks the delegate for a preview image and layout information for the +/// specified text. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object notifying you that +/// animations are about to begin. +/// - rect: The portion of your view that contains the requested text. This rectangle is in the view’s coordinate system. +/// - context: The context object that contains the original text. Use this +/// object to fetch the current text, and to match that text to your +/// underlying text storage. +/// - completion: A completion handler to execute when you are done. The +/// handler has no return value and takes an ``NSTextPreview`` object +/// as a parameter. You must call this handler at some point during your implementation. +/// +/// During an interactive evaluation of your view’s text, Writing Tools creates +/// different animations to provide feedback on what’s happening. As part of +/// the preparation for those animations, Writing Tools asks you to provide +/// a preview of the affected content in your view. Writing Tools uses this +/// preview to build and execute the animations in the view stored in the +/// ``NSWritingToolsCoordinator/effectContainerView`` property of the coordinator object. +/// +/// To build a preview of your content in macOS, render the requested portion +/// of your view into an image with a transparent background and use that image +/// to create your ``NSTextPreview`` object directly. Set the ``NSTextPreview/presentationFrame`` +/// property to the specified rectangle. Set the ``NSTextPreview/candidateRects`` +/// property to the selection rectangles for the associated text, which you get +/// from your view’s layout manager. Writing Tools uses this information to +/// place your image directly above the text in your view. +/// +/// For a single animation type, the system calls the +/// ``writingToolsCoordinator(_:prepareFor:range:context:completion:)`` +/// method, followed sequentially by this method and then the +/// ``writingToolsCoordinator(_:finish:for:in:completion:)`` +/// method. Each method executes asynchronously, but the system calls the next +/// method in the sequence only after you call the completion handler of the +/// previous method. However, multiple animations can run simultaneously, so +/// check the `textAnimation` parameter to differentiate sequences. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator requestsPreviewForRect:(NSRect)rect inContext:(NSWritingToolsCoordinatorContext *)context completion:(void(^)(NSTextPreview * _Nullable textPreview))completion NS_SWIFT_ASYNC_NAME(writingToolsCoordinator(_:previewFor:context:)); + +/// Asks the delegate to clean up any state related to the specified +/// Writing Tools animation. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object notifying you +/// that animations are about to begin. +/// - textAnimation: The type of animation Writing Tools finished. +/// - range: The range of text that finished animating. This range is +/// relative to the text in your context object, and it’s your responsibility +/// to match that location to the correct location in your text storage. +/// If you initialized the context object with the entire contents of +/// your view’s text storage, you can use `range` as-is to access that +/// text storage. However, if you initialized the context object with +/// only a portion of your view’s text, add the starting location of +/// your context object’s text to this value to get the correct range +/// for that text storage. +/// - context: The context object that contains the original text. +/// - completion: A completion handler to execute when you are done. +/// The handler has no return value and takes no parameters. You must +/// call this handler at some point during your implementation. +/// +/// Use this method to clean up any data structures you created to support +/// the specified type of Writing Tools animation. You can also use this +/// method to restore the visibility of any text you hid previously. When +/// you finish your cleanup work, call the completion handler to notify Writing Tools. +/// +/// Writing Tools calls this method only after previous calls to the +/// ``writingToolsCoordinator(_:prepareFor:range:context:completion:)`` +/// and ``writingToolsCoordinator(_:previewFor:range:context:completion:)`` +/// methods for the same animation type. However, Writing Tools can interleave +/// calls to this method with calls to prepare an animation of a different +/// type. In your implementation of this method, make sure the actions you +/// take don’t interfere with other in-flight animations. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator finishTextAnimation:(NSWritingToolsCoordinatorTextAnimation)textAnimation forRange:(NSRange)range inContext:(NSWritingToolsCoordinatorContext *)context completion:(void(^)(void))completion; + +@optional + +// Multiple container support + +// The NSTextPreview's container will be used for a coordinate conversion into the effectContainerView + +/// Asks the delegate to divide the specified range of text into the separate +/// containers that render that text. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object requesting information +/// from your custom view. +/// - range: The range of text to consider in the specified `context` object. +/// The location value of this range is relative to the beginning of the text +/// in your context object, and it’s your responsibility to match that location +/// to the correct location in your text storage. If you initialized the +/// context object with the entire contents of your view’s text storage, +/// you can use `range` as-is to access that text storage. However, if you +/// initialized the context object with only a portion of your view’s text, +/// add the starting location of your context object’s text to this value +/// to get the correct range for that text storage. +/// - context: The context object that contains the text to consider. Use this +/// object to locate the appropriate text storage object for your view. +/// - completion: A completion handler to execute when you are done. The handler +/// has no return value and takes an array of +/// types, each of which contains an . +/// The union of the ranges you pass to this handler must equal all of the +/// text in `range`. The order of the ranges in the array must be sequential, +/// with each new range's starting location coming after the previous one. +/// There must also not be any gaps or overlap between ranges. +/// You must call this handler at some point during your implementation. +/// +/// If your view uses multiple ``NSTextContainer`` objects to draw text in different +/// regions, use this method to tell Writing Tools about the containers that display +/// the specified text. In your implementation, subdivide `range` to create one new +/// range for each portion of text that resides in a different container object. +/// For example, if the text in `range` is split between two containers, provide +/// two new types +/// that reflect the portion of the total text in each container. If `range` resides completely +/// within one container, call the completion handler with `range` as the only value +/// in the array. +/// +/// When configuring animations for your view, Writing Tools asks your delegate to +/// provide separate previews for each of your view’s container object. Specifically, +/// it calls your delegate’s ``writingToolsCoordinator(_:previewFor:range:context:completion:)`` +/// method separately for each range of text you return in the completion handler. +/// Your implementation of that method must create a preview suitable for animating +/// the content from the underlying text container. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator requestsSingleContainerSubrangesOfRange:(NSRange)range inContext:(NSWritingToolsCoordinatorContext *)context completion:(void(^)(NSArray *))completion NS_SWIFT_ASYNC_NAME(writingToolsCoordinator(_:singleContainerSubrangesOf:in:)); + +/// Asks the delegate to provide a decoration view for the specified range of text. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object requesting information +/// from your custom view. +/// - range: The range of text to consider in the specified `context` object. +/// The location value of this range is relative to the beginning of the text +/// in your context object, and it’s your responsibility to match that location +/// to the correct location in your text storage. If you initialized the +/// context object with the entire contents of your view’s text storage, you +/// can use `range` as-is to access that text storage. However, if you initialized +/// the context object with only a portion of your view’s text, add the starting +/// location of your context object’s text to this value to get the correct +/// range for that text storage. +/// - context: The context object that contains the text to consider. Use this +/// object to locate the appropriate text storage object for your view. +/// - completion: A completion handler to execute when you are done. The handler +/// has no return value and takes an ``NSView`` object as a parameter. You must call +/// this handler at some point during your implementation. +/// +/// If your view uses multiple ``NSTextContainer`` objects to draw text in different +/// regions, use this method to provide Writing Tools with the view to use for the +/// specified range of text. After calling your delegate’s ``writingToolsCoordinator(_:singleContainerSubrangesOf:in:)`` +/// method, Writing Tools calls this method for each subrange of text you provided. +/// Find or provide a view situated visibly below the specified text in your text +/// view. It's also satisfactory to provide a view that’s visually in front of the +/// text. Writing Tools uses the provided view to host any proofreading marks for +/// the specified range of text. +/// +/// If your view has only one text container, use the coordinator’s ``NSWritingToolsCoordinator/decorationContainerView`` +/// property to specify the view to use for proofreading marks. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator requestsDecorationContainerViewForRange:(NSRange)range inContext:(NSWritingToolsCoordinatorContext *)context completion:(void(^)(NSView *))completion NS_SWIFT_ASYNC_NAME(writingToolsCoordinator(_:decorationContainerViewFor:in:)); + +// Lifecycle + +// Possible state changes +// Inactive -> Noninteractive +// Noninteractive -> Inactive +// Inactive -> InteractiveResting +// InteractiveResting -> InteractiveStreaming +// InteractiveResting -> Inactive +// InteractiveStreaming -> InteractiveResting +// InteractiveStreaming -> Inactive + +/// Notifies your delegate of relevant state changes when Writing Tools +/// is running in your view. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object providing +/// information to your custom view. +/// - state: The new state for the Writing Tools session. For information +/// about the possible states, see ``NSWritingToolsCoordinator/State``. +/// - text: The current text for your context object. +/// - reason: The reason for the state change. +/// - context: The context object that contains the original text for +/// Writing Tools to evaluate. +/// - completion: A handler to execute when your delegate finishes processing +/// the change of state. The handler has no parameters or return value. You +/// must call this handler at some point during the implementation of your method. +/// +/// Use state transitions to perform actions related to your view or text storage. +/// When Writing Tools is active, it updates its state to indicate what task +/// it’s currently performing. Writing Tools starts in the ``NSWritingToolsCoordinator/State/inactive`` +/// state and moves to other states as it presents UI and starts interacting with +/// your view’s content. For example, it moves to the ``NSWritingToolsCoordinator/State/interactiveUpdating`` +/// state when it’s making changes to your view’s text storage. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator willChangeToState:(NSWritingToolsCoordinatorState)newState completion:(void(^)(void))completion; + + +#pragma mark Deprecated NSWritingToolsCoordinatorDelegate methods + +/// Asks the delegate to provide the location of the character at the +/// specified point in your view’s coordinate system. +/// +/// - Parameters: +/// - writingToolsCoordinator: The coordinator object requesting +/// information from your custom view. +/// - point: A point in your view’s coordinate space. Find the +/// location of the text under this point, if any. +/// - completion: A handler to execute with the required information. +/// This handler has no return value and takes an +/// and +/// as parameters. Set the range to the character’s location in one of your +/// ``NSWritingToolsCoordinator/Context`` objects, which you specify using +/// the parameter. +/// You must call this handler at some point during your method’s implementation. +/// +/// When someone interacts with your view during a proofreading operation, Writing Tools +/// calls this method to get the location of the interaction. If the interaction +/// occurs in the text of one of your ``NSWritingToolsCoordinator/Context`` objects, +/// configure an +/// with the character’s location in that context object and a length of `1`. If +/// the interaction occurs outside of the text of your context objects, configure +/// the range with a location of `NSNotFound`. +/// +/// When specifying the location of a character in your context object, provide a +/// location relative to the start of your context object’s text. The first character +/// in a context object’s text is always at location `0`, and it’s your responsibility +/// to track the location of the context object’s text in your text storage object. +/// When the context object’s text begins in the middle of your text storage, +/// subtract the starting location of the context object’s text from the location +/// you specify in your range value. For example, if the context object’s text +/// starts at character `100` in your text storage, and an interaction occurs +/// with the character at location `102`, specify a range with a location of +/// `2` and a length of `1`. +- (void)writingToolsCoordinator:(NSWritingToolsCoordinator *)writingToolsCoordinator requestsRangeInContextWithIdentifierForPoint:(NSPoint)point completion:(void(^)(NSRange range, NSUUID *contextID))completion API_DEPRECATED("Not used anymore", macos(15.2, 15.4)) NS_SWIFT_ASYNC_NAME(writingToolsCoordinator(_:rangeInContextWithIdentifierFor:)); +@end + +#pragma mark NSTextPreview +/// A snapshot of the text in your view, which the system uses to create +/// user-visible effects. +/// +/// An `NSTextPreview` object provides a static image of your view’s text +/// content that the system can use to create animations. You provide preview +/// objects in response to system requests, such as ones from Writing Tools. +/// In addition to creating an image of your view’s text, you also specify +/// the location of that text in your view’s frame rectangle. When creating +/// animations, the system places the image on top of your view’s content +/// and animates changes to the image instead of to your view. +/// +/// Create an `NSTextPreview` object in response to specific system requests. +/// Create an image with a transparent background and render your view’s text +/// into the image using the current text attributes. Construct your `NSTextPreview` +/// object with both the image and the frame rectangle that represents the +/// location of the rendered text in your view’s coordinate system. To highlight +/// specific portions of text, instead of all the text in the image, provide +/// a set of candidate rectangles with the locations of the text you want to highlight. +API_AVAILABLE(macos(15.2)) NS_SWIFT_UI_ACTOR +@interface NSTextPreview : NSObject + +/// Creates a text preview using the specified image and rectangles that indicate +/// the portions of text to highlight. +/// +/// - Parameters: +/// - snapshotImage: An image that contains the requested text from your view. +/// Create the image using a transparent background and the current rendering +/// attributes for your text. +/// - presentationFrame: A rectangle in the coordinate space of your text view. +/// The system uses this rectangle to place your image precisely over your +/// view’s actual text. Set its size to the size of your snapshot image, and +/// set its origin to the point that allows the system to place your image +/// directly over the text. +/// - candidateRects: An array of +/// objects, each of which contains an +/// in the coordinate space of your text view. Each rectangle contains a +/// bounding rectangle for text that is part of the preview. When applying +/// visual effects, the system adds highlights only to the text in the specified rectangles. +- (instancetype)initWithSnapshotImage:(CGImageRef)snapshotImage presentationFrame:(NSRect)presentationFrame candidateRects:(NSArray *)candidateRects NS_DESIGNATED_INITIALIZER; + +/// Creates a text preview using the specified image. +/// +/// - Parameters: +/// - snapshotImage: An image that contains the requested text from your view. +/// Create the image using a transparent background and the current rendering +/// attributes for your text. +/// - presentationFrame: A rectangle in your frame’s coordinate space. The +/// system uses this rectangle to place your image precisely over your view’s +/// actual text. Set its size to the size of your snapshot image, and set its +/// origin to the point that allows the system to place your image directly over the text. +- (instancetype)initWithSnapshotImage:(CGImageRef)snapshotImage presentationFrame:(NSRect)presentationFrame; +- (instancetype)init NS_UNAVAILABLE; + +/// The image that contains the requested text from your view. +/// +/// You specify this image at initialization time. The system uses it to +/// implement any visual effects involving your view’s text. Create the image +/// with your text on a transparent background. +@property (readonly) CGImageRef previewImage; + +/// The frame rectangle that places the preview image directly over the +/// matching text. +/// +/// You specify this value at initialization time. The system uses it to +/// position the preview image over the text in your view. Make sure the +/// frame rectangle is in your view's coordinate space. +@property (readonly) NSRect presentationFrame; + +/// Rectangles that define the specific portions of text to highlight. +/// +/// At initialization time, you set this property to an array of +/// objects, +/// each of which contains an +/// in the coordinate space of the target view. Each rectangle contains a bounding +/// rectangle for text that is part of the preview. When applying visual effects, +/// the system adds highlights only to the text in the specified rectangles. +@property (readonly) NSArray *candidateRects; + +@end + +NS_ASSUME_NONNULL_END +API_UNAVAILABLE_END diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSWritingToolsCoordinatorAnimationParameters.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSWritingToolsCoordinatorAnimationParameters.h new file mode 100644 index 00000000..44c436ee --- /dev/null +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSWritingToolsCoordinatorAnimationParameters.h @@ -0,0 +1,67 @@ +/* + NSWritingToolsCoordinatorAnimationParameters.h + Application Kit + Copyright (c) 2024, Apple Inc. + All rights reserved. + */ + +#import +#import +#import +#import + +@class NSAttributedString; +@class NSUUID; + +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// An object you use to configure additional tasks or animations to +/// run alongside the Writing Tools animations. +/// +/// When Writing Tools replaces text in one of your context objects, +/// it provides an `NSWritingToolsCoordinator.AnimationParameters` object for +/// you to use to configure any additional animations. During a Writing +/// Tools session, you hide the text under evaluation and provide a +/// targeted preview of your content. Writing Tools animations changes +/// to that preview, but you might need to provide additional animations +/// for other parts of your view’s content. For example, you might +/// need to animate any layout changes caused by the insertion or +/// removal of text in other parts of your view. Use this object to +/// configure those animations. +/// +/// You don’t create an `NSWritingToolsCoordinator.AnimationParameters` +/// object directly. Instead, the system creates one and passes it to the +///``NSWritingToolsCoordinator/writingToolsCoordinator(_:replaceRange:inContext:proposedText:reason:animationParameters:completion:)`` +///method of your ``NSWritingToolsCoordinator/Delegate`` object. Use that +///object to specify the blocks to run during and after the system animations. +API_AVAILABLE(macos(15.2)) NS_SWIFT_SENDABLE NS_SWIFT_NAME(NSWritingToolsCoordinator.AnimationParameters) +@interface NSWritingToolsCoordinatorAnimationParameters : NSObject +- (instancetype)init NS_UNAVAILABLE; + +/// The number of seconds it takes the system animations to run. +@property (readonly) CGFloat duration; + +/// The number of seconds the system waits before starting its animations. +@property (readonly) CGFloat delay; + +/// A custom block that runs at the same time as the system animations. +/// +/// If you have animations you want to run at the same time as the system +/// animations, assign a block to this property and use it to run your +/// animations. The block you provide must have no return value and take +/// a floating-point value as a parameter. The parameter indicates the +/// current progress of the animations as a percentage value between +/// `0.0` to `1.0`. The system executes your block multiple times during +/// the course of the animations, providing an updated completion value each time. +@property (nullable, copy) void(^progressHandler)(float progress); + +/// A custom block to run when the system animations finish. +/// +/// Set this property to a block that you want the system to run when any +/// animations finish. The block you provide must have no return value +/// and no parameters. The system executes this block once when the current +/// animation finish. +@property (nullable, copy) void(^completionHandler)(void); +@end + +NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/AppKit.framework/Versions/C/Headers/NSWritingToolsCoordinatorContext.h b/Frameworks/AppKit.framework/Versions/C/Headers/NSWritingToolsCoordinatorContext.h new file mode 100644 index 00000000..7c24664c --- /dev/null +++ b/Frameworks/AppKit.framework/Versions/C/Headers/NSWritingToolsCoordinatorContext.h @@ -0,0 +1,142 @@ +/* + NSWritingToolsCoordinatorContext.h + Application Kit + Copyright (c) 2024, Apple Inc. + All rights reserved. + */ + +#import +#import +#import + +@class NSAttributedString; +@class NSUUID; + +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// A data object that you use to share your custom view’s text with Writing Tools. +/// +/// At the start of every Writing Tools operation, you create one or more +/// `NSWritingToolsCoordinator.Context` objects with a copy of the text you want Writing Tools +/// to evaluate. Each Writing Tools operation starts with a call to the +/// ``NSWritingToolsCoordinator/Delegate/writingToolsCoordinator(_:requestsContextsFor:completion:)`` +/// method of your ``NSWritingToolsCoordinator/Delegate`` object. Use the parameters +/// of that method to determine how much of your view’s text to provide. For +/// some operations, Writing Tools asks for all of your view’s text, but in +/// others it asks for only a portion of the text. When Writing Tools finishes +/// its evaluation, it reports changes back to your delegate relative to the +/// context objects you provided. +/// +/// When Writing Tools asks for your view’s text, create one or more +/// `NSWritingToolsCoordinator.Context` objects with the requested content. If your view +/// contains only one text storage object, create only one context object for +/// the request. However, if you use multiple text storage objects to manage +/// different parts of your view’s content, you might need to create multiple +/// context objects. The actual number depends on how much of your text Writing +/// Tools asks for. For example, when Writing Tools asks for all of your view’s +/// content, you return one context object for each text storage object in your +/// view. However, if Writing Tools asks for the current selection, and one +/// text storage object contains all of the selected text, you create only +/// one context object for the content. +/// +/// Writing Tools uses your context objects as the starting point for its +/// evaluations, and as a reference point for any changes. Because Writing +/// Tools doesn’t know anything about your view or its content, it makes +/// suggestions only relative to your context objects. It’s your responsibility +/// to take those suggestions and incorporate them back into your view’s +/// text storage. In some cases, you might need to store additional information +/// to update your storage correctly. For example, you might need to store, +/// and update as needed, the offset from the start of your document to the +/// start of the text in your context object. +/// +/// When Writing Tools asks for the currently selected text in your view, +/// include some of the surrounding text in your context object as well. +/// Supply a string that includes the selection and any text up to the nearest +/// paragraph boundary. When creating your context object, specify a range +/// value that represents the portion of that string that corresponds to the +/// text selection. Providing some additional text in your context object can +/// help Writing Tools improve its evaluation of your content. Writing Tools +/// uses the ``resolvedRange`` property of your context object to indicate +/// what text it considered. +/// +/// If your context object includes text that you don’t want Writing Tools to +/// evaluate, add the `excludeFromWritingTools` attribute to the corresponding +/// characters of your +/// object. You might add this attribute if the text string includes a code +/// listing or readonly content that you don’t want Writing Tools to change. +API_AVAILABLE(macos(15.2)) NS_SWIFT_SENDABLE NS_SWIFT_NAME(NSWritingToolsCoordinator.Context) +@interface NSWritingToolsCoordinatorContext : NSObject + +/// Creates a context object with the specified attributed string and range +/// information. +/// +/// - Parameters: +/// - attributedString: A string that contains some or all of the content +/// from your view’s text storage. This initializer makes a copy of the +/// string you provide, so you can discard the original when you’re done. +/// - range: The portion of `attributedString` you want Writing Tools to +/// evaluate. If you want Writing Tools to evaluate the entire string you +/// provided, specify a range with a location of `0` and a length equal to +/// your string’s length. If you want Writing Tools to evaluate only part +/// of the string, provide the appropriate range in this parameter. Writing +/// Tools suggests changes only to the range of text you specify, but it +/// can consider text outside that range during the evaluation process. +/// +/// When Writing Tools asks for your view’s current selection, it’s best to +/// create a string that includes text before and after that selection. During +/// the evaluation process, Writing Tools can use the additional text you +/// provided to improve the results it delivers. If you do provide additional +/// text, set the `range` parameter to the portion of `attributedString` with +/// the current selection. Don’t use the `range` parameter to specify the +/// location of the text in your view’s text storage. +- (instancetype)initWithAttributedString:(NSAttributedString *)attributedString range:(NSRange)range NS_DESIGNATED_INITIALIZER; +- (instancetype)init NS_UNAVAILABLE; + +/// The portion of your view’s text to evaluate. +/// +/// The ``NSWritingToolsCoordinator/Context`` object initializes the value of this +/// property at creation time and doesn’t change it during the course of an operation. +/// Instead, it suggests changes to the text in the indicated range and reports +/// those changes to your ``NSWritingToolsCoordinator/Delegate`` object. Use the methods +/// of your delegate object to integrate those changes back into your view’s text storage. +/// +/// It’s your responsibility to track the location of this text in your +/// view’s text storage object. When Writing Tools reports changes, +/// it provides range values relative to this string. If you initialize +/// this property with a subset of your view’s content, you must adjust +/// any ranges that Writing Tools provides to get the correct location +/// in your text storage. +@property (copy, readonly) NSAttributedString *attributedString; + +/// The unique identifier of the context object. +/// +/// The ``NSWritingToolsCoordinator/Context`` object initializes the value of this property +/// at creation time. Use this value to identify the context object within your app. +@property (readonly) NSRange range; // The range it was initialized with + +/// The unique identifier of the context object. +/// +/// The ``NSWritingToolsCoordinator/Context`` object initializes the value of +/// this property at creation time. Use this value to identify the +/// context object within your app. +@property (strong, readonly) NSUUID *identifier; + +/// The actual range of text that Writing Tools might change, which can +/// be different than the range of text you supplied. +/// +/// After analyzing the text in your context object, Writing Tools sets +/// this property to the portion of ``attributedString`` it might modify. +/// Initially, this property has a location of +/// and a length +/// of `0`, but Writing Tools updates those values before making any changes +/// to the text. +/// +/// While the Writing Tools operation is active, make sure Writing Tools has +/// exclusive access to the text in this range. Your ``NSWritingToolsCoordinator/Delegate`` +/// object can make changes to the text as part of incorporating Writing Tools +/// results, but don’t allow changes to come from other sources. For example, +/// don’t let someone edit the text in this range directly until Writing Tools finishes. +@property (readonly) NSRange resolvedRange; // The range that Writing Tools ends up using (sometimes larger than range) +@end + +NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices.tbd b/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices.tbd index 146e2372..bd9ffee2 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices.tbd +++ b/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices' -current-version: 64 +current-version: 65 reexported-libraries: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -302,7 +302,7 @@ exports: tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices' -current-version: 777 +current-version: 807.2 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: ApplicationServices @@ -370,13 +370,14 @@ exports: _CoreDockSetWorkspacesEnabled, _CoreDockSetWorkspacesKeyBindings, _CoreDockUpdateWindow, _CoreDragAcceptDrag, _CoreDragCancelDrag, _CoreDragChangeBehaviors, _CoreDragCleanDragState, _CoreDragClearAllImageOverrides, - _CoreDragCopyTrashLabel, _CoreDragCreate, _CoreDragCreateWithPasteboard, - _CoreDragCreateWithPasteboardRef, _CoreDragDispose, _CoreDragEnableSpringLoading, - _CoreDragGetAllowableActions, _CoreDragGetAttributes, _CoreDragGetCurrentDrag, - _CoreDragGetDragWindow, _CoreDragGetDropActions, _CoreDragGetDropLocation, - _CoreDragGetForce, _CoreDragGetForceStage, _CoreDragGetItemBounds, - _CoreDragGetModifiers, _CoreDragGetMouseLocation, _CoreDragGetOrigin, - _CoreDragGetPasteboard, _CoreDragGetPasteboardRef, _CoreDragGetSpringLoadingAttributes, + _CoreDragCopyTrashLabel, _CoreDragCreate, _CoreDragCreateWithCFPasteboard, + _CoreDragCreateWithPasteboard, _CoreDragCreateWithPasteboardRef, + _CoreDragDispose, _CoreDragEnableSpringLoading, _CoreDragGetAllowableActions, + _CoreDragGetAttributes, _CoreDragGetCurrentDrag, _CoreDragGetDragWindow, + _CoreDragGetDropActions, _CoreDragGetDropLocation, _CoreDragGetForce, + _CoreDragGetForceStage, _CoreDragGetItemBounds, _CoreDragGetModifiers, + _CoreDragGetMouseLocation, _CoreDragGetOrigin, _CoreDragGetPasteboard, + _CoreDragGetPasteboardRef, _CoreDragGetSpringLoadingAttributes, _CoreDragGetStandardDropLocation, _CoreDragGetValueForKey, _CoreDragHasImageOverrides, _CoreDragInstallContextReceiveMessageHandlerOnConnection, _CoreDragInstallContextTrackingHandlerOnConnection, _CoreDragInstallReceiveHandler, @@ -385,8 +386,8 @@ exports: _CoreDragInstallTrackingHandlerOnConnection, _CoreDragIsTrashLabelSet, _CoreDragItemGetImageComponents, _CoreDragItemGetScreenFrame, _CoreDragItemHasAlternate, _CoreDragItemSetImageComponents, - _CoreDragRefSetImageDataForItem, _CoreDragRegisterClient, - _CoreDragRegisterClientInModes, _CoreDragRegisterClientWithOptions, + _CoreDragMessageName, _CoreDragRefIsValid, _CoreDragRefSetImageDataForItem, + _CoreDragRegisterClient, _CoreDragRegisterClientInModes, _CoreDragRegisterClientWithOptions, _CoreDragReleaseImageData, _CoreDragRemoveReceiveHandler, _CoreDragRemoveReceiveHandlerOnConnection, _CoreDragRemoveReceiveMessageHandler, _CoreDragRemoveReceiveMessageHandlerOnConnection, _CoreDragRemoveTrackingHandler, @@ -400,14 +401,14 @@ exports: _CoreDragSetItemBounds, _CoreDragSetMouseLocation, _CoreDragSetOrigin, _CoreDragSetRootCALayer, _CoreDragSetSourceClippingRect, _CoreDragSetStandardDropLocation, _CoreDragSetTrashDrawProc, _CoreDragSetTrashLabel, _CoreDragSetValueForKey, - _CoreDragStartDragging, _CoreDragUpdatesBegin, _CoreDragUpdatesCommit, - _CoreGetDragInfo, _CoreImagingCreateImage, _CoreMenuCreateKeyEquivalentString, - _CoreMenuCreateVirtualKeyString, _CoreMenuExtraAddMenuExtra, - _CoreMenuExtraGetMenuExtra, _CoreMenuExtraGetOrder, _CoreMenuExtraInsertMenuExtra, - _CoreMenuExtraRemoveMenuExtra, _CoreMenuGetVirtualKeyMap, - _CreatePasteboardFlavorTypeName, _DesktopPictureCopyDisplay, - _DesktopPictureCopyDisplayForSpace, _DesktopPictureCopyValue, - _DesktopPictureSetDisplay, _DesktopPictureSetDisplayForSpace, + _CoreDragStartDragging, _CoreDragStartDraggingAsync, _CoreDragUpdatesBegin, + _CoreDragUpdatesCommit, _CoreGetDragInfo, _CoreImagingCreateImage, + _CoreMenuCreateKeyEquivalentString, _CoreMenuCreateVirtualKeyString, + _CoreMenuExtraAddMenuExtra, _CoreMenuExtraGetMenuExtra, _CoreMenuExtraGetOrder, + _CoreMenuExtraInsertMenuExtra, _CoreMenuExtraRemoveMenuExtra, + _CoreMenuGetVirtualKeyMap, _CreatePasteboardFlavorTypeName, + _DesktopPictureCopyDisplay, _DesktopPictureCopyDisplayForSpace, + _DesktopPictureCopyValue, _DesktopPictureSetDisplay, _DesktopPictureSetDisplayForSpace, _DesktopPictureSetValue, _DisposeIconActionUPP, _DisposeIconGetterUPP, _ExitToShell, _GetApplicationIsDaemon, _GetCachedFlavorName, _GetCurrentProcess, _GetFrontProcess, _GetGlobalIconImagesCacheMaxEntriesAndMaxDataSize, @@ -450,10 +451,10 @@ exports: _MSHMIGSourceSetSendOnceCallback, _NewIconActionUPP, _NewIconGetterUPP, _PasteboardClear, _PasteboardCopyItemFlavorData, _PasteboardCopyItemFlavors, _PasteboardCopyName, _PasteboardCopyPasteLocation, _PasteboardCreate, - _PasteboardDontHonorPromises, _PasteboardGetCFPasteboard, - _PasteboardGetItemCount, _PasteboardGetItemFlavorFlags, _PasteboardGetItemIdentifier, - _PasteboardGetTypeID, _PasteboardPutItemFlavor, _PasteboardResolvePromises, - _PasteboardSetPasteLocation, _PasteboardSetPromiseKeeper, + _PasteboardCreateWithCFPasteboard, _PasteboardDontHonorPromises, + _PasteboardGetCFPasteboard, _PasteboardGetItemCount, _PasteboardGetItemFlavorFlags, + _PasteboardGetItemIdentifier, _PasteboardGetTypeID, _PasteboardPutItemFlavor, + _PasteboardResolvePromises, _PasteboardSetPasteLocation, _PasteboardSetPromiseKeeper, _PasteboardSynchronize, _PasteboardToggleDuplicateFlavorCheck, _PlotIconRefInContext, _ProcessInformationCopyDictionary, _SXArbitrationAddQueuedOutputRequest, _SXArbitrationCancelQueuedRequest, @@ -462,68 +463,80 @@ exports: _SameProcess, _SerializeCFType, _SetApplicationIsDaemon, _SetFrontProcess, _SetFrontProcessWithOptions, _SetGlobalIconImagesCacheMaxEntriesAndMaxDataSize, _SetIconFamilyData, _SetLabelColorAndName, _ShowHideDrag, - _ShowHideProcess, _StartIPCPing, _TransformProcessType, _TranslationCopyDestinationType, - _TranslationCopySourceType, _TranslationCreate, _TranslationCreateWithSourceArray, - _TranslationGetTranslationFlags, _TranslationGetTypeID, _TranslationPerformForData, - _TranslationPerformForFile, _TranslationPerformForURL, _UAZoomChangeFocus, - _UAZoomEnabled, _UnserializeCFType, _WakeUpProcess, __AXCopyActionDescription, + _ShowHideProcess, _StartIPCFlockingPing, _StartIPCPing, _TransformProcessType, + _TranslationCopyDestinationType, _TranslationCopySourceType, + _TranslationCreate, _TranslationCreateWithSourceArray, _TranslationGetTranslationFlags, + _TranslationGetTypeID, _TranslationPerformForData, _TranslationPerformForFile, + _TranslationPerformForURL, _UAZoomChangeFocus, _UAZoomEnabled, + _UnserializeCFType, _WakeUpProcess, __AXCopyActionDescription, __AXCopyChildrenHash, __AXCopyChildrenHashWithRelativeFrame, __AXCopyRoleDescription, __AXCopyRoleDescriptionWithSubrole, - __AXCopyTitle, __AXCreateElementOrdering, __AXCurrentRequestCanReturnInspectionContent, - __AXCurrentRequestCanReturnProtectedContent, __AXGetClientForCurrentRequestUntrusted, + __AXCopyTitle, __AXCreateElementOrdering, __AXCurrentRequestCanAccessRemoteDeviceContent, + __AXCurrentRequestCanReturnInspectionContent, __AXCurrentRequestCanReturnProtectedContent, + __AXGetClientForCurrentRequestUntrusted, __AXHasClientsWithAccessRemoteDeviceContent, __AXInterfaceCopyCursorColorFill, __AXInterfaceCopyCursorColorOutline, __AXInterfaceCursorIsOverridden, __AXInterfaceCursorSetAndReturnSeed, __AXInterfaceGetBristolEnabled, __AXInterfaceGetClassicInvertColorEnabled, __AXInterfaceGetDifferentiateWithoutColorEnabled, __AXInterfaceGetIncreaseContrastEnabled, - __AXInterfaceGetReduceMotionEnabled, __AXInterfaceGetReduceTransparencyEnabled, - __AXInterfaceGetRichmondEnabled, __AXInterfaceGetShowToolbarButtonShapesEnabled, - __AXInterfaceGetShowWindowTitlebarIconsEnabled, __AXInterfaceSetClassicInvertColorEnabled, - __AXInterfaceSetCursorColorFill, __AXInterfaceSetCursorColorOutline, - __AXInterfaceSetCursorIsOverridden, __AXInterfaceSetDifferentiateWithoutColorEnabled, - __AXInterfaceSetDifferentiateWithoutColorEnabledOverride, + __AXInterfaceGetReduceMotionEnabled, __AXInterfaceGetReduceTextInsertionPointModulationEnabled, + __AXInterfaceGetReduceTransparencyEnabled, __AXInterfaceGetRichmondEnabled, + __AXInterfaceGetShowToolbarButtonShapesEnabled, __AXInterfaceGetShowWindowTitlebarIconsEnabled, + __AXInterfaceSetClassicInvertColorEnabled, __AXInterfaceSetCursorColorFill, + __AXInterfaceSetCursorColorOutline, __AXInterfaceSetCursorIsOverridden, + __AXInterfaceSetDifferentiateWithoutColorEnabled, __AXInterfaceSetDifferentiateWithoutColorEnabledOverride, __AXInterfaceSetIncreaseContrastEnabled, __AXInterfaceSetIncreaseContrastEnabledOverride, __AXInterfaceSetReduceMotionEnabled, __AXInterfaceSetReduceMotionEnabledOverride, + __AXInterfaceSetReduceTextInsertionPointModulationEnabled, + __AXInterfaceSetReduceTextInsertionPointModulationEnabledOverride, __AXInterfaceSetReduceTransparencyEnabled, __AXInterfaceSetReduceTransparencyEnabledOverride, __AXInterfaceSetShowToolbarButtonShapesEnabled, __AXInterfaceSetShowToolbarButtonShapesEnabledOverride, __AXInterfaceSetShowWindowTitlebarIconsEnabled, __AXInterfaceSetShowWindowTitlebarIconsEnabledOverride, - __AXIsAppleClientForCurrentRequestUntrusted, __AXRegisterControlComputerAccess, - __AXSetAuditTokenIsAuthenticatedCallback, __AXSetClientIdentificationOverride, - __AXShouldElementBeIgnoredForNavigation, __AXUIElementCopyElementAtPositionIncludeIgnored, - __AXUIElementCreateApplicationWithPresenterPid, __AXUIElementCreateWithData, - __AXUIElementCreateWithDataAndPid, __AXUIElementCreateWithDataAndPresenterPid, - __AXUIElementCreateWithPtr, __AXUIElementCreateWithRemoteToken, - __AXUIElementGetActualPid, __AXUIElementGetData, __AXUIElementGetIsProcessSuspended, - __AXUIElementGetWindow, __AXUIElementNotifyProcessSuspendStatus, - __AXUIElementPostNotification, __AXUIElementPostNotificationForObservedElement, - __AXUIElementPostNotificationWithInfo, __AXUIElementRegisterServerWithRunLoop, - __AXUIElementRemoteTokenCreate, __AXUIElementRequestServicedBySecondaryAXThread, - __AXUIElementUnregisterServer, __AXUIElementUseSecondaryAXThread, + __AXIsAppleClientForCurrentRequestUntrusted, __AXNotificationHandlerCreateWithCallback, + __AXRegisterControlComputerAccess, __AXSetAuditTokenIsAuthenticatedCallback, + __AXSetClientIdentificationOverride, __AXShouldElementBeIgnoredForNavigation, + __AXUIElementCopyElementAtPositionIncludeIgnored, __AXUIElementCreateApplicationWithPresenterPid, + __AXUIElementCreateWithData, __AXUIElementCreateWithDataAndPid, + __AXUIElementCreateWithDataAndPresenterPid, __AXUIElementCreateWithPtr, + __AXUIElementCreateWithRemoteToken, __AXUIElementGetActualPid, + __AXUIElementGetData, __AXUIElementGetIsProcessSuspended, + __AXUIElementGetWindow, __AXUIElementLoadAccessibilityBundles, + __AXUIElementNotifyProcessSuspendStatus, __AXUIElementPostNotification, + __AXUIElementPostNotificationForObservedElement, __AXUIElementPostNotificationWithInfo, + __AXUIElementRegisterServerWithRunLoop, __AXUIElementRemoteTokenCreate, + __AXUIElementRequestServicedBySecondaryAXThread, __AXUIElementUnregisterServer, + __AXUIElementUpdateServer, __AXUIElementUseSecondaryAXThread, __AddLabelsChangedCallback, __CopyProcessBundleLocationURL, __GDBIconsCGCacheList, __GetApplicationDesiresAttention, __GetFrontUIProcess, - __HIShapeCreateWithCGImage, __HIShapeCreateWithCGSRegionObj, - __HIShapeGetNative, __HIShapeOutsetToPixelBoundary, __HIShapeSetImmutable, - __HIShapeSetShapeWithOffset, __HideOtherApplications, __ICCopyMailHostName, - __ICCopyMailUserName, __ISCreateCGImageForType, __ISCreateCGImageForTypeAtScale, - __IconServicesGetCGImageRefFromIconRef, __IconServicesGetCGImageRefFromURL, - __InstallGURLEventHandler, __PIPZoomingEnabled, __RegisterApplication, - __RegisterAsSessionLauncherApplication, __RemoveLabelsChangedCallback, - __SetApplicationDesiresAttention, __SetFrontProcessWithOptions, - __SetHLTBWakeUpHook, __ShowAllApplications, __SignalApplicationReady, - __UAZoomFocusChange, __UAZoomFocusChangeAnchored, __UAZoomFocusChangeHighlightRect, - __UAZoomFocusChangeHighlightRectAnchored, __UAZoomingEnabled, - __UnregisterAsSessionLauncherApplication, _gDockDragCallback, - _gDockDragWindowCallback, _kAXAttachmentTextAttribute, _kAXAutocorrectedTextAttribute, - _kAXBackgroundColorTextAttribute, _kAXElementOrderHorizontalKey, - _kAXElementOrderVerticalKey, _kAXElementToFocusForLayoutChangeKey, - _kAXFontFamilyKey, _kAXFontNameKey, _kAXFontSizeKey, _kAXFontTextAttribute, - _kAXForegoundColorTextAttribute, _kAXForegroundColorTextAttribute, + __HIE_CaptureExceptionTelltaleOnce, __HIE_Crash, __HIE_WillSwallowException, + __HIRLU_AddRunLoopModeForDeferredActions, __HIRLU_DeferActions, + __HIRunLoopSemaphoreCreateWithRunLoopMode, __HIRunLoopSemaphoreSetLegend, + __HIRunLoopSemaphoreSignal, __HIRunLoopSemaphoreWait, __HIShapeCreateWithCGImage, + __HIShapeCreateWithCGSRegionObj, __HIShapeGetNative, __HIShapeOutsetToPixelBoundary, + __HIShapeSetImmutable, __HIShapeSetShapeWithOffset, __HideOtherApplications, + __ICCopyMailHostName, __ICCopyMailUserName, __ISCreateCGImageForType, + __ISCreateCGImageForTypeAtScale, __IconServicesGetCGImageRefFromIconRef, + __IconServicesGetCGImageRefFromURL, __InstallGURLEventHandler, + __PIPZoomingEnabled, __RegisterApplication, __RegisterAsSessionLauncherApplication, + __RemoveLabelsChangedCallback, __SetApplicationDesiresAttention, + __SetFrontProcessWithOptions, __SetHLTBWakeUpHook, __ShowAllApplications, + __SignalApplicationReady, __UAZoomFocusChange, __UAZoomFocusChangeAnchored, + __UAZoomFocusChangeHighlightRect, __UAZoomFocusChangeHighlightRectAnchored, + __UAZoomingEnabled, __UnregisterAsSessionLauncherApplication, + _gDockDragCallback, _gDockDragWindowCallback, _kAXAttachmentTextAttribute, + _kAXAutocorrectedTextAttribute, _kAXBackgroundColorTextAttribute, + _kAXElementOrderHorizontalKey, _kAXElementOrderVerticalKey, + _kAXElementToFocusForLayoutChangeKey, _kAXFontFamilyKey, _kAXFontNameKey, + _kAXFontSizeKey, _kAXFontTextAttribute, _kAXForegoundColorTextAttribute, + _kAXForegroundColorTextAttribute, _kAXHasClientsWithAccessRemoteDeviceContentDidChange, _kAXInterfaceBristolKey, _kAXInterfaceClassicInvertColorKey, _kAXInterfaceClassicInvertColorStatusDidChangeNotification, _kAXInterfaceCursorStatusDidChangeNotification, _kAXInterfaceDifferentiateWithoutColorKey, _kAXInterfaceDifferentiateWithoutColorStatusDidChangeNotification, _kAXInterfaceIncreaseContrastKey, _kAXInterfaceIncreaseContrastStatusDidChangeNotification, _kAXInterfaceReduceMotionKey, _kAXInterfaceReduceMotionStatusDidChangeNotification, - _kAXInterfaceReduceTransparencyKey, _kAXInterfaceReduceTransparencyStatusDidChangeNotification, + _kAXInterfaceReduceTextInsertionPointModulationDidChangeNotification, + _kAXInterfaceReduceTextInsertionPointModulationKey, _kAXInterfaceReduceTransparencyKey, + _kAXInterfaceReduceTransparencyStatusDidChangeNotification, _kAXInterfaceShowToolbarButtonShapesKey, _kAXInterfaceShowToolbarButtonShapesStatusDidChangeNotification, _kAXInterfaceShowWindowTitlebarIconsKey, _kAXInterfaceShowWindowTitlebarIconsStatusDidChangeNotification, _kAXInterfaceWhiteOnBlackKey, _kAXLinkTextAttribute, _kAXListItemIndexTextAttribute, @@ -540,11 +553,12 @@ exports: _kAXUIElementCopyHierarchyReturnAttributeErrorsKey, _kAXUIElementCopyHierarchySkipInspectionForAttributesKey, _kAXUIElementCopyHierarchyTruncateStringsKey, _kAXUnderlineColorTextAttribute, _kAXUnderlineTextAttribute, _kAXVisibleNameKey, _kAXVisualTextAlignmentKey ] + objc-classes: [ HIRunLoopSemaphore, HIRunLoopUtilities ] --- !tapi-tbd tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore' -current-version: 582.1 +current-version: 592.3 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: ApplicationServices @@ -614,7 +628,7 @@ exports: _PMPrinterChargeInfoURI, _PMPrinterCopyACL, _PMPrinterCopyDefaultUserCredentials, _PMPrinterCopyDescriptionURL, _PMPrinterCopyDeviceURI, _PMPrinterCopyFinalDeviceURI, _PMPrinterCopyHostName, _PMPrinterCopyMembers, _PMPrinterCopyOAUTHInfo, - _PMPrinterCopyPresets, _PMPrinterCopyRequiredUserCredentials, + _PMPrinterCopyPresets, _PMPrinterCopyPrinterUUID, _PMPrinterCopyRequiredUserCredentials, _PMPrinterCopyScannerUUID, _PMPrinterCopyScanningApp, _PMPrinterCopyScanningAppPath, _PMPrinterCopyState, _PMPrinterCopySuppliesURI, _PMPrinterCopyTempPPDURL, _PMPrinterCreateFromPrinterID, _PMPrinterCreatePaperInfoListForMenuPriv, diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontWorkerAccess.tbd b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontWorkerAccess.tbd index 89628189..6b9ebea9 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontWorkerAccess.tbd +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontWorkerAccess.tbd @@ -28,8 +28,8 @@ exports: _XTIssueSandboxExtensionsForURLs, _XTIssueSandboxExtensionsForURLsByPID, __Z18CopyFindAndReplacePK10__CFStringS1_S1_, __Z19utf8CopyDescriptionPKv, __Z29TFontWorkerProtocolSetClassesP14NSXPCInterface, __Z5MergePK9__CFArrayS1_R14TCFSortedArray, - __Z8utf8HashPKv, __Z9utf8EqualPKvS0_, __ZN10TCFTypeRef15GetBooleanValueEPKv, - __ZN11TCFBookmark16InitBookmarkDataEPK7__CFURLPK9__CFArraym, + __Z5XTLogiPK10__CFStringz, __Z8utf8HashPKv, __Z9utf8EqualPKvS0_, + __ZN10TCFTypeRef15GetBooleanValueEPKv, __ZN11TCFBookmark16InitBookmarkDataEPK7__CFURLPK9__CFArraym, __ZN11TCFBookmark18sDefaultPropertiesE, __ZN11TCFBookmark20GetDefaultPropertiesEv, __ZN11TCFBookmark23CreateDefaultPropertiesEv, __ZN11TCFBookmark28CopyPropertyFromBookmarkDataEPK8__CFDataPK10__CFString, __ZN11TCFBookmark30CopyPropertiesFromBookmarkDataEPK8__CFDataPK9__CFArray, diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices.tbd b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices.tbd index 03a46948..b09171d2 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices.tbd +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices.tbd @@ -2,7 +2,7 @@ tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices' -current-version: 777 +current-version: 807.2 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: ApplicationServices @@ -70,13 +70,14 @@ exports: _CoreDockSetWorkspacesEnabled, _CoreDockSetWorkspacesKeyBindings, _CoreDockUpdateWindow, _CoreDragAcceptDrag, _CoreDragCancelDrag, _CoreDragChangeBehaviors, _CoreDragCleanDragState, _CoreDragClearAllImageOverrides, - _CoreDragCopyTrashLabel, _CoreDragCreate, _CoreDragCreateWithPasteboard, - _CoreDragCreateWithPasteboardRef, _CoreDragDispose, _CoreDragEnableSpringLoading, - _CoreDragGetAllowableActions, _CoreDragGetAttributes, _CoreDragGetCurrentDrag, - _CoreDragGetDragWindow, _CoreDragGetDropActions, _CoreDragGetDropLocation, - _CoreDragGetForce, _CoreDragGetForceStage, _CoreDragGetItemBounds, - _CoreDragGetModifiers, _CoreDragGetMouseLocation, _CoreDragGetOrigin, - _CoreDragGetPasteboard, _CoreDragGetPasteboardRef, _CoreDragGetSpringLoadingAttributes, + _CoreDragCopyTrashLabel, _CoreDragCreate, _CoreDragCreateWithCFPasteboard, + _CoreDragCreateWithPasteboard, _CoreDragCreateWithPasteboardRef, + _CoreDragDispose, _CoreDragEnableSpringLoading, _CoreDragGetAllowableActions, + _CoreDragGetAttributes, _CoreDragGetCurrentDrag, _CoreDragGetDragWindow, + _CoreDragGetDropActions, _CoreDragGetDropLocation, _CoreDragGetForce, + _CoreDragGetForceStage, _CoreDragGetItemBounds, _CoreDragGetModifiers, + _CoreDragGetMouseLocation, _CoreDragGetOrigin, _CoreDragGetPasteboard, + _CoreDragGetPasteboardRef, _CoreDragGetSpringLoadingAttributes, _CoreDragGetStandardDropLocation, _CoreDragGetValueForKey, _CoreDragHasImageOverrides, _CoreDragInstallContextReceiveMessageHandlerOnConnection, _CoreDragInstallContextTrackingHandlerOnConnection, _CoreDragInstallReceiveHandler, @@ -85,8 +86,8 @@ exports: _CoreDragInstallTrackingHandlerOnConnection, _CoreDragIsTrashLabelSet, _CoreDragItemGetImageComponents, _CoreDragItemGetScreenFrame, _CoreDragItemHasAlternate, _CoreDragItemSetImageComponents, - _CoreDragRefSetImageDataForItem, _CoreDragRegisterClient, - _CoreDragRegisterClientInModes, _CoreDragRegisterClientWithOptions, + _CoreDragMessageName, _CoreDragRefIsValid, _CoreDragRefSetImageDataForItem, + _CoreDragRegisterClient, _CoreDragRegisterClientInModes, _CoreDragRegisterClientWithOptions, _CoreDragReleaseImageData, _CoreDragRemoveReceiveHandler, _CoreDragRemoveReceiveHandlerOnConnection, _CoreDragRemoveReceiveMessageHandler, _CoreDragRemoveReceiveMessageHandlerOnConnection, _CoreDragRemoveTrackingHandler, @@ -100,14 +101,14 @@ exports: _CoreDragSetItemBounds, _CoreDragSetMouseLocation, _CoreDragSetOrigin, _CoreDragSetRootCALayer, _CoreDragSetSourceClippingRect, _CoreDragSetStandardDropLocation, _CoreDragSetTrashDrawProc, _CoreDragSetTrashLabel, _CoreDragSetValueForKey, - _CoreDragStartDragging, _CoreDragUpdatesBegin, _CoreDragUpdatesCommit, - _CoreGetDragInfo, _CoreImagingCreateImage, _CoreMenuCreateKeyEquivalentString, - _CoreMenuCreateVirtualKeyString, _CoreMenuExtraAddMenuExtra, - _CoreMenuExtraGetMenuExtra, _CoreMenuExtraGetOrder, _CoreMenuExtraInsertMenuExtra, - _CoreMenuExtraRemoveMenuExtra, _CoreMenuGetVirtualKeyMap, - _CreatePasteboardFlavorTypeName, _DesktopPictureCopyDisplay, - _DesktopPictureCopyDisplayForSpace, _DesktopPictureCopyValue, - _DesktopPictureSetDisplay, _DesktopPictureSetDisplayForSpace, + _CoreDragStartDragging, _CoreDragStartDraggingAsync, _CoreDragUpdatesBegin, + _CoreDragUpdatesCommit, _CoreGetDragInfo, _CoreImagingCreateImage, + _CoreMenuCreateKeyEquivalentString, _CoreMenuCreateVirtualKeyString, + _CoreMenuExtraAddMenuExtra, _CoreMenuExtraGetMenuExtra, _CoreMenuExtraGetOrder, + _CoreMenuExtraInsertMenuExtra, _CoreMenuExtraRemoveMenuExtra, + _CoreMenuGetVirtualKeyMap, _CreatePasteboardFlavorTypeName, + _DesktopPictureCopyDisplay, _DesktopPictureCopyDisplayForSpace, + _DesktopPictureCopyValue, _DesktopPictureSetDisplay, _DesktopPictureSetDisplayForSpace, _DesktopPictureSetValue, _DisposeIconActionUPP, _DisposeIconGetterUPP, _ExitToShell, _GetApplicationIsDaemon, _GetCachedFlavorName, _GetCurrentProcess, _GetFrontProcess, _GetGlobalIconImagesCacheMaxEntriesAndMaxDataSize, @@ -150,10 +151,10 @@ exports: _MSHMIGSourceSetSendOnceCallback, _NewIconActionUPP, _NewIconGetterUPP, _PasteboardClear, _PasteboardCopyItemFlavorData, _PasteboardCopyItemFlavors, _PasteboardCopyName, _PasteboardCopyPasteLocation, _PasteboardCreate, - _PasteboardDontHonorPromises, _PasteboardGetCFPasteboard, - _PasteboardGetItemCount, _PasteboardGetItemFlavorFlags, _PasteboardGetItemIdentifier, - _PasteboardGetTypeID, _PasteboardPutItemFlavor, _PasteboardResolvePromises, - _PasteboardSetPasteLocation, _PasteboardSetPromiseKeeper, + _PasteboardCreateWithCFPasteboard, _PasteboardDontHonorPromises, + _PasteboardGetCFPasteboard, _PasteboardGetItemCount, _PasteboardGetItemFlavorFlags, + _PasteboardGetItemIdentifier, _PasteboardGetTypeID, _PasteboardPutItemFlavor, + _PasteboardResolvePromises, _PasteboardSetPasteLocation, _PasteboardSetPromiseKeeper, _PasteboardSynchronize, _PasteboardToggleDuplicateFlavorCheck, _PlotIconRefInContext, _ProcessInformationCopyDictionary, _SXArbitrationAddQueuedOutputRequest, _SXArbitrationCancelQueuedRequest, @@ -162,68 +163,80 @@ exports: _SameProcess, _SerializeCFType, _SetApplicationIsDaemon, _SetFrontProcess, _SetFrontProcessWithOptions, _SetGlobalIconImagesCacheMaxEntriesAndMaxDataSize, _SetIconFamilyData, _SetLabelColorAndName, _ShowHideDrag, - _ShowHideProcess, _StartIPCPing, _TransformProcessType, _TranslationCopyDestinationType, - _TranslationCopySourceType, _TranslationCreate, _TranslationCreateWithSourceArray, - _TranslationGetTranslationFlags, _TranslationGetTypeID, _TranslationPerformForData, - _TranslationPerformForFile, _TranslationPerformForURL, _UAZoomChangeFocus, - _UAZoomEnabled, _UnserializeCFType, _WakeUpProcess, __AXCopyActionDescription, + _ShowHideProcess, _StartIPCFlockingPing, _StartIPCPing, _TransformProcessType, + _TranslationCopyDestinationType, _TranslationCopySourceType, + _TranslationCreate, _TranslationCreateWithSourceArray, _TranslationGetTranslationFlags, + _TranslationGetTypeID, _TranslationPerformForData, _TranslationPerformForFile, + _TranslationPerformForURL, _UAZoomChangeFocus, _UAZoomEnabled, + _UnserializeCFType, _WakeUpProcess, __AXCopyActionDescription, __AXCopyChildrenHash, __AXCopyChildrenHashWithRelativeFrame, __AXCopyRoleDescription, __AXCopyRoleDescriptionWithSubrole, - __AXCopyTitle, __AXCreateElementOrdering, __AXCurrentRequestCanReturnInspectionContent, - __AXCurrentRequestCanReturnProtectedContent, __AXGetClientForCurrentRequestUntrusted, + __AXCopyTitle, __AXCreateElementOrdering, __AXCurrentRequestCanAccessRemoteDeviceContent, + __AXCurrentRequestCanReturnInspectionContent, __AXCurrentRequestCanReturnProtectedContent, + __AXGetClientForCurrentRequestUntrusted, __AXHasClientsWithAccessRemoteDeviceContent, __AXInterfaceCopyCursorColorFill, __AXInterfaceCopyCursorColorOutline, __AXInterfaceCursorIsOverridden, __AXInterfaceCursorSetAndReturnSeed, __AXInterfaceGetBristolEnabled, __AXInterfaceGetClassicInvertColorEnabled, __AXInterfaceGetDifferentiateWithoutColorEnabled, __AXInterfaceGetIncreaseContrastEnabled, - __AXInterfaceGetReduceMotionEnabled, __AXInterfaceGetReduceTransparencyEnabled, - __AXInterfaceGetRichmondEnabled, __AXInterfaceGetShowToolbarButtonShapesEnabled, - __AXInterfaceGetShowWindowTitlebarIconsEnabled, __AXInterfaceSetClassicInvertColorEnabled, - __AXInterfaceSetCursorColorFill, __AXInterfaceSetCursorColorOutline, - __AXInterfaceSetCursorIsOverridden, __AXInterfaceSetDifferentiateWithoutColorEnabled, - __AXInterfaceSetDifferentiateWithoutColorEnabledOverride, + __AXInterfaceGetReduceMotionEnabled, __AXInterfaceGetReduceTextInsertionPointModulationEnabled, + __AXInterfaceGetReduceTransparencyEnabled, __AXInterfaceGetRichmondEnabled, + __AXInterfaceGetShowToolbarButtonShapesEnabled, __AXInterfaceGetShowWindowTitlebarIconsEnabled, + __AXInterfaceSetClassicInvertColorEnabled, __AXInterfaceSetCursorColorFill, + __AXInterfaceSetCursorColorOutline, __AXInterfaceSetCursorIsOverridden, + __AXInterfaceSetDifferentiateWithoutColorEnabled, __AXInterfaceSetDifferentiateWithoutColorEnabledOverride, __AXInterfaceSetIncreaseContrastEnabled, __AXInterfaceSetIncreaseContrastEnabledOverride, __AXInterfaceSetReduceMotionEnabled, __AXInterfaceSetReduceMotionEnabledOverride, + __AXInterfaceSetReduceTextInsertionPointModulationEnabled, + __AXInterfaceSetReduceTextInsertionPointModulationEnabledOverride, __AXInterfaceSetReduceTransparencyEnabled, __AXInterfaceSetReduceTransparencyEnabledOverride, __AXInterfaceSetShowToolbarButtonShapesEnabled, __AXInterfaceSetShowToolbarButtonShapesEnabledOverride, __AXInterfaceSetShowWindowTitlebarIconsEnabled, __AXInterfaceSetShowWindowTitlebarIconsEnabledOverride, - __AXIsAppleClientForCurrentRequestUntrusted, __AXRegisterControlComputerAccess, - __AXSetAuditTokenIsAuthenticatedCallback, __AXSetClientIdentificationOverride, - __AXShouldElementBeIgnoredForNavigation, __AXUIElementCopyElementAtPositionIncludeIgnored, - __AXUIElementCreateApplicationWithPresenterPid, __AXUIElementCreateWithData, - __AXUIElementCreateWithDataAndPid, __AXUIElementCreateWithDataAndPresenterPid, - __AXUIElementCreateWithPtr, __AXUIElementCreateWithRemoteToken, - __AXUIElementGetActualPid, __AXUIElementGetData, __AXUIElementGetIsProcessSuspended, - __AXUIElementGetWindow, __AXUIElementNotifyProcessSuspendStatus, - __AXUIElementPostNotification, __AXUIElementPostNotificationForObservedElement, - __AXUIElementPostNotificationWithInfo, __AXUIElementRegisterServerWithRunLoop, - __AXUIElementRemoteTokenCreate, __AXUIElementRequestServicedBySecondaryAXThread, - __AXUIElementUnregisterServer, __AXUIElementUseSecondaryAXThread, + __AXIsAppleClientForCurrentRequestUntrusted, __AXNotificationHandlerCreateWithCallback, + __AXRegisterControlComputerAccess, __AXSetAuditTokenIsAuthenticatedCallback, + __AXSetClientIdentificationOverride, __AXShouldElementBeIgnoredForNavigation, + __AXUIElementCopyElementAtPositionIncludeIgnored, __AXUIElementCreateApplicationWithPresenterPid, + __AXUIElementCreateWithData, __AXUIElementCreateWithDataAndPid, + __AXUIElementCreateWithDataAndPresenterPid, __AXUIElementCreateWithPtr, + __AXUIElementCreateWithRemoteToken, __AXUIElementGetActualPid, + __AXUIElementGetData, __AXUIElementGetIsProcessSuspended, + __AXUIElementGetWindow, __AXUIElementLoadAccessibilityBundles, + __AXUIElementNotifyProcessSuspendStatus, __AXUIElementPostNotification, + __AXUIElementPostNotificationForObservedElement, __AXUIElementPostNotificationWithInfo, + __AXUIElementRegisterServerWithRunLoop, __AXUIElementRemoteTokenCreate, + __AXUIElementRequestServicedBySecondaryAXThread, __AXUIElementUnregisterServer, + __AXUIElementUpdateServer, __AXUIElementUseSecondaryAXThread, __AddLabelsChangedCallback, __CopyProcessBundleLocationURL, __GDBIconsCGCacheList, __GetApplicationDesiresAttention, __GetFrontUIProcess, - __HIShapeCreateWithCGImage, __HIShapeCreateWithCGSRegionObj, - __HIShapeGetNative, __HIShapeOutsetToPixelBoundary, __HIShapeSetImmutable, - __HIShapeSetShapeWithOffset, __HideOtherApplications, __ICCopyMailHostName, - __ICCopyMailUserName, __ISCreateCGImageForType, __ISCreateCGImageForTypeAtScale, - __IconServicesGetCGImageRefFromIconRef, __IconServicesGetCGImageRefFromURL, - __InstallGURLEventHandler, __PIPZoomingEnabled, __RegisterApplication, - __RegisterAsSessionLauncherApplication, __RemoveLabelsChangedCallback, - __SetApplicationDesiresAttention, __SetFrontProcessWithOptions, - __SetHLTBWakeUpHook, __ShowAllApplications, __SignalApplicationReady, - __UAZoomFocusChange, __UAZoomFocusChangeAnchored, __UAZoomFocusChangeHighlightRect, - __UAZoomFocusChangeHighlightRectAnchored, __UAZoomingEnabled, - __UnregisterAsSessionLauncherApplication, _gDockDragCallback, - _gDockDragWindowCallback, _kAXAttachmentTextAttribute, _kAXAutocorrectedTextAttribute, - _kAXBackgroundColorTextAttribute, _kAXElementOrderHorizontalKey, - _kAXElementOrderVerticalKey, _kAXElementToFocusForLayoutChangeKey, - _kAXFontFamilyKey, _kAXFontNameKey, _kAXFontSizeKey, _kAXFontTextAttribute, - _kAXForegoundColorTextAttribute, _kAXForegroundColorTextAttribute, + __HIE_CaptureExceptionTelltaleOnce, __HIE_Crash, __HIE_WillSwallowException, + __HIRLU_AddRunLoopModeForDeferredActions, __HIRLU_DeferActions, + __HIRunLoopSemaphoreCreateWithRunLoopMode, __HIRunLoopSemaphoreSetLegend, + __HIRunLoopSemaphoreSignal, __HIRunLoopSemaphoreWait, __HIShapeCreateWithCGImage, + __HIShapeCreateWithCGSRegionObj, __HIShapeGetNative, __HIShapeOutsetToPixelBoundary, + __HIShapeSetImmutable, __HIShapeSetShapeWithOffset, __HideOtherApplications, + __ICCopyMailHostName, __ICCopyMailUserName, __ISCreateCGImageForType, + __ISCreateCGImageForTypeAtScale, __IconServicesGetCGImageRefFromIconRef, + __IconServicesGetCGImageRefFromURL, __InstallGURLEventHandler, + __PIPZoomingEnabled, __RegisterApplication, __RegisterAsSessionLauncherApplication, + __RemoveLabelsChangedCallback, __SetApplicationDesiresAttention, + __SetFrontProcessWithOptions, __SetHLTBWakeUpHook, __ShowAllApplications, + __SignalApplicationReady, __UAZoomFocusChange, __UAZoomFocusChangeAnchored, + __UAZoomFocusChangeHighlightRect, __UAZoomFocusChangeHighlightRectAnchored, + __UAZoomingEnabled, __UnregisterAsSessionLauncherApplication, + _gDockDragCallback, _gDockDragWindowCallback, _kAXAttachmentTextAttribute, + _kAXAutocorrectedTextAttribute, _kAXBackgroundColorTextAttribute, + _kAXElementOrderHorizontalKey, _kAXElementOrderVerticalKey, + _kAXElementToFocusForLayoutChangeKey, _kAXFontFamilyKey, _kAXFontNameKey, + _kAXFontSizeKey, _kAXFontTextAttribute, _kAXForegoundColorTextAttribute, + _kAXForegroundColorTextAttribute, _kAXHasClientsWithAccessRemoteDeviceContentDidChange, _kAXInterfaceBristolKey, _kAXInterfaceClassicInvertColorKey, _kAXInterfaceClassicInvertColorStatusDidChangeNotification, _kAXInterfaceCursorStatusDidChangeNotification, _kAXInterfaceDifferentiateWithoutColorKey, _kAXInterfaceDifferentiateWithoutColorStatusDidChangeNotification, _kAXInterfaceIncreaseContrastKey, _kAXInterfaceIncreaseContrastStatusDidChangeNotification, _kAXInterfaceReduceMotionKey, _kAXInterfaceReduceMotionStatusDidChangeNotification, - _kAXInterfaceReduceTransparencyKey, _kAXInterfaceReduceTransparencyStatusDidChangeNotification, + _kAXInterfaceReduceTextInsertionPointModulationDidChangeNotification, + _kAXInterfaceReduceTextInsertionPointModulationKey, _kAXInterfaceReduceTransparencyKey, + _kAXInterfaceReduceTransparencyStatusDidChangeNotification, _kAXInterfaceShowToolbarButtonShapesKey, _kAXInterfaceShowToolbarButtonShapesStatusDidChangeNotification, _kAXInterfaceShowWindowTitlebarIconsKey, _kAXInterfaceShowWindowTitlebarIconsStatusDidChangeNotification, _kAXInterfaceWhiteOnBlackKey, _kAXLinkTextAttribute, _kAXListItemIndexTextAttribute, @@ -240,4 +253,5 @@ exports: _kAXUIElementCopyHierarchyReturnAttributeErrorsKey, _kAXUIElementCopyHierarchySkipInspectionForAttributesKey, _kAXUIElementCopyHierarchyTruncateStringsKey, _kAXUnderlineColorTextAttribute, _kAXUnderlineTextAttribute, _kAXVisibleNameKey, _kAXVisualTextAlignmentKey ] + objc-classes: [ HIRunLoopSemaphore, HIRunLoopUtilities ] ... diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXActionConstants.h b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXActionConstants.h index 6911c456..18f4b2cc 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXActionConstants.h +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXActionConstants.h @@ -27,9 +27,9 @@ or button that does the same thing. */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @group Standard Actions */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @defined kAXPressAction @@ -90,9 +90,9 @@ */ #define kAXShowDefaultUIAction CFSTR("AXShowDefaultUI") -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @group New Actions */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /* Need discussion for following */ @@ -113,9 +113,9 @@ */ #define kAXShowMenuAction CFSTR("AXShowMenu") -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @group Obsolete Actions */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @defined kAXPickAction diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXAttributeConstants.h b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXAttributeConstants.h index 85e3bbf7..61b4dedd 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXAttributeConstants.h +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXAttributeConstants.h @@ -34,9 +34,9 @@ AXValueType associated with it. The AXValueGetType function returns the AXValueType of the structure contained within a CFTypeRef. */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /* Attributes */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /* Quick reference: @@ -180,9 +180,9 @@ kAXAlternateUIVisibleAttribute */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @group Informational Attributes */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @defined kAXRoleAttribute @@ -307,9 +307,9 @@ */ #define kAXTitleAttribute CFSTR("AXTitle") -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @group Value Attributes */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @defined kAXValueAttribute @@ -1299,9 +1299,9 @@ typedef CF_OPTIONS(UInt32, AXMenuItemModifiers) { // UI supporting transient state attributes #define kAXAlternateUIVisibleAttribute CFSTR("AXAlternateUIVisible") -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @group Parameterized Attributes */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ // Text Suite Parameterized Attributes #define kAXLineForIndexParameterizedAttribute CFSTR("AXLineForIndex") diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXRoleConstants.h b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXRoleConstants.h index ae629e67..3b3b16d7 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXRoleConstants.h +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXRoleConstants.h @@ -51,9 +51,9 @@ Add a Quick Reference section, like the one at the top of the attributes. */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /*! @group Standard Roles */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /* Need discussion for following */ @@ -395,9 +395,9 @@ #define kAXPopoverRole CFSTR("AXPopover") -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ /* Subroles */ -/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/ +/*——————————————————————————————————————————————————————————————————————————————————————*/ // standard subroles #define kAXCloseButtonSubrole CFSTR("AXCloseButton") diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXTextAttributedString.h b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXTextAttributedString.h index 797c5bc2..d0ea9ed9 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXTextAttributedString.h +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/AXTextAttributedString.h @@ -117,7 +117,7 @@ extern CFStringRef kAXAutocorrectedTextAttribute AVAILABLE_MAC_OS_X_VERSION_10_7 /*! @constant kAXListItemPrefixTextAttribute - @abstract A CFAttributedStringRef value that indicates the prepended string of the list item. If the string is a common unicode character (e.g. a bullet ¥), return that unicode character. For lists with images before the text, return a reasonable label of the image. + @abstract A CFAttributedStringRef value that indicates the prepended string of the list item. If the string is a common unicode character (e.g. a bullet •), return that unicode character. For lists with images before the text, return a reasonable label of the image. */ extern CFStringRef kAXListItemPrefixTextAttribute AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER; diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/HIShape.h b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/HIShape.h index a8da81ff..a4fd0e99 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/HIShape.h +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/HIShape.h @@ -172,7 +172,6 @@ typedef CALLBACK_API_C( OSStatus , HIShapeEnumerateProcPtr )(int inMessage, HISh * Discussion: * Returns the CoreFoundation type ID for the HIShape class. * - * * This API is thread safe only on Mac OS X 10.5 and later; see the * Thread Safety Information section at the top of the header for * other important details. @@ -291,7 +290,6 @@ HIShapeCreateWithRect(const CGRect * inRect) AVAILABLE_MAC_OS_X * Discussion: * Creates an immutable copy of a mutable or immutable HIShape. * - * * This API is thread safe only on Mac OS X 10.5 and later; see the * Thread Safety Information section at the top of the header for * other important details. @@ -394,7 +392,6 @@ HIShapeCreateDifference( * Discussion: * Creates a new immutable shape which is the union of two others. * - * * This API is thread safe only on Mac OS X 10.5 and later; see the * Thread Safety Information section at the top of the header for * other important details. @@ -525,9 +522,8 @@ HIShapeIsRectangular(HIShapeRef inShape) AVAILABLE_MAC_OS_X * HIShapeContainsPoint() * * Discussion: - * Returns true if the given HIShapeRef contains the point passed - * in. - * + * Returns true if the given HIShapeRef contains the point passed in. + * * This API is thread safe only on Mac OS X 10.5 and later; see the * Thread Safety Information section at the top of the header for * other important details. @@ -561,9 +557,8 @@ HIShapeContainsPoint( * HIShapeIntersectsRect() * * Discussion: - * Returns true if the given HIShapeRef intersects the rect passed - * in. - * + * Returns true if the given HIShapeRef intersects the rect passed in. + * * This API is thread safe only on Mac OS X 10.5 and later; see the * Thread Safety Information section at the top of the header for * other important details. @@ -632,7 +627,7 @@ HIShapeGetBounds( * HIShapeGetAsQDRgn() * * Discussion: - * Changes a given Quickdraw region handle to have the same shape as + * Changes a given QuickDraw region handle to have the same shape as * a given HIShapeRef. Essentially you are converting an HIShapeRef * into a RgnHandle. This conversion may lose fidelity depending on * how the shape was created originally. @@ -709,7 +704,7 @@ HIShapeReplacePathInCGContext( * HIShapeSetQDClip() * * Discussion: - * Given an HIShapeRef and a Quickdraw port, set the current clip in + * Given an HIShapeRef and a QuickDraw port, set the current clip in * the port to the shape. * * This API is thread safe only on Mac OS X 10.5 and later; see the @@ -824,7 +819,6 @@ HIShapeCreateMutable(void) AVAILABLE_MAC_OS_X * Discussion: * Given an existing HIShapeRef, creates a new mutable copy. * - * * This API is thread safe only on Mac OS X 10.5 and later; see the * Thread Safety Information section at the top of the header for * other important details. @@ -912,7 +906,6 @@ HIShapeSetEmpty(HIMutableShapeRef inShape) AVAILABLE_MAC_OS_X * Discussion: * Sets a mutable shape to have the same contents as another shape. * - * * This API is thread safe only on Mac OS X 10.5 and later; see the * Thread Safety Information section at the top of the header for * other important details. @@ -949,7 +942,6 @@ HIShapeSetWithShape( * Discussion: * Takes two shapes and sets a third to be their intersection. * - * * This API is thread safe only on Mac OS X 10.5 and later; see the * Thread Safety Information section at the top of the header for * other important details. @@ -1007,7 +999,7 @@ HIShapeIntersect( * The second shape. * * outResult: - * The shape to receive the result of the intersection. This can + * The shape to receive the result of the subtraction. This can * be one of the source shapes. This shape must be mutable. * * Result: diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Pasteboard.h b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Pasteboard.h index a945db26..f823fc1b 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Pasteboard.h +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Pasteboard.h @@ -3,7 +3,7 @@ Contains: Pasteboard Manager Interfaces. - Copyright: � 2003-2012 by Apple Computer, Inc., all rights reserved. + Copyright: © 2003-2012 by Apple Computer, Inc., all rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Processes.h b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Processes.h index 6fa26b75..4818b6f7 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Processes.h +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Processes.h @@ -3,7 +3,7 @@ Contains: Process Manager Interfaces. - Copyright: � 1989-2012 by Apple Computer, Inc., all rights reserved + Copyright: © 1989-2012 by Apple Computer, Inc., all rights reserved Bugs?: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/TranslationServices.h b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/TranslationServices.h index b52986a4..1e3e2e2e 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/TranslationServices.h +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/TranslationServices.h @@ -3,7 +3,7 @@ Contains: Translation Services Interfaces. - Copyright: � 2003-2012 by Apple Computer, Inc., all rights reserved. + Copyright: © 2003-2012 by Apple Computer, Inc., all rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/UniversalAccess.h b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/UniversalAccess.h index f3f8a05b..4e9a85d2 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/UniversalAccess.h +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/UniversalAccess.h @@ -3,7 +3,7 @@ Contains: Universal Access Interfaces. - Copyright: � 2005-2012 by Apple Computer, Inc., all rights reserved. + Copyright: © 2005-2012 by Apple Computer, Inc., all rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore.tbd b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore.tbd index 9028c023..8c7fc137 100644 --- a/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore.tbd +++ b/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore.tbd @@ -2,7 +2,7 @@ tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore' -current-version: 582.1 +current-version: 592.3 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: ApplicationServices @@ -72,7 +72,7 @@ exports: _PMPrinterChargeInfoURI, _PMPrinterCopyACL, _PMPrinterCopyDefaultUserCredentials, _PMPrinterCopyDescriptionURL, _PMPrinterCopyDeviceURI, _PMPrinterCopyFinalDeviceURI, _PMPrinterCopyHostName, _PMPrinterCopyMembers, _PMPrinterCopyOAUTHInfo, - _PMPrinterCopyPresets, _PMPrinterCopyRequiredUserCredentials, + _PMPrinterCopyPresets, _PMPrinterCopyPrinterUUID, _PMPrinterCopyRequiredUserCredentials, _PMPrinterCopyScannerUUID, _PMPrinterCopyScanningApp, _PMPrinterCopyScanningAppPath, _PMPrinterCopyState, _PMPrinterCopySuppliesURI, _PMPrinterCopyTempPPDURL, _PMPrinterCreateFromPrinterID, _PMPrinterCreatePaperInfoListForMenuPriv, diff --git a/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox.tbd b/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox.tbd index b1626eea..40333861 100644 --- a/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox.tbd +++ b/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox.tbd @@ -174,8 +174,16 @@ exports: '$ld$hide$os10.9$_MusicDeviceSysEx', _AQOfflineMixerConnectAudioQueue, _AQOfflineMixerDisconnectAudioQueue, _AQOfflineMixerDispose, _AQOfflineMixerGetProperty, _AQOfflineMixerGetPropertySize, - _AQOfflineMixerNew, _AQOfflineMixerRender, _AQOfflineMixerReset, - _AQOfflineMixerSetProperty, _AUGraphAddNode, _AUGraphAddRenderNotify, + _AQOfflineMixerNew, _AQOfflineMixerRender, _AQOfflineMixerRenderWithPacketDependencyInfo, + _AQOfflineMixerReset, _AQOfflineMixerSetProperty, _ATAssignToSubmixTap, + _ATAudioProcessingNodeCancelScheduledParameters, _ATAudioProcessingNodeDispose, + _ATAudioProcessingNodeGetParameter, _ATAudioProcessingNodeGetProperty, + _ATAudioProcessingNodeGetPropertyInfo, _ATAudioProcessingNodeInstantiate, + _ATAudioProcessingNodeScheduleParameter, _ATAudioProcessingNodeScheduleParameters, + _ATAudioProcessingNodeSetParameter, _ATAudioProcessingNodeSetProperty, + _ATSubmixTapDispose, _ATSubmixTapGetSourceAudio, _ATSubmixTapGetTime, + _ATSubmixTapNew, _ATSubmixTapNew_CMClient, _ATSubmixTapNew_CMServer, + _ATSubmixTapSetTimelineInfo, _AUGraphAddNode, _AUGraphAddRenderNotify, _AUGraphClearConnections, _AUGraphClose, _AUGraphConnectNodeInput, _AUGraphCountNodeInteractions, _AUGraphDisconnectNodeInput, _AUGraphGetCPULoad, _AUGraphGetIndNode, _AUGraphGetInteractionInfo, @@ -184,40 +192,42 @@ exports: _AUGraphIsOpen, _AUGraphIsRunning, _AUGraphNodeInfo, _AUGraphOpen, _AUGraphRemoveNode, _AUGraphRemoveRenderNotify, _AUGraphSetNodeInputCallback, _AUGraphStart, _AUGraphStop, _AUGraphUninitialize, _AUGraphUpdate, - _AudioGetDeviceSpatialPreferencesForContentType, _AudioQueueAddPropertyListener, - _AudioQueueAllocateBuffer, _AudioQueueAllocateBufferWithMemory, - _AudioQueueAllocateBufferWithPacketDescriptions, _AudioQueueAllocateBufferWithPacketDescriptionsWithMemory, + _AUVoiceIOSpeechActivityEventKey, _AudioGetDeviceSpatialPreferencesForContentType, + _AudioQueueAddPropertyListener, _AudioQueueAllocateBuffer, + _AudioQueueAllocateBufferWithMemory, _AudioQueueAllocateBufferWithPacketDescriptions, + _AudioQueueAllocateBufferWithPacketDescriptionsWithMemory, _AudioQueueConvertToScaledSampleTime, _AudioQueueConvertToUnscaledSampleTime, _AudioQueueCreateTimeline, _AudioQueueDeviceGetCurrentTime, _AudioQueueDeviceGetNearestStartTime, _AudioQueueDeviceTranslateTime, _AudioQueueDispose, _AudioQueueDisposeTimeline, _AudioQueueEnqueueBuffer, _AudioQueueEnqueueBufferWithParameters, _AudioQueueEnqueueSilence, _AudioQueueFlush, _AudioQueueFreeBuffer, _AudioQueueGetCurrentTime, - _AudioQueueGetParameter, _AudioQueueGetProperty, _AudioQueueGetPropertySize, - _AudioQueueNewInput, _AudioQueueNewInputWithDispatchQueue, - _AudioQueueNewOutput, _AudioQueueNewOutputWithDispatchQueue, - _AudioQueueOfflineRender, _AudioQueuePause, _AudioQueuePrime, - _AudioQueueProcessingTapDispose, _AudioQueueProcessingTapGetQueueTime, - _AudioQueueProcessingTapGetQueueTime_CM2, _AudioQueueProcessingTapGetSourceAudio, - _AudioQueueProcessingTapNew, _AudioQueueRemovePropertyListener, - _AudioQueueReset, _AudioQueueScheduleParameters, _AudioQueueScreenSharingHostInit, - _AudioQueueSetOfflineRenderFormat, _AudioQueueSetParameter, - _AudioQueueSetProperty, _AudioQueueStart, _AudioQueueStartWithFlags, - _AudioQueueStop, _AudioServicesAddSystemSoundCompletion, _AudioServicesCreateSystemSoundID, - _AudioServicesCreateSystemSoundIDWithOptions, _AudioServicesCreateSystemSoundIDWithPath, - _AudioServicesDisposeSystemSoundID, _AudioServicesGetProperty, - _AudioServicesGetPropertyInfo, _AudioServicesPlayAlertSound, - _AudioServicesPlayAlertSoundWithCompletion, _AudioServicesPlaySystemSound, - _AudioServicesPlaySystemSoundWithCompletion, _AudioServicesPlaySystemSoundWithOptions, - _AudioServicesRemoveSystemSoundCompletion, _AudioServicesSetProperty, - _AudioServicesStartSystemSound, _AudioServicesStopSystemSound, - _AudioSetSpatializationMode, _AudioToolboxServerInit, _CACentralLog, - _CACentralLogString, _CACentralLog_VA, _CZPEnabled, _CZPPrimarySession, - _CopyInstrumentInfoFromSoundBank, _CopyNameFromSoundBank, - _DisposeAUGraph, _DisposeMusicEventIterator, _DisposeMusicPlayer, - _DisposeMusicSequence, _HandleCARPViolation, _MZAudioSessionCanActivate, - _MZCheckImplicitPrimarySessionActivation, _MZCheckImplicitSessionActivation, - _MZSessionManagerInit, _MusicEventIteratorDeleteEvent, _MusicEventIteratorGetEventInfo, + _AudioQueueGetParameter, _AudioQueueGetPassThroughFormats, + _AudioQueueGetProperty, _AudioQueueGetPropertySize, _AudioQueueNewInput, + _AudioQueueNewInputWithDispatchQueue, _AudioQueueNewOutput, + _AudioQueueNewOutputWithDispatchQueue, _AudioQueueOfflineRender, + _AudioQueuePause, _AudioQueuePrime, _AudioQueueProcessingTapDispose, + _AudioQueueProcessingTapGetQueueTime, _AudioQueueProcessingTapGetQueueTime_CM2, + _AudioQueueProcessingTapGetSourceAudio, _AudioQueueProcessingTapNew, + _AudioQueueRemovePropertyListener, _AudioQueueReset, _AudioQueueScheduleParameters, + _AudioQueueScreenSharingHostInit, _AudioQueueSetOfflineRenderFormat, + _AudioQueueSetParameter, _AudioQueueSetProperty, _AudioQueueStart, + _AudioQueueStartWithFlags, _AudioQueueStop, _AudioServicesAddSystemSoundCompletion, + _AudioServicesCreateSystemSoundID, _AudioServicesCreateSystemSoundIDWithOptions, + _AudioServicesCreateSystemSoundIDWithPath, _AudioServicesDisposeSystemSoundID, + _AudioServicesGetProperty, _AudioServicesGetPropertyInfo, + _AudioServicesPlayAlertSound, _AudioServicesPlayAlertSoundWithCompletion, + _AudioServicesPlaySystemSound, _AudioServicesPlaySystemSoundWithCompletion, + _AudioServicesPlaySystemSoundWithOptions, _AudioServicesRemoveSystemSoundCompletion, + _AudioServicesSetProperty, _AudioServicesStartSystemSound, + _AudioServicesStopSystemSound, _AudioSetSpatializationMode, + _AudioToolboxServerInit, _CACentralLog, _CACentralLogString, + _CACentralLog_VA, _CZPEnabled, _CZPPrimarySession, _CopyInstrumentInfoFromSoundBank, + _CopyNameFromSoundBank, _DisposeAUGraph, _DisposeMusicEventIterator, + _DisposeMusicPlayer, _DisposeMusicSequence, _HandleCARPViolation, + _MZAudioSessionCanActivate, _MZCheckImplicitPrimarySessionActivation, + _MZCheckImplicitSessionActivation, _MZSessionManagerInit, + _MusicEventIteratorDeleteEvent, _MusicEventIteratorGetEventInfo, _MusicEventIteratorHasCurrentEvent, _MusicEventIteratorHasNextEvent, _MusicEventIteratorHasPreviousEvent, _MusicEventIteratorNextEvent, _MusicEventIteratorPreviousEvent, _MusicEventIteratorSeek, @@ -251,21 +261,30 @@ exports: __Z20AQIONode_OSWorkgroupP8AQIONode, __Z40AQIONodeManager_FindSharedCatalystIONodev, __ZN14AQIONodeClient12SetCanRecordEv, __ZN14AQIONodeClient18setRoutingBehaviorEjPK14__CFDictionaryRj, __ZN14AQIONodeClient26GetPIDFromClientAuditTokenEv, __ZN14AQIONodeClient32SetRoutingBehaviorFromDictionaryEPK14__CFDictionary, + __ZN14AQIONodeClient46SetIsInputMutedBecauseDeviceIsRemoteControlledEv, __ZN14AQIONodeClientD0Ev, __ZN14AQIONodeClientD1Ev, __ZN14AQIONodeClientD2Ev, - __ZN2AT14AudioTapClientC1EPKvj, __ZN2AT14AudioTapClientC2EPKvj, - __ZN2AT14AudioTapClientD0Ev, __ZN2AT14AudioTapClientD1Ev, - __ZN2AT14AudioTapClientD2Ev, __ZN2AT9IOBindingC1EPK10__CFString, - __ZN2AT9IOBindingC2EPK10__CFString, __ZNK14AQIONodeClient16AudioSessionModeEv, + __ZN17BorealisManagerV210InitializeEv, __ZN17BorealisManagerV210initializeEv, + __ZN17BorealisManagerV214HeySiriEnabledEv, __ZN17BorealisManagerV214hasBorealisXPCEv, + __ZN17BorealisManagerV216useBorealisRouteEv, __ZN17BorealisManagerV225SpeechDetectionVADCreatedEv, + __ZN17BorealisManagerV228SiriClientRecordStateChangedEb, __ZN17BorealisManagerV228hardwareSupportsVoiceTriggerEv, + __ZN17BorealisManagerV28instanceEv, __ZN17BorealisManagerV2C1Ev, + __ZN17BorealisManagerV2C2Ev, __ZN2AT14AudioTapClientC1EPKvj, + __ZN2AT14AudioTapClientC2EPKvj, __ZN2AT14AudioTapClientD0Ev, + __ZN2AT14AudioTapClientD1Ev, __ZN2AT14AudioTapClientD2Ev, + __ZN2AT9IOBindingC1E24ATIsolatedAudioUseCaseID, __ZN2AT9IOBindingC1EPK10__CFString, + __ZN2AT9IOBindingC2E24ATIsolatedAudioUseCaseID, __ZN2AT9IOBindingC2EPK10__CFString, + __ZNK14AQIONodeClient16AudioSessionModeEv, __ZNK14AQIONodeClient19IsSpatializableGameEv, __ZNK14AQIONodeClient20AudioSessionCategoryEv, __ZNK14AQIONodeClient20IsNowPlayingEligibleEv, + __ZNK14AQIONodeClient25EnhanceDialogueIsSelectedEP8AQIONode, __ZNK14AQIONodeClient27SpatialExperienceParametersEv, __ZNK2AT14AudioTapClient16GetChannelLayoutEv, __ZNK2AT14AudioTapClient17GetSerializedObjCEv, __ZNK2AT14AudioTapClient7GetObjCEPv, __ZNK2AT14AudioTapClient7IsValidEv, __ZNK2AT14AudioTapClient9GetFormatEv, __ZNK2AT9IOBinding11descriptionEv, __ZNK2AT9IOBinding14serializedObjCEv, __ZNK2AT9IOBinding8deviceIDEv, __ZNK2AT9IOBinding8objcCopyEv, - __ZNK2AT9IOBinding9deviceUIDEv, __ZNK2AT9IOBindingeqERKS0_, - __ZTV14AQIONodeClient, __ZTVN2AT14AudioTapClientE, _allocateHapticSharedMemory, - _clearHapticSharedMemory, _createHapticSharedMemory, _destroyHapticSharedMemory, - _freeHapticSharedMemory, _kAudioServicesCreateSystemSoundIDOptionAudioFileURLKey, + __ZNK2AT9IOBinding9deviceUIDEv, __ZNK2AT9IOBinding9useCaseIDEv, + __ZNK2AT9IOBindingeqERKS0_, __ZTV14AQIONodeClient, __ZTVN2AT14AudioTapClientE, + _allocateHapticSharedMemory, _clearHapticSharedMemory, _createHapticSharedMemory, + _destroyHapticSharedMemory, _freeHapticSharedMemory, _kAudioServicesCreateSystemSoundIDOptionAudioFileURLKey, _kAudioServicesCreateSystemSoundIDOptionLongFormMediaKey, _kAudioServicesPlaySystemSoundOptionBehaviorKey, _kAudioServicesPlaySystemSoundOptionFlagsKey, _kAudioServicesPlaySystemSoundOptionLoopKey, _kAudioSessionInputRoute_BluetoothHFP, @@ -379,12 +398,12 @@ exports: _AudioConverterFillComplexBufferWithPacketDependencyInfo, _AudioConverterGetProperty, _AudioConverterGetPropertyInfo, _AudioConverterInstantiate, _AudioConverterInstantiateSpecific, - _AudioConverterNew, _AudioConverterNewSpecific, _AudioConverterReset, - _AudioConverterSetProperty, _AudioFileClose, _AudioFileCountUserData, - _AudioFileCreateWithURL, _AudioFileGetGlobalInfo, _AudioFileGetGlobalInfoSize, - _AudioFileGetProperty, _AudioFileGetPropertyInfo, _AudioFileGetUserData, - _AudioFileGetUserDataAtOffset, _AudioFileGetUserDataSize, - _AudioFileGetUserDataSize64, _AudioFileInitializeWithCallbacks, + _AudioConverterNew, _AudioConverterNewSpecific, _AudioConverterNewWithOptions, + _AudioConverterPrepare, _AudioConverterReset, _AudioConverterSetProperty, + _AudioFileClose, _AudioFileCountUserData, _AudioFileCreateWithURL, + _AudioFileGetGlobalInfo, _AudioFileGetGlobalInfoSize, _AudioFileGetProperty, + _AudioFileGetPropertyInfo, _AudioFileGetUserData, _AudioFileGetUserDataAtOffset, + _AudioFileGetUserDataSize, _AudioFileGetUserDataSize64, _AudioFileInitializeWithCallbacks, _AudioFileOpenURL, _AudioFileOpenWithCallbacks, _AudioFileOptimize, _AudioFilePrepareToOpen, _AudioFileReadBytes, _AudioFileReadPacketData, _AudioFileReadPackets, _AudioFileRemoveUserData, _AudioFileSetProperty, @@ -393,23 +412,32 @@ exports: _AudioFileStreamPrepareToOpen, _AudioFileStreamSeek, _AudioFileStreamSetProperty, _AudioFileWriteBytes, _AudioFileWritePackets, _AudioFileWritePacketsWithDependencyInfo, _AudioFormatGetProperty, _AudioFormatGetPropertyInfo, _AudioFormat_ComputeLoudnessScalar, - _AudioOutputUnitStart, _AudioOutputUnitStop, _AudioUnitAddPropertyListener, - _AudioUnitAddRenderNotify, _AudioUnitComplexRender, _AudioUnitExtensionCopyComponentList, - _AudioUnitExtensionSetComponentList, _AudioUnitGetParameter, - _AudioUnitGetProperty, _AudioUnitGetPropertyInfo, _AudioUnitInitialize, - _AudioUnitProcess, _AudioUnitProcessMultiple, _AudioUnitRemovePropertyListenerWithUserData, - _AudioUnitRemoveRenderNotify, _AudioUnitRender, _AudioUnitReset, - _AudioUnitScheduleParameters, _AudioUnitSetParameter, _AudioUnitSetProperty, - _AudioUnitUninitialize, _AudioWorkIntervalCreate, _CACentralStateDumpRegisterSubsystem, + _AudioFormat_IsAmbisonicChannelLayout, _AudioOutputUnitStart, + _AudioOutputUnitStop, _AudioSampleRateConverterCreate, _AudioSampleRateConverterDispose, + _AudioSampleRateConverterGetExpectedNumberOfOutputFrames, + _AudioSampleRateConverterGetInputSampleRate, _AudioSampleRateConverterGetKernelSize, + _AudioSampleRateConverterGetLatency, _AudioSampleRateConverterGetNumberOfChannels, + _AudioSampleRateConverterGetOutputSampleRate, _AudioSampleRateConverterGetRequiredNumberOfInputFrames, + _AudioSampleRateConverterGetVariableRate, _AudioSampleRateConverterProcess, + _AudioSampleRateConverterProcessAudioBufferLists, _AudioSampleRateConverterReset, + _AudioSampleRateConverterSetVariableRate, _AudioUnitAddPropertyListener, + _AudioUnitAddRenderNotify, _AudioUnitComplexRender, _AudioUnitConnectToInstance, + _AudioUnitExtensionCopyComponentList, _AudioUnitExtensionSetComponentList, + _AudioUnitGetParameter, _AudioUnitGetProperty, _AudioUnitGetPropertyInfo, + _AudioUnitInitialize, _AudioUnitProcess, _AudioUnitProcessMultiple, + _AudioUnitRemovePropertyListenerWithUserData, _AudioUnitRemoveRenderNotify, + _AudioUnitRender, _AudioUnitReset, _AudioUnitScheduleParameters, + _AudioUnitSetParameter, _AudioUnitSetProperty, _AudioUnitUninitialize, + _AudioWorkIntervalCreate, _CACentralStateDumpRegisterSubsystem, _CACentralStateDumpUnregisterSubsystem, _CACopyObjectDescription, - _CAShow, _CAShowFile, _ConfigureAUAudioUnitXPCInterface, _CreateACQDispatchID, - _DownmixStereoInterleavedFloat32ToMono_Portable, _DownmixStereoInterleavedInt16ToMono_Portable, - _DownmixStereoInterleavedInt32ToMono_Portable, _ExtAudioFileCreateWithURL, - _ExtAudioFileDispose, _ExtAudioFileGetProperty, _ExtAudioFileGetPropertyInfo, - _ExtAudioFileOpenURL, _ExtAudioFileRead, _ExtAudioFileSeek, - _ExtAudioFileSetProperty, _ExtAudioFileTell, _ExtAudioFileWrapAudioFileID, - _ExtAudioFileWrapAudioFileIDWithPreferredFormatID, _ExtAudioFileWrite, - _ExtAudioFileWriteAsync, _ExtendedAudioBufferList_Create, + _CADefaultLog, _CAShow, _CAShowFile, _ConfigureAUAudioUnitXPCInterface, + _CreateACQDispatchID, _CreateAUAudioUnitXPCInterface, _DownmixStereoInterleavedFloat32ToMono_Portable, + _DownmixStereoInterleavedInt16ToMono_Portable, _DownmixStereoInterleavedInt32ToMono_Portable, + _ExtAudioFileCreateWithURL, _ExtAudioFileDispose, _ExtAudioFileGetProperty, + _ExtAudioFileGetPropertyInfo, _ExtAudioFileOpenURL, _ExtAudioFileRead, + _ExtAudioFileSeek, _ExtAudioFileSetProperty, _ExtAudioFileTell, + _ExtAudioFileWrapAudioFileID, _ExtAudioFileWrapAudioFileIDWithPreferredFormatID, + _ExtAudioFileWrite, _ExtAudioFileWriteAsync, _ExtendedAudioBufferList_Create, _ExtendedAudioBufferList_CreateWithFormat, _ExtendedAudioBufferList_Destroy, _ExtendedAudioBufferList_GetMetadataFrame, _ExtendedAudioBufferList_Prepare, _ExtendedAudioBufferList_PrepareWithNumberOfBuffers, _Float32ToNativeFloat64, @@ -439,28 +467,29 @@ exports: _RemoteAudioUnitGetProperty, _RemoteAudioUnitGetPropertyInfo, _RemoteAudioUnitGetPropertySerial, _RemoteAudioUnitSetParameter, _RemoteAudioUnitSetProperty, _RemoteAudioUnitSetPropertySerial, - _SInt8ToFloat32, _SInt8ToNativeInt16_Portable, _StereoDeinterleave32_Portable, - _StereoDeinterleaveInt16ToFloat32Scaled_Portable, _StereoDeinterleaveInt16ToInt824_Portable, - _StereoDeinterleaveInt824ToFloat32_Portable, _StereoInterleave32_Portable, - _StereoInterleaveFloat32ToInt16Scaled_Portable, _StereoInterleaveFloat32ToInt824_Portable, - _StereoInterleaveInt824ToInt16_Portable, _SwapFloat64ToFloat32, - _SwapInt16ToFloat32Scaled_Portable, _SwapInt16ToFloat32_Portable, - _SwapInt16ToNativeInt32_Portable, _SwapInt24ToFloat32_Portable, - _SwapInt24ToNativeInt16_Portable, _SwapInt24ToNativeInt32_Portable, - _SwapInt32ToFloat32Scaled_Portable, _SwapInt32ToFloat32_Portable, - _SwapInt32ToNativeInt16_Portable, _SwapInt32ToNativeInt24_Portable, - _SwapInt32ToNativeInt32_Portable, _SwapInt32ToSwapInt32_Portable, - _SwapPCM16_Portable, _SwapPCM24_Portable, _SwapPCM32_Portable, - _SwapPCM64_Portable, _UInt8ToFloat32, _UInt8ToNativeInt16_Portable, - _UpmixMonoToStereoInterleaved16_Portable, _UpmixMonoToStereoInterleaved32_Portable, - __AudioConverterNewInternal, __Z14_CheckRPCErrorPKcii, __Z16PacketTableEntryP21CompressedPacketTablem, - __Z16ReportXPCTimeoutPKc, __Z17_ReportRPCTimeoutPKci, __Z17validateComponent25AudioComponentDescriptionjPK14__CFDictionaryPU28objcproto17OS_dispatch_queue8NSObjectU13block_pointerFv30AudioComponentValidationResultS2_E, - __Z17validateComponent25AudioComponentDescriptionjPK14__CFDictionaryU13block_pointerFv30AudioComponentValidationResultS2_E, - __Z19CAObjectDescriptionPv, __Z20AUScopeElementStringjj, __Z20clearConfigInfoCachev, + _SInt8ToFloat32, _SInt8ToNativeInt16_Portable, _SetAllowedClassesForAUAudioUnitHostXPCInterface, + _StereoDeinterleave32_Portable, _StereoDeinterleaveInt16ToFloat32Scaled_Portable, + _StereoDeinterleaveInt16ToInt824_Portable, _StereoDeinterleaveInt824ToFloat32_Portable, + _StereoInterleave32_Portable, _StereoInterleaveFloat32ToInt16Scaled_Portable, + _StereoInterleaveFloat32ToInt824_Portable, _StereoInterleaveInt824ToInt16_Portable, + _SwapFloat64ToFloat32, _SwapInt16ToFloat32Scaled_Portable, + _SwapInt16ToFloat32_Portable, _SwapInt16ToNativeInt32_Portable, + _SwapInt24ToFloat32_Portable, _SwapInt24ToNativeInt16_Portable, + _SwapInt24ToNativeInt32_Portable, _SwapInt32ToFloat32Scaled_Portable, + _SwapInt32ToFloat32_Portable, _SwapInt32ToNativeInt16_Portable, + _SwapInt32ToNativeInt24_Portable, _SwapInt32ToNativeInt32_Portable, + _SwapInt32ToSwapInt32_Portable, _SwapPCM16_Portable, _SwapPCM24_Portable, + _SwapPCM32_Portable, _SwapPCM64_Portable, _UInt8ToFloat32, + _UInt8ToNativeInt16_Portable, _UpmixMonoToStereoInterleaved16_Portable, + _UpmixMonoToStereoInterleaved32_Portable, __AudioConverterNewInternal, + __Z14_CheckRPCErrorPKcii, __Z16PacketTableEntryP21CompressedPacketTablem, + __Z16ReportXPCTimeoutPKc, __Z17_ReportRPCTimeoutPKci, __Z17validateComponent25AudioComponentDescriptionjPK14__CFDictionaryU13block_pointerFv30AudioComponentValidationResultS2_E, + __Z19CAObjectDescriptionPv, __Z20AUScopeElementStringjj, __Z20clearConfigInfoCacheRK25AudioComponentDescriptionj, __Z20getConfigurationInfoRK25AudioComponentDescriptionjU13block_pointerFvPK14__CFDictionaryE, __Z21GetAudioToolboxBundlev, __Z23AUMetadata_log_categoryv, __Z24AudioConverterServiceRunv, __Z24AudioMetadataFrame_ClearP18AudioMetadataFrame, - __Z24GetMediaServerRPCTimeoutv, __Z27AudioMetadataFrame_BeginNewP18AudioMetadataFramePK24AudioMetadataFrameHeader, + __Z24GetMediaServerRPCTimeoutv, __Z25_CAInitDefaultDeferredLogv, + __Z27AudioMetadataFrame_BeginNewP18AudioMetadataFramePK24AudioMetadataFrameHeader, __Z27getValidationCapsuleVersionv, __Z28AudioMetadataFrame_GetHeaderPK18AudioMetadataFrame, __Z28getValidationResultFromCacheRK25AudioComponentDescriptionijjb, __Z28writeValidationResultToCacheRK25AudioComponentDescriptionijjbPK14__CFDictionary, @@ -468,9 +497,10 @@ exports: __Z30AudioMetadataFrame_AppendEventP18AudioMetadataFramePK18AudioMetadataEvent, __Z30copyConfigurationInfoFromCachePK10__CFString, __Z30createConfgurationInfoCacheKeyRK25AudioComponentDescriptionj, __Z32AudioBufferList_GetMetadataFramePK15AudioBufferList, + __Z33CAShouldEmitRateLimitedRTErrorLogv, __Z48AudioFormat_CompleteChannelLayoutWithCoordinatesRKN2CA13ChannelLayoutE, __Z9to_stringPK14AudioTimeStampj, __Z9to_stringPK18AudioChannelLayout, - __Z9to_stringPK28AudioStreamPacketDescriptionmm, __Z9to_stringPKfmm, - __Z9to_stringRK15AudioBufferList, __Z9to_stringRK15AudioBufferListmPK27AudioStreamBasicDescriptionPKcb, + __Z9to_stringPK28AudioStreamPacketDescriptionmm, __Z9to_stringPK31AudioStreamPacketDependencyInfomm, + __Z9to_stringPKfmm, __Z9to_stringRK15AudioBufferList, __Z9to_stringRK15AudioBufferListmPK27AudioStreamBasicDescriptionPKcb, __Z9to_stringRK15AudioBufferListmRK27AudioStreamBasicDescriptionPKcb, __Z9to_stringRK21AudioClassDescription, __Z9to_stringRK25AudioComponentDescription, __Z9to_stringRK26AudioObjectPropertyAddress, __ZN11CAFormatter14InitCAShowableEPvPKc, @@ -553,13 +583,13 @@ exports: __ZN18AudioMetadataFrame5eraseENS_8iteratorE, __ZN18AudioMetadataFrame6appendERK18AudioMetadataEvent, __ZN18AudioMetadataFrame6insertENS_8iteratorERK18AudioMetadataEvent, __ZN18AudioMetadataFrame9begin_newERK24AudioMetadataFrameHeader, - __ZN18AudioMetadataFrameC1ERKN5caulk5alloc21polymorphic_allocatorIcEE, - __ZN18AudioMetadataFrameC1Ev, __ZN18AudioMetadataFrameC2ERKN5caulk5alloc21polymorphic_allocatorIcEE, - __ZN18AudioMetadataFrameC2Ev, __ZN18CAHexDumpFormatterC1EPKvi, - __ZN18CAHexDumpFormatterC2EPKvi, __ZN19AudioFileFormatBase11GetHFSCodesEPjPv, - __ZN19AudioFileFormatBaseC2Ej, __ZN19AudioFileFormatBaseD0Ev, - __ZN19AudioFileFormatBaseD1Ev, __ZN19AudioFileFormatBaseD2Ev, - __ZN20AUProcessingBlock_AU15GetAvailableAUsERNSt3__16vectorI21AudioClassDescriptionNS0_9allocatorIS2_EEEE, + __ZN18AudioMetadataFrameC1ERKNS_20AllocatorInitializedE, __ZN18AudioMetadataFrameC1Ev, + __ZN18AudioMetadataFrameC2ERKNS_20AllocatorInitializedE, __ZN18AudioMetadataFrameC2Ev, + __ZN18AudioMetadataFrameD1Ev, __ZN18AudioMetadataFrameD2Ev, + __ZN18CAHexDumpFormatterC1EPKvi, __ZN18CAHexDumpFormatterC2EPKvi, + __ZN19AudioFileFormatBase11GetHFSCodesEPjPv, __ZN19AudioFileFormatBaseC2Ej, + __ZN19AudioFileFormatBaseD0Ev, __ZN19AudioFileFormatBaseD1Ev, + __ZN19AudioFileFormatBaseD2Ev, __ZN20AUProcessingBlock_AU15GetAvailableAUsERNSt3__16vectorI21AudioClassDescriptionNS0_9allocatorIS2_EEEE, __ZN21AUProcessingBlockBase11SetPropertyEjPKv, __ZN21AUProcessingBlockBase12CopyPropertyEjPPKv, __ZN21AUProcessingBlockBase12UnitsChangedEjPP21OpaqueRemoteAudioUnit, __ZN21AUProcessingBlockBase15InsertAUAtIndexEjRK8AUPBUnit, @@ -607,6 +637,7 @@ exports: __ZN2AT9Resampler13MockResamplerC1ERS0_, __ZN2AT9Resampler13MockResamplerC2ERS0_, __ZN2AT9Resampler13MockResamplerD1Ev, __ZN2AT9Resampler13MockResamplerD2Ev, __ZN2AT9Resampler21ShutdownVarispeedModeEj, __ZN2AT9Resampler23InitializeVarispeedModeEj, + __ZN2AT9Resampler29createWithFilterSpecificationEddiddjd, __ZN2AT9Resampler6createEddiiidb, __ZN2CA10ADMBuilder5buildEv, __ZN2CA10ADMBuilder5parseEPKcmb, __ZN2CA10ADMBuilderC1EOS0_, __ZN2CA10ADMBuilderC1Ev, __ZN2CA10ADMBuilderC2EOS0_, __ZN2CA10ADMBuilderC2Ev, @@ -633,11 +664,84 @@ exports: __ZN31AUProcessingBlockBase_NonAUItemD2Ev, __ZN34AUProcessingBlock_AU_Instantiating15InsertAUAtIndexEjRK8AUPBUnit, __ZN34AUProcessingBlock_AU_Instantiating15RemoveAUAtIndexEj, __ZN34AUProcessingBlock_AU_InstantiatingD0Ev, __ZN34AUProcessingBlock_AU_InstantiatingD1Ev, - __ZN34AUProcessingBlock_AU_InstantiatingD2Ev, __ZN8DSPGraph10ABIVersionEv, - __ZN8DSPGraph10AUAnalyzer11getPropertyEjjjRjPv, __ZN8DSPGraph10AUAnalyzer11setPropertyEjjjjPKv, - __ZN8DSPGraph10AUAnalyzer12getParameterEjjj, __ZN8DSPGraph10AUAnalyzer12setParameterEjjjfj, - __ZN8DSPGraph10AUAnalyzer13processBufferEPNS_6BufferEj, __ZN8DSPGraph10AUAnalyzer13resetAnalysisEv, - __ZN8DSPGraph10AUAnalyzer15getPropertyInfoEjjj, __ZN8DSPGraph10AUAnalyzer15setFormatOnUnitERK27AudioStreamBasicDescriptionjj, + __ZN34AUProcessingBlock_AU_InstantiatingD2Ev, __ZN4APAC12MetadataJSONERKNS_8MetadataEi, + __ZN4APAC16RendererDataJSONERN8nlohmann10basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEbxydS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEEERKNS_8Metadata12RendererDataEb, + __ZN4APAC18MetadataConfigJSONERKNS_8Metadata14MetadataConfigE, + __ZN4APAC21MetadataConfigJSONStrERKNS_8Metadata14MetadataConfigEi, + __ZN4APAC23MetadataBitStreamParser11parseConfigEPKvjRNS_8Metadata14MetadataConfigE, + __ZN4APAC23MetadataBitStreamParser13parsePositionERNS_8Metadata12RendererData8PositionERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser14parseBlockDataERNS_8Metadata9BlockDataENS1_6Header7VersionERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser14parseBlockDataERNS_8Metadata9GroupData9BlockDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser14parseGroupDataERNS_8Metadata9GroupDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser15parseScreenDataERNS_8Metadata10ScreenDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser16parseGroupConfigERNS_8Metadata11GroupConfigEbRN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser16parseMaskingZoneERNS_8Metadata12RendererData21AudioSceneMaskingZoneERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser16parseSceneReverbERNS_8Metadata11SceneReverbERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser16parseSceneReverbERNS_8Metadata12RendererData11SceneReverbERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser16parseStaticGroupERNS_8Metadata11StaticGroupERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser17parseCodeBookDataERNS_8Metadata12CodeBookDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser17parseDynamicGroupERNS_8Metadata12DynamicGroupERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser17parseExtendedDataERNS_8Metadata12ExtendedDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser17parseFallbackSPADERNS_8Metadata12GlobalConfig4SPAD12FallbackSPADEbRN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser17parseGlobalConfigERNS_8Metadata12GlobalConfigEbRN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser17parseObjectSpreadERNS_8Metadata12RendererData12ObjectSpreadERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser17parseRendererDataERNS_8Metadata12RendererDataEbRN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser18parseASCStaticDataERNS_8Metadata13ASCStaticDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser18parseMetadataFrameERNS_8Metadata13MetadataFrameEbRN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser18parseZoneExclusionERNS_8Metadata12RendererData13ZoneExclusionERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser19parseMetadataConfigERNS_8Metadata14MetadataConfigERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser19parseObjectMetadataERNS_8Metadata14ObjectMetadataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser19parsePostProcReverbERNS_8Metadata12RendererData14PostProcReverbERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser19parseStaticMetadataERNS_8Metadata14StaticMetadataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser20parseBinauralizationERNS_8Metadata12GlobalConfig15BinauralizationERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser20parseBinauralizationERNS_8Metadata15BinauralizationERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser20parseDolbyStaticDataERNS_8Metadata15DolbyStaticDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser20parseDynamicMetadataERNS_8Metadata15DynamicMetadataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser20parseGroupStaticDataERNS_8Metadata15GroupStaticDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser20parseReferenceScreenERNS_8Metadata12GlobalConfig15ReferenceScreenERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser20parseReferenceScreenERNS_8Metadata15ReferenceScreenERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser21parseGroupDynamicDataERNS_8Metadata16GroupDynamicDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser21parseObjectDivergenceERNS_8Metadata12RendererData16ObjectDivergenceERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser21parseParametricReverbERNS_8Metadata12RendererData11SceneReverb16ParametricReverbERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser21parseParametricReverbERNS_8Metadata16ParametricReverbERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser21parsePropagationDelayERNS_8Metadata12RendererData16PropagationDelayERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser21parseRadiationPatternERNS_8Metadata12RendererData16RadiationPatternEbRN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser21parseRadiationPatternERNS_8Metadata16RadiationPatternERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser21parseRendererMetadataERNS_8Metadata16RendererMetadataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser22parseObjectChannelLockERNS_8Metadata12RendererData17ObjectChannelLockERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser23parseHOARenderingMatrixERNS_8Metadata12RendererData18HOARenderingMatrixEbRN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser24parseDistanceAttenuationERNS_8Metadata12GlobalConfig19DistanceAttenuationERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser24parseHOADirectivityModelERNS_8Metadata12RendererData16RadiationPattern19HOADirectivityModelEbRN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser25parseAuthoringInformationERNS_8Metadata12GlobalConfig20AuthoringInformationERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser25parseFallbackRoomGeometryERNS_8Metadata12RendererData11SceneReverb20FallbackRoomGeometryERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser26parseAudioSceneMaskingZoneERNS_8Metadata21AudioSceneMaskingZoneERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser26parseCommonDynamicMetadataERNS_8Metadata21CommonDynamicMetadataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser26parseProprietaryStaticDataERNS_8Metadata21ProprietaryStaticDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser27parseGenericRenderingConfigERNS_8Metadata12GlobalConfig22GenericRenderingConfigERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser27parseProprietaryDynamicDataERNS_8Metadata22ProprietaryDynamicDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser27parseRendererMetadataConfigERNS_8Metadata22RendererMetadataConfigERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser31parseParametricRadiationPatternERNS_8Metadata12RendererData16RadiationPattern26ParametricRadiationPatternEbRN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser31parseSceneComponenentStaticDataERNS_8Metadata24SceneComponentStaticDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser32parseChannelBedHeadphoneMetadataERNS_8Metadata12GlobalConfig27ChannelBedHeadphoneMetadataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser32parseSceneComponenentDynamicDataERNS_8Metadata25SceneComponentDynamicDataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser5parseEPvjRNS_8MetadataE, + __ZN4APAC23MetadataBitStreamParser9parseDBMDERNS_8Metadata12GlobalConfig31SupplementaryProductionMetadataERN2AT16TBitstreamReaderIjEE, + __ZN4APAC23MetadataBitStreamParser9parseSPADERNS_8Metadata12GlobalConfig4SPADEbRN2AT16TBitstreamReaderIjEE, + __ZN4APAC28ImmersiveRendererData_V2JSONERKNS_29ImmersiveRendererData_V2_ImplE, + __ZN4APAC31ImmersiveRendererData_V2JSONStrERKNS_29ImmersiveRendererData_V2_ImplEi, + __ZN4APAC32ImmersiveRendererData_V2_Manager13getACLPointerERKNS_29ImmersiveRendererData_V2_ImplE, + __ZN4APAC32ImmersiveRendererData_V2_Manager14getACLByteSizeERKNS_29ImmersiveRendererData_V2_ImplE, + __ZN4APAC32ImmersiveRendererData_V2_Manager17getMetadataConfigERKNS_29ImmersiveRendererData_V2_ImplERNS_8Metadata14MetadataConfigE, + __ZN4APAC32ImmersiveRendererData_V2_Manager17hasMetadataConfigERKNS_29ImmersiveRendererData_V2_ImplE, + __ZN4APAC32ImmersiveRendererData_V2_Manager26getNumRendererDescriptionsERKNS_29ImmersiveRendererData_V2_ImplE, + __ZN4APAC32ImmersiveRendererData_V2_Manager28getAudioChannelLayoutPointerERKNS_29ImmersiveRendererData_V2_ImplE, + __ZN4APAC32ImmersiveRendererData_V2_Manager38getImmersiveRendererDescriptionPointerERKNS_29ImmersiveRendererData_V2_ImplE, + __ZN4APAC32ImmersiveRendererData_V2_Manager4packERNSt3__16vectorISt4byteNS1_9allocatorIS3_EEEEjRK18AudioChannelLayoutPK28ImmersiveRendererDescriptionjRKNS_8Metadata14MetadataConfigE, + __ZN8DSPGraph10ABIVersionEv, __ZN8DSPGraph10AUAnalyzer11getPropertyEjjjRjPv, + __ZN8DSPGraph10AUAnalyzer11setPropertyEjjjjPKv, __ZN8DSPGraph10AUAnalyzer12getParameterEjjj, + __ZN8DSPGraph10AUAnalyzer12setParameterEjjjfj, __ZN8DSPGraph10AUAnalyzer13processBufferEPNS_6BufferEj, + __ZN8DSPGraph10AUAnalyzer13resetAnalysisEv, __ZN8DSPGraph10AUAnalyzer15getPropertyInfoEjjj, + __ZN8DSPGraph10AUAnalyzer15setFormatOnUnitERK27AudioStreamBasicDescriptionjj, __ZN8DSPGraph10AUAnalyzer16getParameterInfoEjj, __ZN8DSPGraph10AUAnalyzer16getParameterListEj, __ZN8DSPGraph10AUAnalyzer17getFormatFromUnitEjj, __ZN8DSPGraph10AUAnalyzer4openEv, __ZN8DSPGraph10AUAnalyzerC1EjRK25AudioComponentDescriptionRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE, @@ -887,7 +991,65 @@ exports: __ZNK15AudioFileObject18GetPacketTableSizeEv, __ZNK18AudioMetadataFrame17overlapsTimeRangeEdd, __ZNK2AT10RingBuffer13GetTimeBoundsEv, __ZNK2AT23RingBufferErrorCategory4nameEv, __ZNK2AT23RingBufferErrorCategory7messageEi, __ZNK2AT9Resampler13MockResampler13GetIsBypassedEv, - __ZNK2CA7ADMTimecvdEv, __ZNK8DSPGraph10GraphInput12decompileBoxERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEj, + __ZNK2CA7ADMTimecvdEv, __ZNK4APAC23MetadataBitStreamPacker10packConfigEPvjRKNS_8Metadata14MetadataConfigE, + __ZNK4APAC23MetadataBitStreamPacker12packPositionERKNS_8Metadata12RendererData8PositionERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker13packBlockDataERKNS_8Metadata9BlockDataENS1_6Header7VersionERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker13packBlockDataERKNS_8Metadata9GroupData9BlockDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker13packGroupDataERKNS_8Metadata9GroupDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker14packScreenDataERKNS_8Metadata10ScreenDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker15packGroupConfigERKNS_8Metadata11GroupConfigERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker15packMaskingZoneERKNS_8Metadata12RendererData21AudioSceneMaskingZoneERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker15packSceneReverbERKNS_8Metadata11SceneReverbERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker15packSceneReverbERKNS_8Metadata12RendererData11SceneReverbERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker15packStaticGroupERKNS_8Metadata11StaticGroupERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker16packCodeBookDataERKNS_8Metadata12CodeBookDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker16packDynamicGroupERKNS_8Metadata12DynamicGroupERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker16packExtendedDataERKNS_8Metadata12ExtendedDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker16packFallbackSPADERKNS_8Metadata12GlobalConfig4SPAD12FallbackSPADERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker16packGlobalConfigERKNS_8Metadata12GlobalConfigERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker16packObjectSpreadERKNS_8Metadata12RendererData12ObjectSpreadERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker16packRendererDataERKNS_8Metadata12RendererDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker17packASCStaticDataERKNS_8Metadata13ASCStaticDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker17packMetadataFrameERKNS_8Metadata13MetadataFrameEbRN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker17packZoneExclusionERKNS_8Metadata12RendererData13ZoneExclusionERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker18packMetadataConfigERKNS_8Metadata14MetadataConfigERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker18packObjectMetadataERKNS_8Metadata14ObjectMetadataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker18packPostProcReverbERKNS_8Metadata12RendererData14PostProcReverbERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker18packStaticMetadataERKNS_8Metadata14StaticMetadataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker19packBinauralizationERKNS_8Metadata12GlobalConfig15BinauralizationERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker19packBinauralizationERKNS_8Metadata15BinauralizationERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker19packDolbyStaticDataERKNS_8Metadata15DolbyStaticDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker19packDynamicMetadataERKNS_8Metadata15DynamicMetadataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker19packGroupStaticDataERKNS_8Metadata15GroupStaticDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker19packReferenceScreenERKNS_8Metadata12GlobalConfig15ReferenceScreenERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker19packReferenceScreenERKNS_8Metadata15ReferenceScreenERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker20packGroupDynamicDataERKNS_8Metadata16GroupDynamicDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker20packObjectDivergenceERKNS_8Metadata12RendererData16ObjectDivergenceERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker20packParametricReverbERKNS_8Metadata12RendererData11SceneReverb16ParametricReverbERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker20packParametricReverbERKNS_8Metadata16ParametricReverbERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker20packRadiationPatternERKNS_8Metadata12RendererData16RadiationPatternERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker20packRadiationPatternERKNS_8Metadata16RadiationPatternERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker20packRendererMetadataERKNS_8Metadata16RendererMetadataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker21packObjectChannelLockERKNS_8Metadata12RendererData17ObjectChannelLockERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker22packHOARenderingMatrixERKNS_8Metadata12RendererData18HOARenderingMatrixERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker23packDistanceAttenuationERKNS_8Metadata12GlobalConfig19DistanceAttenuationERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker23packHOADirectivityModelERKNS_8Metadata12RendererData16RadiationPattern19HOADirectivityModelERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker24packAuthoringInformationERKNS_8Metadata12GlobalConfig20AuthoringInformationERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker24packFallbackRoomGeometryERKNS_8Metadata12RendererData11SceneReverb20FallbackRoomGeometryERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker25packAudioSceneMaskingZoneERKNS_8Metadata21AudioSceneMaskingZoneERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker25packCommonDynamicMetadataERKNS_8Metadata21CommonDynamicMetadataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker25packProprietaryStaticDataERKNS_8Metadata21ProprietaryStaticDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker26packGenericRenderingConfigERKNS_8Metadata12GlobalConfig22GenericRenderingConfigERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker26packProprietaryDynamicDataERKNS_8Metadata22ProprietaryDynamicDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker26packRendererMetadataConfigERKNS_8Metadata22RendererMetadataConfigERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker30packParametricRadiationPatternERKNS_8Metadata12RendererData16RadiationPattern26ParametricRadiationPatternERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker30packSceneComponenentStaticDataERKNS_8Metadata24SceneComponentStaticDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker31packChannelBedHeadphoneMetadataERKNS_8Metadata12GlobalConfig27ChannelBedHeadphoneMetadataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker31packSceneComponenentDynamicDataERKNS_8Metadata25SceneComponentDynamicDataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker4packEPvjRKNS_8MetadataE, + __ZNK4APAC23MetadataBitStreamPacker8packDBMDERKNS_8Metadata12GlobalConfig31SupplementaryProductionMetadataERN2AT16TBitstreamWriterIjEE, + __ZNK4APAC23MetadataBitStreamPacker8packSPADERKNS_8Metadata12GlobalConfig4SPADERN2AT16TBitstreamWriterIjEE, + __ZNK8DSPGraph10GraphInput12decompileBoxERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEj, __ZNK8DSPGraph11GraphOutput12decompileBoxERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEj, __ZNK8DSPGraph11PropertyTap5printERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEj, __ZNK8DSPGraph12ParameterTap5printERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEj, @@ -956,12 +1118,13 @@ exports: __ZTVN8DSPGraph6SumBoxE, __ZTVN8DSPGraph7CopyBoxE, __ZTVN8DSPGraph7TestBoxE, __ZTVN8DSPGraph8AnalyzerE, __ZTVN8DSPGraph8DelayBoxE, __ZTVN8DSPGraph9InputPortE, _clientParamToFixedParam, _clientParamToSynthParam, _clientParamValueToFixedParamValue, - _createHapticCommandWriter, _destroyHapticCommandWriter, _gMediaServerTimeout, - _iEjr08d2, _initInterAppAudioLogging, _kAudioAnalysisKey_AdditionalLoudnessParameters, - _kAudioAnalysisKey_DialogueAnchorParameters, _kAudioAnalysisKey_MainLoudnessParameters, - _kAudioAnalysisKey_SoundCheckInfo, _kAudioAnalysis_AnchorMeasurementSystemKey, - _kAudioAnalysis_AnchorReliabilityKey, _kAudioAnalysis_BitDepthPCMMasterKey, - _kAudioAnalysis_DRCSetKey, _kAudioAnalysis_DownmixIDKey, _kAudioAnalysis_EQSetIDKey, + _createHapticCommandWriter, _destroyHapticCommandWriter, _gCADefaultDeferredLog, + _gMediaServerTimeout, _iEjr08d2, _initInterAppAudioLogging, + _kAudioAnalysisKey_AdditionalLoudnessParameters, _kAudioAnalysisKey_DialogueAnchorParameters, + _kAudioAnalysisKey_MainLoudnessParameters, _kAudioAnalysisKey_SoundCheckInfo, + _kAudioAnalysis_AnchorMeasurementSystemKey, _kAudioAnalysis_AnchorReliabilityKey, + _kAudioAnalysis_BitDepthPCMMasterKey, _kAudioAnalysis_DRCSetKey, + _kAudioAnalysis_DownmixIDKey, _kAudioAnalysis_EQSetIDKey, _kAudioAnalysis_EbuLoudnessRangeKey, _kAudioAnalysis_EbuLoudnessRangeTopKey, _kAudioAnalysis_EbuMaxMeasurementSystemKey, _kAudioAnalysis_EbuMaxMomentaryLoudnessKey, _kAudioAnalysis_EbuMaxReliabilityKey, _kAudioAnalysis_EbuMaxShortMeasurementSystemKey, @@ -983,6 +1146,25 @@ exports: _kAudioComponentRegistrationsChangedNotification, _kAudioFileAllowList_DataFormatKey, _kAudioFileAllowList_ExtensionKey, _kAudioFileAllowList_HFSCodeKey, _kAudioFileAllowList_MIMETypeKey, _kAudioFileAllowList_UTIKey, + _kAudioSampleRateConverterRamstadAttributeKey_InputSampleRate, + _kAudioSampleRateConverterRamstadAttributeKey_MaxVariableRateDeviation, + _kAudioSampleRateConverterRamstadAttributeKey_NumberOfChannels, + _kAudioSampleRateConverterRamstadAttributeKey_OutputSampleRate, + _kAudioSampleRateConverterRamstadAttributeKey_Quality, _kAudioSampleRateConverterResampler2AttributeKey_Algorithm, + _kAudioSampleRateConverterResampler2AttributeKey_AllowVariableRate, + _kAudioSampleRateConverterResampler2AttributeKey_InitialPhase, + _kAudioSampleRateConverterResampler2AttributeKey_InputSampleRate, + _kAudioSampleRateConverterResampler2AttributeKey_NumberOfChannels, + _kAudioSampleRateConverterResampler2AttributeKey_OutputSampleRate, + _kAudioSampleRateConverterResampler2AttributeKey_PrimeMethod, + _kAudioSampleRateConverterResampler2AttributeKey_Quality, + _kAudioSampleRateConverterSTLIAttributeKey_InitialPhase, _kAudioSampleRateConverterSTLIAttributeKey_InputSampleRate, + _kAudioSampleRateConverterSTLIAttributeKey_NumberOfChannels, + _kAudioSampleRateConverterSTLIAttributeKey_OutputSampleRate, + _kHapticActuatorProtectionModeNotification_DefaultProtection, + _kHapticActuatorProtectionModeNotification_MinimalProtection, + _kHapticEngineNotificationObject, _kHapticSequenceNotification_SequenceWillStart, + _kHapticSequenceNotification_SequenceWillStart_SequenceDuration, _kLoudnessInfoDictionary_AdditionalLoudnessInfoKey, _kLoudnessInfoDictionary_AdditionalLoudnessParametersKey, _kLoudnessInfoDictionary_AdjustToAlbumLoudnessKey, _kLoudnessInfoDictionary_AlbumLoudnessParametersKey, _kLoudnessInfoDictionary_AnchorLoudnessKey, _kLoudnessInfoDictionary_BitDepthPCMMasterKey, @@ -998,8 +1180,9 @@ exports: _reserveForWrite, _tkqMjk4y, _updateReservedWriteIndex, _writeCommand, _writeCommandToReserved ] objc-classes: [ AUAudioUnit, AUAudioUnitBus, AUAudioUnitBusArray, AUAudioUnitPreset, - AUAudioUnitV2Bridge, AUHostExtensionContext, AUParameter, - AUParameterGroup, AUParameterNode, AUParameterTree, AURemoteExtensionContext, + AUAudioUnitV2Bridge, AUHostExtensionContext, AUHostingServiceDelegate, + AUHostingServiceInstanceMap, AUParameter, AUParameterGroup, + AUParameterNode, AUParameterTree, AURemoteExtensionContext, AURemoteHost, AVAudioChannelGroupSemantics, AVAudioSemantics, AVHapticEvent, AVHapticPlayerParameterCurve, AVHapticPlayerParameterCurveControlPoint, AudioComponentRegistrar ] @@ -1024,8 +1207,7 @@ exports: _AudioFileComponentWritePackets, _AudioFileCreate, _AudioFileInitialize, _AudioFileOpen, _ExtAudioFileCreateNew, _ExtAudioFileOpen, _MusicDevicePrepareInstrument, _MusicDeviceReleaseInstrument ] - objc-classes: [ AUHostingServiceDelegate, AUHostingServiceInstanceMap, _AUAudioUnitV3ViewFactory, - _RemoteAUv2ViewFactory ] + objc-classes: [ _AUAudioUnitV3ViewFactory, _RemoteAUv2ViewFactory ] - targets: [ x86_64-maccatalyst, arm64-maccatalyst, arm64e-maccatalyst ] symbols: [ _AudioComponentGetLastActiveTime, _AudioOutputUnitGetHostIcon, _AudioOutputUnitPublish, _AudioUnitURLOpen ] diff --git a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AUAudioUnit.h b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AUAudioUnit.h index 263377a2..9bcad017 100644 --- a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AUAudioUnit.h +++ b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AUAudioUnit.h @@ -1077,6 +1077,19 @@ API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) */ @property (NS_NONATOMIC_IOSONLY, copy, nullable) NSString *contextName; +/*! @property migrateFromPlugin + @brief Information for migrating data from other audio plug-ins to the v3 Audio Unit architecture. + @discussion + This can be used to migrate settings from an older Audio Unit; this allows manufacturers + to deprecate older Audio Units and replace them with new ones. The data for the older Audio Unit is + an array of NSData representing byte encoded AudioUnitOtherPluginDescs to migrate from. + Can also be used to migrate from a v2 to a v3 Audio Unit. + + Bridged to the v2 property kAudioUnitMigrateProperty_FromPlugin. +*/ +@property (NS_NONATOMIC_IOSONLY, readonly) NSArray* migrateFromPlugin API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); + + /*! @property supportsMPE @brief Specifies whether an audio unit supports Multi-dimensional Polyphonic Expression. @discussion diff --git a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AUComponent.h b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AUComponent.h index e606c12e..309c9cfa 100644 --- a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AUComponent.h +++ b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AUComponent.h @@ -798,6 +798,9 @@ typedef CF_OPTIONS(UInt32, AudioUnitRenderActionFlags) deprecated Component Manager. A host application should use the API functions AudioComponentInstantiate or AudioComponentInstanceNew when rebuilding against the macOS 11 or later SDK. + @constant kAudioUnitErr_MultipleVoiceProcessors + On some platforms, this error is returned when a client attempts to initialize + a voice processor instance while another is initialized. */ CF_ENUM(OSStatus) { kAudioUnitErr_InvalidProperty = -10879, @@ -827,7 +830,8 @@ CF_ENUM(OSStatus) { kAudioUnitErr_InvalidParameterValue = -66743, kAudioUnitErr_InvalidFilePath = -66742, kAudioUnitErr_MissingKey = -66741, - kAudioUnitErr_ComponentManagerNotSupported = -66740 + kAudioUnitErr_ComponentManagerNotSupported = -66740, + kAudioUnitErr_MultipleVoiceProcessors = -66635 }; diff --git a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioComponent.h b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioComponent.h index 8e8e996f..625dcd3a 100644 --- a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioComponent.h +++ b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioComponent.h @@ -240,7 +240,7 @@ typedef CF_OPTIONS(UInt32, AudioComponentFlags) { */ typedef CF_OPTIONS(UInt32, AudioComponentInstantiationOptions) { kAudioComponentInstantiation_LoadOutOfProcess CF_ENUM_AVAILABLE(10_11, 9_0) = 1, - kAudioComponentInstantiation_LoadInProcess CF_ENUM_AVAILABLE(10_11, NA) = 2, + kAudioComponentInstantiation_LoadInProcess API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios) = 2, kAudioComponentInstantiation_LoadedRemotely API_UNAVAILABLE(macos) = 1u << 31, }; @@ -306,7 +306,7 @@ typedef struct OpaqueAudioComponent * AudioComponent; ComponentInstanceRecord *, you should not assume that this will always be compatible and usable with Component Manager calls. */ -#if TARGET_OS_IPHONE || (0 && 0) || (defined(AUDIOCOMPONENT_NOCARBONINSTANCES) && AUDIOCOMPONENT_NOCARBONINSTANCES) +#if TARGET_OS_IPHONE || (0 && 0) || TARGET_OS_LINUX || (defined(AUDIOCOMPONENT_NOCARBONINSTANCES) && AUDIOCOMPONENT_NOCARBONINSTANCES) typedef struct OpaqueAudioComponentInstance * AudioComponentInstance; #else typedef struct ComponentInstanceRecord * AudioComponentInstance; diff --git a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioConverter.h b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioConverter.h index 77023f6f..37f510ac 100644 --- a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioConverter.h +++ b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioConverter.h @@ -402,6 +402,21 @@ struct AudioConverterPrimeInfo { }; typedef struct AudioConverterPrimeInfo AudioConverterPrimeInfo; +/*! @enum AudioConverterOptions + @constant kAudioConverterOption_Unbuffered + This is an option for AudioConverterNewWithOptions which removes unnecessary + buffering, both for input and internally to the converter, saving memory + at the cost of reduced format support and usage restrictions: + + - Input and output formats must be constant bit-rate, non-zero bytes per packet + (e.g. linear PCM, a-law, etc.) with the same sample rate and frames per packet. + - AudioConverterFillBuffer cannot be used. + - AudioConverterFillComplexBuffer cannot be used. +*/ +typedef CF_OPTIONS(UInt32, AudioConverterOptions) { + kAudioConverterOption_Unbuffered = (1 << 16) +}; + //============================================================================= // Errors //============================================================================= @@ -451,6 +466,28 @@ CF_ENUM(OSStatus) // Routines //============================================================================= +//----------------------------------------------------------------------------- +/*! + @function AudioConverterPrepare + @abstract Optimizes the subsequent creation of audio converters by the current process. + @discussion This function performs its work asynchronously. The optional completion block, + if provided, is executed once preparation is complete. + Although a best effort is made to ensure future audio converters will be created quickly, + there are no guarantees. + + @param inFlags + Reserved for future use. Pass 0. + @param ioReserved + Reserved for future use. Pass NULL. + @param inCompletionBlock + Optional block to execute once preparation is complete. May be NULL. + The block is given the OSStatus result of the preparation. + */ +extern void +AudioConverterPrepare( UInt32 inFlags, + void * __nullable ioReserved, + void (^__nullable inCompletionBlock)(OSStatus)) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); + //----------------------------------------------------------------------------- /*! @function AudioConverterNew @@ -488,6 +525,12 @@ CF_ENUM(OSStatus) supported formats. When using a codec, you can use any supported PCM format (as above); the converter will perform any necessary additional conversion between your PCM format and the one created or consumed by the codec. + + Note that AudioConverter may change the formats to correct any + inconsistent or erroneous values. The actual formats expected and used + by the newly created AudioConverter can be obtained by getting the + properties `kAudioConverterCurrentInputStreamDescription` and + `kAudioConverterCurrentOutputStreamDescription` from it. */ extern OSStatus AudioConverterNew( const AudioStreamBasicDescription * inSourceFormat, @@ -523,6 +566,30 @@ AudioConverterNewSpecific( const AudioStreamBasicDescription * inSourceFormat, AudioConverterRef __nullable * __nonnull outAudioConverter) API_AVAILABLE(macos(10.4), ios(2.0), watchos(2.0), tvos(9.0)); +//----------------------------------------------------------------------------- +/*! + @function AudioConverterNewWithOptions + @abstract Create a new AudioConverter with one or more options enabled. + + @param inSourceFormat + The format of the source audio to be converted. + @param inDestinationFormat + The destination format to which the audio is to be converted. + @param inOptions + Flags selecting one or more optional configurations for the AudioConverter. + @param outAudioConverter + On successful return, points to a new AudioConverter instance. + @result An OSStatus result code. + + This is an alternative to AudioConverterNew which supports enabling + one or more optional configurations for the new AudioConverter. +*/ +extern OSStatus +AudioConverterNewWithOptions(const AudioStreamBasicDescription * inSourceFormat, + const AudioStreamBasicDescription * inDestinationFormat, + AudioConverterOptions inOptions, + AudioConverterRef __nullable * __nonnull outAudioConverter) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); + //----------------------------------------------------------------------------- /*! @function AudioConverterDispose @@ -679,6 +746,7 @@ AudioConverterConvertBuffer( AudioConverterRef inAudioConverter The callback may return one or more packets. If this is less than the minimum, the callback will simply be called again in the near future. Note that ioNumberDataPackets counts packets in terms of the converter's input format (not its output format). + Also note that the callback must provide a whole number of packets. The callback may be asked to provide multiple input packets in a single call, even for compressed formats. The callback must update the number of packets pointed to by ioNumberDataPackets diff --git a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioUnitParameters.h b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioUnitParameters.h index bec76adf..1c68a012 100644 --- a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioUnitParameters.h +++ b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioUnitParameters.h @@ -715,10 +715,14 @@ CF_ENUM(AudioUnitParameterID) { @enum AUSoundIsolation sound types @brief Constants available as values for parameter kAUSoundIsolation_SoundToIsolate. + @constant kAUSoundIsolationSoundType_HighQualityVoice + Isolate voice signal from the input signal using high quality voice isolation model + @constant kAUSoundIsolationSoundType_Voice - Isolate voice signal from the input signal. + Isolate voice signal from the input signal using standard voice isolation model (default) */ CF_ENUM(long) { + kAUSoundIsolationSoundType_HighQualityVoice API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) = 0, kAUSoundIsolationSoundType_Voice API_AVAILABLE(macos(13.0), ios(16.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) = 1 }; diff --git a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioUnitProperties.h b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioUnitProperties.h index 6a6c707d..22bccbe4 100644 --- a/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioUnitProperties.h +++ b/Frameworks/AudioToolbox.framework/Versions/A/Headers/AudioUnitProperties.h @@ -1281,7 +1281,6 @@ struct AUDependentParameter { }; typedef struct AUDependentParameter AUDependentParameter; -#if !(0 && 0) #if !TARGET_OS_IPHONE /*! @struct AudioUnitCocoaViewInfo @@ -1307,7 +1306,6 @@ struct AUHostVersionIdentifier { }; typedef struct AUHostVersionIdentifier AUHostVersionIdentifier; #endif //!TARGET_OS_IPHONE -#endif /*! @struct MIDIPacketList @@ -2072,9 +2070,11 @@ typedef struct AUParameterMIDIMapping AUParameterMIDIMapping; @abstract The collection of Instrument Unit Property IDs @constant kMusicDeviceProperty_MIDIXMLNames - @discussion Scope: - Value Type: - Access: + @discussion Scope: Global + Value Type: CFURLRef + Access: read + + This property's value specifies a URL to a local file containg the XML Instrument description. @constant kMusicDeviceProperty_PartGroup @discussion Scope: Part @@ -3004,9 +3004,9 @@ CF_ENUM(AudioUnitPropertyID) { kAudioUnitProperty_SpatialMixerAttenuationCurve = 3013, kAudioUnitProperty_SpatialMixerOutputType = 3100, kAudioUnitProperty_SpatialMixerPointSourceInHeadMode = 3103, - kAudioUnitProperty_SpatialMixerEnableHeadTracking API_AVAILABLE(macos(12.3)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 3111, - kAudioUnitProperty_SpatialMixerPersonalizedHRTFMode API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 3113, - kAudioUnitProperty_SpatialMixerAnyInputIsUsingPersonalizedHRTF API_AVAILABLE(macos(14.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 3116 + kAudioUnitProperty_SpatialMixerEnableHeadTracking API_AVAILABLE(macos(12.3), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos, visionos) = 3111, + kAudioUnitProperty_SpatialMixerPersonalizedHRTFMode API_AVAILABLE(macos(13.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) = 3113, + kAudioUnitProperty_SpatialMixerAnyInputIsUsingPersonalizedHRTF API_AVAILABLE(macos(14.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) = 3116 }; /*! @@ -3122,9 +3122,9 @@ typedef CF_OPTIONS(UInt32, AUSpatialMixerRenderingFlags) { head-related transfer function (HRTF). */ typedef CF_ENUM(UInt32, AUSpatialMixerPersonalizedHRTFMode) { - kSpatialMixerPersonalizedHRTFMode_Off CF_SWIFT_NAME(off) API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 0, - kSpatialMixerPersonalizedHRTFMode_On CF_SWIFT_NAME(on) API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 1, - kSpatialMixerPersonalizedHRTFMode_Auto CF_SWIFT_NAME(auto) API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 2 + kSpatialMixerPersonalizedHRTFMode_Off CF_SWIFT_NAME(off) API_AVAILABLE(macos(13.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) = 0, + kSpatialMixerPersonalizedHRTFMode_On CF_SWIFT_NAME(on) API_AVAILABLE(macos(13.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) = 1, + kSpatialMixerPersonalizedHRTFMode_Auto CF_SWIFT_NAME(auto) API_AVAILABLE(macos(13.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) = 2 }; /*! @@ -3775,7 +3775,6 @@ CF_ENUM(AudioUnitPropertyID) { For the preset instruments, the numeric ID of a particular preset within that bank to load. Range is 0 to 127. */ -#if !(0 && 0) struct AUSamplerInstrumentData { CFURLRef fileURL; UInt8 instrumentType; @@ -3784,7 +3783,6 @@ struct AUSamplerInstrumentData { UInt8 presetID; }; typedef struct AUSamplerInstrumentData AUSamplerInstrumentData; -#endif /* @enum InstrumentTypes @@ -4132,7 +4130,6 @@ enum { // Deprecated in favor of the newer AUSamplerInstrumentData // structure and its supporting property. -#if !(0 && 0) typedef struct AUSamplerBankPresetData { CFURLRef bankURL; UInt8 bankMSB; @@ -4140,7 +4137,6 @@ typedef struct AUSamplerBankPresetData { UInt8 presetID; UInt8 reserved; } AUSamplerBankPresetData; -#endif CF_ENUM(AudioUnitPropertyID) { kAUSamplerProperty_LoadPresetFromBank = 4100, diff --git a/Frameworks/AudioToolbox.framework/libValidationCapsule.tbd b/Frameworks/AudioToolbox.framework/libValidationCapsule.tbd index 809c2866..7b8704cf 100644 --- a/Frameworks/AudioToolbox.framework/libValidationCapsule.tbd +++ b/Frameworks/AudioToolbox.framework/libValidationCapsule.tbd @@ -16,10 +16,9 @@ exports: symbols: [ _CAShowAudioChannelLayout, _Synchronously, _Synchronously_ServicingMainRunLoop, __Z26CAShowComponentDescriptionPK25AudioComponentDescription, __ZN11AUFunctions10OpenAUSyncEP20OpaqueAudioComponentRP28OpaqueAudioComponentInstanceb, - __ZN11AUFunctions14OSTypeToStringEjPcm, __ZN11AUFunctions14StringToOSTypeEPKcRj, - __ZN11AUFunctions17GetCompBundleVersEP20OpaqueAudioComponent, + __ZN11AUFunctions11OpenAUAsyncEP20OpaqueAudioComponentbU13block_pointerFvP28OpaqueAudioComponentInstanceibE, + __ZN11AUFunctions14OSTypeToStringEjPcm, __ZN11AUFunctions17GetCompBundleVersEP20OpaqueAudioComponent, __ZN11AUFunctions20ASBDIsValidCanonicalERK24CAStreamBasicDescription, - __ZN11AUFunctions20ShowComponentsOfTypeEjbbbb, __ZN11AUFunctions29WeakLink_TransformProcessTypeEb, __ZN11AUFunctions6ShowCFEPK10__CFString, __ZN11CAAudioUnit11SetAUPresetEPKv, __ZN11CAAudioUnit12SetParameterEjjjfj, __ZN11CAAudioUnit13MIDIEventListEPK13MIDIEventListj, __ZN11CAAudioUnit13SetSampleRateEd, __ZN11CAAudioUnit13SetSampleRateEjjd, @@ -58,9 +57,9 @@ exports: __ZN14CAAUChanHelperaSERKS_, __ZN19AUValidationCapsule10FatalErrorEPKci, __ZN19AUValidationCapsule10getVersionEv, __ZN19AUValidationCapsule11CheckFormatEjjbb, __ZN19AUValidationCapsule11PrintLayoutERK20CAAudioChannelLayout, - __ZN19AUValidationCapsule11ProfileOpenEv, __ZN19AUValidationCapsule11RenderTestsEv, - __ZN19AUValidationCapsule12AUFormatTestEv, __ZN19AUValidationCapsule12InitializeAUER11CAAudioUnit, - __ZN19AUValidationCapsule12SetBusFormatER11CAAudioUnitjjj, + __ZN19AUValidationCapsule11ProfileOpenEU13block_pointerFvbE, + __ZN19AUValidationCapsule11RenderTestsEv, __ZN19AUValidationCapsule12AUFormatTestEv, + __ZN19AUValidationCapsule12InitializeAUER11CAAudioUnit, __ZN19AUValidationCapsule12SetBusFormatER11CAAudioUnitjjj, __ZN19AUValidationCapsule12TestPropertyERK20PropertyExpectations, __ZN19AUValidationCapsule12VerifyScopesEv, __ZN19AUValidationCapsule13CheckACLWriteERKNSt3__16vectorIjNS0_9allocatorIjEEEEjjRb, __ZN19AUValidationCapsule13MessageNoLineEPKc, __ZN19AUValidationCapsule13RampParameterEv, @@ -84,29 +83,30 @@ exports: __ZN19AUValidationCapsule24AURenderRampNotificationEPvPjPK14AudioTimeStampjjP15AudioBufferList, __ZN19AUValidationCapsule24ConfigureMatrixMixerUnitER11CAAudioUnit, __ZN19AUValidationCapsule24DoesHandleChannelLayoutsEjb, __ZN19AUValidationCapsule24GetParameterValuesStringEjjfRbS0_, - __ZN19AUValidationCapsule27replaceCapsuleResultHandlerENSt3__110shared_ptrINS_32AUValidationCapsuleResultHandlerEEE, + __ZN19AUValidationCapsule27replaceCapsuleResultHandlerENSt3__110shared_ptrINS_32AUValidationCapsuleOutputHandlerEEE, __ZN19AUValidationCapsule28ValidateParameterValuesMatchEv, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler10FatalErrorEPKci, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler11PrintLayoutERK20CAAudioChannelLayout, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler13MessageNoLineEPKc, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler5ErrorEPKc, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler5PrintEPKcz, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler6ShowCFEPK10__CFString, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler6VerifyEiPKc, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler7MessageEPKc, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler7WarningEPKc, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler9BreakLineEb, - __ZN19AUValidationCapsule32AUValidationCapsuleResultHandler9PrintDescERK24CAStreamBasicDescription, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler10FatalErrorEPKci, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler11PrintLayoutERK20CAAudioChannelLayout, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler13MessageNoLineEPKc, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler5ErrorEPKc, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler5PrintEPKcz, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler6ShowCFEPK10__CFString, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler6VerifyEiPKc, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler7MessageEPKc, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler7WarningEPKc, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler9BreakLineEb, + __ZN19AUValidationCapsule32AUValidationCapsuleOutputHandler9PrintDescERK24CAStreamBasicDescription, __ZN19AUValidationCapsule32CreatePropertyExpectationObjectsEv, - __ZN19AUValidationCapsule5ErrorEPKc, __ZN19AUValidationCapsule6OpenAUEP20OpaqueAudioComponentb, + __ZN19AUValidationCapsule5ErrorEPKc, __ZN19AUValidationCapsule6OpenAUEP20OpaqueAudioComponentbU13block_pointerFvifE, __ZN19AUValidationCapsule6ShowCFEPK10__CFString, __ZN19AUValidationCapsule6VerifyEiPKc, __ZN19AUValidationCapsule7CloseAUEv, __ZN19AUValidationCapsule7MessageEPKc, __ZN19AUValidationCapsule7WarningEPKc, __ZN19AUValidationCapsule8DoRenderER14AudioTimeStampjNSt3__16bitsetILm3EEEjb, __ZN19AUValidationCapsule8FoundACLERKNSt3__16vectorIjNS0_9allocatorIjEEEEjRb, - __ZN19AUValidationCapsule8ValidateEb, __ZN19AUValidationCapsule9BreakLineEb, - __ZN19AUValidationCapsule9GetAUTypeEj, __ZN19AUValidationCapsule9PrintDescERK24CAStreamBasicDescription, - __ZN19AUValidationCapsuleC1E25AudioComponentDescriptionbbbbbbdbbb, - __ZN19AUValidationCapsuleC2E25AudioComponentDescriptionbbbbbbdbbb, + __ZN19AUValidationCapsule8ValidateEbU13block_pointerFviE, + __ZN19AUValidationCapsule9BreakLineEb, __ZN19AUValidationCapsule9GetAUTypeEj, + __ZN19AUValidationCapsule9PrintDescERK24CAStreamBasicDescription, + __ZN19AUValidationCapsuleC1E25AudioComponentDescriptionRK27ValidationCapsuleParameters, + __ZN19AUValidationCapsuleC2E25AudioComponentDescriptionRK27ValidationCapsuleParameters, __ZN19AUValidationCapsuleD1Ev, __ZN19AUValidationCapsuleD2Ev, __ZN20CAAudioChannelLayout10SetWithTagEj, __ZN20CAAudioChannelLayout14NumberChannelsERK18AudioChannelLayout, __ZN20CAAudioChannelLayout15SetAllToUnknownER18AudioChannelLayoutj, @@ -152,7 +152,8 @@ exports: __ZNK20PropertyExpectations5GetIDEv, __ZNK20PropertyExpectations7GetNameEv, __ZNK22CAComponentDescription4IsAUEv, __ZNK22CAComponentDescription7MatchesERK25AudioComponentDescription, __ZTT11CAException, __ZTV11CAException, __ZTV12CAXException, - __ZTVN11CAAudioUnit7AUStateE, __ZTVN19AUValidationCapsule32AUValidationCapsuleResultHandlerE, + __ZTVN11CAAudioUnit7AUStateE, __ZTVN19AUValidationCapsule32AUValidationCapsuleOutputHandlerE, __ZTv0_n24_N11CAExceptionD0Ev, __ZTv0_n24_N11CAExceptionD1Ev, _validate, _validateWithParametersAsync, _validationCapsuleVersion ] + weak-symbols: [ __ZNSt3__119piecewise_constructE ] ... diff --git a/Frameworks/CFNetwork.framework/Versions/A/CFNetwork.tbd b/Frameworks/CFNetwork.framework/Versions/A/CFNetwork.tbd index e51ebf8a..07b8fc39 100644 --- a/Frameworks/CFNetwork.framework/Versions/A/CFNetwork.tbd +++ b/Frameworks/CFNetwork.framework/Versions/A/CFNetwork.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork' -current-version: 1490.0.4 +current-version: 3826.255.111 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -67,11 +67,23 @@ exports: _CFNetServiceScheduleWithRunLoop, _CFNetServiceSetClient, _CFNetServiceSetInfo, _CFNetServiceSetTXTData, _CFNetServiceUnscheduleFromRunLoop, _CFNetworkCopyProxiesForAutoConfigurationScript, _CFNetworkCopyProxiesForURL, - _CFNetworkCopySystemProxySettings, _CFNetworkExecuteProxyAutoConfigurationScript, - _CFNetworkExecuteProxyAutoConfigurationURL, _CFReadStreamCreateForHTTPRequest, - _CFReadStreamCreateForStreamedHTTPRequest, _CFReadStreamCreateWithFTPURL, - _CFStreamCreatePairWithSocketToCFHost, _CFStreamCreatePairWithSocketToNetService, - _CFURLAuthChallengeCreate, _CFURLAuthChallengeGetError, _CFURLAuthChallengeGetFailureResponse, + _CFNetworkCopySystemProxySettings, _CFNetworkDiagnosticLevel, + _CFNetworkExecuteProxyAutoConfigurationScript, _CFNetworkExecuteProxyAutoConfigurationURL, + _CFNetworkProxyAuthorizationElementsCopyDebugDescription, + _CFNetworkProxyAuthorizationElementsCreateFromDictionary, + _CFNetworkProxyAuthorizationElementsGetClientDescription, + _CFNetworkProxyAuthorizationElementsGetClientProcessName, + _CFNetworkProxyAuthorizationElementsGetCredential, _CFNetworkProxyAuthorizationElementsGetProtectionSpace, + _CFNetworkProxyAuthorizationElementsIsUnviable, _CFNetworkProxyAuthorizationElementsIsViable, + _CFNetworkProxyAuthorizationElementsRelease, _CFNetworkProxyAuthorizationElementsRetain, + _CFNetworkProxyCredentialCopyDebugDescription, _CFNetworkProxyCredentialCreateData, + _CFNetworkProxyCredentialCreateWithCredential, _CFNetworkProxyCredentialEqual, + _CFNetworkProxyCredentialGetCredential, _CFNetworkProxyCredentialRelease, + _CFNetworkProxyCredentialRetain, _CFNetworkProxyCredentialSetViability, + _CFReadStreamCreateForHTTPRequest, _CFReadStreamCreateForStreamedHTTPRequest, + _CFReadStreamCreateWithFTPURL, _CFStreamCreatePairWithSocketToCFHost, + _CFStreamCreatePairWithSocketToNetService, _CFURLAuthChallengeCreate, + _CFURLAuthChallengeGetError, _CFURLAuthChallengeGetFailureResponse, _CFURLAuthChallengeGetPreviousFailureCount, _CFURLAuthChallengeGetProposedCredential, _CFURLAuthChallengeGetProtectionSpace, _CFURLCacheAddCachedResponseForRequest, _CFURLCacheCopyResponseForRequest, _CFURLCacheCopySharedURLCache, @@ -92,18 +104,20 @@ exports: _CFURLCredentialGetUsername, _CFURLCredentialStorageCopyAllCredentials, _CFURLCredentialStorageCopyCredentialsForProtectionSpace, _CFURLCredentialStorageCopyDefaultCredentialForProtectionSpace, - _CFURLCredentialStorageCreate, _CFURLCredentialStorageRemoveCredentialForProtectionSpace, + _CFURLCredentialStorageCreate, _CFURLCredentialStorageIsSystemKeychainSupported, + _CFURLCredentialStorageRemoveCredentialForProtectionSpace, _CFURLCredentialStorageSetCredentialForProtectionSpace, _CFURLCredentialStorageSetDefaultCredentialForProtectionSpace, - _CFURLDownloadCancel, _CFURLDownloadCopyResumeData, _CFURLDownloadCreate, - _CFURLDownloadCreateAndStartWithLoadingConnection, _CFURLDownloadCreateWithResumeData, - _CFURLDownloadDeletesUponFailure, _CFURLDownloadScheduleWithRunLoop, - _CFURLDownloadSetDeletesUponFailure, _CFURLDownloadSetDestination, - _CFURLDownloadStart, _CFURLProtectionSpaceCreate, _CFURLProtectionSpaceGetAuthenticationScheme, - _CFURLProtectionSpaceGetHost, _CFURLProtectionSpaceGetPort, - _CFURLProtectionSpaceGetRealm, _CFURLProtectionSpaceGetServerTrust, - _CFURLProtectionSpaceGetServerType, _CFURLProtectionSpaceIsProxy, - _CFURLProtectionSpaceReceivesCredentialSecurely, _CFURLProtocolGetCachedResponse, - _CFURLProtocolGetClient, _CFURLProtocolGetRequest, _CFURLProtocolRegisterImplementation, + _CFURLCredentialStorageSetUseSystemKeychain, _CFURLDownloadCancel, + _CFURLDownloadCopyResumeData, _CFURLDownloadCreate, _CFURLDownloadCreateAndStartWithLoadingConnection, + _CFURLDownloadCreateWithResumeData, _CFURLDownloadDeletesUponFailure, + _CFURLDownloadScheduleWithRunLoop, _CFURLDownloadSetDeletesUponFailure, + _CFURLDownloadSetDestination, _CFURLDownloadStart, _CFURLProtectionSpaceCreate, + _CFURLProtectionSpaceGetAuthenticationScheme, _CFURLProtectionSpaceGetHost, + _CFURLProtectionSpaceGetPort, _CFURLProtectionSpaceGetRealm, + _CFURLProtectionSpaceGetServerTrust, _CFURLProtectionSpaceGetServerType, + _CFURLProtectionSpaceIsProxy, _CFURLProtectionSpaceReceivesCredentialSecurely, + _CFURLProtocolGetCachedResponse, _CFURLProtocolGetClient, + _CFURLProtocolGetRequest, _CFURLProtocolRegisterImplementation, _CFURLProtocolUnregisterImplementation, _CFURLRequestAppendHTTPHeaderFieldValue, _CFURLRequestCopyAllHTTPHeaderFields, _CFURLRequestCopyHTTPCookieStorage, _CFURLRequestCopyHTTPHeaderFieldValue, _CFURLRequestCopyHTTPRequest, @@ -140,18 +154,15 @@ exports: _NSHTTPCookieMaximumAge, _NSHTTPCookieName, _NSHTTPCookieOriginURL, _NSHTTPCookiePath, _NSHTTPCookiePort, _NSHTTPCookieSameSiteLax, _NSHTTPCookieSameSitePolicy, _NSHTTPCookieSameSiteStrict, - _NSHTTPCookieSecure, _NSHTTPCookieValue, _NSHTTPCookieVersion, - _NSNetServicesErrorCode, _NSNetServicesErrorDomain, _NSTCPConnectionConditionsUnmetReasonErrorDomain, - _NSURLAuthenticationMethodClientCertificate, _NSURLAuthenticationMethodDefault, - _NSURLAuthenticationMethodHTMLForm, _NSURLAuthenticationMethodHTTPBasic, - _NSURLAuthenticationMethodHTTPDigest, _NSURLAuthenticationMethodNTLM, - _NSURLAuthenticationMethodNegotiate, _NSURLAuthenticationMethodOAuth, - _NSURLAuthenticationMethodOAuthBearerToken, _NSURLAuthenticationMethodPrivateAccessToken, - _NSURLAuthenticationMethodServerTrust, _NSURLAuthenticationMethodXMobileMeAuthToken, - _NSURLConnectionBackgroundDownloadCompletedInvocation, _NSURLConnectionBackgroundDownloadDestinationURL, - _NSURLConnectionBackgroundDownloadIdentifier, _NSURLConnectionBackgroundDownloadMediaKind, - _NSURLConnectionBackgroundDownloadPreCompletedInvocation, - _NSURLConnectionIsBackgroundDownload, _NSURLCredentialStorageChangedNotification, + _NSHTTPCookieSecure, _NSHTTPCookieSetByJavaScript, _NSHTTPCookieValue, + _NSHTTPCookieVersion, _NSNetServicesErrorCode, _NSNetServicesErrorDomain, + _NSTCPConnectionConditionsUnmetReasonErrorDomain, _NSURLAuthenticationMethodClientCertificate, + _NSURLAuthenticationMethodDefault, _NSURLAuthenticationMethodHTMLForm, + _NSURLAuthenticationMethodHTTPBasic, _NSURLAuthenticationMethodHTTPDigest, + _NSURLAuthenticationMethodNTLM, _NSURLAuthenticationMethodNegotiate, + _NSURLAuthenticationMethodOAuth, _NSURLAuthenticationMethodOAuthBearerToken, + _NSURLAuthenticationMethodPrivateAccessToken, _NSURLAuthenticationMethodServerTrust, + _NSURLAuthenticationMethodXMobileMeAuthToken, _NSURLCredentialStorageChangedNotification, _NSURLCredentialStorageRemoveSynchronizableCredentials, _NSURLProtectionSpaceFTP, _NSURLProtectionSpaceFTPProxy, _NSURLProtectionSpaceHTTP, _NSURLProtectionSpaceHTTPProxy, _NSURLProtectionSpaceHTTPS, @@ -162,13 +173,20 @@ exports: _NSURLSessionTaskPriorityHigh, _NSURLSessionTaskPriorityLow, _NSURLSessionTransferSizeUnknown, _NSURLSessionUploadTaskResumeData, __CFCachedURLResponseGetMemMappedData, __CFCachedURLResponseSetBecameFileBackedCallBackBlock, - __CFErrorCreateWithStreamError, __CFHTTPAuthenticationApplyProxyAuthorizationToRequest, - __CFHTTPAuthenticationCopySortedAuthSchemes, __CFHTTPAuthenticationCreateNTLMHeaderForRequest, - __CFHTTPAuthenticationCreateNegotiateHeaderForRequest, __CFHTTPAuthenticationDisassociateConnection, - __CFHTTPAuthenticationGetSchemesDict, __CFHTTPAuthenticationPasswordInClear, + __CFErrorCreateWithStreamError, __CFHTTPAuthenticationAppSSOIsPerformDefaultHandlingError, + __CFHTTPAuthenticationAppSSOShouldManageURL, __CFHTTPAuthenticationApplyProxyAuthorizationToRequest, + __CFHTTPAuthenticationAskAccountsForCreds, __CFHTTPAuthenticationCanRecoverFromKerberosFailure, + __CFHTTPAuthenticationCheckOriginAllowedAsThirdParty, __CFHTTPAuthenticationClearAccountRefreshState, + __CFHTTPAuthenticationCopySortedAuthSchemes, __CFHTTPAuthenticationCreateFromResponseWithFlags, + __CFHTTPAuthenticationCreateNTLMHeaderForRequest, __CFHTTPAuthenticationCreateNegotiateHeaderForRequest, + __CFHTTPAuthenticationDisableAppSSO, __CFHTTPAuthenticationDisassociateConnection, + __CFHTTPAuthenticationFailedToGetKerberosTicket, __CFHTTPAuthenticationFetchProxyCredentialFromAuthBroker, + __CFHTTPAuthenticationGetAuthHeadersFromAppSSO, __CFHTTPAuthenticationGetPATAuthHeaders, + __CFHTTPAuthenticationGetPATSchemes, __CFHTTPAuthenticationGetSchemesDict, + __CFHTTPAuthenticationIsSecondNTLMTransaction, __CFHTTPAuthenticationPasswordInClear, __CFHTTPAuthenticationSetPreferredScheme, __CFHTTPAuthenticationUpdateFromResponse, - __CFHTTPCookieCreateCookiesWithResponseMessage, __CFHTTPCookieCreateWithStringAndPartition, - __CFHTTPCookieStorageCopyCookiesForURLWithMainDocumentURL, + __CFHTTPAuthenticationUsingAppSSO, __CFHTTPCookieCreateCookiesWithResponseMessage, + __CFHTTPCookieCreateWithStringAndPartition, __CFHTTPCookieStorageCopyCookiesForURLWithMainDocumentURL, __CFHTTPCookieStorageCopyRequestHeaderFieldsForURL, __CFHTTPCookieStorageCreateInMemory, __CFHTTPCookieStorageCreateWithProperties, __CFHTTPCookieStorageFlushCookieStores, __CFHTTPCookieStorageGetDefault, __CFHTTPCookieStorageSetCookiesWithResponseHeaderFields, @@ -213,10 +231,10 @@ exports: __CFURLCredentialCreateArchive, __CFURLCredentialCreateForKerberosTicket, __CFURLCredentialCreateFromArchive, __CFURLCredentialCreateOAuth1, __CFURLCredentialCreateOAuth2, __CFURLCredentialCreateXMobileMeAuthToken, - __CFURLDestroyResource, __CFURLProtocolSendCacheResponseIsValidCallback, - __CFURLProtocolSendDidFailCallback, __CFURLProtocolSendDidFinishLoadingCallback, - __CFURLProtocolSendDidLoadDataCallback, __CFURLProtocolSendDidReceiveResponseCallback, - __CFURLRequestCopyContentDispositionEncodingFallbackArray, + __CFURLDestroyResource, __CFURLProtectionSpaceCreateArchive, + __CFURLProtocolSendCacheResponseIsValidCallback, __CFURLProtocolSendDidFailCallback, + __CFURLProtocolSendDidFinishLoadingCallback, __CFURLProtocolSendDidLoadDataCallback, + __CFURLProtocolSendDidReceiveResponseCallback, __CFURLRequestCopyContentDispositionEncodingFallbackArray, __CFURLRequestCopyProtocolPropertyForKey, __CFURLRequestCreateArchiveList, __CFURLRequestCreateFromArchiveList, __CFURLRequestSetAllowedProtocolTypes, __CFURLRequestSetContentDispositionEncodingFallbackArray, @@ -234,8 +252,7 @@ exports: __NSServerConfigurationSOCKS5ServerCredentials, __NSURLErrorBlockedTrackerFailureKey, __NSURLErrorNWPathKey, __NSURLErrorNWResolutionReportKey, __NSURLErrorPrivacyProxyFailureKey, __NSURLErrorVPNInactiveFailureKey, - __NSURLErrorWebSocketHandshakeFailureReasonKey, ___AuthBrokerMain, - ___CFNetworkAgentMessageProcessorMain, ___CFTubeSetTubeTypeNotifier, + __NSURLErrorWebSocketHandshakeFailureReasonKey, ___CFTubeSetTubeTypeNotifier, __kATSAllowsArbitraryLoadsForMediaKey, __kCFHTTPCookiePolicyPropertyIsTopLevelNavigation, __kCFHTTPCookiePolicyPropertySiteForCookies, __kCFHTTPServerAllInterfacesIdentifier, __kCFHTTPServerAllowAnonymousServer, __kCFHTTPServerBoundInterfaceIdentifier, @@ -288,12 +305,12 @@ exports: __kCFURLConnectionPropertyTimingDataOptions, __kCFURLErrorAuthFailedResponseKey, __kCFURLStorageSessionIsPrivate, __kCFURLStorageSessionProcessSharing, __kTCPKeepAliveParametersEnabled, __kTCPKeepAliveParametersIdleTime, - __kTCPKeepAliveParametersInterval, _cfnTranslateCFError, _estimatedPropertyListSize, - _kCFDNSServiceFailureKey, _kCFErrorDomainCFNetwork, _kCFErrorDomainWinSock, - _kCFFTPResourceGroup, _kCFFTPResourceLink, _kCFFTPResourceModDate, - _kCFFTPResourceMode, _kCFFTPResourceName, _kCFFTPResourceOwner, - _kCFFTPResourceSize, _kCFFTPResourceType, _kCFFTPStatusCodeKey, - _kCFGetAddrInfoFailureKey, _kCFHTTPAuthenticationAccountDomain, + __kTCPKeepAliveParametersInterval, _cfnTranslateCFError, _destinationURLFragment, + _estimatedPropertyListSize, _kCFDNSServiceFailureKey, _kCFErrorDomainCFNetwork, + _kCFErrorDomainWinSock, _kCFFTPResourceGroup, _kCFFTPResourceLink, + _kCFFTPResourceModDate, _kCFFTPResourceMode, _kCFFTPResourceName, + _kCFFTPResourceOwner, _kCFFTPResourceSize, _kCFFTPResourceType, + _kCFFTPStatusCodeKey, _kCFGetAddrInfoFailureKey, _kCFHTTPAuthenticationAccountDomain, _kCFHTTPAuthenticationPassword, _kCFHTTPAuthenticationSchemeBasic, _kCFHTTPAuthenticationSchemeDigest, _kCFHTTPAuthenticationSchemeKerberos, _kCFHTTPAuthenticationSchemeNTLM, _kCFHTTPAuthenticationSchemeNegotiate, @@ -392,19 +409,20 @@ exports: NSURLSessionUploadTask, NSURLSessionWebSocketMessage, NSURLSessionWebSocketTask, _NSCFServer, _NSHSTSStorage, _NSHTTPAlternativeServiceEntry, _NSHTTPAlternativeServicesFilter, _NSHTTPAlternativeServicesStorage, - _NSHTTPConnectionInfo, __CFN_TaskMetrics, __NSCFURLSessionTaskInfo, - __NSCFURLSessionXPC, __NSURLSessionStatistics ] + _NSHTTPConnectionInfo, _NSURLSessionBackgroundTaskOverrides, + __CFN_TaskMetrics, __NSCFURLSessionTaskInfo, __NSCFURLSessionXPC, + __NSURLSessionStatistics ] - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] symbols: [ _CFNetServiceGetProtocolSpecificInformation, _CFNetServiceRegister, _CFNetServiceResolve, _CFNetServiceSetProtocolSpecificInformation, - _kCFNetworkProxiesExceptionsList, _kCFNetworkProxiesExcludeSimpleHostnames, - _kCFNetworkProxiesFTPEnable, _kCFNetworkProxiesFTPPassive, - _kCFNetworkProxiesFTPPort, _kCFNetworkProxiesFTPProxy, _kCFNetworkProxiesGopherEnable, - _kCFNetworkProxiesGopherPort, _kCFNetworkProxiesGopherProxy, - _kCFNetworkProxiesHTTPSEnable, _kCFNetworkProxiesHTTPSPort, - _kCFNetworkProxiesHTTPSProxy, _kCFNetworkProxiesProxyAutoDiscoveryEnable, - _kCFNetworkProxiesRTSPEnable, _kCFNetworkProxiesRTSPPort, - _kCFNetworkProxiesRTSPProxy, _kCFNetworkProxiesSOCKSEnable, + __CFURLCredentialCreateWithInitialAccess, _kCFNetworkProxiesExceptionsList, + _kCFNetworkProxiesExcludeSimpleHostnames, _kCFNetworkProxiesFTPEnable, + _kCFNetworkProxiesFTPPassive, _kCFNetworkProxiesFTPPort, _kCFNetworkProxiesFTPProxy, + _kCFNetworkProxiesGopherEnable, _kCFNetworkProxiesGopherPort, + _kCFNetworkProxiesGopherProxy, _kCFNetworkProxiesHTTPSEnable, + _kCFNetworkProxiesHTTPSPort, _kCFNetworkProxiesHTTPSProxy, + _kCFNetworkProxiesProxyAutoDiscoveryEnable, _kCFNetworkProxiesRTSPEnable, + _kCFNetworkProxiesRTSPPort, _kCFNetworkProxiesRTSPProxy, _kCFNetworkProxiesSOCKSEnable, _kCFNetworkProxiesSOCKSPort, _kCFNetworkProxiesSOCKSProxy ] - targets: [ x86_64-maccatalyst, arm64-maccatalyst, arm64e-maccatalyst ] symbols: [ _kCFStreamPropertyDataConnectionServiceType ] diff --git a/Frameworks/CFNetwork.framework/Versions/A/Headers/CFProxySupport.h b/Frameworks/CFNetwork.framework/Versions/A/Headers/CFProxySupport.h index 30d39dfa..6509d4b4 100644 --- a/Frameworks/CFNetwork.framework/Versions/A/Headers/CFProxySupport.h +++ b/Frameworks/CFNetwork.framework/Versions/A/Headers/CFProxySupport.h @@ -208,7 +208,7 @@ CFNetworkExecuteProxyAutoConfigurationScript( CFStringRef proxyAutoConfigurationScript, CFURLRef targetURL, CFProxyAutoConfigurationResultCallback cb, - CFStreamClientContext * clientContext) CF_AVAILABLE(10_5, 2_0); + CFStreamClientContext * clientContext) CF_AVAILABLE(10_5, 2_0) CF_RETURNS_RETAINED; @@ -229,7 +229,7 @@ CFNetworkExecuteProxyAutoConfigurationURL( CFURLRef proxyAutoConfigURL, CFURLRef targetURL, CFProxyAutoConfigurationResultCallback cb, - CFStreamClientContext * clientContext) CF_AVAILABLE(10_5, 2_0); + CFStreamClientContext * clientContext) CF_AVAILABLE(10_5, 2_0) CF_RETURNS_RETAINED; /* diff --git a/Frameworks/Carbon.framework/Versions/A/Carbon.tbd b/Frameworks/Carbon.framework/Versions/A/Carbon.tbd index 8f5203b9..a3289a40 100644 --- a/Frameworks/Carbon.framework/Versions/A/Carbon.tbd +++ b/Frameworks/Carbon.framework/Versions/A/Carbon.tbd @@ -22,7 +22,7 @@ exports: tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels' -current-version: 106 +current-version: 106.1 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: Carbon @@ -51,7 +51,7 @@ exports: tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox' -current-version: 1202 +current-version: 1220.2 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: Carbon @@ -513,7 +513,7 @@ reexports: tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help' -current-version: 76 +current-version: 81 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: Carbon @@ -634,7 +634,7 @@ exports: tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI' -current-version: 55008.0.2 +current-version: 55010 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: Carbon diff --git a/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels.tbd b/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels.tbd index 1c146970..bdd0fab4 100644 --- a/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels.tbd +++ b/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels.tbd @@ -2,7 +2,7 @@ tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels' -current-version: 106 +current-version: 106.1 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: Carbon diff --git a/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox.tbd b/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox.tbd index 1112c87c..c521f119 100644 --- a/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox.tbd +++ b/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox.tbd @@ -2,7 +2,7 @@ tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox' -current-version: 1202 +current-version: 1220.2 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: Carbon diff --git a/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h b/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h index f465750b..1571452d 100644 --- a/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h +++ b/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h @@ -3,7 +3,7 @@ Contains: Event Manager Interfaces. - Copyright: © 1985-2008 by Apple Computer, Inc., all rights reserved + Copyright: � 1985-2008 by Apple Computer, Inc., all rights reserved Bugs?: For bug reports, consult the following page on the World Wide Web: @@ -296,6 +296,7 @@ enum { kVK_F16 = 0x6A, kVK_F14 = 0x6B, kVK_F10 = 0x6D, + kVK_ContextualMenu = 0x6E, kVK_F12 = 0x6F, kVK_F15 = 0x71, kVK_Help = 0x72, diff --git a/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/IMKInputSession.h b/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/IMKInputSession.h index 81634a5f..3a2c40ff 100644 --- a/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/IMKInputSession.h +++ b/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/IMKInputSession.h @@ -12,7 +12,10 @@ @abstract This header contains the protocol that is used to communicate with client input sessions. An input method uses this protocol to send text or obtain information about a client's text. */ -#ifndef __IMKINPUTSESSION__ +#if HIToolbox_PRECOMPILING +# error ShippedHeaders/Headers/IMKInputSession.h refuses to contribute to precompiled headers. +#elif ! defined (__IMKINPUTSESSION__) +//# warning ShippedHeaders/Headers/IMKInputSession.h contributing #define __IMKINPUTSESSION__ //to use this header you must use Objective-C. This will be part of HIToolbox/HIToolbox.h and many people who include that header @@ -276,5 +279,4 @@ extern const NSString* IMKTextOrientationName; @end #endif -#endif - +#endif // HIToolbox_PRECOMPILING / __IMKINPUTSESSION__ diff --git a/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help.tbd b/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help.tbd index c2111d9f..6f306010 100644 --- a/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help.tbd +++ b/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help.tbd @@ -2,7 +2,7 @@ tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help' -current-version: 76 +current-version: 81 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: Carbon diff --git a/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI.tbd b/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI.tbd index 13410a84..dd4fe7e9 100644 --- a/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI.tbd +++ b/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI.tbd @@ -2,7 +2,7 @@ tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI' -current-version: 55008.0.2 +current-version: 55010 parent-umbrella: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] umbrella: Carbon diff --git a/Frameworks/CloudKit.framework/Versions/A/Headers/CKDefines.h b/Frameworks/CloudKit.framework/Versions/A/Headers/CKDefines.h index eb4f4b60..7e2ffdf9 100644 --- a/Frameworks/CloudKit.framework/Versions/A/Headers/CKDefines.h +++ b/Frameworks/CloudKit.framework/Versions/A/Headers/CKDefines.h @@ -53,4 +53,13 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) #define CK_UNAVAILABLE(msg) __attribute__((unavailable(msg))) #endif +#ifndef CK_NEWLY_UNAVAILABLE + #if (!defined(CK_BUILDING_CK) || !CK_BUILDING_CK) + #define CK_NEWLY_UNAVAILABLE(msg) __attribute__((unavailable(msg))) + #else + #define CK_NEWLY_UNAVAILABLE(msg) CK_EXTERN + #endif +#endif + + NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/CloudKit.framework/Versions/A/Headers/CKFetchNotificationChangesOperation.h b/Frameworks/CloudKit.framework/Versions/A/Headers/CKFetchNotificationChangesOperation.h index 081477b4..00063ad2 100644 --- a/Frameworks/CloudKit.framework/Versions/A/Headers/CKFetchNotificationChangesOperation.h +++ b/Frameworks/CloudKit.framework/Versions/A/Headers/CKFetchNotificationChangesOperation.h @@ -5,56 +5,12 @@ // Copyright (c) 2014 Apple Inc. All rights reserved. // -#import - -@class CKNotification, CKServerChangeToken; +#import NS_HEADER_AUDIT_BEGIN(nullability, sendability) -/*! @class CKFetchNotificationChangesOperation - * - * @abstract An operation that fetches all notification changes. - * - * @discussion If a change token from a previous @c CKFetchNotificationChangesOperation is passed in, only the notifications that have changed since that token will be fetched. - * If this is your first fetch, pass nil for the change token. - * Change tokens are opaque tokens and clients should not infer any behavior based on their content. - */ -API_DEPRECATED("Instead of iterating notifications to enumerate changed record zones, use CKDatabaseSubscription, CKFetchDatabaseChangesOperation, and CKFetchRecordZoneChangesOperation", macos(10.10, 10.13), ios(8.0, 11.0), tvos(9.0, 11.0), watchos(3.0, 4.0)) +CK_NEWLY_UNAVAILABLE("Fetching notification changes is no longer supported. Consider using CKDatabaseSubscription, CKFetchDatabaseChangesOperation, and CKFetchRecordZoneChangesOperation") @interface CKFetchNotificationChangesOperation : CKOperation - -- (instancetype)init NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithPreviousServerChangeToken:(nullable CKServerChangeToken *)previousServerChangeToken; - -@property (nullable, copy, nonatomic) CKServerChangeToken *previousServerChangeToken; - -@property (assign, nonatomic) NSUInteger resultsLimit; - -/*! @abstract If true, then the server wasn't able to return all the changes in this response. - * - * @discussion Will be set before @c fetchNotificationChangesCompletionBlock is called. - * Another @c CKFetchNotificationChangesOperation operation should be run with the updated @c serverChangeToken token from this operation. - */ -@property (readonly, assign, nonatomic) BOOL moreComing; - -/*! @abstract Called once for each updated notification fetch from the server - * - * @discussion Each @c CKOperation instance has a private serial queue. This queue is used for all callback block invocations. - * This block may share mutable state with other blocks assigned to this operation, but any such mutable state - * should not be concurrently used outside of blocks assigned to this operation. - */ -@property (nullable, copy, nonatomic) void (^notificationChangedBlock)(CKNotification *notification); - -/*! @abstract This block is called when the operation completes. - * - * @discussion Clients are responsible for saving the change token at the end of the operation and passing it in to the next call to @c CKFetchNotificationChangesOperation. - * Note that a fetch can fail partway. If that happens, an updated change token may be returned in the completion block so that already fetched notifications don't need to be re-downloaded on a subsequent operation. - * If the server returns a @c CKErrorChangeTokenExpired error, the @c previousServerChangeToken value was too old and the client should toss its local cache and re-fetch notification changes starting with a nil @c previousServerChangeToken. - * Each @c CKOperation instance has a private serial queue. This queue is used for all callback block invocations. - * This block may share mutable state with other blocks assigned to this operation, but any such mutable state - * should not be concurrently used outside of blocks assigned to this operation. - */ -@property (nullable, copy, nonatomic) void (^fetchNotificationChangesCompletionBlock)(CKServerChangeToken * _Nullable serverChangeToken, NSError * _Nullable operationError); - @end NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/CloudKit.framework/Versions/A/Headers/CKMarkNotificationsReadOperation.h b/Frameworks/CloudKit.framework/Versions/A/Headers/CKMarkNotificationsReadOperation.h index 92e8f6d8..3442d7c8 100644 --- a/Frameworks/CloudKit.framework/Versions/A/Headers/CKMarkNotificationsReadOperation.h +++ b/Frameworks/CloudKit.framework/Versions/A/Headers/CKMarkNotificationsReadOperation.h @@ -5,31 +5,12 @@ // Copyright (c) 2014 Apple Inc. All rights reserved. // -#import - #import -@class CKNotificationID; - NS_HEADER_AUDIT_BEGIN(nullability, sendability) -API_DEPRECATED("Instead of iterating notifications, consider using CKDatabaseSubscription, CKFetchDatabaseChangesOperation, and CKFetchRecordZoneChangesOperation as appropriate", macos(10.10, 10.13), ios(8.0, 11.0), tvos(9.0, 11.0), watchos(3.0, 4.0)) +CK_NEWLY_UNAVAILABLE("Marking notifications read is no longer supported. Consider using CKDatabaseSubscription, CKFetchDatabaseChangesOperation, and CKFetchRecordZoneChangesOperation") @interface CKMarkNotificationsReadOperation : CKOperation - -- (instancetype)init NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithNotificationIDsToMarkRead:(NSArray *)notificationIDs; - -@property (nullable, copy, nonatomic) NSArray *notificationIDs; - -/*! @abstract This block is called when the operation completes. - * - * @discussion The @code -[NSOperation completionBlock] @endcode will also be called if both are set. - * Each @c CKOperation instance has a private serial queue. This queue is used for all callback block invocations. - * This block may share mutable state with other blocks assigned to this operation, but any such mutable state - * should not be concurrently used outside of blocks assigned to this operation. - */ -@property (nullable, copy, nonatomic) void (^markNotificationsReadCompletionBlock)(NSArray * _Nullable notificationIDsMarkedRead, NSError * _Nullable operationError); - @end NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/CloudKit.framework/Versions/A/Headers/CKModifyBadgeOperation.h b/Frameworks/CloudKit.framework/Versions/A/Headers/CKModifyBadgeOperation.h index 536716f2..7a1c6155 100644 --- a/Frameworks/CloudKit.framework/Versions/A/Headers/CKModifyBadgeOperation.h +++ b/Frameworks/CloudKit.framework/Versions/A/Headers/CKModifyBadgeOperation.h @@ -9,23 +9,8 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) -API_DEPRECATED("No longer supported, will cease working at some point in the future", macos(10.10, 10.13), ios(8.0, 11.0), tvos(9.0, 11.0), watchos(3.0, 4.0)) +CK_NEWLY_UNAVAILABLE("Modifying badge counts is no longer supported") @interface CKModifyBadgeOperation : CKOperation - -- (instancetype)init NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithBadgeValue:(NSUInteger)badgeValue; - -@property (assign, nonatomic) NSUInteger badgeValue; - -/*! @abstract This block is called when the operation completes. - * - * @discussion The @code -[NSOperation completionBlock] @endcode will also be called if both are set. - * Each @c CKOperation instance has a private serial queue. This queue is used for all callback block invocations. - * This block may share mutable state with other blocks assigned to this operation, but any such mutable state - * should not be concurrently used outside of blocks assigned to this operation. - */ -@property (nullable, copy, nonatomic) void (^modifyBadgeCompletionBlock)(NSError * _Nullable operationError); - @end NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/CloudKit.framework/Versions/A/Headers/CKOperation.h b/Frameworks/CloudKit.framework/Versions/A/Headers/CKOperation.h index a940460d..49a40aca 100644 --- a/Frameworks/CloudKit.framework/Versions/A/Headers/CKOperation.h +++ b/Frameworks/CloudKit.framework/Versions/A/Headers/CKOperation.h @@ -107,7 +107,7 @@ CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer /*! @discussion Long lived operations will continue running even if your process exits. If your process remains alive for the lifetime of the long lived operation its behavior is the same as a regular operation. * - * Long lived operations can be fetched and replayed from the container via the @c fetchAllLongLivedOperations: and @c fetchLongLivedOperationsWithIDs: APIs. + * Long lived operations can be fetched and replayed from the container via the @c fetchAllLongLivedOperations: and @c fetchLongLivedOperationsWithIDs: APIs. Your code should only fetch and re-enqueue long lived operations on app launch. * * Long lived operations persist until their -[NSOperation completionBlock] returns or until the operation is cancelled. * Long lived operations may be garbage collected 24 hours after they finish running if no client has replayed them. diff --git a/Frameworks/CloudKit.framework/Versions/A/Headers/CKReference.h b/Frameworks/CloudKit.framework/Versions/A/Headers/CKReference.h index ac12c409..c677cd60 100644 --- a/Frameworks/CloudKit.framework/Versions/A/Headers/CKReference.h +++ b/Frameworks/CloudKit.framework/Versions/A/Headers/CKReference.h @@ -31,9 +31,9 @@ NS_SWIFT_SENDABLE - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; -/*! @discussion It is acceptable to relate two records that have not yet been uploaded to the server, but those records must be uploaded to the server in the same operation. +/*! @discussion It is acceptable to relate two records that have not yet been uploaded to the server. Those records must be uploaded to the server in the same operation if using an action other than `CKReferenceActionNone`. * - * If a record references a record that does not exist on the server and is not in the current save operation it will result in an error. + * If a record references a record that does not exist on the server and is not in the current save operation it will result in an error if using an action other than `CKReferenceActionNone`. */ - (instancetype)initWithRecordID:(CKRecordID *)recordID action:(CKReferenceAction)action NS_DESIGNATED_INITIALIZER; - (instancetype)initWithRecord:(CKRecord *)record action:(CKReferenceAction)action; diff --git a/Frameworks/CloudKit.framework/Versions/A/Headers/CKShare.h b/Frameworks/CloudKit.framework/Versions/A/Headers/CKShare.h index 2151c10e..b000ae98 100644 --- a/Frameworks/CloudKit.framework/Versions/A/Headers/CKShare.h +++ b/Frameworks/CloudKit.framework/Versions/A/Headers/CKShare.h @@ -85,11 +85,14 @@ API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) @property (nullable, readonly, copy) CKShareParticipant *currentUserParticipant; /*! @discussion If a participant with a matching userIdentity already exists, then that existing participant's properties will be updated; no new participant will be added. + * A `CKShareParticipant` instance that has already been added to one `CKShare` cannot be added to another, unless it is removed from the first `CKShare` through `removeParticipant`. * In order to modify the list of participants, a share must have publicPermission set to @c CKShareParticipantPermissionNone. That is, you cannot mix-and-match private users and public users in the same share. - * Only certain participant types may be added via this API * @see CKShareParticipantRole */ - (void)addParticipant:(CKShareParticipant *)participant; + +/*! @discussion It's not allowed to call `removeParticipant` on a `CKShare` with a `CKShareParticipant` that has never been added to that share through `addParticipant`. + */ - (void)removeParticipant:(CKShareParticipant *)participant; /*! These superclass-provided initializers are not allowed for CKShare */ diff --git a/Frameworks/CloudKit.framework/Versions/A/Headers/CKShareParticipant.h b/Frameworks/CloudKit.framework/Versions/A/Headers/CKShareParticipant.h index 0c3a02de..bf287150 100644 --- a/Frameworks/CloudKit.framework/Versions/A/Headers/CKShareParticipant.h +++ b/Frameworks/CloudKit.framework/Versions/A/Headers/CKShareParticipant.h @@ -69,6 +69,9 @@ API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) /*! The default permission for a new participant is @c CKShareParticipantPermissionReadOnly. */ @property (assign) CKShareParticipantPermission permission; +/*! A unique identifier for this participant. */ +@property (readonly, copy) NSString *participantID API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) NS_REFINED_FOR_SWIFT; + @end NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/CloudKit.framework/Versions/A/Headers/CKUserIdentity.h b/Frameworks/CloudKit.framework/Versions/A/Headers/CKUserIdentity.h index ba7a8e39..1e60eafe 100644 --- a/Frameworks/CloudKit.framework/Versions/A/Headers/CKUserIdentity.h +++ b/Frameworks/CloudKit.framework/Versions/A/Headers/CKUserIdentity.h @@ -21,27 +21,15 @@ CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; +@property (nullable, readonly, copy) CKRecordID *userRecordID; + /*! This is the @c lookupInfo you passed in to @c CKDiscoverUserIdentitiesOperation or @c CKFetchShareParticipantsOperation */ @property (nullable, readonly, copy) CKUserIdentityLookupInfo *lookupInfo; - @property (nullable, readonly, copy) NSPersonNameComponents *nameComponents; -@property (nullable, readonly, copy) CKRecordID *userRecordID; - -/*! @abstract Link to the Contacts database. - * - * @discussion Identities discovered via @c CKDiscoverAllUserIdentitiesOperation correspond to entries in the local Contacts database. These identities will have @c contactIdentifiers filled out, which your app may use to get additional information about the contacts that were discovered. Multiple @c contactIdentifiers may exist for a single discovered user, as multiple contacts may contain the same email addresses or phone numbers. - * - * @return individual, non-unified contacts. - * - * @discussion To transform these identifiers into an array of unified contact identifiers, pass a @c CNContact.predicateForContacts(withIdentifiers:) predicate into @c CNContactStore.unifiedContacts(matching:keysToFetch:) - * - * @see Contacts.framework and CNContact.identifier - */ -@property (readonly, copy) NSArray *contactIdentifiers API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) API_UNAVAILABLE(tvos); - - @property (readonly, assign) BOOL hasiCloudAccount; +@property (readonly, copy) NSArray *contactIdentifiers API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.13, 15.0), ios(11.0, 18.0), watchos(4.0, 11.0)); + @end NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/ColorSync.framework/Versions/A/ColorSync.tbd b/Frameworks/ColorSync.framework/Versions/A/ColorSync.tbd index d704b1d2..6776c90d 100644 --- a/Frameworks/ColorSync.framework/Versions/A/ColorSync.tbd +++ b/Frameworks/ColorSync.framework/Versions/A/ColorSync.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync' -current-version: 3735 +current-version: 3777.4.1 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -31,9 +31,11 @@ exports: _ColorSyncPrivateAPIVersion, _ColorSyncProfileContainsSupportedCICP, _ColorSyncProfileContainsTag, _ColorSyncProfileCopyASCIIDescriptionString, _ColorSyncProfileCopyData, _ColorSyncProfileCopyDescriptionString, - _ColorSyncProfileCopyHeader, _ColorSyncProfileCopyLocalizedDescriptionString, - _ColorSyncProfileCopyLocalizedStringDictionary, _ColorSyncProfileCopyTag, - _ColorSyncProfileCopyTagSignatures, _ColorSyncProfileCreate, + _ColorSyncProfileCopyFlexGTCInfo, _ColorSyncProfileCopyHeader, + _ColorSyncProfileCopyLocalizedDescriptionString, _ColorSyncProfileCopyLocalizedStringDictionary, + _ColorSyncProfileCopyTag, _ColorSyncProfileCopyTagSignatures, + _ColorSyncProfileCreate, _ColorSyncProfileCreateCopyWithFlexGTC, + _ColorSyncProfileCreateCopyWithLUTBasedLumaScaling, _ColorSyncProfileCreateImmutableCopy, _ColorSyncProfileCreateLink, _ColorSyncProfileCreateMutable, _ColorSyncProfileCreateMutableCopy, _ColorSyncProfileCreateSanitizedCopy, _ColorSyncProfileCreateWithName, _ColorSyncProfileCreateWithURL, @@ -53,7 +55,8 @@ exports: _ColorSyncTRCGetProperties, _ColorSyncTRCGetTypeID, _ColorSyncTransformConvert, _ColorSyncTransformCopyProperty, _ColorSyncTransformCreate, _ColorSyncTransformCreateWithName, _ColorSyncTransformDumpStepsToFile, - _ColorSyncTransformGetProfileSequence, _ColorSyncTransformGetTypeID, + _ColorSyncTransformGetDstComponentCount, _ColorSyncTransformGetProfileSequence, + _ColorSyncTransformGetSrcComponentCount, _ColorSyncTransformGetTypeID, _ColorSyncTransformIterate, _ColorSyncTransformSetProperty, _ColorSyncTransformShowSteps, _ColorSyncVerifyAdobeRGB, _ColorSyncVerifyAdobeRGBData, _ColorSyncVerifyCoreVideo709, _ColorSyncVerifyCoreVideo709Data, @@ -65,10 +68,12 @@ exports: _ColorSyncVerifySRGB, _ColorSyncVerifySRGBData, _kColorSyncACESCGLinearProfile, _kColorSyncAdobeRGB1998Profile, _kColorSyncBadDescription, _kColorSyncBestQuality, _kColorSyncBlackPointCompensation, + _kColorSyncBluFlexGTCNodeTable, _kColorSyncBluGainMapParams, _kColorSyncConversion1DLut, _kColorSyncConversion3DLut, _kColorSyncConversionBPC, _kColorSyncConversionChannelID, _kColorSyncConversionEXRToneMappingGamma, - _kColorSyncConversionGridPoints, _kColorSyncConversionInpChan, - _kColorSyncConversionMatrix, _kColorSyncConversionNDLut, _kColorSyncConversionOutChan, + _kColorSyncConversionFlexGlobalToneMappingCurve, _kColorSyncConversionGridPoints, + _kColorSyncConversionInpChan, _kColorSyncConversionMatrix, + _kColorSyncConversionNDLut, _kColorSyncConversionOutChan, _kColorSyncConversionParamCurve0, _kColorSyncConversionParamCurve1, _kColorSyncConversionParamCurve2, _kColorSyncConversionParamCurve3, _kColorSyncConversionParamCurve4, _kColorSyncConversionParamHLGInvOETF, @@ -79,22 +84,29 @@ exports: _kColorSyncDCIP3Profile, _kColorSyncDevices, _kColorSyncDisplayP3Profile, _kColorSyncDisplayP3_709OETFProfile, _kColorSyncDisplayP3_HLGProfile, _kColorSyncDisplayP3_PQProfile, _kColorSyncDraftQuality, _kColorSyncExtendedRange, - _kColorSyncFixedPointRange, _kColorSyncGenericCMYKProfile, + _kColorSyncFixedPointRange, _kColorSyncFlexGTCNodeSlope, _kColorSyncFlexGTCNodeX, + _kColorSyncFlexGTCNodeY, _kColorSyncGUID, _kColorSyncGainMapAlternateConst, + _kColorSyncGainMapAlternateHeadroom, _kColorSyncGainMapBaselineConst, + _kColorSyncGainMapBaselineHeadroom, _kColorSyncGainMapGamma, + _kColorSyncGainMapMax, _kColorSyncGainMapMin, _kColorSyncGenericCMYKProfile, _kColorSyncGenericGrayGamma22Profile, _kColorSyncGenericGrayProfile, _kColorSyncGenericLabProfile, _kColorSyncGenericRGBProfile, - _kColorSyncGenericXYZProfile, _kColorSyncHDRDerivative, _kColorSyncHLGDerivative, + _kColorSyncGenericXYZProfile, _kColorSyncGrnFlexGTCNodeTable, + _kColorSyncGrnGainMapParams, _kColorSyncHDRDerivative, _kColorSyncHLGDerivative, _kColorSyncITUR2020Profile, _kColorSyncITUR2020_HLGProfile, _kColorSyncITUR2020_PQProfile, _kColorSyncITUR2020_sRGBGammaProfile, _kColorSyncITUR2100_HLGProfile, _kColorSyncITUR2100_PQProfile, _kColorSyncITUR709Profile, _kColorSyncITUR709_HLGProfile, _kColorSyncITUR709_PQProfile, _kColorSyncMaxProfileDataSize, - _kColorSyncMissingDescription, _kColorSyncNormalQuality, _kColorSyncPQDerivative, - _kColorSyncPerceptualStandardRGBProfile, _kColorSyncProfile, - _kColorSyncProfileASCIIDescription, _kColorSyncProfileCacheSeed, - _kColorSyncProfileClass, _kColorSyncProfileColorSpace, _kColorSyncProfileDescription, - _kColorSyncProfileHeader, _kColorSyncProfileIsValid, _kColorSyncProfileMD5Digest, - _kColorSyncProfilePCS, _kColorSyncProfileURL, _kColorSyncROMMRGBProfile, - _kColorSyncRenderingIntent, _kColorSyncRenderingIntentAbsolute, + _kColorSyncMissingDescription, _kColorSyncMonoFlexGTCNodeTable, + _kColorSyncMonoGainMapParams, _kColorSyncNormalQuality, _kColorSyncPQDerivative, + _kColorSyncPerceptualStandardRGBProfile, _kColorSyncPostGainMapCICP, + _kColorSyncPreGainMapCICP, _kColorSyncProfile, _kColorSyncProfileASCIIDescription, + _kColorSyncProfileCacheSeed, _kColorSyncProfileClass, _kColorSyncProfileColorSpace, + _kColorSyncProfileDescription, _kColorSyncProfileHeader, _kColorSyncProfileIsValid, + _kColorSyncProfileMD5Digest, _kColorSyncProfilePCS, _kColorSyncProfileURL, + _kColorSyncROMMRGBProfile, _kColorSyncRedFlexGTCNodeTable, + _kColorSyncRedGainMapParams, _kColorSyncRenderingIntent, _kColorSyncRenderingIntentAbsolute, _kColorSyncRenderingIntentPerceptual, _kColorSyncRenderingIntentRelative, _kColorSyncRenderingIntentSaturation, _kColorSyncRenderingIntentUseProfileHeader, _kColorSyncSRGBProfile, _kColorSyncSigAToB0Tag, _kColorSyncSigAToB1Tag, @@ -126,8 +138,8 @@ exports: _kColorSyncTransformPureGammaOriginalTRC, _kColorSyncTransformSceneLinearPCSToDevice, _kColorSyncTransformSceneLinearToPCS, _kColorSyncTransformSimplifiedConversionData, _kColorSyncTransformSrcSpace, _kColorSyncTransformTRCSize, - _kColorSyncTransformTag, _kColorSyncUseBT1886ForCoreVideoGamma, - _kColorSyncWebSafeColorsProfile ] + _kColorSyncTransformTag, _kColorSyncTransformUseITU709OETF, + _kColorSyncUseBT1886ForCoreVideoGamma, _kColorSyncWebSafeColorsProfile ] - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] symbols: [ _CGDisplayCreateUUIDFromDisplayID, _CGDisplayGetDisplayIDFromUUID, _CMProfileFromColorSyncProfile, _ColorSyncCMMCopyCMMIdentifier, diff --git a/Frameworks/ColorSync.framework/Versions/A/Headers/ColorSync.h b/Frameworks/ColorSync.framework/Versions/A/Headers/ColorSync.h index 6ebab99d..d11a4a81 100644 --- a/Frameworks/ColorSync.framework/Versions/A/Headers/ColorSync.h +++ b/Frameworks/ColorSync.framework/Versions/A/Headers/ColorSync.h @@ -13,7 +13,8 @@ #include #include -#define COLORSYNC_API_VERSION 0x00010000L // 1.0.0 BCD; uint32_t BCD = ((uint32_t)major << 16) | (minor << 8) | (dot & 0xFF); +#define COLORSYNC_API_VERSION 0x0F000005L +// 15.0.0.2 BCD; uint32_t BCD = ((uint32_t)majorOS (= << 24) | (minorOS << 16) | (dotOS << 8) | (API version & 0xFF); CSEXTERN uint32_t ColorSyncAPIVersion(void); diff --git a/Frameworks/ColorSync.framework/Versions/A/Headers/ColorSyncTransform.h b/Frameworks/ColorSync.framework/Versions/A/Headers/ColorSyncTransform.h index 00199665..923f8411 100644 --- a/Frameworks/ColorSync.framework/Versions/A/Headers/ColorSyncTransform.h +++ b/Frameworks/ColorSync.framework/Versions/A/Headers/ColorSyncTransform.h @@ -223,6 +223,7 @@ CSEXTERN CFStringRef kColorSyncTransformSimplifiedConversionData CS_AVAILABLE_ST CSEXTERN CFStringRef kColorSyncTransformParametricConversionData CS_AVAILABLE_STARTING(10.4, 16.0); /* CFSTR("com.apple.cmm.ParametricConversion") */ CSEXTERN CFStringRef kColorSyncTransformProfileSequnce CS_AVAILABLE_STARTING(11.0, 16.0); /* CFSTR("com.apple.cmm.ProfileSequnce") */ +CSEXTERN CFStringRef kColorSyncTransformUseITU709OETF CS_AVAILABLE_STARTING(15.0, 18.0); /* CFSTR("com.apple.cmm.TransformUseITU709OETF") */ /* * Matrix: represented as a CFArray of three CFArrays of four CFNumbers (Float32) * each, performin the following matrix operation diff --git a/Frameworks/CoreAudio.framework/Versions/A/CoreAudio.tbd b/Frameworks/CoreAudio.framework/Versions/A/CoreAudio.tbd index aed81a3c..122a6ccf 100644 --- a/Frameworks/CoreAudio.framework/Versions/A/CoreAudio.tbd +++ b/Frameworks/CoreAudio.framework/Versions/A/CoreAudio.tbd @@ -40,19 +40,22 @@ exports: __ZN4AMCP11Null_DriverC2ERNS_14System_ContextE, __ZN4AMCP11Null_DriverD0Ev, __ZN4AMCP11Null_DriverD1Ev, __ZN4AMCP11Null_DriverD2Ev, __ZN4AMCP13Feature_Flags11run_new_halEv, __ZN4AMCP13Feature_Flags12host_asp_oopEv, __ZN4AMCP13Feature_Flags14run_hybrid_halEv, - __ZN4AMCP13Feature_Flags15set_run_new_halEb, __ZN4AMCP13Feature_Flags16load_adm_dsp_libEv, - __ZN4AMCP13Feature_Flags16set_host_asp_oopEb, __ZN4AMCP13Feature_Flags17event_link_oop_ioEv, - __ZN4AMCP13Feature_Flags18set_run_hybrid_halEb, __ZN4AMCP13Feature_Flags19collect_io_perfdataEv, - __ZN4AMCP13Feature_Flags19force_mock_dsp_typeEv, __ZN4AMCP13Feature_Flags20internal_drivers_oopEv, - __ZN4AMCP13Feature_Flags20set_load_adm_dsp_libEb, __ZN4AMCP13Feature_Flags21allow_adm_dsp_spatialEv, - __ZN4AMCP13Feature_Flags21set_event_link_oop_ioEb, __ZN4AMCP13Feature_Flags22allow_mcp_and_hal_coexEv, - __ZN4AMCP13Feature_Flags22enable_isolated_bufferEv, __ZN4AMCP13Feature_Flags23set_collect_io_perfdataEb, - __ZN4AMCP13Feature_Flags23set_force_mock_dsp_typeEb, __ZN4AMCP13Feature_Flags24hal_test_mode_is_enabledEv, + __ZN4AMCP13Feature_Flags15set_run_new_halEb, __ZN4AMCP13Feature_Flags16set_host_asp_oopEb, + __ZN4AMCP13Feature_Flags17event_link_oop_ioEv, __ZN4AMCP13Feature_Flags18set_run_hybrid_halEb, + __ZN4AMCP13Feature_Flags19collect_io_perfdataEv, __ZN4AMCP13Feature_Flags19force_mock_dsp_typeEv, + __ZN4AMCP13Feature_Flags20internal_drivers_oopEv, __ZN4AMCP13Feature_Flags21allow_adm_dsp_spatialEv, + __ZN4AMCP13Feature_Flags21set_event_link_oop_ioEb, __ZN4AMCP13Feature_Flags22allow_adm_dsp_offloadsEv, + __ZN4AMCP13Feature_Flags22allow_mcp_and_hal_coexEv, __ZN4AMCP13Feature_Flags22use_mcp_coloring_mixerEv, + __ZN4AMCP13Feature_Flags23set_collect_io_perfdataEb, __ZN4AMCP13Feature_Flags23set_force_mock_dsp_typeEb, __ZN4AMCP13Feature_Flags24set_internal_drivers_oopEb, __ZN4AMCP13Feature_Flags25allow_smart_routing_macosEv, - __ZN4AMCP13Feature_Flags25set_allow_adm_dsp_spatialEb, __ZN4AMCP13Feature_Flags26set_allow_mcp_and_hal_coexEb, - __ZN4AMCP13Feature_Flags26set_enable_isolated_bufferEb, __ZN4AMCP13Feature_Flags29allow_adm_dsp_voice_detectionEv, + __ZN4AMCP13Feature_Flags25set_allow_adm_dsp_spatialEb, __ZN4AMCP13Feature_Flags26set_allow_adm_dsp_offloadsEb, + __ZN4AMCP13Feature_Flags26set_allow_mcp_and_hal_coexEb, __ZN4AMCP13Feature_Flags26set_use_mcp_coloring_mixerEb, + __ZN4AMCP13Feature_Flags29allow_client_io_timeout_macosEv, __ZN4AMCP13Feature_Flags29set_allow_smart_routing_macosEb, - __ZN4AMCP13Feature_Flags33set_allow_adm_dsp_voice_detectionEb, + __ZN4AMCP13Feature_Flags30allow_adm_dsp_graph_parametersEv, + __ZN4AMCP13Feature_Flags33set_allow_client_io_timeout_macosEb, + __ZN4AMCP13Feature_Flags34set_allow_adm_dsp_graph_parametersEb, + __ZN4AMCP13Feature_Flags36allow_unified_device_engine_replacerEv, __ZN4AMCP13Level_Control16set_scalar_valueEf, __ZN4AMCP13Level_Control17set_decibel_valueEf, __ZN4AMCP13Level_Control25set_scalar_value_and_waitEf, __ZN4AMCP13Level_Control26set_decibel_value_and_waitEf, __ZN4AMCP13Level_ControlC1ERKNS_6DeviceEjjj, __ZN4AMCP13Level_ControlC1ERNS_14System_ContextEj, @@ -301,10 +304,10 @@ exports: __ZNK4AMCP6Object8get_iconEv, __ZNK4AMCP6Object8get_nameERKN10applesauce2CF9StringRefE, __ZNK4AMCP6Object8get_nameEv, __ZNK4AMCP6Object9get_ownerEv, __ZNK4AMCP6Stream11get_latencyEv, __ZNK4AMCP6Stream13get_directionEv, - __ZNK4AMCP6Stream13is_tap_streamEv, __ZNK4AMCP6Stream17get_terminal_typeEv, - __ZNK4AMCP6Stream18get_current_formatEv, __ZNK4AMCP6Stream18set_current_formatERKN2CA17StreamDescriptionE, - __ZNK4AMCP6Stream20get_starting_channelEv, __ZNK4AMCP6Stream25get_available_format_listEv, - __ZNK4AMCP6Stream27set_current_format_and_waitERKN2CA17StreamDescriptionE, + __ZNK4AMCP6Stream17get_terminal_typeEv, __ZNK4AMCP6Stream18get_current_formatEv, + __ZNK4AMCP6Stream18set_current_formatERKN2CA17StreamDescriptionE, + __ZNK4AMCP6Stream19is_reference_streamEv, __ZNK4AMCP6Stream20get_starting_channelEv, + __ZNK4AMCP6Stream25get_available_format_listEv, __ZNK4AMCP6Stream27set_current_format_and_waitERKN2CA17StreamDescriptionE, __ZNK4AMCP6System12get_box_listEv, __ZNK4AMCP6System13get_node_listEv, __ZNK4AMCP6System14get_clock_listEv, __ZNK4AMCP6System15get_device_listEv, __ZNK4AMCP6System15get_driver_listEv, __ZNK4AMCP6System19get_io_context_listEv, diff --git a/Frameworks/CoreAudio.framework/Versions/A/Headers/AudioDriverPlugIn.h b/Frameworks/CoreAudio.framework/Versions/A/Headers/AudioDriverPlugIn.h index 11a96142..62a27a33 100644 --- a/Frameworks/CoreAudio.framework/Versions/A/Headers/AudioDriverPlugIn.h +++ b/Frameworks/CoreAudio.framework/Versions/A/Headers/AudioDriverPlugIn.h @@ -142,7 +142,7 @@ AudioDriverPlugInOpen(AudioDriverPlugInHostInfo* inHostInfo); @function AudioDriverPlugInClose @abstract Closes an instance of the driver plug-in. @param inDevice - The AudioDeviceID that describes the device who's plug-in instance is being + The AudioDeviceID that describes the device whose plug-in instance is being closed. @result An OSStatus indicating success or failure. */ @@ -251,7 +251,7 @@ AudioDriverPlugInDeviceSetProperty( AudioDeviceID inDevice @function AudioDriverPlugInStreamGetPropertyInfo @abstract Retrieve information about the given property of an AudioStream. @param inDevice - The AudioDevice who's stream is being queried. + The AudioDevice whose stream is being queried. @param inIOAudioStream The IOAudioStream to query. @param inChannel @@ -283,7 +283,7 @@ AudioDriverPlugInStreamGetPropertyInfo( AudioDeviceID inDevice, @abstract Queries an the AudioStream object to get the data of the given property and places it in the provided buffer. @param inDevice - The AudioDevice who's stream is being queried. + The AudioDevice whose stream is being queried. @param inIOAudioStream The IOAudioStream to query. @param inChannel @@ -316,7 +316,7 @@ AudioDriverPlugInStreamGetProperty( AudioDeviceID inDevice, HAL has called the listeners as many properties values are changed asynchronously. @param inDevice - The AudioDevice who's stream is being changed. + The AudioDevice whose stream is being changed. @param inIOAudioStream The IOAudioStream to change. @param inWhen diff --git a/Frameworks/CoreAudio.framework/Versions/A/Headers/AudioHardware.h b/Frameworks/CoreAudio.framework/Versions/A/Headers/AudioHardware.h index 88b9beaa..b141da91 100644 --- a/Frameworks/CoreAudio.framework/Versions/A/Headers/AudioHardware.h +++ b/Frameworks/CoreAudio.framework/Versions/A/Headers/AudioHardware.h @@ -1948,7 +1948,8 @@ CF_ENUM(AudioClassID) responsible for releasing the returned CFObject. @constant kAudioProcessPropertyDevices An array of AudioObjectIDs that represent the devices currently used by the - process for output. + process for input or used by the process for output. The scope will select + the input or output device list. @constant kAudioProcessPropertyIsRunning A UInt32 where a value of 0 indicates that there is not audio IO in progress in the process, and a value of 1 indicates that there is audio IO in progress @@ -1962,10 +1963,6 @@ CF_ENUM(AudioClassID) A UInt32 where a value of 0 indicates that the process is not running any IO or there is not any active output streams, and a value of 1 indicates that the process is running IO and there is at least one active output stream. - @constant kAudioProcessPropertyIsMuted - A UInt32 where a value of 0 indicates that the process is playing audio - through its selected audio devices and a value of 1 indicates that a process - is currently muted by an audio tap. */ CF_ENUM(AudioObjectPropertySelector) { diff --git a/Frameworks/CoreAudio.framework/Versions/A/Headers/CATapDescription.h b/Frameworks/CoreAudio.framework/Versions/A/Headers/CATapDescription.h index 25845eb5..17d95b2a 100644 --- a/Frameworks/CoreAudio.framework/Versions/A/Headers/CATapDescription.h +++ b/Frameworks/CoreAudio.framework/Versions/A/Headers/CATapDescription.h @@ -89,13 +89,27 @@ API_AVAILABLE(macos(12.0), ios(15.0)) An NSArray of NSNumbers where each NSNumber holds an AudioObjectID of the process object to exclude from the tap. All other processes that output audio will be included in the tap. @param deviceUID - The device UID of the output device who's audio will be captured + The device UID of the output device whose audio will be captured @param stream - NSInteger that represents the index of the stream on the device who's audio will be captured. The format of the tap + NSInteger that represents the index of the stream on the device whose audio will be captured. The format of the tap will match the format of this stream. */ - (instancetype) initWithProcesses:(NSArray*)processesObjectIDsToIncludeInTap andDeviceUID:(NSString*) deviceUID withStream:(NSInteger) stream NS_REFINED_FOR_SWIFT; +/*! @method initExcludingProcesses:andDeviceUID:withStreams + @abstract + Mix all process audio streams destined for the selected device stream except the given processes + @param processesObjectIDsToExcludeFromTap + An NSArray of NSNumbers where each NSNumber holds an AudioObjectID of the process object to exclude from the tap. + All other processes that output audio will be included in the tap. + @param deviceUID + The device UID of the output device whose audio will be captured + @param stream + NSInteger that represents the index of the stream on the device whose audio will be captured. The format of the tap + will match the format of this stream. + */ +- (instancetype) initExcludingProcesses:(NSArray*)processesObjectIDsToExcludeFromTap andDeviceUID:(NSString*) deviceUID withStream:(NSInteger) stream NS_REFINED_FOR_SWIFT; + /*! @property name @abstract Human readable name of this tap. diff --git a/Frameworks/CoreAudioTypes.framework/Versions/A/Headers/CoreAudioBaseTypes.h b/Frameworks/CoreAudioTypes.framework/Versions/A/Headers/CoreAudioBaseTypes.h index dc605ec9..467e1f3a 100644 --- a/Frameworks/CoreAudioTypes.framework/Versions/A/Headers/CoreAudioBaseTypes.h +++ b/Frameworks/CoreAudioTypes.framework/Versions/A/Headers/CoreAudioBaseTypes.h @@ -366,6 +366,8 @@ static const Float64 kAudioStreamAnyRate = 0.0; Free Lossless Audio Codec, the flags indicate the bit depth of the source material. @constant kAudioFormatOpus Opus codec, has no flags. + @constant kAudioFormatAPAC + Apple Positional Audio Codec, has no flags. */ CF_ENUM(AudioFormatID) { @@ -408,7 +410,8 @@ CF_ENUM(AudioFormatID) kAudioFormatAES3 = 'aes3', kAudioFormatEnhancedAC3 = 'ec-3', kAudioFormatFLAC = 'flac', - kAudioFormatOpus = 'opus' + kAudioFormatOpus = 'opus', + kAudioFormatAPAC = 'apac', }; /*! @@ -1429,6 +1432,11 @@ CF_ENUM(AudioChannelLayoutTag) kAudioChannelLayoutTag_Ogg_6_1 = (214U<<16) | 7, ///< 7 channels, L C R Ls Rs Cs LFE kAudioChannelLayoutTag_Ogg_7_1 = (215U<<16) | 8, ///< 8 channels, L C R Ls Rs Rls Rrs LFE + kAudioChannelLayoutTag_MPEG_5_0_E = (216U<<16) | 5, ///< 5 channels, L R Rls Rrs C + kAudioChannelLayoutTag_MPEG_5_1_E = (217U<<16) | 6, ///< 6 channels, L R Rls Rrs C LFE + kAudioChannelLayoutTag_MPEG_6_1_B = (218U<<16) | 7, ///< 7 channels, L R Ls Rs C Cs LFE + kAudioChannelLayoutTag_MPEG_7_1_D = (219U<<16) | 8, ///< 8 channels, L R Rls Rrs Ls Rs C LFE + kAudioChannelLayoutTag_BeginReserved = 0xF0000000, ///< Channel layout tag values in this range are reserved for internal use kAudioChannelLayoutTag_EndReserved = 0xFFFEFFFF, diff --git a/Frameworks/CoreData.framework/Versions/A/CoreData.tbd b/Frameworks/CoreData.framework/Versions/A/CoreData.tbd index 938702c5..5211a108 100644 --- a/Frameworks/CoreData.framework/Versions/A/CoreData.tbd +++ b/Frameworks/CoreData.framework/Versions/A/CoreData.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreData.framework/Versions/A/CoreData' -current-version: 1338 +current-version: 1447 swift-abi-version: 7 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, @@ -1061,276 +1061,344 @@ exports: '$ld$previous$@rpath/libswiftCoreData.dylib$$1$10.9$10.15$_$sSo28NSPersistentStoreCoordinatorC8CoreDataE7performyxxyKcYaKlFTu$', '$ld$previous$@rpath/libswiftCoreData.dylib$$1$10.9$10.15$_$sSo31NSCoreDataCoreSpotlightDelegateC0cB0E26indexDidUpdateNotificationSo18NSNotificationNameavgZ$', '$ld$previous$@rpath/libswiftCoreData.dylib$$1$10.9$10.15$_swift_FORCE_LOAD_$', - _NSAddedPersistentStoresKey, _NSAffectedObjectsErrorKey, _NSAffectedStoresErrorKey, - _NSBinaryStoreInsecureDecodingCompatibilityOption, _NSBinaryStoreSecureDecodingClasses, - _NSBinaryStoreType, _NSCKRecordIDAttributeName, _NSCKRecordSystemFieldsAttributeName, - _NSCloudKitMirroringDelegateDidResetSyncNotificationName, - _NSCloudKitMirroringDelegateIgnoredPropertyKey, _NSCloudKitMirroringDelegateResetSyncReasonKey, - _NSCloudKitMirroringDelegateWillResetSyncNotificationName, - _NSCoreDataCoreSpotlightDelegateIndexDidUpdateNotification, - _NSCoreDataCoreSpotlightExporter, _NSCoreDataVersionNumber, - _NSDeletedObjectIDsKey, _NSDeletedObjectsKey, _NSDetailedErrorsKey, - _NSEntityRenamingShouldRebaseKey, _NSErrorMergePolicy, _NSFetchRequestLimitSubstitutionKey, - _NSFetchRequestOffsetSubstitutionKey, _NSIgnorePersistentStoreVersioningOption, - _NSInMemoryStoreType, _NSInferMappingModelAutomaticallyOption, - _NSInsertedObjectIDsKey, _NSInsertedObjectsKey, _NSInvalidatedAllObjectsKey, - _NSInvalidatedObjectIDsKey, _NSInvalidatedObjectsKey, _NSManagedObjectContextDidMergeChangesObjectIDsNotification, - _NSManagedObjectContextDidSaveNotification, _NSManagedObjectContextDidSaveObjectIDsNotification, - _NSManagedObjectContextKey, _NSManagedObjectContextObjectsDidChangeNotification, - _NSManagedObjectContextQueryGenerationKey, _NSManagedObjectContextTransactionAuthorKey, - _NSManagedObjectContextWillSaveNotification, _NSMergeByPropertyObjectTrumpMergePolicy, - _NSMergeByPropertyStoreTrumpMergePolicy, _NSMigratePersistentStoresAutomaticallyOption, - _NSMigrationAllowTypeTransformationKey, _NSMigrationDestinationObjectKey, - _NSMigrationEntityMappingKey, _NSMigrationEntityPolicyKey, - _NSMigrationManagerKey, _NSMigrationPropertyMappingKey, _NSMigrationSourceObjectKey, - _NSOverwriteMergePolicy, _NSPersistentCloudKitContainerEncryptedAttributeKey, - _NSPersistentCloudKitContainerEventChangedNotification, _NSPersistentCloudKitContainerEventUserInfoKey, - _NSPersistentHistoryAllowPartialHistoryMigration, _NSPersistentHistoryTokenKey, - _NSPersistentHistoryTombstoneAttributes, _NSPersistentHistoryTrackingEntitiesToExclude, - _NSPersistentHistoryTrackingEntitiesToInclude, _NSPersistentHistoryTrackingExcludeUnmodifiedPropertiesForBatchUpdate, - _NSPersistentHistoryTrackingKey, _NSPersistentHistoryUseContextObjectsForDeletes, - _NSPersistentStoreConnectionPoolMaxSizeKey, _NSPersistentStoreCoordinatorResourceBundlesForMigration, - _NSPersistentStoreCoordinatorStoresDidChangeNotification, - _NSPersistentStoreCoordinatorStoresWillChangeNotification, - _NSPersistentStoreCoordinatorWillRemoveStoreNotification, - _NSPersistentStoreDeferredLightweightMigrationOptionKey, _NSPersistentStoreDidImportUbiquitousContentChangesNotification, - _NSPersistentStoreFileProtectionKey, _NSPersistentStoreForceDestroyOption, - _NSPersistentStoreForceLightweightMigrationOption, _NSPersistentStoreMirroringDelegateOptionKey, - _NSPersistentStoreMirroringOptionsKey, _NSPersistentStoreOSCompatibility, - _NSPersistentStoreOrderKeyUpdateNotification, _NSPersistentStoreRebuildFromUbiquitousContentOption, - _NSPersistentStoreRemoteChangeNotification, _NSPersistentStoreRemoteChangeNotificationOptionKey, - _NSPersistentStoreRemoteChangeNotificationPostOptionKey, _NSPersistentStoreRemoveUbiquitousMetadataOption, - _NSPersistentStoreSaveConflictsErrorKey, _NSPersistentStoreServiceConfigurationOptionKey, - _NSPersistentStoreStagedMigrationManagerOptionKey, _NSPersistentStoreTimeoutOption, - _NSPersistentStoreTrackIndexUseOptionKey, _NSPersistentStoreTypeKey, - _NSPersistentStoreURLKey, _NSPersistentStoreUbiquitousContainerIdentifierKey, - _NSPersistentStoreUbiquitousContentNameKey, _NSPersistentStoreUbiquitousContentURLKey, - _NSPersistentStoreUbiquitousPeerTokenOption, _NSPersistentStoreUbiquitousTransitionTypeKey, - _NSPersistentStoreUnlinkDestroyOption, _NSReadOnlyPersistentStoreOption, - _NSRefreshedObjectIDsKey, _NSRefreshedObjectsKey, _NSRelationshipDescriptionOrderKeyIndexOption, - _NSRemotePersistentStoreDidChangeNotification, _NSRemovedPersistentStoresKey, - _NSRollbackMergePolicy, _NSSQLiteAnalyzeOption, _NSSQLiteErrorDomain, - _NSSQLiteManualVacuumOption, _NSSQLitePersistWALOption, _NSSQLitePragmasOption, - _NSSQLiteSEEKeychainItemOption, _NSSQLiteStoreType, _NSStoreModelVersionHashesKey, - _NSStoreModelVersionIdentifiersKey, _NSStoreTypeKey, _NSStoreUUIDKey, - _NSUUIDChangedPersistentStoresKey, _NSUpdatedObjectIDsKey, - _NSUpdatedObjectsKey, _NSValidationKeyErrorKey, _NSValidationObjectErrorKey, - _NSValidationPredicateErrorKey, _NSValidationValueErrorKey, - _NSXPCStoreAnonymousListenerKey, _NSXPCStoreDaemonizeKey, - _NSXPCStoreEntitlementNamesKey, _NSXPCStorePostUpdateNotificationsKey, - _NSXPCStoreServerEndpointFactoryKey, _NSXPCStoreServiceNameKey, - _NSXPCStoreSkipModelCheckKey, _NSXPCStoreSkipRetryWaitKey, - _NSXPCStoreType, __NSBackgroundThreadConfinementConcurrencyType, - __NSCoreDataLog, __NSManagedObjectContextObjectsDidChangePrivateNotification, - __NSPersistentStoreCoordinatorStoresDidChangePrivateNotification, - __NSTriggerModifiedObjectIDsKey, __NSTriggerModifiedObjectsKey, - '__swift_FORCE_LOAD_$_swiftCoreData' ] - objc-classes: [ NSAsynchronousFetchRequest, NSAsynchronousFetchResult, NSAtomicStore, - NSAtomicStoreCacheNode, NSAttributeDescription, NSBatchDeleteRequest, - NSBatchDeleteResult, NSBatchInsertRequest, NSBatchInsertResult, - NSBatchUpdateRequest, NSBatchUpdateResult, NSCachingFetchRequest, - NSCloudKitMirroringDelegate, NSCloudKitMirroringDelegateOptions, - NSCloudKitMirroringDelegateSerializationRequest, NSCloudKitMirroringDelegateSerializationRequestResult, - NSCloudKitMirroringExportProgressRequest, NSCloudKitMirroringExportProgressResult, - NSCloudKitMirroringExportRequest, NSCloudKitMirroringFetchRecordsRequest, - NSCloudKitMirroringFetchRecordsResult, NSCloudKitMirroringImportRequest, - NSCloudKitMirroringInitializeSchemaRequest, NSCloudKitMirroringRequest, - NSCloudKitMirroringRequestOptions, NSCloudKitMirroringResetMetadataRequest, - NSCloudKitMirroringResetZoneRequest, NSCloudKitMirroringResult, - NSCompositeAttributeDescription, NSConstraintConflict, NSCoreDataCoreSpotlightDelegate, - NSCustomMigrationStage, NSDerivedAttributeDescription, NSEntityDescription, - NSEntityMapping, NSEntityMigrationPolicy, NSExpressionDescription, - NSFetchIndexDescription, NSFetchIndexElementDescription, NSFetchRequest, - NSFetchRequestExpression, NSFetchedPropertyDescription, NSFetchedResultsController, - NSIncrementalStore, NSIncrementalStoreNode, NSKnownKeysDictionary, - NSKnownKeysMappingStrategy, NSLightweightMigrationStage, NSManagedImmutableObject, - NSManagedObject, NSManagedObjectContext, NSManagedObjectID, - NSManagedObjectModel, NSManagedObjectModelReference, NSMappingModel, - NSMergeConflict, NSMergePolicy, NSMigrationManager, NSMigrationStage, - NSPersistentCloudKitContainer, NSPersistentCloudKitContainerActivityVoucher, - NSPersistentCloudKitContainerEvent, NSPersistentCloudKitContainerEventRequest, - NSPersistentCloudKitContainerEventResult, NSPersistentCloudKitContainerOptions, - NSPersistentContainer, NSPersistentHistoryChange, NSPersistentHistoryChangeRequest, - NSPersistentHistoryResult, NSPersistentHistoryToken, NSPersistentHistoryTransaction, - NSPersistentStore, NSPersistentStoreAsynchronousResult, NSPersistentStoreCoordinator, - NSPersistentStoreDescription, NSPersistentStoreRequest, NSPersistentStoreResult, - NSPropertyDescription, NSPropertyMapping, NSQueryGenerationToken, - NSRelationshipDescription, NSSQLiteDatabaseStatistics, NSSQLiteIndexStatistics, - NSSQLiteIndexStatisticsRequest, NSSQLiteIndexStatisticsResult, - NSSaveChangesRequest, NSStagedMigrationManager, NSXPCStore, - NSXPCStoreConnectionInfo, NSXPCStoreServer, NSXPCStoreServerConnectionContext, - NSXPCStoreServerRequestHandlingPolicy, _NSCoreDataInternal, - _NSPersistenceUtilities ] - - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] - symbols: [ '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE018managedObjectMergeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE018managedObjectMergeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE018managedObjectMergeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE018migrationCancelledC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE018migrationCancelledC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE019persistentStoreOpenC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE019persistentStoreOpenC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE019persistentStoreSaveC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE019persistentStoreSaveC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE020externalRecordImportC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE020externalRecordImportC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE020inferredMappingModelC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE020inferredMappingModelC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE021entityMigrationPolicyC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE021entityMigrationPolicyC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE021validationDateTooLateC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE021validationDateTooLateC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE021validationDateTooSoonC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE021validationDateTooSoonC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE021validationInvalidDateC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE021validationInvalidDateC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE022persistentStoreTimeoutC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE022persistentStoreTimeoutC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE023managedObjectValidationC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE023managedObjectValidationC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE023validationStringTooLongC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE023validationStringTooLongC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE024persistentStoreOperationC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE024persistentStoreOperationC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE024validationMultipleErrorsC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE024validationMultipleErrorsC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE024validationNumberTooLargeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE024validationNumberTooLargeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE024validationNumberTooSmallC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE024validationNumberTooSmallC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE024validationStringTooShortC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE024validationStringTooShortC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE026persistentStoreInvalidTypeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE026persistentStoreInvalidTypeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE027managedObjectContextLockingC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE027managedObjectContextLockingC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE027migrationManagerSourceStoreC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE027migrationManagerSourceStoreC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE027migrationMissingSourceModelC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE027migrationMissingSourceModelC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE027persistentStoreTypeMismatchC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE027persistentStoreTypeMismatchC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE028managedObjectConstraintMergeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE028managedObjectConstraintMergeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE028migrationMissingMappingModelC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE028migrationMissingMappingModelC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE028persistentStoreSaveConflictsC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE028persistentStoreSaveConflictsC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE029persistentStoreIncompleteSaveC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE029persistentStoreIncompleteSaveC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE031validationStringPatternMatchingC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE031validationStringPatternMatchingC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE032migrationManagerDestinationStoreC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE032migrationManagerDestinationStoreC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE033managedObjectExternalRelationshipC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE033managedObjectExternalRelationshipC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE033managedObjectReferentialIntegrityC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE033managedObjectReferentialIntegrityC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE033persistentStoreCoordinatorLockingC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE033persistentStoreCoordinatorLockingC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE033persistentStoreIncompatibleSchemaC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE033persistentStoreIncompatibleSchemaC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE034validationMissingMandatoryPropertyC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE034validationMissingMandatoryPropertyC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE034validationRelationshipDeniedDeleteC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE034validationRelationshipDeniedDeleteC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE037persistentStoreUnsupportedRequestTypeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE037persistentStoreUnsupportedRequestTypeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE038persistentStoreIncompatibleVersionHashC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE038persistentStoreIncompatibleVersionHashC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE039validationRelationshipLacksMinimumCountC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE039validationRelationshipLacksMinimumCountC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE041validationRelationshipExceedsMaximumCountC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE041validationRelationshipExceedsMaximumCountC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE04coreF0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE04coreF0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE04corefC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE04corefC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE06sqliteC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE06sqliteC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE09migrationC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE09migrationC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE18managedObjectMergeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE18managedObjectMergeAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE18migrationCancelledAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE18migrationCancelledAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE19persistentStoreOpenAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE19persistentStoreOpenAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE19persistentStoreSaveAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE19persistentStoreSaveAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE20externalRecordImportAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE20externalRecordImportAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE20inferredMappingModelAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE20inferredMappingModelAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE21entityMigrationPolicyAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE21entityMigrationPolicyAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE21validationDateTooLateAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE21validationDateTooLateAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE21validationDateTooSoonAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE21validationDateTooSoonAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE21validationInvalidDateAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE21validationInvalidDateAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE22persistentStoreTimeoutAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE22persistentStoreTimeoutAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE23managedObjectValidationAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE23managedObjectValidationAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE23validationStringTooLongAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE23validationStringTooLongAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE24persistentStoreOperationAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE24persistentStoreOperationAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE24validationMultipleErrorsAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE24validationMultipleErrorsAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE24validationNumberTooLargeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE24validationNumberTooLargeAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE24validationNumberTooSmallAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE24validationNumberTooSmallAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE24validationStringTooShortAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE24validationStringTooShortAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE26persistentStoreInvalidTypeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE26persistentStoreInvalidTypeAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE27managedObjectContextLockingAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE27managedObjectContextLockingAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE27migrationManagerSourceStoreAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE27migrationManagerSourceStoreAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE27migrationMissingSourceModelAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE27migrationMissingSourceModelAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE27persistentStoreTypeMismatchAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE27persistentStoreTypeMismatchAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE28managedObjectConstraintMergeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE28managedObjectConstraintMergeAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE28migrationMissingMappingModelAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE28migrationMissingMappingModelAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE28persistentStoreSaveConflictsAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE28persistentStoreSaveConflictsAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE29persistentStoreIncompleteSaveAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE29persistentStoreIncompleteSaveAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE31validationStringPatternMatchingAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE31validationStringPatternMatchingAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE32migrationManagerDestinationStoreAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE32migrationManagerDestinationStoreAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE33managedObjectExternalRelationshipAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE33managedObjectExternalRelationshipAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE33managedObjectReferentialIntegrityAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE33managedObjectReferentialIntegrityAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE33persistentStoreCoordinatorLockingAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE33persistentStoreCoordinatorLockingAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE33persistentStoreIncompatibleSchemaAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE33persistentStoreIncompatibleSchemaAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE34validationMissingMandatoryPropertyAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE34validationMissingMandatoryPropertyAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE34validationRelationshipDeniedDeleteAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE34validationRelationshipDeniedDeleteAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE37persistentStoreUnsupportedRequestTypeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE37persistentStoreUnsupportedRequestTypeAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE38persistentStoreIncompatibleVersionHashAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE38persistentStoreIncompatibleVersionHashAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE39validationRelationshipLacksMinimumCountAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE39validationRelationshipLacksMinimumCountAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE41validationRelationshipExceedsMaximumCountAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE41validationRelationshipExceedsMaximumCountAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE6sqliteAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE6sqliteAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE9migrationAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV8CoreDataE9migrationAEvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE018ManagedObjectMergeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE018ManagedObjectMergeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE018MigrationCancelledC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE018MigrationCancelledC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE018managedObjectMergeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE018managedObjectMergeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE018migrationCancelledC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE018migrationCancelledC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE019PersistentStoreOpenC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE019PersistentStoreOpenC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE019PersistentStoreSaveC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE019PersistentStoreSaveC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE019persistentStoreOpenC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE019persistentStoreOpenC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE019persistentStoreSaveC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE019persistentStoreSaveC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE020ExternalRecordImportC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE020ExternalRecordImportC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE020InferredMappingModelC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE020InferredMappingModelC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE020externalRecordImportC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE020externalRecordImportC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE020inferredMappingModelC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE020inferredMappingModelC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE021EntityMigrationPolicyC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE021EntityMigrationPolicyC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE021ValidationDateTooLateC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE021ValidationDateTooLateC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE021ValidationDateTooSoonC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE021ValidationDateTooSoonC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE021ValidationInvalidDateC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE021ValidationInvalidDateC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE021entityMigrationPolicyC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE021entityMigrationPolicyC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE021validationDateTooLateC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE021validationDateTooLateC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE021validationDateTooSoonC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE021validationDateTooSoonC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE021validationInvalidDateC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE021validationInvalidDateC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE022PersistentStoreTimeoutC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE022PersistentStoreTimeoutC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE022persistentStoreTimeoutC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE022persistentStoreTimeoutC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE023ManagedObjectValidationC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE023ManagedObjectValidationC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE023ValidationStringTooLongC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE023ValidationStringTooLongC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE023managedObjectValidationC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE023managedObjectValidationC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE023validationStringTooLongC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE023validationStringTooLongC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE024PersistentStoreOperationC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE024PersistentStoreOperationC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE024ValidationMultipleErrorsC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE024ValidationMultipleErrorsC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE024ValidationNumberTooLargeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE024ValidationNumberTooLargeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE024ValidationNumberTooSmallC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE024ValidationNumberTooSmallC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE024ValidationStringTooShortC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE024ValidationStringTooShortC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE024persistentStoreOperationC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE024persistentStoreOperationC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE024validationMultipleErrorsC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE024validationMultipleErrorsC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE024validationNumberTooLargeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE024validationNumberTooLargeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE024validationNumberTooSmallC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE024validationNumberTooSmallC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE024validationStringTooShortC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE024validationStringTooShortC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE026PersistentStoreInvalidTypeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE026PersistentStoreInvalidTypeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE026persistentStoreInvalidTypeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE026persistentStoreInvalidTypeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE027ManagedObjectContextLockingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE027ManagedObjectContextLockingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE027MigrationManagerSourceStoreC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE027MigrationManagerSourceStoreC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE027MigrationMissingSourceModelC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE027MigrationMissingSourceModelC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE027PersistentStoreTypeMismatchC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE027PersistentStoreTypeMismatchC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE027managedObjectContextLockingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE027managedObjectContextLockingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE027migrationManagerSourceStoreC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE027migrationManagerSourceStoreC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE027migrationMissingSourceModelC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE027migrationMissingSourceModelC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE027persistentStoreTypeMismatchC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE027persistentStoreTypeMismatchC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE028ManagedObjectConstraintMergeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE028ManagedObjectConstraintMergeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE028MigrationMissingMappingModelC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE028MigrationMissingMappingModelC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE028PersistentStoreSaveConflictsC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE028PersistentStoreSaveConflictsC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE028managedObjectConstraintMergeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE028managedObjectConstraintMergeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE028migrationMissingMappingModelC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE028migrationMissingMappingModelC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE028persistentStoreSaveConflictsC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE028persistentStoreSaveConflictsC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE029PersistentStoreIncompleteSaveC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE029PersistentStoreIncompleteSaveC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE029persistentStoreIncompleteSaveC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE029persistentStoreIncompleteSaveC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE031ValidationStringPatternMatchingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE031ValidationStringPatternMatchingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE031validationStringPatternMatchingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE031validationStringPatternMatchingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE032MigrationManagerDestinationStoreC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE032MigrationManagerDestinationStoreC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE032migrationManagerDestinationStoreC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE032migrationManagerDestinationStoreC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE033ManagedObjectExternalRelationshipC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE033ManagedObjectExternalRelationshipC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE033ManagedObjectReferentialIntegrityC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE033ManagedObjectReferentialIntegrityC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE033PersistentStoreCoordinatorLockingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE033PersistentStoreCoordinatorLockingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE033PersistentStoreIncompatibleSchemaC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE033PersistentStoreIncompatibleSchemaC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE033managedObjectExternalRelationshipC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE033managedObjectExternalRelationshipC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE033managedObjectReferentialIntegrityC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE033managedObjectReferentialIntegrityC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE033persistentStoreCoordinatorLockingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE033persistentStoreCoordinatorLockingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE033persistentStoreIncompatibleSchemaC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE033persistentStoreIncompatibleSchemaC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE034ValidationMissingMandatoryPropertyC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE034ValidationMissingMandatoryPropertyC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE034ValidationRelationshipDeniedDeleteC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE034ValidationRelationshipDeniedDeleteC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE034validationMissingMandatoryPropertyC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE034validationMissingMandatoryPropertyC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE034validationRelationshipDeniedDeleteC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE034validationRelationshipDeniedDeleteC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE037PersistentStoreUnsupportedRequestTypeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE037PersistentStoreUnsupportedRequestTypeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE037persistentStoreUnsupportedRequestTypeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE037persistentStoreUnsupportedRequestTypeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE038PersistentStoreIncompatibleVersionHashC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE038PersistentStoreIncompatibleVersionHashC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE038persistentStoreIncompatibleVersionHashC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE038persistentStoreIncompatibleVersionHashC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE039ValidationRelationshipLacksMinimumCountC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE039ValidationRelationshipLacksMinimumCountC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE039validationRelationshipLacksMinimumCountC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE039validationRelationshipLacksMinimumCountC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE041ValidationRelationshipExceedsMaximumCountC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE041ValidationRelationshipExceedsMaximumCountC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE041validationRelationshipExceedsMaximumCountC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE041validationRelationshipExceedsMaximumCountC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE04coreE0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE04coreE0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE04coreeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE04coreeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE06SQLiteC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE06SQLiteC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE06sqliteC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE06sqliteC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE09MigrationC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE09MigrationC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE09migrationC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE09migrationC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE0deC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE0deC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE13validationKeySSSgvg', '_$s10Foundation10CocoaErrorV8CoreDataE13validationKeySSSgvpMV', '_$s10Foundation10CocoaErrorV8CoreDataE14affectedStoresSayyXlGSgvg', @@ -1342,58 +1410,105 @@ exports: '_$s10Foundation10CocoaErrorV8CoreDataE16validationObjectypSgvg', '_$s10Foundation10CocoaErrorV8CoreDataE16validationObjectypSgvpMV', '_$s10Foundation10CocoaErrorV8CoreDataE18managedObjectMergeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE18managedObjectMergeAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE18migrationCancelledAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE18migrationCancelledAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE19persistentStoreOpenAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE19persistentStoreOpenAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE19persistentStoreSaveAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE19persistentStoreSaveAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE19validationPredicateSo11NSPredicateCSgvg', '_$s10Foundation10CocoaErrorV8CoreDataE19validationPredicateSo11NSPredicateCSgvpMV', '_$s10Foundation10CocoaErrorV8CoreDataE20externalRecordImportAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE20externalRecordImportAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE20inferredMappingModelAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE20inferredMappingModelAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE21entityMigrationPolicyAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE21entityMigrationPolicyAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE21validationDateTooLateAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE21validationDateTooLateAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE21validationDateTooSoonAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE21validationDateTooSoonAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE21validationInvalidDateAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE21validationInvalidDateAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE22persistentStoreTimeoutAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE22persistentStoreTimeoutAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE23managedObjectValidationAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE23managedObjectValidationAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE23validationStringTooLongAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE23validationStringTooLongAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE24persistentStoreOperationAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE24persistentStoreOperationAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE24validationMultipleErrorsAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE24validationMultipleErrorsAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE24validationNumberTooLargeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE24validationNumberTooLargeAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE24validationNumberTooSmallAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE24validationNumberTooSmallAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE24validationStringTooShortAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE24validationStringTooShortAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE26persistentStoreInvalidTypeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE26persistentStoreInvalidTypeAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE27managedObjectContextLockingAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE27managedObjectContextLockingAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE27migrationManagerSourceStoreAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE27migrationManagerSourceStoreAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE27migrationMissingSourceModelAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE27migrationMissingSourceModelAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE27persistentStoreTypeMismatchAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE27persistentStoreTypeMismatchAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE28managedObjectConstraintMergeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE28managedObjectConstraintMergeAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE28migrationMissingMappingModelAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE28migrationMissingMappingModelAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE28persistentStoreSaveConflictsAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE28persistentStoreSaveConflictsAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE28persistentStoreSaveConflictsSaySo15NSMergeConflictCGSgvg', '_$s10Foundation10CocoaErrorV8CoreDataE28persistentStoreSaveConflictsSaySo15NSMergeConflictCGSgvpMV', '_$s10Foundation10CocoaErrorV8CoreDataE29persistentStoreIncompleteSaveAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE29persistentStoreIncompleteSaveAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE31validationStringPatternMatchingAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE31validationStringPatternMatchingAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE32migrationManagerDestinationStoreAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE32migrationManagerDestinationStoreAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE33managedObjectExternalRelationshipAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE33managedObjectExternalRelationshipAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE33managedObjectReferentialIntegrityAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE33managedObjectReferentialIntegrityAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE33persistentStoreCoordinatorLockingAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE33persistentStoreCoordinatorLockingAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE33persistentStoreIncompatibleSchemaAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE33persistentStoreIncompatibleSchemaAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE34validationMissingMandatoryPropertyAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE34validationMissingMandatoryPropertyAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE34validationRelationshipDeniedDeleteAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE34validationRelationshipDeniedDeleteAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE37persistentStoreUnsupportedRequestTypeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE37persistentStoreUnsupportedRequestTypeAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE38persistentStoreIncompatibleVersionHashAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE38persistentStoreIncompatibleVersionHashAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE39validationRelationshipLacksMinimumCountAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE39validationRelationshipLacksMinimumCountAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE41validationRelationshipExceedsMaximumCountAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE41validationRelationshipExceedsMaximumCountAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE6sqliteAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE6sqliteAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV8CoreDataE9migrationAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV8CoreDataE9migrationAC4CodeVvpZMV', '_$sSo15NSManagedObjectC7Combine010ObservableB08CoreDataMc', '_$sSo15NSManagedObjectC8CoreDataE12fetchRequestSo07NSFetchF0CySo0gF6Result_pGyFZ', '_$sSo15NSManagedObjectC8CoreDataE16objectWillChange7Combine010ObservableB9PublisherCvg', '_$sSo15NSManagedObjectC8CoreDataE16objectWillChange7Combine010ObservableB9PublisherCvpMV', - '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV3xmlAEvgZ', '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV3xpcAEvgZ', + '_$sSo15NSManagedObjectC8CoreDataEyypSgSSciM', '_$sSo15NSManagedObjectC8CoreDataEyypSgSScig', + '_$sSo15NSManagedObjectC8CoreDataEyypSgSScipMV', '_$sSo15NSManagedObjectC8CoreDataEyypSgSScis', + '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV3xmlAEvgZ', '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV3xmlAEvpZMV', + '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV3xpcAEvgZ', '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV3xpcAEvpZMV', '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV6binaryAEvgZ', + '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV6binaryAEvpZMV', '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV6sqliteAEvgZ', + '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV6sqliteAEvpZMV', '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV8inMemoryAEvgZ', + '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV8inMemoryAEvpZMV', '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV8rawValueAESS_tcfC', '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV8rawValueSSvM', '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeV8rawValueSSvg', @@ -1404,29 +1519,46 @@ exports: '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeVSQACMc', '_$sSo17NSPersistentStoreC8CoreDataE0B4TypeVSYACMc', '_$sSo18NSMigrationManagerC8CoreDataE12migrateStore4from4type7options7mapping2toAfGy10Foundation3URLV_So012NSPersistentF0CACE0F4TypeVSDys11AnyHashableVypGSgSo14NSMappingModelCAlpTtKF', '_$sSo21NSPersistentContainerC8CoreDataE19defaultDirectoryURL10Foundation0G0VvgZ', + '_$sSo21NSPersistentContainerC8CoreDataE19defaultDirectoryURL10Foundation0G0VvpZMV', '_$sSo21NSPersistentContainerC8CoreDataE21performBackgroundTaskyxxSo22NSManagedObjectContextCKcYaKlF', '_$sSo21NSPersistentContainerC8CoreDataE21performBackgroundTaskyxxSo22NSManagedObjectContextCKcYaKlFTu', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV06binaryD0AEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV06binaryD0AEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV13transformableAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV13transformableAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV3uriAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV3uriAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV4dateAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV4dateAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV4uuidAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV4uuidAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV5floatAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV5floatAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV6doubleAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV6doubleAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV6stringAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV6stringAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV7booleanAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV7booleanAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV7decimalAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV7decimalAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV8objectIDAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV8objectIDAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV8rawValueAESo0aF0V_tcfC', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV8rawValueSo0aF0VvM', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV8rawValueSo0aF0Vvg', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV8rawValueSo0aF0VvpMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV8rawValueSo0aF0Vvs', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV9compositeAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV9compositeAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV9integer16AEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV9integer16AEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV9integer32AEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV9integer32AEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV9integer64AEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV9integer64AEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV9undefinedAEvgZ', + '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeV9undefinedAEvpZMV', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeVMa', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeVMn', '_$sSo22NSAttributeDescriptionC8CoreDataE13AttributeTypeVN', @@ -1448,15 +1580,19 @@ exports: '_$sSo22NSCustomMigrationStageC8CoreDataE18willMigrateHandlerySo08NSStagedB7ManagerC_ABtKcSgvpMV', '_$sSo22NSCustomMigrationStageC8CoreDataE18willMigrateHandlerySo08NSStagedB7ManagerC_ABtKcSgvs', '_$sSo22NSManagedObjectContextC8CoreDataE015didMergeChangesB15IDsNotificationSo18NSNotificationNameavgZ', + '_$sSo22NSManagedObjectContextC8CoreDataE015didMergeChangesB15IDsNotificationSo18NSNotificationNameavpZMV', '_$sSo22NSManagedObjectContextC8CoreDataE07didSaveB15IDsNotificationSo18NSNotificationNameavgZ', + '_$sSo22NSManagedObjectContextC8CoreDataE07didSaveB15IDsNotificationSo18NSNotificationNameavpZMV', '_$sSo22NSManagedObjectContextC8CoreDataE14performAndWaityxxyKXEKlF', '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeV12privateQueueAEvgZ', + '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeV12privateQueueAEvpZMV', '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeV8rawValueAESo0abcfG0V_tcfC', '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeV8rawValueSo0abcfG0VvM', '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeV8rawValueSo0abcfG0Vvg', '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeV8rawValueSo0abcfG0VvpMV', '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeV8rawValueSo0abcfG0Vvs', '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeV9mainQueueAEvgZ', + '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeV9mainQueueAEvpZMV', '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeVMa', '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeVMn', '_$sSo22NSManagedObjectContextC8CoreDataE15ConcurrencyTypeVN', @@ -1496,8 +1632,11 @@ exports: '_$sSo22NSManagedObjectContextC8CoreDataE17ScheduledTaskTypeOSHACMc', '_$sSo22NSManagedObjectContextC8CoreDataE17ScheduledTaskTypeOSQACMc', '_$sSo22NSManagedObjectContextC8CoreDataE26didSaveObjectsNotificationSo18NSNotificationNameavgZ', + '_$sSo22NSManagedObjectContextC8CoreDataE26didSaveObjectsNotificationSo18NSNotificationNameavpZMV', '_$sSo22NSManagedObjectContextC8CoreDataE27willSaveObjectsNotificationSo18NSNotificationNameavgZ', + '_$sSo22NSManagedObjectContextC8CoreDataE27willSaveObjectsNotificationSo18NSNotificationNameavpZMV', '_$sSo22NSManagedObjectContextC8CoreDataE28didChangeObjectsNotificationSo18NSNotificationNameavgZ', + '_$sSo22NSManagedObjectContextC8CoreDataE28didChangeObjectsNotificationSo18NSNotificationNameavpZMV', '_$sSo22NSManagedObjectContextC8CoreDataE5count3forSiSo14NSFetchRequestCyxG_tKSo0hI6ResultRzlF', '_$sSo22NSManagedObjectContextC8CoreDataE5fetchySayxGSo14NSFetchRequestCyxGKSo0gH6ResultRzlF', '_$sSo22NSManagedObjectContextC8CoreDataE5fetchySayypGSo14NSFetchRequestCySo0gH6Result_pGKF', @@ -1521,10 +1660,113 @@ exports: '_$sSo28NSPersistentStoreCoordinatorC8CoreDataE08registerB5Class_4typeyyXlXpSg_So0aB0CACE0B4TypeVtFZ', '_$sSo28NSPersistentStoreCoordinatorC8CoreDataE11setMetadata_4type2at7optionsySDySSypGSg_So0aB0CACE0B4TypeV10Foundation3URLVSDys11AnyHashableVypGSgtKFZ', '_$sSo28NSPersistentStoreCoordinatorC8CoreDataE14performAndWaityxxyKXEKlF', + '_$sSo28NSPersistentStoreCoordinatorC8CoreDataE15managedObjectID3forSo09NSManagedgH0CSgSS_tF', '_$sSo28NSPersistentStoreCoordinatorC8CoreDataE7performyxxyKcYaKlF', '_$sSo28NSPersistentStoreCoordinatorC8CoreDataE7performyxxyKcYaKlFTu', '_$sSo31NSCoreDataCoreSpotlightDelegateC0cB0E26indexDidUpdateNotificationSo18NSNotificationNameavgZ', - _NSAutomaticMigrationUseDocumentDestinationOption, _NSBinaryExternalRecordType, + '_$sSo31NSCoreDataCoreSpotlightDelegateC0cB0E26indexDidUpdateNotificationSo18NSNotificationNameavpZMV', + _NSAddedPersistentStoresKey, _NSAffectedObjectsErrorKey, _NSAffectedStoresErrorKey, + _NSBinaryStoreInsecureDecodingCompatibilityOption, _NSBinaryStoreSecureDecodingClasses, + _NSBinaryStoreType, _NSCKRecordIDAttributeName, _NSCKRecordSystemFieldsAttributeName, + _NSCloudKitMirroringDelegateDidResetSyncNotificationName, + _NSCloudKitMirroringDelegateIgnoredPropertyKey, _NSCloudKitMirroringDelegateResetSyncReasonKey, + _NSCloudKitMirroringDelegateWillResetSyncNotificationName, + _NSCoreDataCoreSpotlightDelegateIndexDidUpdateNotification, + _NSCoreDataCoreSpotlightExporter, _NSCoreDataVersionNumber, + _NSDeletedObjectIDsKey, _NSDeletedObjectsKey, _NSDetailedErrorsKey, + _NSEntityRenamingShouldRebaseKey, _NSErrorMergePolicy, _NSFetchRequestLimitSubstitutionKey, + _NSFetchRequestOffsetSubstitutionKey, _NSIgnorePersistentStoreVersioningOption, + _NSInMemoryStoreType, _NSInferMappingModelAutomaticallyOption, + _NSInsertedObjectIDsKey, _NSInsertedObjectsKey, _NSInvalidatedAllObjectsKey, + _NSInvalidatedObjectIDsKey, _NSInvalidatedObjectsKey, _NSManagedObjectContextDidMergeChangesObjectIDsNotification, + _NSManagedObjectContextDidSaveNotification, _NSManagedObjectContextDidSaveObjectIDsNotification, + _NSManagedObjectContextKey, _NSManagedObjectContextObjectsDidChangeNotification, + _NSManagedObjectContextQueryGenerationKey, _NSManagedObjectContextTransactionAuthorKey, + _NSManagedObjectContextWillSaveNotification, _NSMergeByPropertyObjectTrumpMergePolicy, + _NSMergeByPropertyStoreTrumpMergePolicy, _NSMigratePersistentStoresAutomaticallyOption, + _NSMigrationAllowTypeTransformationKey, _NSMigrationDestinationObjectKey, + _NSMigrationEntityMappingKey, _NSMigrationEntityPolicyKey, + _NSMigrationManagerKey, _NSMigrationPropertyMappingKey, _NSMigrationSourceObjectKey, + _NSOverwriteMergePolicy, _NSPersistentCloudKitContainerActivityChangedNotificationName, + _NSPersistentCloudKitContainerEncryptedAttributeKey, _NSPersistentCloudKitContainerEventChangedNotification, + _NSPersistentCloudKitContainerEventUserInfoKey, _NSPersistentHistoryAllowPartialHistoryMigration, + _NSPersistentHistoryTokenKey, _NSPersistentHistoryTombstoneAttributes, + _NSPersistentHistoryTrackingEntitiesToExclude, _NSPersistentHistoryTrackingEntitiesToInclude, + _NSPersistentHistoryTrackingExcludeUnmodifiedPropertiesForBatchUpdate, + _NSPersistentHistoryTrackingKey, _NSPersistentHistoryUseContextObjectsForDeletes, + _NSPersistentStoreConnectionPoolMaxSizeKey, _NSPersistentStoreCoordinatorResourceBundlesForMigration, + _NSPersistentStoreCoordinatorStoresDidChangeNotification, + _NSPersistentStoreCoordinatorStoresWillChangeNotification, + _NSPersistentStoreCoordinatorWillRemoveStoreNotification, + _NSPersistentStoreDeferredLightweightMigrationOptionKey, _NSPersistentStoreDidImportUbiquitousContentChangesNotification, + _NSPersistentStoreFileProtectionKey, _NSPersistentStoreForceDestroyOption, + _NSPersistentStoreForceLightweightMigrationOption, _NSPersistentStoreMirroringDelegateOptionKey, + _NSPersistentStoreMirroringOptionsKey, _NSPersistentStoreModelVersionChecksumKey, + _NSPersistentStoreOSCompatibility, _NSPersistentStoreOrderKeyUpdateNotification, + _NSPersistentStoreRebuildFromUbiquitousContentOption, _NSPersistentStoreRemoteChangeNotification, + _NSPersistentStoreRemoteChangeNotificationOptionKey, _NSPersistentStoreRemoteChangeNotificationPostOptionKey, + _NSPersistentStoreRemoveUbiquitousMetadataOption, _NSPersistentStoreSaveConflictsErrorKey, + _NSPersistentStoreServiceConfigurationOptionKey, _NSPersistentStoreStagedMigrationManagerOptionKey, + _NSPersistentStoreTimeoutOption, _NSPersistentStoreTrackIndexUseOptionKey, + _NSPersistentStoreTypeKey, _NSPersistentStoreURLKey, _NSPersistentStoreUbiquitousContainerIdentifierKey, + _NSPersistentStoreUbiquitousContentNameKey, _NSPersistentStoreUbiquitousContentURLKey, + _NSPersistentStoreUbiquitousPeerTokenOption, _NSPersistentStoreUbiquitousTransitionTypeKey, + _NSPersistentStoreUnlinkDestroyOption, _NSReadOnlyPersistentStoreOption, + _NSRefreshedObjectIDsKey, _NSRefreshedObjectsKey, _NSRelationshipDescriptionOrderKeyIndexOption, + _NSRemotePersistentStoreDidChangeNotification, _NSRemovedPersistentStoresKey, + _NSRollbackMergePolicy, _NSSQLiteAnalyzeOption, _NSSQLiteErrorDomain, + _NSSQLiteManualVacuumOption, _NSSQLitePersistWALOption, _NSSQLitePragmasOption, + _NSSQLiteSEEKeychainItemOption, _NSSQLiteStoreType, _NSStoreModelVersionHashesKey, + _NSStoreModelVersionIdentifiersKey, _NSStoreTypeKey, _NSStoreUUIDKey, + _NSUUIDChangedPersistentStoresKey, _NSUpdatedObjectIDsKey, + _NSUpdatedObjectsKey, _NSValidationKeyErrorKey, _NSValidationObjectErrorKey, + _NSValidationPredicateErrorKey, _NSValidationValueErrorKey, + _NSXPCStoreAnonymousListenerKey, _NSXPCStoreDaemonizeKey, + _NSXPCStoreEntitlementNamesKey, _NSXPCStorePostUpdateNotificationsKey, + _NSXPCStoreServerEndpointFactoryKey, _NSXPCStoreServiceNameKey, + _NSXPCStoreSkipModelCheckKey, _NSXPCStoreSkipRetryWaitKey, + _NSXPCStoreType, __NSBackgroundThreadConfinementConcurrencyType, + __NSManagedObjectContextObjectsDidChangePrivateNotification, + __NSPersistentStoreCoordinatorStoresDidChangePrivateNotification, + __NSTriggerModifiedObjectIDsKey, __NSTriggerModifiedObjectsKey, + '__swift_FORCE_LOAD_$_swiftCoreData' ] + objc-classes: [ NSAsynchronousFetchRequest, NSAsynchronousFetchResult, NSAtomicStore, + NSAtomicStoreCacheNode, NSAttributeDescription, NSBatchDeleteRequest, + NSBatchDeleteResult, NSBatchInsertRequest, NSBatchInsertResult, + NSBatchUpdateRequest, NSBatchUpdateResult, NSCachingFetchRequest, + NSCloudKitMirroringDelegate, NSCloudKitMirroringDelegateOptions, + NSCloudKitMirroringDelegateSerializationRequest, NSCloudKitMirroringDelegateSerializationRequestResult, + NSCloudKitMirroringExportProgressRequest, NSCloudKitMirroringExportProgressResult, + NSCloudKitMirroringExportRequest, NSCloudKitMirroringFetchRecordsRequest, + NSCloudKitMirroringFetchRecordsResult, NSCloudKitMirroringImportRequest, + NSCloudKitMirroringInitializeSchemaRequest, NSCloudKitMirroringRequest, + NSCloudKitMirroringRequestOptions, NSCloudKitMirroringResetMetadataRequest, + NSCloudKitMirroringResetZoneRequest, NSCloudKitMirroringResult, + NSCompositeAttributeDescription, NSConstraintConflict, NSCoreDataCoreSpotlightDelegate, + NSCustomMigrationStage, NSDerivedAttributeDescription, NSEntityDescription, + NSEntityMapping, NSEntityMigrationPolicy, NSExpressionDescription, + NSFetchIndexDescription, NSFetchIndexElementDescription, NSFetchRequest, + NSFetchRequestExpression, NSFetchedPropertyDescription, NSFetchedResultsController, + NSIncrementalStore, NSIncrementalStoreNode, NSKnownKeysDictionary, + NSKnownKeysMappingStrategy, NSLightweightMigrationStage, NSManagedImmutableObject, + NSManagedObject, NSManagedObjectContext, NSManagedObjectID, + NSManagedObjectModel, NSManagedObjectModelReference, NSMappingModel, + NSMergeConflict, NSMergePolicy, NSMigrationManager, NSMigrationStage, + NSPersistentCloudKitContainer, NSPersistentCloudKitContainerActivityVoucher, + NSPersistentCloudKitContainerEvent, NSPersistentCloudKitContainerEventRequest, + NSPersistentCloudKitContainerEventResult, NSPersistentCloudKitContainerOptions, + NSPersistentContainer, NSPersistentHistoryChange, NSPersistentHistoryChangeRequest, + NSPersistentHistoryResult, NSPersistentHistoryToken, NSPersistentHistoryTransaction, + NSPersistentStore, NSPersistentStoreAsynchronousResult, NSPersistentStoreCoordinator, + NSPersistentStoreDescription, NSPersistentStoreRequest, NSPersistentStoreResult, + NSPropertyDescription, NSPropertyMapping, NSQueryGenerationToken, + NSRelationshipDescription, NSSQLiteDatabaseStatistics, NSSQLiteIndexStatistics, + NSSQLiteIndexStatisticsRequest, NSSQLiteIndexStatisticsResult, + NSSaveChangesRequest, NSStagedMigrationManager, NSXPCStore, + NSXPCStoreConnectionInfo, NSXPCStoreServer, NSXPCStoreServerConnectionContext, + NSXPCStoreServerRequestHandlingPolicy, _NSPersistenceUtilities ] + - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] + symbols: [ _NSAutomaticMigrationUseDocumentDestinationOption, _NSBinaryExternalRecordType, _NSEntityNameInPathKey, _NSExternalRecordExtensionOption, _NSExternalRecordsDirectoryOption, _NSExternalRecordsFileFormatOption, _NSManagedObjectContextDidSaveFromPersistentDocumentNotification, diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/CoreData.h b/Frameworks/CoreData.framework/Versions/A/Headers/CoreData.h index 315b4601..722a6082 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/CoreData.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/CoreData.h @@ -1,7 +1,7 @@ /* CoreData.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/CoreDataDefines.h b/Frameworks/CoreData.framework/Versions/A/Headers/CoreDataDefines.h index f0cef5ff..cd3c1306 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/CoreDataDefines.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/CoreDataDefines.h @@ -1,7 +1,7 @@ /* CoreDataDefines.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/CoreDataErrors.h b/Frameworks/CoreData.framework/Versions/A/Headers/CoreDataErrors.h index 1b051fa3..4964e144 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/CoreDataErrors.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/CoreDataErrors.h @@ -1,7 +1,7 @@ /* CoreDataErrors.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/CoreData_CloudKit.h b/Frameworks/CoreData.framework/Versions/A/Headers/CoreData_CloudKit.h index 926f2a81..ace30536 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/CoreData_CloudKit.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/CoreData_CloudKit.h @@ -1,7 +1,7 @@ /* CoreData_CloudKit.h Core Data - Copyright (c) 2021-2023, Apple Inc. + Copyright (c) 2021-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSAtomicStore.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSAtomicStore.h index cd0b9c0d..fc0597d4 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSAtomicStore.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSAtomicStore.h @@ -1,7 +1,7 @@ /* NSAtomicStore.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSAtomicStoreCacheNode.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSAtomicStoreCacheNode.h index b65d4eda..852ec8eb 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSAtomicStoreCacheNode.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSAtomicStoreCacheNode.h @@ -1,7 +1,7 @@ /* NSAtomicStoreCacheNode.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSAttributeDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSAttributeDescription.h index 13096a89..dda74398 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSAttributeDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSAttributeDescription.h @@ -1,7 +1,7 @@ /* NSAttributeDescription.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchDeleteRequest.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchDeleteRequest.h index 66f4adb9..0c981079 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchDeleteRequest.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchDeleteRequest.h @@ -1,7 +1,7 @@ /* NSBatchDeleteRequest.h Core Data - Copyright (c) 2015-2023, Apple Inc. + Copyright (c) 2015-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchInsertRequest.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchInsertRequest.h index e0c36bdf..e4e7e9ac 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchInsertRequest.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchInsertRequest.h @@ -1,7 +1,7 @@ /* NSBatchInsertRequest.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchUpdateRequest.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchUpdateRequest.h index 3ff3f7a2..667bd2f2 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchUpdateRequest.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSBatchUpdateRequest.h @@ -1,7 +1,7 @@ /* NSBatchUpdateRequest.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSCompositeAttributeDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSCompositeAttributeDescription.h index 86b69bb1..a34c2bba 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSCompositeAttributeDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSCompositeAttributeDescription.h @@ -1,7 +1,7 @@ /* NSCompositeAttributeDescription.h Core Data - Copyright (c) 2023, Apple Inc. + Copyright (c) 2023-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSCoreDataCoreSpotlightDelegate.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSCoreDataCoreSpotlightDelegate.h index 38449358..86d49826 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSCoreDataCoreSpotlightDelegate.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSCoreDataCoreSpotlightDelegate.h @@ -1,7 +1,7 @@ /* NSCoreDataCoreSpotlightDelegate.h Core Data - Copyright (c) 2017-2023, Apple Inc. + Copyright (c) 2017-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSCustomMigrationStage.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSCustomMigrationStage.h index bd384f00..21f26b03 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSCustomMigrationStage.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSCustomMigrationStage.h @@ -1,7 +1,7 @@ /* NSCustomMigrationStage.h Core Data - Copyright (c) 2023, Apple Inc. + Copyright (c) 2023-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSDerivedAttributeDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSDerivedAttributeDescription.h index d94e3866..9b1b1da6 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSDerivedAttributeDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSDerivedAttributeDescription.h @@ -1,7 +1,7 @@ /* NSDerivedAttributeDescription.h Core Data - Copyright (c) 2018-2023, Apple Inc. + Copyright (c) 2018-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityDescription.h index 5e5e58a5..25d9084e 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityDescription.h @@ -1,7 +1,7 @@ /* NSEntityDescription.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityMapping.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityMapping.h index 14651090..3646ebf7 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityMapping.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityMapping.h @@ -1,7 +1,7 @@ /* NSEntityMapping.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityMigrationPolicy.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityMigrationPolicy.h index a1a91669..dc537f95 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityMigrationPolicy.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSEntityMigrationPolicy.h @@ -1,7 +1,7 @@ /* NSEntityMigrationPolicy.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSExpressionDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSExpressionDescription.h index 46a6ca4a..92cdf2a2 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSExpressionDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSExpressionDescription.h @@ -1,7 +1,7 @@ /* NSExpressionDescription.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchIndexDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchIndexDescription.h index 6f55cf06..9cddc11f 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchIndexDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchIndexDescription.h @@ -1,7 +1,7 @@ /* NSFetchIndexDescription.h Core Data - Copyright (c) 2017-2023, Apple Inc. + Copyright (c) 2017-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchIndexElementDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchIndexElementDescription.h index 25fca0e8..7cd1beb2 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchIndexElementDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchIndexElementDescription.h @@ -1,7 +1,7 @@ /* NSFetchIndexElementDescription.h Core Data - Copyright (c) 2017-2023, Apple Inc. + Copyright (c) 2017-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchRequest.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchRequest.h index f9e463e0..1f54c29f 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchRequest.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchRequest.h @@ -1,7 +1,7 @@ /* NSFetchRequest.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchRequestExpression.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchRequestExpression.h index 8ce100d8..898e670c 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchRequestExpression.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchRequestExpression.h @@ -1,7 +1,7 @@ /* NSFetchRequestExpression.h Core Data - Copyright (c) 2006-2023, Apple Inc. + Copyright (c) 2006-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchedPropertyDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchedPropertyDescription.h index 34f645e7..974b79cb 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchedPropertyDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchedPropertyDescription.h @@ -1,7 +1,7 @@ /* NSFetchedPropertyDescription.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchedResultsController.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchedResultsController.h index ffa757b5..87169db9 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchedResultsController.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSFetchedResultsController.h @@ -1,7 +1,7 @@ /* NSFetchedResultsController.h Core Data - Copyright (c) 2009-2023, Apple Inc. + Copyright (c) 2009-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSIncrementalStore.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSIncrementalStore.h index 47f9c281..7057874c 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSIncrementalStore.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSIncrementalStore.h @@ -1,7 +1,7 @@ /* NSIncrementalStore.h Core Data - Copyright (c) 2009-2023, Apple Inc. + Copyright (c) 2009-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSIncrementalStoreNode.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSIncrementalStoreNode.h index e5f129ce..c5c70579 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSIncrementalStoreNode.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSIncrementalStoreNode.h @@ -1,7 +1,7 @@ /* NSIncrementalStoreNode.h Core Data - Copyright (c) 2010-2023, Apple Inc. + Copyright (c) 2010-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSLightweightMigrationStage.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSLightweightMigrationStage.h index af7d38ea..66f27e14 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSLightweightMigrationStage.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSLightweightMigrationStage.h @@ -1,7 +1,7 @@ /* NSLightweightMigrationStage.h Core Data - Copyright (c) 2023, Apple Inc. + Copyright (c) 2023-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObject.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObject.h index de7f157e..72fb8663 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObject.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObject.h @@ -1,7 +1,7 @@ /* NSManagedObject.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectContext.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectContext.h index 8ff9129b..7fb9f29d 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectContext.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectContext.h @@ -1,7 +1,7 @@ /* NSManagedObjectContext.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectID.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectID.h index e5612939..3aa00c7a 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectID.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectID.h @@ -1,7 +1,7 @@ /* NSManagedObjectID.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectModel.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectModel.h index 7acd96d7..61ff3427 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectModel.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectModel.h @@ -1,7 +1,7 @@ /* NSManagedObjectModel.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectModelReference.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectModelReference.h index ad6dae38..6afb6a5d 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectModelReference.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSManagedObjectModelReference.h @@ -1,7 +1,7 @@ /* NSManagedObjectModelReference.h Core Data - Copyright (c) 2023, Apple Inc. + Copyright (c) 2023-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSMappingModel.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSMappingModel.h index d11ec8d6..162c1101 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSMappingModel.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSMappingModel.h @@ -1,7 +1,7 @@ /* NSMappingModel.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSMergePolicy.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSMergePolicy.h index ae271b43..3cfd6d65 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSMergePolicy.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSMergePolicy.h @@ -1,7 +1,7 @@ /* NSMergePolicy.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSMigrationManager.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSMigrationManager.h index b67fb038..26593c6b 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSMigrationManager.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSMigrationManager.h @@ -1,7 +1,7 @@ /* NSMigrationManager.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSMigrationStage.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSMigrationStage.h index 82729692..d8571ae1 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSMigrationStage.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSMigrationStage.h @@ -1,7 +1,7 @@ /* NSMigrationStage.h Core Data - Copyright (c) 2023, Apple Inc. + Copyright (c) 2023-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer.h index 8e887e5a..d61710cb 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer.h @@ -1,7 +1,7 @@ /* NSPersistentCloudKitContainer.h Core Data - Copyright (c) 2018-2023, Apple Inc. + Copyright (c) 2018-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerEvent.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerEvent.h index 3671094b..0860ea0a 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerEvent.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerEvent.h @@ -1,7 +1,7 @@ /* NSPersistentCloudKitContainerEvent.h Core Data - Copyright (c) 2020-2023, Apple Inc. + Copyright (c) 2020-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerEventRequest.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerEventRequest.h index 57d0b468..01c1c457 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerEventRequest.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerEventRequest.h @@ -1,7 +1,7 @@ /* NSPersistentCloudKitContainerEventRequest.h Core Data - Copyright (c) 2020-2023, Apple Inc. + Copyright (c) 2020-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerOptions.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerOptions.h index a1b17ad8..582be42b 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerOptions.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainerOptions.h @@ -1,7 +1,7 @@ /* NSPersistentCloudKitContainerOptions.h Core Data - Copyright (c) 2018-2023, Apple Inc. + Copyright (c) 2018-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer_Sharing.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer_Sharing.h index 75be268d..2a055087 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer_Sharing.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer_Sharing.h @@ -1,7 +1,7 @@ /* NSPersistentCloudKitContainer_Sharing.h Core Data - Copyright (c) 2021-2023, Apple Inc. + Copyright (c) 2021-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer_SwiftOverlay.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer_SwiftOverlay.h index 1c45dfd4..444cef99 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer_SwiftOverlay.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentCloudKitContainer_SwiftOverlay.h @@ -1,7 +1,7 @@ /* NSPersistentCloudKitContainer_SwiftOverlay.h Core Data - Copyright (c) 2018-2023, Apple Inc. + Copyright (c) 2018-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentContainer.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentContainer.h index 19079503..a7210f86 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentContainer.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentContainer.h @@ -1,7 +1,7 @@ /* NSPersistentContainer.h Core Data - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryChange.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryChange.h index 6523625d..437088fe 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryChange.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryChange.h @@ -1,7 +1,7 @@ /* NSPersistentHistoryChange.h Core Data - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryChangeRequest.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryChangeRequest.h index b62a3c72..1e2f31ab 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryChangeRequest.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryChangeRequest.h @@ -1,7 +1,7 @@ /* NSPersistentHistoryChangeRequest.h Core Data - Copyright (c) 2014-2023, Apple Inc. + Copyright (c) 2014-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryToken.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryToken.h index 4ff1a8c3..04614b80 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryToken.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryToken.h @@ -1,7 +1,7 @@ /* NSPersistentHistoryToken.h Core Data - Copyright (c) 2017-2023, Apple Inc. + Copyright (c) 2017-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryTransaction.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryTransaction.h index 50920ac4..03523f90 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryTransaction.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentHistoryTransaction.h @@ -1,7 +1,7 @@ /* NSPersistentHistoryTransaction.h Core Data - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStore.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStore.h index 77d22fb5..8a402078 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStore.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStore.h @@ -1,7 +1,7 @@ /* NSPersistentStore.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreCoordinator.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreCoordinator.h index 7cfa426d..ab7c6a75 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreCoordinator.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreCoordinator.h @@ -1,7 +1,7 @@ /* NSPersistentStoreCoordinator.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ @@ -214,6 +214,12 @@ COREDATA_EXTERN NSString * const NSPersistentHistoryTokenKey API_AVAILABLE(macos */ COREDATA_EXTERN NSString * const NSPersistentStoreDeferredLightweightMigrationOptionKey API_AVAILABLE(macosx(11.0),ios(14.0),tvos(14.0),watchos(7.0)); +/* Key to represent the version checksum for the model. + This key is in the metadata for a persistent store and can be used to quickly + determine if a store and a model are compatible. +*/ +COREDATA_EXTERN NSString * const NSPersistentStoreModelVersionChecksumKey API_AVAILABLE(macosx(15.0),ios(18.0),tvos(18.0),watchos(11.0),visionos(2.0)); + API_AVAILABLE(macosx(10.4),ios(3.0)) NS_SWIFT_SENDABLE @interface NSPersistentStoreCoordinator : NSObject { } @@ -316,6 +322,8 @@ API_AVAILABLE(macosx(10.4),ios(3.0)) NS_SWIFT_SENDABLE // Finish deferred work from lightweight migration for a single table - (BOOL)finishDeferredLightweightMigrationTask:(NSError **)error API_AVAILABLE(macosx(11.0),ios(14.0),tvos(14.0),watchos(7.0)); + +- (NSManagedObjectID *)managedObjectIDFromUTF8String:(const char *)utf8string length:(NSUInteger)len API_AVAILABLE(macosx(10.8), ios(5.0)) API_UNAVAILABLE(watchos, tvos, visionos) NS_REFINED_FOR_SWIFT; /* * DEPRECATED diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreDescription.h index d5a84cb5..5152f612 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreDescription.h @@ -1,7 +1,7 @@ /* NSPersistentStoreDescription.h Core Data - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreRequest.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreRequest.h index ddddbd01..54a9aa0e 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreRequest.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreRequest.h @@ -1,7 +1,7 @@ /* NSPersistentStoreRequest.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreResult.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreResult.h index ee23c4bb..eb317f4e 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreResult.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPersistentStoreResult.h @@ -1,7 +1,7 @@ /* NSPersistentStoreResult.h Core Data - Copyright (c) 2014-2023, Apple Inc. + Copyright (c) 2014-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPropertyDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPropertyDescription.h index 10a8d0cf..9dca7db7 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPropertyDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPropertyDescription.h @@ -1,7 +1,7 @@ /* NSPropertyDescription.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSPropertyMapping.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSPropertyMapping.h index b75117e9..c58d235d 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSPropertyMapping.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSPropertyMapping.h @@ -1,7 +1,7 @@ /* NSPropertyMapping.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSQueryGenerationToken.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSQueryGenerationToken.h index 8215d98c..bd9544d2 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSQueryGenerationToken.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSQueryGenerationToken.h @@ -1,7 +1,7 @@ /* NSQueryGenerationToken.h Core Data - Copyright (c) 2016-2023, Apple Inc. + Copyright (c) 2016-2025, Apple Inc. All rights reserved. */ #import diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSRelationshipDescription.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSRelationshipDescription.h index 47e0bb97..711bf062 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSRelationshipDescription.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSRelationshipDescription.h @@ -1,7 +1,7 @@ /* NSRelationshipDescription.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSSaveChangesRequest.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSSaveChangesRequest.h index 4e7c9179..c7b3d258 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSSaveChangesRequest.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSSaveChangesRequest.h @@ -1,7 +1,7 @@ /* NSSaveChangesRequest.h Core Data - Copyright (c) 2004-2023, Apple Inc. + Copyright (c) 2004-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreData.framework/Versions/A/Headers/NSStagedMigrationManager.h b/Frameworks/CoreData.framework/Versions/A/Headers/NSStagedMigrationManager.h index a08e2ce3..f5a48160 100644 --- a/Frameworks/CoreData.framework/Versions/A/Headers/NSStagedMigrationManager.h +++ b/Frameworks/CoreData.framework/Versions/A/Headers/NSStagedMigrationManager.h @@ -1,7 +1,7 @@ /* NSStagedMigrationManager.h Core Data - Copyright (c) 2023, Apple Inc. + Copyright (c) 2023-2025, Apple Inc. All rights reserved. */ diff --git a/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation.tbd b/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation.tbd index 10b2580e..8b84dce5 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation.tbd +++ b/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation' -current-version: 2202 +current-version: 3423 compatibility-version: 150 reexported-libraries: - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, @@ -23,10 +23,11 @@ exports: _CFAbsoluteTimeAddGregorianUnits, _CFAbsoluteTimeGetCurrent, _CFAbsoluteTimeGetDayOfWeek, _CFAbsoluteTimeGetDayOfYear, _CFAbsoluteTimeGetDifferenceAsGregorianUnits, _CFAbsoluteTimeGetGregorianDate, - _CFAbsoluteTimeGetWeekOfYear, _CFAllocatorAllocate, _CFAllocatorCreate, - _CFAllocatorDeallocate, _CFAllocatorGetContext, _CFAllocatorGetDefault, - _CFAllocatorGetPreferredSizeForSize, _CFAllocatorGetTypeID, - _CFAllocatorReallocate, _CFAllocatorSetDefault, _CFArrayAppendArray, + _CFAbsoluteTimeGetWeekOfYear, _CFAllocatorAllocate, _CFAllocatorAllocateBytes, + _CFAllocatorAllocateTyped, _CFAllocatorCreate, _CFAllocatorDeallocate, + _CFAllocatorGetContext, _CFAllocatorGetDefault, _CFAllocatorGetPreferredSizeForSize, + _CFAllocatorGetTypeID, _CFAllocatorReallocate, _CFAllocatorReallocateBytes, + _CFAllocatorReallocateTyped, _CFAllocatorSetDefault, _CFArrayAppendArray, _CFArrayAppendValue, _CFArrayApplyFunction, _CFArrayBSearchValues, _CFArrayContainsValue, _CFArrayCreate, _CFArrayCreateCopy, _CFArrayCreateMutable, _CFArrayCreateMutableCopy, _CFArrayExchangeValuesAtIndices, @@ -70,18 +71,19 @@ exports: _CFBundleCopyInfoDictionaryInDirectory, _CFBundleCopyLocalizationForLocalizationInfo, _CFBundleCopyLocalizationsForPreferences, _CFBundleCopyLocalizationsForURL, _CFBundleCopyLocalizedString, _CFBundleCopyLocalizedStringForLocalization, - _CFBundleCopyLocalizedStringTableForLocalization, _CFBundleCopyPreferredLocalizationsFromArray, - _CFBundleCopyPrivateFrameworksURL, _CFBundleCopyResourceURL, - _CFBundleCopyResourceURLForLocalization, _CFBundleCopyResourceURLInDirectory, - _CFBundleCopyResourceURLsOfType, _CFBundleCopyResourceURLsOfTypeForLocalization, - _CFBundleCopyResourceURLsOfTypeInDirectory, _CFBundleCopyResourcesDirectoryURL, - _CFBundleCopySharedFrameworksURL, _CFBundleCopySharedSupportURL, - _CFBundleCopySupportFilesDirectoryURL, _CFBundleCreate, _CFBundleCreateBundlesFromDirectory, - _CFBundleGetAllBundles, _CFBundleGetBundleWithIdentifier, - _CFBundleGetDataPointerForName, _CFBundleGetDataPointersForNames, - _CFBundleGetDevelopmentRegion, _CFBundleGetExecutableType, - _CFBundleGetFunctionPointerForName, _CFBundleGetFunctionPointersForNames, - _CFBundleGetIdentifier, _CFBundleGetInfoDictionary, _CFBundleGetLocalInfoDictionary, + _CFBundleCopyLocalizedStringForLocalizations, _CFBundleCopyLocalizedStringTableForLocalization, + _CFBundleCopyPreferredLocalizationsFromArray, _CFBundleCopyPrivateFrameworksURL, + _CFBundleCopyResourceURL, _CFBundleCopyResourceURLForLocalization, + _CFBundleCopyResourceURLInDirectory, _CFBundleCopyResourceURLsOfType, + _CFBundleCopyResourceURLsOfTypeForLocalization, _CFBundleCopyResourceURLsOfTypeInDirectory, + _CFBundleCopyResourcesDirectoryURL, _CFBundleCopySharedFrameworksURL, + _CFBundleCopySharedSupportURL, _CFBundleCopySupportFilesDirectoryURL, + _CFBundleCreate, _CFBundleCreateBundlesFromDirectory, _CFBundleGetAllBundles, + _CFBundleGetBundleWithIdentifier, _CFBundleGetDataPointerForName, + _CFBundleGetDataPointersForNames, _CFBundleGetDevelopmentRegion, + _CFBundleGetExecutableType, _CFBundleGetFunctionPointerForName, + _CFBundleGetFunctionPointersForNames, _CFBundleGetIdentifier, + _CFBundleGetInfoDictionary, _CFBundleGetLocalInfoDictionary, _CFBundleGetLocalizationInfoForLocalization, _CFBundleGetMainBundle, _CFBundleGetPackageInfo, _CFBundleGetPackageInfoInDirectory, _CFBundleGetPlugIn, _CFBundleGetTypeID, _CFBundleGetValueForInfoDictionaryKey, @@ -222,22 +224,26 @@ exports: _CFPasteboardCopyName, _CFPasteboardCreate, _CFPasteboardCreateDataForString, _CFPasteboardCreateSecurityScopeDataForURL, _CFPasteboardCreateStringFromData, _CFPasteboardCreateUnique, _CFPasteboardCreateUniquePromiseFileURL, - _CFPasteboardEnableBatching, _CFPasteboardEndDragAndDrop, - _CFPasteboardEnumeratePasteboardUsingBlock, _CFPasteboardFlushEntries, + _CFPasteboardDetectMetadataForTypes, _CFPasteboardDetectPatternsForPatterns, + _CFPasteboardDetectValuesForPatterns, _CFPasteboardEnableBatching, + _CFPasteboardEndDragAndDrop, _CFPasteboardEnumeratePasteboardUsingBlock, + _CFPasteboardFlushEntries, _CFPasteboardGeneratePasteVerificationToken, _CFPasteboardGetChangeCount, _CFPasteboardGetDataFlags, _CFPasteboardGetFlavorCount, _CFPasteboardGetGenerationCount, _CFPasteboardGetItemAtIndex, _CFPasteboardGetItemCount, _CFPasteboardGetTypeID, _CFPasteboardIsDataPromised, - _CFPasteboardMakeGenerationLocalOnly, _CFPasteboardPromiseData, + _CFPasteboardIsPrivacyDeveloperPreviewEnabled, _CFPasteboardMakeGenerationLocalOnly, + _CFPasteboardPromiseData, _CFPasteboardPromiseDataUsingAsyncBlock, _CFPasteboardPromiseDataUsingBlock, _CFPasteboardResolveAllPromisedData, _CFPasteboardResolvePromisedData, _CFPasteboardRestrictSandboxExtensionAccess, _CFPasteboardSetData, _CFPasteboardSetDataFlags, _CFPasteboardSetExpirationDate, _CFPasteboardSetPasteFileType, _CFPasteboardSetPasteLocation, - _CFPlugInAddInstanceForFactory, _CFPlugInCreate, _CFPlugInFindFactoriesForPlugInType, - _CFPlugInFindFactoriesForPlugInTypeInPlugIn, _CFPlugInGetBundle, - _CFPlugInGetTypeID, _CFPlugInInstanceCreate, _CFPlugInInstanceCreateWithInstanceDataSize, - _CFPlugInInstanceGetFactoryName, _CFPlugInInstanceGetInstanceData, - _CFPlugInInstanceGetInterfaceFunctionTable, _CFPlugInInstanceGetTypeID, - _CFPlugInIsLoadOnDemand, _CFPlugInRegisterFactoryFunction, + _CFPasteboardSetPasteVerificationToken, _CFPasteboardSetPasteboardValidationCallbacks, + _CFPasteboardSetTelemetry, _CFPlugInAddInstanceForFactory, + _CFPlugInCreate, _CFPlugInFindFactoriesForPlugInType, _CFPlugInFindFactoriesForPlugInTypeInPlugIn, + _CFPlugInGetBundle, _CFPlugInGetTypeID, _CFPlugInInstanceCreate, + _CFPlugInInstanceCreateWithInstanceDataSize, _CFPlugInInstanceGetFactoryName, + _CFPlugInInstanceGetInstanceData, _CFPlugInInstanceGetInterfaceFunctionTable, + _CFPlugInInstanceGetTypeID, _CFPlugInIsLoadOnDemand, _CFPlugInRegisterFactoryFunction, _CFPlugInRegisterFactoryFunctionByName, _CFPlugInRegisterPlugInType, _CFPlugInRemoveInstanceForFactory, _CFPlugInSetLoadOnDemand, _CFPlugInUnregisterFactory, _CFPlugInUnregisterPlugInType, @@ -601,11 +607,11 @@ exports: __CFCharacterSetCompact, __CFCharacterSetCreateKeyedCodingString, __CFCharacterSetFast, __CFCharacterSetGetKeyedCodingBuiltinType, __CFCharacterSetGetKeyedCodingRange, __CFCharacterSetGetKeyedCodingType, - __CFCharacterSetIsInverted, __CFCharacterSetIsMutable, __CFCharacterSetSetIsInverted, - __CFCopyServerVersionDictionary, __CFCopySupplementalVersionDictionary, - __CFCopySystemVersionDictionary, __CFCopySystemVersionDictionaryValue, - __CFCopySystemVersionPlatformDictionary, __CFCreateArrayStorage, - __CFCreateCharacterSetFromUSet, __CFCreateContainerURLForSecurityApplicationGroupIdentifier, + __CFCharacterSetIsInverted, __CFCharacterSetIsMutable, __CFCharacterSetIsValidRange, + __CFCharacterSetSetIsInverted, __CFCopyServerVersionDictionary, + __CFCopySupplementalVersionDictionary, __CFCopySystemVersionDictionary, + __CFCopySystemVersionDictionaryValue, __CFCopySystemVersionPlatformDictionary, + __CFCreateArrayStorage, __CFCreateCharacterSetFromUSet, __CFCreateContainerURLForSecurityApplicationGroupIdentifier, __CFCreateContainerURLForSecurityApplicationIdentifierGroupIdentifierAndUser, __CFDataFindBytes, __CFDateFormatterCreateAttributedStringAndFieldsWithAbsoluteTime, __CFDateFormatterCreateSkeletonFromTemplate, __CFDictionaryFastEnumeration, @@ -613,16 +619,18 @@ exports: __CFDictionarySetKVOBit, __CFDiscorporateMemoryAllocate, __CFDiscorporateMemoryDeallocate, __CFDiscorporateMemoryDematerialize, __CFDiscorporateMemoryMaterialize, __CFDoExceptionOperation, __CFDoubledStringCreate, __CFEnableZombies, - __CFErrorCreateDebugDescription, __CFErrorCreateLocalizedDescription, - __CFErrorCreateLocalizedFailureReason, __CFErrorCreateLocalizedRecoverySuggestion, - __CFErrorCreateRedactedDescription, __CFErrorCreateUnlocalizedDebugDescription, - __CFExecutableLinkedOnOrAfter, __CFExtensionIsValidToAppend, - __CFExtensionUniCharsIsValidToAppend, __CFFileCoordinateReadWriteItemsAtURLs, - __CFFileCoordinateReadingItemAtURL, __CFFileCoordinateReadingItemAtURL2, - __CFFileCoordinateReadingWritingItemsAtURLs2, __CFFileCoordinateWritingItemAtURL, - __CFFileCoordinateWritingItemAtURL2, __CFFileCoordinateWritingItemsAtURLs2, - __CFFileDidDisconnect2, __CFFileDidGainVersion2, __CFFileDidLoseVersion2, - __CFFileDidMove2, __CFFileDidReconnect2, __CFFileDidResolveConflictVersion2, + __CFErrorCopyCallStackReturnAddresses, __CFErrorCreateDebugDescription, + __CFErrorCreateLocalizedDescription, __CFErrorCreateLocalizedFailureReason, + __CFErrorCreateLocalizedRecoverySuggestion, __CFErrorCreateRedactedDescription, + __CFErrorCreateUnlocalizedDebugDescription, __CFErrorSetCallStackCaptureEnabled, + __CFErrorSetCallStackReturnAddresses, __CFExecutableLinkedOnOrAfter, + __CFExtensionIsValidToAppend, __CFExtensionUniCharsIsValidToAppend, + __CFFileCoordinateReadWriteItemsAtURLs, __CFFileCoordinateReadingItemAtURL, + __CFFileCoordinateReadingItemAtURL2, __CFFileCoordinateReadingWritingItemsAtURLs2, + __CFFileCoordinateWritingItemAtURL, __CFFileCoordinateWritingItemAtURL2, + __CFFileCoordinateWritingItemsAtURLs2, __CFFileDidDisconnect2, + __CFFileDidGainVersion2, __CFFileDidLoseVersion2, __CFFileDidMove2, + __CFFileDidReconnect2, __CFFileDidResolveConflictVersion2, __CFFileSecurityCreateFromFilesec, __CFFileSecurityGetFilesec, __CFGetAlternatePlatformName, __CFGetEGID, __CFGetEUID, __CFGetExecutableLinkedLibraryVersion, __CFGetHandleForInsertedOrInterposingLibrary, __CFGetOutOfMemoryErrorCallBack, @@ -720,9 +728,8 @@ exports: __CFStringCreateWithBytesNoCopy, __CFStringCreateWithFormatAndArgumentsAux, __CFStringCreateWithFormatAndArgumentsAux2, __CFStringCreateWithFormatAndArgumentsReturningMetadata, __CFStringEncodingSetForceASCIICompatibility, __CFStringGetFileSystemRepresentation, - __CFStringGetFileSystemRepresentationWithErrorStatus, __CFStringGetFormatSpecifierConfiguration, - __CFStringGetInstallationEncodingAndRegion, __CFStringGetLength2, - __CFStringGetUserDefaultEncoding, __CFStringHyphenationCompileHyphenatorData, + __CFStringGetFormatSpecifierConfiguration, __CFStringGetInstallationEncodingAndRegion, + __CFStringGetLength2, __CFStringGetUserDefaultEncoding, __CFStringHyphenationCompileHyphenatorData, __CFStringSaveUserDefaultEncoding, __CFStringTokenizerCopyPossibleStringLanguages, __CFStringTokenizerCreateNamePartsArrayWithString, __CFStringTokenizerCreateNamePartsArrayWithStringAsCompositeName, __CFStringTokenizerCreatePossibleNamePartsArrayWithStringAsCompositeName, @@ -777,24 +784,24 @@ exports: __CFURLCreateCurrentDirectoryURL, __CFURLCreateDisplayPathComponentsArray, __CFURLCreateFromComponents, __CFURLCreateFromPropertyListRepresentation, __CFURLCreateStandardError, __CFURLCreateWithFileSystemPathCachingResourcePropertiesForKeys, - __CFURLEnumeratorGetURLsBulk, __CFURLFileCacheClearPropertyValueForKey, - __CFURLFileCacheGetFinderInfo, __CFURLFileCacheGetFlags, __CFURLFileCacheGetName, - __CFURLFileCacheGetPropertyValueForKey, __CFURLFileCacheSetPropertyValueForKey, - __CFURLGetCatalogInfo, __CFURLGetEncoding, __CFURLGetResourcePropertyFlags, - __CFURLGetVolumePropertyFlags, __CFURLIsFileReferenceURL, - __CFURLIsFileURL, __CFURLIsItemPromiseAtURL, __CFURLIsPromiseName, - __CFURLNoteSecurityScopedResourceMoved, __CFURLPromiseCopyPhysicalURL, - __CFURLPromiseCopyResourcePropertyForKey, __CFURLPromiseCreateProperties, - __CFURLPromiseSetPhysicalURL, __CFURLPromiseSetResourcePropertyForKey, - __CFURLRegisterFilePropertyProvider, __CFURLRegisterFilePropertyWithOptions, - __CFURLReplaceObject, __CFURLSetPermanentResourcePropertyForKey, - __CFUserNotificationSetWarningThread, __CFWriteStreamCreateFromFileDescriptor, - __CFWriteStreamDeallocate, __CFWriteStreamGetClient, __CFWriteStreamInitialize, - __CFWriteStreamSignalEventDelayed, __CFXNotificationCancelToken, - __CFXNotificationCenterCopyDebugInfo, __CFXNotificationCenterCreate, - __CFXNotificationCenterIsEmpty, __CFXNotificationGetHostCenter, - __CFXNotificationGetSuspended, __CFXNotificationGetTaskCenter, - __CFXNotificationPost, __CFXNotificationRegisterObserver, + __CFURLCreateWithRangesAndFlags, __CFURLEnumeratorGetURLsBulk, + __CFURLFileCacheClearPropertyValueForKey, __CFURLFileCacheGetFinderInfo, + __CFURLFileCacheGetFlags, __CFURLFileCacheGetName, __CFURLFileCacheGetPropertyValueForKey, + __CFURLFileCacheSetPropertyValueForKey, __CFURLGetCatalogInfo, + __CFURLGetEncoding, __CFURLGetResourcePropertyFlags, __CFURLGetVolumePropertyFlags, + __CFURLIsFileReferenceURL, __CFURLIsFileURL, __CFURLIsItemPromiseAtURL, + __CFURLIsPromiseName, __CFURLNoteSecurityScopedResourceMoved, + __CFURLPromiseCopyPhysicalURL, __CFURLPromiseCopyResourcePropertyForKey, + __CFURLPromiseCreateProperties, __CFURLPromiseSetPhysicalURL, + __CFURLPromiseSetResourcePropertyForKey, __CFURLRegisterFilePropertyProvider, + __CFURLRegisterFilePropertyWithOptions, __CFURLReplaceObject, + __CFURLSetPermanentResourcePropertyForKey, __CFUserNotificationSetWarningThread, + __CFWriteStreamCreateFromFileDescriptor, __CFWriteStreamDeallocate, + __CFWriteStreamGetClient, __CFWriteStreamInitialize, __CFWriteStreamSignalEventDelayed, + __CFXNotificationCancelToken, __CFXNotificationCenterCopyDebugInfo, + __CFXNotificationCenterCreate, __CFXNotificationCenterIsEmpty, + __CFXNotificationGetHostCenter, __CFXNotificationGetSuspended, + __CFXNotificationGetTaskCenter, __CFXNotificationPost, __CFXNotificationRegisterObserver, __CFXNotificationRegistrationBufferDestroy, __CFXNotificationRegistrationDispose, __CFXNotificationRemoveObservers, __CFXNotificationSetSuspended, __CFXPCCreateCFObjectFromXPCMessage, __CFXPCCreateCFObjectFromXPCObject, @@ -809,9 +816,9 @@ exports: __NSIsNSAttributedString, __NSIsNSCFConstantString, __NSIsNSData, __NSIsNSDate, __NSIsNSDictionary, __NSIsNSIndexSet, __NSIsNSNumber, __NSIsNSObject, __NSIsNSOrderedSet, __NSIsNSSet, __NSIsNSString, - __NSIsNSTimeZone, __NSIsNSValue, __NSMessageBuilder, __NSObjectLoadWeak, - __NSObjectLoadWeakRetained, __NSObjectStoreWeak, __NSSetDeallocHandler, - __NSTaggedPointerStringGetBytes, __NSTaggedPointerStringGetLength, + __NSIsNSTimeZone, __NSIsNSURL, __NSIsNSValue, __NSMessageBuilder, + __NSObjectLoadWeak, __NSObjectLoadWeakRetained, __NSObjectStoreWeak, + __NSSetDeallocHandler, __NSTaggedPointerStringGetBytes, __NSTaggedPointerStringGetLength, __NSURLCloudDocsPlaceholderDictionaryKey, __NSURLCloudDocsPlaceholderLogicalNameKey, __NSURLUbiquitousItemDownloadRequestedKey, ___CFAllocatorRespectsHintZeroWhenAllocating, ___CFAttributedStringCreateMutableWithSubstring, ___CFAttributedStringMtbl, @@ -829,16 +836,16 @@ exports: ___CFObjectAllocSetLastAllocEventNameFunction, ___CFRangeMake, ___CFRecordAllocationEvent, ___CFRunLoopEnableAuxiliaryAppNapNotifications, ___CFRunLoopSetOptions, ___CFRunLoopSetOptionsReason, ___CFRuntimeEnumerateClassTable, - ___CFSafelyReallocate, ___CFSafelyReallocateWithAllocator, - ___CFSetLastAllocationEventName, ___CFSocketEnableCallBacks, - ___CFSocketGetBytesAvailable, ___CFSocketRead, ___CFSocketSetSocketReadBufferAttrs, - ___CFStartSearchPathEnumeration, ___CFStorageGetCapacity, - ___CFStorageGetValueSize, ___CFStorageSetAlwaysFrozen, ___CFStrConvertBytesToUnicode, - ___CFStringAppendBytes, ___CFStringCheckAndReplace, ___CFStringComputeEightBitStringEncoding, - ___CFStringCreateImmutableFunnel2, ___CFStringDecodeByteStream2, - ___CFStringDecodeByteStream3, ___CFStringEncodeByteStream, - ___CFStringFindFormatSpecifiersInString, ___CFStringHash, - ___CFStringIsCF, ___CFStringIsEightBit, ___CFStringIsMutable, + ___CFSafelyReallocate, ___CFSafelyReallocateTyped, ___CFSafelyReallocateWithAllocator, + ___CFSafelyReallocateWithAllocatorTyped, ___CFSetLastAllocationEventName, + ___CFSocketEnableCallBacks, ___CFSocketGetBytesAvailable, + ___CFSocketRead, ___CFSocketSetSocketReadBufferAttrs, ___CFStartSearchPathEnumeration, + ___CFStorageGetCapacity, ___CFStorageGetValueSize, ___CFStorageSetAlwaysFrozen, + ___CFStrConvertBytesToUnicode, ___CFStringAppendBytes, ___CFStringCheckAndReplace, + ___CFStringComputeEightBitStringEncoding, ___CFStringCreateImmutableFunnel2, + ___CFStringDecodeByteStream2, ___CFStringDecodeByteStream3, + ___CFStringEncodeByteStream, ___CFStringFindFormatSpecifiersInString, + ___CFStringHash, ___CFStringIsCF, ___CFStringIsEightBit, ___CFStringIsMutable, ___CFStringMakeConstantString, ___CFStringMtbl, ___CFStringNoteErrors, ___CFTSANTagMutableArray, ___CFTSANTagMutableData, ___CFTSANTagMutableDictionary, ___CFTSANTagMutableOrderedSet, ___CFTSANTagMutableSet, ___CFURLBeginResourcePropertyCacheAccess, @@ -915,8 +922,8 @@ exports: __kCFURLVolumeIsCDKey, __kCFURLVolumeIsDVDKey, __kCFURLVolumeIsDeviceFileSystemKey, __kCFURLVolumeIsDiskImageKey, __kCFURLVolumeIsEjectableKey, __kCFURLVolumeIsExternalKey, __kCFURLVolumeIsFileVaultKey, - __kCFURLVolumeIsHFSStandardKey, __kCFURLVolumeIsInternalKey, - __kCFURLVolumeIsLocalKey, __kCFURLVolumeIsLocaliDiskMirrorKey, + __kCFURLVolumeIsHFSStandardKey, __kCFURLVolumeIsIgnoringOwnershipKey, + __kCFURLVolumeIsInternalKey, __kCFURLVolumeIsLocalKey, __kCFURLVolumeIsLocaliDiskMirrorKey, __kCFURLVolumeIsQuarantinedKey, __kCFURLVolumeIsReadOnlyKey, __kCFURLVolumeIsRemovableKey, __kCFURLVolumeIsiDiskKey, __kCFURLVolumeIsiPodKey, __kCFURLVolumeMountPointStringKey, __kCFURLVolumeRefNumKey, @@ -1028,6 +1035,7 @@ exports: _kCFNumberFormatterMaxIntegerDigits, _kCFNumberFormatterMaxIntegerDigitsKey, _kCFNumberFormatterMaxSignificantDigits, _kCFNumberFormatterMaxSignificantDigitsKey, _kCFNumberFormatterMinFractionDigits, _kCFNumberFormatterMinFractionDigitsKey, + _kCFNumberFormatterMinGroupingDigits, _kCFNumberFormatterMinGroupingDigitsKey, _kCFNumberFormatterMinIntegerDigits, _kCFNumberFormatterMinIntegerDigitsKey, _kCFNumberFormatterMinSignificantDigits, _kCFNumberFormatterMinSignificantDigitsKey, _kCFNumberFormatterMinusSign, _kCFNumberFormatterMinusSignKey, @@ -1225,20 +1233,21 @@ exports: __CFBundleGetPreferredExecutableArchitectureForURL, __CFBundleSetMainBundle, __CFCreateURLFromFSSpec, __CFGetFSSpecFromURL, __CFMachPortCopyCurrentBoost, __CFMachPortCreateBoost, __CFMachPortSetOptions, __CFMessagePortSetOptions, - __CFPasteboardGetLastPasteTelemetry, __CFPasteboardGetLastUserPasteAuthToken, - __CFPasteboardInvalidateCache, __CFPasteboardRemotePasteboardBecameAvailable, - __CFPasteboardServerQueue, __CFPasteboardSetGeneralPasteboardTimeout, - __CFPreferencesWebServicesCopyProvider, __CFPreferencesWebServicesSetProvider, - __CFPropertListCreateFromFrozen, __CFPropertyListCopyShared, - __CFPropertyListCreateFrozen, __CFPropertyListShare, __CFRunLoopSetCurrent, - __CFStringTokenizerCreateCurrentTokenLemma, __CFStringTokenizerSetMetadata, + __CFPasteboardGetLastPasteTelemetry, __CFPasteboardGetLastPasteVerificationToken, + __CFPasteboardInvalidateCache, __CFPasteboardReleasePreviouslyConsumedSandboxExtensions, + __CFPasteboardRemotePasteboardBecameAvailable, __CFPasteboardServerQueue, + __CFPasteboardSetGeneralPasteboardTimeout, __CFPreferencesWebServicesCopyProvider, + __CFPreferencesWebServicesSetProvider, __CFPropertListCreateFromFrozen, + __CFPropertyListCopyShared, __CFPropertyListCreateFrozen, + __CFPropertyListShare, __CFRunLoopSetCurrent, __CFStringTokenizerCreateCurrentTokenLemma, + __CFStringTokenizerSetMetadata, __CFURLBookmarkCreateByAddingSecurityScope, __CFURLBookmarkDataCompare, __CFURLBookmarkDataToAliasHandle, - __CFURLCopyAliasFromPropertyListRepresentation, __CFURLCopyExtendedPropertyListPrimitive, - __CFURLCopyExtendedPropertyListRepresentation, __CFURLCreateFileReferenceURLFromFSRef, - __CFURLCreateFileReferenceURLFromIDs, __CFURLGetFSRef, __CFURLGetObjectInformationNoIO, - __CFURLIsProtectedDirectory, __CFURLRevocableBookmarksCopyClientBundleIdentifiers, - __CFURLRevocableBookmarksCopyClients, __CFURLRevocableBookmarksRevokeForBundleIdentifier, - __CFURLRevocableBookmarksSetActiveStatusForBundleIdentifier, + __CFURLBookmarkIsSecurityScoped, __CFURLCopyAliasFromPropertyListRepresentation, + __CFURLCopyExtendedPropertyListPrimitive, __CFURLCopyExtendedPropertyListRepresentation, + __CFURLCreateFileReferenceURLFromFSRef, __CFURLCreateFileReferenceURLFromIDs, + __CFURLGetFSRef, __CFURLGetObjectInformationNoIO, __CFURLIsProtectedDirectory, + __CFURLRevocableBookmarksCopyClientBundleIdentifiers, __CFURLRevocableBookmarksCopyClients, + __CFURLRevocableBookmarksRevokeForBundleIdentifier, __CFURLRevocableBookmarksSetActiveStatusForBundleIdentifier, __CFVolumeObserverCreate, __CFVolumeObserverGetTypeID, __CFVolumeObserverGetUnmountDissenterForDisk, __CFVolumeObserverInvalidate, __CFVolumeObserverInvalidateWithCompletionHandler, __CFVolumeObserverSetUnmountDissenterForDisk, __CFWebServicesCopyProviderInfo, diff --git a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFAttributedString.h b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFAttributedString.h index 9eafdcbb..7b371ff7 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFAttributedString.h +++ b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFAttributedString.h @@ -149,6 +149,12 @@ In cases where attributed string might do a bunch of work to assure self-consist */ CF_EXPORT void CFAttributedStringEndEditing(CFMutableAttributedStringRef aStr); +#if !0 +/*! @function CFAttributedStringGetBidiLevelsAndResolvedDirections +Fills bidiLevels by applying the Unicode Bidi Algorithm (P, X, W, N, and I) to the characters in range. Returns true if the result is not uni-level LTR (in other words, needing further Bidi processing). baseDirection is NSWritingDirection (NSWritingDirectionNatural, NSWritingDirectionLeftToRight, and NSWritingDirectionRightToLeft). Understands NSWritingDirectionAttributeName values. +*/ +CF_EXPORT bool CFAttributedStringGetBidiLevelsAndResolvedDirections(CFAttributedStringRef attributedString, CFRange range, int8_t baseDirection, uint8_t *bidiLevels, uint8_t *baseDirections); +#endif CF_EXTERN_C_END CF_IMPLICIT_BRIDGING_DISABLED diff --git a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFAvailability.h b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFAvailability.h index 15e4ca29..96bc10a9 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFAvailability.h +++ b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFAvailability.h @@ -16,20 +16,11 @@ #include #endif -#if __has_include() && __has_include() && __has_include() && !0 +#if __has_include() && __has_include() && __has_include() #include #include // Even if unused, these must remain here for compatibility, because projects rely on them being included. #include -#elif __has_include() && __has_include() -#include -#include -#if !defined(API_AVAILABLE) -#define API_AVAILABLE(...) __API_AVAILABLE(__VA_ARGS__) -#define API_DEPRECATED(...) __API_DEPRECATED(__VA_ARGS__) -#define API_UNAVAILABLE(...) __API_UNAVAILABLE(__VA_ARGS__) -#define API_DEPRECATED_WITH_REPLACEMENT(...) __API_DEPRECATED_WITH_REPLACEMENT(__VA_ARGS__) -#endif #else #define API_AVAILABLE(...) #define API_DEPRECATED(...) @@ -189,19 +180,11 @@ CF_ENUM(CFIndex) { #define _CF_TYPED_EXTENSIBLE_ENUM #endif -#if DEPLOYMENT_RUNTIME_SWIFT -#define CF_STRING_ENUM -#define CF_EXTENSIBLE_STRING_ENUM - -#define CF_TYPED_ENUM -#define CF_TYPED_EXTENSIBLE_ENUM -#else #define CF_STRING_ENUM _CF_TYPED_ENUM #define CF_EXTENSIBLE_STRING_ENUM _CF_TYPED_EXTENSIBLE_ENUM #define CF_TYPED_ENUM _CF_TYPED_ENUM #define CF_TYPED_EXTENSIBLE_ENUM _CF_TYPED_EXTENSIBLE_ENUM -#endif #define __CF_ERROR_ENUM_GET_MACRO(_1, _2, NAME, ...) NAME #if ((__cplusplus && __cplusplus >= 201103L && (__has_extension(cxx_strong_enums) || __has_feature(objc_fixed_enum))) || (!__cplusplus && __has_feature(objc_fixed_enum))) && __has_attribute(ns_error_domain) diff --git a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBase.h b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBase.h index 2dc2feb6..3ef5024f 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBase.h +++ b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBase.h @@ -80,18 +80,32 @@ #include #endif #else - #if (TARGET_OS_OSX || TARGET_OS_IPHONE) && !DEPLOYMENT_RUNTIME_SWIFT + #if (TARGET_OS_OSX || TARGET_OS_IPHONE) #include #endif #endif +// from +typedef unsigned long long CFAllocatorTypeID; + +#if TARGET_OS_MAC && (defined(CF_BUILDING_CF) || defined(NSBUILDINGFOUNDATION)) + #include + #if defined(_MALLOC_TYPE_ENABLED) && _MALLOC_TYPE_ENABLED && defined(_MALLOC_TYPED) + #define _CF_TYPED_ALLOC(override, type_param_pos) _MALLOC_TYPED(override, type_param_pos) + #define CF_HAS_TYPED_ALLOCATOR 1 + #endif /* defined(_MALLOC_TYPE_ENABLED) && _MALLOC_TYPE_ENABLED && defined(_MALLOC_TYPED) */ +#endif /* TARGET_OS_MAC && (defined(CF_BUILDING_CF) || defined(NSBUILDINGFOUNDATION)) */ + +#if !defined(_CF_TYPED_ALLOC) +#define _CF_TYPED_ALLOC(override, type_param_pos) +#define CF_HAS_TYPED_ALLOCATOR 0 +#endif + #if !defined(__MACTYPES__) #if !defined(_OS_OSTYPES_H) -#if DEPLOYMENT_RUNTIME_SWIFT - typedef _Bool Boolean; -#else + typedef unsigned char Boolean; -#endif + typedef unsigned char UInt8; typedef signed char SInt8; typedef unsigned short UInt16; @@ -650,11 +664,30 @@ CFAllocatorRef CFAllocatorGetDefault(void); CF_EXPORT CFAllocatorRef CFAllocatorCreate(CFAllocatorRef allocator, CFAllocatorContext *context); +/* Typed allocator interfaces + + These interfaces are provided to either serve as rewrite targets for the + compiler, or to be invoked internally to Foundation/CoreFoundation to + manually interfact with the typed allocator. +*/ + +CF_EXPORT +void *CFAllocatorAllocateTyped(CFAllocatorRef allocator, CFIndex size, CFAllocatorTypeID descriptor, CFOptionFlags hint) API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)); + +CF_EXPORT +void *CFAllocatorReallocateTyped(CFAllocatorRef allocator, void *ptr, CFIndex newsize, CFAllocatorTypeID descriptor, CFOptionFlags hint) API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)); + +CF_EXPORT +void *CFAllocatorAllocateBytes(CFAllocatorRef allocator, CFIndex size, CFOptionFlags hint) API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)); + +CF_EXPORT +void *CFAllocatorReallocateBytes(CFAllocatorRef allocator, void *ptr, CFIndex newsize, CFOptionFlags hint) API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)); + CF_EXPORT -void *CFAllocatorAllocate(CFAllocatorRef allocator, CFIndex size, CFOptionFlags hint); +void *CFAllocatorAllocate(CFAllocatorRef allocator, CFIndex size, CFOptionFlags hint) _CF_TYPED_ALLOC(CFAllocatorAllocateTyped, 2); CF_EXPORT -void *CFAllocatorReallocate(CFAllocatorRef allocator, void *ptr, CFIndex newsize, CFOptionFlags hint); +void *CFAllocatorReallocate(CFAllocatorRef allocator, void *ptr, CFIndex newsize, CFOptionFlags hint) _CF_TYPED_ALLOC(CFAllocatorReallocateTyped, 3); CF_EXPORT void CFAllocatorDeallocate(CFAllocatorRef allocator, void *ptr); @@ -682,14 +715,11 @@ CFTypeRef CFRetain(CFTypeRef cf); CF_EXPORT void CFRelease(CFTypeRef cf); -#if DEPLOYMENT_RUNTIME_SWIFT -#else CF_EXPORT CFTypeRef CFAutorelease(CFTypeRef CF_RELEASES_ARGUMENT arg) API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)); CF_EXPORT CFIndex CFGetRetainCount(CFTypeRef cf); -#endif CF_EXPORT Boolean CFEqual(CFTypeRef cf1, CFTypeRef cf2); @@ -711,12 +741,6 @@ CFTypeRef CFMakeCollectable(CFTypeRef cf) CF_AUTOMATED_REFCOUNT_UNAVAILABLE; CF_EXTERN_C_END -#if DEPLOYMENT_RUNTIME_SWIFT - -#define _CF_SWIFT_RC_PINNED_FLAG (0x1) -#define _CF_CONSTANT_OBJECT_STRONG_RC ((uintptr_t)_CF_SWIFT_RC_PINNED_FLAG) -#endif - #if __has_include() #include #endif diff --git a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBundle.h b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBundle.h index 66cb0b9a..d67feca7 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBundle.h +++ b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBundle.h @@ -151,6 +151,17 @@ CFArrayRef CFBundleCopyResourceURLsOfType(CFBundleRef bundle, CFStringRef resour CF_EXPORT CFStringRef CFBundleCopyLocalizedString(CFBundleRef bundle, CFStringRef key, CFStringRef value, CFStringRef tableName) CF_FORMAT_ARGUMENT(2); +/// Returns a localized string given a list of possible localizations. The one most suitable to use with the given ``bundle`` is returned. +/// - Parameters: +/// - bundle: The bundle to examine. +/// - key: The key for the localized string to retrieve. +/// - value: A default value to return if no value exists for ``key``. +/// - tableName: The name of the strings file to search. +/// - localizations: An array of BCP 47 language codes corresponding to available localizations. Bundle compares the array against its available localizations, and uses the best result to retrieve the localized string. If empty, we treat it as no localization is available, and may return a fallback. +/// - Returns: A localized version of the string designated by ``key`` in table ``tableName``. +CF_EXPORT +CFStringRef CFBundleCopyLocalizedStringForLocalizations(CFBundleRef bundle, CFStringRef key, CFStringRef value, CFStringRef tableName, CFArrayRef localizations) CF_RETURNS_RETAINED CF_FORMAT_ARGUMENT(2) API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4), visionos(2.4)) ; + #define CFCopyLocalizedString(key, comment) \ CFBundleCopyLocalizedString(CFBundleGetMainBundle(), (key), (key), NULL) #define CFCopyLocalizedStringFromTable(key, tbl, comment) \ diff --git a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFCalendar.h b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFCalendar.h index eb368506..e5f420a0 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFCalendar.h +++ b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFCalendar.h @@ -26,14 +26,17 @@ CFTypeID CFCalendarGetTypeID(void); CF_EXPORT CFCalendarRef CFCalendarCopyCurrent(void); +/** + Creates a calendar. The identifiers are the `kCF*Calendar` constants in CFLocale.h. +**/ CF_EXPORT CFCalendarRef CFCalendarCreateWithIdentifier(CFAllocatorRef allocator, CFCalendarIdentifier identifier); - // Create a calendar. The identifiers are the kCF*Calendar - // constants in CFLocale.h. +/** + Returns the calendar's identifier. + */ CF_EXPORT CFCalendarIdentifier CFCalendarGetIdentifier(CFCalendarRef calendar); - // Returns the calendar's identifier. CF_EXPORT CFLocaleRef CFCalendarCopyLocale(CFCalendarRef calendar); @@ -61,20 +64,21 @@ void CFCalendarSetMinimumDaysInFirstWeek(CFCalendarRef calendar, CFIndex mwd); typedef CF_OPTIONS(CFOptionFlags, CFCalendarUnit) { - kCFCalendarUnitEra = (1UL << 1), - kCFCalendarUnitYear = (1UL << 2), - kCFCalendarUnitMonth = (1UL << 3), - kCFCalendarUnitDay = (1UL << 4), - kCFCalendarUnitHour = (1UL << 5), - kCFCalendarUnitMinute = (1UL << 6), - kCFCalendarUnitSecond = (1UL << 7), - kCFCalendarUnitWeek API_DEPRECATED("Use kCFCalendarUnitWeekOfYear or kCFCalendarUnitWeekOfMonth instead", macos(10.4,10.10), ios(2.0,8.0), watchos(2.0,2.0), tvos(9.0,9.0)) = (1UL << 8), - kCFCalendarUnitWeekday = (1UL << 9), - kCFCalendarUnitWeekdayOrdinal = (1UL << 10), - kCFCalendarUnitQuarter API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = (1UL << 11), - kCFCalendarUnitWeekOfMonth API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = (1UL << 12), - kCFCalendarUnitWeekOfYear API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = (1UL << 13), - kCFCalendarUnitYearForWeekOfYear API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = (1UL << 14), + kCFCalendarUnitEra = (1UL << 1), + kCFCalendarUnitYear = (1UL << 2), + kCFCalendarUnitMonth = (1UL << 3), + kCFCalendarUnitDay = (1UL << 4), + kCFCalendarUnitHour = (1UL << 5), + kCFCalendarUnitMinute = (1UL << 6), + kCFCalendarUnitSecond = (1UL << 7), + kCFCalendarUnitWeek API_DEPRECATED("Use kCFCalendarUnitWeekOfYear or kCFCalendarUnitWeekOfMonth instead", macos(10.4,10.10), ios(2.0,8.0), watchos(2.0,2.0), tvos(9.0,9.0)) = (1UL << 8), + kCFCalendarUnitWeekday = (1UL << 9), + kCFCalendarUnitWeekdayOrdinal = (1UL << 10), + kCFCalendarUnitQuarter API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = (1UL << 11), + kCFCalendarUnitWeekOfMonth API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = (1UL << 12), + kCFCalendarUnitWeekOfYear API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = (1UL << 13), + kCFCalendarUnitYearForWeekOfYear API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = (1UL << 14), + kCFCalendarUnitDayOfYear API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)) = (1UL << 16), }; CF_EXPORT diff --git a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFLocale.h b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFLocale.h index 3acaf1b3..1705d484 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFLocale.h +++ b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFLocale.h @@ -181,7 +181,6 @@ CF_EXPORT const CFLocaleKey kCFLocaleAlternateQuotationEndDelimiterKey API_AVAIL // Values for kCFLocaleCalendarIdentifier typedef CFStringRef CFCalendarIdentifier CF_STRING_ENUM; -#if !0 CF_EXPORT const CFCalendarIdentifier kCFGregorianCalendar; CF_EXPORT const CFCalendarIdentifier kCFBuddhistCalendar; CF_EXPORT const CFCalendarIdentifier kCFChineseCalendar; @@ -195,7 +194,6 @@ CF_EXPORT const CFCalendarIdentifier kCFIndianCalendar API_AVAILABLE(macos(10.6) CF_EXPORT const CFCalendarIdentifier kCFISO8601Calendar API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); CF_EXPORT const CFCalendarIdentifier kCFIslamicTabularCalendar API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); CF_EXPORT const CFCalendarIdentifier kCFIslamicUmmAlQuraCalendar API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); -#endif CF_EXTERN_C_END CF_IMPLICIT_BRIDGING_DISABLED diff --git a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFNumberFormatter.h b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFNumberFormatter.h index 300064b2..959ff489 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFNumberFormatter.h +++ b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFNumberFormatter.h @@ -141,6 +141,20 @@ CF_EXPORT const CFNumberFormatterKey kCFNumberFormatterUseSignificantDigits API_ CF_EXPORT const CFNumberFormatterKey kCFNumberFormatterMinSignificantDigits API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); // CFNumber CF_EXPORT const CFNumberFormatterKey kCFNumberFormatterMaxSignificantDigits API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); // CFNumber +CF_EXPORT const CFNumberFormatterKey kCFNumberFormatterMinGroupingDigits API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)); // CFNumber + // Configures the minimum required number of digits preceding the first separator before the separator is shown. + // Grouping starts happening when the number of digits reaches `kCFNumberFormatterGroupingSize + kCFNumberFormatterMinGroupingDigits`. + // If `kCFNumberFormatterUseGroupingSeparator == false` the separator will not be shown and this property is ignored. + // Set `kCFNumberFormatterMinGroupingDigits == 1` to always show separators. + // Set `kCFNumberFormatterMinGroupingDigits == -1` to use the locale default minimum grouping digits. + // Note: `0` is an invalid value and the behavior is undefined. + // Example: + // `kCFNumberFormatterUseGroupingSeparator == true` and `kCFNumberFormatterGroupingSize == 3` and locale identifier is `en_US` + // Formatting values of 1000 and 10000 results in: + // `kCFNumberFormatterMinGroupingDigits == 1` 1,000 10,000 + // `kCFNumberFormatterMinGroupingDigits == 2` 1000 10,000 + // `kCFNumberFormatterMinGroupingDigits == -1` 1,000 10,000 (default for US English) + typedef CF_ENUM(CFIndex, CFNumberFormatterRoundingMode) { kCFNumberFormatterRoundCeiling = 0, kCFNumberFormatterRoundFloor = 1, diff --git a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFString.h b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFString.h index 39f84cae..905b2ece 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFString.h +++ b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFString.h @@ -154,54 +154,12 @@ since it is the default choice with Mac OS X developer tools. #endif #endif -#if DEPLOYMENT_RUNTIME_SWIFT - #if TARGET_OS_MAC - #define _CF_CONSTANT_STRING_SWIFT_CLASS $s15SwiftFoundation19_NSCFConstantStringCN - #else - #define _CF_CONSTANT_STRING_SWIFT_CLASS $s10Foundation19_NSCFConstantStringCN - #endif - -CF_EXPORT void *_CF_CONSTANT_STRING_SWIFT_CLASS[]; -#endif - -#if DEPLOYMENT_RUNTIME_SWIFT && TARGET_OS_MAC - -struct __CFConstStr { - struct { - __ptrauth_cf_objc_isa_pointer uintptr_t _cfisa; - uintptr_t _swift_rc; - uint64_t _cfinfoa; - } _base; - uint8_t *_ptr; -#if TARGET_RT_64_BIT && defined(__BIG_ENDIAN__) - uint64_t _length; -#else // 32-bit: - uint32_t _length; -#endif // TARGET_RT_64_BIT && defined(__BIG_ENDIAN__) -}; - -#if __BIG_ENDIAN__ -#define CFSTR(cStr) ({ \ - static struct __CFConstStr str = {{(uintptr_t)&_CF_CONSTANT_STRING_SWIFT_CLASS, _CF_CONSTANT_OBJECT_STRONG_RC, 0x00000000C8070000}, (uint8_t *)(cStr), sizeof(cStr) - 1}; \ - (CFStringRef)&str; \ -}) -#else // Little endian: -#define CFSTR(cStr) ({ \ - static struct __CFConstStr str = {{(uintptr_t)&_CF_CONSTANT_STRING_SWIFT_CLASS, _CF_CONSTANT_OBJECT_STRONG_RC, 0x07C8}, (uint8_t *)(cStr), sizeof(cStr) - 1}; \ - (CFStringRef)&str; \ -}) -#endif // __BIG_ENDIAN__ - -#else - #ifdef __CONSTANT_CFSTRINGS__ #define CFSTR(cStr) ((CFStringRef) __builtin___CFStringMakeConstantString ("" cStr "")) #else #define CFSTR(cStr) __CFStringMakeConstantString("" cStr "") #endif -#endif - #if defined(__GNUC__) && (__GNUC__*10+__GNUC_MINOR__ >= 42) && defined(__APPLE_CC__) && (__APPLE_CC__ > 1) && !defined(__INTEL_COMPILER) && TARGET_OS_MAC #define CF_FORMAT_FUNCTION(F,A) __attribute__((format(CFString, F, A))) #define CF_FORMAT_ARGUMENT(A) __attribute__((format_arg(A))) diff --git a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFURL.h b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFURL.h index b1a0326c..791a1c02 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFURL.h +++ b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFURL.h @@ -489,7 +489,7 @@ Boolean CFURLGetFSRef(CFURLRef url, struct FSRef *fsRef) API_DEPRECATED("Not sup #endif #endif -#if TARGET_OS_MAC || CF_BUILDING_CF || NSBUILDINGFOUNDATION || DEPLOYMENT_TARGET_SWIFT +#if TARGET_OS_MAC || CF_BUILDING_CF || NSBUILDINGFOUNDATION #if !0 CF_IMPLICIT_BRIDGING_DISABLED @@ -1210,8 +1210,6 @@ CF_EXPORT const CFStringRef kCFURLUbiquitousItemDownloadingStatusCurrent API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)); /* there is a local version of this item and it is the most up-to-date version known to this device. */ -#if !DEPLOYMENT_TARGET_SWIFT - typedef CF_OPTIONS(CFOptionFlags, CFURLBookmarkCreationOptions) { kCFURLBookmarkCreationMinimalBookmarkMask = ( 1UL << 9 ), // creates bookmark data with "less" information, which may be smaller but still be able to resolve in certain ways kCFURLBookmarkCreationSuitableForBookmarkFile = ( 1UL << 10 ), // include the properties required by CFURLWriteBookmarkDataToFile() in the bookmark data created @@ -1285,7 +1283,6 @@ Boolean CFURLStartAccessingSecurityScopedResource(CFURLRef url) API_AVAILABLE(ma CF_EXPORT void CFURLStopAccessingSecurityScopedResource(CFURLRef url) API_AVAILABLE(macos(10.7), ios(8.0), watchos(2.0), tvos(9.0)); // On OSX, available in MacOS X 10.7.3 and later -#endif /* !DEPLOYMENT_TARGET_SWIFT */ #endif #endif /* TARGET_OS_MAC || CF_BUILDING_CF || NSBUILDINGFOUNDATION || DEPLOYMENT_TARGET_SWIFT */ diff --git a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CoreFoundation.h b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CoreFoundation.h index e5c0fd33..ef7d3b69 100644 --- a/Frameworks/CoreFoundation.framework/Versions/A/Headers/CoreFoundation.h +++ b/Frameworks/CoreFoundation.framework/Versions/A/Headers/CoreFoundation.h @@ -57,9 +57,7 @@ #include #include #include -#if !0 #include -#endif #include #include #include @@ -79,9 +77,7 @@ #include #include #include -#if !0 #include -#endif #include #include #include diff --git a/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics.tbd b/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics.tbd index b87472a0..bdb536a9 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics.tbd +++ b/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics.tbd @@ -1,17 +1,1211 @@ --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, - arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics' -current-version: 1774.2.3 +current-version: 1889.4.8 compatibility-version: 64 +swift-abi-version: 7 exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, - arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ '$ld$install_name$os10.4$/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices', '$ld$install_name$os10.5$/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices', '$ld$install_name$os10.6$/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices', '$ld$install_name$os10.7$/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics024CGAffineTransformEqualToD0ySbSo0cD0V_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics10fpclassifyySiAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics11CGFLOAT_MAXAA7CGFloatVvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics11CGFLOAT_MINAA7CGFloatVvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics12CGPathAddArcyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JSbtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics12CGRectDivideyySo0C0V_SpyADGAeA7CGFloatVSo0C4EdgeVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics13CGContextClipyySo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics13CGPathAddPathyySo09CGMutableE3RefaSg_SPySo17CGAffineTransformVGSo0cG0aSgtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics13CGPathAddRectyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSo6CGRectVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics13kCGColorBlackSo11CFStringRefavg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics13kCGColorClearSo11CFStringRefavg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics13kCGColorWhiteSo11CFStringRefavg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathAddLinesyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSPySo7CGPointVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathAddRectsyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSPySo6CGRectVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleO7evenOddyA2CmFWC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleO7windingyA2CmFWC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleO8rawValueACSgSi_tcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleO8rawValueSivg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleO8rawValueSivpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleOMa$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleOMn$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleON$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleOSHAAMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleOSQAAMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics14CGPathFillRuleOSYAAMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics15CGContextAddArcyySo0C3RefaSg_AA7CGFloatVA4Gs5Int32VtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics15CGContextEOClipyySo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics17CGContextAddLinesyySo0C3RefaSg_SPySo7CGPointVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics17CGContextAddRectsyySo0C3RefaSg_SPySo6CGRectVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics17CGContextFillPathyySo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics17CGPathEqualToPathySbSo0C3RefaSg_AEtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics17CGPathMoveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVAJtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics18CGContextDrawImageyySo0C3RefaSg_So6CGRectVSo07CGImageF0aSgtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics18CGContextFillRectsyySo0C3RefaSg_SPySo6CGRectVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics19CGColorEqualToColorySbSo0C3RefaSg_AEtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics19CGContextEOFillPathyySo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics19CGGetLastMouseDeltas5Int32V1x_AD1ytyF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics19CGGetLastMouseDeltayySpys5Int32VGSg_AFtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics19CGPathAddArcToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics1roiyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics20CGColorGetComponentsySPyAA7CGFloatVGSo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics20CGContextClipToRectsyySo0C3RefaSg_SPySo6CGRectVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics20CGContextMoveToPointyySo0C3RefaSg_AA7CGFloatVAGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics20CGContextSetLineDashyySo0C3RefaSg_AA7CGFloatVSPyAGGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics20CGPathAddLineToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVAJtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics20CGPathAddRelativeArcyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics21CGPathAddCurveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA5JtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics22CGContextAddArcToPointyySo0C3RefaSg_AA7CGFloatVA4GtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics22CGPathAddEllipseInRectyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSo6CGRectVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics22_CGColorInitTrampolineMp$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics22_CGColorInitTrampolineP3red5green4blue5alphaxAA7CGFloatV_A3ItcfCTj$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics22_CGColorInitTrampolineP3red5green4blue5alphaxAA7CGFloatV_A3ItcfCTq$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics22_CGColorInitTrampolinePAAE16_colorLiteralRed5green4blue5alphaxSf_S3ftcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics22_CGColorInitTrampolineTL$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics23CGColorGetConstantColorySo0C3RefaSgSo08CFStringG0aSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics23CGContextAddLineToPointyySo0C3RefaSg_AA7CGFloatVAGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics23CGContextDrawTiledImageyySo0C3RefaSg_So6CGRectVSo07CGImageG0aSgtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics24CGContextAddCurveToPointyySo0C3RefaSg_AA7CGFloatVA5GtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics24CGContextDrawLayerInRectyySo0C3RefaSg_So6CGRectVSo07CGLayerH0aSgtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics24CGContextGetTextPositionySo7CGPointVSo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics24CGContextSetTextPositionyySo0C3RefaSg_AA7CGFloatVAGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics25CGColorSpaceGetColorTableyySo0cD3RefaSg_Spys5UInt8VGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics25CGContextDrawLayerAtPointyySo0C3RefaSg_So7CGPointVSo07CGLayerH0aSgtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics25CGPathAddQuadCurveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA3JtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics27CGContextStrokeLineSegmentsyySo0C3RefaSg_SPySo7CGPointVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics28CGContextAddQuadCurveToPointyySo0C3RefaSg_AA7CGFloatVA3GtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics29CGPathCreateCopyByDashingPathySo0C3RefaSgAE_SPySo17CGAffineTransformVGAA7CGFloatVSPyAJGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics2j0yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics2j1yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics2jnyAA7CGFloatVSi_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics2reoiyyAA7CGFloatVz_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics2y0yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics2y1yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics2ynyAA7CGFloatVSi_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics30CGColorSpaceGetColorTableCountySiSo0cD3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics30CGContextShowGlyphsAtPositionsyySo0C3RefaSg_SPys6UInt16VGSPySo7CGPointVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics30CGImageCreateWithMaskingColorsySo0C3RefaSgAE_SPyAA7CGFloatVGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics30CGPathCreateCopyByStrokingPathySo0C3RefaSgAE_SPySo17CGAffineTransformVGAA7CGFloatVSo9CGLineCapVSo0M4JoinVAJtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics38CGRectMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics38CGSizeMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics39CGPointMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics3cosyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics3erfyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics3expyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics3logyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics3nanyAA7CGFloatVSSF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics3powyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics3sinyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics3tanyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4acosyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4asinyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4atanyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4cbrtyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4coshyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4erfcyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4exp2yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4fdimyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4fmaxyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4fminyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4log2yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4logbyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4rintyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4sinhyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics4tanhyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5acoshyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5asinhyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5atan2yAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5atanhyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5expm1yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5hypotyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5ilogbySiAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5isinfySbAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5isnanySbAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5ldexpyAA7CGFloatVAD_SitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5log10yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics5log1pyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics6lgammayAA7CGFloatV_SitADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics6remquoyAA7CGFloatV_SitAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics6tgammayAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics7CGFloatV3maxACvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics7CGFloatV3minACvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics7signbitySiAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics8copysignyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics8isfiniteySbAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics8isnormalySbAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics9nearbyintyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$s12CoreGraphics9nextafteryAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGColorRefa12CoreGraphics01_A14InitTrampolineACMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGColorRefa12CoreGraphics01_A14InitTrampolineACWP$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGColorRefa12CoreGraphicsE10componentsSayAC7CGFloatVGSgvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGColorRefa12CoreGraphicsE10componentsSayAC7CGFloatVGSgvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGColorRefa12CoreGraphicsE5blackABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGColorRefa12CoreGraphicsE5clearABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGColorRefa12CoreGraphicsE5whiteABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGColorRefas26_ExpressibleByColorLiteral12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGEventRefa12CoreGraphicsE4dataSo06CFDataB0aSgvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGEventRefa12CoreGraphicsE4dataSo06CFDataB0aSgvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo10CGImageRefa12CoreGraphicsE4copy22maskingColorComponentsABSgSayAC7CGFloatVG_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE10showGlyphs_2atySays6UInt16VG_SaySo7CGPointVGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE11setLineDash5phase7lengthsyAC7CGFloatV_SayAHGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE12addQuadCurve2to7controlySo7CGPointV_AHtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvM$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvs$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE18strokeLineSegments7betweenySaySo7CGPointVG_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE4clip2toySaySo6CGRectVG_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE4clip5usingyAC14CGPathFillRuleO_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE4draw_2atySo07CGLayerB0a_So7CGPointVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE4draw_2in8byTilingySo07CGImageB0a_So6CGRectVSbtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE4draw_2inySo07CGLayerB0a_So6CGRectVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE4fillyySaySo6CGRectVGF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE4move2toySo7CGPointV_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE6addArc11tangent1End08tangent2H06radiusySo7CGPointV_AiC7CGFloatVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE6addArc6center6radius10startAngle03endJ09clockwiseySo7CGPointV_AC7CGFloatVA2MSbtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE7addLine2toySo7CGPointV_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE8addCurve2to8control18control2ySo7CGPointV_A2ItF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE8addLines7betweenySaySo7CGPointVG_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE8addRectsyySaySo6CGRectVGF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo12CGContextRefa12CoreGraphicsE8fillPath5usingyAC14CGPathFillRuleO_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo15CGColorSpaceRefa12CoreGraphicsE10colorTableSays5UInt8VGSgvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo15CGColorSpaceRefa12CoreGraphicsE10colorTableSays5UInt8VGSgvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE03addB0_9transformySo06CGPathC0a_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE10addEllipse2in9transformySo6CGRectV_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE12addQuadCurve2to7control9transformySo7CGPointV_AISo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE14addRelativeArc6center6radius10startAngle5delta9transformySo7CGPointV_AC7CGFloatVA2MSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE14addRoundedRect2in11cornerWidth0J6Height9transformySo6CGRectV_AC7CGFloatVALSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE4move2to9transformySo7CGPointV_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE6addArc11tangent1End08tangent2I06radius9transformySo7CGPointV_AjC7CGFloatVSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE6addArc6center6radius10startAngle03endK09clockwise9transformySo7CGPointV_AC7CGFloatVA2NSbSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE7addLine2to9transformySo7CGPointV_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE7addRect_9transformySo6CGRectV_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE8addCurve2to8control18control29transformySo7CGPointV_A2JSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE8addLines7between9transformySaySo7CGPointVG_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo16CGMutablePathRefa12CoreGraphicsE8addRects_9transformySaySo6CGRectVG_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo17CGAffineTransformV12CoreGraphicsE10isIdentitySbvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo17CGAffineTransformV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo17CGAffineTransformV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo17CGAffineTransformV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo17CGAffineTransformV12CoreGraphicsE8identityABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo17CGAffineTransformVSE12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo17CGAffineTransformVSQ12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo17CGAffineTransformVSe12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE10isInfiniteSbvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE12customMirrors0E0Vvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE12customMirrors0E0VvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE12standardizedABvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightABSd_S3dtcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightABSi_S3itcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightAbC7CGFloatV_A3ItcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE1xAC7CGFloatVvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE1xAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE1yAC7CGFloatVvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE1yAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE4maxXAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE4maxYAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE4midXAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE4midYAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE4minXAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE4minYAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE5widthAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE6heightAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE6isNullSbvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE7divided10atDistance4fromAB5slice_AB9remaindertAC7CGFloatV_So0A4EdgeVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE7isEmptySbvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE8integralABvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectV12CoreGraphicsE9__divided5slice9remainder10atDistance4fromySpyABG_AiC7CGFloatVSo0A4EdgeVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectVSE12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectVSQ12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectVSe12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectVs17CustomReflectable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGRectVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE12customMirrors0E0Vvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE12customMirrors0E0VvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE5width6heightABSd_SdtcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE5width6heightABSi_SitcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeVSE12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeVSQ12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeVSe12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeVs17CustomReflectable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo6CGSizeVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE12customMirrors0E0Vvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE12customMirrors0E0VvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE1x1yABSd_SdtcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE1x1yABSi_SitcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointVSE12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointVSQ12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointVSe12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointVs17CustomReflectable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo7CGPointVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorV12CoreGraphicsE2dx2dyABSd_SdtcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorV12CoreGraphicsE2dx2dyABSi_SitcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorVSE12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorVSQ12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorVSe12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo8CGVectorVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE10intersects_5usingSbAB_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE10normalized5usingAbC0A8FillRuleO_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE11subtracting_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE12intersection_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE15lineSubtracting_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE16lineIntersection_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE19componentsSeparated5usingSayABGAC0A8FillRuleO_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE19symmetricDifference_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE4copy16dashingWithPhase7lengths9transformAbC7CGFloatV_SayAIGSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE4copy17strokingWithWidth7lineCap0I4Join10miterLimit9transformAbC7CGFloatV_So06CGLineJ0VSo0pK0VAKSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE5union_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE8contains_5using9transformSbSo7CGPointV_AC0A8FillRuleOSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$1$10.15$15.0$_$sSo9CGPathRefa12CoreGraphicsE9flattened9thresholdAbC7CGFloatV_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics024CGAffineTransformEqualToD0ySbSo0cD0V_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics10fpclassifyySiAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics11CGFLOAT_MAXAA7CGFloatVvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics11CGFLOAT_MINAA7CGFloatVvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics12CGPathAddArcyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JSbtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics12CGRectDivideyySo0C0V_SpyADGAeA7CGFloatVSo0C4EdgeVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics13CGContextClipyySo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics13CGPathAddPathyySo09CGMutableE3RefaSg_SPySo17CGAffineTransformVGSo0cG0aSgtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics13CGPathAddRectyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSo6CGRectVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics13kCGColorBlackSo11CFStringRefavg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics13kCGColorClearSo11CFStringRefavg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics13kCGColorWhiteSo11CFStringRefavg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathAddLinesyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSPySo7CGPointVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathAddRectsyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSPySo6CGRectVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleO7evenOddyA2CmFWC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleO7windingyA2CmFWC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleO8rawValueACSgSi_tcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleO8rawValueSivg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleO8rawValueSivpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleOMa$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleOMn$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleON$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleOSHAAMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleOSQAAMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics14CGPathFillRuleOSYAAMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics15CGContextAddArcyySo0C3RefaSg_AA7CGFloatVA4Gs5Int32VtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics15CGContextEOClipyySo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics17CGContextAddLinesyySo0C3RefaSg_SPySo7CGPointVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics17CGContextAddRectsyySo0C3RefaSg_SPySo6CGRectVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics17CGContextFillPathyySo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics17CGPathEqualToPathySbSo0C3RefaSg_AEtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics17CGPathMoveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVAJtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics18CGContextDrawImageyySo0C3RefaSg_So6CGRectVSo07CGImageF0aSgtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics18CGContextFillRectsyySo0C3RefaSg_SPySo6CGRectVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics19CGColorEqualToColorySbSo0C3RefaSg_AEtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics19CGContextEOFillPathyySo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics19CGGetLastMouseDeltas5Int32V1x_AD1ytyF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics19CGGetLastMouseDeltayySpys5Int32VGSg_AFtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics19CGPathAddArcToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics1roiyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics20CGColorGetComponentsySPyAA7CGFloatVGSo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics20CGContextClipToRectsyySo0C3RefaSg_SPySo6CGRectVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics20CGContextMoveToPointyySo0C3RefaSg_AA7CGFloatVAGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics20CGContextSetLineDashyySo0C3RefaSg_AA7CGFloatVSPyAGGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics20CGPathAddLineToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVAJtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics20CGPathAddRelativeArcyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics21CGPathAddCurveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA5JtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics22CGContextAddArcToPointyySo0C3RefaSg_AA7CGFloatVA4GtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics22CGPathAddEllipseInRectyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSo6CGRectVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics22_CGColorInitTrampolineMp$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics22_CGColorInitTrampolineP3red5green4blue5alphaxAA7CGFloatV_A3ItcfCTj$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics22_CGColorInitTrampolineP3red5green4blue5alphaxAA7CGFloatV_A3ItcfCTq$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics22_CGColorInitTrampolinePAAE16_colorLiteralRed5green4blue5alphaxSf_S3ftcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics22_CGColorInitTrampolineTL$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics23CGColorGetConstantColorySo0C3RefaSgSo08CFStringG0aSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics23CGContextAddLineToPointyySo0C3RefaSg_AA7CGFloatVAGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics23CGContextDrawTiledImageyySo0C3RefaSg_So6CGRectVSo07CGImageG0aSgtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics24CGContextAddCurveToPointyySo0C3RefaSg_AA7CGFloatVA5GtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics24CGContextDrawLayerInRectyySo0C3RefaSg_So6CGRectVSo07CGLayerH0aSgtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics24CGContextGetTextPositionySo7CGPointVSo0C3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics24CGContextSetTextPositionyySo0C3RefaSg_AA7CGFloatVAGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics25CGColorSpaceGetColorTableyySo0cD3RefaSg_Spys5UInt8VGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics25CGContextDrawLayerAtPointyySo0C3RefaSg_So7CGPointVSo07CGLayerH0aSgtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics25CGPathAddQuadCurveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA3JtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics27CGContextStrokeLineSegmentsyySo0C3RefaSg_SPySo7CGPointVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics28CGContextAddQuadCurveToPointyySo0C3RefaSg_AA7CGFloatVA3GtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics29CGPathCreateCopyByDashingPathySo0C3RefaSgAE_SPySo17CGAffineTransformVGAA7CGFloatVSPyAJGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics2j0yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics2j1yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics2jnyAA7CGFloatVSi_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics2reoiyyAA7CGFloatVz_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics2y0yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics2y1yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics2ynyAA7CGFloatVSi_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics30CGColorSpaceGetColorTableCountySiSo0cD3RefaSgF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics30CGContextShowGlyphsAtPositionsyySo0C3RefaSg_SPys6UInt16VGSPySo7CGPointVGSitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics30CGImageCreateWithMaskingColorsySo0C3RefaSgAE_SPyAA7CGFloatVGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics30CGPathCreateCopyByStrokingPathySo0C3RefaSgAE_SPySo17CGAffineTransformVGAA7CGFloatVSo9CGLineCapVSo0M4JoinVAJtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics38CGRectMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics38CGSizeMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics39CGPointMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics3cosyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics3erfyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics3expyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics3logyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics3nanyAA7CGFloatVSSF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics3powyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics3sinyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics3tanyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4acosyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4asinyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4atanyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4cbrtyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4coshyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4erfcyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4exp2yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4fdimyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4fmaxyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4fminyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4log2yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4logbyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4rintyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4sinhyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics4tanhyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5acoshyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5asinhyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5atan2yAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5atanhyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5expm1yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5hypotyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5ilogbySiAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5isinfySbAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5isnanySbAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5ldexpyAA7CGFloatVAD_SitF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5log10yAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics5log1pyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics6lgammayAA7CGFloatV_SitADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics6remquoyAA7CGFloatV_SitAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics6tgammayAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics7CGFloatV3maxACvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics7CGFloatV3minACvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics7signbitySiAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics8copysignyAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics8isfiniteySbAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics8isnormalySbAA7CGFloatVF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics9nearbyintyAA7CGFloatVADF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$s12CoreGraphics9nextafteryAA7CGFloatVAD_ADtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGColorRefa12CoreGraphics01_A14InitTrampolineACMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGColorRefa12CoreGraphics01_A14InitTrampolineACWP$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGColorRefa12CoreGraphicsE10componentsSayAC7CGFloatVGSgvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGColorRefa12CoreGraphicsE10componentsSayAC7CGFloatVGSgvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGColorRefa12CoreGraphicsE5blackABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGColorRefa12CoreGraphicsE5clearABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGColorRefa12CoreGraphicsE5whiteABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGColorRefas26_ExpressibleByColorLiteral12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGEventRefa12CoreGraphicsE4dataSo06CFDataB0aSgvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGEventRefa12CoreGraphicsE4dataSo06CFDataB0aSgvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo10CGImageRefa12CoreGraphicsE4copy22maskingColorComponentsABSgSayAC7CGFloatVG_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE10showGlyphs_2atySays6UInt16VG_SaySo7CGPointVGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE11setLineDash5phase7lengthsyAC7CGFloatV_SayAHGtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE12addQuadCurve2to7controlySo7CGPointV_AHtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvM$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvs$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE18strokeLineSegments7betweenySaySo7CGPointVG_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE4clip2toySaySo6CGRectVG_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE4clip5usingyAC14CGPathFillRuleO_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE4draw_2atySo07CGLayerB0a_So7CGPointVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE4draw_2in8byTilingySo07CGImageB0a_So6CGRectVSbtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE4draw_2inySo07CGLayerB0a_So6CGRectVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE4fillyySaySo6CGRectVGF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE4move2toySo7CGPointV_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE6addArc11tangent1End08tangent2H06radiusySo7CGPointV_AiC7CGFloatVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE6addArc6center6radius10startAngle03endJ09clockwiseySo7CGPointV_AC7CGFloatVA2MSbtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE7addLine2toySo7CGPointV_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE8addCurve2to8control18control2ySo7CGPointV_A2ItF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE8addLines7betweenySaySo7CGPointVG_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE8addRectsyySaySo6CGRectVGF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo12CGContextRefa12CoreGraphicsE8fillPath5usingyAC14CGPathFillRuleO_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo15CGColorSpaceRefa12CoreGraphicsE10colorTableSays5UInt8VGSgvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo15CGColorSpaceRefa12CoreGraphicsE10colorTableSays5UInt8VGSgvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE03addB0_9transformySo06CGPathC0a_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE10addEllipse2in9transformySo6CGRectV_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE12addQuadCurve2to7control9transformySo7CGPointV_AISo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE14addRelativeArc6center6radius10startAngle5delta9transformySo7CGPointV_AC7CGFloatVA2MSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE14addRoundedRect2in11cornerWidth0J6Height9transformySo6CGRectV_AC7CGFloatVALSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE4move2to9transformySo7CGPointV_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE6addArc11tangent1End08tangent2I06radius9transformySo7CGPointV_AjC7CGFloatVSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE6addArc6center6radius10startAngle03endK09clockwise9transformySo7CGPointV_AC7CGFloatVA2NSbSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE7addLine2to9transformySo7CGPointV_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE7addRect_9transformySo6CGRectV_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE8addCurve2to8control18control29transformySo7CGPointV_A2JSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE8addLines7between9transformySaySo7CGPointVG_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo16CGMutablePathRefa12CoreGraphicsE8addRects_9transformySaySo6CGRectVG_So17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo17CGAffineTransformV12CoreGraphicsE10isIdentitySbvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo17CGAffineTransformV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo17CGAffineTransformV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo17CGAffineTransformV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo17CGAffineTransformV12CoreGraphicsE8identityABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo17CGAffineTransformVSE12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo17CGAffineTransformVSQ12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo17CGAffineTransformVSe12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE10isInfiniteSbvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE12customMirrors0E0Vvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE12customMirrors0E0VvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE12standardizedABvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightABSd_S3dtcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightABSi_S3itcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightAbC7CGFloatV_A3ItcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE1xAC7CGFloatVvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE1xAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE1yAC7CGFloatVvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE1yAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE4maxXAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE4maxYAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE4midXAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE4midYAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE4minXAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE4minYAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE5widthAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE6heightAC7CGFloatVvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE6isNullSbvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE7divided10atDistance4fromAB5slice_AB9remaindertAC7CGFloatV_So0A4EdgeVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE7isEmptySbvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE8integralABvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectV12CoreGraphicsE9__divided5slice9remainder10atDistance4fromySpyABG_AiC7CGFloatVSo0A4EdgeVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectVSE12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectVSQ12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectVSe12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectVs17CustomReflectable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGRectVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE12customMirrors0E0Vvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE12customMirrors0E0VvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE5width6heightABSd_SdtcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE5width6heightABSi_SitcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeVSE12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeVSQ12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeVSe12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeVs17CustomReflectable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo6CGSizeVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE12customMirrors0E0Vvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE12customMirrors0E0VvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE1x1yABSd_SdtcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE1x1yABSi_SitcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointVSE12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointVSQ12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointVSe12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointVs17CustomReflectable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo7CGPointVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorV12CoreGraphicsE2dx2dyABSd_SdtcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorV12CoreGraphicsE2dx2dyABSi_SitcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorVSE12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorVSQ12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorVSe12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo8CGVectorVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE10intersects_5usingSbAB_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE10normalized5usingAbC0A8FillRuleO_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE11subtracting_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE12intersection_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE15lineSubtracting_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE16lineIntersection_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE19componentsSeparated5usingSayABGAC0A8FillRuleO_tF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE19symmetricDifference_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE4copy16dashingWithPhase7lengths9transformAbC7CGFloatV_SayAIGSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE4copy17strokingWithWidth7lineCap0I4Join10miterLimit9transformAbC7CGFloatV_So06CGLineJ0VSo0pK0VAKSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE5union_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE8contains_5using9transformSbSo7CGPointV_AC0A8FillRuleOSo17CGAffineTransformVtF$', + '$ld$previous$/usr/lib/swift/libswiftCoreGraphics.dylib$1.0.0$6$13.1$18.0$_$sSo9CGPathRefa12CoreGraphicsE9flattened9thresholdAbC7CGFloatV_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics024CGAffineTransformEqualToD0ySbSo0cD0V_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics10fpclassifyySiAA7CGFloatVF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics11CGFLOAT_MAXAA7CGFloatVvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics11CGFLOAT_MINAA7CGFloatVvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics12CGPathAddArcyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JSbtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics12CGRectDivideyySo0C0V_SpyADGAeA7CGFloatVSo0C4EdgeVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics13CGContextClipyySo0C3RefaSgF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics13CGPathAddPathyySo09CGMutableE3RefaSg_SPySo17CGAffineTransformVGSo0cG0aSgtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics13CGPathAddRectyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSo6CGRectVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics13kCGColorBlackSo11CFStringRefavg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics13kCGColorClearSo11CFStringRefavg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics13kCGColorWhiteSo11CFStringRefavg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathAddLinesyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSPySo7CGPointVGSitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathAddRectsyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSPySo6CGRectVGSitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleO7evenOddyA2CmFWC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleO7windingyA2CmFWC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleO8rawValueACSgSi_tcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleO8rawValueSivg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleO8rawValueSivpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleOMa$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleOMn$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleON$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleOSHAAMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleOSQAAMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics14CGPathFillRuleOSYAAMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics15CGContextAddArcyySo0C3RefaSg_AA7CGFloatVA4Gs5Int32VtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics15CGContextEOClipyySo0C3RefaSgF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics17CGContextAddLinesyySo0C3RefaSg_SPySo7CGPointVGSitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics17CGContextAddRectsyySo0C3RefaSg_SPySo6CGRectVGSitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics17CGContextFillPathyySo0C3RefaSgF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics17CGPathEqualToPathySbSo0C3RefaSg_AEtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics17CGPathMoveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVAJtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics18CGContextDrawImageyySo0C3RefaSg_So6CGRectVSo07CGImageF0aSgtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics18CGContextFillRectsyySo0C3RefaSg_SPySo6CGRectVGSitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics19CGColorEqualToColorySbSo0C3RefaSg_AEtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics19CGContextEOFillPathyySo0C3RefaSgF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics19CGGetLastMouseDeltas5Int32V1x_AD1ytyF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics19CGGetLastMouseDeltayySpys5Int32VGSg_AFtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics19CGPathAddArcToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics1roiyAA7CGFloatVAD_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics20CGColorGetComponentsySPyAA7CGFloatVGSo0C3RefaSgF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics20CGContextClipToRectsyySo0C3RefaSg_SPySo6CGRectVGSitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics20CGContextMoveToPointyySo0C3RefaSg_AA7CGFloatVAGtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics20CGContextSetLineDashyySo0C3RefaSg_AA7CGFloatVSPyAGGSitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics20CGPathAddLineToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVAJtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics20CGPathAddRelativeArcyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics21CGPathAddCurveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA5JtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics22CGContextAddArcToPointyySo0C3RefaSg_AA7CGFloatVA4GtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics22CGPathAddEllipseInRectyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSo6CGRectVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics22_CGColorInitTrampolineMp$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics22_CGColorInitTrampolineP3red5green4blue5alphaxAA7CGFloatV_A3ItcfCTj$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics22_CGColorInitTrampolineP3red5green4blue5alphaxAA7CGFloatV_A3ItcfCTq$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics22_CGColorInitTrampolinePAAE16_colorLiteralRed5green4blue5alphaxSf_S3ftcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics22_CGColorInitTrampolineTL$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics23CGColorGetConstantColorySo0C3RefaSgSo08CFStringG0aSgF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics23CGContextAddLineToPointyySo0C3RefaSg_AA7CGFloatVAGtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics23CGContextDrawTiledImageyySo0C3RefaSg_So6CGRectVSo07CGImageG0aSgtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics24CGContextAddCurveToPointyySo0C3RefaSg_AA7CGFloatVA5GtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics24CGContextDrawLayerInRectyySo0C3RefaSg_So6CGRectVSo07CGLayerH0aSgtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics24CGContextGetTextPositionySo7CGPointVSo0C3RefaSgF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics24CGContextSetTextPositionyySo0C3RefaSg_AA7CGFloatVAGtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics25CGColorSpaceGetColorTableyySo0cD3RefaSg_Spys5UInt8VGtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics25CGContextDrawLayerAtPointyySo0C3RefaSg_So7CGPointVSo07CGLayerH0aSgtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics25CGPathAddQuadCurveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA3JtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics27CGContextStrokeLineSegmentsyySo0C3RefaSg_SPySo7CGPointVGSitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics28CGContextAddQuadCurveToPointyySo0C3RefaSg_AA7CGFloatVA3GtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics29CGPathCreateCopyByDashingPathySo0C3RefaSgAE_SPySo17CGAffineTransformVGAA7CGFloatVSPyAJGSitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics2j0yAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics2j1yAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics2jnyAA7CGFloatVSi_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics2reoiyyAA7CGFloatVz_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics2y0yAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics2y1yAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics2ynyAA7CGFloatVSi_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics30CGColorSpaceGetColorTableCountySiSo0cD3RefaSgF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics30CGContextShowGlyphsAtPositionsyySo0C3RefaSg_SPys6UInt16VGSPySo7CGPointVGSitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics30CGImageCreateWithMaskingColorsySo0C3RefaSgAE_SPyAA7CGFloatVGtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics30CGPathCreateCopyByStrokingPathySo0C3RefaSgAE_SPySo17CGAffineTransformVGAA7CGFloatVSo9CGLineCapVSo0M4JoinVAJtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics38CGRectMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics38CGSizeMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics39CGPointMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics3cosyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics3erfyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics3expyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics3logyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics3nanyAA7CGFloatVSSF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics3powyAA7CGFloatVAD_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics3sinyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics3tanyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4acosyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4asinyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4atanyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4cbrtyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4coshyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4erfcyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4exp2yAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4fdimyAA7CGFloatVAD_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4fmaxyAA7CGFloatVAD_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4fminyAA7CGFloatVAD_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4log2yAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4logbyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4rintyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4sinhyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics4tanhyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5acoshyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5asinhyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5atan2yAA7CGFloatVAD_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5atanhyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5expm1yAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5hypotyAA7CGFloatVAD_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5ilogbySiAA7CGFloatVF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5isinfySbAA7CGFloatVF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5isnanySbAA7CGFloatVF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5ldexpyAA7CGFloatVAD_SitF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5log10yAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics5log1pyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics6lgammayAA7CGFloatV_SitADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics6remquoyAA7CGFloatV_SitAD_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics6tgammayAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics7CGFloatV3maxACvgZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics7CGFloatV3minACvgZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics7signbitySiAA7CGFloatVF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics8copysignyAA7CGFloatVAD_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics8isfiniteySbAA7CGFloatVF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics8isnormalySbAA7CGFloatVF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics9nearbyintyAA7CGFloatVADF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$s12CoreGraphics9nextafteryAA7CGFloatVAD_ADtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGColorRefa12CoreGraphics01_A14InitTrampolineACMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGColorRefa12CoreGraphics01_A14InitTrampolineACWP$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGColorRefa12CoreGraphicsE10componentsSayAC7CGFloatVGSgvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGColorRefa12CoreGraphicsE10componentsSayAC7CGFloatVGSgvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGColorRefa12CoreGraphicsE5blackABvgZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGColorRefa12CoreGraphicsE5clearABvgZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGColorRefa12CoreGraphicsE5whiteABvgZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGColorRefas26_ExpressibleByColorLiteral12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGEventRefa12CoreGraphicsE4dataSo06CFDataB0aSgvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGEventRefa12CoreGraphicsE4dataSo06CFDataB0aSgvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo10CGImageRefa12CoreGraphicsE4copy22maskingColorComponentsABSgSayAC7CGFloatVG_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE10showGlyphs_2atySays6UInt16VG_SaySo7CGPointVGtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE11setLineDash5phase7lengthsyAC7CGFloatV_SayAHGtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE12addQuadCurve2to7controlySo7CGPointV_AHtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvM$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvs$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE18strokeLineSegments7betweenySaySo7CGPointVG_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE4clip2toySaySo6CGRectVG_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE4clip5usingyAC14CGPathFillRuleO_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE4draw_2atySo07CGLayerB0a_So7CGPointVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE4draw_2in8byTilingySo07CGImageB0a_So6CGRectVSbtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE4draw_2inySo07CGLayerB0a_So6CGRectVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE4fillyySaySo6CGRectVGF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE4move2toySo7CGPointV_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE6addArc11tangent1End08tangent2H06radiusySo7CGPointV_AiC7CGFloatVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE6addArc6center6radius10startAngle03endJ09clockwiseySo7CGPointV_AC7CGFloatVA2MSbtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE7addLine2toySo7CGPointV_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE8addCurve2to8control18control2ySo7CGPointV_A2ItF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE8addLines7betweenySaySo7CGPointVG_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE8addRectsyySaySo6CGRectVGF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo12CGContextRefa12CoreGraphicsE8fillPath5usingyAC14CGPathFillRuleO_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo15CGColorSpaceRefa12CoreGraphicsE10colorTableSays5UInt8VGSgvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo15CGColorSpaceRefa12CoreGraphicsE10colorTableSays5UInt8VGSgvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE03addB0_9transformySo06CGPathC0a_So17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE10addEllipse2in9transformySo6CGRectV_So17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE12addQuadCurve2to7control9transformySo7CGPointV_AISo17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE14addRelativeArc6center6radius10startAngle5delta9transformySo7CGPointV_AC7CGFloatVA2MSo17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE14addRoundedRect2in11cornerWidth0J6Height9transformySo6CGRectV_AC7CGFloatVALSo17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE4move2to9transformySo7CGPointV_So17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE6addArc11tangent1End08tangent2I06radius9transformySo7CGPointV_AjC7CGFloatVSo17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE6addArc6center6radius10startAngle03endK09clockwise9transformySo7CGPointV_AC7CGFloatVA2NSbSo17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE7addLine2to9transformySo7CGPointV_So17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE7addRect_9transformySo6CGRectV_So17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE8addCurve2to8control18control29transformySo7CGPointV_A2JSo17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE8addLines7between9transformySaySo7CGPointVG_So17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo16CGMutablePathRefa12CoreGraphicsE8addRects_9transformySaySo6CGRectVG_So17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo17CGAffineTransformV12CoreGraphicsE10isIdentitySbvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo17CGAffineTransformV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo17CGAffineTransformV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo17CGAffineTransformV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo17CGAffineTransformV12CoreGraphicsE8identityABvgZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo17CGAffineTransformVSE12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo17CGAffineTransformVSQ12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo17CGAffineTransformVSe12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE10isInfiniteSbvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE12customMirrors0E0Vvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE12customMirrors0E0VvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE12standardizedABvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightABSd_S3dtcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightABSi_S3itcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightAbC7CGFloatV_A3ItcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE1xAC7CGFloatVvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE1xAC7CGFloatVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE1yAC7CGFloatVvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE1yAC7CGFloatVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE4maxXAC7CGFloatVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE4maxYAC7CGFloatVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE4midXAC7CGFloatVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE4midYAC7CGFloatVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE4minXAC7CGFloatVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE4minYAC7CGFloatVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE5widthAC7CGFloatVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE6heightAC7CGFloatVvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE6isNullSbvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE7divided10atDistance4fromAB5slice_AB9remaindertAC7CGFloatV_So0A4EdgeVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE7isEmptySbvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE8integralABvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectV12CoreGraphicsE9__divided5slice9remainder10atDistance4fromySpyABG_AiC7CGFloatVSo0A4EdgeVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectVSE12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectVSQ12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectVSe12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectVs17CustomReflectable12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGRectVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE12customMirrors0E0Vvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE12customMirrors0E0VvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE5width6heightABSd_SdtcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE5width6heightABSi_SitcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeVSE12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeVSQ12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeVSe12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeVs17CustomReflectable12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo6CGSizeVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE12customMirrors0E0Vvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE12customMirrors0E0VvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE1x1yABSd_SdtcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE1x1yABSi_SitcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointVSE12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointVSQ12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointVSe12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointVs17CustomReflectable12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo7CGPointVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorV12CoreGraphicsE16debugDescriptionSSvg$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorV12CoreGraphicsE16debugDescriptionSSvpMV$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorV12CoreGraphicsE2dx2dyABSd_SdtcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorV12CoreGraphicsE2dx2dyABSi_SitcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorV12CoreGraphicsE2eeoiySbAB_ABtFZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorV12CoreGraphicsE4fromABs7Decoder_p_tKcfC$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorV12CoreGraphicsE4zeroABvgZ$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorV12CoreGraphicsE6encode2toys7Encoder_p_tKF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorVSE12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorVSQ12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorVSe12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo8CGVectorVs28CustomDebugStringConvertible12CoreGraphicsMc$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE10intersects_5usingSbAB_AC0A8FillRuleOtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE10normalized5usingAbC0A8FillRuleO_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE11subtracting_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE12intersection_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE15lineSubtracting_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE16lineIntersection_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE19componentsSeparated5usingSayABGAC0A8FillRuleO_tF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE19symmetricDifference_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE4copy16dashingWithPhase7lengths9transformAbC7CGFloatV_SayAIGSo17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE4copy17strokingWithWidth7lineCap0I4Join10miterLimit9transformAbC7CGFloatV_So06CGLineJ0VSo0pK0VAKSo17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE5union_5usingA2B_AC0A8FillRuleOtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE8contains_5using9transformSbSo7CGPointV_AC0A8FillRuleOSo17CGAffineTransformVtF$', + '$ld$previous$@rpath/libswiftCoreGraphics.dylib$1.0.0$1$10.9$10.15$_$sSo9CGPathRefa12CoreGraphicsE9flattened9thresholdAbC7CGFloatV_tF$', + '_$s12CoreGraphics024CGAffineTransformEqualToD0ySbSo0cD0V_ADtF', + '_$s12CoreGraphics10fpclassifyySiAA7CGFloatVF', '_$s12CoreGraphics11CGFLOAT_MAXAA7CGFloatVvg', + '_$s12CoreGraphics11CGFLOAT_MINAA7CGFloatVvg', '_$s12CoreGraphics12CGPathAddArcyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JSbtF', + '_$s12CoreGraphics12CGRectDivideyySo0C0V_SpyADGAeA7CGFloatVSo0C4EdgeVtF', + '_$s12CoreGraphics13CGContextClipyySo0C3RefaSgF', '_$s12CoreGraphics13CGPathAddPathyySo09CGMutableE3RefaSg_SPySo17CGAffineTransformVGSo0cG0aSgtF', + '_$s12CoreGraphics13CGPathAddRectyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSo6CGRectVtF', + '_$s12CoreGraphics13kCGColorBlackSo11CFStringRefavg', '_$s12CoreGraphics13kCGColorClearSo11CFStringRefavg', + '_$s12CoreGraphics13kCGColorWhiteSo11CFStringRefavg', '_$s12CoreGraphics14CGPathAddLinesyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSPySo7CGPointVGSitF', + '_$s12CoreGraphics14CGPathAddRectsyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSPySo6CGRectVGSitF', + '_$s12CoreGraphics14CGPathFillRuleO7evenOddyA2CmFWC', '_$s12CoreGraphics14CGPathFillRuleO7windingyA2CmFWC', + '_$s12CoreGraphics14CGPathFillRuleO8rawValueACSgSi_tcfC', + '_$s12CoreGraphics14CGPathFillRuleO8rawValueSivg', '_$s12CoreGraphics14CGPathFillRuleO8rawValueSivpMV', + '_$s12CoreGraphics14CGPathFillRuleOMa', '_$s12CoreGraphics14CGPathFillRuleOMn', + '_$s12CoreGraphics14CGPathFillRuleON', '_$s12CoreGraphics14CGPathFillRuleOSHAAMc', + '_$s12CoreGraphics14CGPathFillRuleOSQAAMc', '_$s12CoreGraphics14CGPathFillRuleOSYAAMc', + '_$s12CoreGraphics15CGContextAddArcyySo0C3RefaSg_AA7CGFloatVA4Gs5Int32VtF', + '_$s12CoreGraphics15CGContextEOClipyySo0C3RefaSgF', '_$s12CoreGraphics17CGContextAddLinesyySo0C3RefaSg_SPySo7CGPointVGSitF', + '_$s12CoreGraphics17CGContextAddRectsyySo0C3RefaSg_SPySo6CGRectVGSitF', + '_$s12CoreGraphics17CGContextFillPathyySo0C3RefaSgF', '_$s12CoreGraphics17CGPathEqualToPathySbSo0C3RefaSg_AEtF', + '_$s12CoreGraphics17CGPathMoveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVAJtF', + '_$s12CoreGraphics18CGContextDrawImageyySo0C3RefaSg_So6CGRectVSo07CGImageF0aSgtF', + '_$s12CoreGraphics18CGContextFillRectsyySo0C3RefaSg_SPySo6CGRectVGSitF', + '_$s12CoreGraphics19CGColorEqualToColorySbSo0C3RefaSg_AEtF', + '_$s12CoreGraphics19CGContextEOFillPathyySo0C3RefaSgF', '_$s12CoreGraphics19CGGetLastMouseDeltas5Int32V1x_AD1ytyF', + '_$s12CoreGraphics19CGGetLastMouseDeltayySpys5Int32VGSg_AFtF', + '_$s12CoreGraphics19CGPathAddArcToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JtF', + '_$s12CoreGraphics1roiyAA7CGFloatVAD_ADtF', '_$s12CoreGraphics20CGColorGetComponentsySPyAA7CGFloatVGSo0C3RefaSgF', + '_$s12CoreGraphics20CGContextClipToRectsyySo0C3RefaSg_SPySo6CGRectVGSitF', + '_$s12CoreGraphics20CGContextMoveToPointyySo0C3RefaSg_AA7CGFloatVAGtF', + '_$s12CoreGraphics20CGContextSetLineDashyySo0C3RefaSg_AA7CGFloatVSPyAGGSitF', + '_$s12CoreGraphics20CGPathAddLineToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVAJtF', + '_$s12CoreGraphics20CGPathAddRelativeArcyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA4JtF', + '_$s12CoreGraphics20FloatRangeExpressionMp', '_$s12CoreGraphics20FloatRangeExpressionP7boundedSnyAA7CGFloatVGvgTj', + '_$s12CoreGraphics20FloatRangeExpressionP7boundedSnyAA7CGFloatVGvgTq', + '_$s12CoreGraphics20FloatRangeExpressionTL', '_$s12CoreGraphics21CGPathAddCurveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA5JtF', + '_$s12CoreGraphics22CGContextAddArcToPointyySo0C3RefaSg_AA7CGFloatVA4GtF', + '_$s12CoreGraphics22CGPathAddEllipseInRectyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGSo6CGRectVtF', + '_$s12CoreGraphics22_CGColorInitTrampolineMp', '_$s12CoreGraphics22_CGColorInitTrampolineP3red5green4blue5alphaxAA7CGFloatV_A3ItcfCTj', + '_$s12CoreGraphics22_CGColorInitTrampolineP3red5green4blue5alphaxAA7CGFloatV_A3ItcfCTq', + '_$s12CoreGraphics22_CGColorInitTrampolinePAAE16_colorLiteralRed5green4blue5alphaxSf_S3ftcfC', + '_$s12CoreGraphics22_CGColorInitTrampolineTL', '_$s12CoreGraphics23CGColorGetConstantColorySo0C3RefaSgSo08CFStringG0aSgF', + '_$s12CoreGraphics23CGContextAddLineToPointyySo0C3RefaSg_AA7CGFloatVAGtF', + '_$s12CoreGraphics23CGContextDrawTiledImageyySo0C3RefaSg_So6CGRectVSo07CGImageG0aSgtF', + '_$s12CoreGraphics24CGContextAddCurveToPointyySo0C3RefaSg_AA7CGFloatVA5GtF', + '_$s12CoreGraphics24CGContextDrawLayerInRectyySo0C3RefaSg_So6CGRectVSo07CGLayerH0aSgtF', + '_$s12CoreGraphics24CGContextGetTextPositionySo7CGPointVSo0C3RefaSgF', + '_$s12CoreGraphics24CGContextSetTextPositionyySo0C3RefaSg_AA7CGFloatVAGtF', + '_$s12CoreGraphics25CGColorSpaceGetColorTableyySo0cD3RefaSg_Spys5UInt8VGtF', + '_$s12CoreGraphics25CGContextDrawLayerAtPointyySo0C3RefaSg_So7CGPointVSo07CGLayerH0aSgtF', + '_$s12CoreGraphics25CGPathAddQuadCurveToPointyySo16CGMutablePathRefaSg_SPySo17CGAffineTransformVGAA7CGFloatVA3JtF', + '_$s12CoreGraphics27CGContextStrokeLineSegmentsyySo0C3RefaSg_SPySo7CGPointVGSitF', + '_$s12CoreGraphics28CGContextAddQuadCurveToPointyySo0C3RefaSg_AA7CGFloatVA3GtF', + '_$s12CoreGraphics29CGPathCreateCopyByDashingPathySo0C3RefaSgAE_SPySo17CGAffineTransformVGAA7CGFloatVSPyAJGSitF', + '_$s12CoreGraphics2j0yAA7CGFloatVADF', '_$s12CoreGraphics2j1yAA7CGFloatVADF', + '_$s12CoreGraphics2jnyAA7CGFloatVSi_ADtF', '_$s12CoreGraphics2reoiyyAA7CGFloatVz_ADtF', + '_$s12CoreGraphics2y0yAA7CGFloatVADF', '_$s12CoreGraphics2y1yAA7CGFloatVADF', + '_$s12CoreGraphics2ynyAA7CGFloatVSi_ADtF', '_$s12CoreGraphics30CGColorSpaceGetColorTableCountySiSo0cD3RefaSgF', + '_$s12CoreGraphics30CGContextShowGlyphsAtPositionsyySo0C3RefaSg_SPys6UInt16VGSPySo7CGPointVGSitF', + '_$s12CoreGraphics30CGImageCreateWithMaskingColorsySo0C3RefaSgAE_SPyAA7CGFloatVGtF', + '_$s12CoreGraphics30CGPathCreateCopyByStrokingPathySo0C3RefaSgAE_SPySo17CGAffineTransformVGAA7CGFloatVSo9CGLineCapVSo0M4JoinVAJtF', + '_$s12CoreGraphics37CGContextDrawImageApplyingToneMapping___8applying7optionsSbSo0C3RefaSg_So6CGRectVSo07CGImageK0aSgSo06CGToneH0VSo012CFDictionaryK0aSgtF', + '_$s12CoreGraphics38CGRectMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF', + '_$s12CoreGraphics38CGSizeMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF', + '_$s12CoreGraphics39CGPointMakeWithDictionaryRepresentationySbSo15CFDictionaryRefaSg_SpySo0C0VGtF', + '_$s12CoreGraphics3cosyAA7CGFloatVADF', '_$s12CoreGraphics3erfyAA7CGFloatVADF', + '_$s12CoreGraphics3expyAA7CGFloatVADF', '_$s12CoreGraphics3logyAA7CGFloatVADF', + '_$s12CoreGraphics3nanyAA7CGFloatVSSF', '_$s12CoreGraphics3powyAA7CGFloatVAD_ADtF', + '_$s12CoreGraphics3sinyAA7CGFloatVADF', '_$s12CoreGraphics3tanyAA7CGFloatVADF', + '_$s12CoreGraphics4acosyAA7CGFloatVADF', '_$s12CoreGraphics4asinyAA7CGFloatVADF', + '_$s12CoreGraphics4atanyAA7CGFloatVADF', '_$s12CoreGraphics4cbrtyAA7CGFloatVADF', + '_$s12CoreGraphics4coshyAA7CGFloatVADF', '_$s12CoreGraphics4erfcyAA7CGFloatVADF', + '_$s12CoreGraphics4exp2yAA7CGFloatVADF', '_$s12CoreGraphics4fdimyAA7CGFloatVAD_ADtF', + '_$s12CoreGraphics4fmaxyAA7CGFloatVAD_ADtF', '_$s12CoreGraphics4fminyAA7CGFloatVAD_ADtF', + '_$s12CoreGraphics4log2yAA7CGFloatVADF', '_$s12CoreGraphics4logbyAA7CGFloatVADF', + '_$s12CoreGraphics4rintyAA7CGFloatVADF', '_$s12CoreGraphics4sinhyAA7CGFloatVADF', + '_$s12CoreGraphics4tanhyAA7CGFloatVADF', '_$s12CoreGraphics5acoshyAA7CGFloatVADF', + '_$s12CoreGraphics5asinhyAA7CGFloatVADF', '_$s12CoreGraphics5atan2yAA7CGFloatVAD_ADtF', + '_$s12CoreGraphics5atanhyAA7CGFloatVADF', '_$s12CoreGraphics5expm1yAA7CGFloatVADF', + '_$s12CoreGraphics5hypotyAA7CGFloatVAD_ADtF', '_$s12CoreGraphics5ilogbySiAA7CGFloatVF', + '_$s12CoreGraphics5isinfySbAA7CGFloatVF', '_$s12CoreGraphics5isnanySbAA7CGFloatVF', + '_$s12CoreGraphics5ldexpyAA7CGFloatVAD_SitF', '_$s12CoreGraphics5log10yAA7CGFloatVADF', + '_$s12CoreGraphics5log1pyAA7CGFloatVADF', '_$s12CoreGraphics6RegionV02cgC0ACSo11CGRegionRefa_tcfC', + '_$s12CoreGraphics6RegionV02cgC0So11CGRegionRefavg', '_$s12CoreGraphics6RegionV02cgC0So11CGRegionRefavpMV', + '_$s12CoreGraphics6RegionV10boundsRectSo6CGRectVvg', '_$s12CoreGraphics6RegionV10boundsRectSo6CGRectVvpMV', + '_$s12CoreGraphics6RegionV10isDisjoint4withSbAC_tF', '_$s12CoreGraphics6RegionV10isInfiniteSbvg', + '_$s12CoreGraphics6RegionV10isInfiniteSbvpMV', '_$s12CoreGraphics6RegionV10isRectOnlySbvg', + '_$s12CoreGraphics6RegionV10isRectOnlySbvpMV', '_$s12CoreGraphics6RegionV10isSuperset2ofSbAC_tF', + '_$s12CoreGraphics6RegionV10startIndexAC0E0Vvg', '_$s12CoreGraphics6RegionV10startIndexAC0E0VvpMV', + '_$s12CoreGraphics6RegionV10subregions7optionsQrAC14ContourOptionsV_tF', + '_$s12CoreGraphics6RegionV10subregions7optionsQrAC14ContourOptionsV_tFQOMQ', + '_$s12CoreGraphics6RegionV11contourPath7optionsSo9CGPathRefaAC14ContourOptionsV_tF', + '_$s12CoreGraphics6RegionV12customMirrors0E0Vvg', '_$s12CoreGraphics6RegionV12customMirrors0E0VvpMV', + '_$s12CoreGraphics6RegionV14ContourOptionsV12excludeHolesAEvgZ', + '_$s12CoreGraphics6RegionV14ContourOptionsV12excludeHolesAEvpZMV', + '_$s12CoreGraphics6RegionV14ContourOptionsV26includeCornerIntersectionsAEvgZ', + '_$s12CoreGraphics6RegionV14ContourOptionsV26includeCornerIntersectionsAEvpZMV', + '_$s12CoreGraphics6RegionV14ContourOptionsV8rawValueAESi_tcfC', + '_$s12CoreGraphics6RegionV14ContourOptionsV8rawValueSivg', + '_$s12CoreGraphics6RegionV14ContourOptionsV8rawValueSivpMV', + '_$s12CoreGraphics6RegionV14ContourOptionsVMa', '_$s12CoreGraphics6RegionV14ContourOptionsVMn', + '_$s12CoreGraphics6RegionV14ContourOptionsVN', '_$s12CoreGraphics6RegionV14ContourOptionsVSQAAMc', + '_$s12CoreGraphics6RegionV14ContourOptionsVSYAAMc', '_$s12CoreGraphics6RegionV14ContourOptionsVs10SetAlgebraAAMc', + '_$s12CoreGraphics6RegionV14ContourOptionsVs25ExpressibleByArrayLiteralAAMc', + '_$s12CoreGraphics6RegionV14ContourOptionsVs9OptionSetAAMc', + '_$s12CoreGraphics6RegionV16debugDescriptionSSvg', '_$s12CoreGraphics6RegionV16debugDescriptionSSvpMV', + '_$s12CoreGraphics6RegionV16formIntersectionyyACF', '_$s12CoreGraphics6RegionV16formIntersectionyySo6CGRectVF', + '_$s12CoreGraphics6RegionV18dataRepresentation10Foundation4DataVvg', + '_$s12CoreGraphics6RegionV18dataRepresentation10Foundation4DataVvpMV', + '_$s12CoreGraphics6RegionV18dataRepresentationACSg10Foundation4DataV_tcfC', + '_$s12CoreGraphics6RegionV1x1yAcA7CGFloatV5lower_AG5uppert_AgH_AgIttcfC', + '_$s12CoreGraphics6RegionV23formSymmetricDifferenceyyACF', + '_$s12CoreGraphics6RegionV23formSymmetricDifferenceyySo6CGRectVF', + '_$s12CoreGraphics6RegionV2eeoiySbAC_ACtFZ', '_$s12CoreGraphics6RegionV4areaAA7CGFloatVvpMV', + '_$s12CoreGraphics6RegionV4fromACs7Decoder_p_tKcfC', '_$s12CoreGraphics6RegionV4hash4intoys6HasherVz_tF', + '_$s12CoreGraphics6RegionV5IndexV1loiySbAE_AEtFZ', '_$s12CoreGraphics6RegionV5IndexV2eeoiySbAE_AEtFZ', + '_$s12CoreGraphics6RegionV5IndexVMa', '_$s12CoreGraphics6RegionV5IndexVMn', + '_$s12CoreGraphics6RegionV5IndexVN', '_$s12CoreGraphics6RegionV5IndexVSLAAMc', + '_$s12CoreGraphics6RegionV5IndexVSQAAMc', '_$s12CoreGraphics6RegionV5applyyySo17CGAffineTransformVF', + '_$s12CoreGraphics6RegionV5applyyyxSlRzAC9OperationO7ElementRtzlF', + '_$s12CoreGraphics6RegionV5index5afterAC5IndexVAGn_tF', '_$s12CoreGraphics6RegionV5index6beforeAC5IndexVAGn_tF', + '_$s12CoreGraphics6RegionV5rectsACx_tcSTRzSo6CGRectV7ElementRtzlufC', + '_$s12CoreGraphics6RegionV5rectsQrvg', '_$s12CoreGraphics6RegionV5rectsQrvpMV', + '_$s12CoreGraphics6RegionV5rectsQrvpQOMQ', '_$s12CoreGraphics6RegionV6PointsV10startIndexSivg', + '_$s12CoreGraphics6RegionV6PointsV10startIndexSivpMV', '_$s12CoreGraphics6RegionV6PointsV8endIndexSivg', + '_$s12CoreGraphics6RegionV6PointsV8endIndexSivpMV', '_$s12CoreGraphics6RegionV6PointsVMa', + '_$s12CoreGraphics6RegionV6PointsVMn', '_$s12CoreGraphics6RegionV6PointsVN', + '_$s12CoreGraphics6RegionV6PointsVSKAAMc', '_$s12CoreGraphics6RegionV6PointsVSTAAMc', + '_$s12CoreGraphics6RegionV6PointsVSkAAMc', '_$s12CoreGraphics6RegionV6PointsVSlAAMc', + '_$s12CoreGraphics6RegionV6PointsVySo7CGPointVSicig', '_$s12CoreGraphics6RegionV6PointsVySo7CGPointVSicipMV', + '_$s12CoreGraphics6RegionV6boundsSnyAA7CGFloatVG1x_AG1ytSgvg', + '_$s12CoreGraphics6RegionV6boundsSnyAA7CGFloatVG1x_AG1ytSgvpMV', + '_$s12CoreGraphics6RegionV6encode2toys7Encoder_p_tKF', '_$s12CoreGraphics6RegionV6isRectSbvpMV', + '_$s12CoreGraphics6RegionV7contour7optionsQrAC14ContourOptionsV_tF', + '_$s12CoreGraphics6RegionV7contour7optionsQrAC14ContourOptionsV_tFQOMQ', + '_$s12CoreGraphics6RegionV7filling4ruleACSo9CGPathRefa_AA0F8FillRuleOtcfC', + '_$s12CoreGraphics6RegionV7filling4ruleACx_AA14CGPathFillRuleOtcSTRzSTR_7ElementQzRs_So7CGPointVAHRt_r0_lufC', + '_$s12CoreGraphics6RegionV7insetBy2dx2dyAcA7CGFloatV_AHtF', + '_$s12CoreGraphics6RegionV7isEmptySbvg', '_$s12CoreGraphics6RegionV7isEmptySbvpMV', + '_$s12CoreGraphics6RegionV8containsySbSo6CGRectVF', '_$s12CoreGraphics6RegionV8containsySbSo7CGPointVF', + '_$s12CoreGraphics6RegionV8distance4from2toSiAC5IndexV_AHtF', + '_$s12CoreGraphics6RegionV8endIndexAC0E0Vvg', '_$s12CoreGraphics6RegionV8endIndexAC0E0VvpMV', + '_$s12CoreGraphics6RegionV8infiniteACvgZ', '_$s12CoreGraphics6RegionV8infiniteACvpZMV', + '_$s12CoreGraphics6RegionV8subtractyyACF', '_$s12CoreGraphics6RegionV8subtractyySo6CGRectVF', + '_$s12CoreGraphics6RegionV9OperationO5roundyAEs25FloatingPointRoundingRuleO_AA7CGFloatVtcAEmFWC', + '_$s12CoreGraphics6RegionV9OperationO9transformyAeA7CGFloatV_A3HtcAEmFWC', + '_$s12CoreGraphics6RegionV9OperationOMa', '_$s12CoreGraphics6RegionV9OperationOMn', + '_$s12CoreGraphics6RegionV9OperationON', '_$s12CoreGraphics6RegionV9formUnionyyACF', + '_$s12CoreGraphics6RegionV9formUnionyySo6CGRectVF', '_$s12CoreGraphics6RegionV9hashValueSivg', + '_$s12CoreGraphics6RegionV9hashValueSivpMV', '_$s12CoreGraphics6RegionVMa', + '_$s12CoreGraphics6RegionVMn', '_$s12CoreGraphics6RegionVN', + '_$s12CoreGraphics6RegionVSEAAMc', '_$s12CoreGraphics6RegionVSHAAMc', + '_$s12CoreGraphics6RegionVSKAAMc', '_$s12CoreGraphics6RegionVSQAAMc', + '_$s12CoreGraphics6RegionVSTAAMc', '_$s12CoreGraphics6RegionVSeAAMc', + '_$s12CoreGraphics6RegionVSlAAMc', '_$s12CoreGraphics6RegionVs10SetAlgebraAAMc', + '_$s12CoreGraphics6RegionVs17CustomReflectableAAMc', '_$s12CoreGraphics6RegionVs25ExpressibleByArrayLiteralAAMc', + '_$s12CoreGraphics6RegionVs28CustomDebugStringConvertibleAAMc', + '_$s12CoreGraphics6RegionVyACSo6CGRectVcfC', '_$s12CoreGraphics6RegionVySnyAA7CGFloatVG1x_AF1ytAC5IndexVcig', + '_$s12CoreGraphics6RegionVySnyAA7CGFloatVG1x_AF1ytAC5IndexVcipMV', + '_$s12CoreGraphics6finitySnyAA7CGFloatVGvg', '_$s12CoreGraphics6lgammayAA7CGFloatV_SitADF', + '_$s12CoreGraphics6remquoyAA7CGFloatV_SitAD_ADtF', '_$s12CoreGraphics6tgammayAA7CGFloatVADF', + '_$s12CoreGraphics7CGFloatV3maxACvgZ', '_$s12CoreGraphics7CGFloatV3maxACvpZMV', + '_$s12CoreGraphics7CGFloatV3minACvgZ', '_$s12CoreGraphics7CGFloatV3minACvpZMV', + '_$s12CoreGraphics7signbitySiAA7CGFloatVF', '_$s12CoreGraphics8copysignyAA7CGFloatVAD_ADtF', + '_$s12CoreGraphics8isfiniteySbAA7CGFloatVF', '_$s12CoreGraphics8isnormalySbAA7CGFloatVF', + '_$s12CoreGraphics9nearbyintyAA7CGFloatVADF', '_$s12CoreGraphics9nextafteryAA7CGFloatVAD_ADtF', + '_$sSn12CoreGraphicsAA7CGFloatVRszrlE7boundedSnyACGvg', '_$sSn12CoreGraphicsAA7CGFloatVRszrlE7boundedSnyACGvpMV', + '_$sSnyxG12CoreGraphics20FloatRangeExpressionA2B7CGFloatVRszrlMc', + '_$sSnyxG12CoreGraphics20FloatRangeExpressionA2B7CGFloatVRszrlWP', + '_$sSo10CGColorRefa12CoreGraphics01_A14InitTrampolineACMc', + '_$sSo10CGColorRefa12CoreGraphics01_A14InitTrampolineACWP', + '_$sSo10CGColorRefa12CoreGraphicsE10componentsSayAC7CGFloatVGSgvg', + '_$sSo10CGColorRefa12CoreGraphicsE10componentsSayAC7CGFloatVGSgvpMV', + '_$sSo10CGColorRefa12CoreGraphicsE5blackABvgZ', '_$sSo10CGColorRefa12CoreGraphicsE5blackABvpZMV', + '_$sSo10CGColorRefa12CoreGraphicsE5clearABvgZ', '_$sSo10CGColorRefa12CoreGraphicsE5clearABvpZMV', + '_$sSo10CGColorRefa12CoreGraphicsE5whiteABvgZ', '_$sSo10CGColorRefa12CoreGraphicsE5whiteABvpZMV', + '_$sSo10CGColorRefas26_ExpressibleByColorLiteral12CoreGraphicsMc', + '_$sSo10CGEventRefa12CoreGraphicsE4dataSo06CFDataB0aSgvg', + '_$sSo10CGEventRefa12CoreGraphicsE4dataSo06CFDataB0aSgvpMV', + '_$sSo10CGImageRefa12CoreGraphicsE4copy22maskingColorComponentsABSgSayAC7CGFloatVG_tF', + '_$sSo12CGBitmapInfoV12CoreGraphicsE11pixelFormatSo012CGImagePixelfB0VvpMV', + '_$sSo12CGBitmapInfoV12CoreGraphicsE12customMirrors0F0VvpMV', + '_$sSo12CGBitmapInfoV12CoreGraphicsE16debugDescriptionSSvpMV', + '_$sSo12CGBitmapInfoV12CoreGraphicsE5alphaSo012CGImageAlphaB0VvpMV', + '_$sSo12CGBitmapInfoV12CoreGraphicsE9byteOrderSo011CGImageBytefB0VvpMV', + '_$sSo12CGBitmapInfoV12CoreGraphicsE9componentSo016CGImageComponentB0VvpMV', + '_$sSo12CGBitmapInfoVs17CustomReflectable12CoreGraphicsMc', + '_$sSo12CGBitmapInfoVs28CustomDebugStringConvertible12CoreGraphicsMc', + '_$sSo12CGContextRefa12CoreGraphicsE10showGlyphs_2atySays6UInt16VG_SaySo7CGPointVGtF', + '_$sSo12CGContextRefa12CoreGraphicsE11setLineDash5phase7lengthsyAC7CGFloatV_SayAHGtF', + '_$sSo12CGContextRefa12CoreGraphicsE12addQuadCurve2to7controlySo7CGPointV_AHtF', + '_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvM', + '_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvg', + '_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvpMV', + '_$sSo12CGContextRefa12CoreGraphicsE12textPositionSo7CGPointVvs', + '_$sSo12CGContextRefa12CoreGraphicsE18strokeLineSegments7betweenySaySo7CGPointVG_tF', + '_$sSo12CGContextRefa12CoreGraphicsE4clip2toySaySo6CGRectVG_tF', + '_$sSo12CGContextRefa12CoreGraphicsE4clip5usingyAC14CGPathFillRuleO_tF', + '_$sSo12CGContextRefa12CoreGraphicsE4draw_2atySo07CGLayerB0a_So7CGPointVtF', + '_$sSo12CGContextRefa12CoreGraphicsE4draw_2in2by7optionsSbSo07CGImageB0a_So6CGRectVSo13CGToneMappingVSo012CFDictionaryB0aSgtF', + '_$sSo12CGContextRefa12CoreGraphicsE4draw_2in8byTilingySo07CGImageB0a_So6CGRectVSbtF', + '_$sSo12CGContextRefa12CoreGraphicsE4draw_2inySo07CGLayerB0a_So6CGRectVtF', + '_$sSo12CGContextRefa12CoreGraphicsE4fillyySaySo6CGRectVGF', + '_$sSo12CGContextRefa12CoreGraphicsE4move2toySo7CGPointV_tF', + '_$sSo12CGContextRefa12CoreGraphicsE6addArc11tangent1End08tangent2H06radiusySo7CGPointV_AiC7CGFloatVtF', + '_$sSo12CGContextRefa12CoreGraphicsE6addArc6center6radius10startAngle03endJ09clockwiseySo7CGPointV_AC7CGFloatVA2MSbtF', + '_$sSo12CGContextRefa12CoreGraphicsE7addLine2toySo7CGPointV_tF', + '_$sSo12CGContextRefa12CoreGraphicsE8addCurve2to8control18control2ySo7CGPointV_A2ItF', + '_$sSo12CGContextRefa12CoreGraphicsE8addLines7betweenySaySo7CGPointVG_tF', + '_$sSo12CGContextRefa12CoreGraphicsE8addRectsyySaySo6CGRectVGF', + '_$sSo12CGContextRefa12CoreGraphicsE8fillPath5usingyAC14CGPathFillRuleO_tF', + '_$sSo15CGColorSpaceRefa12CoreGraphicsE10colorTableSays5UInt8VGSgvg', + '_$sSo15CGColorSpaceRefa12CoreGraphicsE10colorTableSays5UInt8VGSgvpMV', + '_$sSo16CGImageAlphaInfoV12CoreGraphicsE16debugDescriptionSSvpMV', + '_$sSo16CGImageAlphaInfoVs28CustomDebugStringConvertible12CoreGraphicsMc', + '_$sSo16CGMutablePathRefa12CoreGraphicsE03addB0_9transformySo06CGPathC0a_So17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE10addEllipse2in9transformySo6CGRectV_So17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE12addQuadCurve2to7control9transformySo7CGPointV_AISo17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE14addRelativeArc6center6radius10startAngle5delta9transformySo7CGPointV_AC7CGFloatVA2MSo17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE14addRoundedRect2in11cornerWidth0J6Height9transformySo6CGRectV_AC7CGFloatVALSo17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE4move2to9transformySo7CGPointV_So17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE6addArc11tangent1End08tangent2I06radius9transformySo7CGPointV_AjC7CGFloatVSo17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE6addArc6center6radius10startAngle03endK09clockwise9transformySo7CGPointV_AC7CGFloatVA2NSbSo17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE7addLine2to9transformySo7CGPointV_So17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE7addRect_9transformySo6CGRectV_So17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE8addCurve2to8control18control29transformySo7CGPointV_A2JSo17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE8addLines7between9transformySaySo7CGPointVG_So17CGAffineTransformVtF', + '_$sSo16CGMutablePathRefa12CoreGraphicsE8addRects_9transformySaySo6CGRectVG_So17CGAffineTransformVtF', + '_$sSo17CGAffineTransformV12CoreGraphicsE10isIdentitySbvpMV', + '_$sSo17CGAffineTransformV12CoreGraphicsE2eeoiySbAB_ABtFZ', + '_$sSo17CGAffineTransformV12CoreGraphicsE4fromABs7Decoder_p_tKcfC', + '_$sSo17CGAffineTransformV12CoreGraphicsE6encode2toys7Encoder_p_tKF', + '_$sSo17CGAffineTransformV12CoreGraphicsE8identityABvgZ', + '_$sSo17CGAffineTransformV12CoreGraphicsE8identityABvpZMV', + '_$sSo17CGAffineTransformV12CoreGraphicsE9hashValueSivpMV', + '_$sSo17CGAffineTransformVSE12CoreGraphicsMc', '_$sSo17CGAffineTransformVSH12CoreGraphicsMc', + '_$sSo17CGAffineTransformVSQ12CoreGraphicsMc', '_$sSo17CGAffineTransformVSe12CoreGraphicsMc', + '_$sSo20CGImageByteOrderInfoV12CoreGraphicsE16debugDescriptionSSvpMV', + '_$sSo20CGImageByteOrderInfoVs28CustomDebugStringConvertible12CoreGraphicsMc', + '_$sSo20CGImageComponentInfoV12CoreGraphicsE16debugDescriptionSSvpMV', + '_$sSo20CGImageComponentInfoVs28CustomDebugStringConvertible12CoreGraphicsMc', + '_$sSo22CGImagePixelFormatInfoV12CoreGraphicsE16debugDescriptionSSvpMV', + '_$sSo22CGImagePixelFormatInfoVs28CustomDebugStringConvertible12CoreGraphicsMc', + '_$sSo6CGRectV12CoreGraphicsE10isInfiniteSbvpMV', '_$sSo6CGRectV12CoreGraphicsE12customMirrors0E0Vvg', + '_$sSo6CGRectV12CoreGraphicsE12customMirrors0E0VvpMV', '_$sSo6CGRectV12CoreGraphicsE12standardizedABvpMV', + '_$sSo6CGRectV12CoreGraphicsE16debugDescriptionSSvg', '_$sSo6CGRectV12CoreGraphicsE16debugDescriptionSSvpMV', + '_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightABSd_S3dtcfC', + '_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightABSi_S3itcfC', + '_$sSo6CGRectV12CoreGraphicsE1x1y5width6heightAbC7CGFloatV_A3ItcfC', + '_$sSo6CGRectV12CoreGraphicsE1xAC7CGFloatVvg', '_$sSo6CGRectV12CoreGraphicsE1xAC7CGFloatVvpMV', + '_$sSo6CGRectV12CoreGraphicsE1yAC7CGFloatVvg', '_$sSo6CGRectV12CoreGraphicsE1yAC7CGFloatVvpMV', + '_$sSo6CGRectV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC', + '_$sSo6CGRectV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV', + '_$sSo6CGRectV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg', + '_$sSo6CGRectV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV', + '_$sSo6CGRectV12CoreGraphicsE2eeoiySbAB_ABtFZ', '_$sSo6CGRectV12CoreGraphicsE4fromABs7Decoder_p_tKcfC', + '_$sSo6CGRectV12CoreGraphicsE4maxXAC7CGFloatVvpMV', '_$sSo6CGRectV12CoreGraphicsE4maxYAC7CGFloatVvpMV', + '_$sSo6CGRectV12CoreGraphicsE4midXAC7CGFloatVvpMV', '_$sSo6CGRectV12CoreGraphicsE4midYAC7CGFloatVvpMV', + '_$sSo6CGRectV12CoreGraphicsE4minXAC7CGFloatVvpMV', '_$sSo6CGRectV12CoreGraphicsE4minYAC7CGFloatVvpMV', + '_$sSo6CGRectV12CoreGraphicsE4nullABvpZMV', '_$sSo6CGRectV12CoreGraphicsE4zeroABvgZ', + '_$sSo6CGRectV12CoreGraphicsE4zeroABvpZMV', '_$sSo6CGRectV12CoreGraphicsE5widthAC7CGFloatVvpMV', + '_$sSo6CGRectV12CoreGraphicsE6encode2toys7Encoder_p_tKF', + '_$sSo6CGRectV12CoreGraphicsE6heightAC7CGFloatVvpMV', '_$sSo6CGRectV12CoreGraphicsE6isNullSbvpMV', + '_$sSo6CGRectV12CoreGraphicsE7divided10atDistance4fromAB5slice_AB9remaindertAC7CGFloatV_So0A4EdgeVtF', + '_$sSo6CGRectV12CoreGraphicsE7isEmptySbvpMV', '_$sSo6CGRectV12CoreGraphicsE8infiniteABvpZMV', + '_$sSo6CGRectV12CoreGraphicsE8integralABvpMV', '_$sSo6CGRectV12CoreGraphicsE9__divided5slice9remainder10atDistance4fromySpyABG_AiC7CGFloatVSo0A4EdgeVtF', + '_$sSo6CGRectV12CoreGraphicsE9hashValueSivpMV', '_$sSo6CGRectVSE12CoreGraphicsMc', + '_$sSo6CGRectVSH12CoreGraphicsMc', '_$sSo6CGRectVSQ12CoreGraphicsMc', + '_$sSo6CGRectVSe12CoreGraphicsMc', '_$sSo6CGRectVs17CustomReflectable12CoreGraphicsMc', + '_$sSo6CGRectVs28CustomDebugStringConvertible12CoreGraphicsMc', + '_$sSo6CGRectVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc', + '_$sSo6CGSizeV12CoreGraphicsE12customMirrors0E0Vvg', '_$sSo6CGSizeV12CoreGraphicsE12customMirrors0E0VvpMV', + '_$sSo6CGSizeV12CoreGraphicsE16debugDescriptionSSvg', '_$sSo6CGSizeV12CoreGraphicsE16debugDescriptionSSvpMV', + '_$sSo6CGSizeV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC', + '_$sSo6CGSizeV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV', + '_$sSo6CGSizeV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg', + '_$sSo6CGSizeV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV', + '_$sSo6CGSizeV12CoreGraphicsE2eeoiySbAB_ABtFZ', '_$sSo6CGSizeV12CoreGraphicsE4fromABs7Decoder_p_tKcfC', + '_$sSo6CGSizeV12CoreGraphicsE4zeroABvgZ', '_$sSo6CGSizeV12CoreGraphicsE4zeroABvpZMV', + '_$sSo6CGSizeV12CoreGraphicsE5width6heightABSd_SdtcfC', '_$sSo6CGSizeV12CoreGraphicsE5width6heightABSi_SitcfC', + '_$sSo6CGSizeV12CoreGraphicsE6encode2toys7Encoder_p_tKF', + '_$sSo6CGSizeV12CoreGraphicsE9hashValueSivpMV', '_$sSo6CGSizeVSE12CoreGraphicsMc', + '_$sSo6CGSizeVSH12CoreGraphicsMc', '_$sSo6CGSizeVSQ12CoreGraphicsMc', + '_$sSo6CGSizeVSe12CoreGraphicsMc', '_$sSo6CGSizeVs17CustomReflectable12CoreGraphicsMc', + '_$sSo6CGSizeVs28CustomDebugStringConvertible12CoreGraphicsMc', + '_$sSo6CGSizeVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc', + '_$sSo7CGPointV12CoreGraphicsE12customMirrors0E0Vvg', '_$sSo7CGPointV12CoreGraphicsE12customMirrors0E0VvpMV', + '_$sSo7CGPointV12CoreGraphicsE16debugDescriptionSSvg', '_$sSo7CGPointV12CoreGraphicsE16debugDescriptionSSvpMV', + '_$sSo7CGPointV12CoreGraphicsE1x1yABSd_SdtcfC', '_$sSo7CGPointV12CoreGraphicsE1x1yABSi_SitcfC', + '_$sSo7CGPointV12CoreGraphicsE24dictionaryRepresentationABSgSo15CFDictionaryRefa_tcfC', + '_$sSo7CGPointV12CoreGraphicsE24dictionaryRepresentationSo15CFDictionaryRefavpMV', + '_$sSo7CGPointV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0Ovg', + '_$sSo7CGPointV12CoreGraphicsE25customPlaygroundQuickLooks01_efG0OvpMV', + '_$sSo7CGPointV12CoreGraphicsE2eeoiySbAB_ABtFZ', '_$sSo7CGPointV12CoreGraphicsE4fromABs7Decoder_p_tKcfC', + '_$sSo7CGPointV12CoreGraphicsE4zeroABvgZ', '_$sSo7CGPointV12CoreGraphicsE4zeroABvpZMV', + '_$sSo7CGPointV12CoreGraphicsE6encode2toys7Encoder_p_tKF', + '_$sSo7CGPointV12CoreGraphicsE9hashValueSivpMV', '_$sSo7CGPointVSE12CoreGraphicsMc', + '_$sSo7CGPointVSH12CoreGraphicsMc', '_$sSo7CGPointVSQ12CoreGraphicsMc', + '_$sSo7CGPointVSe12CoreGraphicsMc', '_$sSo7CGPointVs17CustomReflectable12CoreGraphicsMc', + '_$sSo7CGPointVs28CustomDebugStringConvertible12CoreGraphicsMc', + '_$sSo7CGPointVs30_CustomPlaygroundQuickLookable12CoreGraphicsMc', + '_$sSo8CGVectorV12CoreGraphicsE16debugDescriptionSSvg', '_$sSo8CGVectorV12CoreGraphicsE16debugDescriptionSSvpMV', + '_$sSo8CGVectorV12CoreGraphicsE2dx2dyABSd_SdtcfC', '_$sSo8CGVectorV12CoreGraphicsE2dx2dyABSi_SitcfC', + '_$sSo8CGVectorV12CoreGraphicsE2eeoiySbAB_ABtFZ', '_$sSo8CGVectorV12CoreGraphicsE4fromABs7Decoder_p_tKcfC', + '_$sSo8CGVectorV12CoreGraphicsE4zeroABvgZ', '_$sSo8CGVectorV12CoreGraphicsE4zeroABvpZMV', + '_$sSo8CGVectorV12CoreGraphicsE6encode2toys7Encoder_p_tKF', + '_$sSo8CGVectorV12CoreGraphicsE9hashValueSivpMV', '_$sSo8CGVectorVSE12CoreGraphicsMc', + '_$sSo8CGVectorVSH12CoreGraphicsMc', '_$sSo8CGVectorVSQ12CoreGraphicsMc', + '_$sSo8CGVectorVSe12CoreGraphicsMc', '_$sSo8CGVectorVs28CustomDebugStringConvertible12CoreGraphicsMc', + '_$sSo9CGPathRefa12CoreGraphicsE10intersects_5usingSbAB_AC0A8FillRuleOtF', + '_$sSo9CGPathRefa12CoreGraphicsE10normalized5usingAbC0A8FillRuleO_tF', + '_$sSo9CGPathRefa12CoreGraphicsE11subtracting_5usingA2B_AC0A8FillRuleOtF', + '_$sSo9CGPathRefa12CoreGraphicsE12intersection_5usingA2B_AC0A8FillRuleOtF', + '_$sSo9CGPathRefa12CoreGraphicsE15lineSubtracting_5usingA2B_AC0A8FillRuleOtF', + '_$sSo9CGPathRefa12CoreGraphicsE16lineIntersection_5usingA2B_AC0A8FillRuleOtF', + '_$sSo9CGPathRefa12CoreGraphicsE19componentsSeparated5usingSayABGAC0A8FillRuleO_tF', + '_$sSo9CGPathRefa12CoreGraphicsE19symmetricDifference_5usingA2B_AC0A8FillRuleOtF', + '_$sSo9CGPathRefa12CoreGraphicsE4copy16dashingWithPhase7lengths9transformAbC7CGFloatV_SayAIGSo17CGAffineTransformVtF', + '_$sSo9CGPathRefa12CoreGraphicsE4copy17strokingWithWidth7lineCap0I4Join10miterLimit9transformAbC7CGFloatV_So06CGLineJ0VSo0pK0VAKSo17CGAffineTransformVtF', + '_$sSo9CGPathRefa12CoreGraphicsE5union_5usingA2B_AC0A8FillRuleOtF', + '_$sSo9CGPathRefa12CoreGraphicsE8contains_5using9transformSbSo7CGPointV_AC0A8FillRuleOSo17CGAffineTransformVtF', + '_$sSo9CGPathRefa12CoreGraphicsE9flattened9thresholdAbC7CGFloatV_tF', + '_$ss16PartialRangeFromV12CoreGraphicsAC7CGFloatVRszrlE7boundedSnyAEGvg', + '_$ss16PartialRangeFromV12CoreGraphicsAC7CGFloatVRszrlE7boundedSnyAEGvpMV', + '_$ss16PartialRangeFromVyxG12CoreGraphics05FloatB10ExpressionA2D7CGFloatVRszrlMc', + '_$ss16PartialRangeFromVyxG12CoreGraphics05FloatB10ExpressionA2D7CGFloatVRszrlWP', + '_$ss16PartialRangeUpToV12CoreGraphicsAC7CGFloatVRszrlE7boundedSnyAEGvg', + '_$ss16PartialRangeUpToV12CoreGraphicsAC7CGFloatVRszrlE7boundedSnyAEGvpMV', + '_$ss16PartialRangeUpToVyxG12CoreGraphics05FloatB10ExpressionA2D7CGFloatVRszrlMc', + '_$ss16PartialRangeUpToVyxG12CoreGraphics05FloatB10ExpressionA2D7CGFloatVRszrlWP', _CGAccessSessionCreate, _CGAccessSessionGetBytePointer, _CGAccessSessionGetBytes, _CGAccessSessionGetChunks, _CGAccessSessionRelease, _CGAccessSessionRewind, _CGAccessSessionSkipForward, _CGAcquireDisplayFadeReservation, @@ -43,9 +1237,9 @@ exports: _CGBufferProviderGetSize, _CGBufferProviderGetTypeID, _CGBufferUnlockBytePtr, _CGCFArrayAppendCGFloat, _CGCFArrayAppendInteger, _CGCFArrayAppendRect, _CGCFArrayApplyBlock, _CGCFArrayCreate, _CGCFArrayCreatePDFRect, - _CGCFArrayGetLastValue, _CGCFArrayGetRectAtIndex, _CGCFDictionaryApplyBlock, - _CGCFDictionaryCopyKeys, _CGCFDictionaryCopyValues, _CGCFDictionaryCreate, - _CGCFDictionaryCreateCopy, _CGCFDictionaryCreateWithKeyAndValue, + _CGCFArrayGetLastValue, _CGCFArrayGetRectAtIndex, _CGCFDataCreateWithContentsOfFileAtURL, + _CGCFDictionaryApplyBlock, _CGCFDictionaryCopyKeys, _CGCFDictionaryCopyValues, + _CGCFDictionaryCreate, _CGCFDictionaryCreateCopy, _CGCFDictionaryCreateWithKeyAndValue, _CGCFDictionaryGetBoolean, _CGCFDictionaryGetBooleanWithDefault, _CGCFDictionaryGetCFTypeRef, _CGCFDictionaryGetFloat, _CGCFDictionaryGetFloatWithDefault, _CGCFDictionaryGetInteger, _CGCFDictionaryGetIntegerWithDefault, @@ -90,11 +1284,13 @@ exports: _CGColorCodeFragmentGetParametricConversion, _CGColorCodeFragmentGetParametricCount, _CGColorCodeFragmentGetTextureData, _CGColorCodeFragmentGetTextureFormat, _CGColorCodeFragmentGetTextureGridPoints, _CGColorCodeFragmentRelease, - _CGColorConversionInfoCreate, _CGColorConversionInfoCreateFromList, - _CGColorConversionInfoCreateFromListWithArguments, _CGColorConversionInfoCreateWithColorSyncCodeFragment, - _CGColorConversionInfoCreateWithOptions, _CGColorConversionInfoDumpCompactedStepsToFile, - _CGColorConversionInfoDumpSimplifiedStepsToFile, _CGColorConversionInfoDumpStepsToFile, - _CGColorConversionInfoGetTypeID, _CGColorConversionInfoIterateColorSpaceFunctionsWithCallbacks, + _CGColorConversionInfoConvertData, _CGColorConversionInfoCreate, + _CGColorConversionInfoCreateForToneMapping, _CGColorConversionInfoCreateFromList, + _CGColorConversionInfoCreateFromListWithArguments, _CGColorConversionInfoCreateOptionsForToneMapping, + _CGColorConversionInfoCreateWithColorSyncCodeFragment, _CGColorConversionInfoCreateWithOptions, + _CGColorConversionInfoDumpCompactedStepsToFile, _CGColorConversionInfoDumpSimplifiedStepsToFile, + _CGColorConversionInfoDumpStepsToFile, _CGColorConversionInfoGetTypeID, + _CGColorConversionInfoIterateColorSpaceFunctionsWithCallbacks, _CGColorConversionInfoIterateColorSpaceFunctionsWithCallbacksAndOptions, _CGColorConversionInfoIterateFunctionsWithCallbacks, _CGColorConversionInfoShowCompactedSteps, _CGColorConversionInfoShowSimplifiedSteps, _CGColorConversionInfoShowSteps, @@ -119,11 +1315,14 @@ exports: _CGColorMatrixGetTypeID, _CGColorMatrixIsIdentity, _CGColorMatrixMake, _CGColorMatrixMakeIdentity, _CGColorNxMLUTGetLUT, _CGColorNxMLUTGetTypeID, _CGColorNxMTransformGetTransform, _CGColorNxMTransformGetTypeID, - _CGColorRelease, _CGColorRetain, _CGColorSpaceConcatenate, - _CGColorSpaceCopyColorSyncProfile, _CGColorSpaceCopyColorTable, - _CGColorSpaceCopyDefaultColor, _CGColorSpaceCopyICCData, _CGColorSpaceCopyICCProfile, - _CGColorSpaceCopyICCProfileASCIIDescriptionString, _CGColorSpaceCopyICCProfileDescription, - _CGColorSpaceCopyName, _CGColorSpaceCopyPropertyList, _CGColorSpaceCreateCalibratedGray, + _CGColorRelease, _CGColorRetain, _CGColorSpaceAttachToIOSurface, + _CGColorSpaceConcatenate, _CGColorSpaceContainsFlexGTCInfo, + _CGColorSpaceCopyBaseColorSpace, _CGColorSpaceCopyColorSyncProfile, + _CGColorSpaceCopyColorTable, _CGColorSpaceCopyDefaultColor, + _CGColorSpaceCopyFlexGTCInfo, _CGColorSpaceCopyFromIOSurface, + _CGColorSpaceCopyICCData, _CGColorSpaceCopyICCProfile, _CGColorSpaceCopyICCProfileASCIIDescriptionString, + _CGColorSpaceCopyICCProfileDescription, _CGColorSpaceCopyName, + _CGColorSpaceCopyPropertyList, _CGColorSpaceCreateCalibratedGray, _CGColorSpaceCreateCalibratedRGB, _CGColorSpaceCreateConversionCurve, _CGColorSpaceCreateCopyWithNativeGamma, _CGColorSpaceCreateCopyWithPQTransferFunctions, _CGColorSpaceCreateCopyWithStandardRange, _CGColorSpaceCreateDeviceCMYK, @@ -132,13 +1331,15 @@ exports: _CGColorSpaceCreateDisplayGray, _CGColorSpaceCreateDisplayRGB, _CGColorSpaceCreateDisplayRGBWithID, _CGColorSpaceCreateDisplayReferredLinearDerivative, _CGColorSpaceCreateExtended, _CGColorSpaceCreateExtendedLinearized, - _CGColorSpaceCreateFromAttachments, _CGColorSpaceCreateFromCICP, + _CGColorSpaceCreateFlexGTCProxy, _CGColorSpaceCreateFromAttachments, + _CGColorSpaceCreateFromCICP, _CGColorSpaceCreateHLGBasedCopy, _CGColorSpaceCreateICCBased, _CGColorSpaceCreateIndexed, _CGColorSpaceCreateLab, - _CGColorSpaceCreateLinearized, _CGColorSpaceCreatePattern, - _CGColorSpaceCreatePlatformProfile, _CGColorSpaceCreateSceneReferredLinearDerivative, - _CGColorSpaceCreateSystemDefaultCMYK, _CGColorSpaceCreateSystemDefaultGray, - _CGColorSpaceCreateSystemDefaultRGB, _CGColorSpaceCreateWithColorSyncProfile, - _CGColorSpaceCreateWithICCData, _CGColorSpaceCreateWithICCProfile, + _CGColorSpaceCreateLinearized, _CGColorSpaceCreatePQBasedCopy, + _CGColorSpaceCreatePattern, _CGColorSpaceCreatePlatformProfile, + _CGColorSpaceCreateSceneReferredLinearDerivative, _CGColorSpaceCreateSystemDefaultCMYK, + _CGColorSpaceCreateSystemDefaultGray, _CGColorSpaceCreateSystemDefaultRGB, + _CGColorSpaceCreateWithColorSyncProfile, _CGColorSpaceCreateWithICCData, + _CGColorSpaceCreateWithICCProfile, _CGColorSpaceCreateWithID, _CGColorSpaceCreateWithName, _CGColorSpaceCreateWithPlatformColorSpace, _CGColorSpaceCreateWithPropertyList, _CGColorSpaceCreateWithURL, _CGColorSpaceDumpPropertyList, _CGColorSpaceEqualToColorSpace, @@ -148,16 +1349,17 @@ exports: _CGColorSpaceGetColorSyncProfile, _CGColorSpaceGetColorTable, _CGColorSpaceGetColorTableCount, _CGColorSpaceGetColorants, _CGColorSpaceGetConversionMatrix, _CGColorSpaceGetDescriptor, - _CGColorSpaceGetIdentifier, _CGColorSpaceGetLabData, _CGColorSpaceGetMD5Digest, - _CGColorSpaceGetModel, _CGColorSpaceGetName, _CGColorSpaceGetNames, - _CGColorSpaceGetNumberOfComponents, _CGColorSpaceGetProcessColorModel, - _CGColorSpaceGetRenderingIntent, _CGColorSpaceGetTintTransform, - _CGColorSpaceGetType, _CGColorSpaceGetTypeID, _CGColorSpaceICCGetPlatformProfile, - _CGColorSpaceICCGetRange, _CGColorSpaceIgnoresIntent, _CGColorSpaceIsDisplayReferredDerivative, + _CGColorSpaceGetHeadroomInfo, _CGColorSpaceGetID, _CGColorSpaceGetIdentifier, + _CGColorSpaceGetLabData, _CGColorSpaceGetMD5Digest, _CGColorSpaceGetModel, + _CGColorSpaceGetName, _CGColorSpaceGetNames, _CGColorSpaceGetNumberOfComponents, + _CGColorSpaceGetProcessColorModel, _CGColorSpaceGetRenderingIntent, + _CGColorSpaceGetTintTransform, _CGColorSpaceGetType, _CGColorSpaceGetTypeID, + _CGColorSpaceICCGetPlatformProfile, _CGColorSpaceICCGetRange, + _CGColorSpaceIDFromName, _CGColorSpaceIgnoresIntent, _CGColorSpaceIsDisplayReferredDerivative, _CGColorSpaceIsHDR, _CGColorSpaceIsHLGBased, _CGColorSpaceIsICCCompatible, _CGColorSpaceIsPQBased, _CGColorSpaceIsPSLevel2Compatible, _CGColorSpaceIsSceneReferredDerivative, _CGColorSpaceIsUncalibrated, - _CGColorSpaceIsWideGamutRGB, _CGColorSpaceProfileSetsGetDestinationProfile, + _CGColorSpaceIsWideGamutRGB, _CGColorSpaceNameFromID, _CGColorSpaceProfileSetsGetDestinationProfile, _CGColorSpaceRelease, _CGColorSpaceRetain, _CGColorSpaceStreamPSDefinition, _CGColorSpaceSupportsOutput, _CGColorSpaceUsesExtendedRange, _CGColorSpaceUsesITUR_2100TF, _CGColorTRCGetFunction, _CGColorTRCGetGammaID, @@ -194,22 +1396,24 @@ exports: _CGContextDelegateBeginPage, _CGContextDelegateCreate, _CGContextDelegateCreateFilter, _CGContextDelegateDrawConicGradient, _CGContextDelegateDrawDisplayList, _CGContextDelegateDrawGlyphs, _CGContextDelegateDrawImage, - _CGContextDelegateDrawImageFromRect, _CGContextDelegateDrawImages, - _CGContextDelegateDrawLayer, _CGContextDelegateDrawLinearGradient, - _CGContextDelegateDrawLines, _CGContextDelegateDrawPath, _CGContextDelegateDrawPathDirect, + _CGContextDelegateDrawImageApplyingToneMapping, _CGContextDelegateDrawImageFromRect, + _CGContextDelegateDrawImages, _CGContextDelegateDrawLayer, + _CGContextDelegateDrawLinearGradient, _CGContextDelegateDrawLines, + _CGContextDelegateDrawPath, _CGContextDelegateDrawPathDirect, _CGContextDelegateDrawRadialGradient, _CGContextDelegateDrawRects, _CGContextDelegateDrawShading, _CGContextDelegateDrawWindowContents, _CGContextDelegateEndLayer, _CGContextDelegateEndPage, _CGContextDelegateFinalize, _CGContextDelegateGetBitmapContextInfo, _CGContextDelegateGetBounds, - _CGContextDelegateGetCallback, _CGContextDelegateGetColorTransform, - _CGContextDelegateGetDelegate, _CGContextDelegateGetInfo, - _CGContextDelegateGetLayer, _CGContextDelegateGetNext, _CGContextDelegateGetOwnerIdentity, - _CGContextDelegateGetTransform, _CGContextDelegateGetTypeID, - _CGContextDelegateImplementsCallback, _CGContextDelegateOperation, - _CGContextDelegateRelease, _CGContextDelegateRetain, _CGContextDelegateSetCallback, - _CGContextDelegateSetCallbacks, _CGContextDelegateSetNext, - _CGContextDelegateSetOwnerIdentity, _CGContextDrawConicGradient, - _CGContextDrawDisplayList, _CGContextDrawImage, _CGContextDrawImageFromRect, + _CGContextDelegateGetCallback, _CGContextDelegateGetColorSpace, + _CGContextDelegateGetColorTransform, _CGContextDelegateGetDelegate, + _CGContextDelegateGetInfo, _CGContextDelegateGetLayer, _CGContextDelegateGetNext, + _CGContextDelegateGetOwnerIdentity, _CGContextDelegateGetTransform, + _CGContextDelegateGetTypeID, _CGContextDelegateImplementsCallback, + _CGContextDelegateOperation, _CGContextDelegateRelease, _CGContextDelegateRetain, + _CGContextDelegateSetCallback, _CGContextDelegateSetCallbacks, + _CGContextDelegateSetNext, _CGContextDelegateSetOwnerIdentity, + _CGContextDrawConicGradient, _CGContextDrawDisplayList, _CGContextDrawImage, + _CGContextDrawImageApplyingToneMapping, _CGContextDrawImageFromRect, _CGContextDrawImageWithOptions, _CGContextDrawImages, _CGContextDrawLayerAtPoint, _CGContextDrawLayerInRect, _CGContextDrawLinearGradient, _CGContextDrawPDFAnnotation, _CGContextDrawPDFPage, _CGContextDrawPDFPageInRect, _CGContextDrawPDFPageInRect2, @@ -229,8 +1433,9 @@ exports: _CGContextGetAlpha, _CGContextGetAlphaIsShape, _CGContextGetBaseCTM, _CGContextGetBlackGeneration, _CGContextGetBlendMode, _CGContextGetCTM, _CGContextGetCharacterSpacing, _CGContextGetClipBoundingBox, - _CGContextGetCompositeOperation, _CGContextGetContentMD5, - _CGContextGetDelegate, _CGContextGetDelegateInfo, _CGContextGetDeviceClipBoundingBox, + _CGContextGetColorSpace, _CGContextGetCompositeOperation, + _CGContextGetContentMD5, _CGContextGetDelegate, _CGContextGetDelegateInfo, + _CGContextGetDeviceClipBoundingBox, _CGContextGetEDRTargetHeadroom, _CGContextGetFillColor, _CGContextGetFillColorAsColor, _CGContextGetFillColorSpace, _CGContextGetFillOverprint, _CGContextGetFillPattern, _CGContextGetFlatness, _CGContextGetFont, _CGContextGetFontAntialiasingStyle, _CGContextGetFontDilation, @@ -271,8 +1476,8 @@ exports: _CGContextSetAlpha, _CGContextSetAlphaIsShape, _CGContextSetBaseCTM, _CGContextSetBlackGeneration, _CGContextSetBlendMode, _CGContextSetCMYKFillColor, _CGContextSetCMYKStrokeColor, _CGContextSetCTM, _CGContextSetCharacterSpacing, - _CGContextSetCompositeOperation, _CGContextSetDelegate, _CGContextSetFillColor, - _CGContextSetFillColorSpace, _CGContextSetFillColorWithColor, + _CGContextSetCompositeOperation, _CGContextSetDelegate, _CGContextSetEDRTargetHeadroom, + _CGContextSetFillColor, _CGContextSetFillColorSpace, _CGContextSetFillColorWithColor, _CGContextSetFillOverprint, _CGContextSetFillPattern, _CGContextSetFlatness, _CGContextSetFlush, _CGContextSetFocusRingWithColor, _CGContextSetFont, _CGContextSetFontAntialiasingStyle, _CGContextSetFontDilation, @@ -303,6 +1508,8 @@ exports: _CGContextStrokeLineSegments, _CGContextStrokePath, _CGContextStrokeRect, _CGContextStrokeRectWithWidth, _CGContextSynchronize, _CGContextTranslateCTM, _CGContextValidate, _CGContextWait, _CGConvertColorData, _CGConvertColorDataWithFormat, + _CGCreatePayloadForToneMapping, _CGCreateResolvedToneMappingSettingForMethod, + _CGCreateSettingsForDefaultToneMapping, _CGCreateToneMappingSettingForMethod, _CGCryptorCreateAES, _CGCryptorCreateRC4, _CGCryptorDrain, _CGCryptorGetCipher, _CGCryptorGetInitializationVector, _CGCryptorProcessBytes, _CGCryptorRelease, _CGCryptorReset, _CGCursorIsDrawnInFramebuffer, @@ -390,9 +1597,10 @@ exports: _CGDisplayListEntryStateGetStrokeOverprint, _CGDisplayListEntryStateGetStrokeWidth, _CGDisplayListEntryStateGetStrokeWidthThreshold, _CGDisplayListEntryStateGetStyle, _CGDisplayListEntryStateGetUndercolorRemoval, _CGDisplayListEnumerateEntriesWithOptions, - _CGDisplayListExecute, _CGDisplayListGetBoundingBox, _CGDisplayListGetNumberOfEntries, - _CGDisplayListGetNumberOfEntriesOfType, _CGDisplayListGetTypeID, - _CGDisplayListIsEqualToDisplayList, _CGDisplayListRelease, + _CGDisplayListExecute, _CGDisplayListGetBoundingBox, _CGDisplayListGetHash, + _CGDisplayListGetNumberOfEntries, _CGDisplayListGetNumberOfEntriesOfType, + _CGDisplayListGetTypeID, _CGDisplayListIsEqualToDisplayList, + _CGDisplayListIsEqualToDisplayListWithOptions, _CGDisplayListRelease, _CGDisplayListReset, _CGDisplayListRetain, _CGDisplayListSerializeToURL, _CGDisplayListSetBoundingBox, _CGDisplayMirrorsDisplay, _CGDisplayModeCopyPixelEncoding, _CGDisplayModeCreate, _CGDisplayModeGetHeight, _CGDisplayModeGetIODisplayModeID, @@ -441,6 +1649,7 @@ exports: _CGEventSourceSetUserData, _CGEventTapCreate, _CGEventTapCreateForPSN, _CGEventTapCreateForPid, _CGEventTapEnable, _CGEventTapIDEnable, _CGEventTapIDIsEnabled, _CGEventTapIsEnabled, _CGEventTapPostEvent, + _CGFlexLumaToneMappingGetDefaultOptions, _CGFlexTRCToneMappingGetDefaultOptions, _CGFloatIsValid, _CGFontApplyFunction, _CGFontCacheCreate, _CGFontCacheGetLocalCache, _CGFontCacheGetMaxSize, _CGFontCachePrint, _CGFontCacheRelease, _CGFontCacheRemoveFont, _CGFontCacheReset, @@ -471,11 +1680,11 @@ exports: _CGFontFinderGetDefault, _CGFontFinderRelease, _CGFontFinderRetain, _CGFontFinderSetDefault, _CGFontGetAscent, _CGFontGetCIDsForGlyphs, _CGFontGetCapHeight, _CGFontGetContainingBoundingBoxForGlyphs, - _CGFontGetDescent, _CGFontGetDescriptor, _CGFontGetFontBBox, - _CGFontGetFontSubsetFormat, _CGFontGetGlyphAdvances, _CGFontGetGlyphAdvancesForStyle, - _CGFontGetGlyphBBoxes, _CGFontGetGlyphBBoxesForStyle, _CGFontGetGlyphForGlyphName, - _CGFontGetGlyphIdentifiers, _CGFontGetGlyphNameForGlyph, _CGFontGetGlyphNameMaxLength, - _CGFontGetGlyphPositions, _CGFontGetGlyphVerticalAdvances, + _CGFontGetDescent, _CGFontGetDescriptor, _CGFontGetDilationParameters, + _CGFontGetFontBBox, _CGFontGetFontSubsetFormat, _CGFontGetGlyphAdvances, + _CGFontGetGlyphAdvancesForStyle, _CGFontGetGlyphBBoxes, _CGFontGetGlyphBBoxesForStyle, + _CGFontGetGlyphForGlyphName, _CGFontGetGlyphIdentifiers, _CGFontGetGlyphNameForGlyph, + _CGFontGetGlyphNameMaxLength, _CGFontGetGlyphPositions, _CGFontGetGlyphVerticalAdvances, _CGFontGetGlyphVerticalOffsets, _CGFontGetGlyphWithGlyphName, _CGFontGetGlyphsForCIDs, _CGFontGetGlyphsForGlyphNames, _CGFontGetGlyphsForUnichars, _CGFontGetHMetrics, _CGFontGetIdentifier, _CGFontGetIntProperty, @@ -499,21 +1708,23 @@ exports: _CGFontNameTableCopyNameForLocaleIdentifier, _CGFontNameTableCopyRootName, _CGFontNameTableCreate, _CGFontNameTableGetPostScriptName, _CGFontNameTablePrint, _CGFontNameTableRelease, _CGFontQuantumEqualToQuantum, - _CGFontQuantumZero, _CGFontRelease, _CGFontRetain, _CGFontSetShouldUseMulticache, - _CGFontURLCreate, _CGFunctionCopyPDFDescription, _CGFunctionCreate, - _CGFunctionCreateEvaluatedCopy, _CGFunctionEvaluate, _CGFunctionEvaluateFloat, - _CGFunctionGetAssociate, _CGFunctionGetDomain, _CGFunctionGetDomainDimension, - _CGFunctionGetIdentifier, _CGFunctionGetInfo, _CGFunctionGetRange, - _CGFunctionGetRangeDimension, _CGFunctionGetTypeID, _CGFunctionIsIdentity, - _CGFunctionRelease, _CGFunctionRetain, _CGFunctionSetAssociate, - _CGFunctionSetProperty, _CGGStateClipToPath, _CGGStateClipToRect, + _CGFontQuantumZero, _CGFontRelease, _CGFontRenderingGetCustomAntialiasingStyle, + _CGFontRetain, _CGFontSetShouldUseMulticache, _CGFontURLCreate, + _CGFunctionCopyPDFDescription, _CGFunctionCreate, _CGFunctionCreateEvaluatedCopy, + _CGFunctionEvaluate, _CGFunctionEvaluateFloat, _CGFunctionGetAssociate, + _CGFunctionGetDomain, _CGFunctionGetDomainDimension, _CGFunctionGetIdentifier, + _CGFunctionGetInfo, _CGFunctionGetRange, _CGFunctionGetRangeDimension, + _CGFunctionGetTypeID, _CGFunctionIsIdentity, _CGFunctionRelease, + _CGFunctionRetain, _CGFunctionSetAssociate, _CGFunctionSetProperty, + _CGGStateClipToOwnedPath, _CGGStateClipToPath, _CGGStateClipToRect, _CGGStateCreate, _CGGStateCreateCopy, _CGGStateGetAdjustedLineWidth, _CGGStateGetAlpha, _CGGStateGetAlphaIsShape, _CGGStateGetBlackGeneration, _CGGStateGetCTM, _CGGStateGetCharacterSpacing, _CGGStateGetClipBoundingBox, _CGGStateGetClipRect, _CGGStateGetClipStack, _CGGStateGetCompositeOperation, - _CGGStateGetFillColor, _CGGStateGetFillOverprint, _CGGStateGetFlatness, - _CGGStateGetFont, _CGGStateGetFontAntialiasingStyle, _CGGStateGetFontDilation, - _CGGStateGetFontRenderingStyle, _CGGStateGetFontSize, _CGGStateGetFontSmoothingBackgroundColor, + _CGGStateGetEDRTargetHeadroom, _CGGStateGetFillColor, _CGGStateGetFillOverprint, + _CGGStateGetFlatness, _CGGStateGetFont, _CGGStateGetFontAntialiasingStyle, + _CGGStateGetFontDilation, _CGGStateGetFontRenderingStyle, + _CGGStateGetFontSize, _CGGStateGetFontSmoothingBackgroundColor, _CGGStateGetFontSmoothingContrast, _CGGStateGetFontSmoothingStyle, _CGGStateGetFontSubpixelQuantizationLevel, _CGGStateGetFontSubpixelQuantizationStyle, _CGGStateGetImageRenderingIntent, _CGGStateGetInterpolationQuality, @@ -528,10 +1739,10 @@ exports: _CGGStateGetStyle, _CGGStateGetTextDrawingMode, _CGGStateGetTextGreekingThreshold, _CGGStateGetTextKnockout, _CGGStateGetTransferFunctions, _CGGStateGetUndercolorRemoval, _CGGStateRelease, _CGGStateResetClip, _CGGStateRetain, _CGGStateSetAlpha, - _CGGStateSetCTM, _CGGStateSetCompositeOperation, _CGGStateSetFillColor, - _CGGStateSetPatternPhase, _CGGStateSetRenderingIntent, _CGGStateSetSoftMask, - _CGGStateSetStrokeColor, _CGGStateSetStyle, _CGGetActiveDisplayList, - _CGGetDisplayTransferByFormula, _CGGetDisplayTransferByTable, + _CGGStateSetCTM, _CGGStateSetCompositeOperation, _CGGStateSetEDRTargetHeadroom, + _CGGStateSetFillColor, _CGGStateSetPatternPhase, _CGGStateSetRenderingIntent, + _CGGStateSetSoftMask, _CGGStateSetStrokeColor, _CGGStateSetStyle, + _CGGetActiveDisplayList, _CGGetDisplayTransferByFormula, _CGGetDisplayTransferByTable, _CGGetDisplaysWithOpenGLDisplayMask, _CGGetDisplaysWithPoint, _CGGetDisplaysWithRect, _CGGetEventTapList, _CGGetHardwareVectorCapabilities, _CGGetLastMouseDelta, _CGGetMD5DigestOfBytes, _CGGetOnlineDisplayList, @@ -549,11 +1760,12 @@ exports: _CGGradientRetain, _CGGradientUsesPremultipliedInterpolation, _CGHasRequiredColorSyncVersion, _CGIOSurfaceContextCreate, _CGIOSurfaceContextCreateImage, _CGIOSurfaceContextCreateImageReference, - _CGIOSurfaceContextGetBitmapInfo, _CGIOSurfaceContextGetBitsPerComponent, - _CGIOSurfaceContextGetBitsPerPixel, _CGIOSurfaceContextGetColorSpace, - _CGIOSurfaceContextGetDisplayMask, _CGIOSurfaceContextGetGPURegistryID, - _CGIOSurfaceContextGetHeight, _CGIOSurfaceContextGetSizeLimits, - _CGIOSurfaceContextGetSurface, _CGIOSurfaceContextGetWidth, + _CGIOSurfaceContextCreateWithOptions, _CGIOSurfaceContextGetBitmapInfo, + _CGIOSurfaceContextGetBitsPerComponent, _CGIOSurfaceContextGetBitsPerPixel, + _CGIOSurfaceContextGetColorSpace, _CGIOSurfaceContextGetDisplayMask, + _CGIOSurfaceContextGetGPURegistryID, _CGIOSurfaceContextGetHeight, + _CGIOSurfaceContextGetSizeLimits, _CGIOSurfaceContextGetSurface, + _CGIOSurfaceContextGetWidth, _CGIOSurfaceContextInvalidateSurface, _CGIOSurfaceContextSetDisplayMask, _CGIOSurfaceContextSetGPURegistryID, _CGImageBlockCreate, _CGImageBlockGetBitmapInfo, _CGImageBlockGetBytesPerRow, _CGImageBlockGetData, _CGImageBlockGetRect, _CGImageBlockRelease, @@ -562,46 +1774,54 @@ exports: _CGImageBlockSetGetImageBlock, _CGImageBlockSetGetPixelSize, _CGImageBlockSetGetProperty, _CGImageBlockSetGetRect, _CGImageBlockSetGetSize, _CGImageBlockSetRelease, _CGImageBlockSetRetain, _CGImageBlockSetSetProperty, + _CGImageContainsImageSpecificToneMappingMetadata, _CGImageCopyHeadroomFromOriginal, _CGImageCopyProperty, _CGImageCreate, _CGImageCreateCopy, - _CGImageCreateCopyByApplyingxtendedRangeToneMapping, _CGImageCreateCopyWithClipPath, - _CGImageCreateCopyWithColorSpace, _CGImageCreateCopyWithOptions, - _CGImageCreateCopyWithOrientation, _CGImageCreateCopyWithRenderingIntent, + _CGImageCreateCopyByApplyingSoftMask, _CGImageCreateCopyByApplyingxtendedRangeToneMapping, + _CGImageCreateCopyWithClipPath, _CGImageCreateCopyWithColorSpace, + _CGImageCreateCopyWithContentHeadroom, _CGImageCreateCopyWithOrientation, + _CGImageCreateCopyWithRenderingIntent, _CGImageCreateCopyWithResolvedOptions, _CGImageCreateMaskFromAlpha, _CGImageCreateWithCGPDFStream, - _CGImageCreateWithCoreImage, _CGImageCreateWithEPSDataProvider, - _CGImageCreateWithImageInRect, _CGImageCreateWithImageProvider, - _CGImageCreateWithJPEGDataProvider, _CGImageCreateWithJPEGDataProvider2, - _CGImageCreateWithMask, _CGImageCreateWithMaskAndMatte, _CGImageCreateWithMaskingColor, + _CGImageCreateWithContentHeadroom, _CGImageCreateWithCoreImage, + _CGImageCreateWithEPSDataProvider, _CGImageCreateWithImageInRect, + _CGImageCreateWithImageProvider, _CGImageCreateWithJPEGDataProvider, + _CGImageCreateWithJPEGDataProvider2, _CGImageCreateWithMask, + _CGImageCreateWithMaskAndMatte, _CGImageCreateWithMaskingColor, _CGImageCreateWithMaskingColors, _CGImageCreateWithPNGDataProvider, - _CGImageDumpToFile, _CGImageEPSRepCreate, _CGImageEPSRepGetAlternateImage, - _CGImageEPSRepGetBBox, _CGImageEPSRepGetSource, _CGImageEPSRepRelease, - _CGImageEPSRepRetain, _CGImageGetAlphaInfo, _CGImageGetBitmapInfo, - _CGImageGetBitsPerComponent, _CGImageGetBitsPerPixel, _CGImageGetByteOrderInfo, - _CGImageGetBytesPerRow, _CGImageGetCachingFlags, _CGImageGetClipPath, - _CGImageGetColorSpace, _CGImageGetData, _CGImageGetDataProvider, - _CGImageGetDecode, _CGImageGetEPSRep, _CGImageGetHeight, _CGImageGetIdentifier, - _CGImageGetImageProvider, _CGImageGetMask, _CGImageGetMaskingColors, - _CGImageGetMatte, _CGImageGetOrientation, _CGImageGetPixelFormatInfo, - _CGImageGetProperty, _CGImageGetRenderingIntent, _CGImageGetShouldInterpolate, - _CGImageGetSizeAfterOrientation, _CGImageGetTransformForOrientation, - _CGImageGetTransformForOrientationAndSize, _CGImageGetTypeID, - _CGImageGetUTType, _CGImageGetWidth, _CGImageHasAlpha, _CGImageIOSurfaceSetCreate, - _CGImageIOSurfaceSetGetColorSpace, _CGImageIOSurfaceSetGetComponentType, - _CGImageIOSurfaceSetGetCount, _CGImageIOSurfaceSetGetPixelSize, - _CGImageIOSurfaceSetGetProperty, _CGImageIOSurfaceSetGetRect, - _CGImageIOSurfaceSetGetSize, _CGImageIOSurfaceSetGetTypeID, - _CGImageIOSurfaceSetRelease, _CGImageIOSurfaceSetRetain, _CGImageIOSurfaceSetSetProperty, + _CGImageDefaultReferenceWhite, _CGImageDumpToFile, _CGImageEPSRepCreate, + _CGImageEPSRepGetAlternateImage, _CGImageEPSRepGetBBox, _CGImageEPSRepGetSource, + _CGImageEPSRepRelease, _CGImageEPSRepRetain, _CGImageGetAlphaInfo, + _CGImageGetBitmapInfo, _CGImageGetBitsPerComponent, _CGImageGetBitsPerPixel, + _CGImageGetByteOrderInfo, _CGImageGetBytesPerRow, _CGImageGetCachingFlags, + _CGImageGetClipPath, _CGImageGetColorConversionInfoOptions, + _CGImageGetColorConversionInfoPayload, _CGImageGetColorSpace, + _CGImageGetContentHeadroom, _CGImageGetData, _CGImageGetDataProvider, + _CGImageGetDecode, _CGImageGetEDRHeadroomDefault, _CGImageGetEPSRep, + _CGImageGetHeadroom, _CGImageGetHeadroomInfo, _CGImageGetHeight, + _CGImageGetIdentifier, _CGImageGetImageProvider, _CGImageGetMask, + _CGImageGetMaskingColors, _CGImageGetMatte, _CGImageGetOrientation, + _CGImageGetPixelFormatInfo, _CGImageGetProperty, _CGImageGetRenderingIntent, + _CGImageGetShouldInterpolate, _CGImageGetSizeAfterOrientation, + _CGImageGetTransformForOrientation, _CGImageGetTransformForOrientationAndSize, + _CGImageGetTypeID, _CGImageGetUTType, _CGImageGetWidth, _CGImageHasAlpha, + _CGImageIOSurfaceSetCreate, _CGImageIOSurfaceSetGetColorSpace, + _CGImageIOSurfaceSetGetComponentType, _CGImageIOSurfaceSetGetCount, + _CGImageIOSurfaceSetGetPixelSize, _CGImageIOSurfaceSetGetProperty, + _CGImageIOSurfaceSetGetRect, _CGImageIOSurfaceSetGetSize, + _CGImageIOSurfaceSetGetTypeID, _CGImageIOSurfaceSetRelease, + _CGImageIOSurfaceSetRetain, _CGImageIOSurfaceSetSetProperty, _CGImageIsMask, _CGImageIsOptimizedForSharing, _CGImageIsSubimage, _CGImageMaskCreate, _CGImageNotificationCenter, _CGImageProviderCopyIOSurface, _CGImageProviderCopyIOSurfaceSet, _CGImageProviderCopyImageBlockSet, _CGImageProviderCopyImageBlockSetWithOptions, _CGImageProviderCopyImageTextureData, _CGImageProviderCreate, _CGImageProviderGetAlphaInfo, _CGImageProviderGetBitmapInfo, _CGImageProviderGetCallbackVersion, _CGImageProviderGetColorSpace, - _CGImageProviderGetComponentType, _CGImageProviderGetInfo, - _CGImageProviderGetPixelSize, _CGImageProviderGetProperty, + _CGImageProviderGetComponentType, _CGImageProviderGetContentHeadroom, + _CGImageProviderGetInfo, _CGImageProviderGetPixelSize, _CGImageProviderGetProperty, _CGImageProviderGetSize, _CGImageProviderGetTypeID, _CGImageProviderRelease, - _CGImageProviderRetain, _CGImageProviderSetProperty, _CGImageRelease, - _CGImageRetain, _CGImageSetCachingFlags, _CGImageSetProperty, - _CGImageSetSharedIdentifier, _CGImageSurfaceSetGetIOSurface, + _CGImageProviderRetain, _CGImageProviderSetContentHeadroom, + _CGImageProviderSetProperty, _CGImageRelease, _CGImageRetain, + _CGImageSetCachingFlags, _CGImageSetHeadroom, _CGImageSetProperty, + _CGImageSetSharedIdentifier, _CGImageShouldToneMap, _CGImageSurfaceSetGetIOSurface, _CGImageTextureDataCopyProperties, _CGImageTextureDataCreate, _CGImageTextureDataGetColorSpace, _CGImageTextureDataGetDataWithBlock, _CGImageTextureDataGetNumberOfFaces, _CGImageTextureDataGetNumberOfMipmaps, @@ -649,21 +1869,27 @@ exports: _CGPDFCMapGetCIDsForText, _CGPDFCMapGetIndexForUnicodes, _CGPDFCMapGetMaxUnicodes, _CGPDFCMapGetName, _CGPDFCMapGetROS, _CGPDFCMapGetUnicodeCMap, _CGPDFCMapGetUnicodesForIndex, _CGPDFCMapGetZapfTable, _CGPDFCMapIsHorizontal, - _CGPDFCMapRelease, _CGPDFCMapRetain, _CGPDFContentStreamCreateWithPage, - _CGPDFContentStreamCreateWithStream, _CGPDFContentStreamGetResource, - _CGPDFContentStreamGetStreams, _CGPDFContentStreamRelease, - _CGPDFContentStreamRetain, _CGPDFContextAddAnnotation, _CGPDFContextAddCatalogEntry, - _CGPDFContextAddDestinationAtPoint, _CGPDFContextAddDocumentMetadata, - _CGPDFContextAddPDFXInfo, _CGPDFContextAddStructureTreeRootChild, - _CGPDFContextBeginDrawingHiddenText, _CGPDFContextBeginMarkedContentSequence, - _CGPDFContextBeginObjectReference, _CGPDFContextBeginPage, - _CGPDFContextBeginStructuralMarkedContentSequence, _CGPDFContextBeginTag, - _CGPDFContextClose, _CGPDFContextCreate, _CGPDFContextCreateWithFilename, - _CGPDFContextCreateWithURL, _CGPDFContextEndDrawingHiddenText, - _CGPDFContextEndMarkedContentSequence, _CGPDFContextEndObjectReference, - _CGPDFContextEndPage, _CGPDFContextEndTag, _CGPDFContextIsValidPassword, - _CGPDFContextSetDestinationForRect, _CGPDFContextSetImageTag, - _CGPDFContextSetOutline, _CGPDFContextSetOutputIntent, _CGPDFContextSetRedactionPath, + _CGPDFCMapRelease, _CGPDFCMapRetain, _CGPDFContentStreamCreateResolvedColor, + _CGPDFContentStreamCreateResolvedColorSpace, _CGPDFContentStreamCreateWithPage, + _CGPDFContentStreamCreateWithStream, _CGPDFContentStreamGetColorSpace, + _CGPDFContentStreamGetExtGState, _CGPDFContentStreamGetFont, + _CGPDFContentStreamGetPatternStream, _CGPDFContentStreamGetPropertyList, + _CGPDFContentStreamGetResource, _CGPDFContentStreamGetShadingDictionary, + _CGPDFContentStreamGetStreams, _CGPDFContentStreamGetXObjectStream, + _CGPDFContentStreamRelease, _CGPDFContentStreamRetain, _CGPDFContextAddAnnotation, + _CGPDFContextAddCatalogEntry, _CGPDFContextAddDestinationAtPoint, + _CGPDFContextAddDocumentMetadata, _CGPDFContextAddPDFXInfo, + _CGPDFContextAddStructureTreeRootChild, _CGPDFContextBeginDrawingHiddenText, + _CGPDFContextBeginMarkedContentSequence, _CGPDFContextBeginObjectReference, + _CGPDFContextBeginPage, _CGPDFContextBeginStructuralMarkedContentSequence, + _CGPDFContextBeginTag, _CGPDFContextClose, _CGPDFContextCreate, + _CGPDFContextCreateWithFilename, _CGPDFContextCreateWithURL, + _CGPDFContextEndDrawingHiddenText, _CGPDFContextEndMarkedContentSequence, + _CGPDFContextEndObjectReference, _CGPDFContextEndPage, _CGPDFContextEndTag, + _CGPDFContextIsValidPassword, _CGPDFContextSetDestinationForRect, + _CGPDFContextSetIDTree, _CGPDFContextSetImageTag, _CGPDFContextSetOutline, + _CGPDFContextSetOutputIntent, _CGPDFContextSetPageTagStructureTree, + _CGPDFContextSetParentTree, _CGPDFContextSetRedactionPath, _CGPDFContextSetShouldDeflate, _CGPDFContextSetURLForRect, _CGPDFDictionaryApplyBlock, _CGPDFDictionaryApplyFunction, _CGPDFDictionaryApplyFunctionRaw, _CGPDFDictionaryGetArray, @@ -684,9 +1910,9 @@ exports: _CGPDFDocumentCopyOutputIntents, _CGPDFDocumentCopyPage, _CGPDFDocumentCopyToConsumerWithChanges, _CGPDFDocumentCreateLinearizedRangesForPage, _CGPDFDocumentCreateWithProvider, _CGPDFDocumentCreateWithURL, _CGPDFDocumentEnableMRUMode, - _CGPDFDocumentEnableSimpleSelection, _CGPDFDocumentEnableTaggedStructureSerialization, - _CGPDFDocumentExchangePagesAtIndices, _CGPDFDocumentGetAccessPermissions, - _CGPDFDocumentGetCatalog, _CGPDFDocumentGetDataProvider, _CGPDFDocumentGetDestination, + _CGPDFDocumentEnableTaggedStructureSerialization, _CGPDFDocumentExchangePagesAtIndices, + _CGPDFDocumentGetAccessPermissions, _CGPDFDocumentGetCatalog, + _CGPDFDocumentGetDataProvider, _CGPDFDocumentGetDestination, _CGPDFDocumentGetEncryptMetadata, _CGPDFDocumentGetEncryptionVersion, _CGPDFDocumentGetID, _CGPDFDocumentGetInfo, _CGPDFDocumentGetLinearizedDictionary, _CGPDFDocumentGetLinearizedNamedDestinationRange, _CGPDFDocumentGetLinearizedOutlineRange, @@ -698,10 +1924,12 @@ exports: _CGPDFDocumentGetPermissions, _CGPDFDocumentGetProperty, _CGPDFDocumentGetRawPermissions, _CGPDFDocumentGetTypeID, _CGPDFDocumentGetURL, _CGPDFDocumentGetVersion, _CGPDFDocumentGetXRef, _CGPDFDocumentInsertPageAtIndex, _CGPDFDocumentIsEncrypted, - _CGPDFDocumentIsLinearized, _CGPDFDocumentIsTaggedPDF, _CGPDFDocumentIsUnlocked, - _CGPDFDocumentIsUnlockedAsOwner, _CGPDFDocumentPreloadLinearizedPageData, - _CGPDFDocumentPrintObject, _CGPDFDocumentRelease, _CGPDFDocumentRemovePageAtIndex, - _CGPDFDocumentRemoveProperty, _CGPDFDocumentRetain, _CGPDFDocumentSetDeviceCMYKColorSpace, + _CGPDFDocumentIsLayoutWithCTLDEnabled, _CGPDFDocumentIsLinearized, + _CGPDFDocumentIsSimpleSelectionEnabled, _CGPDFDocumentIsTaggedPDF, + _CGPDFDocumentIsUnlocked, _CGPDFDocumentIsUnlockedAsOwner, + _CGPDFDocumentPreloadLinearizedPageData, _CGPDFDocumentPrintObject, + _CGPDFDocumentRelease, _CGPDFDocumentRemovePageAtIndex, _CGPDFDocumentRemoveProperty, + _CGPDFDocumentRetain, _CGPDFDocumentSetDeviceCMYKColorSpace, _CGPDFDocumentSetDeviceGrayColorSpace, _CGPDFDocumentSetDeviceRGBColorSpace, _CGPDFDocumentSetProperty, _CGPDFDocumentUnlockAsOwnerWithPassword, _CGPDFDocumentUnlockWithPassword, _CGPDFDrawingContextCreateWithStream, @@ -756,11 +1984,11 @@ exports: _CGPDFGetUnicharsForGlyphName, _CGPDFHexDataCreate, _CGPDFHexDataGetData, _CGPDFHexDataTypeID, _CGPDFLayoutBufferUnicodeAndBoundsForRange, _CGPDFLayoutCreateAttributedStringForRanges, _CGPDFLayoutCreateDirectionalSelection, - _CGPDFLayoutCreateSelectionAtPoint, _CGPDFLayoutCreateSelectionAtPointWithOptions, - _CGPDFLayoutCreateSelectionBetweenPoints, _CGPDFLayoutCreateSelectionBetweenPointsWithOptions, - _CGPDFLayoutCreateSelectionBetweenRangeAndPoint, _CGPDFLayoutCreateSelectionContainingSelection, - _CGPDFLayoutCreateSelectionForEntireLayout, _CGPDFLayoutCreateSelectionForIntersectingRect, - _CGPDFLayoutCreateSelectionForIntersectingRectWithOptions, + _CGPDFLayoutCreateFromEncodedData, _CGPDFLayoutCreateSelectionAtPoint, + _CGPDFLayoutCreateSelectionAtPointWithOptions, _CGPDFLayoutCreateSelectionBetweenPoints, + _CGPDFLayoutCreateSelectionBetweenPointsWithOptions, _CGPDFLayoutCreateSelectionBetweenRangeAndPoint, + _CGPDFLayoutCreateSelectionContainingSelection, _CGPDFLayoutCreateSelectionForEntireLayout, + _CGPDFLayoutCreateSelectionForIntersectingRect, _CGPDFLayoutCreateSelectionForIntersectingRectWithOptions, _CGPDFLayoutCreateSelectionForPath, _CGPDFLayoutCreateSelectionForQuadPoints, _CGPDFLayoutCreateSelectionForRange, _CGPDFLayoutCreateSelectionForRect, _CGPDFLayoutCreateSelectionForStringRange, _CGPDFLayoutCreateSelectionFromIndexToPoint, @@ -822,7 +2050,8 @@ exports: _CGPDFObjectPrint, _CGPDFOperatorTableCreate, _CGPDFOperatorTableRelease, _CGPDFOperatorTableRetain, _CGPDFOperatorTableSetCallback, _CGPDFPageAddAnnotation, _CGPDFPageContainsWideGamutContent, - _CGPDFPageCopyLayout, _CGPDFPageCopyPageLabel, _CGPDFPageCopyPageLayout, + _CGPDFPageCopyBackgroundColorHint, _CGPDFPageCopyLayout, _CGPDFPageCopyPageLabel, + _CGPDFPageCopyPageLayout, _CGPDFPageCopyPageLayoutWithCTLD, _CGPDFPageCopyRootTaggedNode, _CGPDFPageCopyString, _CGPDFPageCopyTextString, _CGPDFPageCopyTextStringWithGlyphs, _CGPDFPageCopyThumbnail, _CGPDFPageCreate, _CGPDFPageCreateThumbnail, _CGPDFPageCreateWithImage, @@ -833,16 +2062,18 @@ exports: _CGPDFPageGetDrawingTransformForRect, _CGPDFPageGetImages, _CGPDFPageGetLayout, _CGPDFPageGetPageNumber, _CGPDFPageGetProperty, _CGPDFPageGetReferenceForAnnotation, _CGPDFPageGetRotationAngle, - _CGPDFPageGetThumbnail, _CGPDFPageGetTypeID, _CGPDFPageLayoutGetAreaOfInterestAtPoint, + _CGPDFPageGetThumbnail, _CGPDFPageGetTypeID, _CGPDFPageInsertTableDescriptions, + _CGPDFPageLayoutCreateEncodedData, _CGPDFPageLayoutEnumerateLineRects, + _CGPDFPageLayoutEqualToPageLayout, _CGPDFPageLayoutGetAreaOfInterestAtPoint, _CGPDFPageLayoutGetCharacterPreciseBoundingBoxes, _CGPDFPageLayoutGetCharacterSelectionBoundingBox, _CGPDFPageLayoutGetCharacterSelectionBoundingBoxes, _CGPDFPageLayoutGetColumnBoundsAtPointWithCompletion, _CGPDFPageLayoutGetNumberOfCharacterBoundingBoxes, _CGPDFPageLayoutGetStringRangeIndexNearestPoint, - _CGPDFPageLayoutGetTextRangeIndexAtPoint, _CGPDFPageLayoutRelease, - _CGPDFPageLayoutRetain, _CGPDFPagePrint, _CGPDFPageRelease, - _CGPDFPageRemoveAnnotation, _CGPDFPageRemoveLayout, _CGPDFPageRemoveProperty, - _CGPDFPageRetain, _CGPDFPageSetBoxRect, _CGPDFPageSetExtraContentStream, - _CGPDFPageSetLayout, _CGPDFPageSetProperty, _CGPDFPageSetRotationAngle, - _CGPDFPageSortAnnotations, _CGPDFPageSubstituteAnnotation, + _CGPDFPageLayoutGetTextRangeIndexAtPoint, _CGPDFPageLayoutInsertTableDescriptions, + _CGPDFPageLayoutRelease, _CGPDFPageLayoutRetain, _CGPDFPagePrint, + _CGPDFPageRelease, _CGPDFPageRemoveAnnotation, _CGPDFPageRemoveLayout, + _CGPDFPageRemoveProperty, _CGPDFPageRetain, _CGPDFPageSetBoxRect, + _CGPDFPageSetExtraContentStream, _CGPDFPageSetLayout, _CGPDFPageSetProperty, + _CGPDFPageSetRotationAngle, _CGPDFPageSortAnnotations, _CGPDFPageSubstituteAnnotation, _CGPDFPageSubstituteAnnotationDictionary, _CGPDFRStateCreate, _CGPDFRStateCreateCopy, _CGPDFRStateGRestore, _CGPDFRStateGSave, _CGPDFRStateGetGState, _CGPDFRStateRelease, _CGPDFRStateSetGState, @@ -865,8 +2096,9 @@ exports: _CGPDFSelectionCreateInRect, _CGPDFSelectionCreateIntersectingRect, _CGPDFSelectionCreateSelectionsByLine, _CGPDFSelectionCreateString, _CGPDFSelectionCreateToPoint, _CGPDFSelectionCreateToPointWithOptions, - _CGPDFSelectionEqualToSelection, _CGPDFSelectionExtendAtEnd, - _CGPDFSelectionExtendAtStart, _CGPDFSelectionGetBounds, _CGPDFSelectionGetCGFontAtIndex, + _CGPDFSelectionEnumerateRectsAndTransforms, _CGPDFSelectionEqualToSelection, + _CGPDFSelectionExtendAtEnd, _CGPDFSelectionExtendAtStart, + _CGPDFSelectionGetBounds, _CGPDFSelectionGetCGFontAtIndex, _CGPDFSelectionGetClientProperty, _CGPDFSelectionGetContentRect, _CGPDFSelectionGetEndCursorXPosition, _CGPDFSelectionGetEndIndex, _CGPDFSelectionGetFirstIndex, _CGPDFSelectionGetGlyphAtIndex, @@ -899,16 +2131,20 @@ exports: _CGPDFStructureElementSetAlternativeText, _CGPDFStructureElementSetExpansionText, _CGPDFStructureElementSetLanguageIdentifier, _CGPDFStructureElementSetTitle, _CGPDFTagTypeGetName, _CGPDFTaggedNodeCreateAttributedString, - _CGPDFTaggedNodeCreateAttributedStringForTextRange, _CGPDFTaggedNodeCreateLineRanges, - _CGPDFTaggedNodeCreateLineRangesForTextRange, _CGPDFTaggedNodeCreateString, - _CGPDFTaggedNodeCreateStringForTextRange, _CGPDFTaggedNodeEnumerateChildren, + _CGPDFTaggedNodeCreateAttributedStringForStringRange, _CGPDFTaggedNodeCreateAttributedStringForTextRange, + _CGPDFTaggedNodeCreateCopyWithStringRange, _CGPDFTaggedNodeCreateLineRanges, + _CGPDFTaggedNodeCreateLineRangesForTextRange, _CGPDFTaggedNodeCreateLineStringRanges, + _CGPDFTaggedNodeCreateLineStringRangesForStringRange, _CGPDFTaggedNodeCreateString, + _CGPDFTaggedNodeCreateStringForStringRange, _CGPDFTaggedNodeCreateStringForTextRange, + _CGPDFTaggedNodeEnumerateChildren, _CGPDFTaggedNodeEqualToPDFTaggedNode, _CGPDFTaggedNodeGetActualText, _CGPDFTaggedNodeGetAltText, - _CGPDFTaggedNodeGetBounds, _CGPDFTaggedNodeGetBoundsForTextRange, - _CGPDFTaggedNodeGetChildAtIndex, _CGPDFTaggedNodeGetChildCount, - _CGPDFTaggedNodeGetLanguageText, _CGPDFTaggedNodeGetListStyle, - _CGPDFTaggedNodeGetNodeContainingPoint, _CGPDFTaggedNodeGetNodeContainingTextRange, - _CGPDFTaggedNodeGetObjectReference, _CGPDFTaggedNodeGetParagraphLinks, - _CGPDFTaggedNodeGetParent, _CGPDFTaggedNodeGetTableCellColumnSpan, + _CGPDFTaggedNodeGetBounds, _CGPDFTaggedNodeGetBoundsForStringRange, + _CGPDFTaggedNodeGetBoundsForTextRange, _CGPDFTaggedNodeGetChildAtIndex, + _CGPDFTaggedNodeGetChildCount, _CGPDFTaggedNodeGetLanguageText, + _CGPDFTaggedNodeGetListStyle, _CGPDFTaggedNodeGetNodeContainingPoint, + _CGPDFTaggedNodeGetNodeContainingTextRange, _CGPDFTaggedNodeGetObjectReference, + _CGPDFTaggedNodeGetParagraphLinks, _CGPDFTaggedNodeGetParent, + _CGPDFTaggedNodeGetStringRange, _CGPDFTaggedNodeGetTableCellColumnSpan, _CGPDFTaggedNodeGetTableCellRowSpan, _CGPDFTaggedNodeGetTableColumnCount, _CGPDFTaggedNodeGetTableRowCount, _CGPDFTaggedNodeGetTextRange, _CGPDFTaggedNodeGetTitleText, _CGPDFTaggedNodeGetType, _CGPDFTaggedNodeGetTypeName, @@ -928,8 +2164,8 @@ exports: _CGPSConverterIsConverting, _CGPaletteCreateWithDisplay, _CGPaletteCreateWithSamples, _CGPaletteGetColorAtIndex, _CGPaletteGetNumberOfSamples, _CGPaletteRelease, _CGPaletteSetColorAtIndex, _CGPathAddArc, _CGPathAddArcToPoint, - _CGPathAddCurveToPoint, _CGPathAddEllipseInRect, _CGPathAddLineToPoint, - _CGPathAddLines, _CGPathAddPath, _CGPathAddQuadCurveToPoint, + _CGPathAddContinuousRoundedRect, _CGPathAddCurveToPoint, _CGPathAddEllipseInRect, + _CGPathAddLineToPoint, _CGPathAddLines, _CGPathAddPath, _CGPathAddQuadCurveToPoint, _CGPathAddRect, _CGPathAddRects, _CGPathAddRegion, _CGPathAddRelativeArc, _CGPathAddRoundedRect, _CGPathAddUnevenCornersRoundedRect, _CGPathApply, _CGPathApplyDashedPath, _CGPathApplyIterator, @@ -943,21 +2179,22 @@ exports: _CGPathCreateCopyOfLineBySubtractingPath, _CGPathCreateDashedPath, _CGPathCreateEncodedData, _CGPathCreateMutable, _CGPathCreateMutableCopy, _CGPathCreateMutableCopyByTransformingPath, _CGPathCreateSeparateComponents, - _CGPathCreateStrokedPath, _CGPathCreateWithData, _CGPathCreateWithEllipseInRect, - _CGPathCreateWithLineSegment, _CGPathCreateWithRect, _CGPathCreateWithRoundedRect, - _CGPathCreateWithThresholdedImage, _CGPathCreateWithThresholdedImageDebug, - _CGPathCreateWithUnevenCornersRoundedRect, _CGPathEqualToPath, - _CGPathGetBoundingBox, _CGPathGetCurrentPoint, _CGPathGetGeometricBoundingBox, - _CGPathGetNumberOfElements, _CGPathGetNumberOfPoints, _CGPathGetPathBoundingBox, - _CGPathGetTypeID, _CGPathIntersectsPath, _CGPathIntersectsPathUsingEvenOdd, - _CGPathIntersectsRect, _CGPathIsEllipse, _CGPathIsEllipse2, + _CGPathCreateStrokedPath, _CGPathCreateWithContinuousRoundedRect, + _CGPathCreateWithData, _CGPathCreateWithEllipseInRect, _CGPathCreateWithLineSegment, + _CGPathCreateWithRect, _CGPathCreateWithRoundedRect, _CGPathCreateWithThresholdedImage, + _CGPathCreateWithThresholdedImageDebug, _CGPathCreateWithUnevenCornersRoundedRect, + _CGPathEqualToPath, _CGPathGetBoundingBox, _CGPathGetCurrentPoint, + _CGPathGetGeometricBoundingBox, _CGPathGetNumberOfElements, + _CGPathGetNumberOfPoints, _CGPathGetPathBoundingBox, _CGPathGetTypeID, + _CGPathIntersectsPath, _CGPathIntersectsPathUsingEvenOdd, + _CGPathIntersectsRect, _CGPathIsArc, _CGPathIsEllipse, _CGPathIsEllipse2, _CGPathIsEllipseWithTransform, _CGPathIsEmpty, _CGPathIsLine, - _CGPathIsRect, _CGPathIsRectWithTransform, _CGPathIsRegion, - _CGPathIsRoundedRect, _CGPathIsRoundedRectWithTransform, _CGPathIsUnevenCornersRoundedRectWithTransform, - _CGPathIsValidGlyphPath, _CGPathMoveToPoint, _CGPathPrint, - _CGPathRelease, _CGPathRetain, _CGPatternCreate, _CGPatternCreateColoredEmpty, - _CGPatternCreateUncoloredEmpty, _CGPatternCreateWithImage, - _CGPatternCreateWithImage2, _CGPatternDrawInContextDelegate, + _CGPathIsPrimitive, _CGPathIsRect, _CGPathIsRectWithTransform, + _CGPathIsRegion, _CGPathIsRoundedRect, _CGPathIsRoundedRectWithTransform, + _CGPathIsUnevenCornersRoundedRectWithTransform, _CGPathIsValidGlyphPath, + _CGPathMoveToPoint, _CGPathPrint, _CGPathRelease, _CGPathRetain, + _CGPatternCreate, _CGPatternCreateColoredEmpty, _CGPatternCreateUncoloredEmpty, + _CGPatternCreateWithImage, _CGPatternCreateWithImage2, _CGPatternDrawInContextDelegate, _CGPatternEqualToPattern, _CGPatternGetAssociate, _CGPatternGetBounds, _CGPatternGetIdentifier, _CGPatternGetImage, _CGPatternGetMatrix, _CGPatternGetShading, _CGPatternGetStep, _CGPatternGetTiling, @@ -978,7 +2215,7 @@ exports: _CGPostScrollWheelEvent, _CGPreferencesCopyString, _CGPreferencesGetBoolean, _CGPreferencesGetCGFloat, _CGPreferencesGetInteger, _CGPreflightListenEventAccess, _CGPreflightPostEventAccess, _CGPreflightScreenCaptureAccess, - _CGRectApplyAffineTransform, _CGRectApplyInverseAffineTransform, + _CGPrivateAPIVersion, _CGRectApplyAffineTransform, _CGRectApplyInverseAffineTransform, _CGRectContainsPoint, _CGRectContainsRect, _CGRectCreateDictionaryRepresentation, _CGRectDivide, _CGRectEqualToRect, _CGRectGetHeight, _CGRectGetMaxX, _CGRectGetMaxY, _CGRectGetMidX, _CGRectGetMidY, _CGRectGetMinX, @@ -986,16 +2223,17 @@ exports: _CGRectIntegral, _CGRectIntersection, _CGRectIntersectsRect, _CGRectIsEmpty, _CGRectIsInfinite, _CGRectIsIntegral, _CGRectIsNull, _CGRectMakeWithDictionaryRepresentation, _CGRectNull, _CGRectOffset, - _CGRectStandardize, _CGRectUnion, _CGRectZero, _CGRegionContainsPoint, - _CGRegionContainsRect, _CGRegionContainsRegion, _CGRegionCopyData, - _CGRegionCreateByScalingRegion, _CGRegionCreateBySimplifyingRegion, + _CGRectStandardize, _CGRectUnion, _CGRectZero, _CGReferenceWhiteToneMappingGetDefaultOptions, + _CGRegionContainsPoint, _CGRegionContainsRect, _CGRegionContainsRegion, + _CGRegionCopyData, _CGRegionCreateByScalingRegion, _CGRegionCreateBySimplifyingRegion, _CGRegionCreateByTransformingRegion, _CGRegionCreateCopy, _CGRegionCreateDifferenceWithRegion, _CGRegionCreateEmptyRegion, _CGRegionCreateIntersectionWithRect, _CGRegionCreateIntersectionWithRegion, _CGRegionCreateUnionWithRect, _CGRegionCreateUnionWithRegion, - _CGRegionCreateWithBytes, _CGRegionCreateWithData, _CGRegionCreateWithInset, - _CGRegionCreateWithOffset, _CGRegionCreateWithRect, _CGRegionCreateWithRects, - _CGRegionCreateXORWithRegion, _CGRegionEnumeratorCreate, _CGRegionEnumeratorCreateWithDirection, + _CGRegionCreateWithBoundsBlock, _CGRegionCreateWithBytes, + _CGRegionCreateWithData, _CGRegionCreateWithInset, _CGRegionCreateWithOffset, + _CGRegionCreateWithRect, _CGRegionCreateWithRects, _CGRegionCreateXORWithRegion, + _CGRegionEnumeratorCreate, _CGRegionEnumeratorCreateWithDirection, _CGRegionEnumeratorGetNextRect, _CGRegionEnumeratorRelease, _CGRegionEqualToRegion, _CGRegionForwardEnumeratorGetNextBounds, _CGRegionForwardEnumeratorGetNextRect, _CGRegionForwardEnumeratorMake, @@ -1407,7 +2645,7 @@ exports: __ZN15CGBufferStorage16CreateWithBufferEPvmPFvS0_S0_ES0_, __ZN15CGBufferStorage16CreateWithCFDataEPK8__CFData, __ZN15CGBufferStorage20ReleaseImageBlockSetEPvS0_, __ZN15CGBufferStorage23CreateWithImageBlockSetEP15CGImageBlockSetm, - __ZN15CGBufferStorage31DataProviderReleaseInfoCallbackEPvPKvm, + __ZN15CGBufferStorage25FreeStorageExternalBufferEPvS0_, __ZN15CGBufferStorage31DataProviderReleaseInfoCallbackEPvPKvm, __ZN15CGBufferStorage32BitmapContextReleaseDataCallbackEPvS0_, __ZN15CGBufferStorage6CreateEm12CGBufOptions, __ZN15CGBufferStorage6ResizeEm, __ZN5CGBuf10FillBufferE12CGBufOptions, __ZN5CGBuf5PrintEPKS_, @@ -1418,17 +2656,21 @@ exports: __ZN5CGBufC2EmmjjjP12CGColorSpacePKd22CGColorRenderingIntent12CGBufOptions, __ZNK5CGBuf10PrintPixelERPcRmmm, __ZNK5CGBuf13CreateCGImageEb, __ZNK5CGBuf13_GetAlphaDataERm, __ZNK5CGBuf21CreateCGBitmapContextEv, - __ZNK5CGBuf5PrintERPcRmPKc, _cglsAttachDrawable, _cglsAttachPBuffer, - _cglsAttachState, _cglsCreateContext, _cglsCreatePBuffer, - _cglsDestroyContext, _cglsDestroyPBuffer, _cglsDestroyRendererInfo, - _cglsGetInteger, _cglsGetPixelFormat, _cglsGetState, _cglsGetSurface, - _cglsGetVirtualScreen, _cglsQueryRendererInfo, _cglsSetInteger, - _cglsTexImageIOSurface2D, _cglsTexImagePBuffer, _kCGApplyDisplayReferredExtendedRangeToneMapping, - _kCGApplyEXRToneMappingGamma, _kCGApplyLuminanceScaling, _kCGApplySceneReferredExtendedRangeToneMapping, - _kCGApplyYCCGammaScaling, _kCGAutoBitDepthMax, _kCGCFNumberPointerType, - _kCGCFNumberSizeTType, _kCGColorBlack, _kCGColorClear, _kCGColorConversionBlackPointCompensation, - _kCGColorConversionInfoOptions, _kCGColorConversionTRCSize, - _kCGColorSpaceACESCGLinear, _kCGColorSpaceAdobeRGB1998, _kCGColorSpaceAttachment_CICP_data, + __ZNK5CGBuf5PrintERPcRmPKc, '__swift_FORCE_LOAD_$_swiftCoreGraphics', + _cglsAttachDrawable, _cglsAttachPBuffer, _cglsAttachState, + _cglsCreateContext, _cglsCreatePBuffer, _cglsDestroyContext, + _cglsDestroyPBuffer, _cglsDestroyRendererInfo, _cglsGetInteger, + _cglsGetPixelFormat, _cglsGetState, _cglsGetSurface, _cglsGetVirtualScreen, + _cglsQueryRendererInfo, _cglsSetInteger, _cglsTexImageIOSurface2D, + _cglsTexImagePBuffer, _kCGApplyDisplayReferredExtendedRangeToneMapping, + _kCGApplyEXRToneMappingGamma, _kCGApplyFlexLumaScaling, _kCGApplyFlexTRC, + _kCGApplyLuminanceScaling, _kCGApplyReferenceWhiteToneMapping, + _kCGApplySceneReferredExtendedRangeToneMapping, _kCGApplyYCCGammaScaling, + _kCGAutoBitDepthMax, _kCGCFNumberPointerType, _kCGCFNumberSizeTType, + _kCGColorBlack, _kCGColorClear, _kCGColorConversionBlackPointCompensation, + _kCGColorConversionInfoOptions, _kCGColorConversionInfoPayload, + _kCGColorConversionTRCSize, _kCGColorSpaceACESCGLinear, _kCGColorSpaceAdobeRGB1998, + _kCGColorSpaceAttachment_CICP_data, _kCGColorSpaceCoreMedia709, _kCGColorSpaceDCIP3, _kCGColorSpaceDisplayP3, _kCGColorSpaceDisplayP3_709OETF, _kCGColorSpaceDisplayP3_HLG, _kCGColorSpaceDisplayP3_PQ, _kCGColorSpaceDisplayP3_PQ_EOTF, _kCGColorSpaceDisplayRGB, _kCGColorSpaceExtendedDisplayP3, @@ -1459,15 +2701,16 @@ exports: _kCGContextStyleEnd, _kCGContextStyleType, _kCGContextSynchronize, _kCGContextWait, _kCGConvertColorDataUseColorSync, _kCGConvertColorDataUseColorSyncForHDR, _kCGConvertColorDataUseColorSyncForToneMapping, _kCGDataProviderHasHighLatency, - _kCGDataProviderIndeterminateSize, _kCGDisplayBlueGammaKey, - _kCGDisplayBluePointXKey, _kCGDisplayBluePointYKey, _kCGDisplayBrightnessAffectsGammaKey, - _kCGDisplayBundleURLKey, _kCGDisplayCSProfileDataKey, _kCGDisplayEDIDKey, - _kCGDisplayEDIDOriginalKey, _kCGDisplayFixedPixelFormatKey, - _kCGDisplayGammaChannelsKey, _kCGDisplayGammaEntryCountKey, - _kCGDisplayGammaEntrySizeKey, _kCGDisplayGammaTableKey, _kCGDisplayGreenGammaKey, - _kCGDisplayGreenPointXKey, _kCGDisplayGreenPointYKey, _kCGDisplayHasBacklightKey, - _kCGDisplayHorizontalImageSizeKey, _kCGDisplayID, _kCGDisplayIOFBTransformKey, - _kCGDisplayIsDigitalKey, _kCGDisplayIsVirtualDevice, _kCGDisplayListClipRecordingToFrameKey, + _kCGDataProviderIndeterminateSize, _kCGDefaultHDRImageContentHeadroom, + _kCGDisplayBlueGammaKey, _kCGDisplayBluePointXKey, _kCGDisplayBluePointYKey, + _kCGDisplayBrightnessAffectsGammaKey, _kCGDisplayBundleURLKey, + _kCGDisplayCSProfileDataKey, _kCGDisplayEDIDKey, _kCGDisplayEDIDOriginalKey, + _kCGDisplayFixedPixelFormatKey, _kCGDisplayGammaChannelsKey, + _kCGDisplayGammaEntryCountKey, _kCGDisplayGammaEntrySizeKey, + _kCGDisplayGammaTableKey, _kCGDisplayGreenGammaKey, _kCGDisplayGreenPointXKey, + _kCGDisplayGreenPointYKey, _kCGDisplayHasBacklightKey, _kCGDisplayHorizontalImageSizeKey, + _kCGDisplayID, _kCGDisplayIOFBTransformKey, _kCGDisplayIsDigitalKey, + _kCGDisplayIsVirtualDevice, _kCGDisplayListClipRecordingToFrameKey, _kCGDisplayListDecodeImagesOnRecordingKey, _kCGDisplayListEvaluateShadingOnRecordingKey, _kCGDisplayListRecordAccurateGlyphBoundsKey, _kCGDisplayLocationKey, _kCGDisplayParametersKey, _kCGDisplayPixelHeight, _kCGDisplayPixelWidth, @@ -1489,27 +2732,29 @@ exports: _kCGDrawPDFPageSourceRectOptionKey, _kCGDrawPDFPageWhiteBackgroundOptionKey, _kCGEXRToneMappingGammaDefog, _kCGEXRToneMappingGammaExposure, _kCGEXRToneMappingGammaKneeHigh, _kCGEXRToneMappingGammaKneeLow, - _kCGFontNameKeyCopyright, _kCGFontNameKeyDescription, _kCGFontNameKeyDesigner, - _kCGFontNameKeyDesignerURL, _kCGFontNameKeyFontFamily, _kCGFontNameKeyFontSubfamily, - _kCGFontNameKeyFullName, _kCGFontNameKeyLicense, _kCGFontNameKeyLicenseURL, - _kCGFontNameKeyManufacturer, _kCGFontNameKeyPostScriptName, + _kCGFlexGTCTargetHeadroom, _kCGFontNameKeyCopyright, _kCGFontNameKeyDescription, + _kCGFontNameKeyDesigner, _kCGFontNameKeyDesignerURL, _kCGFontNameKeyFontFamily, + _kCGFontNameKeyFontSubfamily, _kCGFontNameKeyFullName, _kCGFontNameKeyLicense, + _kCGFontNameKeyLicenseURL, _kCGFontNameKeyManufacturer, _kCGFontNameKeyPostScriptName, _kCGFontNameKeyPreferredFamily, _kCGFontNameKeyPreferredSubfamily, _kCGFontNameKeySampleText, _kCGFontNameKeyTrademark, _kCGFontNameKeyUniqueID, _kCGFontNameKeyVendorURL, _kCGFontNameKeyVersion, _kCGFontVariationAxisDefaultValue, _kCGFontVariationAxisMaxValue, _kCGFontVariationAxisMinValue, _kCGFontVariationAxisName, _kCGGradientInterpolatesPremultiplied, - _kCGImageBlockBaseAddressAlignmentRequest, _kCGImageBlockBytesPerRowAlignmentRequest, - _kCGImageBlockColorSpaceRequest, _kCGImageBlockFormatBGRx8, - _kCGImageBlockFormatRequest, _kCGImageBlockMarkAsReadOnlyRequest, + _kCGIOSurfaceContextPassLimitKey, _kCGImageBlockBaseAddressAlignmentRequest, + _kCGImageBlockBytesPerRowAlignmentRequest, _kCGImageBlockColorSpaceRequest, + _kCGImageBlockFormatBGRx8, _kCGImageBlockFormatRequest, _kCGImageBlockMarkAsReadOnlyRequest, _kCGImageBlockSingletonRequest, _kCGImageBlockTileRequest, - _kCGImageExtendedRangeToneMappingInfo, _kCGImageForceConversion, - _kCGImageHeight, _kCGImagePropertyIOSurface, _kCGImageProviderAlphaIsNotPremultiplied, + _kCGImageEstimatedHeadroom, _kCGImageExtendedRangeToneMappingInfo, + _kCGImageForceConversion, _kCGImageHeadroom, _kCGImageHeight, + _kCGImagePropertyIOSurface, _kCGImageProviderAlphaIsNotPremultiplied, _kCGImageProviderAlphaIsOne, _kCGImageProviderAlphaIsPremultiplied, _kCGImageProviderAlphaNoneSkipLastRequest, _kCGImageProviderBitmapInfo, - _kCGImageProviderPremultipliedAlphaRequest, _kCGImageProviderSupportsMultipleResolutions, - _kCGImageSurfaceDisplayMaskRequest, _kCGImageWidth, _kCGImageWillDeallocate, - _kCGLineWidthHairline, _kCGMenuBarActiveMaterialKey, _kCGMenuBarDisplayIDKey, - _kCGMenuBarFilterKey, _kCGMenuBarFlagsKey, _kCGMenuBarFullScreenAppleWindowKey, + _kCGImageProviderContentHeadroom, _kCGImageProviderPremultipliedAlphaRequest, + _kCGImageProviderSupportsMultipleResolutions, _kCGImageSurfaceDisplayMaskRequest, + _kCGImageWidth, _kCGImageWillDeallocate, _kCGLineWidthHairline, + _kCGMenuBarActiveMaterialKey, _kCGMenuBarDisplayIDKey, _kCGMenuBarFilterKey, + _kCGMenuBarFlagsKey, _kCGMenuBarFullScreenAppleWindowKey, _kCGMenuBarFullScreenFillWindowKey, _kCGMenuBarHasBackstopKey, _kCGMenuBarImageWindowKey, _kCGMenuBarInactiveImageWindowKey, _kCGMenuBarInactiveMaterialKey, _kCGMenuBarMenuTitlesArrayKey, @@ -1555,6 +2800,8 @@ exports: _kCGPSDSCTitleKey, _kCGPSDSCViewingOrientationKey, _kCGPSFeatureInfoKey, _kCGPSGenerateProtectedOutput, _kCGPSOutputDeviceDPI, _kCGPSOutputFormatKey, _kCGPathEncodingOptionTruncatePrecision, _kCGPatternWillDeallocate, + _kCGRWTMEDRHeadroom, _kCGRWTMReferenceWhiteThreshold, _kCGRWTMSourcePeak, + _kCGRWTMSourceReferenceWhite, _kCGRWTMTargetReferenceWhiteBase, _kCGSConnectionDefaultSpace, _kCGSConnectionIDKey, _kCGSContextIDKey, _kCGSDisplayIDKey, _kCGSFalse, _kCGSLocationKey, _kCGSPSNHiKey, _kCGSPSNLoKey, _kCGSPackagesCollapsedSpaceKey, _kCGSPackagesCurrentSpaceKey, @@ -1592,7 +2839,8 @@ exports: _kCGSWorkspaceTileSpaceArrayKey, _kCGSWorkspaceTileTypeKey, _kCGSWorkspaceTileTypePrimary, _kCGSWorkspaceTileTypeSecondary, _kCGSWorkspaceTileTypeUnknown, _kCGSWorkspaceTileWindowKey, - _kCGSWorkspaceTypeKey, _kCGSWorkspaceWallSpaceKey, _kCGUseBT1886ForCoreVideoGamma, + _kCGSWorkspaceTypeKey, _kCGSWorkspaceWallSpaceKey, _kCGSkipBoostToHDR, + _kCGUse100nitsHLGOOTF, _kCGUseBT1886ForCoreVideoGamma, _kCGUseLegacyHDREcosystem, _kCGWindowAlpha, _kCGWindowBackingLocationVideoMemory, _kCGWindowBounds, _kCGWindowIsOnscreen, _kCGWindowLayer, _kCGWindowMemoryUsage, _kCGWindowName, _kCGWindowNumber, _kCGWindowOwnerName, _kCGWindowOwnerPID, @@ -1634,11 +2882,11 @@ exports: __Z18CGPreferencesCheckI37CGImageMarkAllowTemplateMethodIntegerENT_10ResultTypeEv, __Z18CGPreferencesCheckI37CGPDFPageLayoutSimpleSelectionEnabledENT_10ResultTypeEv, __Z18CGPreferencesCheckI38CGPDFDocumentPageResourcesCacheLoggingENT_10ResultTypeEv ] - - targets: [ x86_64-macos, x86_64h-macos, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] symbols: [ _CGContextDrawPDFDocument, _CGContextGetDefaultUserSpaceToDeviceSpaceTransform, - _CGFontCreateWithPlatformFont, _CGFontRenderingGetCustomAntialiasingStyle, - _CGFontRenderingGetFontSmoothingDisabled, _CGPDFDocumentGetArtBox, - _CGPDFDocumentGetBleedBox, _CGPDFDocumentGetCropBox, _CGPDFDocumentGetMediaBox, - _CGPDFDocumentGetRotationAngle, _CGPDFDocumentGetTrimBox, - _CGSQuadrangleToRegion, _CGSSetDisplayAcceleratorBoost, _CGVirtualDisplaySettingsRefreshDeadlineNone ] + _CGFontCreateWithPlatformFont, _CGFontRenderingGetFontSmoothingDisabled, + _CGPDFDocumentGetArtBox, _CGPDFDocumentGetBleedBox, _CGPDFDocumentGetCropBox, + _CGPDFDocumentGetMediaBox, _CGPDFDocumentGetRotationAngle, + _CGPDFDocumentGetTrimBox, _CGSQuadrangleToRegion, _CGSSetDisplayAcceleratorBoost, + _CGVirtualDisplaySettingsRefreshDeadlineNone ] ... diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGAffineTransform.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGAffineTransform.h index 79dcac39..25fc34a5 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGAffineTransform.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGAffineTransform.h @@ -53,85 +53,85 @@ typedef struct CGAffineTransformComponents /* The identity transform: [ 1 0 0 1 0 0 ]. */ CG_EXTERN const CGAffineTransform CGAffineTransformIdentity - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the transform [ a b c d tx ty ]. */ CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return a transform which translates by `(tx, ty)': t' = [ 1 0 0 1 tx ty ] */ CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformMakeTranslation(CGFloat tx, - CGFloat ty) CG_AVAILABLE_STARTING(10.0, 2.0); + CGFloat ty) API_AVAILABLE(macos(10.0), ios(2.0)); /* Return a transform which scales by `(sx, sy)': t' = [ sx 0 0 sy 0 0 ] */ CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformMakeScale(CGFloat sx, CGFloat sy) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return a transform which rotates by `angle' radians: t' = [ cos(angle) sin(angle) -sin(angle) cos(angle) 0 0 ] */ CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformMakeRotation(CGFloat angle) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `t' is the identity transform, false otherwise. */ CG_EXTERN bool CG_PURE CGAffineTransformIsIdentity(CGAffineTransform t) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Translate `t' by `(tx, ty)' and return the result: t' = [ 1 0 0 1 tx ty ] * t */ CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformTranslate(CGAffineTransform t, - CGFloat tx, CGFloat ty) CG_AVAILABLE_STARTING(10.0, 2.0); + CGFloat tx, CGFloat ty) API_AVAILABLE(macos(10.0), ios(2.0)); /* Scale `t' by `(sx, sy)' and return the result: t' = [ sx 0 0 sy 0 0 ] * t */ CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformScale(CGAffineTransform t, - CGFloat sx, CGFloat sy) CG_AVAILABLE_STARTING(10.0, 2.0); + CGFloat sx, CGFloat sy) API_AVAILABLE(macos(10.0), ios(2.0)); /* Rotate `t' by `angle' radians and return the result: t' = [ cos(angle) sin(angle) -sin(angle) cos(angle) 0 0 ] * t */ CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformRotate(CGAffineTransform t, - CGFloat angle) CG_AVAILABLE_STARTING(10.0, 2.0); + CGFloat angle) API_AVAILABLE(macos(10.0), ios(2.0)); /* Invert `t' and return the result. If `t' has zero determinant, then `t' is returned unchanged. */ CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformInvert(CGAffineTransform t) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Concatenate `t2' to `t1' and return the result: t' = t1 * t2 */ CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformConcat(CGAffineTransform t1, - CGAffineTransform t2) CG_AVAILABLE_STARTING(10.0, 2.0); + CGAffineTransform t2) API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `t1' and `t2' are equal, false otherwise. */ CG_EXTERN bool CG_PURE CGAffineTransformEqualToTransform(CGAffineTransform t1, - CGAffineTransform t2) CG_AVAILABLE_STARTING(10.4, 2.0); + CGAffineTransform t2) API_AVAILABLE(macos(10.4), ios(2.0)); /* Transform `point' by `t' and return the result: p' = p * t where p = [ x y 1 ]. */ CG_EXTERN CGPoint CG_PURE CGPointApplyAffineTransform(CGPoint point, - CGAffineTransform t) CG_AVAILABLE_STARTING(10.0, 2.0); + CGAffineTransform t) API_AVAILABLE(macos(10.0), ios(2.0)); /* Transform `size' by `t' and return the result: s' = s * t where s = [ width height 0 ]. */ CG_EXTERN CGSize CG_PURE CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Transform `rect' by `t' and return the result. Since affine transforms do not preserve rectangles in general, this function returns the smallest @@ -141,7 +141,7 @@ CG_EXTERN CGSize CG_PURE CGSizeApplyAffineTransform(CGSize size, CGAffineTransfo transformed corners. */ CG_EXTERN CGRect CG_PURE CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /*! @abstract Decompose a CGAffineTransform into a scale * shear * rotation * translation * @discussion This decomposition method may be used to provide insight into what a @@ -158,14 +158,14 @@ CG_EXTERN CGRect CG_PURE CGRectApplyAffineTransform(CGRect rect, CGAffineTransfo * @return A decomposed set of geometric operations, the product of which is the CGAffineTransform. */ CG_EXTERN CGAffineTransformComponents CG_PURE CGAffineTransformDecompose( CGAffineTransform transform ) -CF_REFINED_FOR_SWIFT CG_AVAILABLE_STARTING( 13.0, 16.0 ); +CF_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), ios(16.0)); /*! @abstract Create CGAffineTransform from scale * shear * rotation * translation CGAffineTransformComponents * @param components The set of CGAffineTransformComponents to use to create a new CGAffineTransform * @return A new CGAffineTransform built from the provided components */ CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformMakeWithComponents( CGAffineTransformComponents components ) -CF_REFINED_FOR_SWIFT CG_AVAILABLE_STARTING( 13.0, 16.0 ); +CF_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), ios(16.0)); /*** Definitions of inline functions. ***/ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGBase.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGBase.h index 72178c69..58787ad6 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGBase.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGBase.h @@ -186,32 +186,7 @@ # endif #endif -/* Define `CG_AVAILABLE_STARTING' and `CG_AVAILABLE_BUT_DEPRECATED'. */ - -#define GET_CG_AVAIL_MACRO(_1,_2,NAME,...) NAME -#define CG_AVAILABLE_STARTING(...) GET_CG_AVAIL_MACRO(__VA_ARGS__, CG_AVAILABLE_STARTING2, CG_AVAILABLE_STARTING1)(__VA_ARGS__) -#define CG_AVAILABLE_STARTING_IOS(i) API_AVAILABLE(ios(i)) -#define CG_AVAILABLE_STARTING1(m) API_AVAILABLE(macos(m)) -#define CG_AVAILABLE_STARTING2(m,i) API_AVAILABLE(macos(m), ios(i)) - -#define GET_CG_AVAIL_BUT_DEPR_MACRO(_1,_2,_3,_4,_5,NAME,...) NAME -#define CG_AVAILABLE_BUT_DEPRECATED(...) GET_CG_AVAIL_BUT_DEPR_MACRO(__VA_ARGS__, CG_AVAILABLE_BUT_DEPRECATED5, CG_AVAILABLE_BUT_DEPRECATED4, CG_AVAILABLE_BUT_DEPRECATED3, CG_AVAILABLE_BUT_DEPRECATED2, CG_AVAILABLE_BUT_DEPRECATED1)(__VA_ARGS__) -#define CG_AVAILABLE_BUT_DEPRECATED1(m0) -#define CG_AVAILABLE_BUT_DEPRECATED2(m0,m1) API_DEPRECATED("No longer supported", macos(m0,m1)) -#define CG_AVAILABLE_BUT_DEPRECATED3(m0,m1,w) API_DEPRECATED(w, macos(m0,m1)) -#define CG_AVAILABLE_BUT_DEPRECATED4(m0,m1,i0,i1) API_DEPRECATED("No longer supported", macos(m0,m1), ios(i0,i1)) -#define CG_AVAILABLE_BUT_DEPRECATED5(m0,m1,i0,i1,w) API_DEPRECATED(w, macos(m0,m1), ios(i0,i1)) -#define CG_UNAVAILABLE_DESKTOP API_UNAVAILABLE(macos) -#define CG_UNAVAILABLE_EMBEDDED API_UNAVAILABLE(ios, tvos, watchos) - #if (defined(TARGET_OS_LINUX) && TARGET_OS_LINUX) || defined(CG_LINUX) -# undef __OSX_AVAILABLE_STARTING -# undef __OSX_AVAILABLE_BUT_DEPRECATED -# undef CG_AVAILABLE_STARTING -# undef CG_AVAILABLE_STARTING_IOS -# undef CG_AVAILABLE_BUT_DEPRECATED -# undef CG_UNAVAILABLE_DESKTOP -# undef CG_UNAVAILABLE_EMBEDDED # if defined(__x86_64__) typedef unsigned int boolean_t; @@ -256,16 +231,6 @@ CG_BRIDGE_VERSION(50000)) #endif -#ifndef __OSX_AVAILABLE_STARTING -# define __OSX_AVAILABLE_STARTING(m0,i) -# define __OSX_AVAILABLE_BUT_DEPRECATED(m0,m1,i0,i1) -# define CG_AVAILABLE_STARTING(...) -# define CG_AVAILABLE_STARTING_IOS(...) -# define CG_AVAILABLE_BUT_DEPRECATED(...) -# define CG_UNAVAILABLE_DESKTOP -# define CG_UNAVAILABLE_EMBEDDED -#endif - /* Definition of `__CG_STATIC_ASSERT'. */ #if !defined(__CG_STATIC_ASSERT) diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGBitmapContext.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGBitmapContext.h index 86653eeb..d4ca0c9f 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGBitmapContext.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGBitmapContext.h @@ -44,7 +44,7 @@ CG_EXTERN CGContextRef __nullable CGBitmapContextCreateWithData( size_t bytesPerRow, CGColorSpaceRef cg_nullable space, uint32_t bitmapInfo, CGBitmapContextReleaseDataCallback __nullable releaseCallback, void * __nullable releaseInfo) - CG_AVAILABLE_STARTING(10.6, 4.0); + API_AVAILABLE(macos(10.6), ios(4.0)); /* Create a bitmap context. The context draws into a bitmap which is `width' pixels wide and `height' pixels high. The number of components for each @@ -65,64 +65,64 @@ CG_EXTERN CGContextRef __nullable CGBitmapContextCreateWithData( CG_EXTERN CGContextRef __nullable CGBitmapContextCreate(void * __nullable data, size_t width, size_t height, size_t bitsPerComponent, size_t bytesPerRow, CGColorSpaceRef cg_nullable space, uint32_t bitmapInfo) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the data associated with the bitmap context `context', or NULL if `context' is not a bitmap context. */ CG_EXTERN void * __nullable CGBitmapContextGetData(CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the width of the bitmap context `context', or 0 if `context' is not a bitmap context. */ CG_EXTERN size_t CGBitmapContextGetWidth(CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the height of the bitmap context `context', or 0 if `context' is not a bitmap context. */ CG_EXTERN size_t CGBitmapContextGetHeight(CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the bits per component of the bitmap context `context', or 0 if `context' is not a bitmap context. */ CG_EXTERN size_t CGBitmapContextGetBitsPerComponent(CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the bits per pixel of the bitmap context `context', or 0 if `context' is not a bitmap context. */ CG_EXTERN size_t CGBitmapContextGetBitsPerPixel(CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the bytes per row of the bitmap context `context', or 0 if `context' is not a bitmap context. */ CG_EXTERN size_t CGBitmapContextGetBytesPerRow(CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the color space of the bitmap context `context', or NULL if `context' is not a bitmap context. */ CG_EXTERN CGColorSpaceRef __nullable CGBitmapContextGetColorSpace( CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the alpha info of the bitmap context `context', or "kCGImageAlphaNone" if `context' is not a bitmap context. */ CG_EXTERN CGImageAlphaInfo CGBitmapContextGetAlphaInfo( CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the bitmap info of the bitmap context `context', or 0 if `context' is not a bitmap context. */ CG_EXTERN CGBitmapInfo CGBitmapContextGetBitmapInfo( CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return an image containing a snapshot of the bitmap context `context'. If context is not a bitmap context, or if the image cannot be created for @@ -139,7 +139,7 @@ CG_EXTERN CGBitmapInfo CGBitmapContextGetBitmapInfo( CG_EXTERN CGImageRef __nullable CGBitmapContextCreateImage( CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColor.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColor.h index 2b66552d..d85b8eb3 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColor.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColor.h @@ -25,31 +25,31 @@ CF_ASSUME_NONNULL_BEGIN CG_EXTERN CGColorRef __nullable CGColorCreate(CGColorSpaceRef cg_nullable space, const CGFloat * cg_nullable components) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Create a color in the "Generic" gray color space. */ CG_EXTERN CGColorRef CGColorCreateGenericGray(CGFloat gray, CGFloat alpha) - CG_AVAILABLE_STARTING(10.5, 13.0); + API_AVAILABLE(macos(10.5), ios(13.0)); /* Create a color in the "Generic" RGB color space. */ CG_EXTERN CGColorRef CGColorCreateGenericRGB(CGFloat red, CGFloat green, - CGFloat blue, CGFloat alpha) CG_AVAILABLE_STARTING(10.5, 13.0); + CGFloat blue, CGFloat alpha) API_AVAILABLE(macos(10.5), ios(13.0)); /* Create a color in the "Generic" CMYK color space. */ CG_EXTERN CGColorRef CGColorCreateGenericCMYK(CGFloat cyan, CGFloat magenta, - CGFloat yellow, CGFloat black, CGFloat alpha) CG_AVAILABLE_STARTING(10.5, 13.0); + CGFloat yellow, CGFloat black, CGFloat alpha) API_AVAILABLE(macos(10.5), ios(13.0)); /* Create a color in the "Generic Gray Gamma 2.2 color space. */ -CG_EXTERN CGColorRef CGColorCreateGenericGrayGamma2_2(CGFloat gray, CGFloat alpha) CG_AVAILABLE_STARTING(10.15, 13.0); +CG_EXTERN CGColorRef CGColorCreateGenericGrayGamma2_2(CGFloat gray, CGFloat alpha) API_AVAILABLE(macos(10.15), ios(13.0)); /* Create a color in sRGB color space. */ CG_EXTERN CGColorRef CGColorCreateSRGB(CGFloat red, CGFloat green, - CGFloat blue, CGFloat alpha) CG_AVAILABLE_STARTING(10.15, 13.0); + CGFloat blue, CGFloat alpha) API_AVAILABLE(macos(10.15), ios(13.0)); /* Return a constant color. As `CGColorGetConstantColor' is not a "Copy" or "Create" function, it does not necessarily return a new reference each @@ -59,92 +59,92 @@ CG_EXTERN CGColorRef CGColorCreateSRGB(CGFloat red, CGFloat green, CF type. */ CG_EXTERN CGColorRef __nullable CGColorGetConstantColor(CFStringRef cg_nullable colorName) - CG_AVAILABLE_STARTING(10.5, 14.0); + API_AVAILABLE(macos(10.5), ios(14.0)); /* Create a color in color space `space' with pattern `pattern' and components `components'. `space' must be a pattern color space. */ CG_EXTERN CGColorRef __nullable CGColorCreateWithPattern(CGColorSpaceRef cg_nullable space, CGPatternRef cg_nullable pattern, const CGFloat * cg_nullable components) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Create a copy of `color'. */ CG_EXTERN CGColorRef __nullable CGColorCreateCopy(CGColorRef cg_nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Create a copy of `color' with alpha set to `alpha'. */ CG_EXTERN CGColorRef __nullable CGColorCreateCopyWithAlpha(CGColorRef cg_nullable color, - CGFloat alpha) CG_AVAILABLE_STARTING(10.3, 2.0); + CGFloat alpha) API_AVAILABLE(macos(10.3), ios(2.0)); /* Create a copy of `color' by matching existing color to destination color space. */ CG_EXTERN CGColorRef __nullable CGColorCreateCopyByMatchingToColorSpace(cg_nullable CGColorSpaceRef, CGColorRenderingIntent intent, CGColorRef cg_nullable color, __nullable CFDictionaryRef options) - CG_AVAILABLE_STARTING(10.11, 9.0); + API_AVAILABLE(macos(10.11), ios(9.0)); /* Equivalent to `CFRetain(color)', except it doesn't crash (as CFRetain does) if `color' is NULL. */ CG_EXTERN CGColorRef cg_nullable CGColorRetain(CGColorRef cg_nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Equivalent to `CFRelease(color)', except it doesn't crash (as CFRelease does) if `color' is NULL. */ CG_EXTERN void CGColorRelease(CGColorRef cg_nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return true if `color1' is equal to `color2'; false otherwise. */ CG_EXTERN bool CGColorEqualToColor(CGColorRef cg_nullable color1, CGColorRef cg_nullable color2) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the number of color components (including alpha) associated with `color'. */ CG_EXTERN size_t CGColorGetNumberOfComponents(CGColorRef cg_nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the color components (including alpha) associated with `color'. */ CG_EXTERN const CGFloat * __nullable CGColorGetComponents(CGColorRef cg_nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the alpha component associated with `color'. */ CG_EXTERN CGFloat CGColorGetAlpha(CGColorRef cg_nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the color space associated with `color'. */ CG_EXTERN CGColorSpaceRef __nullable CGColorGetColorSpace(CGColorRef cg_nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the pattern associated with `color', if it's a color in a pattern color space; NULL otherwise. */ CG_EXTERN CGPatternRef __nullable CGColorGetPattern(CGColorRef cg_nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the CFTypeID for CGColors. */ CG_EXTERN CFTypeID CGColorGetTypeID(void) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /*** Names of colors for use with `CGColorGetConstantColor'. ***/ /* Colors in the "Generic" gray color space. */ CG_EXTERN const CFStringRef kCGColorWhite -CG_AVAILABLE_STARTING(10.5, 14.0); +API_AVAILABLE(macos(10.5), ios(14.0)); CG_EXTERN const CFStringRef kCGColorBlack - CG_AVAILABLE_STARTING(10.5, 14.0); + API_AVAILABLE(macos(10.5), ios(14.0)); CG_EXTERN const CFStringRef kCGColorClear - CG_AVAILABLE_STARTING(10.5, 14.0); + API_AVAILABLE(macos(10.5), ios(14.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColorConversionInfo.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColorConversionInfo.h index bb2c5b48..df9b237f 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColorConversionInfo.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColorConversionInfo.h @@ -8,6 +8,8 @@ #include #include #include +#include +#include typedef const struct CF_BRIDGED_TYPE(id) CGColorConversionInfo* CGColorConversionInfoRef; @@ -29,10 +31,16 @@ typedef CF_ENUM (uint32_t, CGColorConversionInfoTransformType) { */ CG_EXTERN CGColorConversionInfoRef __nullable CGColorConversionInfoCreate(cg_nullable CGColorSpaceRef src, cg_nullable CGColorSpaceRef dst) - CG_AVAILABLE_STARTING(10.12, 10.0); + API_AVAILABLE(macos(10.12), ios(10.0)); +/* CGColorConversionInfoCreateWithOptions allows to request a specifc behavior of color conversion + * which is consistent with CGContextDrawImageApplyingToneMapping when applying kCGToneMappingITURecommended. + * These options include: kCGUse100nitsHLGOOTF, kCGUseBT1886ForCoreVideoGamma, kCGSkipBoostToHDR + * and kCGUseLegacyHDREcosystem. + * See CGContext.h and CGToneMapping.h for more details. + */ CG_EXTERN CGColorConversionInfoRef __nullable CGColorConversionInfoCreateWithOptions(__nonnull CGColorSpaceRef src, __nonnull CGColorSpaceRef dst, CFDictionaryRef __nullable options) -CG_AVAILABLE_STARTING(10.14.6, 13); +API_AVAILABLE(macos(10.14.6), ios(13)); /* Create CGColorConversionInfoRef from a list of CG color spaces, transform types and rendering intents. * ColorSpaces are iterated from first to last. The list of triples: @@ -42,16 +50,47 @@ CG_AVAILABLE_STARTING(10.14.6, 13); CG_EXTERN CGColorConversionInfoRef __nullable CGColorConversionInfoCreateFromList (CFDictionaryRef __nullable options, cg_nullable CGColorSpaceRef, CGColorConversionInfoTransformType, CGColorRenderingIntent, ...) - CG_AVAILABLE_STARTING(10.12, 10.0); + API_AVAILABLE(macos(10.12), ios(10.0)); CG_EXTERN CGColorConversionInfoRef __nullable CGColorConversionInfoCreateFromListWithArguments (CFDictionaryRef __nullable options, cg_nullable CGColorSpaceRef, CGColorConversionInfoTransformType, CGColorRenderingIntent, va_list) - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); + +/* CGColorConversionInfoCreateForToneMapping allows to request the specifc behavior of a color conversion + * which is consistent with CGContextDrawImageApplyingToneMapping. + * See CGContext.h and CGToneMapping.h for more details about CGToneMapping type and options. + * CGColorConversionInfoCreateWithOptions will return NULL when CGColorConversionInfoRef cannot be created or no cconversion is required. + * Headroom values are ignored when kCGToneMappingITURecommended, kCGToneMappingEXRGamma or kCGToneMappingNone methods are used. + * Otherwise headroom values must be equal or greater 1.0f to be considered valid. + * CGColorConversionInfoCreateForToneMapping requires that target headroom is smaller or equal source headroom to succeed, except when converting + * SDR to HDR. + * If CGColorConversionInfoRef cannot be created because of incorrect parameters and 'error' is a non-NULL pointer, a CFErrorRef will be returned + * with the description explaining the reason. + */ + +CG_EXTERN CGColorConversionInfoRef __nullable CGColorConversionInfoCreateForToneMapping(__nonnull CGColorSpaceRef from, float source_headroom, __nonnull CGColorSpaceRef to, float target_headroom, CGToneMapping method, CFDictionaryRef __nullable options, CFErrorRef* __nullable error) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + +typedef struct { + uint32_t version; // current version = 0 + CGBitmapInfo bitmapInfo; // see CGImage.h + size_t bitsPerComponent; // only 8, 10, 16 fixed, 16 bit float and 32 bit float are supported + size_t bitsPerPixel; + size_t bytesPerRow; +} CGColorBufferFormat; + +/* + * CGColorConversionInfoConvertData will use CGColorConversionInfoRef 'info' to convert 'src_data' described by 'width' (in pixels), + * 'height' (in pixels) and 'src_format' to 'dst_data' of the same pixel size ('width', 'height') and 'dst_format'. + * CFDictionaryRef 'options' is reserved for future use. + * CGColorConversionInfoConvertData will return 'true' on success and 'false' on failure. + */ + +CG_EXTERN bool CGColorConversionInfoConvertData(__nonnull CGColorConversionInfoRef info, size_t width, size_t height, void* __nonnull dst_data, CGColorBufferFormat dst_format, const void* __nonnull src_data, CGColorBufferFormat src_format, CFDictionaryRef __nullable options) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); -/* CFBooleanRef which can be used as option to create CGColorConversionInfoRef, when Black Point Compensation is desired */ -CG_EXTERN const CFStringRef kCGColorConversionBlackPointCompensation CG_AVAILABLE_STARTING(10.12, 10.0); +/* CFBooleanRef's which can be used as options to create CGColorConversionInfoRef */ +CG_EXTERN const CFStringRef kCGColorConversionBlackPointCompensation API_AVAILABLE(macos(10.12), ios(10.0)); -CG_EXTERN const CFStringRef kCGColorConversionTRCSize CG_AVAILABLE_STARTING(10.13, 11.0); +CG_EXTERN const CFStringRef kCGColorConversionTRCSize API_AVAILABLE(macos(10.13), ios(11.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColorSpace.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColorSpace.h index 5591c7a4..5fe93f5e 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColorSpace.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGColorSpace.h @@ -52,7 +52,7 @@ CF_ASSUME_NONNULL_BEGIN kCGColorSpaceGenericGray. */ CG_EXTERN const CFStringRef kCGColorSpaceGenericGray - CG_AVAILABLE_STARTING(10.4, 9.0); + API_AVAILABLE(macos(10.4), ios(9.0)); /* The name of the "Generic" RGB color space. It is a legacy color space so use it only if you definitely know that you @@ -61,28 +61,28 @@ CG_EXTERN const CFStringRef kCGColorSpaceGenericGray instead of kCGColorSpaceGenericRGB. */ CG_EXTERN const CFStringRef kCGColorSpaceGenericRGB - CG_AVAILABLE_STARTING(10.4, 9.0); + API_AVAILABLE(macos(10.4), ios(9.0)); /* The name of the "Generic" CMYK color space. */ CG_EXTERN const CFStringRef kCGColorSpaceGenericCMYK - CG_AVAILABLE_STARTING(10.4, 9.0); + API_AVAILABLE(macos(10.4), ios(9.0)); CG_EXTERN const CFStringRef kCGColorSpaceDisplayP3 - CG_AVAILABLE_STARTING(10.11.2, 9.3); + API_AVAILABLE(macos(10.11.2), ios(9.3)); /* The name of the "Generic" linear RGB color space. This is the same as `kCGColorSpaceGenericRGB' but with a 1.0 gamma. */ CG_EXTERN const CFStringRef kCGColorSpaceGenericRGBLinear - CG_AVAILABLE_STARTING(10.5, 9.0); + API_AVAILABLE(macos(10.5), ios(9.0)); /* The name of the Adobe RGB (1998) color space. For more information, see "Adobe RGB (1998) Color Image Encoding", Version 2005-05, Adobe Systems Inc. (http://www.adobe.com). */ CG_EXTERN const CFStringRef kCGColorSpaceAdobeRGB1998 - CG_AVAILABLE_STARTING(10.5, 9.0); + API_AVAILABLE(macos(10.5), ios(9.0)); /* The name of the sRGB color space. The capitalization in the name, while strictly inaccurate, avoids interpretational ambiguity. For more @@ -91,15 +91,15 @@ CG_EXTERN const CFStringRef kCGColorSpaceAdobeRGB1998 management - Default RGB colour space - sRGB". */ CG_EXTERN const CFStringRef kCGColorSpaceSRGB - CG_AVAILABLE_STARTING(10.5, 9.0); + API_AVAILABLE(macos(10.5), ios(9.0)); /* The "Generic" gray color space with γ = 2.2. */ CG_EXTERN const CFStringRef kCGColorSpaceGenericGrayGamma2_2 - CG_AVAILABLE_STARTING(10.6, 9.0); + API_AVAILABLE(macos(10.6), ios(9.0)); CG_EXTERN const CFStringRef kCGColorSpaceGenericXYZ - CG_AVAILABLE_STARTING(10.11, 9.0); + API_AVAILABLE(macos(10.11), ios(9.0)); /* The name of the "Generic" L*a*b* color space. This is the same as L*a*b* colorspace created by `CGColorSpaceCreateLab' with @@ -107,73 +107,73 @@ CG_EXTERN const CFStringRef kCGColorSpaceGenericXYZ and range [-128, 128, -128, 128]. */ CG_EXTERN const CFStringRef kCGColorSpaceGenericLab -CG_AVAILABLE_STARTING(10.13, 11.0); +API_AVAILABLE(macos(10.13), ios(11.0)); CG_EXTERN const CFStringRef kCGColorSpaceACESCGLinear -CG_AVAILABLE_STARTING(10.11, 9.0); +API_AVAILABLE(macos(10.11), ios(9.0)); CG_EXTERN const CFStringRef kCGColorSpaceITUR_709 -CG_AVAILABLE_STARTING(10.11, 9.0); +API_AVAILABLE(macos(10.11), ios(9.0)); CG_EXTERN const CFStringRef kCGColorSpaceITUR_709_PQ -CG_AVAILABLE_STARTING(12.0, 15.1); +API_AVAILABLE(macos(12.0), ios(15.1)); CG_EXTERN const CFStringRef kCGColorSpaceITUR_709_HLG -CG_AVAILABLE_STARTING(12.0, 15.1); +API_AVAILABLE(macos(12.0), ios(15.1)); CG_EXTERN const CFStringRef kCGColorSpaceITUR_2020 -CG_AVAILABLE_STARTING(10.11, 9.0); +API_AVAILABLE(macos(10.11), ios(9.0)); CG_EXTERN const CFStringRef kCGColorSpaceITUR_2020_sRGBGamma -CG_AVAILABLE_STARTING(12.0, 15.1); +API_AVAILABLE(macos(12.0), ios(15.1)); CG_EXTERN const CFStringRef kCGColorSpaceROMMRGB -CG_AVAILABLE_STARTING(10.11, 9.0); +API_AVAILABLE(macos(10.11), ios(9.0)); CG_EXTERN const CFStringRef kCGColorSpaceDCIP3 -CG_AVAILABLE_STARTING(10.11, 9.0); +API_AVAILABLE(macos(10.11), ios(9.0)); CG_EXTERN const CFStringRef kCGColorSpaceLinearITUR_2020 -CG_AVAILABLE_STARTING(12.0, 15.0); +API_AVAILABLE(macos(12.0), ios(15.0)); CG_EXTERN const CFStringRef kCGColorSpaceExtendedITUR_2020 -CG_AVAILABLE_STARTING(11.0, 14.0); +API_AVAILABLE(macos(11.0), ios(14.0)); CG_EXTERN const CFStringRef kCGColorSpaceExtendedLinearITUR_2020 -CG_AVAILABLE_STARTING(10.14.3, 12.3); +API_AVAILABLE(macos(10.14.3), ios(12.3)); CG_EXTERN const CFStringRef kCGColorSpaceLinearDisplayP3 -CG_AVAILABLE_STARTING(12.0, 15.0); +API_AVAILABLE(macos(12.0), ios(15.0)); CG_EXTERN const CFStringRef kCGColorSpaceExtendedDisplayP3 -CG_AVAILABLE_STARTING(11.0, 14.0); +API_AVAILABLE(macos(11.0), ios(14.0)); CG_EXTERN const CFStringRef kCGColorSpaceExtendedLinearDisplayP3 -CG_AVAILABLE_STARTING(10.14.3, 12.3); +API_AVAILABLE(macos(10.14.3), ios(12.3)); CG_EXTERN const CFStringRef kCGColorSpaceITUR_2100_PQ -CG_AVAILABLE_STARTING(11.0, 14.0); +API_AVAILABLE(macos(11.0), ios(14.0)); CG_EXTERN const CFStringRef kCGColorSpaceITUR_2100_HLG -CG_AVAILABLE_STARTING(11.0, 14.0); +API_AVAILABLE(macos(11.0), ios(14.0)); CG_EXTERN const CFStringRef kCGColorSpaceDisplayP3_PQ -CG_AVAILABLE_STARTING(10.15.4, 13.4); +API_AVAILABLE(macos(10.15.4), ios(13.4)); CG_EXTERN const CFStringRef kCGColorSpaceDisplayP3_HLG -CG_AVAILABLE_STARTING(10.14.6, 12.6); +API_AVAILABLE(macos(10.14.6), ios(12.6)); CG_EXTERN const CFStringRef kCGColorSpaceITUR_2020_PQ -CG_AVAILABLE_BUT_DEPRECATED(10.15.4, 11.0, 13.4, 14.0); // Use kCGColorSpaceITUR_2100_PQ. +API_DEPRECATED("No longer supported", macos(10.15.4,11.0), ios(13.4,14.0)); // Use kCGColorSpaceITUR_2100_PQ. CG_EXTERN const CFStringRef kCGColorSpaceITUR_2020_HLG -CG_AVAILABLE_BUT_DEPRECATED(10.15.6, 11.0, 12.6, 14.0); // Use kCGColorSpaceITUR_2100_HLG. +API_DEPRECATED("No longer supported", macos(10.15.6,11.0), ios(12.6,14.0)); // Use kCGColorSpaceITUR_2100_HLG. CG_EXTERN const CFStringRef kCGColorSpaceDisplayP3_PQ_EOTF -CG_AVAILABLE_BUT_DEPRECATED(10.14.6, 10.15.4, 12.6, 13.4); +API_DEPRECATED("No longer supported", macos(10.14.6,10.15.4), ios(12.6,13.4)); CG_EXTERN const CFStringRef kCGColorSpaceITUR_2020_PQ_EOTF -CG_AVAILABLE_BUT_DEPRECATED(10.14.6, 10.15.4, 12.6, 13.4); // Use kCGColorSpaceITUR_2100_PQ. +API_DEPRECATED("No longer supported", macos(10.14.6,10.15.4), ios(12.6,13.4)); // Use kCGColorSpaceITUR_2100_PQ. /* The name of the extended sRGB color space. The extended sRGB color space allows to specify colors beyond the range of [0.0, 1.0], @@ -183,49 +183,52 @@ CG_AVAILABLE_BUT_DEPRECATED(10.14.6, 10.15.4, 12.6, 13.4); // Use kCGColorSpaceI The capitalization in the name is for avoiding interpretational ambiguity. */ CG_EXTERN const CFStringRef kCGColorSpaceExtendedSRGB -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); /* The name of the sRGB color space variant with linear gamma */ CG_EXTERN const CFStringRef kCGColorSpaceLinearSRGB -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); /* The name of the extended sRGB color space variant with linear gamma */ CG_EXTERN const CFStringRef kCGColorSpaceExtendedLinearSRGB -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); /* The name of the extended Gray color space. This color space has the same colorimetry as Generic Gray 2.2. The negative values will be encoded as the signed reflection of original encoding functions, i.e. y(x) = sign(x)*f(abs(x)) where f(x) represents the encoding function. */ CG_EXTERN const CFStringRef kCGColorSpaceExtendedGray -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); /* The name of the Generic Gray 2.2 color space variant with linear gamma */ CG_EXTERN const CFStringRef kCGColorSpaceLinearGray -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); /* The name of the extended Generic Gray 2.2 color space variant with linear gamma */ CG_EXTERN const CFStringRef kCGColorSpaceExtendedLinearGray -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); + +CG_EXTERN const CFStringRef kCGColorSpaceCoreMedia709 +API_AVAILABLE(macos(15.0), ios(18.0)); /* Create a DeviceGray color space. */ CG_EXTERN CGColorSpaceRef cg_nullable CGColorSpaceCreateDeviceGray(void) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a DeviceRGB color space. */ CG_EXTERN CGColorSpaceRef cg_nullable CGColorSpaceCreateDeviceRGB(void) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a DeviceCMYK color space. */ CG_EXTERN CGColorSpaceRef cg_nullable CGColorSpaceCreateDeviceCMYK(void) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a calibrated gray color space. `whitePoint' is an array of 3 numbers specifying the tristimulus value, in the CIE 1931 XYZ-space, of @@ -237,7 +240,7 @@ CG_EXTERN CGColorSpaceRef cg_nullable CGColorSpaceCreateDeviceCMYK(void) CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateCalibratedGray(const CGFloat whitePoint[CG_NONNULL_ARRAY 3], const CGFloat blackPoint[__nullable 3], CGFloat gamma) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a calibrated RGB color space. `whitePoint' is an array of 3 numbers specifying the tristimulus value, in the CIE 1931 XYZ-space, of @@ -254,7 +257,7 @@ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateCalibratedGray(const CGFl CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateCalibratedRGB(const CGFloat whitePoint[CG_NONNULL_ARRAY 3], const CGFloat blackPoint[__nullable 3], const CGFloat gamma[__nullable 3], const CGFloat matrix[__nullable 9]) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create an L*a*b* color space. `whitePoint' is an array of 3 numbers specifying the tristimulus value, in the CIE 1931 XYZ-space, of the @@ -267,13 +270,13 @@ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateCalibratedRGB(const CGFlo CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateLab(const CGFloat whitePoint[CG_NONNULL_ARRAY 3], const CGFloat blackPoint[__nullable 3], const CGFloat range[__nullable 4]) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create an ICC-based color space using the ICC profile raw data specified by `data' which can be either CFDataRef or CGDataProviderRef */ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateWithICCData(CFTypeRef cg_nullable data) - CG_AVAILABLE_STARTING(10.12, 10.0); + API_AVAILABLE(macos(10.12), ios(10.0)); /* Create an ICC-based color space. `nComponents' specifies the number of color components in the color space defined by the ICC profile data. This @@ -291,7 +294,7 @@ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateWithICCData(CFTypeRef cg_ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateICCBased(size_t nComponents, const CGFloat * __nullable range, CGDataProviderRef cg_nullable profile, CGColorSpaceRef __nullable alternate) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create an indexed color space. A sample value in an indexed color space is treated as an index into the color table of the color space. `base' @@ -305,7 +308,7 @@ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateICCBased(size_t nComponen CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateIndexed(CGColorSpaceRef cg_nullable baseSpace, size_t lastIndex, const unsigned char * cg_nullable colorTable) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a pattern color space. `baseSpace' is the underlying color space of the pattern color space. For colored patterns, `baseSpace' should be @@ -313,7 +316,7 @@ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateIndexed(CGColorSpaceRef c colors which will be painted through the pattern. */ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreatePattern(CGColorSpaceRef __nullable baseSpace) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); typedef const struct CF_BRIDGED_TYPE(id) ColorSyncProfile* ColorSyncProfileRef; @@ -324,25 +327,25 @@ CG_EXTERN const CFStringRef kCGColorSpaceExtendedRange; key/value pair in `options' dictionary. */ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateWithColorSyncProfile(ColorSyncProfileRef __nullable, CFDictionaryRef __nullable options) -CG_AVAILABLE_STARTING(12.0, 15.0); +API_AVAILABLE(macos(12.0), ios(15.0)); /* Create a color space using `name' as the identifier for the color space. */ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateWithName(CFStringRef cg_nullable name) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Equivalent to `CFRetain(space)', except it doesn't crash (as CFRetain does) if `space' is NULL. */ CG_EXTERN CGColorSpaceRef cg_nullable CGColorSpaceRetain(CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRelease(space)', except it doesn't crash (as CFRelease does) if `space' is NULL. */ -CG_EXTERN void CGColorSpaceRelease(CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.0, 2.0); +CG_EXTERN void CGColorSpaceRelease(CGColorSpaceRef cg_nullable CF_RELEASES_ARGUMENT space) + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the system name of the color space. This applies to all color spaces created using `CGColorSpaceCreateWithName' as well as to ICC-based colorspaces @@ -359,40 +362,50 @@ CG_EXTERN void CGColorSpaceRelease(CGColorSpaceRef cg_nullable space) */ CG_EXTERN CFStringRef __nullable CGColorSpaceGetName(CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); /* Same as `CGColorSpaceGetName' but with ownership released to the caller. */ CG_EXTERN CFStringRef __nullable CGColorSpaceCopyName(CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.6, 10.0); + API_AVAILABLE(macos(10.6), ios(10.0)); /* Return the CFTypeID for CGColorSpaces. */ CG_EXTERN CFTypeID CGColorSpaceGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the number of color components in the color space `space'. */ CG_EXTERN size_t CGColorSpaceGetNumberOfComponents(CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the color space model of `space'. */ CG_EXTERN CGColorSpaceModel CGColorSpaceGetModel(CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the base color space of `space' if `space' is a pattern or indexed color space; otherwise, return NULL. To determine whether a color space is an indexed or pattern color space, use `CGColorSpaceGetModel'. */ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceGetBaseColorSpace(CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); + +/* Similar to 'CGColorSpaceGetBaseColorSpace' if `space' is a pattern or indexed + color space, in which case the retained base color space is returned. + In the case of a color space containing image specific metadata associated with + the gain map, a new color space without the metadata will be returned. + For all other color spaces this function will return NULL. +*/ + +CG_EXTERN CGColorSpaceRef CGColorSpaceCopyBaseColorSpace(CGColorSpaceRef space) +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* Return the number of entries in the color table of `space' if `space' is an indexed color space; otherwise, return 0. To determine whether a color space is an indexed color space, use `CGColorSpaceGetModel'. */ CG_EXTERN size_t CGColorSpaceGetColorTableCount(CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Copy the entries in the color table of `space' to `table' if `space' is an indexed color space; otherwise, do nothing. The array pointed to by @@ -402,92 +415,92 @@ CG_EXTERN size_t CGColorSpaceGetColorTableCount(CGColorSpaceRef cg_nullable spac indexed color space, use `CGColorSpaceGetModel'. */ CG_EXTERN void CGColorSpaceGetColorTable(CGColorSpaceRef cg_nullable space, - uint8_t * cg_nullable table) CG_AVAILABLE_STARTING(10.5, 2.0); + uint8_t * cg_nullable table) API_AVAILABLE(macos(10.5), ios(2.0)); /* Return a copy of the ICC profile data of `space', or NULL if the color space doesn't have an ICC profile. */ CG_EXTERN CFDataRef __nullable CGColorSpaceCopyICCData(CGColorSpaceRef cg_nullable space) -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); /* Return true if gamut of the RGB color space is greater than 85% of NTSC gamut */ CG_EXTERN bool CGColorSpaceIsWideGamutRGB(CGColorSpaceRef) -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); /* Return true if color space uses transfer functions defined in ITU Rec.2100 Please use CGColorSpaceUsesITUR_2100TF instead */ CG_EXTERN bool CGColorSpaceIsHDR(CGColorSpaceRef) -CG_AVAILABLE_BUT_DEPRECATED(10.15, 10.15.4, 13.0, 13.4); +API_AVAILABLE(macos(10.15), ios(13.0)); /* Return true if color space uses transfer functions defined in ITU Rec.2100 */ CG_EXTERN bool CGColorSpaceUsesITUR_2100TF(CGColorSpaceRef) -CG_AVAILABLE_STARTING(11.0, 14.0); +API_AVAILABLE(macos(11.0), ios(14.0)); CG_EXTERN bool CGColorSpaceIsPQBased(CGColorSpaceRef s) -CG_AVAILABLE_STARTING(12.0, 15.0); +API_AVAILABLE(macos(12.0), ios(15.0)); CG_EXTERN bool CGColorSpaceIsHLGBased(CGColorSpaceRef s) -CG_AVAILABLE_STARTING(12.0, 15.0); +API_AVAILABLE(macos(12.0), ios(15.0)); /* Return true if `space' can be used as a destination color space; false otherwise. */ CG_EXTERN bool CGColorSpaceSupportsOutput(CGColorSpaceRef space) -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); /* CGColorSpaceCopyPropertyList will return NULL for special color spaces (e.g. kCGColorSpaceDeviceN or kCGColorSpacePattern), except Indexed Color Space */ CG_EXTERN CFPropertyListRef __nullable CGColorSpaceCopyPropertyList(CGColorSpaceRef space) -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateWithPropertyList(CFPropertyListRef plist) -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); /* Return true if `space' uses extended range [-Inf, +Inf]; false otherwise. */ CG_EXTERN bool CGColorSpaceUsesExtendedRange(CGColorSpaceRef space) -CG_AVAILABLE_STARTING(10.12, 10.0); +API_AVAILABLE(macos(10.12), ios(10.0)); /* Create a linearized copy of the color space if the color space is matrix based. Return NULL if otherwise */ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateLinearized(CGColorSpaceRef space) -CG_AVAILABLE_STARTING(11.0, 14.0); +API_AVAILABLE(macos(11.0), ios(14.0)); /* Create a copy of the color space which uses extended range [-Inf, +Inf] if the color space is matrix based. Return NULL if otherwise */ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateExtended(CGColorSpaceRef space) -CG_AVAILABLE_STARTING(11.0, 14.0); +API_AVAILABLE(macos(11.0), ios(14.0)); /* Create a linearized copy of the color space which uses extended range [-Inf, +Inf] if the color space is matrix based. Return NULL if otherwise */ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateExtendedLinearized(CGColorSpaceRef space) -CG_AVAILABLE_STARTING(11.0, 14.0); +API_AVAILABLE(macos(11.0), ios(14.0)); /* Create a copy of the color space which uses standard range [0.0, 1.0]. */ CG_EXTERN CGColorSpaceRef CGColorSpaceCreateCopyWithStandardRange(CGColorSpaceRef s) -CG_AVAILABLE_STARTING(13.0, 16.0); +API_AVAILABLE(macos(13.0), ios(16.0)); /* Deprecated functions */ /* Please use `CGColorSpaceCreateWithICCData' */ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateWithICCProfile(CFDataRef cg_nullable data) - CG_AVAILABLE_BUT_DEPRECATED(10.5, 10.13, 2.0, 11.0); + API_DEPRECATED("No longer supported", macos(10.5,10.13), ios(2.0,11.0)); /* Please use `CGColorSpaceCopyICCData' */ CG_EXTERN CFDataRef __nullable CGColorSpaceCopyICCProfile(CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_BUT_DEPRECATED(10.5, 10.13, 2.0, 11.0); + API_DEPRECATED("No longer supported", macos(10.5,10.13), ios(2.0,11.0)); /* Please use `CGColorSpaceCreateWithColorSyncProfile' */ CG_EXTERN CGColorSpaceRef __nullable CGColorSpaceCreateWithPlatformColorSpace(const void * cg_nullable ref) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 12.0, 9.0, 15.0); + API_DEPRECATED("No longer supported", macos(10.0,12.0), ios(9.0,15.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGContext.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGContext.h index 4861f910..2630e5ab 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGContext.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGContext.h @@ -22,6 +22,7 @@ typedef struct CF_BRIDGED_TYPE(id) CGContext *CGContextRef; #include #include #include +#include CF_IMPLICIT_BRIDGING_ENABLED @@ -55,7 +56,7 @@ typedef CF_ENUM (int32_t, CGTextDrawingMode) { typedef CF_ENUM (int32_t, CGTextEncoding) { kCGEncodingFontSpecific, kCGEncodingMacRoman -} CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.9, 2.0, 7.0); +} API_DEPRECATED("No longer supported", macos(10.0,10.9), ios(2.0,7.0)); /* Interpolation quality. */ @@ -127,7 +128,7 @@ typedef CF_ENUM (int32_t, CGBlendMode) { /* Return the CFTypeID for CGContextRefs. */ CG_EXTERN CFTypeID CGContextGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /** Graphics state functions. **/ @@ -136,13 +137,13 @@ CG_EXTERN CFTypeID CGContextGetTypeID(void) not saved. */ CG_EXTERN void CGContextSaveGState(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Restore the current graphics state from the one on the top of the graphics state stack, popping the graphics state stack in the process. */ CG_EXTERN void CGContextRestoreGState(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Coordinate space transformations. **/ @@ -151,77 +152,77 @@ CG_EXTERN void CGContextRestoreGState(CGContextRef cg_nullable c) CG_EXTERN void CGContextScaleCTM(CGContextRef cg_nullable c, CGFloat sx, CGFloat sy) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Translate the current graphics state's transformation matrix (the CTM) by `(tx, ty)'. */ CG_EXTERN void CGContextTranslateCTM(CGContextRef cg_nullable c, CGFloat tx, CGFloat ty) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Rotate the current graphics state's transformation matrix (the CTM) by `angle' radians. */ CG_EXTERN void CGContextRotateCTM(CGContextRef cg_nullable c, CGFloat angle) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Concatenate the current graphics state's transformation matrix (the CTM) with the affine transform `transform'. */ CG_EXTERN void CGContextConcatCTM(CGContextRef cg_nullable c, CGAffineTransform transform) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the current graphics state's transformation matrix. Returns CGAffineTransformIdentity in case of inavlid context. */ CG_EXTERN CGAffineTransform CGContextGetCTM(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Drawing attribute functions. **/ /* Set the line width in the current graphics state to `width'. */ CG_EXTERN void CGContextSetLineWidth(CGContextRef cg_nullable c, CGFloat width) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the line cap in the current graphics state to `cap'. */ CG_EXTERN void CGContextSetLineCap(CGContextRef cg_nullable c, CGLineCap cap) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the line join in the current graphics state to `join'. */ CG_EXTERN void CGContextSetLineJoin(CGContextRef cg_nullable c, CGLineJoin join) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the miter limit in the current graphics state to `limit'. */ CG_EXTERN void CGContextSetMiterLimit(CGContextRef cg_nullable c, CGFloat limit) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the line dash patttern in the current graphics state of `c'. */ CG_EXTERN void CGContextSetLineDash(CGContextRef cg_nullable c, CGFloat phase, const CGFloat * __nullable lengths, size_t count) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the path flatness parameter in the current graphics state of `c' to `flatness'. */ CG_EXTERN void CGContextSetFlatness(CGContextRef cg_nullable c, CGFloat flatness) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the alpha value in the current graphics state of `c' to `alpha'. */ CG_EXTERN void CGContextSetAlpha(CGContextRef cg_nullable c, CGFloat alpha) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the blend mode of `context' to `mode'. */ CG_EXTERN void CGContextSetBlendMode(CGContextRef cg_nullable c, CGBlendMode mode) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /** Path construction functions. **/ @@ -231,64 +232,64 @@ CG_EXTERN void CGContextSetBlendMode(CGContextRef cg_nullable c, CGBlendMode mod /* Begin a new path. The old path is discarded. */ CG_EXTERN void CGContextBeginPath(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Start a new subpath at point `(x, y)' in the context's path. */ CG_EXTERN void CGContextMoveToPoint(CGContextRef cg_nullable c, CGFloat x, CGFloat y) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Append a straight line segment from the current point to `(x, y)'. */ CG_EXTERN void CGContextAddLineToPoint(CGContextRef cg_nullable c, CGFloat x, CGFloat y) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Append a cubic Bezier curve from the current point to `(x,y)', with control points `(cp1x, cp1y)' and `(cp2x, cp2y)'. */ CG_EXTERN void CGContextAddCurveToPoint(CGContextRef cg_nullable c, CGFloat cp1x, CGFloat cp1y, CGFloat cp2x, CGFloat cp2y, CGFloat x, CGFloat y) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Append a quadratic curve from the current point to `(x, y)', with control point `(cpx, cpy)'. */ CG_EXTERN void CGContextAddQuadCurveToPoint(CGContextRef cg_nullable c, CGFloat cpx, CGFloat cpy, CGFloat x, CGFloat y) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Close the current subpath of the context's path. */ CG_EXTERN void CGContextClosePath(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Path construction convenience functions. **/ /* Add a single rect to the context's path. */ CG_EXTERN void CGContextAddRect(CGContextRef cg_nullable c, CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Add a set of rects to the context's path. */ CG_EXTERN void CGContextAddRects(CGContextRef cg_nullable c, const CGRect * __nullable rects, size_t count) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Add a set of lines to the context's path. */ CG_EXTERN void CGContextAddLines(CGContextRef cg_nullable c, const CGPoint * __nullable points, size_t count) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Add an ellipse inside `rect' to the current path of `context'. See the function `CGPathAddEllipseInRect' for more information on how the path for the ellipse is constructed. */ CG_EXTERN void CGContextAddEllipseInRect(CGContextRef cg_nullable c, CGRect rect) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Add an arc of a circle to the context's path, possibly preceded by a straight line segment. `(x, y)' is the center of the arc; `radius' is its @@ -299,7 +300,7 @@ CG_EXTERN void CGContextAddEllipseInRect(CGContextRef cg_nullable c, CGRect rect CG_EXTERN void CGContextAddArc(CGContextRef cg_nullable c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Add an arc of a circle to the context's path, possibly preceded by a straight line segment. `radius' is the radius of the arc. The arc is @@ -308,14 +309,14 @@ CG_EXTERN void CGContextAddArc(CGContextRef cg_nullable c, CGFloat x, CGFloat y, CG_EXTERN void CGContextAddArcToPoint(CGContextRef cg_nullable c, CGFloat x1, CGFloat y1, CGFloat x2, CGFloat y2, CGFloat radius) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Add `path' to the path of context. The points in `path' are transformed by the CTM of context before they are added. */ CG_EXTERN void CGContextAddPath(CGContextRef cg_nullable c, CGPathRef cg_nullable path) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /** Path stroking. **/ @@ -328,7 +329,7 @@ CG_EXTERN void CGContextAddPath(CGContextRef cg_nullable c, followed by a call to "CGContextClip". */ CG_EXTERN void CGContextReplacePathWithStrokedPath(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /** Path information functions. **/ @@ -336,26 +337,26 @@ CG_EXTERN void CGContextReplacePathWithStrokedPath(CGContextRef cg_nullable c) otherwise. */ CG_EXTERN bool CGContextIsPathEmpty(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the current point of the current subpath of the path of `context'. */ CG_EXTERN CGPoint CGContextGetPathCurrentPoint(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the bounding box of the path of `context'. The bounding box is the smallest rectangle completely enclosing all points in the path, including control points for Bezier and quadratic curves. */ CG_EXTERN CGRect CGContextGetPathBoundingBox(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return a copy of the path of `context'. The returned path is specified in the current user space of `context'. */ CG_EXTERN CGPathRef __nullable CGContextCopyPath(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return true if `point' is contained in the current path of `context'. A point is contained within a context's path if it is inside the painted @@ -364,7 +365,7 @@ CG_EXTERN CGPathRef __nullable CGContextCopyPath(CGContextRef cg_nullable c) CG_EXTERN bool CGContextPathContainsPoint(CGContextRef cg_nullable c, CGPoint point, CGPathDrawingMode mode) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /** Path drawing functions. **/ @@ -372,7 +373,7 @@ CG_EXTERN bool CGContextPathContainsPoint(CGContextRef cg_nullable c, CG_EXTERN void CGContextDrawPath(CGContextRef cg_nullable c, CGPathDrawingMode mode) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Path drawing convenience functions. **/ @@ -380,59 +381,59 @@ CG_EXTERN void CGContextDrawPath(CGContextRef cg_nullable c, subpath of the path is implicitly closed. */ CG_EXTERN void CGContextFillPath(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Fill the context's path using the even-odd fill rule. Any open subpath of the path is implicitly closed. */ CG_EXTERN void CGContextEOFillPath(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Stroke the context's path. */ CG_EXTERN void CGContextStrokePath(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Fill `rect' with the current fill color. */ CG_EXTERN void CGContextFillRect(CGContextRef cg_nullable c, CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Fill `rects', an array of `count' CGRects, with the current fill color. */ CG_EXTERN void CGContextFillRects(CGContextRef cg_nullable c, const CGRect * __nullable rects, size_t count) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Stroke `rect' with the current stroke color and the current linewidth. */ CG_EXTERN void CGContextStrokeRect(CGContextRef cg_nullable c, CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Stroke `rect' with the current stroke color, using `width' as the the line width. */ CG_EXTERN void CGContextStrokeRectWithWidth(CGContextRef cg_nullable c, CGRect rect, CGFloat width) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Clear `rect' (that is, set the region within the rect to transparent). */ CG_EXTERN void CGContextClearRect(CGContextRef cg_nullable c, CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Fill an ellipse (an oval) inside `rect'. */ CG_EXTERN void CGContextFillEllipseInRect(CGContextRef cg_nullable c, CGRect rect) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Stroke an ellipse (an oval) inside `rect'. */ CG_EXTERN void CGContextStrokeEllipseInRect(CGContextRef cg_nullable c, CGRect rect) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Stroke a sequence of line segments one after another in `context'. The line segments are specified by `points', an array of `count' CGPoints. @@ -447,7 +448,7 @@ CG_EXTERN void CGContextStrokeEllipseInRect(CGContextRef cg_nullable c, CG_EXTERN void CGContextStrokeLineSegments(CGContextRef cg_nullable c, const CGPoint * __nullable points, size_t count) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /** Clipping functions. **/ @@ -456,14 +457,14 @@ CG_EXTERN void CGContextStrokeLineSegments(CGContextRef cg_nullable c, the winding-number fill rule for deciding what's inside the path. */ CG_EXTERN void CGContextClip(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Intersect the context's path with the current clip path and use the resulting path as the clip path for subsequent rendering operations. Use the even-odd fill rule for deciding what's inside the path. */ CG_EXTERN void CGContextEOClip(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Reset the current clip of `c' to the default value. */ @@ -498,14 +499,14 @@ CG_EXTERN void CGContextResetClip(CGContextRef c); CG_EXTERN void CGContextClipToMask(CGContextRef cg_nullable c, CGRect rect, CGImageRef cg_nullable mask) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the bounding box of the clip path of `c' in user space. The bounding box is the smallest rectangle completely enclosing all points in the clip. */ CG_EXTERN CGRect CGContextGetClipBoundingBox(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /** Clipping convenience functions. **/ @@ -513,7 +514,7 @@ CG_EXTERN CGRect CGContextGetClipBoundingBox(CGContextRef cg_nullable c) resets the context's path to the empty path. */ CG_EXTERN void CGContextClipToRect(CGContextRef cg_nullable c, CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Intersect the current clipping path with the clipping region formed by creating a path consisting of all rects in `rects'. Note that this @@ -521,7 +522,7 @@ CG_EXTERN void CGContextClipToRect(CGContextRef cg_nullable c, CGRect rect) CG_EXTERN void CGContextClipToRects(CGContextRef cg_nullable c, const CGRect * rects, size_t count) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Primitive color functions. **/ @@ -529,13 +530,13 @@ CG_EXTERN void CGContextClipToRects(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetFillColorWithColor(CGContextRef cg_nullable c, CGColorRef cg_nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Set the current stroke color in the context `c' to `color'. */ CG_EXTERN void CGContextSetStrokeColorWithColor(CGContextRef cg_nullable c, CGColorRef cg_nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /** Color space functions. **/ @@ -545,7 +546,7 @@ CG_EXTERN void CGContextSetStrokeColorWithColor(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetFillColorSpace(CGContextRef cg_nullable c, CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the current stroke color space in `context' to `space'. As a side-effect, set the stroke color to a default value appropriate for the @@ -553,7 +554,7 @@ CG_EXTERN void CGContextSetFillColorSpace(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetStrokeColorSpace(CGContextRef cg_nullable c, CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Color functions. **/ @@ -565,7 +566,7 @@ CG_EXTERN void CGContextSetStrokeColorSpace(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetFillColor(CGContextRef cg_nullable c, const CGFloat * cg_nullable components) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the components of the current stroke color in `context' to the values specifed by `components'. The number of elements in `components' must be @@ -575,7 +576,7 @@ CG_EXTERN void CGContextSetFillColor(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetStrokeColor(CGContextRef cg_nullable c, const CGFloat * cg_nullable components) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Pattern functions. **/ @@ -588,7 +589,7 @@ CG_EXTERN void CGContextSetStrokeColor(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetFillPattern(CGContextRef cg_nullable c, CGPatternRef cg_nullable pattern, const CGFloat * cg_nullable components) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the components of the current stroke color in `context' to the values specifed by `components', and set the current stroke pattern to @@ -599,13 +600,13 @@ CG_EXTERN void CGContextSetFillPattern(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetStrokePattern(CGContextRef cg_nullable c, CGPatternRef cg_nullable pattern, const CGFloat * cg_nullable components) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the pattern phase in the current graphics state of `context' to `phase'. */ CG_EXTERN void CGContextSetPatternPhase(CGContextRef cg_nullable c, CGSize phase) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Color convenience functions. **/ @@ -614,21 +615,21 @@ CG_EXTERN void CGContextSetPatternPhase(CGContextRef cg_nullable c, CGSize phase CG_EXTERN void CGContextSetGrayFillColor(CGContextRef cg_nullable c, CGFloat gray, CGFloat alpha) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the current stroke color space in `context' to `DeviceGray' and set the components of the current stroke color to `(gray, alpha)'. */ CG_EXTERN void CGContextSetGrayStrokeColor(CGContextRef cg_nullable c, CGFloat gray, CGFloat alpha) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the current fill color space in `context' to `DeviceRGB' and set the components of the current fill color to `(red, green, blue, alpha)'. */ CG_EXTERN void CGContextSetRGBFillColor(CGContextRef cg_nullable c, CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the current stroke color space in `context' to `DeviceRGB' and set the components of the current stroke color to `(red, green, blue, @@ -636,7 +637,7 @@ CG_EXTERN void CGContextSetRGBFillColor(CGContextRef cg_nullable c, CGFloat red, CG_EXTERN void CGContextSetRGBStrokeColor(CGContextRef cg_nullable c, CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the current fill color space in `context' to `DeviceCMYK' and set the components of the current fill color to `(cyan, magenta, yellow, black, @@ -644,7 +645,7 @@ CG_EXTERN void CGContextSetRGBStrokeColor(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetCMYKFillColor(CGContextRef cg_nullable c, CGFloat cyan, CGFloat magenta, CGFloat yellow, CGFloat black, CGFloat alpha) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the current stroke color space in `context' to `DeviceCMYK' and set the components of the current stroke color to `(cyan, magenta, yellow, @@ -652,7 +653,7 @@ CG_EXTERN void CGContextSetCMYKFillColor(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetCMYKStrokeColor(CGContextRef cg_nullable c, CGFloat cyan, CGFloat magenta, CGFloat yellow, CGFloat black, CGFloat alpha) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Rendering intent. **/ @@ -661,7 +662,17 @@ CG_EXTERN void CGContextSetCMYKStrokeColor(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetRenderingIntent(CGContextRef cg_nullable c, CGColorRenderingIntent intent) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); + +/* Set target EDR headroom on a context to be used when rendering HDR content to the context. + Context 'c' has to be a bitmap context using either extended or HDR color space and + 'headroom' has to be a value greater than 1.0f. Return true on success and false on failure */ + +CG_EXTERN bool CGContextSetEDRTargetHeadroom(CGContextRef __nonnull c, float headroom) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + +/* Return the EDR target headroom of the context `c'. */ + +CG_EXTERN float CGContextGetEDRTargetHeadroom(CGContextRef c) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /** Image functions. **/ @@ -670,7 +681,7 @@ CG_EXTERN void CGContextSetRenderingIntent(CGContextRef cg_nullable c, CG_EXTERN void CGContextDrawImage(CGContextRef cg_nullable c, CGRect rect, CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Draw `image' tiled in the context `c'. The image is scaled to the size specified by `rect' in user space, positioned at the origin of `rect' in @@ -681,7 +692,12 @@ CG_EXTERN void CGContextDrawImage(CGContextRef cg_nullable c, CGRect rect, CG_EXTERN void CGContextDrawTiledImage(CGContextRef cg_nullable c, CGRect rect, CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); + +/* Draw `image' in the rectangular area specified by `rect' in the context + `c' applying the specified tone mapping method and options. See CGToneMapping.h for more info. Same as in CGContextDrawImage, the image is scaled, if necessary, to fit into `rect'. */ + +CG_EXTERN bool CGContextDrawImageApplyingToneMapping(CGContextRef __nonnull c, CGRect r, CGImageRef image, CGToneMapping method, CFDictionaryRef __nullable options) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* Return the interpolation quality for image rendering of `context'. The interpolation quality is a gstate parameter which controls the level of @@ -691,13 +707,13 @@ CG_EXTERN void CGContextDrawTiledImage(CGContextRef cg_nullable c, CGRect rect, CG_EXTERN CGInterpolationQuality CGContextGetInterpolationQuality(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the interpolation quality of `context' to `quality'. */ CG_EXTERN void CGContextSetInterpolationQuality(CGContextRef cg_nullable c, CGInterpolationQuality quality) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Shadow support. **/ @@ -712,7 +728,7 @@ CG_EXTERN void CGContextSetInterpolationQuality(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetShadowWithColor(CGContextRef cg_nullable c, CGSize offset, CGFloat blur, CGColorRef __nullable color) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Equivalent to calling CGContextSetShadowWithColor(context, offset, blur, color) @@ -721,7 +737,7 @@ CG_EXTERN void CGContextSetShadowWithColor(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetShadow(CGContextRef cg_nullable c, CGSize offset, CGFloat blur) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /** Gradient and shading functions. **/ @@ -735,7 +751,7 @@ CG_EXTERN void CGContextSetShadow(CGContextRef cg_nullable c, CGSize offset, CG_EXTERN void CGContextDrawLinearGradient(CGContextRef cg_nullable c, CGGradientRef cg_nullable gradient, CGPoint startPoint, CGPoint endPoint, CGGradientDrawingOptions options) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Fill the current clipping region of `context' with a radial gradient between two circles defined by the center point and radius of each @@ -749,7 +765,7 @@ CG_EXTERN void CGContextDrawLinearGradient(CGContextRef cg_nullable c, CG_EXTERN void CGContextDrawRadialGradient(CGContextRef cg_nullable c, CGGradientRef cg_nullable gradient, CGPoint startCenter, CGFloat startRadius, CGPoint endCenter, CGFloat endRadius, CGGradientDrawingOptions options) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Fill the current clipping region of `context' with a conic gradient defined by the center point and rotation angle. The location 0 of `gradient' @@ -761,14 +777,14 @@ CG_EXTERN void CGContextDrawRadialGradient(CGContextRef cg_nullable c, CG_EXTERN void CGContextDrawConicGradient(CGContextRef _Nonnull c, CGGradientRef _Nullable gradient, CGPoint center, CGFloat angle) - CG_AVAILABLE_STARTING(14.0, 17.0); + API_AVAILABLE(macos(14.0), ios(17.0)); /* Fill the current clipping region of `context' with `shading'. */ CG_EXTERN void CGContextDrawShading(CGContextRef cg_nullable c, cg_nullable CGShadingRef shading) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /** Text functions. **/ @@ -778,51 +794,51 @@ CG_EXTERN void CGContextDrawShading(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetCharacterSpacing(CGContextRef cg_nullable c, CGFloat spacing) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the user-space point at which text will be drawn in the context `c' to `(x, y)'. */ CG_EXTERN void CGContextSetTextPosition(CGContextRef cg_nullable c, CGFloat x, CGFloat y) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the user-space point at which text will be drawn in `context'. */ CG_EXTERN CGPoint CGContextGetTextPosition(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the text matrix in the context `c' to `t'. */ CG_EXTERN void CGContextSetTextMatrix(CGContextRef cg_nullable c, CGAffineTransform t) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the text matrix in the context `c'. Returns CGAffineTransformIdentity if `c' is not a valid context. */ CG_EXTERN CGAffineTransform CGContextGetTextMatrix(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the text drawing mode in the current graphics state of the context `c' to `mode'. */ CG_EXTERN void CGContextSetTextDrawingMode(CGContextRef cg_nullable c, CGTextDrawingMode mode) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the font in the current graphics state of the context `c' to `font'. */ CG_EXTERN void CGContextSetFont(CGContextRef cg_nullable c, CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Set the font size in the current graphics state of the context `c' to `size'. */ CG_EXTERN void CGContextSetFontSize(CGContextRef cg_nullable c, CGFloat size) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Draw `glyphs', an array of `count' CGGlyphs, at the points specified by `positions'. Each element of `positions' specifies the position from the @@ -831,7 +847,7 @@ CG_EXTERN void CGContextSetFontSize(CGContextRef cg_nullable c, CGFloat size) CG_EXTERN void CGContextShowGlyphsAtPositions(CGContextRef cg_nullable c, const CGGlyph * cg_nullable glyphs, const CGPoint * cg_nullable Lpositions, size_t count) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /** PDF functions. **/ @@ -839,7 +855,7 @@ CG_EXTERN void CGContextShowGlyphsAtPositions(CGContextRef cg_nullable c, CG_EXTERN void CGContextDrawPDFPage(CGContextRef cg_nullable c, CGPDFPageRef cg_nullable page) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /** Output page functions. **/ @@ -847,34 +863,34 @@ CG_EXTERN void CGContextDrawPDFPage(CGContextRef cg_nullable c, CG_EXTERN void CGContextBeginPage(CGContextRef cg_nullable c, const CGRect * __nullable mediaBox) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* End the current page. */ CG_EXTERN void CGContextEndPage(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Context functions. **/ /* Equivalent to `CFRetain(c)'. */ CG_EXTERN CGContextRef cg_nullable CGContextRetain(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRelease(c)'. */ CG_EXTERN void CGContextRelease(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Flush all drawing to the destination. */ CG_EXTERN void CGContextFlush(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Synchronized drawing. */ CG_EXTERN void CGContextSynchronize(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /** Antialiasing functions. **/ @@ -883,7 +899,7 @@ CG_EXTERN void CGContextSynchronize(CGContextRef cg_nullable c) CG_EXTERN void CGContextSetShouldAntialias(CGContextRef cg_nullable c, bool shouldAntialias) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Allow antialiasing in `context' if `allowsAntialiasing' is true; don't allow it otherwise. This parameter is not part of the graphics state. A @@ -892,7 +908,7 @@ CG_EXTERN void CGContextSetShouldAntialias(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetAllowsAntialiasing(CGContextRef cg_nullable c, bool allowsAntialiasing) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /** Font display functions. **/ @@ -903,7 +919,7 @@ CG_EXTERN void CGContextSetAllowsAntialiasing(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetShouldSmoothFonts(CGContextRef cg_nullable c, bool shouldSmoothFonts) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* If `allowsFontSmoothing' is true, then allow font smoothing when displaying text in `context'; otherwise, don't allow font smoothing. This @@ -913,7 +929,7 @@ CG_EXTERN void CGContextSetShouldSmoothFonts(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetAllowsFontSmoothing(CGContextRef cg_nullable c, bool allowsFontSmoothing) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* If `shouldSubpixelPositionFonts' is true, then glyphs may be placed at subpixel positions (if allowed) when displaying text in `context'; @@ -922,7 +938,7 @@ CG_EXTERN void CGContextSetAllowsFontSmoothing(CGContextRef cg_nullable c, CG_EXTERN void CGContextSetShouldSubpixelPositionFonts( CGContextRef cg_nullable c, bool shouldSubpixelPositionFonts) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* If `allowsFontSubpixelPositioning' is true, then allow font subpixel positioning when displaying text in `context'; otherwise, don't allow @@ -933,7 +949,7 @@ CG_EXTERN void CGContextSetShouldSubpixelPositionFonts( CG_EXTERN void CGContextSetAllowsFontSubpixelPositioning( CGContextRef cg_nullable c, bool allowsFontSubpixelPositioning) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* If `shouldSubpixelQuantizeFonts' is true, then quantize the subpixel positions of glyphs when displaying text in `context'; otherwise, don't @@ -942,7 +958,7 @@ CG_EXTERN void CGContextSetAllowsFontSubpixelPositioning( CG_EXTERN void CGContextSetShouldSubpixelQuantizeFonts( CGContextRef cg_nullable c, bool shouldSubpixelQuantizeFonts) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* If `allowsFontSubpixelQuantization' is true, then allow font subpixel quantization when displaying text in `context'; otherwise, don't allow @@ -953,7 +969,7 @@ CG_EXTERN void CGContextSetShouldSubpixelQuantizeFonts( CG_EXTERN void CGContextSetAllowsFontSubpixelQuantization( CGContextRef cg_nullable c, bool allowsFontSubpixelQuantization) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /** Transparency layer support. **/ @@ -975,7 +991,7 @@ CG_EXTERN void CGContextSetAllowsFontSubpixelQuantization( CG_EXTERN void CGContextBeginTransparencyLayer(CGContextRef cg_nullable c, CFDictionaryRef __nullable auxiliaryInfo) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Begin a transparency layer in `context'. This function is identical to `CGContextBeginTransparencyLayer' except that the content of the @@ -983,12 +999,12 @@ CG_EXTERN void CGContextBeginTransparencyLayer(CGContextRef cg_nullable c, CG_EXTERN void CGContextBeginTransparencyLayerWithRect( CGContextRef cg_nullable c, CGRect rect, CFDictionaryRef __nullable auxInfo) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* End a tranparency layer. */ CG_EXTERN void CGContextEndTransparencyLayer(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /** User space to device space tranformations. **/ @@ -997,31 +1013,31 @@ CG_EXTERN void CGContextEndTransparencyLayer(CGContextRef cg_nullable c) CG_EXTERN CGAffineTransform CGContextGetUserSpaceToDeviceSpaceTransform(CGContextRef cg_nullable c) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Transform `point' from the user space of `context' to device space. */ CG_EXTERN CGPoint CGContextConvertPointToDeviceSpace(CGContextRef cg_nullable c, CGPoint point) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Transform `point' from device space to the user space of `context'. */ CG_EXTERN CGPoint CGContextConvertPointToUserSpace(CGContextRef cg_nullable c, CGPoint point) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Transform `size' from the user space of `context' to device space. */ CG_EXTERN CGSize CGContextConvertSizeToDeviceSpace(CGContextRef cg_nullable c, CGSize size) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Transform `size' from device space to the user space of `context'. */ CG_EXTERN CGSize CGContextConvertSizeToUserSpace(CGContextRef cg_nullable c, CGSize size) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Transform `rect' from the user space of `context' to device space. Since affine transforms do not preserve rectangles in general, this function @@ -1030,7 +1046,7 @@ CG_EXTERN CGSize CGContextConvertSizeToUserSpace(CGContextRef cg_nullable c, CG_EXTERN CGRect CGContextConvertRectToDeviceSpace(CGContextRef cg_nullable c, CGRect rect) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Transform `rect' from device space to the user space of `context'. Since affine transforms do not preserve rectangles in general, this function @@ -1039,7 +1055,7 @@ CG_EXTERN CGRect CGContextConvertRectToDeviceSpace(CGContextRef cg_nullable c, CG_EXTERN CGRect CGContextConvertRectToUserSpace(CGContextRef cg_nullable c, CGRect rect) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /** Deprecated functions. **/ @@ -1047,50 +1063,44 @@ CG_EXTERN CGRect CGContextConvertRectToUserSpace(CGContextRef cg_nullable c, CG_EXTERN void CGContextSelectFont(CGContextRef cg_nullable c, const char * cg_nullable name, CGFloat size, CGTextEncoding textEncoding) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.9, - 2.0, 7.0); + API_DEPRECATED("No longer supported", macos(10.0,10.9), ios(2.0,7.0)); /* DEPRECATED; use the CoreText API instead. */ CG_EXTERN void CGContextShowText(CGContextRef cg_nullable c, const char * cg_nullable string, size_t length) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.9, - 2.0, 7.0); + API_DEPRECATED("No longer supported", macos(10.0,10.9), ios(2.0,7.0)); /* DEPRECATED; use the CoreText API instead. */ CG_EXTERN void CGContextShowTextAtPoint(CGContextRef cg_nullable c, CGFloat x, CGFloat y, const char * cg_nullable string, size_t length) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.9, - 2.0, 7.0); + API_DEPRECATED("No longer supported", macos(10.0,10.9), ios(2.0,7.0)); /* DEPRECATED; use the CoreText API instead. */ CG_EXTERN void CGContextShowGlyphs(CGContextRef cg_nullable c, const CGGlyph * __nullable g, size_t count) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.9, - 2.0, 7.0); + API_DEPRECATED("No longer supported", macos(10.0,10.9), ios(2.0,7.0)); /* DEPRECATED; use the CoreText API instead. */ CG_EXTERN void CGContextShowGlyphsAtPoint(CGContextRef cg_nullable c, CGFloat x, CGFloat y, const CGGlyph * __nullable glyphs, size_t count) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.9, - 2.0, 7.0); + API_DEPRECATED("No longer supported", macos(10.0,10.9), ios(2.0,7.0)); /* DEPRECATED; use the CoreText API instead. */ CG_EXTERN void CGContextShowGlyphsWithAdvances(CGContextRef cg_nullable c, const CGGlyph * __nullable glyphs, const CGSize * __nullable advances, size_t count) - CG_AVAILABLE_BUT_DEPRECATED(10.3, 10.9, - 2.0, 7.0); + API_DEPRECATED("No longer supported", macos(10.3,10.9), ios(2.0,7.0)); /* DEPRECATED; use the CGPDFPage API instead. */ CG_EXTERN void CGContextDrawPDFDocument(CGContextRef cg_nullable c, CGRect rect, CGPDFDocumentRef cg_nullable document, int page) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.5) CG_UNAVAILABLE_EMBEDDED; + API_DEPRECATED("No longer supported", macos(10.0,10.5)) API_UNAVAILABLE(ios, tvos, watchos); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGConvertColorDataWithFormat.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGConvertColorDataWithFormat.h index 44ce8651..fc294edb 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGConvertColorDataWithFormat.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGConvertColorDataWithFormat.h @@ -30,4 +30,5 @@ CG_EXTERN bool CGConvertColorDataWithFormat(size_t width, CGColorDataFormat src_format, CFDictionaryRef options); + #endif /* CGCONVERTCOLORDATAWITHFORMAT_H */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDataConsumer.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDataConsumer.h index 3a033ed1..4ba4842b 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDataConsumer.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDataConsumer.h @@ -44,37 +44,37 @@ typedef struct CGDataConsumerCallbacks CGDataConsumerCallbacks; /* Return the CFTypeID for CGDataConsumerRefs. */ CG_EXTERN CFTypeID CGDataConsumerGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a data consumer using `callbacks' to handle the data. `info' is passed to each of the callback functions. */ CG_EXTERN CGDataConsumerRef __nullable CGDataConsumerCreate( void * __nullable info, const CGDataConsumerCallbacks * cg_nullable cbks) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a data consumer which writes data to `url'. */ CG_EXTERN CGDataConsumerRef __nullable CGDataConsumerCreateWithURL( CFURLRef cg_nullable url) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a data consumer which writes to `data'. */ CG_EXTERN CGDataConsumerRef __nullable CGDataConsumerCreateWithCFData( CFMutableDataRef cg_nullable data) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Equivalent to `CFRetain(consumer)'. */ CG_EXTERN CGDataConsumerRef cg_nullable CGDataConsumerRetain( CGDataConsumerRef cg_nullable consumer) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRelease(consumer)'. */ CG_EXTERN void CGDataConsumerRelease(cg_nullable CGDataConsumerRef consumer) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDataProvider.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDataProvider.h index d08d06f9..fa3d1d19 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDataProvider.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDataProvider.h @@ -115,7 +115,7 @@ typedef struct CGDataProviderDirectCallbacks CGDataProviderDirectCallbacks; /* Return the CFTypeID for CGDataProviderRefs. */ CG_EXTERN CFTypeID CGDataProviderGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a sequential-access data provider using `callbacks' to provide the data. `info' is passed to each of the callback functions. */ @@ -123,7 +123,7 @@ CG_EXTERN CFTypeID CGDataProviderGetTypeID(void) CG_EXTERN CGDataProviderRef __nullable CGDataProviderCreateSequential( void * __nullable info, const CGDataProviderSequentialCallbacks * cg_nullable callbacks) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Create a direct-access data provider using `callbacks' to supply `size' bytes of data. `info' is passed to each of the callback functions. @@ -132,7 +132,7 @@ CG_EXTERN CGDataProviderRef __nullable CGDataProviderCreateSequential( CG_EXTERN CGDataProviderRef __nullable CGDataProviderCreateDirect( void * __nullable info, off_t size, const CGDataProviderDirectCallbacks * cg_nullable callbacks) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* The callback used by `CGDataProviderCreateWithData'. */ @@ -146,38 +146,38 @@ typedef void (*CGDataProviderReleaseDataCallback)(void * __nullable info, CG_EXTERN CGDataProviderRef __nullable CGDataProviderCreateWithData( void * __nullable info, const void * cg_nullable data, size_t size, CGDataProviderReleaseDataCallback cg_nullable releaseData) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a direct-access data provider which reads from `data'. */ CG_EXTERN CGDataProviderRef __nullable CGDataProviderCreateWithCFData( CFDataRef cg_nullable data) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Create a data provider reading from `url'. */ CG_EXTERN CGDataProviderRef __nullable CGDataProviderCreateWithURL( CFURLRef cg_nullable url) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a data provider reading from `filename'. */ CG_EXTERN CGDataProviderRef __nullable CGDataProviderCreateWithFilename( const char * cg_nullable filename) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRetain(provider)', but doesn't crash (as CFRetain does) if `provider' is NULL. */ CG_EXTERN CGDataProviderRef __nullable CGDataProviderRetain( CGDataProviderRef cg_nullable provider) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRelease(provider)', but doesn't crash (as CFRelease does) if `provider' is NULL. */ CG_EXTERN void CGDataProviderRelease(CGDataProviderRef cg_nullable provider) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return a copy of the data specified by provider. Returns NULL if a complete copy of the data can't be obtained (for example, if the @@ -185,10 +185,10 @@ CG_EXTERN void CGDataProviderRelease(CGDataProviderRef cg_nullable provider) CG_EXTERN CFDataRef __nullable CGDataProviderCopyData( CGDataProviderRef cg_nullable provider) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); CG_EXTERN void* __nullable CGDataProviderGetInfo(CGDataProviderRef cg_nullable provider) - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDirectDisplay.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDirectDisplay.h index 69ec25ad..1c1dd7da 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDirectDisplay.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDirectDisplay.h @@ -33,7 +33,7 @@ CF_ASSUME_NONNULL_BEGIN /* Return the display ID of the current main display. */ CG_EXTERN CGDirectDisplayID CGMainDisplayID(void) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Mechanisms used to find screen IDs. @@ -49,17 +49,17 @@ CG_EXTERN CGDirectDisplayID CGMainDisplayID(void) CG_EXTERN CGError CGGetDisplaysWithPoint(CGPoint point, uint32_t maxDisplays, CGDirectDisplayID * __nullable displays, uint32_t * __nullable matchingDisplayCount) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); CG_EXTERN CGError CGGetDisplaysWithRect(CGRect rect, uint32_t maxDisplays, CGDirectDisplayID * __nullable displays, uint32_t * __nullable matchingDisplayCount) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); CG_EXTERN CGError CGGetDisplaysWithOpenGLDisplayMask(CGOpenGLDisplayMask mask, uint32_t maxDisplays, CGDirectDisplayID * __nullable displays, uint32_t * __nullable matchingDisplayCount) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return a list of active displays. @@ -76,7 +76,7 @@ CG_EXTERN CGError CGGetDisplaysWithOpenGLDisplayMask(CGOpenGLDisplayMask mask, CG_EXTERN CGError CGGetActiveDisplayList(uint32_t maxDisplays, CGDirectDisplayID * __nullable activeDisplays, uint32_t * __nullable displayCount) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return a list of online displays. @@ -93,14 +93,14 @@ CG_EXTERN CGError CGGetActiveDisplayList(uint32_t maxDisplays, CG_EXTERN CGError CGGetOnlineDisplayList(uint32_t maxDisplays, CGDirectDisplayID * __nullable onlineDisplays, uint32_t * __nullable displayCount) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return the OpenGL display mask for `display', or 0 if `display' is an invalid display. */ CG_EXTERN CGOpenGLDisplayMask CGDisplayIDToOpenGLDisplayMask( CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return the display for the OpenGL display mask `mask', or `kCGNullDirectDisplay' if the bits set dont't match a display. A mask @@ -108,23 +108,23 @@ CG_EXTERN CGOpenGLDisplayMask CGDisplayIDToOpenGLDisplayMask( CG_EXTERN CGDirectDisplayID CGOpenGLDisplayMaskToDisplayID( CGOpenGLDisplayMask mask) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return the screen size and screen origin of `display' in global coordinates, or `CGRectZero' if `display' is invalid. */ CG_EXTERN CGRect CGDisplayBounds(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return the width in pixels of `display'. */ CG_EXTERN size_t CGDisplayPixelsWide(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return the height in pixels of `display'. */ CG_EXTERN size_t CGDisplayPixelsHigh(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return an array of all modes for the specified display, or NULL if `display' is invalid. The "options" field is reserved for future @@ -132,17 +132,17 @@ CG_EXTERN size_t CGDisplayPixelsHigh(CGDirectDisplayID display) CG_EXTERN CFArrayRef __nullable CGDisplayCopyAllDisplayModes( CGDirectDisplayID display, CFDictionaryRef __nullable options) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); CG_EXTERN const CFStringRef kCGDisplayShowDuplicateLowResolutionModes - CG_AVAILABLE_STARTING(10.8); + API_AVAILABLE(macos(10.8)); /* Return the current mode of the specified display, or NULL if `display' is invalid. */ CG_EXTERN CGDisplayModeRef __nullable CGDisplayCopyDisplayMode( CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Switch the display mode of `display' to `mode'. The "options" field is reserved for future expansion; pass NULL for now. @@ -159,75 +159,75 @@ CG_EXTERN CGDisplayModeRef __nullable CGDisplayCopyDisplayMode( CG_EXTERN CGError CGDisplaySetDisplayMode(CGDirectDisplayID display, CGDisplayModeRef __nullable mode, CFDictionaryRef __nullable options) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Return the width in points of the specified display mode. */ CG_EXTERN size_t CGDisplayModeGetWidth(CGDisplayModeRef __nullable mode) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Return the height in points of the specified display mode. */ CG_EXTERN size_t CGDisplayModeGetHeight(CGDisplayModeRef __nullable mode) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Return a string representing the pixel encoding of the specified display mode, expressed as a CFString containing an IOKit graphics mode. */ CG_EXTERN CFStringRef __nullable CGDisplayModeCopyPixelEncoding( CGDisplayModeRef __nullable mode) - CG_AVAILABLE_BUT_DEPRECATED(10.6, 10.11); + API_DEPRECATED("No longer supported", macos(10.6,10.11)); /* Return the refresh rate of the specified display mode. */ CG_EXTERN double CGDisplayModeGetRefreshRate(CGDisplayModeRef __nullable mode) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Return the IOKit flags of the specified display mode. */ CG_EXTERN uint32_t CGDisplayModeGetIOFlags(CGDisplayModeRef __nullable mode) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Return the IOKit display mode ID of the specified display mode. */ CG_EXTERN int32_t CGDisplayModeGetIODisplayModeID( CGDisplayModeRef __nullable mode) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Return true if the specified mode is usable for displaying the desktop GUI; false otherwise. */ CG_EXTERN bool CGDisplayModeIsUsableForDesktopGUI( CGDisplayModeRef __nullable mode) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Return the CFTypeID for CGDisplayModeRefs. */ CG_EXTERN CFTypeID CGDisplayModeGetTypeID(void) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Equivalent to `CFRetain(mode)', except it doesn't crash (as CFRetain does) if `mode' is NULL. */ CG_EXTERN CGDisplayModeRef __nullable CGDisplayModeRetain( CGDisplayModeRef __nullable mode) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Equivalent to `CFRelease(mode)', except it doesn't crash (as CFRelease does) if `mode' is NULL. */ CG_EXTERN void CGDisplayModeRelease(CGDisplayModeRef __nullable mode) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Return the width in pixels of the specified display mode. */ CG_EXTERN size_t CGDisplayModeGetPixelWidth(CGDisplayModeRef __nullable mode) - CG_AVAILABLE_STARTING(10.8); + API_AVAILABLE(macos(10.8)); /* Return the height in pixels of the specified display mode. */ CG_EXTERN size_t CGDisplayModeGetPixelHeight(CGDisplayModeRef __nullable mode) - CG_AVAILABLE_STARTING(10.8); + API_AVAILABLE(macos(10.8)); /* Set the gamma function for `display' by specifying the coefficients of the gamma transfer function. @@ -249,7 +249,7 @@ CG_EXTERN CGError CGSetDisplayTransferByFormula(CGDirectDisplayID display, CGGammaValue redMin, CGGammaValue redMax, CGGammaValue redGamma, CGGammaValue greenMin, CGGammaValue greenMax, CGGammaValue greenGamma, CGGammaValue blueMin, CGGammaValue blueMax, CGGammaValue blueGamma) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return the coefficients of the gamma transfer function for `display'. */ @@ -260,13 +260,13 @@ CG_EXTERN CGError CGGetDisplayTransferByFormula(CGDirectDisplayID display, CGGammaValue * __nullable greenGamma, CGGammaValue * __nullable blueMin, CGGammaValue * __nullable blueMax, CGGammaValue * __nullable blueGamma) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return the capacity, or number of entries, in the gamma table for `display', or 0 if 'display' is invalid. */ CG_EXTERN uint32_t CGDisplayGammaTableCapacity(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Set the gamma function for `display' by specifying the values in the RGB gamma tables. @@ -280,7 +280,7 @@ CG_EXTERN CGError CGSetDisplayTransferByTable(CGDirectDisplayID display, uint32_t tableSize, const CGGammaValue * __nullable redTable, const CGGammaValue * __nullable greenTable, const CGGammaValue * __nullable blueTable) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return the RGB gamma table values for `display'. @@ -292,7 +292,7 @@ CG_EXTERN CGError CGGetDisplayTransferByTable(CGDirectDisplayID display, uint32_t capacity, CGGammaValue * __nullable redTable, CGGammaValue * __nullable greenTable, CGGammaValue * __nullable blueTable, uint32_t * __nullable sampleCount) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Set the gamma function for `display' by specifying the values in the RGB gamma tables as bytes. @@ -306,13 +306,13 @@ CG_EXTERN CGError CGGetDisplayTransferByTable(CGDirectDisplayID display, CG_EXTERN CGError CGSetDisplayTransferByByteTable(CGDirectDisplayID display, uint32_t tableSize, const uint8_t * redTable, const uint8_t * greenTable, const uint8_t * blueTable) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Restore the gamma tables of all system displays to the values in the user's ColorSync display profile. */ CG_EXTERN void CGDisplayRestoreColorSyncSettings(void) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Options used with `CGDisplayCaptureWithOptions' and `CGCaptureAllDisplaysWithOptions'. */ @@ -325,63 +325,63 @@ typedef CF_OPTIONS(uint32_t, CGCaptureOptions) { /* Return true if `display' is captured; false otherwise. */ CG_EXTERN boolean_t CGDisplayIsCaptured(CGDirectDisplayID display) - CG_AVAILABLE_BUT_DEPRECATED(10.0,10.9); + API_DEPRECATED("No longer supported", macos(10.0,10.9)); /* Capture `display' for exclusive use by an application. */ CG_EXTERN CGError CGDisplayCapture(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Capture `display' for exclusive use by an application, using the options specified by `options'. */ CG_EXTERN CGError CGDisplayCaptureWithOptions(CGDirectDisplayID display, CGCaptureOptions options) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Release the captured display `display'. */ CG_EXTERN CGError CGDisplayRelease(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Capture all displays. This operation provides an immersive environment for an appplication, and prevents other applications from trying to adjust to display changes. */ CG_EXTERN CGError CGCaptureAllDisplays(void) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Capture all displays, using the options specified by `options'. This operation provides an immersive environment for an appplication, and prevents other applications from trying to adjust to display changes. */ CG_EXTERN CGError CGCaptureAllDisplaysWithOptions(CGCaptureOptions options) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Release all captured displays and restore the display modes to the user's preferences. May be used in conjunction with `CGDisplayCapture' or `CGCaptureAllDisplays'. */ CG_EXTERN CGError CGReleaseAllDisplays(void) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Returns window ID of the shield window for the captured display `display', or NULL if the display is not not shielded. */ CG_EXTERN CGWindowID CGShieldingWindowID(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Returns the window level of the shield window for the captured display `display'. */ CG_EXTERN CGWindowLevel CGShieldingWindowLevel(void) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return an image containing the contents of the display identified by `displayID'. */ CG_EXTERN CGImageRef __nullable CGDisplayCreateImage(CGDirectDisplayID displayID) - CG_AVAILABLE_STARTING(10.6); + SCREEN_CAPTURE_OBSOLETE(10.6,14.4,15.0); /* Return an image containing the contents of the rectangle `rect', specified in display space, of the display identified by `displayID'. The @@ -390,19 +390,19 @@ CG_EXTERN CGImageRef __nullable CGDisplayCreateImage(CGDirectDisplayID displayID CG_EXTERN CGImageRef __nullable CGDisplayCreateImageForRect( CGDirectDisplayID display, CGRect rect) - CG_AVAILABLE_STARTING(10.6); + SCREEN_CAPTURE_OBSOLETE(10.6,14.4,15.0); /* Hide the mouse cursor and increment the hide cursor count. The `display' parameter is ignored. */ CG_EXTERN CGError CGDisplayHideCursor(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Decrement the hide cursor count; show the cursor if the hide cursor count is zero. The `display' parameter is ignored. */ CG_EXTERN CGError CGDisplayShowCursor(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Move the mouse cursor to the specified point relative to the origin (the upper-left corner) of `display'. No events are generated as a result of @@ -411,14 +411,14 @@ CG_EXTERN CGError CGDisplayShowCursor(CGDirectDisplayID display) CG_EXTERN CGError CGDisplayMoveCursorToPoint(CGDirectDisplayID display, CGPoint point) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return the mouse position change since with the last mouse move event received by the application. */ CG_EXTERN void CGGetLastMouseDelta(int32_t *__nullable deltaX, int32_t * __nullable deltaY) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return a CGContext suitable for drawing to the captured display `display', or NULL if `display' has not been captured. The context is @@ -433,7 +433,7 @@ CG_EXTERN void CGGetLastMouseDelta(int32_t *__nullable deltaX, CG_EXTERN CGContextRef __nullable CGDisplayGetDrawingContext( CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* These are deprecated; don't use them. */ @@ -468,29 +468,29 @@ typedef CGError CGDisplayErr; /* Use the CGDisplayMode APIs instead. */ CG_EXTERN CFArrayRef __nullable CGDisplayAvailableModes(CGDirectDisplayID dsp) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); /* Use the CGDisplayMode APIs instead. */ CG_EXTERN CFDictionaryRef __nullable CGDisplayBestModeForParameters( CGDirectDisplayID display, size_t bitsPerPixel, size_t width, size_t height, boolean_t * __nullable exactMatch) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); /* Use the CGDisplayMode APIs instead. */ CG_EXTERN CFDictionaryRef __nullable CGDisplayBestModeForParametersAndRefreshRate( CGDirectDisplayID display, size_t bitsPerPixel, size_t width, size_t height, CGRefreshRate refreshRate, boolean_t * __nullable exactMatch) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); /* Use the CGDisplayMode APIs instead. */ CG_EXTERN CFDictionaryRef __nullable CGDisplayCurrentMode( CGDirectDisplayID display) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); /* Use the CGDisplayMode APIs instead. */ CG_EXTERN CGError CGDisplaySwitchToMode(CGDirectDisplayID display, CFDictionaryRef __nullable mode) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDirectDisplayMetal.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDirectDisplayMetal.h index 970398fe..f77505f8 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDirectDisplayMetal.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDirectDisplayMetal.h @@ -28,7 +28,7 @@ /* Return the Metal device for the GPU currently being used to drive a given display */ /* Note: On systems with automatic graphics switching enabled, this value can change at almost any time. */ -CG_EXTERN id __nullable CGDirectDisplayCopyCurrentMetalDevice(CGDirectDisplayID display) NS_RETURNS_RETAINED CG_AVAILABLE_STARTING(10.11); +CG_EXTERN id __nullable CGDirectDisplayCopyCurrentMetalDevice(CGDirectDisplayID display) NS_RETURNS_RETAINED API_AVAILABLE(macos(10.11)); #ifdef __cplusplus } /* extern "C" */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayConfiguration.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayConfiguration.h index 86dc17b6..8e8fc351 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayConfiguration.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayConfiguration.h @@ -34,7 +34,7 @@ typedef struct _CGDisplayConfigRef *CGDisplayConfigRef; CG_EXTERN CGError CGBeginDisplayConfiguration( CGDisplayConfigRef __nullable * __nullable config) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Configure the origin of a display in global display coordinates. @@ -52,7 +52,7 @@ CG_EXTERN CGError CGBeginDisplayConfiguration( CG_EXTERN CGError CGConfigureDisplayOrigin( CGDisplayConfigRef __nullable config, CGDirectDisplayID display, int32_t x, int32_t y) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Configure the display mode of a display. The "options" field is reserved for future expansion; pass NULL for now. @@ -69,7 +69,7 @@ CG_EXTERN CGError CGConfigureDisplayWithDisplayMode( CGDisplayConfigRef __nullable config, CGDirectDisplayID display, CGDisplayModeRef __nullable mode, CFDictionaryRef __nullable options) - CG_AVAILABLE_STARTING(10.6); + API_AVAILABLE(macos(10.6)); /* Enable or disable stereo operation for a display. @@ -97,7 +97,7 @@ CG_EXTERN CGError CGConfigureDisplayWithDisplayMode( CG_EXTERN CGError CGConfigureDisplayStereoOperation( CGDisplayConfigRef __nullable config, CGDirectDisplayID display, boolean_t stereo, boolean_t forceBlueLine) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Make a display a mirror of a master display. @@ -138,14 +138,14 @@ CG_EXTERN CGError CGConfigureDisplayStereoOperation( CG_EXTERN CGError CGConfigureDisplayMirrorOfDisplay( CGDisplayConfigRef __nullable config, CGDirectDisplayID display, CGDirectDisplayID master) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Cancel a set of display configuration changes. On return, the configuration is cancelled and is no longer valid. */ CG_EXTERN CGError CGCancelDisplayConfiguration( CGDisplayConfigRef __nullable config) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Complete a set of display configuration changes. On return, the configuration is no longer valid. @@ -176,13 +176,13 @@ typedef CF_OPTIONS(uint32_t, CGConfigureOption) { CG_EXTERN CGError CGCompleteDisplayConfiguration( CGDisplayConfigRef __nullable config, CGConfigureOption option) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Restore the permanent display configuration settings for the current user. */ CG_EXTERN void CGRestorePermanentDisplayConfiguration(void) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Display changes are reported via a callback mechanism. @@ -235,14 +235,14 @@ typedef void(*CGDisplayReconfigurationCallBack)(CGDirectDisplayID display, CG_EXTERN CGError CGDisplayRegisterReconfigurationCallback( CGDisplayReconfigurationCallBack __nullable callback, void * __nullable userInfo) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Remove a display reconfiguration callback procedure. */ CG_EXTERN CGError CGDisplayRemoveReconfigurationCallback( CGDisplayReconfigurationCallBack __nullable callback, void * __nullable userInfo) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Specialized configuration changes should be done outside of the scope of a `CGBeginDisplayConfiguration'/`CGCompleteDisplayConfiguration' pair, as @@ -274,103 +274,103 @@ CG_EXTERN CGError CGDisplayRemoveReconfigurationCallback( CG_EXTERN CGError CGDisplaySetStereoOperation(CGDirectDisplayID display, boolean_t stereo, boolean_t forceBlueLine, CGConfigureOption option) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return true if the display is connected, awake, and available for drawing; false otherwise. */ CG_EXTERN boolean_t CGDisplayIsActive(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return true if the display is asleep (and is therefore not drawable); false otherwise. */ CG_EXTERN boolean_t CGDisplayIsAsleep(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return true if the display is connected or online; false otherwise. */ CG_EXTERN boolean_t CGDisplayIsOnline(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return true if the display is the current main display; false otherwise. */ CG_EXTERN boolean_t CGDisplayIsMain(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return true if the display is built-in, such as the internal display in portable systems; false otherwise. */ CG_EXTERN boolean_t CGDisplayIsBuiltin(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return true if the display is in a mirroring set; false otherwise. */ CG_EXTERN boolean_t CGDisplayIsInMirrorSet(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return true if the display is always in a mirroring set and cannot be unmirrored; false otherwise. */ CG_EXTERN boolean_t CGDisplayIsAlwaysInMirrorSet(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return true if the display is in a hardware mirroring set; false otherwise. */ CG_EXTERN boolean_t CGDisplayIsInHWMirrorSet(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* For a secondary display in a mirror set, return the display being mirrored (the primary display), or `kCGNullDirectDisplay' if the display is the primary display or if the display is unmirrored. */ CG_EXTERN CGDirectDisplayID CGDisplayMirrorsDisplay(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return true if the display is using OpenGL acceleration; false otherwise. */ CG_EXTERN boolean_t CGDisplayUsesOpenGLAcceleration(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return true if the display is running in a stereo graphics mode; false otherwise. */ CG_EXTERN boolean_t CGDisplayIsStereo(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.4); /* 10.4.3 and later. */ + API_AVAILABLE(macos(10.4)); /* 10.4.3 and later. */ /* Return the primary display in a hardware mirror set, or `display' if the display is not hardware-mirrored. */ CG_EXTERN CGDirectDisplayID CGDisplayPrimaryDisplay(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return the logical unit number of a display. */ CG_EXTERN uint32_t CGDisplayUnitNumber(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return the vendor number of a display's monitor. */ CG_EXTERN uint32_t CGDisplayVendorNumber(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return the model number of a display's monitor. */ CG_EXTERN uint32_t CGDisplayModelNumber(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return the serial number of a display's monitor. */ CG_EXTERN uint32_t CGDisplaySerialNumber(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return the IOKit service port of a display. */ CG_EXTERN io_service_t CGDisplayIOServicePort(CGDirectDisplayID display) - CG_AVAILABLE_BUT_DEPRECATED(10.2, 10.9); + API_DEPRECATED("No longer supported", macos(10.2,10.9)); /* Return the width and height of a display in millimeters. @@ -384,7 +384,7 @@ CG_EXTERN io_service_t CGDisplayIOServicePort(CGDirectDisplayID display) support. */ CG_EXTERN CGSize CGDisplayScreenSize(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Return the rotation angle of a display in degrees clockwise. @@ -395,19 +395,19 @@ CG_EXTERN CGSize CGDisplayScreenSize(CGDirectDisplayID display) If `display' is not a valid display ID, the rotation returned is 0. */ CG_EXTERN double CGDisplayRotation(CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* Return the color space of a display. */ CG_EXTERN CGColorSpaceRef CGDisplayCopyColorSpace( CGDirectDisplayID display) - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* These functions are deprecated; do not use them. */ CG_EXTERN CGError CGConfigureDisplayMode(CGDisplayConfigRef __nullable config, CGDirectDisplayID display, CFDictionaryRef __nullable mode) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayFade.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayFade.h index f96607f8..244f9994 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayFade.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayFade.h @@ -52,7 +52,7 @@ CG_EXTERN CGError CGConfigureDisplayFadeEffect( CGDisplayConfigRef __nullable config, CGDisplayFadeInterval fadeOutSeconds, CGDisplayFadeInterval fadeInSeconds, float fadeRed, float fadeGreen, float fadeBlue) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* It may be desirable to perform fade operations at other times, such as when transitioning between game play and cinematic sequences. The @@ -74,7 +74,7 @@ typedef float CGDisplayReservationInterval; CG_EXTERN CGError CGAcquireDisplayFadeReservation(CGDisplayReservationInterval seconds, CGDisplayFadeReservationToken * __nullable token) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Release a display fade reservation, and unfades the display if needed. The reservation token is no longer valid after this operation. @@ -86,7 +86,7 @@ CG_EXTERN CGError CGAcquireDisplayFadeReservation(CGDisplayReservationInterval CG_EXTERN CGError CGReleaseDisplayFadeReservation( CGDisplayFadeReservationToken token) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Perform a fade operation. The reservation token `token' must have been previously acquired from `CGAcquireDisplayFadeReservation'. The duration @@ -134,13 +134,13 @@ CG_EXTERN CGError CGDisplayFade(CGDisplayFadeReservationToken token, CGDisplayFadeInterval duration, CGDisplayBlendFraction startBlend, CGDisplayBlendFraction endBlend, float redBlend, float greenBlend, float blueBlend, boolean_t synchronous) - CG_AVAILABLE_STARTING(10.2); + API_AVAILABLE(macos(10.2)); /* Return true if a fade operation is currently in progress, false otherwise. */ CG_EXTERN boolean_t CGDisplayFadeOperationInProgress(void) - CG_AVAILABLE_BUT_DEPRECATED(10.2, 10.9); + API_DEPRECATED("No longer supported", macos(10.2,10.9)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayStream.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayStream.h index a14adf4e..b25a5eb8 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayStream.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGDisplayStream.h @@ -93,7 +93,7 @@ typedef void (^CGDisplayStreamFrameAvailableHandler)(CGDisplayStreamFrameStatus @result The CFTypeID of the CGDisplayStreamUpdate class. */ CG_EXTERN CFTypeID CGDisplayStreamUpdateGetTypeID(void) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "There is no direct replacement for this function. Please use ScreenCaptureKit API's SCStreamOutputType instead"); + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /*! @function CGDisplayStreamUpdateGetRects @@ -105,8 +105,7 @@ CG_EXTERN CFTypeID CGDisplayStreamUpdateGetTypeID(void) */ CG_EXTERN const CGRect * __nullable CGDisplayStreamUpdateGetRects(CGDisplayStreamUpdateRef __nullable updateRef, CGDisplayStreamUpdateRectType rectType, size_t * rectCount) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's SCStreamFrameInfo with SCStreamFrameInfoContentRect instead"); - + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /*! @function CGDisplayStreamUpdateCreateMerged @abstract Merge two CGDisplayUpdateRefs into a new one. @@ -122,7 +121,7 @@ CG_EXTERN const CGRect * __nullable CGDisplayStreamUpdateGetRects(CGDisplayStrea CG_EXTERN CGDisplayStreamUpdateRef __nullable CGDisplayStreamUpdateCreateMergedUpdate( CGDisplayStreamUpdateRef __nullable firstUpdate, CGDisplayStreamUpdateRef __nullable secondUpdate) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "There is no direct replacement for this function. Please use ScreenCaptureKit API's SCStreamFrameInfo to replace CGDisplayStreamUpdate"); + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /*! @function CGDisplayStreamUpdateGetMovedRectsDelta @@ -134,7 +133,7 @@ CG_EXTERN CGDisplayStreamUpdateRef __nullable CGDisplayStreamUpdateCreateMergedU */ CG_EXTERN void CGDisplayStreamUpdateGetMovedRectsDelta(CGDisplayStreamUpdateRef __nullable updateRef, CGFloat * dx, CGFloat * dy) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's SCStreamFrameInfo with SCStreamFrameInfoContentRect instead"); + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /*! @function CGDisplayStreamGetDropCount @@ -145,7 +144,7 @@ CG_EXTERN void CGDisplayStreamUpdateGetMovedRectsDelta(CGDisplayStreamUpdateRef all WindowServer updates. */ CG_EXTERN size_t CGDisplayStreamUpdateGetDropCount(CGDisplayStreamUpdateRef __nullable updateRef) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "There is no direct replacement for this function. Please use ScreenCaptureKit API's SCStreamFrameInfo to replace CGDisplayStreamUpdate"); + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /* Optional CGDisplayStream Properties */ @@ -156,7 +155,7 @@ CG_EXTERN size_t CGDisplayStreamUpdateGetDropCount(CGDisplayStreamUpdateRef __nu source rectangle is specified in display logical coordinates and not in pixels, in order to match the normal convention on HiDPI displays. */ -CG_EXTERN const CFStringRef kCGDisplayStreamSourceRect CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's SCStreamConfiguration sourceRect property instead"); /* Source rectangle to capture - defaults to entire display */ +CG_EXTERN const CFStringRef kCGDisplayStreamSourceRect SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /* Source rectangle to capture - defaults to entire display */ /*! @const kCGDisplayStreamDestinationRect @@ -165,7 +164,7 @@ CG_EXTERN const CFStringRef kCGDisplayStreamSourceRect CG_AVAILABLE_BUT_DEPRECA the destination rectangle is always specified in output pixels to match the fact that the output buffer size is also specified in terms of pixels. */ -CG_EXTERN const CFStringRef kCGDisplayStreamDestinationRect CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's SCStreamConfiguration destinationRect property instead"); /* Destination rectangle - defaults to entire buffer */ +CG_EXTERN const CFStringRef kCGDisplayStreamDestinationRect SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /* Destination rectangle - defaults to entire buffer */ /*! @const kCGDisplayStreamPreserveAspectRatio @@ -174,38 +173,38 @@ CG_EXTERN const CFStringRef kCGDisplayStreamDestinationRect CG_AVAILABLE_BUT_DE the display stream destination rect are not the same, black borders will be inserted at the top/bottom or right/left sides of the destination in order to preserve the source aspect ratio. */ -CG_EXTERN const CFStringRef kCGDisplayStreamPreserveAspectRatio CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's SCStreamConfiguration preserveAspectRatio property instead"); /* CFBoolean - defaults to true */ +CG_EXTERN const CFStringRef kCGDisplayStreamPreserveAspectRatio SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /* CFBoolean - defaults to true */ /*! @const kCGDisplayStreamColorSpace @discussion Set the desired CGColorSpace of the output frames. By default the color space will be that of the display. */ -CG_EXTERN const CFStringRef kCGDisplayStreamColorSpace CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's SCStreamConfiguration colorSpaceName property instead"); /* Desired output color space (CGColorSpaceRef) - defaults to display color space */ +CG_EXTERN const CFStringRef kCGDisplayStreamColorSpace SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /* Desired output color space (CGColorSpaceRef, macos(10.8,14.0)) - defaults to display color space */ /*! @const kCGDisplayStreamMinimumFrameTime @discussion Request that the delta between frame updates be at least as much specified by this value. */ -CG_EXTERN const CFStringRef kCGDisplayStreamMinimumFrameTime CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's SCStreamConfiguration minimumFrameInterval property instead"); /* CFNumber in seconds, defaults to zero. */ +CG_EXTERN const CFStringRef kCGDisplayStreamMinimumFrameTime SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /* CFNumber in seconds, defaults to zero. */ /*! @const kCGDisplayStreamShowCursor @discussion Controls whether the cursor is embedded within the provided buffers or not. */ -CG_EXTERN const CFStringRef kCGDisplayStreamShowCursor CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's SCStreamConfiguration showsCursor property instead"); /* CFBoolean - defaults to false */ +CG_EXTERN const CFStringRef kCGDisplayStreamShowCursor SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /* CFBoolean - defaults to false */ /*! @const kCGDisplayStreamQueueDepth @discussion Controls how many frames deep the frame queue will be. Defaults to N. */ -CG_EXTERN const CFStringRef kCGDisplayStreamQueueDepth CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's SCStreamConfiguration queueDepth property instead"); /* Queue depth in frames. Defaults to 3. */ +CG_EXTERN const CFStringRef kCGDisplayStreamQueueDepth SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /* Queue depth in frames. Defaults to 3. */ /*! @const kCGDisplayStreamYCbCrMatrix @discussion When outputting frames in 420v or 420f format, this key may be used to control which YCbCr matrix is used The value should be one of the three kCGDisplayStreamYCbCrMatrix values specified below. */ -CG_EXTERN const CFStringRef kCGDisplayStreamYCbCrMatrix CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's SCStreamConfiguration colorMatrix property"); +CG_EXTERN const CFStringRef kCGDisplayStreamYCbCrMatrix SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /* Supported YCbCr matrices. Note that these strings have identical values to the equivalent CoreVideo strings. */ CG_EXTERN const CFStringRef kCGDisplayStreamYCbCrMatrix_ITU_R_709_2; @@ -218,7 +217,7 @@ CG_EXTERN const CFStringRef kCGDisplayStreamYCbCrMatrix_SMPTE_240M_1995; @result The CFTypeID of the CGDisplayStream class. */ CG_EXTERN CFTypeID CGDisplayStreamGetTypeID(void) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "There is no direct replacement for this function. Please use ScreenCaptureKit API's SCStream to replace CGDisplayStream"); + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /*! @function CGDisplayStreamCreate @@ -243,7 +242,7 @@ CG_EXTERN CFTypeID CGDisplayStreamGetTypeID(void) CG_EXTERN CGDisplayStreamRef __nullable CGDisplayStreamCreate(CGDirectDisplayID display, size_t outputWidth, size_t outputHeight, int32_t pixelFormat, CFDictionaryRef __nullable properties, CGDisplayStreamFrameAvailableHandler __nullable handler) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's initWithFilter:configuration:delegate: instead"); + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /*! @function CGDisplayStreamCreateWithDispatchQueue @@ -262,7 +261,7 @@ CG_EXTERN CGDisplayStreamRef __nullable CGDisplayStreamCreate(CGDirectDisplayID CG_EXTERN CGDisplayStreamRef __nullable CGDisplayStreamCreateWithDispatchQueue(CGDirectDisplayID display, size_t outputWidth, size_t outputHeight, int32_t pixelFormat, CFDictionaryRef __nullable properties, dispatch_queue_t queue, CGDisplayStreamFrameAvailableHandler __nullable handler) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's initWithFilter:configuration:delegate: instead"); + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /*! @function CGDisplayStreamStart @@ -271,7 +270,7 @@ CG_EXTERN CGDisplayStreamRef __nullable CGDisplayStreamCreateWithDispatchQueue(C @result kCGErrorSuccess If the display stream was started, otherwise an error. */ CG_EXTERN CGError CGDisplayStreamStart(CGDisplayStreamRef cg_nullable displayStream) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's startCaptureWithCompletionHandler: to start a stream instead"); + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /*! @function CGDisplayStreamStop @@ -283,7 +282,7 @@ CG_EXTERN CGError CGDisplayStreamStart(CGDisplayStreamRef cg_nullable displayStr It is safe to call this function from within the handler block, but the previous caveat still applies. */ CG_EXTERN CGError CGDisplayStreamStop(CGDisplayStreamRef cg_nullable displayStream) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "Please use ScreenCaptureKit API's stopCaptureWithCompletionHandler: to stop a stream instead"); + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); /*! @function CGDisplayStreamGetRunLoopSource @@ -293,7 +292,7 @@ CG_EXTERN CGError CGDisplayStreamStop(CGDisplayStreamRef cg_nullable displayStre display stream was created via CGDisplayStreamCreateWithDispatchQueue(). */ CG_EXTERN CFRunLoopSourceRef __nullable CGDisplayStreamGetRunLoopSource(CGDisplayStreamRef cg_nullable displayStream) - CG_AVAILABLE_BUT_DEPRECATED(10.8, 14.0, "There is no direct replacement for this function. Please use ScreenCaptureKit API's SCStream to replace CGDisplayStream"); + SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0); #endif /* __BLOCKS__ */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEXRToneMappingGamma.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEXRToneMappingGamma.h new file mode 100644 index 00000000..8b3d0990 --- /dev/null +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEXRToneMappingGamma.h @@ -0,0 +1,32 @@ +/* CoreGraphics - CGEXRToneMappingGamma.h + Copyright (c) 21 Apple Inc. + All rights reserved. */ + +#ifndef CGEXRTONEMAPPINGGAMMA_H +#define CGEXRTONEMAPPINGGAMMA_H + +#include +#include + +CF_IMPLICIT_BRIDGING_ENABLED + +CF_ASSUME_NONNULL_BEGIN + +/* kCGEXRToneMappingGammaDefog allows for specifying custom defog value to override system defaults when applying kCGToneMappingEXRGamma tone mapping method */ +CG_EXTERN const CFStringRef kCGEXRToneMappingGammaDefog API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* default value: 0.0f range [0.0f, 0.01f] */ + +/* kCGEXRToneMappingGammaExposure allows for specifying custom exposure value to override system defaults when applying kCGToneMappingEXRGamma tone mapping method */ +CG_EXTERN const CFStringRef kCGEXRToneMappingGammaExposure API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* default value: 0.0f range [-10.0f, 10.0f] */ + +/* kCGEXRToneMappingGammaKneeLow allows for specifying custom "knee low" value to override system defaults when applying kCGToneMappingEXRGamma tone mapping method */ +CG_EXTERN const CFStringRef kCGEXRToneMappingGammaKneeLow API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* default value: 0.0f range [-2.85f, 3.0f] */ + +/* kCGEXRToneMappingGammaKneeHigh allows for specifying custom "knee high" value to override system defaults when applying kCGToneMappingEXRGamma tone mapping method */ +CG_EXTERN const CFStringRef kCGEXRToneMappingGammaKneeHigh API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* default value: 5.0f range [3.5f, 7.5f] */ + + +CF_ASSUME_NONNULL_END + +CF_IMPLICIT_BRIDGING_DISABLED + +#endif /* CGEXRTONEMAPPINGGAMMA_H */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEvent.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEvent.h index f7a0ee16..00633219 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEvent.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEvent.h @@ -18,27 +18,27 @@ CF_ASSUME_NONNULL_BEGIN /* Return the type identifier for the opaque type `CGEventRef'. */ CG_EXTERN CFTypeID CGEventGetTypeID(void) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return a new event using the event source `source'. If `source' is NULL, the default source is used. */ CG_EXTERN CGEventRef __nullable CGEventCreate(CGEventSourceRef __nullable source) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return a "flattened" data representation of an event. */ CG_EXTERN CFDataRef __nullable CGEventCreateData( CFAllocatorRef __nullable allocator, CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return an event created from a "flattened" data representation of the event. */ CG_EXTERN CGEventRef __nullable CGEventCreateFromData( CFAllocatorRef __nullable allocator, CFDataRef __nullable data) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return a new mouse event. @@ -58,7 +58,7 @@ CG_EXTERN CGEventRef __nullable CGEventCreateMouseEvent( CGEventSourceRef __nullable source, CGEventType mouseType, CGPoint mouseCursorPosition, CGMouseButton mouseButton) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return a new keyboard event. @@ -79,7 +79,7 @@ CG_EXTERN CGEventRef __nullable CGEventCreateMouseEvent( CG_EXTERN CGEventRef __nullable CGEventCreateKeyboardEvent( CGEventSourceRef __nullable source, CGKeyCode virtualKey, bool keyDown) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return a new scrollwheel event. @@ -100,19 +100,19 @@ CG_EXTERN CGEventRef __nullable CGEventCreateKeyboardEvent( CG_EXTERN CGEventRef __nullable CGEventCreateScrollWheelEvent( CGEventSourceRef __nullable source, CGScrollEventUnit units, uint32_t wheelCount, int32_t wheel1, ...) - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* A non-variadic variant version of SLEventCreateScrollWheelEvent. */ CG_EXTERN CGEventRef __nullable CGEventCreateScrollWheelEvent2( CGEventSourceRef __nullable source, CGScrollEventUnit units, uint32_t wheelCount, int32_t wheel1, int32_t wheel2, int32_t wheel3) - CG_AVAILABLE_STARTING(10.13); + API_AVAILABLE(macos(10.13)); /* Return a copy of `event'. */ CG_EXTERN CGEventRef __nullable CGEventCreateCopy(CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return an event source created from an existing event. @@ -125,62 +125,62 @@ CG_EXTERN CGEventRef __nullable CGEventCreateCopy(CGEventRef __nullable event) CG_EXTERN CGEventSourceRef __nullable CGEventCreateSourceFromEvent( CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the event source of an event. */ CG_EXTERN void CGEventSetSource(CGEventRef __nullable event, CGEventSourceRef __nullable source) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the event type of an event (left mouse down, for example). */ CG_EXTERN CGEventType CGEventGetType(CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the event type of an event. */ CG_EXTERN void CGEventSetType(CGEventRef __nullable event, CGEventType type) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the timestamp of an event. */ CG_EXTERN CGEventTimestamp CGEventGetTimestamp(CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the timestamp of an event. */ CG_EXTERN void CGEventSetTimestamp(CGEventRef __nullable event, CGEventTimestamp timestamp) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the location of an event in global display coordinates. CGPointZero is returned if event is not a valid CGEventRef. */ CG_EXTERN CGPoint CGEventGetLocation(CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the location of an event relative to the lower-left corner of the main display. CGPointZero is returned if event is not a valid CGEventRef. */ CG_EXTERN CGPoint CGEventGetUnflippedLocation(CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* Set the location of an event in global display coordinates. */ CG_EXTERN void CGEventSetLocation(CGEventRef __nullable event, CGPoint location) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the event flags of an event. (CGEventFlags)0 if event is not a valid CGEventRef. */ CG_EXTERN CGEventFlags CGEventGetFlags(CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the event flags of an event. */ CG_EXTERN void CGEventSetFlags(CGEventRef __nullable event, CGEventFlags flags) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the Unicode string associated with a keyboard event. @@ -191,7 +191,7 @@ CG_EXTERN void CGEventSetFlags(CGEventRef __nullable event, CGEventFlags flags) CG_EXTERN void CGEventKeyboardGetUnicodeString(CGEventRef __nullable event, UniCharCount maxStringLength, UniCharCount *__nullable actualStringLength, UniChar * __nullable unicodeString) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the Unicode string associated with a keyboard event. @@ -204,13 +204,13 @@ CG_EXTERN void CGEventKeyboardGetUnicodeString(CGEventRef __nullable event, CG_EXTERN void CGEventKeyboardSetUnicodeString(CGEventRef __nullable event, UniCharCount stringLength, const UniChar * __nullable unicodeString) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the integer value of a field in an event. */ CG_EXTERN int64_t CGEventGetIntegerValueField(CGEventRef __nullable event, CGEventField field) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the integer value of a field in an event. @@ -225,7 +225,7 @@ CG_EXTERN int64_t CGEventGetIntegerValueField(CGEventRef __nullable event, CG_EXTERN void CGEventSetIntegerValueField(CGEventRef __nullable event, CGEventField field, int64_t value) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the floating-point value of a field in an event. @@ -235,7 +235,7 @@ CG_EXTERN void CGEventSetIntegerValueField(CGEventRef __nullable event, CG_EXTERN double CGEventGetDoubleValueField(CGEventRef __nullable event, CGEventField field) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the floating-point value of a field in an event. @@ -249,7 +249,7 @@ CG_EXTERN double CGEventGetDoubleValueField(CGEventRef __nullable event, CG_EXTERN void CGEventSetDoubleValueField(CGEventRef __nullable event, CGEventField field, double value) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Event taps. @@ -297,7 +297,7 @@ CG_EXTERN CFMachPortRef __nullable CGEventTapCreate(CGEventTapLocation tap, CGEventTapPlacement place, CGEventTapOptions options, CGEventMask eventsOfInterest, CGEventTapCallBack callback, void * __nullable userInfo) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Create an event tap for a specified process. @@ -310,12 +310,12 @@ CG_EXTERN CFMachPortRef __nullable CGEventTapCreateForPSN( CGEventTapPlacement place, CGEventTapOptions options, CGEventMask eventsOfInterest, CGEventTapCallBack callback, void *__nullable userInfo) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); CG_EXTERN CFMachPortRef __nullable CGEventTapCreateForPid(pid_t pid, CGEventTapPlacement place, CGEventTapOptions options, CGEventMask eventsOfInterest, CGEventTapCallBack callback, - void * __nullable userInfo) CG_AVAILABLE_STARTING(10.11); + void * __nullable userInfo) API_AVAILABLE(macos(10.11)); /* Enable or disable an event tap. @@ -325,12 +325,12 @@ CG_EXTERN CFMachPortRef __nullable CGEventTapCreateForPid(pid_t pid, tap may be re-enabled by calling this function. */ CG_EXTERN void CGEventTapEnable(CFMachPortRef tap, bool enable) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return true if `tap' is enabled; false otherwise. */ CG_EXTERN bool CGEventTapIsEnabled(CFMachPortRef tap) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Post an event from an event tap into the event stream. @@ -342,7 +342,7 @@ CG_EXTERN bool CGEventTapIsEnabled(CFMachPortRef tap) CG_EXTERN void CGEventTapPostEvent(CGEventTapProxy __nullable proxy, CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Post an event into the event stream at a specified location. @@ -351,7 +351,7 @@ CG_EXTERN void CGEventTapPostEvent(CGEventTapProxy __nullable proxy, taps. */ CG_EXTERN void CGEventPost(CGEventTapLocation tap, CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Post an event into the event stream for a specific application. @@ -367,11 +367,11 @@ CG_EXTERN void CGEventPost(CGEventTapLocation tap, CGEventRef __nullable event) /* DEPRECATED; use CGEventPostToPid instead. */ CG_EXTERN void CGEventPostToPSN(void * __nullable processSerialNumber, CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); CG_EXTERN void CGEventPostToPid( pid_t pid, CGEventRef __nullable event) - CG_AVAILABLE_STARTING(10.11); + API_AVAILABLE(macos(10.11)); /* Gets a list of currently installed event taps. @@ -393,19 +393,19 @@ CG_EXTERN void CGEventPostToPid( pid_t pid, CG_EXTERN CGError CGGetEventTapList(uint32_t maxNumberOfTaps, CGEventTapInformation * __nullable tapList, uint32_t * __nullable eventTapCount) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Checks whether the current process already has event listening access */ -CG_EXTERN bool CGPreflightListenEventAccess(void) CG_AVAILABLE_STARTING(10.15); +CG_EXTERN bool CGPreflightListenEventAccess(void) API_AVAILABLE(macos(10.15)); /* Requests event listening access if absent, potentially prompting */ -CG_EXTERN bool CGRequestListenEventAccess(void) CG_AVAILABLE_STARTING(10.15); +CG_EXTERN bool CGRequestListenEventAccess(void) API_AVAILABLE(macos(10.15)); /* Checks whether the current process already has event synthesizing access */ -CG_EXTERN bool CGPreflightPostEventAccess(void) CG_AVAILABLE_STARTING(10.15); +CG_EXTERN bool CGPreflightPostEventAccess(void) API_AVAILABLE(macos(10.15)); /* Requests event synthesizing access if absent, potentially prompting */ -CG_EXTERN bool CGRequestPostEventAccess(void) CG_AVAILABLE_STARTING(10.15); +CG_EXTERN bool CGRequestPostEventAccess(void) API_AVAILABLE(macos(10.15)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEventSource.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEventSource.h index 7ce32c7f..068dd5c7 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEventSource.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEventSource.h @@ -50,13 +50,13 @@ CF_ASSUME_NONNULL_BEGIN /* Return the CFTypeID for CGEventSourceRefs. */ CG_EXTERN CFTypeID CGEventSourceGetTypeID(void) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return a Quartz event source created with a specified source state. */ CG_EXTERN CGEventSourceRef __nullable CGEventSourceCreate( CGEventSourceStateID stateID) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the keyboard type to be used with a Quartz event source. Result of CGSDefaultKeyboardID() is returned if source is not a valid @@ -64,13 +64,13 @@ CG_EXTERN CGEventSourceRef __nullable CGEventSourceCreate( CG_EXTERN CGEventSourceKeyboardType CGEventSourceGetKeyboardType( CGEventSourceRef __nullable source) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the keyboard type to be used with a Quartz event source. */ CG_EXTERN void CGEventSourceSetKeyboardType(CGEventSourceRef __nullable source, CGEventSourceKeyboardType keyboardType) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the scale of pixels per line in a scrolling event source. @@ -83,7 +83,7 @@ CG_EXTERN void CGEventSourceSetKeyboardType(CGEventSourceRef __nullable source, CG_EXTERN double CGEventSourceGetPixelsPerLine( CGEventSourceRef __nullable source) - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* Set the scale of pixels per line in a scrolling event source. @@ -96,7 +96,7 @@ CG_EXTERN double CGEventSourceGetPixelsPerLine( CG_EXTERN void CGEventSourceSetPixelsPerLine(CGEventSourceRef __nullable source, double pixelsPerLine) - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* Return the source state associated with a Quartz event source. @@ -111,27 +111,27 @@ CG_EXTERN void CGEventSourceSetPixelsPerLine(CGEventSourceRef __nullable source, CG_EXTERN CGEventSourceStateID CGEventSourceGetSourceStateID( CGEventSourceRef __nullable source) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return a Boolean value indicating the current button state of a Quartz event source. If true, the button is down; if false, the button is up. */ CG_EXTERN bool CGEventSourceButtonState(CGEventSourceStateID stateID, CGMouseButton button) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return a Boolean value indicating the current keyboard state of a Quartz event source. If true, the key is down; if false, the key is up. */ CG_EXTERN bool CGEventSourceKeyState(CGEventSourceStateID stateID, CGKeyCode key) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the current flags of a Quartz event source. If true, the key is down; if false, the key is up. */ CG_EXTERN CGEventFlags CGEventSourceFlagsState(CGEventSourceStateID stateID) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the elapsed time since the last event for a Quartz event source. @@ -140,7 +140,7 @@ CG_EXTERN CGEventFlags CGEventSourceFlagsState(CGEventSourceStateID stateID) CG_EXTERN CFTimeInterval CGEventSourceSecondsSinceLastEventType( CGEventSourceStateID stateID, CGEventType eventType) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return a count of events of a given type seen since the Window Server started. @@ -158,7 +158,7 @@ CG_EXTERN CFTimeInterval CGEventSourceSecondsSinceLastEventType( CG_EXTERN uint32_t CGEventSourceCounterForEventType(CGEventSourceStateID stateID, CGEventType eventType) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the 64-bit user-specified data for a Quartz event source. @@ -169,7 +169,7 @@ CG_EXTERN uint32_t CGEventSourceCounterForEventType(CGEventSourceStateID CG_EXTERN void CGEventSourceSetUserData(CGEventSourceRef __nullable source, int64_t userData) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the 64-bit user-specified data for a Quartz event source. @@ -180,7 +180,7 @@ CG_EXTERN void CGEventSourceSetUserData(CGEventSourceRef __nullable source, source. */ CG_EXTERN int64_t CGEventSourceGetUserData(CGEventSourceRef __nullable source) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the mask that indicates which classes of local hardware events are enabled during event suppression. @@ -203,7 +203,7 @@ CG_EXTERN int64_t CGEventSourceGetUserData(CGEventSourceRef __nullable source) CG_EXTERN void CGEventSourceSetLocalEventsFilterDuringSuppressionState( CGEventSourceRef __nullable source, CGEventFilterMask filter, CGEventSuppressionState state) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the mask that indicates which classes of local hardware events are @@ -223,7 +223,7 @@ CG_EXTERN void CGEventSourceSetLocalEventsFilterDuringSuppressionState( CG_EXTERN CGEventFilterMask CGEventSourceGetLocalEventsFilterDuringSuppressionState( CGEventSourceRef __nullable source, CGEventSuppressionState state) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Set the interval that local hardware events may be suppressed following the posting of a Quartz event. @@ -235,7 +235,7 @@ CG_EXTERN CGEventFilterMask CG_EXTERN void CGEventSourceSetLocalEventsSuppressionInterval( CGEventSourceRef __nullable source, CFTimeInterval seconds) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); /* Return the interval that local hardware events may be suppressed following the posting of a Quartz event. @@ -244,7 +244,7 @@ CG_EXTERN void CGEventSourceSetLocalEventsSuppressionInterval( CG_EXTERN CFTimeInterval CGEventSourceGetLocalEventsSuppressionInterval( CGEventSourceRef __nullable source) - CG_AVAILABLE_STARTING(10.4); + API_AVAILABLE(macos(10.4)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEventTypes.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEventTypes.h index 7b369be7..fbf432cb 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEventTypes.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGEventTypes.h @@ -379,7 +379,16 @@ typedef CF_ENUM(uint32_t, CGEventField) { /* Unaccelerated pointer movement */ kCGEventUnacceleratedPointerMovementX = 170, - kCGEventUnacceleratedPointerMovementY = 171 + kCGEventUnacceleratedPointerMovementY = 171, + + /* Momentum Scroll Optional Phase */ + kCGScrollWheelEventMomentumOptionPhase = 173, + + /* Raw and accelerated scroll wheel deltas*/ + kCGScrollWheelEventAcceleratedDeltaAxis1 = 176, + kCGScrollWheelEventAcceleratedDeltaAxis2 = 175, + kCGScrollWheelEventRawDeltaAxis1 = 178, + kCGScrollWheelEventRawDeltaAxis2 = 177 }; /* Constants used with the `kCGMouseEventSubtype' event field. */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGFont.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGFont.h index f60fa1f2..cc4fb904 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGFont.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGFont.h @@ -55,7 +55,7 @@ static const CGFontIndex kCGGlyphMax = kCGFontIndexMax; /* Return the CFTypeID for CGFontRefs. */ CG_EXTERN CFTypeID CGFontGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a CGFontRef using `platformFontReference', a pointer to a platform-specific font reference. For MacOS X, `platformFontReference' @@ -63,14 +63,14 @@ CG_EXTERN CFTypeID CGFontGetTypeID(void) CG_EXTERN CGFontRef __nullable CGFontCreateWithPlatformFont( void * cg_nullable platformFontReference) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6) CG_UNAVAILABLE_EMBEDDED; + API_DEPRECATED("No longer supported", macos(10.0,10.6)) API_UNAVAILABLE(ios, tvos, watchos); /* Return the font defined by the data provided by `provider', or NULL if the font can't be created. */ CG_EXTERN CGFontRef cg_nullable CGFontCreateWithDataProvider( CGDataProviderRef cg_nullable provider) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the font identified by `name', corresponding to the font's PostScript name or its full name, or NULL if the font can't be @@ -78,7 +78,7 @@ CG_EXTERN CGFontRef cg_nullable CGFontCreateWithDataProvider( CG_EXTERN CGFontRef __nullable CGFontCreateWithFontName( CFStringRef cg_nullable name) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return a font based on `font' with the variation specification dictionary `variations' applied to `font'. A variation specification dictionary @@ -90,93 +90,93 @@ CG_EXTERN CGFontRef __nullable CGFontCreateWithFontName( CG_EXTERN CGFontRef __nullable CGFontCreateCopyWithVariations( CGFontRef cg_nullable font, CFDictionaryRef __nullable variations) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Equivalent to `CFRetain(font)', except it doesn't crash (as CFRetain does) if `font' is NULL. */ CG_EXTERN CGFontRef cg_nullable CGFontRetain(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRelease(font)', except it doesn't crash (as CFRelease does) if `font' is NULL. */ CG_EXTERN void CGFontRelease(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the number of glyphs in `font'. */ CG_EXTERN size_t CGFontGetNumberOfGlyphs(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the glyph space units/em for `font'. */ CG_EXTERN int CGFontGetUnitsPerEm(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the PostScript name of `font'. */ CG_EXTERN CFStringRef __nullable CGFontCopyPostScriptName(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the "full name" of `font'. */ CG_EXTERN CFStringRef __nullable CGFontCopyFullName(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the ascent of `font'. The ascent is the maximum distance above the baseline of glyphs in a font. The value is specified in glyph space units. */ CG_EXTERN int CGFontGetAscent(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the descent of `font'. The descent is the maximum distance below the baseline of glyphs in a font. The value is specified in glyph space units. */ CG_EXTERN int CGFontGetDescent(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the leading of `font'. The leading is the spacing between consecutive lines of text in a font. The value is specified in glyph space units. */ CG_EXTERN int CGFontGetLeading(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the cap height of `font'. The cap height is the distance above the baseline of the top of flat capital letters of glyphs in a font. The value is specified in glyph space units. */ CG_EXTERN int CGFontGetCapHeight(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the x-height of `font'. The x-height is the distance above the baseline of the top of flat, non-ascending lowercase letters (such as "x") of glyphs in a font. The value is specified in glyph space units. */ CG_EXTERN int CGFontGetXHeight(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the font bounding box of `font'. The font bounding box is the union of all of the bounding boxes for all the glyphs in a font. The value is specified in glyph space units. */ CG_EXTERN CGRect CGFontGetFontBBox(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the italic angle of `font', measured in degrees counter-clockwise from the vertical. */ CG_EXTERN CGFloat CGFontGetItalicAngle(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the thickness of the dominant vertical stems of glyphs in `font'. The value is specified in glyph space units. */ CG_EXTERN CGFloat CGFontGetStemV(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return an array of the variation axis dictionaries for `font'. Each variation axis dictionary contains values for the variation axis keys @@ -184,7 +184,7 @@ CG_EXTERN CGFloat CGFontGetStemV(CGFontRef cg_nullable font) variations. */ CG_EXTERN CFArrayRef __nullable CGFontCopyVariationAxes(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the variation specification dictionary from `font'. This dictionary contains keys corresponding the variation axis names of the @@ -194,7 +194,7 @@ CG_EXTERN CFArrayRef __nullable CGFontCopyVariationAxes(CGFontRef cg_nullable fo variations. */ CG_EXTERN CFDictionaryRef __nullable CGFontCopyVariations(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Get the advance of each glyph in `glyphs', an array of `count' glyphs, and return it in the corresponding entry of `advances', an array of @@ -203,7 +203,7 @@ CG_EXTERN CFDictionaryRef __nullable CGFontCopyVariations(CGFontRef cg_nullable CG_EXTERN bool CGFontGetGlyphAdvances(CGFontRef cg_nullable font, const CGGlyph * glyphs, size_t count, int * advances) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Get the bounding box of each glyph in `glyphs', an array of `count' glyphs, and return it in the corresponding entry of `bboxes', an array of @@ -213,28 +213,28 @@ CG_EXTERN bool CGFontGetGlyphAdvances(CGFontRef cg_nullable font, CG_EXTERN bool CGFontGetGlyphBBoxes(CGFontRef cg_nullable font, const CGGlyph * glyphs, size_t count, CGRect * bboxes) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the glyph associated with `name' in `font'. If `name' isn't found in the font, return 0. */ CG_EXTERN CGGlyph CGFontGetGlyphWithGlyphName( CGFontRef cg_nullable font, CFStringRef cg_nullable name) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the glyph name of `glyph' in `font', or NULL if `glyph' does not appear in `font'. */ CG_EXTERN CFStringRef __nullable CGFontCopyGlyphNameForGlyph( CGFontRef cg_nullable font, CGGlyph glyph) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return true if a subset in the PostScript format `format' can be created for `font'; false otherwise. */ CG_EXTERN bool CGFontCanCreatePostScriptSubset(CGFontRef cg_nullable font, CGFontPostScriptFormat format) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Create a subset of `font' named `subsetName' in the PostScript format `format'. The subset will contain the glyphs specified by `glyphs', an @@ -245,28 +245,28 @@ CG_EXTERN CFDataRef __nullable CGFontCreatePostScriptSubset( CGFontRef cg_nullable font, CFStringRef cg_nullable subsetName, CGFontPostScriptFormat format, const CGGlyph * __nullable glyphs, size_t count, const CGGlyph encoding[CG_NULLABLE_ARRAY 256]) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return a PostScript encoding of `font' containing glyphs in `encoding'. */ CG_EXTERN CFDataRef __nullable CGFontCreatePostScriptEncoding( CGFontRef cg_nullable font, const CGGlyph encoding[CG_NULLABLE_ARRAY 256]) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return an array of font table tags in `font'. Each entry in the array is a four-byte value representing a single TrueType or OpenType font table tag. */ CG_EXTERN CFArrayRef __nullable CGFontCopyTableTags(CGFontRef cg_nullable font) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return the table in `font' corresponding to `tag', or NULL if no such table exists. */ CG_EXTERN CFDataRef __nullable CGFontCopyTableForTag( CGFontRef cg_nullable font, uint32_t tag) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /*** Keys for the font variation axis dictionary. ***/ @@ -275,28 +275,28 @@ CG_EXTERN CFDataRef __nullable CGFontCopyTableForTag( the name of the variation axis. */ CG_EXTERN const CFStringRef kCGFontVariationAxisName - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* The key used to obtain the minimum variation axis value from a variation axis dictionary. The value obtained with this key is a CFNumberRef specifying the minimum value of the variation axis. */ CG_EXTERN const CFStringRef kCGFontVariationAxisMinValue - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* The key used to obtain the maximum variation axis value from a variation axis dictionary. The value obtained with this key is a CFNumberRef specifying the maximum value of the variation axis. */ CG_EXTERN const CFStringRef kCGFontVariationAxisMaxValue - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* The key used to obtain the default variation axis value from a variation axis dictionary. The value obtained with this key is a CFNumberRef specifying the default value of the variation axis. */ CG_EXTERN const CFStringRef kCGFontVariationAxisDefaultValue - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Obsolete; don't use these. */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGFunction.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGFunction.h index 8674c1e5..fc1ee295 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGFunction.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGFunction.h @@ -52,7 +52,7 @@ typedef struct CGFunctionCallbacks CGFunctionCallbacks; /* Return the CFTypeID for CGFunctionRefs. */ CG_EXTERN CFTypeID CGFunctionGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a CGFunction using `callbacks' to evaluate the function. `info' is passed to each of the callback functions. `domainDimension' is the number @@ -84,20 +84,20 @@ CG_EXTERN CGFunctionRef __nullable CGFunctionCreate(void * __nullable info, size_t domainDimension, const CGFloat *__nullable domain, size_t rangeDimension, const CGFloat * __nullable range, const CGFunctionCallbacks * cg_nullable callbacks) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Equivalent to `CFRetain(function)', except it doesn't crash (as CFRetain does) if `function' is NULL. */ CG_EXTERN CGFunctionRef cg_nullable CGFunctionRetain( CGFunctionRef cg_nullable function) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Equivalent to `CFRelease(function)', except it doesn't crash (as CFRelease does) if `function' is NULL. */ CG_EXTERN void CGFunctionRelease(CGFunctionRef cg_nullable function) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGGeometry.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGGeometry.h index ac14fe40..785d2715 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGGeometry.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGGeometry.h @@ -61,29 +61,29 @@ typedef CF_CLOSED_ENUM(uint32_t, CGRectEdge) { /* The "zero" point -- equivalent to CGPointMake(0, 0). */ CG_EXTERN const CGPoint CGPointZero - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* The "zero" size -- equivalent to CGSizeMake(0, 0). */ CG_EXTERN const CGSize CGSizeZero - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* The "zero" rectangle -- equivalent to CGRectMake(0, 0, 0, 0). */ CG_EXTERN const CGRect CGRectZero - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* The "empty" rect. This is the rectangle returned when, for example, we intersect two disjoint rectangles. Note that the null rect is not the same as the zero rect. */ CG_EXTERN const CGRect CGRectNull - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* The infinite rectangle. */ CG_EXTERN const CGRect CGRectInfinite - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Make a point from `(x, y)'. */ @@ -105,106 +105,106 @@ CG_INLINE CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width, /* Return the leftmost x-value of `rect'. */ CG_EXTERN CGFloat CGRectGetMinX(CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the midpoint x-value of `rect'. */ CG_EXTERN CGFloat CGRectGetMidX(CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the rightmost x-value of `rect'. */ CG_EXTERN CGFloat CGRectGetMaxX(CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the smallest y-value of `rect'. */ CG_EXTERN CGFloat CGRectGetMinY(CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the midpoint y-value of `rect'. */ CG_EXTERN CGFloat CGRectGetMidY(CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the largest y-value of `rect'. */ CG_EXTERN CGFloat CGRectGetMaxY(CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the width of `rect'. */ CG_EXTERN CGFloat CGRectGetWidth(CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the height of `rect'. */ CG_EXTERN CGFloat CGRectGetHeight(CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `point1' and `point2' are the same, false otherwise. */ CG_EXTERN bool CGPointEqualToPoint(CGPoint point1, CGPoint point2) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `size1' and `size2' are the same, false otherwise. */ CG_EXTERN bool CGSizeEqualToSize(CGSize size1, CGSize size2) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `rect1' and `rect2' are the same, false otherwise. */ CG_EXTERN bool CGRectEqualToRect(CGRect rect1, CGRect rect2) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Standardize `rect' -- i.e., convert it to an equivalent rect which has positive width and height. */ CG_EXTERN CGRect CGRectStandardize(CGRect rect) __attribute__ ((warn_unused_result)) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `rect' is empty (that is, if it has zero width or height), false otherwise. A null rect is defined to be empty. */ CG_EXTERN bool CGRectIsEmpty(CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `rect' is the null rectangle, false otherwise. */ CG_EXTERN bool CGRectIsNull(CGRect rect) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `rect' is the infinite rectangle, false otherwise. */ CG_EXTERN bool CGRectIsInfinite(CGRect rect) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Inset `rect' by `(dx, dy)' -- i.e., offset its origin by `(dx, dy)', and decrease its size by `(2*dx, 2*dy)'. */ CG_EXTERN CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy) __attribute__ ((warn_unused_result)) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Expand `rect' to the smallest rect containing it with integral origin and size. */ CG_EXTERN CGRect CGRectIntegral(CGRect rect) __attribute__ ((warn_unused_result)) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the union of `r1' and `r2'. */ CG_EXTERN CGRect CGRectUnion(CGRect r1, CGRect r2) __attribute__ ((warn_unused_result)) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the intersection of `r1' and `r2'. This may return a null rect. */ CG_EXTERN CGRect CGRectIntersection(CGRect r1, CGRect r2) __attribute__ ((warn_unused_result)) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Offset `rect' by `(dx, dy)'. */ CG_EXTERN CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy) __attribute__ ((warn_unused_result)) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Make two new rectangles, `slice' and `remainder', by dividing `rect' with a line that's parallel to one of its sides, specified by `edge' -- either @@ -214,26 +214,26 @@ CG_EXTERN CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy) __attribute__ CG_EXTERN void CGRectDivide(CGRect rect, CGRect * slice, CGRect * remainder, CGFloat amount, CGRectEdge edge) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `point' is contained in `rect', false otherwise. */ CG_EXTERN bool CGRectContainsPoint(CGRect rect, CGPoint point) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `rect2' is contained in `rect1', false otherwise. `rect2' is contained in `rect1' if the union of `rect1' and `rect2' is equal to `rect1'. */ CG_EXTERN bool CGRectContainsRect(CGRect rect1, CGRect rect2) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `rect1' intersects `rect2', false otherwise. `rect1' intersects `rect2' if the intersection of `rect1' and `rect2' is not the null rect. */ CG_EXTERN bool CGRectIntersectsRect(CGRect rect1, CGRect rect2) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /*** Persistent representations. ***/ @@ -241,7 +241,7 @@ CG_EXTERN bool CGRectIntersectsRect(CGRect rect1, CGRect rect2) CG_EXTERN CFDictionaryRef CGPointCreateDictionaryRepresentation( CGPoint point) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Make a CGPoint from the contents of `dict' (presumably returned earlier from `CGPointCreateDictionaryRepresentation') and store the value in @@ -249,12 +249,12 @@ CG_EXTERN CFDictionaryRef CGPointCreateDictionaryRepresentation( CG_EXTERN bool CGPointMakeWithDictionaryRepresentation( CFDictionaryRef cg_nullable dict, CGPoint * cg_nullable point) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return a dictionary representation of `size'. */ CG_EXTERN CFDictionaryRef CGSizeCreateDictionaryRepresentation(CGSize size) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Make a CGSize from the contents of `dict' (presumably returned earlier from `CGSizeCreateDictionaryRepresentation') and store the value in @@ -262,12 +262,12 @@ CG_EXTERN CFDictionaryRef CGSizeCreateDictionaryRepresentation(CGSize size) CG_EXTERN bool CGSizeMakeWithDictionaryRepresentation( CFDictionaryRef cg_nullable dict, CGSize * cg_nullable size) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Return a dictionary representation of `rect'. */ CG_EXTERN CFDictionaryRef CGRectCreateDictionaryRepresentation(CGRect) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Make a CGRect from the contents of `dict' (presumably returned earlier from `CGRectCreateDictionaryRepresentation') and store the value in @@ -275,7 +275,7 @@ CG_EXTERN CFDictionaryRef CGRectCreateDictionaryRepresentation(CGRect) CG_EXTERN bool CGRectMakeWithDictionaryRepresentation( CFDictionaryRef cg_nullable dict, CGRect * cg_nullable rect) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /*** Definitions of inline functions. ***/ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGGradient.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGGradient.h index 247d5410..3faa4cb5 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGGradient.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGGradient.h @@ -37,7 +37,7 @@ CF_ASSUME_NONNULL_BEGIN /* Return the CFTypeID for CGGradients. */ CG_EXTERN CFTypeID CGGradientGetTypeID(void) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Creates a gradient by pairing the color components provided in `components' with locations provided in `locations'. If `locations' is @@ -55,7 +55,7 @@ CG_EXTERN CFTypeID CGGradientGetTypeID(void) CG_EXTERN CGGradientRef __nullable CGGradientCreateWithColorComponents( CGColorSpaceRef cg_nullable space, const CGFloat * cg_nullable components, const CGFloat * __nullable locations, size_t count) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Creates a gradient by pairing the colors provided in `colors' with the locations provided in `locations'. `colors' should be a non-empty array @@ -77,20 +77,20 @@ CG_EXTERN CGGradientRef __nullable CGGradientCreateWithColorComponents( CG_EXTERN CGGradientRef __nullable CGGradientCreateWithColors( CGColorSpaceRef __nullable space, CFArrayRef cg_nullable colors, const CGFloat * __nullable locations) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Equivalent to `CFRetain' except that it doesn't crash (as `CFRetain' does) if `gradient' is NULL. */ CG_EXTERN CGGradientRef cg_nullable CGGradientRetain( CGGradientRef cg_nullable gradient) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Equivalent to `CFRelease' except that it doesn't crash (as `CFRelease' does) if `gradient' is NULL. */ CG_EXTERN void CGGradientRelease(CGGradientRef cg_nullable gradient) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGITUToneMapping.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGITUToneMapping.h new file mode 100644 index 00000000..2930fc9e --- /dev/null +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGITUToneMapping.h @@ -0,0 +1,31 @@ +/* CoreGraphics - CGITUToneMapping.h + Copyright (c) 2024 Apple Inc. + All rights reserved. */ + +#ifndef CGITUTONEMAPPING_H +#define CGITUTONEMAPPING_H + +#include +#include + +CF_IMPLICIT_BRIDGING_ENABLED + +CF_ASSUME_NONNULL_BEGIN + +/* kCGUse100nitsHLGOOTF allows for using HLG OOTF targeting 100 nits when converting HLG to SDR when applying kCGColorITURecommended tone mapping method */ +CG_EXTERN const CFStringRef kCGUse100nitsHLGOOTF API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* The expected value is a CFBooleanRef (kCFBooleanTrue) */ + +/* kCGUseBT1886ForCoreVideoGamma allows for choosing BT1886 recommended gamma in lieu of CoreVideo Gamma. */ +CG_EXTERN const CFStringRef kCGUseBT1886ForCoreVideoGamma API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* The expected value is a CFBooleanRef (kCFBooleanTrue) */ + +/* kCGSkipBoostToHDR allows for skipping linear boost when converting non-HDR content (either SDR or extended range) to HDR when applying kCGColorITURecommended tone mapping method */ +CG_EXTERN const CFStringRef kCGSkipBoostToHDR API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* The expected value is a CFBooleanRef (kCFBooleanTrue) */ + +/* kCGUseLegacyHDREcosystem allows for choosing legacy HDR conversion functions implemented in previous versions of the OS when applying kCGColorITURecommended tone mapping method */ +CG_EXTERN const CFStringRef kCGUseLegacyHDREcosystem API_AVAILABLE(macos(15.1), ios(18.1), tvos(18.1), watchos(11.1)); /* The expected value is a CFBooleanRef (kCFBooleanTrue) */ + +CF_ASSUME_NONNULL_END + +CF_IMPLICIT_BRIDGING_DISABLED + +#endif /* CGITUTONEMAPPING_H */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGImage.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGImage.h index 90013945..c049db87 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGImage.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGImage.h @@ -37,7 +37,7 @@ typedef CF_ENUM(uint32_t, CGImageByteOrderInfo) { kCGImageByteOrder32Little = (2 << 12), kCGImageByteOrder16Big = (3 << 12), kCGImageByteOrder32Big = (4 << 12) -} CG_AVAILABLE_STARTING(10.0, 2.0); +} API_AVAILABLE(macos(10.0), ios(2.0)); typedef CF_ENUM(uint32_t, CGImagePixelFormatInfo) { kCGImagePixelFormatMask = 0xF0000, @@ -48,7 +48,7 @@ typedef CF_ENUM(uint32_t, CGImagePixelFormatInfo) { kCGImagePixelFormatRGBCIF10 = (4 << 16) /* Only for RGB 32 bits per pixel, * 10 bits per component, kCGImageByteOrder32Little * The 2 MSB of the pixel need to be set to 1 */ -} CG_AVAILABLE_STARTING(10.14, 12.0); +} API_AVAILABLE(macos(10.14), ios(12.0)); typedef CF_OPTIONS(uint32_t, CGBitmapInfo) { kCGBitmapAlphaInfoMask = 0x1F, @@ -62,7 +62,7 @@ typedef CF_OPTIONS(uint32_t, CGBitmapInfo) { kCGBitmapByteOrder32Little = kCGImageByteOrder32Little, kCGBitmapByteOrder16Big = kCGImageByteOrder16Big, kCGBitmapByteOrder32Big = kCGImageByteOrder32Big -} CG_AVAILABLE_STARTING(10.0, 2.0); +} API_AVAILABLE(macos(10.0), ios(2.0)); #ifdef __BIG_ENDIAN__ static const CGBitmapInfo kCGBitmapByteOrder16Host = kCGBitmapByteOrder16Big; @@ -75,7 +75,7 @@ static const CGBitmapInfo kCGBitmapByteOrder32Host = kCGBitmapByteOrder32Little; /* Return the CFTypeID for CGImageRefs. */ CG_EXTERN CFTypeID CGImageGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create an image. */ @@ -85,7 +85,7 @@ CG_EXTERN CGImageRef __nullable CGImageCreate(size_t width, size_t height, CGDataProviderRef cg_nullable provider, const CGFloat * __nullable decode, bool shouldInterpolate, CGColorRenderingIntent intent) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create an image mask. Legal values for bits per component are 1, 2, 4 and 8. * Bits per pixel must be either the same as bits per component or 8, with @@ -96,13 +96,13 @@ CG_EXTERN CGImageRef __nullable CGImageMaskCreate(size_t width, size_t height, size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, CGDataProviderRef cg_nullable provider, const CGFloat * __nullable decode, bool shouldInterpolate) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return a copy of `image'. Only the image structure itself is copied; the underlying data is not. */ CG_EXTERN CGImageRef __nullable CGImageCreateCopy(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Create an image from `source', a data provider of JPEG-encoded data. */ @@ -110,7 +110,7 @@ CG_EXTERN CGImageRef __nullable CGImageCreateWithJPEGDataProvider( CGDataProviderRef cg_nullable source, const CGFloat * __nullable decode, bool shouldInterpolate, CGColorRenderingIntent intent) - CG_AVAILABLE_STARTING(10.1, 2.0); + API_AVAILABLE(macos(10.1), ios(2.0)); /* Create an image using `source', a data provider for PNG-encoded data. */ @@ -118,7 +118,7 @@ CG_EXTERN CGImageRef __nullable CGImageCreateWithPNGDataProvider( CGDataProviderRef cg_nullable source, const CGFloat * __nullable decode, bool shouldInterpolate, CGColorRenderingIntent intent) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create an image using the data contained within the subrectangle `rect' of `image'. @@ -143,7 +143,7 @@ CG_EXTERN CGImageRef __nullable CGImageCreateWithPNGDataProvider( CG_EXTERN CGImageRef __nullable CGImageCreateWithImageInRect( CGImageRef cg_nullable image, CGRect rect) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Create a new image from `image' masked by `mask', which may be an image mask or an image. @@ -173,7 +173,7 @@ CG_EXTERN CGImageRef __nullable CGImageCreateWithImageInRect( CG_EXTERN CGImageRef __nullable CGImageCreateWithMask( CGImageRef cg_nullable image, CGImageRef cg_nullable mask) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Create a new image from `image' masked by `components', an array of 2N values { min[1], max[1], ... min[N], max[N] } where N is the number of @@ -193,7 +193,7 @@ CG_EXTERN CGImageRef __nullable CGImageCreateWithMask( CG_EXTERN CGImageRef __nullable CGImageCreateWithMaskingColors( CGImageRef cg_nullable image, const CGFloat * cg_nullable components) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Create a copy of `image', replacing the image's color space with `space'. Returns NULL if `image' is an image mask, or if the number of components @@ -202,96 +202,151 @@ CG_EXTERN CGImageRef __nullable CGImageCreateWithMaskingColors( CG_EXTERN CGImageRef __nullable CGImageCreateCopyWithColorSpace( CGImageRef cg_nullable image, CGColorSpaceRef cg_nullable space) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); + +/* Create an image with specified content headroom. ColorSpace 'space' must be an + extended color space, PQ or HLG. In case of extended color spaces, image + components must be either 16-bit or 32-bit float. In case of PQ or HLG + color spaces, 16-bit or 32-bit float image components values will be + clipped to [0.0, 1.0] range, and other bit depths will be treated as + representing [0.0, 1.0] range, same as in the 'CGImageCreate' API. + The headroom parameter must be either equal 0.0f or be greater or equal 1.0f. + When the headroom parameter is 0.0f and the color space is extended, + the image content headroom will be calculated from the image data. + When needed, the exisitng 'CGImageCreate' API will create an image with + content headroom equal 0.0f. + When the headroom parameter is 0.0f in case of PQ or HLG color spaces, + the image content headroom value will be estimated based on the color space. + When justified, kCGDefaultHDRImageContentHeadroom which is a typical content + headroom for PQ and HLG images could be used to specify the content headroom.*/ + +CG_EXTERN CGImageRef __nullable CGImageCreateWithContentHeadroom( + float headroom, + size_t width, size_t height, + size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, + CGColorSpaceRef cg_nullable space, CGBitmapInfo bitmapInfo, + CGDataProviderRef cg_nullable provider, + const CGFloat * __nullable decode, bool shouldInterpolate, + CGColorRenderingIntent intent) + API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + +/* Create a copy of `image' adding or replacing the image's content headroom. + Returns NULL if `image' is an image mask, or if original is not using + extended color space, PQ or HLG. + The headroom parameter must be either equal 0.0f or be greater or equal 1.0f. + When the headroom parameter is 0.0f and the color space is extended, + the image content headroom will be calculated from the image data. */ + +CG_EXTERN CGImageRef __nullable CGImageCreateCopyWithContentHeadroom( + float headroom, CGImageRef cg_nullable image) +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + +CG_EXTERN float kCGDefaultHDRImageContentHeadroom +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + +/* Return image content headroom */ + +CG_EXTERN float CGImageGetContentHeadroom(CGImageRef cg_nullable image) + API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* Equivalent to `CFRetain(image)'. */ CG_EXTERN CGImageRef cg_nullable CGImageRetain(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRelease(image)'. */ CG_EXTERN void CGImageRelease(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return true if `image' is an image mask, false otherwise. */ CG_EXTERN bool CGImageIsMask(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the width of `image'. */ CG_EXTERN size_t CGImageGetWidth(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the height of `image'. */ CG_EXTERN size_t CGImageGetHeight(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the number of bits/component of `image'. */ CG_EXTERN size_t CGImageGetBitsPerComponent(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the number of bits/pixel of `image'. */ CG_EXTERN size_t CGImageGetBitsPerPixel(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the number of bytes/row of `image'. */ CG_EXTERN size_t CGImageGetBytesPerRow(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the color space of `image', or NULL if `image' is an image mask. */ CG_EXTERN CGColorSpaceRef __nullable CGImageGetColorSpace(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the alpha info of `image'. */ CG_EXTERN CGImageAlphaInfo CGImageGetAlphaInfo(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the data provider of `image'. */ CG_EXTERN CGDataProviderRef __nullable CGImageGetDataProvider(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the decode array of `image'. */ CG_EXTERN const CGFloat * __nullable CGImageGetDecode(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the interpolation parameter of `image'. */ CG_EXTERN bool CGImageGetShouldInterpolate(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the rendering intent of `image'. */ CG_EXTERN CGColorRenderingIntent CGImageGetRenderingIntent(cg_nullable CGImageRef image) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the bitmap info of `image'. */ CG_EXTERN CGBitmapInfo CGImageGetBitmapInfo(CGImageRef cg_nullable image) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the byte order info of `image'. */ -CG_EXTERN CGImageByteOrderInfo CGImageGetByteOrderInfo(CGImageRef cg_nullable image) CG_AVAILABLE_STARTING(10.14, 12.0); +CG_EXTERN CGImageByteOrderInfo CGImageGetByteOrderInfo(CGImageRef cg_nullable image) API_AVAILABLE(macos(10.14), ios(12.0)); /* Return the pixel format of `image'. */ -CG_EXTERN CGImagePixelFormatInfo CGImageGetPixelFormatInfo(CGImageRef cg_nullable image) CG_AVAILABLE_STARTING(10.14, 12.0); +CG_EXTERN CGImagePixelFormatInfo CGImageGetPixelFormatInfo(CGImageRef cg_nullable image) API_AVAILABLE(macos(10.14), ios(12.0)); + +/* Return true if `image' should be tone mapped while rendering, false otherwise. + Tone mapping results depend on the receiving context. + */ + +CG_EXTERN bool CGImageShouldToneMap(CGImageRef cg_nullable image) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + +/* Return true if `image' contains image specific tone mapping metadata, false otherwise. */ + +CG_EXTERN bool CGImageContainsImageSpecificToneMappingMetadata(CGImageRef cg_nullable image) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); /* Return the UTType of `image'. */ CG_EXTERN CFStringRef __nullable CGImageGetUTType(cg_nullable CGImageRef image) - CG_AVAILABLE_STARTING(10.11, 9.0); + API_AVAILABLE(macos(10.11), ios(9.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGLayer.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGLayer.h index e7c16ba4..48991fab 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGLayer.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGLayer.h @@ -26,29 +26,29 @@ CF_ASSUME_NONNULL_BEGIN CG_EXTERN CGLayerRef __nullable CGLayerCreateWithContext( CGContextRef cg_nullable context, CGSize size, CFDictionaryRef __nullable auxiliaryInfo) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Equivalent to `CFRetain(layer)', except it doesn't crash (as CFRetain does) if `layer' is NULL. */ CG_EXTERN CGLayerRef cg_nullable CGLayerRetain(CGLayerRef cg_nullable layer) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Equivalent to `CFRelease(layer)', except it doesn't crash (as CFRelease does) if `layer' is NULL. */ CG_EXTERN void CGLayerRelease(CGLayerRef cg_nullable layer) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the size of the layer `layer'. CGSizeZero if invalid `layer'. */ CG_EXTERN CGSize CGLayerGetSize(CGLayerRef cg_nullable layer) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the context of `layer'. */ CG_EXTERN CGContextRef __nullable CGLayerGetContext(CGLayerRef cg_nullable layer) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Draw the contents of `layer' into `rect' of `context'. The contents are scaled, if necessary, to fit into `rect'; the rectangle `rect' is in user @@ -56,7 +56,7 @@ CG_EXTERN CGContextRef __nullable CGLayerGetContext(CGLayerRef cg_nullable layer CG_EXTERN void CGContextDrawLayerInRect(CGContextRef cg_nullable context, CGRect rect, CGLayerRef cg_nullable layer) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Draw the contents of `layer' at `point' in `context'. This is equivalent to calling "CGContextDrawLayerInRect" with a rectangle having origin at @@ -64,12 +64,12 @@ CG_EXTERN void CGContextDrawLayerInRect(CGContextRef cg_nullable context, CG_EXTERN void CGContextDrawLayerAtPoint(CGContextRef cg_nullable context, CGPoint point, CGLayerRef cg_nullable layer) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the CFTypeID for CGLayerRefs. */ CG_EXTERN CFTypeID CGLayerGetTypeID(void) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFArray.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFArray.h index 6bd299af..bd1771c7 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFArray.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFArray.h @@ -23,34 +23,34 @@ CF_ASSUME_NONNULL_BEGIN #/* Return the number of items in `array'. */ CG_EXTERN size_t CGPDFArrayGetCount(CGPDFArrayRef cg_nullable array) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object at `index' in `array' and return the result in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFArrayGetObject(CGPDFArrayRef cg_nullable array, size_t index, CGPDFObjectRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object at `index' in `array' and, if it's a null, return true; otherwise, return false. */ CG_EXTERN bool CGPDFArrayGetNull(CGPDFArrayRef cg_nullable array, size_t index) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object at `index' in `array' and, if it's a boolean, return the result in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFArrayGetBoolean(CGPDFArrayRef cg_nullable array, size_t index, CGPDFBoolean * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object at `index' in `array' and, if it's an integer, return the result in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFArrayGetInteger(CGPDFArrayRef cg_nullable array, size_t index, CGPDFInteger * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object at `index' in `array' and, if it's a number (real or integer), return the result in `value'. Return true on success; false @@ -58,42 +58,42 @@ CG_EXTERN bool CGPDFArrayGetInteger(CGPDFArrayRef cg_nullable array, CG_EXTERN bool CGPDFArrayGetNumber(CGPDFArrayRef cg_nullable array, size_t index, CGPDFReal * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object at `index' in `array' and, if it's a name, return the result in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFArrayGetName(CGPDFArrayRef cg_nullable array, size_t index, const char * __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object at `index' in `array' and, if it's a string, return the result in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFArrayGetString(CGPDFArrayRef cg_nullable array, size_t index, CGPDFStringRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object at `index' in `array' and, if it's an array, return it in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFArrayGetArray(CGPDFArrayRef cg_nullable array, size_t index, CGPDFArrayRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object at `index' in `array' and, if it's a dictionary, return it in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFArrayGetDictionary(CGPDFArrayRef cg_nullable array, size_t index, CGPDFDictionaryRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object at `index' in `array' and, if it's a stream, return it in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFArrayGetStream(CGPDFArrayRef cg_nullable array, size_t index, CGPDFStreamRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* The block function for `CGPDFArrayApplyBlock'. `index' is the current iterator index, `value' is the CGPDFObject at this index. If the block @@ -111,7 +111,7 @@ typedef bool (^CGPDFArrayApplierBlock)(size_t index, CG_EXTERN void CGPDFArrayApplyBlock(CGPDFArrayRef cg_nullable array, CGPDFArrayApplierBlock cg_nullable block, void * __nullable info) - CG_AVAILABLE_STARTING(10.14, 12.0); + API_AVAILABLE(macos(10.14), ios(12.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFContentStream.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFContentStream.h index 23f33492..13814b41 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFContentStream.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFContentStream.h @@ -16,37 +16,37 @@ CF_ASSUME_NONNULL_BEGIN /* Create a content stream from `page'. */ CG_EXTERN CGPDFContentStreamRef CGPDFContentStreamCreateWithPage( - CGPDFPageRef page) CG_AVAILABLE_STARTING(10.4, 2.0); + CGPDFPageRef page) API_AVAILABLE(macos(10.4), ios(2.0)); /* Create a content stream from `stream'. */ CG_EXTERN CGPDFContentStreamRef CGPDFContentStreamCreateWithStream( CGPDFStreamRef stream, CGPDFDictionaryRef streamResources, CGPDFContentStreamRef cg_nullable parent) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Increment the retain count of `cs'. */ CG_EXTERN CGPDFContentStreamRef CGPDFContentStreamRetain( - CGPDFContentStreamRef cs) CG_AVAILABLE_STARTING(10.4, 2.0); + CGPDFContentStreamRef cs) API_AVAILABLE(macos(10.4), ios(2.0)); /* Decrement the retain count of `cs'. */ CG_EXTERN void CGPDFContentStreamRelease(CGPDFContentStreamRef cs) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the array of CGPDFStreamRefs comprising the entire content stream of `cs'. */ CG_EXTERN CFArrayRef __nullable CGPDFContentStreamGetStreams(CGPDFContentStreamRef cs) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the resource named `name' in category `category' of the resource dictionaries of `cs'. */ CG_EXTERN CGPDFObjectRef __nullable CGPDFContentStreamGetResource( CGPDFContentStreamRef cs, const char *category, const char *name) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFContext.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFContext.h index 2427ee2a..efd241f9 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFContext.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFContext.h @@ -29,7 +29,7 @@ CF_ASSUME_NONNULL_BEGIN CG_EXTERN CGContextRef __nullable CGPDFContextCreate(CGDataConsumerRef cg_nullable consumer, const CGRect *__nullable mediaBox, CFDictionaryRef __nullable auxiliaryInfo) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a PDF context for writing to `url'. This function behaves in the same manner as the above function, except that the output data will be @@ -37,7 +37,7 @@ CG_EXTERN CGContextRef __nullable CGPDFContextCreate(CGDataConsumerRef cg_nullab CG_EXTERN CGContextRef __nullable CGPDFContextCreateWithURL(CFURLRef cg_nullable url, const CGRect * __nullable mediaBox, CFDictionaryRef __nullable auxiliaryInfo) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Close a PDF context. After closing the context, all pending data is written to the context's destination, and the PDF file is completed. No @@ -45,17 +45,17 @@ CG_EXTERN CGContextRef __nullable CGPDFContextCreateWithURL(CFURLRef cg_nullable closing. */ CG_EXTERN void CGPDFContextClose(CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.5, 2.0); + API_AVAILABLE(macos(10.5), ios(2.0)); /* Begin a new page in the PDF context `context'. */ CG_EXTERN void CGPDFContextBeginPage(CGContextRef cg_nullable context, - CFDictionaryRef __nullable pageInfo) CG_AVAILABLE_STARTING(10.4, 2.0); + CFDictionaryRef __nullable pageInfo) API_AVAILABLE(macos(10.4), ios(2.0)); /* End the current page in the PDF context `context'. */ CG_EXTERN void CGPDFContextEndPage(CGContextRef cg_nullable context) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Add the metadata stream specified by `metadata' to the document catalog of `context', as described in Table 3.25, "Entries in the catalog @@ -65,25 +65,31 @@ CG_EXTERN void CGPDFContextEndPage(CGContextRef cg_nullable context) specification. */ CG_EXTERN void CGPDFContextAddDocumentMetadata(CGContextRef cg_nullable context, - CFDataRef __nullable metadata) CG_AVAILABLE_STARTING(10.7, 4.0); + CFDataRef __nullable metadata) API_AVAILABLE(macos(10.7), ios(4.0)); + +CG_EXTERN void CGPDFContextSetParentTree(CGContextRef cg_nullable context, CGPDFDictionaryRef parentTreeDictionary); + +CG_EXTERN void CGPDFContextSetIDTree(CGContextRef cg_nullable context, CGPDFDictionaryRef IDTreeDictionary); + +CG_EXTERN void CGPDFContextSetPageTagStructureTree(CGContextRef cg_nullable context, CFDictionaryRef pageTagStructureTreeDictionary); /* Set the URL associated with `rect' to `url' in the PDF context `context'. */ CG_EXTERN void CGPDFContextSetURLForRect(CGContextRef cg_nullable context, CFURLRef url, - CGRect rect) CG_AVAILABLE_STARTING(10.4, 2.0); + CGRect rect) API_AVAILABLE(macos(10.4), ios(2.0)); /* Create a PDF destination named `name' at `point' in the current page of the PDF context `context'. */ CG_EXTERN void CGPDFContextAddDestinationAtPoint(CGContextRef cg_nullable context, - CFStringRef name, CGPoint point) CG_AVAILABLE_STARTING(10.4, 2.0); + CFStringRef name, CGPoint point) API_AVAILABLE(macos(10.4), ios(2.0)); /* Specify a destination named `name' to jump to when clicking in `rect' of the current page of the PDF context `context'. */ CG_EXTERN void CGPDFContextSetDestinationForRect(CGContextRef cg_nullable context, - CFStringRef name, CGRect rect) CG_AVAILABLE_STARTING(10.4, 2.0); + CFStringRef name, CGRect rect) API_AVAILABLE(macos(10.4), ios(2.0)); /*** Keys for the auxiliary info dictionary or the page info dictionary. ***/ @@ -92,48 +98,48 @@ CG_EXTERN void CGPDFContextSetDestinationForRect(CGContextRef cg_nullable contex value, not by reference). */ CG_EXTERN const CFStringRef kCGPDFContextMediaBox - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* The crop box for the document or for a given page. Optional; if present, the value of this key must be a CFData containing a CGRect (stored by value, not by reference). */ -CG_EXTERN const CFStringRef kCGPDFContextCropBox CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextCropBox API_AVAILABLE(macos(10.4), ios(2.0)); /* The bleed box for the document or for a given page. Optional; if present, the value of this key must be a CFData containing a CGRect (stored by value, not by reference). */ -CG_EXTERN const CFStringRef kCGPDFContextBleedBox CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextBleedBox API_AVAILABLE(macos(10.4), ios(2.0)); /* The trim box for the document or for a given page. Optional; if present, the value of this key must be a CFData containing a CGRect (stored by value, not by reference). */ -CG_EXTERN const CFStringRef kCGPDFContextTrimBox CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextTrimBox API_AVAILABLE(macos(10.4), ios(2.0)); /* The art box for the document or for a given page. Optional; if present, the value of this key must be a CFData containing a CGRect (stored by value, not by reference). */ -CG_EXTERN const CFStringRef kCGPDFContextArtBox CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextArtBox API_AVAILABLE(macos(10.4), ios(2.0)); /*** Keys for auxiliary info dictionary. ***/ /* The document's title. Optional; if present, the value of this key must be a CFString. */ -CG_EXTERN const CFStringRef kCGPDFContextTitle CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextTitle API_AVAILABLE(macos(10.4), ios(2.0)); /* The name of the person who created this document. Optional; if present, the value of this key must be a CFString. */ -CG_EXTERN const CFStringRef kCGPDFContextAuthor CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextAuthor API_AVAILABLE(macos(10.4), ios(2.0)); /* The subject of a document. Optional; if present, the value of this key must be a CFString. */ -CG_EXTERN const CFStringRef kCGPDFContextSubject CG_AVAILABLE_STARTING(10.5, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextSubject API_AVAILABLE(macos(10.5), ios(2.0)); /* The keywords for this document. This key is optional. If the value of this key is a CFString, the /Keywords entry will be the specified string. @@ -145,13 +151,13 @@ CG_EXTERN const CFStringRef kCGPDFContextSubject CG_AVAILABLE_STARTING(10.5, 2. strings. The value of this key must be in one of the above forms; otherwise, this key is ignored. */ -CG_EXTERN const CFStringRef kCGPDFContextKeywords CG_AVAILABLE_STARTING(10.5, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextKeywords API_AVAILABLE(macos(10.5), ios(2.0)); /* The name of the application that created the original data used to create this document. Optional; if present, the value of this key must be a CFString. */ -CG_EXTERN const CFStringRef kCGPDFContextCreator CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextCreator API_AVAILABLE(macos(10.4), ios(2.0)); /* The "owner password" of the PDF document. If this key is specified, the document will be encrypted using the value as the owner password; @@ -163,7 +169,7 @@ CG_EXTERN const CFStringRef kCGPDFContextCreator CG_AVAILABLE_STARTING(10.4, 2. If the value of this key cannot be represented in ASCII, the document will not be created and the creation function will return NULL. */ -CG_EXTERN const CFStringRef kCGPDFContextOwnerPassword CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextOwnerPassword API_AVAILABLE(macos(10.4), ios(2.0)); /* The "user password" of the PDF document. If the document is encrypted, then the value of this key will be the user password for the document; if @@ -174,7 +180,7 @@ CG_EXTERN const CFStringRef kCGPDFContextOwnerPassword CG_AVAILABLE_STARTING(10 If the value of this key cannot be represented in ASCII, the document will not be created and the creation function will return NULL. */ -CG_EXTERN const CFStringRef kCGPDFContextUserPassword CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextUserPassword API_AVAILABLE(macos(10.4), ios(2.0)); /* Specifies the encryption key length in bits; see Table 3.18 "Entries common to all encryption dictionaries", PDF Reference: Adobe PDF version @@ -183,19 +189,19 @@ CG_EXTERN const CFStringRef kCGPDFContextUserPassword CG_AVAILABLE_STARTING(10. 128, inclusive. If this key is absent or invalid, the encryption key length defaults to 40 bits. */ -CG_EXTERN const CFStringRef kCGPDFContextEncryptionKeyLength CG_AVAILABLE_STARTING(10.5, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextEncryptionKeyLength API_AVAILABLE(macos(10.5), ios(2.0)); /* Used to specify whether the document allows printing when unlocked with the user password. The value of this key must be a CFBooleanRef. The default value of this key is "kCFBooleanTrue". */ -CG_EXTERN const CFStringRef kCGPDFContextAllowsPrinting CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextAllowsPrinting API_AVAILABLE(macos(10.4), ios(2.0)); /* Used to specify whether the document allows copying when unlocked with the user password. The value of this key must be a CFBooleanRef. The default value of this key is "kCFBooleanTrue". */ -CG_EXTERN const CFStringRef kCGPDFContextAllowsCopying CG_AVAILABLE_STARTING(10.4, 2.0); +CG_EXTERN const CFStringRef kCGPDFContextAllowsCopying API_AVAILABLE(macos(10.4), ios(2.0)); /* The document's PDF/X output intent. Optional; if present, the value of this key must be a CFDictionaryRef. The dictionary is added to the @@ -204,7 +210,7 @@ CG_EXTERN const CFStringRef kCGPDFContextAllowsCopying CG_AVAILABLE_STARTING(10 9.10.4 of the PDF 1.4 specification, ISO/DIS 15930-3 document published by ISO/TC 130, and Adobe Technical Note #5413. */ -CG_EXTERN const CFStringRef kCGPDFContextOutputIntent CG_AVAILABLE_STARTING(10.4, 14.0); +CG_EXTERN const CFStringRef kCGPDFContextOutputIntent API_AVAILABLE(macos(10.4), ios(14.0)); /* The following keys are supported in the output intent dictionary: @@ -212,7 +218,7 @@ CG_EXTERN const CFStringRef kCGPDFContextOutputIntent CG_AVAILABLE_STARTING(10. required; the value of this key must be a CFString equal to "GTS_PDFX"; otherwise, the dictionary is ignored. */ -CG_EXTERN const CFStringRef kCGPDFXOutputIntentSubtype CG_AVAILABLE_STARTING(10.4, 14.0); +CG_EXTERN const CFStringRef kCGPDFXOutputIntentSubtype API_AVAILABLE(macos(10.4), ios(14.0)); /* kCGPDFXOutputConditionIdentifier ("OutputConditionIdentifier"): A string identifying the intended output device or production condition in a @@ -220,14 +226,14 @@ CG_EXTERN const CFStringRef kCGPDFXOutputIntentSubtype CG_AVAILABLE_STARTING(10 key must be a CFString. For best results, the string should be representable losslessly in ASCII encoding. */ -CG_EXTERN const CFStringRef kCGPDFXOutputConditionIdentifier CG_AVAILABLE_STARTING(10.4, 14.0); +CG_EXTERN const CFStringRef kCGPDFXOutputConditionIdentifier API_AVAILABLE(macos(10.4), ios(14.0)); /* kCGPDFXOutputCondition ("OutputCondition"): A text string identifying the intended output device or production condition in a human-readable form. This key is optional; if present, the value of this key must be a CFString. */ -CG_EXTERN const CFStringRef kCGPDFXOutputCondition CG_AVAILABLE_STARTING(10.4, 14.0); +CG_EXTERN const CFStringRef kCGPDFXOutputCondition API_AVAILABLE(macos(10.4), ios(14.0)); /* kCGPDFXRegistryName ("RegistryName"): A string identifying the registry in which the condition designated by `kCGPDFXOutputConditionIdentifier' @@ -235,7 +241,7 @@ CG_EXTERN const CFStringRef kCGPDFXOutputCondition CG_AVAILABLE_STARTING(10.4, be a CFString. For best results, the string should be representable losslessly in ASCII encoding. */ -CG_EXTERN const CFStringRef kCGPDFXRegistryName CG_AVAILABLE_STARTING(10.4, 14.0); +CG_EXTERN const CFStringRef kCGPDFXRegistryName API_AVAILABLE(macos(10.4), ios(14.0)); /* kCGPDFXInfo ("Info"): A human-readable text string containing additional information about the intended target device or production condition. @@ -243,7 +249,7 @@ CG_EXTERN const CFStringRef kCGPDFXRegistryName CG_AVAILABLE_STARTING(10.4, 14. does not specify a standard production condition; it is optional otherwise. If present, the value of this key must be a CFString. */ -CG_EXTERN const CFStringRef kCGPDFXInfo CG_AVAILABLE_STARTING(10.4, 14.0); +CG_EXTERN const CFStringRef kCGPDFXInfo API_AVAILABLE(macos(10.4), ios(14.0)); /* kCGPDFXDestinationOutputProfile ("DestOutputProfile"): An ICC profile stream defining the transformation from the PDF document's source colors @@ -252,7 +258,7 @@ CG_EXTERN const CFStringRef kCGPDFXInfo CG_AVAILABLE_STARTING(10.4, 14.0); condition; it is optional otherwise. If present, the value of this key must be a ICC-based CGColorSpaceRef. */ -CG_EXTERN const CFStringRef kCGPDFXDestinationOutputProfile CG_AVAILABLE_STARTING(10.4, 14.0); +CG_EXTERN const CFStringRef kCGPDFXDestinationOutputProfile API_AVAILABLE(macos(10.4), ios(14.0)); /* The document's output intents. Optional; if present, the value must be a CFArrayRef containing one or more CFDictionaryRefs. The array is added to @@ -264,27 +270,27 @@ CG_EXTERN const CFStringRef kCGPDFXDestinationOutputProfile CG_AVAILABLE_STARTI and `kCGPDFContextOutputIntents' keys are specified, the former is ignored. */ -CG_EXTERN const CFStringRef kCGPDFContextOutputIntents CG_AVAILABLE_STARTING(10.4, 14.0); +CG_EXTERN const CFStringRef kCGPDFContextOutputIntents API_AVAILABLE(macos(10.4), ios(14.0)); /* The document's access permissions, expressed as a CFNumber. The number is defined by ORing together the desired CGPDFAccessPermissions values. */ -CG_EXTERN const CFStringRef kCGPDFContextAccessPermissions CG_AVAILABLE_STARTING(10.13, 11.0); +CG_EXTERN const CFStringRef kCGPDFContextAccessPermissions API_AVAILABLE(macos(10.13), ios(11.0)); /* Set the outline in the PDF created by a CGPDFContext (no effect in other types of CGContexts). */ CG_EXTERN void CGPDFContextSetOutline(CGContextRef context, __nullable CFDictionaryRef outline) - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); /* Output a linearized PDF */ CG_EXTERN const CFStringRef kCGPDFContextCreateLinearizedPDF - CG_AVAILABLE_STARTING(11.0, 14.0); + API_AVAILABLE(macos(11.0), ios(14.0)); /* Output a PDF that conforms to PDF/A-2u (ISO 19005-2). The value of this key must be a CFBooleanRef. The default value of this key is "kCFBooleanFalse". */ -CG_EXTERN const CFStringRef kCGPDFContextCreatePDFA CG_AVAILABLE_STARTING(11.0, 14.0); +CG_EXTERN const CFStringRef kCGPDFContextCreatePDFA API_AVAILABLE(macos(11.0), ios(14.0)); /* Tagged PDF Authoring */ @@ -372,11 +378,15 @@ typedef CF_ENUM (int32_t, CGPDFTagType) { CGPDFTagTypeFigure = 700, CGPDFTagTypeFormula, CGPDFTagTypeForm, -} CG_AVAILABLE_STARTING(10.15, 13.0); + + /* Page , TABLE 10.12 Type for object reference*/ + CGPDFTagTypeObject = 800 + +} API_AVAILABLE(macos(10.15), ios(13.0)); /* For a given CGPDFTagType, return a C-string that matches the names defined in section 10.7.3: Standard Structure Types. These are defined on pages 899 - 912. Returns NULL for an unknown value. */ -CG_EXTERN const char* cg_nullable CGPDFTagTypeGetName(CGPDFTagType tagType) CG_AVAILABLE_STARTING(10.15, 13.0); +CG_EXTERN const char* cg_nullable CGPDFTagTypeGetName(CGPDFTagType tagType) API_AVAILABLE(macos(10.15), ios(13.0)); /* The following CGPDFTagProperty keys are to be paired with CFStringRef values in CGPDFContextBeginTag(...)'s optional tagProperties dictionary. These key-value pairs @@ -389,23 +399,23 @@ typedef CFStringRef CGPDFTagProperty CF_TYPED_ENUM; "...useful when extracting the document’s contents in support of accessibility..." This can be used to more precisely control what string is extracted by a user when they copy and paste from a document. */ -CG_EXTERN const CGPDFTagProperty _Nonnull kCGPDFTagPropertyActualText CG_AVAILABLE_STARTING(10.15, 13.0); +CG_EXTERN const CGPDFTagProperty _Nonnull kCGPDFTagPropertyActualText API_AVAILABLE(macos(10.15), ios(13.0)); /* Alternative text, defined on page 860: "An alternate description of the structure element and its children in human-readable form". This is typically used for graphical content, like an image. */ -CG_EXTERN const CGPDFTagProperty _Nonnull kCGPDFTagPropertyAlternativeText CG_AVAILABLE_STARTING(10.15, 13.0); +CG_EXTERN const CGPDFTagProperty _Nonnull kCGPDFTagPropertyAlternativeText API_AVAILABLE(macos(10.15), ios(13.0)); /* Title, defined on page 859: Title of the node in a human-readable form. This should *not* be used for accessibility, but can be useful when presenting the structure of a tagged node tree. */ -CG_EXTERN const CGPDFTagProperty _Nonnull kCGPDFTagPropertyTitleText CG_AVAILABLE_STARTING(10.15, 13.0); +CG_EXTERN const CGPDFTagProperty _Nonnull kCGPDFTagPropertyTitleText API_AVAILABLE(macos(10.15), ios(13.0)); /* Language of text content, defined on page 860: Typically you should use the document's catalog to get its language, but if a section of text is not the same language as the document, this may be set and allow you to look at what language it is hinting at. */ -CG_EXTERN const CGPDFTagProperty _Nonnull kCGPDFTagPropertyLanguageText CG_AVAILABLE_STARTING(10.15, 13.0); +CG_EXTERN const CGPDFTagProperty _Nonnull kCGPDFTagPropertyLanguageText API_AVAILABLE(macos(10.15), ios(13.0)); /* General usage of CGPDFContextBeginTag(...) and CGPDFContextEndTag(...): @@ -431,11 +441,11 @@ CG_EXTERN const CGPDFTagProperty _Nonnull kCGPDFTagPropertyLanguageText CG_AVAIL or explicitly declare what language the text is in. All child-tags (tags pushed on top of other tags) will inherit their parent tag's properties. */ CG_EXTERN void CGPDFContextBeginTag(CGContextRef _Nonnull context, CGPDFTagType tagType, CFDictionaryRef cg_nullable tagProperties) - CG_AVAILABLE_STARTING(10.15, 13.0); + API_AVAILABLE(macos(10.15), ios(13.0)); /* Pop the current tag. Sets the current tag to the previous tag on the tag-stack. If there was no previous tag, then the current tag will be set to the root document tag (of type CGPDFTagTypeDocument). */ -CG_EXTERN void CGPDFContextEndTag(CGContextRef _Nonnull context) CG_AVAILABLE_STARTING(10.15, 13.0); +CG_EXTERN void CGPDFContextEndTag(CGContextRef _Nonnull context) API_AVAILABLE(macos(10.15), ios(13.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFDictionary.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFDictionary.h index 94d51f6d..7d920df3 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFDictionary.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFDictionary.h @@ -23,14 +23,14 @@ CF_ASSUME_NONNULL_BEGIN /* Return the number of entries in `dictionary'. */ CG_EXTERN size_t CGPDFDictionaryGetCount(CGPDFDictionaryRef cg_nullable dict) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object associated with `key' in `dict' and return the result in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFDictionaryGetObject(CGPDFDictionaryRef cg_nullable dict, const char * key, CGPDFObjectRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object associated with `key' in `dict' and, if it's a boolean, return the result in `value'. Return true on success; false @@ -38,7 +38,7 @@ CG_EXTERN bool CGPDFDictionaryGetObject(CGPDFDictionaryRef cg_nullable dict, CG_EXTERN bool CGPDFDictionaryGetBoolean(CGPDFDictionaryRef cg_nullable dict, const char * key, CGPDFBoolean * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object associated with `key' in `dict' and, if it's an integer, return the result in `value'. Return true on success; false @@ -46,7 +46,7 @@ CG_EXTERN bool CGPDFDictionaryGetBoolean(CGPDFDictionaryRef cg_nullable dict, CG_EXTERN bool CGPDFDictionaryGetInteger(CGPDFDictionaryRef cg_nullable dict, const char * key, CGPDFInteger * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object associated with `key' in `dict' and, if it's a number (real or integer), return the result in `value'. Return true on success; @@ -54,28 +54,28 @@ CG_EXTERN bool CGPDFDictionaryGetInteger(CGPDFDictionaryRef cg_nullable dict, CG_EXTERN bool CGPDFDictionaryGetNumber(CGPDFDictionaryRef cg_nullable dict, const char * key, CGPDFReal * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object associated with `key' in `dict' and, if it's a name, return the result in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFDictionaryGetName(CGPDFDictionaryRef cg_nullable dict, const char * key, const char * __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object associated with `key' in `dict' and, if it's a string, return the result in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFDictionaryGetString(CGPDFDictionaryRef cg_nullable dict, const char * key, CGPDFStringRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object associated with `key' in `dict' and, if it's an array, return the result in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFDictionaryGetArray(CGPDFDictionaryRef cg_nullable dict, const char * key, CGPDFArrayRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object associated with `key' in `dict' and, if it's a dictionary, return the result in `value'. Return true on success; false @@ -83,14 +83,14 @@ CG_EXTERN bool CGPDFDictionaryGetArray(CGPDFDictionaryRef cg_nullable dict, CG_EXTERN bool CGPDFDictionaryGetDictionary(CGPDFDictionaryRef cg_nullable dict, const char * key, CGPDFDictionaryRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Look up the object associated with `key' in `dict' and, if it's a stream, return the result in `value'. Return true on success; false otherwise. */ CG_EXTERN bool CGPDFDictionaryGetStream(CGPDFDictionaryRef cg_nullable dict, const char * key, CGPDFStreamRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* The callback for `CGPDFDictionaryApplyFunction'. `key' is the current key, `value' is the value for `key', and `info' is the parameter passed @@ -105,7 +105,7 @@ typedef void (*CGPDFDictionaryApplierFunction)(const char * key, CG_EXTERN void CGPDFDictionaryApplyFunction(CGPDFDictionaryRef cg_nullable dict, CGPDFDictionaryApplierFunction cg_nullable function, void * __nullable info) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* The block function for `CGPDFDictionaryApplyBlock'. `key' is the current key, `value' is the value for `key', and `info' is the parameter passed @@ -124,7 +124,7 @@ typedef bool (^CGPDFDictionaryApplierBlock)(const char * key, CG_EXTERN void CGPDFDictionaryApplyBlock(CGPDFDictionaryRef cg_nullable dict, CGPDFDictionaryApplierBlock cg_nullable block, void * __nullable info) - CG_AVAILABLE_STARTING(10.14, 12.0); + API_AVAILABLE(macos(10.14), ios(12.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFDocument.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFDocument.h index 77c13ff9..b43afdec 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFDocument.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFDocument.h @@ -67,53 +67,53 @@ typedef CF_OPTIONS(uint32_t, CGPDFAccessPermissions) { /* Key: kCGPDFOutlineTitle */ /* Value: CFString */ CG_EXTERN const CFStringRef kCGPDFOutlineTitle - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); /* Key: kCGPDFOutlineChildren */ /* Value: CFArray of CFDictionaries */ CG_EXTERN const CFStringRef kCGPDFOutlineChildren - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); /* Key: kCGPDFOutlineDestination */ /* Value: CFNumber (for a one-indexed page number) or CFURL */ CG_EXTERN const CFStringRef kCGPDFOutlineDestination - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); /* Key: kCGPDFOutlineDestinationRect */ /* Value: CFDictionary from CGRectCreateDictionaryRepresentation. Only valid when the destination is a page number. */ CG_EXTERN const CFStringRef kCGPDFOutlineDestinationRect - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); /* Create a PDF document, using `provider' to obtain the document's data. */ CG_EXTERN CGPDFDocumentRef __nullable CGPDFDocumentCreateWithProvider( CGDataProviderRef cg_nullable provider) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Create a PDF document from `url'. */ CG_EXTERN CGPDFDocumentRef __nullable CGPDFDocumentCreateWithURL( CFURLRef cg_nullable url) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRetain(document)', except it doesn't crash (as CFRetain does) if `document' is NULL. */ CG_EXTERN CGPDFDocumentRef cg_nullable CGPDFDocumentRetain( CGPDFDocumentRef cg_nullable document) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRelease(document)', except it doesn't crash (as CFRelease does) if `document' is NULL. */ CG_EXTERN void CGPDFDocumentRelease(CGPDFDocumentRef cg_nullable document) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the major and minor version numbers of `document'. */ CG_EXTERN void CGPDFDocumentGetVersion(CGPDFDocumentRef cg_nullable document, int * majorVersion, int * minorVersion) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return true if the PDF file associated with `document' is encrypted; false otherwise. If the PDF file is encrypted, then a password must be @@ -121,7 +121,7 @@ CG_EXTERN void CGPDFDocumentGetVersion(CGPDFDocumentRef cg_nullable document, enable different operations. */ CG_EXTERN bool CGPDFDocumentIsEncrypted(CGPDFDocumentRef cg_nullable document) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Use `password' to decrypt `document' and grant permission for certain operations. Returns true if `password' is a valid password; false @@ -129,14 +129,14 @@ CG_EXTERN bool CGPDFDocumentIsEncrypted(CGPDFDocumentRef cg_nullable document) CG_EXTERN bool CGPDFDocumentUnlockWithPassword( CGPDFDocumentRef cg_nullable document, const char * password) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return true if `document' is unlocked; false otherwise. A document is unlocked if it isn't encrypted, or if it is encrypted and a valid password was specified with `CGPDFDocumentUnlockWithPassword'. */ CG_EXTERN bool CGPDFDocumentIsUnlocked(CGPDFDocumentRef cg_nullable document) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return true if `document' allows printing; false otherwise. Typically, this function returns false only if the document is encrypted and the @@ -144,7 +144,7 @@ CG_EXTERN bool CGPDFDocumentIsUnlocked(CGPDFDocumentRef cg_nullable document) printing. */ CG_EXTERN bool CGPDFDocumentAllowsPrinting(CGPDFDocumentRef cg_nullable document) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return true if `document' allows copying; false otherwise. Typically, this function returns false only if the document is encrypted and the @@ -152,53 +152,53 @@ CG_EXTERN bool CGPDFDocumentAllowsPrinting(CGPDFDocumentRef cg_nullable document copying. */ CG_EXTERN bool CGPDFDocumentAllowsCopying(CGPDFDocumentRef cg_nullable document) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the number of pages in `document'. */ CG_EXTERN size_t CGPDFDocumentGetNumberOfPages( CGPDFDocumentRef cg_nullable document) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Return the page corresponding to `pageNumber', or NULL if no such page exists in the document. Pages are numbered starting at 1. */ CG_EXTERN CGPDFPageRef __nullable CGPDFDocumentGetPage( CGPDFDocumentRef cg_nullable document, size_t pageNumber) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the document catalog of `document'. */ CG_EXTERN CGPDFDictionaryRef __nullable CGPDFDocumentGetCatalog( CGPDFDocumentRef cg_nullable document) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the info dictionary of `document'. */ CG_EXTERN CGPDFDictionaryRef __nullable CGPDFDocumentGetInfo( CGPDFDocumentRef cg_nullable document) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the "file identifier" array of `document'. */ CG_EXTERN CGPDFArrayRef __nullable CGPDFDocumentGetID( CGPDFDocumentRef cg_nullable document) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the CFTypeID for CGPDFDocumentRefs. */ CG_EXTERN CFTypeID CGPDFDocumentGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the document outline in the form of a CFDictionary tree containing the kCGPDFOutline keys. */ CG_EXTERN __nullable CFDictionaryRef CGPDFDocumentGetOutline(CGPDFDocumentRef document) - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); /* Return the document access permissions. */ CG_EXTERN CGPDFAccessPermissions CGPDFDocumentGetAccessPermissions(CGPDFDocumentRef document) - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); /* The following functions are deprecated in favor of the CGPDFPage API. */ @@ -207,7 +207,7 @@ CG_EXTERN CGPDFAccessPermissions CGPDFDocumentGetAccessPermissions(CGPDFDocument CG_EXTERN CGRect CGPDFDocumentGetMediaBox(CGPDFDocumentRef cg_nullable document, int page) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.5) CG_UNAVAILABLE_EMBEDDED; + API_DEPRECATED("No longer supported", macos(10.0,10.5)) API_UNAVAILABLE(ios, tvos, watchos); /* DEPRECATED; return the crop box of page number `page' in `document'. CGRectNull is returned if cannot find `page' in `document'. */ @@ -215,35 +215,35 @@ CG_EXTERN CGRect CGPDFDocumentGetMediaBox(CGPDFDocumentRef cg_nullable document, CG_EXTERN CGRect CGPDFDocumentGetCropBox(CGPDFDocumentRef cg_nullable document, int page) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.5) CG_UNAVAILABLE_EMBEDDED; + API_DEPRECATED("No longer supported", macos(10.0,10.5)) API_UNAVAILABLE(ios, tvos, watchos); /* DEPRECATED; return the bleed box of page number `page' in `document'. CGRectNull is returned if cannot find `page' in `document'. */ CG_EXTERN CGRect CGPDFDocumentGetBleedBox(CGPDFDocumentRef cg_nullable document, int page) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.5) CG_UNAVAILABLE_EMBEDDED; + API_DEPRECATED("No longer supported", macos(10.0,10.5)) API_UNAVAILABLE(ios, tvos, watchos); /* DEPRECATED; return the trim box of page number `page' in `document'. CGRectNull is returned if cannot find `page' in `document'. */ CG_EXTERN CGRect CGPDFDocumentGetTrimBox(CGPDFDocumentRef cg_nullable document, int page) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.5) CG_UNAVAILABLE_EMBEDDED; + API_DEPRECATED("No longer supported", macos(10.0,10.5)) API_UNAVAILABLE(ios, tvos, watchos); /* DEPRECATED; return the art box of page number `page' in `document'. CGRectNull is returned if cannot find `page' in `document'. */ CG_EXTERN CGRect CGPDFDocumentGetArtBox(CGPDFDocumentRef cg_nullable document, int page) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.5) CG_UNAVAILABLE_EMBEDDED; + API_DEPRECATED("No longer supported", macos(10.0,10.5)) API_UNAVAILABLE(ios, tvos, watchos); /* DEPRECATED; return the rotation angle (in degrees) of page number `page' in `document'. 0 if if cannot find `page' in `document'.*/ CG_EXTERN int CGPDFDocumentGetRotationAngle(CGPDFDocumentRef cg_nullable document, int page) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.5) CG_UNAVAILABLE_EMBEDDED; + API_DEPRECATED("No longer supported", macos(10.0,10.5)) API_UNAVAILABLE(ios, tvos, watchos); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFObject.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFObject.h index 231b8fd6..5ac284fe 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFObject.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFObject.h @@ -47,7 +47,7 @@ typedef CF_ENUM (int32_t, CGPDFObjectType) { /* Return the type of `object'. */ CG_EXTERN CGPDFObjectType CGPDFObjectGetType(CGPDFObjectRef cg_nullable object) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Get the value of `object'. If the type of `object' is equal to `type', then copy the value of `object' to `value' (if it's non-NULL) and return @@ -58,7 +58,7 @@ CG_EXTERN CGPDFObjectType CGPDFObjectGetType(CGPDFObjectRef cg_nullable object) CG_EXTERN bool CGPDFObjectGetValue(CGPDFObjectRef cg_nullable object, CGPDFObjectType type, void * __nullable value) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFOperatorTable.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFOperatorTable.h index 35fce85b..7a895c8c 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFOperatorTable.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFOperatorTable.h @@ -23,26 +23,26 @@ typedef void (*CGPDFOperatorCallback)(CGPDFScannerRef scanner, /* Return an empty operator table. */ CG_EXTERN CGPDFOperatorTableRef __nullable CGPDFOperatorTableCreate(void) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Increment the retain count of `table'. */ CG_EXTERN CGPDFOperatorTableRef cg_nullable CGPDFOperatorTableRetain( CGPDFOperatorTableRef cg_nullable table) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Decrement the retain count of `table'. */ CG_EXTERN void CGPDFOperatorTableRelease( CGPDFOperatorTableRef cg_nullable table) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Set the callback for the operator named `name' to `callback' */ CG_EXTERN void CGPDFOperatorTableSetCallback( CGPDFOperatorTableRef cg_nullable table, const char * cg_nullable name, CGPDFOperatorCallback cg_nullable callback) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFPage.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFPage.h index e3e2c64c..e6dee916 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFPage.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFPage.h @@ -31,24 +31,24 @@ typedef CF_ENUM (int32_t, CGPDFBox) { does) if `page' is NULL. */ CG_EXTERN CGPDFPageRef __nullable CGPDFPageRetain(CGPDFPageRef cg_nullable page) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Equivalent to `CFRelease(page)', except it doesn't crash (as CFRelease does) if `page' is NULL. */ CG_EXTERN void CGPDFPageRelease(CGPDFPageRef cg_nullable page) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the document of `page'. */ CG_EXTERN CGPDFDocumentRef __nullable CGPDFPageGetDocument( CGPDFPageRef cg_nullable page) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the page number of `page'. */ CG_EXTERN size_t CGPDFPageGetPageNumber(CGPDFPageRef cg_nullable page) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the rectangle associated with `box' in `page'. This is the value of the corresponding entry (such as /MediaBox, /ArtBox, and so on) in the @@ -56,14 +56,14 @@ CG_EXTERN size_t CGPDFPageGetPageNumber(CGPDFPageRef cg_nullable page) or `box' is not a valid CGPDFBox. */ CG_EXTERN CGRect CGPDFPageGetBoxRect(CGPDFPageRef cg_nullable page, CGPDFBox box) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the rotation angle (in degrees) of `page'. This is the value of the /Rotate entry in the page's dictionary. Return 0 if `page' is not a valid CGPDFPageRef. */ CG_EXTERN int CGPDFPageGetRotationAngle(CGPDFPageRef cg_nullable page) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return a transform mapping the box specified by `box' to `rect' as follows: @@ -81,18 +81,18 @@ CG_EXTERN int CGPDFPageGetRotationAngle(CGPDFPageRef cg_nullable page) CG_EXTERN CGAffineTransform CGPDFPageGetDrawingTransform( CGPDFPageRef cg_nullable page, CGPDFBox box, CGRect rect, int rotate, bool preserveAspectRatio) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the dictionary of `page'. */ CG_EXTERN CGPDFDictionaryRef __nullable CGPDFPageGetDictionary( CGPDFPageRef cg_nullable page) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the CFTypeID for CGPDFPageRefs. */ CG_EXTERN CFTypeID CGPDFPageGetTypeID(void) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFScanner.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFScanner.h index 97f389a6..60df11ee 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFScanner.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFScanner.h @@ -23,79 +23,79 @@ CF_ASSUME_NONNULL_BEGIN CG_EXTERN CGPDFScannerRef CGPDFScannerCreate( CGPDFContentStreamRef cs, CGPDFOperatorTableRef __nullable table, void * __nullable info) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Retain `scanner'. */ CG_EXTERN CGPDFScannerRef cg_nullable CGPDFScannerRetain( CGPDFScannerRef cg_nullable scanner) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Release `scanner'. */ CG_EXTERN void CGPDFScannerRelease(CGPDFScannerRef cg_nullable scanner) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Scan the content stream of `scanner'. Returns true if the entire stream was scanned successfully; false if scanning failed for some reason (for example, if the stream's data is corrupted). */ CG_EXTERN bool CGPDFScannerScan(CGPDFScannerRef cg_nullable scanner) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Return the content stream associated with `scanner'. */ CG_EXTERN CGPDFContentStreamRef CGPDFScannerGetContentStream( CGPDFScannerRef scanner) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Pop an object from the stack of `scanner' and return it in `value'. */ CG_EXTERN bool CGPDFScannerPopObject(CGPDFScannerRef scanner, CGPDFObjectRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Pop an object from the stack of `scanner' and, if it's a boolean, return it in `value'. Return false if the top of the stack isn't a boolean. */ CG_EXTERN bool CGPDFScannerPopBoolean(CGPDFScannerRef scanner, CGPDFBoolean * __nullable value) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Pop an object from the stack of `scanner' and, if it's an integer, return it in `value'. Return false if the top of the stack isn't an integer. */ CG_EXTERN bool CGPDFScannerPopInteger(CGPDFScannerRef scanner, CGPDFInteger * __nullable value) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Pop an object from the stack of `scanner' and, if it's a number, return it in `value'. Return false if the top of the stack isn't a number. */ CG_EXTERN bool CGPDFScannerPopNumber(CGPDFScannerRef scanner, CGPDFReal * __nullable value) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Pop an object from the stack of `scanner' and, if it's a name, return it in `value'. Return false if the top of the stack isn't a name. */ CG_EXTERN bool CGPDFScannerPopName(CGPDFScannerRef scanner, const char * __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Pop an object from the stack of `scanner' and, if it's a string, return it in `value'. Return false if the top of the stack isn't a string. */ CG_EXTERN bool CGPDFScannerPopString(CGPDFScannerRef scanner, CGPDFStringRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Pop an object from the stack of `scanner' and, if it's an array, return it in `value'. Return false if the top of the stack isn't an array. */ CG_EXTERN bool CGPDFScannerPopArray(CGPDFScannerRef scanner, CGPDFArrayRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Pop an object from the stack of `scanner' and, if it's a dictionary, return it in `value'. Return false if the top of the stack isn't a @@ -103,14 +103,14 @@ CG_EXTERN bool CGPDFScannerPopArray(CGPDFScannerRef scanner, CG_EXTERN bool CGPDFScannerPopDictionary(CGPDFScannerRef scanner, CGPDFDictionaryRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Pop an object from the stack of `scanner' and, if it's a stream, return it in `value'. Return false if the top of the stack isn't a stream. */ CG_EXTERN bool CGPDFScannerPopStream(CGPDFScannerRef scanner, CGPDFStreamRef __nullable * __nullable value) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Cleanly stop the scanner on the current operator, releasing any temporary resources. */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFStream.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFStream.h index 70062502..e33f50fe 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFStream.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFStream.h @@ -28,14 +28,14 @@ CF_ASSUME_NONNULL_BEGIN CG_EXTERN CGPDFDictionaryRef __nullable CGPDFStreamGetDictionary( CGPDFStreamRef cg_nullable stream) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return the data of `stream'. */ CG_EXTERN CFDataRef __nullable CGPDFStreamCopyData( CGPDFStreamRef cg_nullable stream, CGPDFDataFormat * cg_nullable format) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFString.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFString.h index 5799bfb5..a5eb9061 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFString.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPDFString.h @@ -22,13 +22,13 @@ CF_ASSUME_NONNULL_BEGIN /* Return the length of `string'. */ CG_EXTERN size_t CGPDFStringGetLength(CGPDFStringRef cg_nullable string) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return a pointer to the bytes of `string'. */ CG_EXTERN const unsigned char * __nullable CGPDFStringGetBytePtr( CGPDFStringRef cg_nullable string) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Return a CFString representing `string' as a "text string". See Section 3.8.1 "Text Strings", PDF Reference: Adobe PDF version 1.6 (5th ed.) for @@ -36,14 +36,14 @@ CG_EXTERN const unsigned char * __nullable CGPDFStringGetBytePtr( CG_EXTERN CFStringRef __nullable CGPDFStringCopyTextString( CGPDFStringRef cg_nullable string) - CG_AVAILABLE_STARTING(10.3, 2.0); + API_AVAILABLE(macos(10.3), ios(2.0)); /* Convert `string' to a CFDate. See Section 3.8.3 "Dates", PDF Reference: Adobe PDF version 1.6 (5th ed.) for more information. */ CG_EXTERN CFDateRef __nullable CGPDFStringCopyDate( CGPDFStringRef cg_nullable string) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPSConverter.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPSConverter.h index 272893e1..64e3cfd0 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPSConverter.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPSConverter.h @@ -86,7 +86,7 @@ typedef struct CGPSConverterCallbacks CGPSConverterCallbacks; CG_EXTERN CGPSConverterRef __nullable CGPSConverterCreate(void * __nullable info, const CGPSConverterCallbacks * callbacks, CFDictionaryRef __nullable options) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Use `converter' to convert PostScript data to PDF data. The PostScript data is supplied by `provider'; the resulting PDF is written to @@ -95,23 +95,23 @@ CG_EXTERN CGPSConverterRef __nullable CGPSConverterCreate(void * __nullable info CG_EXTERN bool CGPSConverterConvert(CGPSConverterRef converter, CGDataProviderRef provider, CGDataConsumerRef consumer, CFDictionaryRef __nullable options) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Tell the `converter' to abort conversion at the next possible opportunity. */ CG_EXTERN bool CGPSConverterAbort(CGPSConverterRef converter) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Return true if `converter' is currently converting data. */ CG_EXTERN bool CGPSConverterIsConverting(CGPSConverterRef converter) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Return the CFTypeID of the CGPSConverter class. */ CG_EXTERN CFTypeID CGPSConverterGetTypeID(void) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPath.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPath.h index cd37ef63..e8d8c2a5 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPath.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPath.h @@ -40,35 +40,35 @@ typedef CF_ENUM(int32_t, CGLineCap) { /* Return the CFTypeID for CGPathRefs. */ CG_EXTERN CFTypeID CGPathGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a mutable path. */ CG_EXTERN CGMutablePathRef CGPathCreateMutable(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a copy of `path'. */ CG_EXTERN CGPathRef __nullable CGPathCreateCopy(CGPathRef cg_nullable path) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a copy of `path' transformed by `transform'. */ CG_EXTERN CGPathRef __nullable CGPathCreateCopyByTransformingPath( CGPathRef cg_nullable path, const CGAffineTransform * __nullable transform) - CG_AVAILABLE_STARTING(10.7, 5.0); + API_AVAILABLE(macos(10.7), ios(5.0)); /* Create a mutable copy of `path'. */ CG_EXTERN CGMutablePathRef __nullable CGPathCreateMutableCopy( CGPathRef cg_nullable path) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a mutable copy of `path' transformed by `transform'. */ CG_EXTERN CGMutablePathRef __nullable CGPathCreateMutableCopyByTransformingPath( CGPathRef cg_nullable path, const CGAffineTransform * __nullable transform) - CG_AVAILABLE_STARTING(10.7, 5.0); + API_AVAILABLE(macos(10.7), ios(5.0)); /* Return a path representing a rectangle bounded by `rect'. The rectangle forms a complete subpath of the path --- that is, it begins with a "move @@ -79,7 +79,7 @@ CG_EXTERN CGMutablePathRef __nullable CGPathCreateMutableCopyByTransformingPath( CG_EXTERN CGPathRef CGPathCreateWithRect(CGRect rect, const CGAffineTransform * __nullable transform) - CG_AVAILABLE_STARTING(10.5, 4.0); + API_AVAILABLE(macos(10.5), ios(4.0)); /* Return a path representing an ellipse bounded by `rect'. The ellipse is approximated by a sequence of Bézier curves. The center of the ellipse is @@ -95,7 +95,7 @@ CG_EXTERN CGPathRef CGPathCreateWithRect(CGRect rect, CG_EXTERN CGPathRef CGPathCreateWithEllipseInRect(CGRect rect, const CGAffineTransform * __nullable transform) - CG_AVAILABLE_STARTING(10.7, 5.0); + API_AVAILABLE(macos(10.7), ios(5.0)); /* Return a path representing a rounded rectangle. The rounded rectangle coincides with the edges of `rect'. Each corner is consists of @@ -109,7 +109,7 @@ CG_EXTERN CGPathRef CGPathCreateWithEllipseInRect(CGRect rect, CG_EXTERN CGPathRef CGPathCreateWithRoundedRect(CGRect rect, CGFloat cornerWidth, CGFloat cornerHeight, const CGAffineTransform * __nullable transform) - CG_AVAILABLE_STARTING(10.9, 7.0); + API_AVAILABLE(macos(10.9), ios(7.0)); /* Add a rounded rectangle to `path'. The rounded rectangle coincides with the edges of `rect'. Each corner is consists of one-quarter of an ellipse @@ -123,7 +123,7 @@ CG_EXTERN CGPathRef CGPathCreateWithRoundedRect(CGRect rect, CG_EXTERN void CGPathAddRoundedRect(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable transform, CGRect rect, CGFloat cornerWidth, CGFloat cornerHeight) - CG_AVAILABLE_STARTING(10.9, 7.0); + API_AVAILABLE(macos(10.9), ios(7.0)); /* Create a dashed path from `path'. The parameters `phase', `lengths', and `count' have the same meaning as the corresponding parameters for @@ -134,7 +134,7 @@ CG_EXTERN void CGPathAddRoundedRect(CGMutablePathRef cg_nullable path, CG_EXTERN CGPathRef __nullable CGPathCreateCopyByDashingPath( CGPathRef cg_nullable path, const CGAffineTransform * __nullable transform, CGFloat phase, const CGFloat * __nullable lengths, size_t count) - CG_AVAILABLE_STARTING(10.7, 5.0); + API_AVAILABLE(macos(10.7), ios(5.0)); /* Create a stroked path from `path'. The parameters `lineWidth', `lineCap', `lineJoin', and `miterLimit' have the same meaning as the corresponding @@ -146,25 +146,25 @@ CG_EXTERN CGPathRef __nullable CGPathCreateCopyByStrokingPath( CGPathRef cg_nullable path, const CGAffineTransform * __nullable transform, CGFloat lineWidth, CGLineCap lineCap, CGLineJoin lineJoin, CGFloat miterLimit) - CG_AVAILABLE_STARTING(10.7, 5.0); + API_AVAILABLE(macos(10.7), ios(5.0)); /* Equivalent to `CFRetain(path)', except it doesn't crash (as CFRetain does) if `path' is NULL. */ CG_EXTERN CGPathRef cg_nullable CGPathRetain(CGPathRef cg_nullable path) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Equivalent to `CFRelease(path)', except it doesn't crash (as CFRelease does) if `path' is NULL. */ CG_EXTERN void CGPathRelease(CGPathRef cg_nullable path) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return true if `path1' is equal to `path2'; false otherwise. */ CG_EXTERN bool CGPathEqualToPath(CGPathRef cg_nullable path1, CGPathRef cg_nullable path2) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /*** Path construction functions. ***/ @@ -173,7 +173,7 @@ CG_EXTERN bool CGPathEqualToPath(CGPathRef cg_nullable path1, CG_EXTERN void CGPathMoveToPoint(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable m, CGFloat x, CGFloat y) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Append a straight line segment from the current point to `(x, y)' in `path' and move the current point to `(x, y)'. If `m' is non-NULL, then @@ -181,7 +181,7 @@ CG_EXTERN void CGPathMoveToPoint(CGMutablePathRef cg_nullable path, CG_EXTERN void CGPathAddLineToPoint(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable m, CGFloat x, CGFloat y) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Append a quadratic curve from the current point to `(x, y)' with control point `(cpx, cpy)' in `path' and move the current point to `(x, y)'. If @@ -190,7 +190,7 @@ CG_EXTERN void CGPathAddLineToPoint(CGMutablePathRef cg_nullable path, CG_EXTERN void CGPathAddQuadCurveToPoint(CGMutablePathRef cg_nullable path, const CGAffineTransform *__nullable m, CGFloat cpx, CGFloat cpy, CGFloat x, CGFloat y) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Append a cubic Bézier curve from the current point to `(x,y)' with control points `(cp1x, cp1y)' and `(cp2x, cp2y)' in `path' and move the @@ -200,13 +200,13 @@ CG_EXTERN void CGPathAddQuadCurveToPoint(CGMutablePathRef cg_nullable path, CG_EXTERN void CGPathAddCurveToPoint(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable m, CGFloat cp1x, CGFloat cp1y, CGFloat cp2x, CGFloat cp2y, CGFloat x, CGFloat y) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Append a line from the current point to the starting point of the current subpath of `path' and end the subpath. */ CG_EXTERN void CGPathCloseSubpath(CGMutablePathRef cg_nullable path) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /*** Path construction convenience functions. ***/ @@ -215,7 +215,7 @@ CG_EXTERN void CGPathCloseSubpath(CGMutablePathRef cg_nullable path) CG_EXTERN void CGPathAddRect(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable m, CGRect rect) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Add each rectangle specified by `rects', an array of `count' CGRects, to `path'. If `m' is non-NULL, then first transform each rectangle by `m' @@ -224,7 +224,7 @@ CG_EXTERN void CGPathAddRect(CGMutablePathRef cg_nullable path, CG_EXTERN void CGPathAddRects(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable m, const CGRect * __nullable rects, size_t count) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Move to the first element of `points', an array of `count' CGPoints, and append a line from each point to the next point in `points'. If `m' is @@ -233,7 +233,7 @@ CG_EXTERN void CGPathAddRects(CGMutablePathRef cg_nullable path, CG_EXTERN void CGPathAddLines(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable m, const CGPoint * __nullable points, size_t count) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Add an ellipse (an oval) inside `rect' to `path'. The ellipse is approximated by a sequence of Bézier curves. The center of the ellipse is @@ -248,7 +248,7 @@ CG_EXTERN void CGPathAddLines(CGMutablePathRef cg_nullable path, CG_EXTERN void CGPathAddEllipseInRect(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable m, CGRect rect) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* Add an arc of a circle to `path', possibly preceded by a straight line segment. The arc is approximated by a sequence of Bézier curves. The @@ -264,7 +264,7 @@ CG_EXTERN void CGPathAddEllipseInRect(CGMutablePathRef cg_nullable path, CG_EXTERN void CGPathAddRelativeArc(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable matrix, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat delta) - CG_AVAILABLE_STARTING(10.7, 5.0); + API_AVAILABLE(macos(10.7), ios(5.0)); /* Add an arc of a circle to `path', possibly preceded by a straight line segment. The arc is approximated by a sequence of Bézier curves. `(x, y)' @@ -292,7 +292,7 @@ CG_EXTERN void CGPathAddArc(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable m, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, bool clockwise) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Add an arc of a circle to `path', possibly preceded by a straight line segment. The arc is approximated by a sequence of Bézier curves. `radius' @@ -305,32 +305,32 @@ CG_EXTERN void CGPathAddArc(CGMutablePathRef cg_nullable path, CG_EXTERN void CGPathAddArcToPoint(CGMutablePathRef cg_nullable path, const CGAffineTransform * __nullable m, CGFloat x1, CGFloat y1, CGFloat x2, CGFloat y2, CGFloat radius) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Add `path2' to `path1'. If `m' is non-NULL, then the points in `path2' will be transformed by `m' before they are added to `path1'. */ CG_EXTERN void CGPathAddPath(CGMutablePathRef cg_nullable path1, const CGAffineTransform * __nullable m, CGPathRef cg_nullable path2) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /*** Path information functions. ***/ /* Return true if `path' contains no elements, false otherwise. */ CG_EXTERN bool CGPathIsEmpty(CGPathRef cg_nullable path) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return true if `path' represents a rectangle, false otherwise. */ CG_EXTERN bool CGPathIsRect(CGPathRef cg_nullable path, CGRect * __nullable rect) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the current point of the current subpath of `path'. If there is no current point, then return CGPointZero. */ CG_EXTERN CGPoint CGPathGetCurrentPoint(CGPathRef cg_nullable path) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the bounding box of `path'. The bounding box is the smallest rectangle completely enclosing all points in the path, including control @@ -338,7 +338,7 @@ CG_EXTERN CGPoint CGPathGetCurrentPoint(CGPathRef cg_nullable path) return `CGRectNull'. */ CG_EXTERN CGRect CGPathGetBoundingBox(CGPathRef cg_nullable path) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Return the path bounding box of `path'. The path bounding box is the smallest rectangle completely enclosing all points in the path, *not* @@ -346,7 +346,7 @@ CG_EXTERN CGRect CGPathGetBoundingBox(CGPathRef cg_nullable path) path is empty, then return `CGRectNull'. */ CG_EXTERN CGRect CGPathGetPathBoundingBox(CGPathRef cg_nullable path) - CG_AVAILABLE_STARTING(10.6, 4.0); + API_AVAILABLE(macos(10.6), ios(4.0)); /* Return true if `point' is contained in `path'; false otherwise. A point is contained in a path if it is inside the painted region when the path @@ -357,7 +357,7 @@ CG_EXTERN CGRect CGPathGetPathBoundingBox(CGPathRef cg_nullable path) CG_EXTERN bool CGPathContainsPoint(CGPathRef cg_nullable path, const CGAffineTransform * __nullable m, CGPoint point, bool eoFill) - CG_AVAILABLE_STARTING(10.4, 2.0); + API_AVAILABLE(macos(10.4), ios(2.0)); /* The types of path elements returned by `CGPathApply'. */ @@ -387,52 +387,52 @@ typedef void (*CGPathApplierFunction)(void * __nullable info, CG_EXTERN void CGPathApply(CGPathRef cg_nullable path, void * __nullable info, CGPathApplierFunction cg_nullable function) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); typedef void (^CGPathApplyBlock)(const CGPathElement * element); CG_EXTERN void CGPathApplyWithBlock(CGPathRef path, CGPathApplyBlock CF_NOESCAPE block) - CG_AVAILABLE_STARTING(10.13, 11.0); + API_AVAILABLE(macos(10.13), ios(11.0)); /* Returns a new weakly-simple path without self-intersections and with a normalized orientation. Filling the resulting path using even-odd or non-zero filling is identical. */ -CG_EXTERN CGPathRef __nullable CGPathCreateCopyByNormalizing(CGPathRef cg_nullable path, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0); +CG_EXTERN CGPathRef __nullable CGPathCreateCopyByNormalizing(CGPathRef cg_nullable path, bool evenOddFillRule) API_AVAILABLE(macos(13.0), ios(16.0)); -/* Returns a new path created by unioning `path` and `maskPath`. Any unclosed subpaths in either path are assumed to be closed. The resulting path is suitable for either even-odd or non-zero filling. */ +/* Returns a new path created by unioning `path` and `maskPath`. Any unclosed subpaths in either path are assumed to be closed. Filling the resulting path using even-odd or non-zero filling is identical. */ -CG_EXTERN CGPathRef __nullable CGPathCreateCopyByUnioningPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0); +CG_EXTERN CGPathRef __nullable CGPathCreateCopyByUnioningPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) API_AVAILABLE(macos(13.0), ios(16.0)); -/* Returns a new path created by intersecting `path` and `maskPath`. Any unclosed subpaths in either path are assumed to be closed. The resulting path is suitable for either even-odd or non-zero filling. */ +/* Returns a new path created by intersecting `path` and `maskPath`. Any unclosed subpaths in either path are assumed to be closed. Filling the resulting path using even-odd or non-zero filling is identical. */ -CG_EXTERN CGPathRef __nullable CGPathCreateCopyByIntersectingPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0); +CG_EXTERN CGPathRef __nullable CGPathCreateCopyByIntersectingPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) API_AVAILABLE(macos(13.0), ios(16.0)); -/* Returns a new path created by subtracting `maskPath` from `path`. Any unclosed subpaths in either path are assumed to be closed. The resulting path is suitable for either even-odd or non-zero filling. */ +/* Returns a new path created by subtracting `maskPath` from `path`. Any unclosed subpaths in either path are assumed to be closed. Filling the resulting path using even-odd or non-zero filling is identical. */ -CG_EXTERN CGPathRef __nullable CGPathCreateCopyBySubtractingPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0); +CG_EXTERN CGPathRef __nullable CGPathCreateCopyBySubtractingPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) API_AVAILABLE(macos(13.0), ios(16.0)); -/* Returns a new path created by exclusive or-ing `path` and `maskPath`. Any unclosed subpaths in either path are assumed to be closed. The resulting path is suitable for either even-odd or non-zero filling. */ +/* Returns a new path created by exclusive or-ing `path` and `maskPath`. Any unclosed subpaths in either path are assumed to be closed. Filling the resulting path using even-odd or non-zero filling is identical. */ -CG_EXTERN CGPathRef __nullable CGPathCreateCopyBySymmetricDifferenceOfPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0); +CG_EXTERN CGPathRef __nullable CGPathCreateCopyBySymmetricDifferenceOfPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) API_AVAILABLE(macos(13.0), ios(16.0)); /* Returns a new path created by subtracting the `maskPath` from the line of `path` with the fill of `maskPath`. This returns a potentially open path. */ -CG_EXTERN CGPathRef __nullable CGPathCreateCopyOfLineBySubtractingPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0); +CG_EXTERN CGPathRef __nullable CGPathCreateCopyOfLineBySubtractingPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) API_AVAILABLE(macos(13.0), ios(16.0)); /* Returns a new path created by intersecting the line of `path` and the fill of `maskPath`. This returns a potentially open path. */ -CG_EXTERN CGPathRef __nullable CGPathCreateCopyOfLineByIntersectingPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0); +CG_EXTERN CGPathRef __nullable CGPathCreateCopyOfLineByIntersectingPath(CGPathRef cg_nullable path, CGPathRef cg_nullable maskPath, bool evenOddFillRule) API_AVAILABLE(macos(13.0), ios(16.0)); /* Return an array of the visually separated components of a path. */ -CG_EXTERN CFArrayRef __nullable CGPathCreateSeparateComponents(CGPathRef cg_nullable path, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0); +CG_EXTERN CFArrayRef __nullable CGPathCreateSeparateComponents(CGPathRef cg_nullable path, bool evenOddFillRule) API_AVAILABLE(macos(13.0), ios(16.0)); -/* Returns a new path that is flattened, converting all curved line segments into straight line approximations. The granularity of the approximations is controlled by `flatteningThreshold` the maximum error tolerance (measured in points) for curves. */ +/* Returns a new path that is flattened, converting all curved line segments into straight line approximations. The granularity of the approximations is controlled by `flatteningThreshold` the maximum error tolerance (measured in points) for curves. */ -CG_EXTERN CGPathRef __nullable CGPathCreateCopyByFlattening(CGPathRef cg_nullable path, CGFloat flatteningThreshold) CG_AVAILABLE_STARTING(13.0, 16.0); +CG_EXTERN CGPathRef __nullable CGPathCreateCopyByFlattening(CGPathRef cg_nullable path, CGFloat flatteningThreshold) API_AVAILABLE(macos(13.0), ios(16.0)); /* Returns true if path1 and path2 overlap. */ -CG_EXTERN bool CGPathIntersectsPath(CGPathRef cg_nullable path1, CGPathRef cg_nullable path2, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0); +CG_EXTERN bool CGPathIntersectsPath(CGPathRef cg_nullable path1, CGPathRef cg_nullable path2, bool evenOddFillRule) API_AVAILABLE(macos(13.0), ios(16.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPattern.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPattern.h index 04eb21f1..acf3a56e 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPattern.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGPattern.h @@ -60,7 +60,7 @@ typedef struct CGPatternCallbacks CGPatternCallbacks; /* Return the CFTypeID for CGPatternRefs. */ CG_EXTERN CFTypeID CGPatternGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a pattern. */ @@ -68,19 +68,19 @@ CG_EXTERN CGPatternRef __nullable CGPatternCreate(void * __nullable info, CGRect bounds, CGAffineTransform matrix, CGFloat xStep, CGFloat yStep, CGPatternTiling tiling, bool isColored, const CGPatternCallbacks * cg_nullable callbacks) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRetain(pattern)', except it doesn't crash (as CF does) if `pattern' is NULL. */ CG_EXTERN CGPatternRef cg_nullable CGPatternRetain(CGPatternRef cg_nullable pattern) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); /* Equivalent to `CFRelease(pattern)', except it doesn't crash (as CF does) if `pattern' is NULL. */ CG_EXTERN void CGPatternRelease(CGPatternRef cg_nullable pattern) - CG_AVAILABLE_STARTING(10.0, 2.0); + API_AVAILABLE(macos(10.0), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGRemoteOperation.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGRemoteOperation.h index ea3ac013..f427d176 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGRemoteOperation.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGRemoteOperation.h @@ -74,7 +74,7 @@ typedef void (*CGScreenRefreshCallback)(uint32_t count, CG_EXTERN CGError CGRegisterScreenRefreshCallback( CGScreenRefreshCallback callback, void * __nullable userInfo) - CG_AVAILABLE_BUT_DEPRECATED(10.0,10.8); + API_DEPRECATED("No longer supported", macos(10.0,10.8)); /* Remove a previously registered callback function invoked when local displays are refreshed or modified. @@ -84,7 +84,7 @@ CG_EXTERN CGError CGRegisterScreenRefreshCallback( CG_EXTERN void CGUnregisterScreenRefreshCallback( CGScreenRefreshCallback callback, void * __nullable userInfo) - CG_AVAILABLE_BUT_DEPRECATED(10.0,10.8); + API_DEPRECATED("No longer supported", macos(10.0,10.8)); /* Wait for screen refresh operations. @@ -101,7 +101,7 @@ CG_EXTERN void CGUnregisterScreenRefreshCallback( CG_EXTERN CGError CGWaitForScreenRefreshRects( CGRect *__nullable * __nullable rects, uint32_t * __nullable count) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.8); + API_DEPRECATED("No longer supported", macos(10.0,10.8)); /* A type for `CGWaitForScreenUpdateRects' specifying the desired types of screen update operations. */ @@ -150,13 +150,13 @@ typedef void (*CGScreenUpdateMoveCallback)(CGScreenUpdateMoveDelta delta, CG_EXTERN CGError CGScreenRegisterMoveCallback( CGScreenUpdateMoveCallback callback, void * __nullable userInfo) - CG_AVAILABLE_BUT_DEPRECATED(10.3,10.8); + API_DEPRECATED("No longer supported", macos(10.3,10.8)); /* Remove a previously registered screen update callback function. */ CG_EXTERN void CGScreenUnregisterMoveCallback( CGScreenUpdateMoveCallback callback, void * __nullable userInfo) - CG_AVAILABLE_BUT_DEPRECATED(10.3,10.8); + API_DEPRECATED("No longer supported", macos(10.3,10.8)); /* Wait for screen update operations. @@ -190,18 +190,18 @@ CG_EXTERN CGError CGWaitForScreenUpdateRects( CGScreenUpdateOperation * __nullable currentOperation, CGRect * __nullable * __nullable rects, size_t * __nullable rectCount, CGScreenUpdateMoveDelta * __nullable delta) - CG_AVAILABLE_BUT_DEPRECATED(10.3,10.8); + API_DEPRECATED("No longer supported", macos(10.3,10.8)); /* Deallocate the list of rectangles received from `CGWaitForScreenRefreshRects' or `CGWaitForScreenUpdateRects'. */ CG_EXTERN void CGReleaseScreenRefreshRects(CGRect * __nullable rects) - CG_AVAILABLE_BUT_DEPRECATED(10.0,10.8); + API_DEPRECATED("No longer supported", macos(10.0,10.8)); /* Return true if the mouse cursor is visible, false otherwise. */ CG_EXTERN boolean_t CGCursorIsVisible(void) - CG_AVAILABLE_BUT_DEPRECATED(10.3,10.9); + API_DEPRECATED("No longer supported", macos(10.3,10.9)); /* Return true if the mouse cursor is drawn in frame buffer memory, false otherwise. (The cursor could exist in an overlay plane or a similar @@ -214,13 +214,13 @@ CG_EXTERN boolean_t CGCursorIsVisible(void) function returns true. */ CG_EXTERN boolean_t CGCursorIsDrawnInFramebuffer(void) - CG_AVAILABLE_BUT_DEPRECATED(10.3,10.9); + API_DEPRECATED("No longer supported", macos(10.3,10.9)); /* Move the mouse cursor to the desired position in global display coordinates without generating events. */ CG_EXTERN CGError CGWarpMouseCursorPosition(CGPoint newCursorPosition) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* After posting a left mouse down with remote mouse drag suppressing hardware mouse move events, after some time with no remote mouse drag @@ -243,7 +243,7 @@ CG_EXTERN CGError CGWarpMouseCursorPosition(CGPoint newCursorPosition) or `CGWarpMouseCursorPosition'. */ CG_EXTERN CGError CGAssociateMouseAndMouseCursorPosition(boolean_t connected) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* Return a CFMachPort that corresponds to the Mac OS X Window Server's server port. @@ -272,19 +272,19 @@ CG_EXTERN CGError CGAssociateMouseAndMouseCursorPosition(boolean_t connected) `CFMachPortIsValid' to check whether the port is valid. */ CG_EXTERN CFMachPortRef __nullable CGWindowServerCreateServerPort(void) - CG_AVAILABLE_STARTING(10.8); + API_AVAILABLE(macos(10.8)); /* This function is obsolete. Use Quartz events and Quartz event sources instead. */ CG_EXTERN CGError CGEnableEventStateCombining(boolean_t combineState) - CG_AVAILABLE_BUT_DEPRECATED(10.1, 10.6); + API_DEPRECATED("No longer supported", macos(10.1,10.6)); /* This function obsolete. Use `CGEventSourceSetLocalEventsFilterDuringSuppressionState' instead. */ CG_EXTERN CGError CGInhibitLocalEvents(boolean_t inhibit) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); /* This function is obsolete. Use `CGEventCreateMouseEvent' instead. @@ -315,7 +315,7 @@ CG_EXTERN CGError CGInhibitLocalEvents(boolean_t inhibit) CG_EXTERN CGError CGPostMouseEvent(CGPoint mouseCursorPosition, boolean_t updateMouseCursorPosition, CGButtonCount buttonCount, boolean_t mouseButtonDown, ... ) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); /* This function is obsolete. Use `CGEventCreateScrollWheelEvent' instead. @@ -335,13 +335,13 @@ CG_EXTERN CGError CGPostMouseEvent(CGPoint mouseCursorPosition, CG_EXTERN CGError CGPostScrollWheelEvent(CGWheelCount wheelCount, int32_t wheel1, ... ) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); /* This function is obsolete. Use `CGEventCreateKeyboardEvent' instead. */ CG_EXTERN CGError CGPostKeyboardEvent(CGCharCode keyChar, CGKeyCode virtualKey, boolean_t keyDown) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); /* A type specifying masks for classes of low-level events that can be filtered during event suppression states. */ @@ -371,19 +371,19 @@ typedef CF_ENUM(uint32_t, CGEventSuppressionState) { CG_EXTERN CGError CGSetLocalEventsFilterDuringSuppressionState( CGEventFilterMask filter, CGEventSuppressionState state) - CG_AVAILABLE_BUT_DEPRECATED(10.1, 10.6); + API_DEPRECATED("No longer supported", macos(10.1,10.6)); /* This function is obsolete. Use `CGEventSourceSetLocalEventsSuppressionInterval' instead. */ CG_EXTERN CGError CGSetLocalEventsSuppressionInterval(CFTimeInterval seconds) - CG_AVAILABLE_BUT_DEPRECATED(10.0, 10.6); + API_DEPRECATED("No longer supported", macos(10.0,10.6)); /* This function is obsolete. Use `CGWindowServerCreateServerPort' instead. */ CG_EXTERN CFMachPortRef __nullable CGWindowServerCFMachPort(void) CF_RETURNS_RETAINED - CG_AVAILABLE_BUT_DEPRECATED(10.1, 10.8); + API_DEPRECATED("No longer supported", macos(10.1,10.8)); /* Obsolete. Present for backwards compatibility with old header typos. */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGSession.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGSession.h index 826e350b..138b1502 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGSession.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGSession.h @@ -21,7 +21,7 @@ CF_ASSUME_NONNULL_BEGIN should release the dictionary when you are finished using it. */ CG_EXTERN CFDictionaryRef __nullable CGSessionCopyCurrentDictionary(void) - CG_AVAILABLE_STARTING(10.3); + API_AVAILABLE(macos(10.3)); /* Keys for window server session dictionaries. */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGShading.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGShading.h index bd295122..efbfbffa 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGShading.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGShading.h @@ -24,7 +24,7 @@ CF_ASSUME_NONNULL_BEGIN /* Return the CFTypeID for CGShadingRefs. */ CG_EXTERN CFTypeID CGShadingGetTypeID(void) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a shading defining a color blend which varies along a linear axis between two endpoints and extends indefinitely perpendicular to that @@ -44,7 +44,7 @@ CG_EXTERN CFTypeID CGShadingGetTypeID(void) CG_EXTERN CGShadingRef __nullable CGShadingCreateAxial( CGColorSpaceRef cg_nullable space, CGPoint start, CGPoint end, CGFunctionRef cg_nullable function, bool extendStart, bool extendEnd) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Create a shading defining a color blend which varies between two circles. The shading may optionally extend beyond either circle by continuing the @@ -65,19 +65,19 @@ CG_EXTERN CGShadingRef __nullable CGShadingCreateRadial( CGColorSpaceRef cg_nullable space, CGPoint start, CGFloat startRadius, CGPoint end, CGFloat endRadius, CGFunctionRef cg_nullable function, bool extendStart, bool extendEnd) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Equivalent to `CFRetain(shading)', except it doesn't crash (as CFRetain does) if `shading' is NULL. */ CG_EXTERN CGShadingRef cg_nullable CGShadingRetain(CGShadingRef cg_nullable shading) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); /* Equivalent to `CFRelease(shading)', except it doesn't crash (as CFRelease does) if `shading' is NULL. */ CG_EXTERN void CGShadingRelease(CGShadingRef cg_nullable shading) - CG_AVAILABLE_STARTING(10.2, 2.0); + API_AVAILABLE(macos(10.2), ios(2.0)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGToneMapping.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGToneMapping.h new file mode 100644 index 00000000..6ac5e202 --- /dev/null +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGToneMapping.h @@ -0,0 +1,33 @@ +/* CoreGraphics - CGToneMapping.h + Copyright (c) 2000-2012 Apple Inc. + All rights reserved. */ + +#ifndef CGTONEMAPPING_H_ +#define CGTONEMAPPING_H_ + +#include +#include +#include + + +#include +#include + +CF_IMPLICIT_BRIDGING_ENABLED + +CF_ASSUME_NONNULL_BEGIN + +typedef CF_ENUM (uint32_t, CGToneMapping) { + kCGToneMappingDefault = 0, /* A system default method will be used */ + kCGToneMappingImageSpecificLumaScaling, /* Implements tone mapping of HDR content associated with the CGImage gain map */ + kCGToneMappingReferenceWhiteBased, /* Implements a tone curve that preserves SDR contrast and rolls off HDR highlights */ + kCGToneMappingITURecommended, /* Implements tone mapping based on ITU-R specifications for HDR-to-SDR and SDR-to-HDR conversions assuming mastering peak of 1000 nits */ + kCGToneMappingEXRGamma, /* Implements Open EXR tone mapping gamma suitable for tone mapping images in extended linear sRGB color space to SDR */ + kCGToneMappingNone /* Does not apply any tone mapping. Color converted values in extended color spaces will be clipped to SDR ([0.0-1.0]) range */ +} API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + +CF_ASSUME_NONNULL_END + +CF_IMPLICIT_BRIDGING_DISABLED + +#endif /* CGTONEMAPPING_H_ */ diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGWindow.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGWindow.h index 1ca3b68d..8e01e1b5 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGWindow.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGWindow.h @@ -48,20 +48,20 @@ CF_ASSUME_NONNULL_BEGIN value. */ CG_EXTERN const CFStringRef kCGWindowNumber - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* The backing store type of the window, one of `kCGBackingStoreRetained', `kCGBackingStoreNonretained', or `kCGBackingStoreBuffered'. The value of this key is a CFNumber 32-bit signed integer value. */ CG_EXTERN const CFStringRef kCGWindowStoreType - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* The window layer number of the window. The value of this key is a CFNumber 32-bit signed integer value. */ CG_EXTERN const CFStringRef kCGWindowLayer - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* The bounds of the window in screen space, with the origin at the upper-left corner of the main display. The value of this key is a @@ -69,34 +69,34 @@ CG_EXTERN const CFStringRef kCGWindowLayer bounds as a CGRect value. */ CG_EXTERN const CFStringRef kCGWindowBounds - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* The sharing state of the window, one of `kCGWindowSharingNone', `kCGWindowSharingReadOnly', or `kCGWindowSharingReadWrite'. The value of this key is a CFNumber 32-bit signed integer value. */ CG_EXTERN const CFStringRef kCGWindowSharingState - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* The alpha fade of the window. The value of this key is a CFNumber floating-point value. The value 1.0 is normal (opaque); the value 0.0 is fully transparent (invisible). */ CG_EXTERN const CFStringRef kCGWindowAlpha - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* The process ID of the process that owns the window. The value of this key is a CFNumber 32-bit signed integer value. */ CG_EXTERN const CFStringRef kCGWindowOwnerPID - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* An estimate of the memory in bytes currently used by the window and its supporting data structures. The value of this key is a CFNumber 64-bit signed integer value. */ CG_EXTERN const CFStringRef kCGWindowMemoryUsage - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* Optional keys for window dictionaries. */ @@ -104,33 +104,33 @@ CG_EXTERN const CFStringRef kCGWindowMemoryUsage The value of this key is a CFNumber 32-bit signed integer value. */ CG_EXTERN const CFStringRef kCGWindowWorkspace - CG_AVAILABLE_BUT_DEPRECATED(10.5, 10.8); + API_DEPRECATED("No longer supported", macos(10.5,10.8)); /* If present, the name of the application process which owns the window. The value of this key is a CFString. */ CG_EXTERN const CFStringRef kCGWindowOwnerName - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* If present, the name of the window. The value of this key is a CFString. */ CG_EXTERN const CFStringRef kCGWindowName - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* If present, true if the window is ordered on screen, false otherwise. If the key is not present, then the window is not ordered on screen. The value of this key is a CFBoolean. */ CG_EXTERN const CFStringRef kCGWindowIsOnscreen - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* If present, true if the window backing store is in video memory, false otherwise. If the key is not present, then the window backing store is in main memory. The value of this key is a CFBoolean. */ CG_EXTERN const CFStringRef kCGWindowBackingLocationVideoMemory - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* Flags for CGWindowListOption values. These may be ORed together. */ @@ -169,7 +169,7 @@ typedef CF_OPTIONS(uint32_t, CGWindowListOption) { CG_EXTERN CFArrayRef __nullable CGWindowListCopyWindowInfo(CGWindowListOption option, CGWindowID relativeToWindow) - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* Return an array of CGWindowID values for windows within the user session. @@ -179,7 +179,7 @@ CG_EXTERN CFArrayRef __nullable CGWindowListCopyWindowInfo(CGWindowListOption op CG_EXTERN CFArrayRef __nullable CGWindowListCreate(CGWindowListOption option, CGWindowID relativeToWindow) - CG_AVAILABLE_STARTING(10.5) + API_AVAILABLE(macos(10.5)) CF_SWIFT_UNAVAILABLE("No replacement at present"); /* Return an array of window dictionaries, each corresponding to a window ID @@ -191,7 +191,7 @@ CG_EXTERN CFArrayRef __nullable CGWindowListCreate(CGWindowListOption option, CG_EXTERN CFArrayRef __nullable CGWindowListCreateDescriptionFromArray( CFArrayRef __nullable windowArray) - CG_AVAILABLE_STARTING(10.5); + API_AVAILABLE(macos(10.5)); /* Flags for CGWindowImageOption values. These may be ORed together. */ @@ -219,6 +219,11 @@ typedef CF_OPTIONS(uint32_t, CGWindowImageOption) { kCGWindowImageNominalResolution = (1 << 4) }; + +#define SCREEN_CAPTURE_OBSOLETE(x,y,z) \ + __attribute__((availability(macos,introduced=x,deprecated=y,obsoleted=z,message="Please use ScreenCaptureKit instead."))); + + /* Create an image containing a composite of the specified set of windows contained within a rectangular area. The set of windows is specified using options from `CGWindowListOption', along with an optional @@ -266,7 +271,7 @@ typedef CF_OPTIONS(uint32_t, CGWindowImageOption) { CG_EXTERN CGImageRef __nullable CGWindowListCreateImage(CGRect screenBounds, CGWindowListOption listOption, CGWindowID windowID, CGWindowImageOption imageOption) - CG_AVAILABLE_BUT_DEPRECATED(10.5, 14.0, "This API is deprecated. Please use ScreenCaptureKit's captureScreenshot APIs instead."); + SCREEN_CAPTURE_OBSOLETE(10.5,14.0,15.0); /* Create an image containing a composite of the specified set of windows contained within a rectangular area à la `CGWindowListCreateImage'. The @@ -275,7 +280,7 @@ CG_EXTERN CGImageRef __nullable CGWindowListCreateImage(CGRect screenBounds, CG_EXTERN CGImageRef __nullable CGWindowListCreateImageFromArray( CGRect screenBounds, CFArrayRef windowArray, CGWindowImageOption imageOption) - CG_AVAILABLE_BUT_DEPRECATED(10.5, 14.0, "This API is deprecated. Please use ScreenCaptureKit's captureScreenshot APIs instead."); + SCREEN_CAPTURE_OBSOLETE(10.5,14.0,15.0); /* A CFNumberRef encoding appropriate for use with a CGWindowID. */ #define kCGWindowIDCFNumberType kCFNumberSInt32Type @@ -287,10 +292,10 @@ CG_EXTERN CGImageRef __nullable CGWindowListCreateImageFromArray( #define kCGWindowBackingCFNumberType kCFNumberSInt32Type /* Checks whether the current process already has screen capture access */ -CG_EXTERN bool CGPreflightScreenCaptureAccess(void) CG_AVAILABLE_STARTING(10.15); +CG_EXTERN bool CGPreflightScreenCaptureAccess(void) API_AVAILABLE(macos(10.15)); /* Requests event listening access if absent, potentially prompting */ -CG_EXTERN bool CGRequestScreenCaptureAccess(void) CG_AVAILABLE_STARTING(10.15); +CG_EXTERN bool CGRequestScreenCaptureAccess(void) API_AVAILABLE(macos(10.15)); CF_ASSUME_NONNULL_END diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGWindowLevel.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGWindowLevel.h index b6ea224d..e94b5368 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGWindowLevel.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGWindowLevel.h @@ -50,7 +50,7 @@ typedef int32_t CGWindowLevel; types. */ CG_EXTERN CGWindowLevel CGWindowLevelForKey(CGWindowLevelKey key) - CG_AVAILABLE_STARTING(10.0); + API_AVAILABLE(macos(10.0)); /* The number of window levels reserved by Apple for internal use. */ #define kCGNumReservedWindowLevels (16) diff --git a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CoreGraphics.h b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CoreGraphics.h index 847280bd..3c260283 100644 --- a/Frameworks/CoreGraphics.framework/Versions/A/Headers/CoreGraphics.h +++ b/Frameworks/CoreGraphics.framework/Versions/A/Headers/CoreGraphics.h @@ -10,6 +10,9 @@ #include #include #include +#include +#include +#include #include #include #include diff --git a/Frameworks/CoreImage.framework/Versions/A/CoreImage.metallib b/Frameworks/CoreImage.framework/Versions/A/CoreImage.metallib index 8ea7a7bb..d95c1f9e 100644 Binary files a/Frameworks/CoreImage.framework/Versions/A/CoreImage.metallib and b/Frameworks/CoreImage.framework/Versions/A/CoreImage.metallib differ diff --git a/Frameworks/CoreImage.framework/Versions/A/CoreImage.tbd b/Frameworks/CoreImage.framework/Versions/A/CoreImage.tbd index 58ec6cc8..636e8e88 100644 --- a/Frameworks/CoreImage.framework/Versions/A/CoreImage.tbd +++ b/Frameworks/CoreImage.framework/Versions/A/CoreImage.tbd @@ -77,15 +77,16 @@ exports: _kCIFormatIh, _kCIFormatL10, _kCIFormatL12, _kCIFormatL16, _kCIFormatL8, _kCIFormatLA16, _kCIFormatLA8, _kCIFormatLAf, _kCIFormatLAh, _kCIFormatLf, _kCIFormatLh, _kCIFormatNil, - _kCIFormatR10, _kCIFormatR12, _kCIFormatR16, _kCIFormatR8, - _kCIFormatRG10, _kCIFormatRG12, _kCIFormatRG16, _kCIFormatRG8, - _kCIFormatRGB10, _kCIFormatRGB10WideGamut, _kCIFormatRGB10WideLinear, - _kCIFormatRGB16, _kCIFormatRGB8, _kCIFormatRGBA16, _kCIFormatRGBA8, - _kCIFormatRGBAf, _kCIFormatRGBAh, _kCIFormatRGBX16, _kCIFormatRGBX8, - _kCIFormatRGBXf, _kCIFormatRGBXh, _kCIFormatRGBf, _kCIFormatRGBh, - _kCIFormatRGf, _kCIFormatRGh, _kCIFormatRf, _kCIFormatRh, - _kCIFormatXBGR8, _kCIFormatXRGB8, _kCIFormatYCbYCr8, _kCIFormatYCbYCr8f, - _kCIImageAVDepthData, _kCIImageAVPortraitEffectsMatte, _kCIImageAVSemanticSegmentationMatte, + _kCIFormatR10, _kCIFormatR10packed, _kCIFormatR12, _kCIFormatR16, + _kCIFormatR8, _kCIFormatRG10, _kCIFormatRG10packed, _kCIFormatRG12, + _kCIFormatRG16, _kCIFormatRG8, _kCIFormatRGB10, _kCIFormatRGB10WideGamut, + _kCIFormatRGB10WideLinear, _kCIFormatRGB16, _kCIFormatRGB8, + _kCIFormatRGBA16, _kCIFormatRGBA8, _kCIFormatRGBAf, _kCIFormatRGBAh, + _kCIFormatRGBX16, _kCIFormatRGBX8, _kCIFormatRGBXf, _kCIFormatRGBXh, + _kCIFormatRGBf, _kCIFormatRGBh, _kCIFormatRGf, _kCIFormatRGh, + _kCIFormatRf, _kCIFormatRh, _kCIFormatXBGR8, _kCIFormatXRGB8, + _kCIFormatYCbYCr8, _kCIFormatYCbYCr8f, _kCIImageAVDepthData, + _kCIImageAVPortraitEffectsMatte, _kCIImageAVSemanticSegmentationMatte, _kCIImageAccumulatorAbortable, _kCIImageAccumulatorBlendKernel, _kCIImageAccumulatorColorSpace, _kCIImageAlphaOne, _kCIImageApplyOrientationProperty, _kCIImageAutoAdjustCrop, _kCIImageAutoAdjustEnhance, _kCIImageAutoAdjustFeatures, @@ -93,13 +94,14 @@ exports: _kCIImageAutoAdjustLevel_MaxAngle, _kCIImageAutoAdjustLevel_MinAngle, _kCIImageAutoAdjustLevel_UseVerticalDetector, _kCIImageAutoAdjustLevel_VerticalAngleThreshold, _kCIImageAutoAdjustRedEye, _kCIImageAuxiliaryDepth, _kCIImageAuxiliaryDisparity, - _kCIImageAuxiliaryHDRGainMap, _kCIImageAuxiliaryPortraitEffectsMatte, - _kCIImageAuxiliarySemanticSegmentationGlassesMatte, _kCIImageAuxiliarySemanticSegmentationHairMatte, - _kCIImageAuxiliarySemanticSegmentationSkinMatte, _kCIImageAuxiliarySemanticSegmentationSkyMatte, - _kCIImageAuxiliarySemanticSegmentationTeethMatte, _kCIImageCacheHint, - _kCIImageCacheImmediately, _kCIImageClampToEdge, _kCIImageColorSpace, - _kCIImageContentDigest, _kCIImageEdgeRepeat, _kCIImageEdgesAreClear, - _kCIImageExpandToHDR, _kCIImageFlipped, _kCIImageNearestSampling, + _kCIImageAuxiliaryGainMapPreference, _kCIImageAuxiliaryHDRGainMap, + _kCIImageAuxiliaryPortraitEffectsMatte, _kCIImageAuxiliarySemanticSegmentationGlassesMatte, + _kCIImageAuxiliarySemanticSegmentationHairMatte, _kCIImageAuxiliarySemanticSegmentationSkinMatte, + _kCIImageAuxiliarySemanticSegmentationSkyMatte, _kCIImageAuxiliarySemanticSegmentationTeethMatte, + _kCIImageCacheHint, _kCIImageCacheImmediately, _kCIImageClampToEdge, + _kCIImageColorSpace, _kCIImageContentDigest, _kCIImageContentHeadroom, + _kCIImageEdgeRepeat, _kCIImageEdgesAreClear, _kCIImageExpandToHDR, + _kCIImageFlipped, _kCIImageGenerateFlexGTC, _kCIImageNearestSampling, _kCIImagePremultiplied, _kCIImageProcessorAllowCompressedInputsAndOutputs, _kCIImageProcessorAllowPartialOutputRegion, _kCIImageProcessorCanOutputLossyCompressed, _kCIImageProcessorSynchronizeInputs, _kCIImageProperties, @@ -108,8 +110,13 @@ exports: _kCIImageProviderTileWidthArray, _kCIImageProviderUserInfo, _kCIImageRepresentationAVDepthData, _kCIImageRepresentationAVPortraitEffectsMatte, _kCIImageRepresentationAVSemanticSegmentationMattes, _kCIImageRepresentationDepthImage, - _kCIImageRepresentationDisparityImage, _kCIImageRepresentationHDRGainMapImage, - _kCIImageRepresentationPortraitEffectsMatteImage, _kCIImageRepresentationSemanticSegmentationGlassesMatteImage, + _kCIImageRepresentationDisparityImage, _kCIImageRepresentationHDRGainMapAsRGB, + _kCIImageRepresentationHDRGainMapHeadroom, _kCIImageRepresentationHDRGainMapImage, + _kCIImageRepresentationHDRImage, _kCIImageRepresentationISOGainMapAlternateHeadroom, + _kCIImageRepresentationISOGainMapBaseHeadroom, _kCIImageRepresentationISOGainMapImage, + _kCIImageRepresentationISOGainMapMax, _kCIImageRepresentationISOGainMapMin, + _kCIImageRepresentationISOGainMapOffset, _kCIImageRepresentationPortraitEffectsMatteImage, + _kCIImageRepresentationSemanticSegmentationGlassesMatteImage, _kCIImageRepresentationSemanticSegmentationHairMatteImage, _kCIImageRepresentationSemanticSegmentationSkinMatteImage, _kCIImageRepresentationSemanticSegmentationSkyMatteImage, diff --git a/Frameworks/CoreImage.framework/Versions/A/Headers/CIContext.h b/Frameworks/CoreImage.framework/Versions/A/Headers/CIContext.h index 56b3e7d3..bcdec870 100644 --- a/Frameworks/CoreImage.framework/Versions/A/Headers/CIContext.h +++ b/Frameworks/CoreImage.framework/Versions/A/Headers/CIContext.h @@ -417,6 +417,23 @@ CORE_IMAGE_EXPORT CIImageRepresentationOption const kCIImageRepresentationSemant // The value for kCIImageRepresentationSemanticSegmentationSkyMatteImage should be a monochome CIImage object. */ CORE_IMAGE_EXPORT CIImageRepresentationOption const kCIImageRepresentationSemanticSegmentationSkyMatteImage NS_AVAILABLE(11_1, 14_3); +// The value for kCIImageRepresentationHDRImage should be a HDR CIImage object. +// This optional image can be passed to JPEGRepresentationOfImage or HEIFRepresentationOfImage. +// +// When provided, Core Image will calculate a HDRGainMap image from the ratio of the HDR image to +// the primary SDR image. +// +// If the the HDR CIImage has a .contentHeadroom property, then that will be used when calculating the +// HDRGainMap image and metadata. +// +CORE_IMAGE_EXPORT CIImageRepresentationOption const kCIImageRepresentationHDRImage NS_AVAILABLE(15_0, 18_0); + +// The value for kCIImageRepresentationHDRGainMapImage should be a monochome CIImage object. +// The image.properties should contain information equivalent to what is returned when initialtizing +// an image using the kCIImageAuxiliaryHDRGainMap option. +// +CORE_IMAGE_EXPORT CIImageRepresentationOption const kCIImageRepresentationHDRGainMapImage NS_AVAILABLE(11_0, 14_1); + /* Render a CIImage to TIFF data. Image must have a finite non-empty extent. */ /* The CGColorSpace must be kCGColorSpaceModelRGB or kCGColorSpaceModelMonochrome */ @@ -430,7 +447,7 @@ CORE_IMAGE_EXPORT CIImageRepresentationOption const kCIImageRepresentationSemant /* Render a CIImage to JPEG data. Image must have a finite non-empty extent. */ /* The CGColorSpace must be kCGColorSpaceModelRGB or kCGColorSpaceModelMonochrome. */ /* Supported options keys are kCGImageDestinationLossyCompressionQuality, */ -/* and the depth, disparity, and matte options. */ +/* kCGImageDestinationEmbedThumbnail, and the depth, disparity, and matte options. */ - (nullable NSData*) JPEGRepresentationOfImage:(CIImage*)image colorSpace:(CGColorSpaceRef)colorSpace options:(NSDictionary*)options NS_AVAILABLE(10_12,10_0); @@ -439,7 +456,7 @@ CORE_IMAGE_EXPORT CIImageRepresentationOption const kCIImageRepresentationSemant /* The CGColorSpace must be kCGColorSpaceModelRGB or kCGColorSpaceModelMonochrome */ /* and must match the specified CIFormat. */ /* Supported options keys are kCGImageDestinationLossyCompressionQuality, */ -/* and the depth, disparity, and matte options. */ +/* kCGImageDestinationEmbedThumbnail,and the depth, disparity, and matte options. */ - (nullable NSData*) HEIFRepresentationOfImage:(CIImage*)image format:(CIFormat)format colorSpace:(CGColorSpaceRef)colorSpace @@ -494,7 +511,7 @@ CORE_IMAGE_EXPORT CIImageRepresentationOption const kCIImageRepresentationSemant /* Render a CIImage to JPEG file. Image must have a finite non-empty extent. */ /* The CGColorSpace must be kCGColorSpaceModelRGB or kCGColorSpaceModelMonochrome. */ /* Supported options keys are kCGImageDestinationLossyCompressionQuality, */ -/* and the depth, disparity, and matte options. */ +/* kCGImageDestinationEmbedThumbnail, and the depth, disparity, and matte options. */ - (BOOL) writeJPEGRepresentationOfImage:(CIImage*)image toURL:(NSURL*)url colorSpace:(CGColorSpaceRef)colorSpace @@ -505,7 +522,7 @@ CORE_IMAGE_EXPORT CIImageRepresentationOption const kCIImageRepresentationSemant /* The CGColorSpace must be kCGColorSpaceModelRGB or kCGColorSpaceModelMonochrome */ /* and must match the specified CIFormat. */ /* Supported options keys are kCGImageDestinationLossyCompressionQuality, */ -/* and the depth, disparity, and matte options. */ +/* kCGImageDestinationEmbedThumbnail, and the depth, disparity, and matte options. */ - (BOOL) writeHEIFRepresentationOfImage:(CIImage*)image toURL:(NSURL*)url format:(CIFormat)format diff --git a/Frameworks/CoreImage.framework/Versions/A/Headers/CIFilterBuiltins.h b/Frameworks/CoreImage.framework/Versions/A/Headers/CIFilterBuiltins.h index 3c0af550..c488777a 100644 --- a/Frameworks/CoreImage.framework/Versions/A/Headers/CIFilterBuiltins.h +++ b/Frameworks/CoreImage.framework/Versions/A/Headers/CIFilterBuiltins.h @@ -134,6 +134,11 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic) float scale; @property (nonatomic) float aspectRatio; @end +@protocol CIMaximumScaleTransform + @property (nonatomic, retain, nullable) CIImage *inputImage; + @property (nonatomic) float scale; + @property (nonatomic) float aspectRatio; +@end @protocol CIPerspectiveCorrection @property (nonatomic) bool crop; @end @@ -312,6 +317,11 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic) CGPoint point3; @property (nonatomic) CGPoint point4; @end +@protocol CIToneMapHeadroom + @property (nonatomic, retain, nullable) CIImage *inputImage; + @property (nonatomic) float sourceHeadroom; + @property (nonatomic) float targetHeadroom; +@end @protocol CIVibrance @property (nonatomic, retain, nullable) CIImage *inputImage; @property (nonatomic) float amount; @@ -972,6 +982,8 @@ NS_ASSUME_NONNULL_BEGIN @end @protocol CIAreaAverage @end +@protocol CIAreaBoundsRed +@end @protocol CIAreaHistogram @property (nonatomic) float scale; @property (nonatomic) NSInteger count; @@ -1040,6 +1052,7 @@ NS_CLASS_AVAILABLE(10_15, 13_0) + (CIFilter*) keystoneCorrectionHorizontalFilter; + (CIFilter*) keystoneCorrectionVerticalFilter; + (CIFilter*) lanczosScaleTransformFilter; ++ (CIFilter*) maximumScaleTransformFilter NS_AVAILABLE(15_0, 18_0); + (CIFilter*) perspectiveCorrectionFilter; + (CIFilter*) perspectiveRotateFilter; + (CIFilter*) perspectiveTransformFilter; @@ -1108,6 +1121,7 @@ NS_CLASS_AVAILABLE(10_15, 13_0) + (CIFilter*) sRGBToneCurveToLinearFilter; + (CIFilter*) temperatureAndTintFilter; + (CIFilter*) toneCurveFilter; ++ (CIFilter*) toneMapHeadroomFilter NS_AVAILABLE(15_0, 18_0); + (CIFilter*) vibranceFilter; + (CIFilter*) whitePointAdjustFilter; @@ -1258,7 +1272,9 @@ NS_CLASS_AVAILABLE(10_15, 13_0) + (CIFilter*) zoomBlurFilter; // CICategoryReduction ++ (CIFilter*) areaAlphaWeightedHistogramFilter NS_AVAILABLE(15_0, 18_0); + (CIFilter*) areaAverageFilter NS_AVAILABLE(11_0, 14_0); ++ (CIFilter*) areaBoundsRedFilter NS_AVAILABLE(15_0, 18_0); + (CIFilter*) areaHistogramFilter NS_AVAILABLE(11_0, 14_0); + (CIFilter*) areaLogarithmicHistogramFilter NS_AVAILABLE(13_0, 16_0); + (CIFilter*) areaMaximumFilter NS_AVAILABLE(11_0, 14_0); diff --git a/Frameworks/CoreImage.framework/Versions/A/Headers/CIImage.h b/Frameworks/CoreImage.framework/Versions/A/Headers/CIImage.h index b2169e9d..2a60321e 100644 --- a/Frameworks/CoreImage.framework/Versions/A/Headers/CIImage.h +++ b/Frameworks/CoreImage.framework/Versions/A/Headers/CIImage.h @@ -43,45 +43,45 @@ NS_CLASS_AVAILABLE(10_4, 5_0) typedef int CIFormat NS_TYPED_ENUM; -CORE_IMAGE_EXPORT CIFormat kCIFormatARGB8 NS_AVAILABLE(10_4, 6_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatBGRA8; -CORE_IMAGE_EXPORT CIFormat kCIFormatRGBA8; -CORE_IMAGE_EXPORT CIFormat kCIFormatABGR8 NS_AVAILABLE(10_11, 9_0); - -CORE_IMAGE_EXPORT CIFormat kCIFormatRGBAh NS_AVAILABLE(10_4, 6_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatRGBA16 NS_AVAILABLE(10_4, 10_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatRGBAf NS_AVAILABLE(10_4, 7_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatRGBX16 NS_AVAILABLE(11_0, 14_2); -CORE_IMAGE_EXPORT CIFormat kCIFormatRGBXh NS_AVAILABLE(14_0, 17_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatRGBXf NS_AVAILABLE(14_0, 17_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatARGB8 NS_AVAILABLE(10_4, 6_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatBGRA8; +CORE_IMAGE_EXPORT const CIFormat kCIFormatRGBA8; +CORE_IMAGE_EXPORT const CIFormat kCIFormatABGR8 NS_AVAILABLE(10_11, 9_0); + +CORE_IMAGE_EXPORT const CIFormat kCIFormatRGBAh NS_AVAILABLE(10_4, 6_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRGBA16 NS_AVAILABLE(10_4, 10_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRGBAf NS_AVAILABLE(10_4, 7_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRGBX16 NS_AVAILABLE(11_0, 14_2); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRGBXh NS_AVAILABLE(14_0, 17_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRGBXf NS_AVAILABLE(14_0, 17_0); // RGB101010 stored in little-endian 32bit int, 2 MSB are ignored, full-range (0-1024) -CORE_IMAGE_EXPORT CIFormat kCIFormatRGB10 NS_AVAILABLE(14_0, 17_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRGB10 NS_AVAILABLE(14_0, 17_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatA8 NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatA16 NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatAh NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatAf NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatA8 NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatA16 NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatAh NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatAf NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatR8 NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatR16 NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatRh NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatRf NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatR8 NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatR16 NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRh NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRf NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatRG8 NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatRG16 NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatRGh NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatRGf NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRG8 NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRG16 NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRGh NS_AVAILABLE(10_11, 9_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatRGf NS_AVAILABLE(10_11, 9_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatL8 NS_AVAILABLE(10_12, 10_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatL16 NS_AVAILABLE(10_12, 10_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatLh NS_AVAILABLE(10_12, 10_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatLf NS_AVAILABLE(10_12, 10_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatL8 NS_AVAILABLE(10_12, 10_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatL16 NS_AVAILABLE(10_12, 10_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatLh NS_AVAILABLE(10_12, 10_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatLf NS_AVAILABLE(10_12, 10_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatLA8 NS_AVAILABLE(10_12, 10_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatLA16 NS_AVAILABLE(10_12, 10_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatLAh NS_AVAILABLE(10_12, 10_0); -CORE_IMAGE_EXPORT CIFormat kCIFormatLAf NS_AVAILABLE(10_12, 10_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatLA8 NS_AVAILABLE(10_12, 10_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatLA16 NS_AVAILABLE(10_12, 10_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatLAh NS_AVAILABLE(10_12, 10_0); +CORE_IMAGE_EXPORT const CIFormat kCIFormatLAf NS_AVAILABLE(10_12, 10_0); /* Image options dictionary keys. @@ -119,6 +119,18 @@ CORE_IMAGE_EXPORT CIImageOption const kCIImageToneMapHDRtoSDR NS_AVAILABLE(11_0, */ CORE_IMAGE_EXPORT CIImageOption const kCIImageExpandToHDR NS_AVAILABLE(14_0, 17_0); +/* A float value for overriding the image's content headroom. + * This option is supported by: + * imageWithContentsOfURL:options:, initWithContentsOfURL:options, + * imageWithData:options:, initWithData:options:, + * imageWithCGImage:options:, initWithCGImage:options:, + * imageWithCGImageSource:options:, initWithCGImageSource:options:, + * imageWithIOSurface:options:, initWithIOSurface:options:, + * + * If the value for this option is a NSNumber greater than or equal to 1.0, + * then it will override the automatic behavior of the 'headroom' property. + */ +CORE_IMAGE_EXPORT CIImageOption const kCIImageContentHeadroom NS_AVAILABLE(15_0, 18_0); /* A boolean value specifying how the image should sampled. * If this option value is @YES, then the image will be sampled using nearest neighbor sampling. @@ -176,6 +188,10 @@ CORE_IMAGE_EXPORT CIImageOption const kCIImageTextureFormat CI_GL_DEPRECATED_MAC * * If the value of any of these keys is @YES, the auxiliary image be returned if present. * The returned image will be a monochrome image. + * + * The kCIImageAuxiliaryHDRGainMap option will return as a CIImage the auxiliary data returned + * by either kCGImageAuxiliaryDataTypeHDRGainMap or kCGImageAuxiliaryDataTypeISOGainMap. + * If the file contains both gain maps, then the kCGImageAuxiliaryDataTypeISOGainMap data is returned. */ CORE_IMAGE_EXPORT CIImageOption const kCIImageAuxiliaryDepth NS_AVAILABLE(10_13, 11_0); CORE_IMAGE_EXPORT CIImageOption const kCIImageAuxiliaryDisparity NS_AVAILABLE(10_13, 11_0); @@ -404,11 +420,11 @@ CORE_IMAGE_EXPORT CIImageOption const kCIImageAuxiliaryHDRGainMap NS_AVAILABLE(1 /* Return a new image by color matching from the colorSpace to the context's working space. - * This method will return nil if the CGColorSpace is not kCGColorSpaceModelRGB. */ + * This method will return nil if the CGColorSpace is not kCGColorSpaceModelRGB or Monochrome. */ - (nullable CIImage *)imageByColorMatchingColorSpaceToWorkingSpace:(CGColorSpaceRef)colorSpace NS_AVAILABLE(10_12, 10_0); /* Return a new image by color matching from the context's working space to the colorSpace. - * This method will return nil if the CGColorSpace is not kCGColorSpaceModelRGB. */ + * This method will return nil if the CGColorSpace is not kCGColorSpaceModelRGB or Monochrome. */ - (nullable CIImage *)imageByColorMatchingWorkingSpaceToColorSpace:(CGColorSpaceRef)colorSpace NS_AVAILABLE(10_12, 10_0); /* Return a new image by multiplying the receiver's RGB values by its alpha. */ @@ -440,9 +456,24 @@ CORE_IMAGE_EXPORT CIImageOption const kCIImageAuxiliaryHDRGainMap NS_AVAILABLE(1 * independent of the CIContext's kCIContextCacheIntermediates option. */ - (CIImage *)imageByInsertingIntermediate:(BOOL)cache NS_AVAILABLE(10_14, 12_0); +/* Returns a new image that applies a gain map image to the received image. + * The gain map image should be obtained by creating a image using either the + * kCIImageAuxiliaryHDRGainMap option set to @YES. If the gain map image doesn't + * have the needed metadata, the received image will be returned as-is. */ +- (CIImage*) imageByApplyingGainMap:(CIImage*)gainmap NS_AVAILABLE(15_0, 18_0); + +/* Returns a new image that applies a gain map image to the received image + * and to specify how much headroom the resulting image should have. + * The headroom value will be limited to between 1.0 (i.e. SDR) and + * the full headroom allowed by the gain map. */ +- (CIImage*) imageByApplyingGainMap:(CIImage*)gainmap headroom:(float)headroom NS_AVAILABLE(15_0, 18_0); + /* Return a rect the defines the bounds of non-(0,0,0,0) pixels */ @property (NS_NONATOMIC_IOSONLY, readonly) CGRect extent; +/* Returns YES if the image is known to have alpha==1 over the entire image extent */ +@property (nonatomic, readonly, getter=isOpaque) BOOL opaque; + /* Returns the metadata properties of an image. If the image is the * output of one or more CIFilters, then the metadata of the root inputImage * will be returned. See also kCIImageProperties. */ @@ -455,10 +486,45 @@ CORE_IMAGE_EXPORT CIImageOption const kCIImageAuxiliaryHDRGainMap NS_AVAILABLE(1 * This method will return nil, if the URL cannot be determined. */ @property (atomic, readonly, nullable) NSURL *url NS_AVAILABLE(10_4, 9_0); -/* Returns if possible the color space of the image it was defined in. - * This method will return nil, if the color space cannot be determined. */ +/* Returns the color space of the image. + * If this returns nil, the image should be assumed to be in the Core Image working colorspace. + * + * This method will return nil if image is the result of applying a CIFilter or CIKernel. + * There are exceptions to this. Applying CIWarpKernels or certain CIFilters (e.g. CIGaussianBlur, + * CILanczosScaleTransform, CIAreaAverage and some others) to an image will result in a CIImage with + * the same 'colorspace' property value. + */ @property (atomic, readonly, nullable) CGColorSpaceRef colorSpace NS_AVAILABLE(10_4, 9_0) CF_RETURNS_NOT_RETAINED; +/* Returns the content headroom of the image. + * + * If the image headroom is unknown, then the value 0.0 will be returned. + * + * If the image headroom is known, then a value greater than or equal to 1.0 will be returned. + * A value of 1.0 will be returned if the image is SDR. + * A value greater than 1.0 will be returned if the image is EDR. + * + * The image headroom may known when a CIImage is first initialized. + * If the a CIImage is initialized using: + * [CIImage imageWithContentsOfURL:..] or [CIImage imageWithData:..] + * headroom may be determined by associated metadata or deduced from pixel format or colorSpace information. + * + * [CIImage imageWithCGImage:..] + * headroom may be determined by CGImageGetHeadroomInfo() or deduced from pixel format or colorSpace information. + * + * [CIImage imageWithIOSurface:..] or [CIImage imageWithCVPixelBuffer:..] + * headroom may be determined by kIOSurfaceContentHeadroom or deduced from pixel format or colorSpace information. + * + * [CIImage imageWithBitmapData:..] + * headroom may be deduced from pixel format or colorSpace information. + * + * If the image is the result of applying a CIFilter or CIKernel, this method will return 0.0. + * There are exceptions to this. Applying CIWarpKernels or certain CIFilters (e.g. CIGaussianBlur, + * CILanczosScaleTransform, CIAreaAverage and some others) to an image will result in a CIImage with + * the same 'headroom' property value. + */ +@property (nonatomic, readonly) float contentHeadroom NS_AVAILABLE(15_0, 18_0); + /* Returns a CVPixelBufferRef if the CIImage was created with [CIImage imageWithCVPixelBuffer] and no options. * Otherwise this property will be nil and calling [CIContext render:toCVPixelBuffer:] is recommended. * Modifying the contents of this pixelBuffer will cause the CIImage to render with undefined results. */ @@ -468,6 +534,11 @@ CORE_IMAGE_EXPORT CIImageOption const kCIImageAuxiliaryHDRGainMap NS_AVAILABLE(1 * Otherwise this property will be nil and calling [CIContext createCGImage:fromRect:] is recommended. */ @property (nonatomic, readonly, nullable) CGImageRef CGImage NS_AVAILABLE(10_12,10_0); +/* Returns a MTLTexture if the CIImage was created with [CIImage imageWithMTLTexture] and no options. + * Otherwise this property will be nil and calling [CIContext render:toMTLTexture:] is recommended. + * Modifying the contents of this texture will cause the CIImage to render with undefined results. */ +@property (nonatomic, readonly, nullable) id metalTexture NS_AVAILABLE(15_0, 18_0); + /* Returns the rectangle of 'image' that is required to render the * rectangle 'rect' of the receiver. This may return a null rect. */ - (CGRect)regionOfInterestForImage:(CIImage *)image diff --git a/Frameworks/CoreImage.framework/Versions/A/Headers/CIKernelMetalLib.h b/Frameworks/CoreImage.framework/Versions/A/Headers/CIKernelMetalLib.h index ae68d33e..f9675b03 100644 --- a/Frameworks/CoreImage.framework/Versions/A/Headers/CIKernelMetalLib.h +++ b/Frameworks/CoreImage.framework/Versions/A/Headers/CIKernelMetalLib.h @@ -169,7 +169,7 @@ namespace coreimage //MARK: - Destination - typedef struct + typedef struct Destination { // Returns the position, in working space coordinates, of the pixel currently being computed. // The destination space refers to the coordinate space of the image you are rendering. diff --git a/Frameworks/CoreImage.framework/Versions/A/Headers/CIRenderDestination.h b/Frameworks/CoreImage.framework/Versions/A/Headers/CIRenderDestination.h index 0769ab5b..021c2794 100644 --- a/Frameworks/CoreImage.framework/Versions/A/Headers/CIRenderDestination.h +++ b/Frameworks/CoreImage.framework/Versions/A/Headers/CIRenderDestination.h @@ -160,7 +160,7 @@ typedef NS_ENUM(NSUInteger, CIRenderDestinationAlphaMode) { @property (getter=isFlipped) BOOL flipped; // Instructs the render to add pseudo-random luma noise given the depth of the destination. -// The magnitude of the noise is approximatly ±pow(2,-(bitPerComponent+1)) +// The magnitude of the noise is approximately ±pow(2,-(bitPerComponent+1)) @property (getter=isDithered) BOOL dithered; // If true, the render will clamp color channels diff --git a/Frameworks/CoreLocation.framework/Versions/A/CoreLocation.tbd b/Frameworks/CoreLocation.framework/Versions/A/CoreLocation.tbd index ec7d2a08..cbddb162 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/CoreLocation.tbd +++ b/Frameworks/CoreLocation.framework/Versions/A/CoreLocation.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreLocation.framework/Versions/A/CoreLocation' -current-version: 2890.4.12 +current-version: 2960.0.57 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -35,17 +35,27 @@ exports: _CLClientStopVehicleHeadingUpdates, _CLClientStopVehicleSpeedUpdates, _CLClientUpdateARSessionState, _CLClientUpdateVIOEstimation, _CLClientUpdateVLLocalizationResult, _CLCopyActiveClientsUsingLocation, - _CLCopyAppsUsingLocation, _CLCopyGnssBandsInUse, _CLCopyMicroLocationInternalVersion, - _CLCopyNearbyAssetSettings, _CLCopyNearbyAssetSettingsOfAccessoryFile, - _CLCopyRoutineAssetSettings, _CLCopyTechnologiesInUse, _CLCopyZaxisStats, - _CLDaemonStartedNotification, _CLDeleteCurrentEmergencyLocationAsset, - _CLGenerateRoadSegmentId, _CLGetAccessoryPASCDTransmissionState, + _CLCopyAppsUsingLocation, _CLCopyGnssBandsInUse, _CLCopyInternalState, + _CLCopyMicroLocationInternalVersion, _CLCopyNearbyAssetSettings, + _CLCopyNearbyAssetSettingsOfAccessoryFile, _CLCopyRoutineAssetSettings, + _CLCopyTechnologiesInUse, _CLCopyZaxisStats, _CLDaemonStartedNotification, + _CLDeleteCurrentEmergencyLocationAsset, _CLDurianNBConfigDictionaryKey, + _CLDurianNBRangingAcqDitherMaxKey, _CLDurianNBRangingAcqRetryIntervalKey, + _CLDurianNBRangingAcqTimeoutKey, _CLDurianNBRangingDebugFlagsKey, + _CLDurianNBRangingIntervalKey, _CLDurianNBRangingMMSFragCountryCodeKey, + _CLDurianNBRangingMMSGapKey, _CLDurianNBRangingMMSPSRKey, + _CLDurianNBRangingMMSSequenceIdxKey, _CLDurianNBRangingMMSSlotSizeKey, + _CLDurianNBRangingNBChannelSelectMaskKey, _CLDurianNBRangingNBCountryCodesKey, + _CLDurianNBRangingNBMaskNapChannelKey, _CLDurianNBRangingRangingTimeoutKey, + _CLDurianNBRangingSarCountryCodesKey, _CLDurianNBRangingVersionKey, + _CLDurianRangingIRKKey, _CLGenerateRoadSegmentId, _CLGetAccessoryPASCDTransmissionState, _CLGetAccessoryTypeBitSet, _CLGetArchivedAuthorizationDecisions, _CLGetClientTransientAuthorizationInfo, _CLGetControlPlaneStatusReport, _CLGetEmergencyLocationSettingsVersionInfo, _CLGetLocationDefault, _CLGetOdometryBatchedLocations, _CLGetStatusBarIconState, _CLGetUncertaintyScaleFactors, _CLGnssBandsChangedNotification, - _CLInternalPerformMigration, _CLLocationCoordinate2DGetDistanceFrom, + _CLInternalGetPinnedLocationAuthorizationState, _CLInternalPerformMigration, + _CLInternalSetPinnedLocationAuthorization, _CLLocationCoordinate2DGetDistanceFrom, _CLLocationCoordinate2DIsValid, _CLLocationCoordinate2DMake, _CLLocationDistanceMax, _CLLocationPushServiceErrorDomain, _CLPassKitNotifyPayment, _CLPingDaemon, _CLSetClientTransientAuthorizationInfo, @@ -60,7 +70,8 @@ exports: _kCLClientDistanceFilterNone, _kCLClientHeadingFilterNone, _kCLCommonBackgroundLocationCapability, _kCLCommonLocationAlwaysAndWhenInUseUsageDescriptionKey, _kCLCommonLocationAlwaysUsageDescriptionKey, _kCLCommonLocationAuthorizationPurposeDescriptionDictionaryKey, - _kCLCommonLocationDefaultAccuracyReducedKey, _kCLCommonLocationInterestZonesKey, + _kCLCommonLocationDefaultAccuracyReducedKey, _kCLCommonLocationExplicitServiceSessionKey, + _kCLCommonLocationInterestZonesKey, _kCLCommonLocationRestricted, _kCLCommonLocationTemporaryUsageDescriptionDictionaryKey, _kCLCommonLocationUsageDescriptionKey, _kCLCommonLocationWhenInUseUsageDescriptionKey, _kCLCommonLocationWildernessSafetyUsageDescriptionDictionaryKey, @@ -79,23 +90,29 @@ exports: _kCLLocationCoordinate2DInvalid, _kCLLocationIntegrityHigh, _kCLLocationIntegrityLow, _kCLLocationIntegrityMedium, _kCLLocationIntegrityNone, _kCLPolygonalRegionMaxVertices, _kCLPolygonalRegionMinVertices, - _kInvalidMacAddress ] - objc-classes: [ CLAssertion, CLBBTimeFreqTransferCallbackAssertion, CLBeacon, - CLBeaconIdentityCondition, CLBeaconIdentityConstraint, CLBeaconRegion, - CLCircularGeographicCondition, CLCircularRegion, CLClientTypesPrivate, - CLCondition, CLConstraint, CLEmergencyClientEnablementAssertion, + _kEEDPartnerIDKey, _kInvalidMacAddress, _kRequestTypeMediaUpload, + _kRequestTypeVideoStreaming ] + objc-classes: [ CLAssertion, CLBBTimeFreqTransferCallbackAssertion, CLBIO_DeltaPosition, + CLBIO_DeltaVelocity, CLBIO_Quaternion, CLBackgroundInertialOdometrySample, + CLBeacon, CLBeaconIdentityCondition, CLBeaconIdentityConstraint, + CLBeaconRegion, CLCircularGeographicCondition, CLCircularRegion, + CLClientTypesPrivate, CLCondition, CLConstraint, CLEEDCryptoUtilities, + CLEEDHelper, CLEEDMediaItem, CLEEDMitigation, CLEEDRequest, + CLEEDRequestHelper, CLEEDStreamingRequest, CLEEDUploadRequest, + CLEEDUploadServiceConfig, CLEmergencyClientEnablementAssertion, CLEmergencyEnablementAssertion, CLEmergencyLocationSelector, CLEmergencyLocationSelectorConfig, CLFindMyAccessoryAbsoluteWildConfiguration, CLFindMyAccessoryAccelerometerOrientationModeConfiguration, CLFindMyAccessoryAccelerometerSlopeModeConfiguration, CLFindMyAccessoryConnectionMaterial, - CLFindMyAccessoryFirmwareUpdateManager, CLFindMyAccessoryFirmwareVersion, - CLFindMyAccessoryManager, CLFindMyAccessoryRangingManager, - CLFindMyAccessorySoundSequence, CLFindMyAccessoryUserStats, - CLFindMyAccessoryWildConfiguration, CLFloor, CLGeocoder, CLGnssDisablementAssertion, - CLGnssExtensionsClient, CLHeading, CLLocation, CLLocationGnssOdometerInfo, - CLLocationManager, CLLocationManagerRoutine, CLLocationMatchInfo, - CLLocationSourceInformation, CLLocationTrackRunInfo, CLLocationUpdater, - CLMiLoConnection, CLMiLoConnectionStatus, CLMiLoCustomLoiConfiguration, + CLFindMyAccessoryFindingCapabilities, CLFindMyAccessoryFirmwareUpdateManager, + CLFindMyAccessoryFirmwareVersion, CLFindMyAccessoryManager, + CLFindMyAccessoryRangingManager, CLFindMyAccessorySoundSequence, + CLFindMyAccessoryUserStats, CLFindMyAccessoryWildConfiguration, + CLFloor, CLGNSSStateQueryAssertionResponse, CLGeocoder, CLGnssDisablementAssertion, + CLGnssExtensionsClient, CLHeading, CLLocation, CLLocationCoordinate, + CLLocationGnssOdometerInfo, CLLocationManager, CLLocationManagerRoutine, + CLLocationMatchInfo, CLLocationSourceInformation, CLLocationTrackRunInfo, + CLLocationUpdater, CLMiLoConnection, CLMiLoConnectionStatus, CLMiLoDebugResponse, CLMiLoExportDatabaseTableResult, CLMiLoFingerprintError, CLMiLoFingerprintMetaInfo, CLMiLoGenericEventResponse, CLMiLoLocationType, CLMiLoPlace, CLMiLoPlaceConfidenceReason, CLMiLoPlaceLabel, @@ -103,25 +120,27 @@ exports: CLMiLoPredictionDeviceDistanceIndication, CLMiLoServiceDescriptor, CLMiLoServiceMetaInfo, CLMiLoServicePlacePrediction, CLMiLoServicePredictionLocationSimilarityList, CLMiLoServiceQualityInfo, CLMiLoServiceQualityReason, CLMiLoServiceStatus, - CLMiLoServiceSuspendReason, CLMiLoUpdateConfiguration, CLMonitor, - CLMonitorConfiguration, CLMonitoringEvent, CLMonitoringRecord, - CLPair, CLPlacemark, CLPlatformInfoPrivate, CLRacingRouteParameters, - CLRacingRoutePerformanceResults, CLRacingRouteState, CLRacingRouteVariables, - CLReductiveFilterOptions, CLReductiveFilterSuite, CLRegion, - CLRegulatoryConfig, CLRouteBoundingBox, CLRoutePoint, CLSimulationManager, - CLStateTracker, CLTripSegmentInertialData, CLTripSegmentInputData, - CLTripSegmentLocation, CLTripSegmentOutputData, CLTripSegmentProcessorManager, - CLTripSegmentProcessorOptions, CLUpdate, CLVisit, _CLLSLHeading, - _CLLSLHeadingEstimation, _CLLSLHeadingSupplInfo, _CLLSLLocation, - _CLLSLLocationCoordinate, _CLLSLMapRoadSegment, _CLLocationFusionInfo, - _CLLocationGroundAltitude, _CLMicroLocationClusterIdAndClusterData, - _CLMicroLocationSourceIdAndSourceData, _CLMicroLocationSourcesStatisticsResult, - _CLPlaceInference, _CLPolygonalRegion, _CLRangingPeer, _CLRangingPeerDistance, + CLMiLoServiceSuspendReason, CLMiLoUpdateConfiguration, CLMinimumAltitudeCondition, + CLMinimumAltitudeConstraint, CLMonitor, CLMonitorConfiguration, + CLMonitoringEvent, CLMonitoringRecord, CLPair, CLPlacemark, + CLPlatformInfoPrivate, CLRacingRouteParameters, CLRacingRoutePerformanceResults, + CLRacingRouteState, CLRacingRouteVariables, CLReductiveFilterOptions, + CLReductiveFilterSuite, CLRegion, CLRegulatoryConfig, CLRouteBoundingBox, + CLRoutePoint, CLServiceSession, CLServiceSessionDiagnostic, + CLSimulationManager, CLStateTracker, CLTripSegmentInertialData, + CLTripSegmentInputData, CLTripSegmentLocation, CLTripSegmentOutputData, + CLTripSegmentProcessorManager, CLTripSegmentProcessorOptions, + CLTripSegmentRoadData, CLUpdate, CLVisit, _CLLSLHeading, _CLLSLHeadingEstimation, + _CLLSLHeadingSupplInfo, _CLLSLLocation, _CLLSLLocationCoordinate, + _CLLSLMapRoadSegment, _CLLocationFusionInfo, _CLLocationGroundAltitude, + _CLMicroLocationClusterIdAndClusterData, _CLMicroLocationSourceIdAndSourceData, + _CLMicroLocationSourcesStatisticsResult, _CLPlaceInference, + _CLPolygonalRegion, _CLRangingPeer, _CLRangingPeerDistance, _CLSignificantRegion, _CLVIOEstimation, _CLVLLocalizationDebugInfo, _CLVLLocalizationMaps488Details, _CLVLLocalizationResult, _CLVertex ] - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] symbols: [ _CLAuthStatusChangedNotification, _CLDaemonShutdownNotification ] - targets: [ x86_64-maccatalyst, arm64-maccatalyst, arm64e-maccatalyst ] - objc-classes: [ CLBackgroundActivitySession ] + objc-classes: [ CLBackgroundActivitySession, CLBackgroundActivitySessionDiagnostic ] ... diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLAvailability.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLAvailability.h index cbc6ab2f..ad9b7b58 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLAvailability.h +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLAvailability.h @@ -15,14 +15,6 @@ #import #import -#if defined(__has_include) -#if __has_include() -#include -#endif // AppleFeatures -#else // !defined(__has_include) -#error "__has_include not defined." -#endif // __has_include - #ifdef __cplusplus #define CL_EXTERN extern "C" __attribute__((visibility ("default"))) #else diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLBackgroundActivitySession.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLBackgroundActivitySession.h index b60226cf..29a5abb5 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLBackgroundActivitySession.h +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLBackgroundActivitySession.h @@ -10,6 +10,68 @@ NS_ASSUME_NONNULL_BEGIN +API_AVAILABLE(ios(18.0), watchos(11.0)) API_UNAVAILABLE(macos) NS_REFINED_FOR_SWIFT +@interface CLBackgroundActivitySessionDiagnostic : NSObject +/* + * authorizationDenied + * + * Discussion: + * True if the session will be suspended while the app has been denied + * location authorization. + * + */ +@property (nonatomic, readonly) BOOL authorizationDenied; + +/* + * authorizationDeniedGlobally + * + * Discussion: + * True if the session will be suspended while the user has disabled Location + * Services system-wide. + * + */ +@property (nonatomic, readonly) BOOL authorizationDeniedGlobally; + +/* + * authorizationRestricted + * + * Discussion: + * True if session will be suspended while the app lacks authorization, + * and authorization changes are prevented by parental restrictions, + * MDM configuration, or other factors. + */ + @property (nonatomic, readonly) BOOL authorizationRestricted; + +/* +* insufficientlyInUse +* +* Discussion: +* True if the session will be suspended while the app is not sufficiently +* in-use. +* +*/ +@property (nonatomic, readonly) BOOL insufficientlyInUse; + +/* + * serviceSessionRequired + * + * Discussion: + * True if LocationServices are disabled because the app has adopted CLRequireExplicitServiceSession + * info.plist key but no CLServiceSession requiring authorization is outstanding yet. + * + */ +@property (nonatomic, readonly) BOOL serviceSessionRequired API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + +/* + * authorizationRequestInProgress + * + * Discussion: + * True if the system is requesting authorization from the user on behalf of the app, but no response has been received yet. + * + */ +@property (nonatomic, readonly) BOOL authorizationRequestInProgress API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); +@end + CL_EXTERN API_AVAILABLE(ios(17.0), watchos(10.0)) API_UNAVAILABLE(macos) NS_REFINED_FOR_SWIFT @interface CLBackgroundActivitySession : NSObject @@ -63,12 +125,25 @@ API_AVAILABLE(ios(17.0), watchos(10.0)) API_UNAVAILABLE(macos) NS_REFINED_FOR_SW * * Calling invalidate on the session will terminate it and render it * immediately inactive. + * + * This session does not deliver diagnostic properties. Use + * -backgroundActivitySessionWithQueue:handler: to get diagnostic updates. + * */ -+ (instancetype)backgroundActivitySession API_AVAILABLE(ios(17.0), watchos(10.0) -#if defined(TARGET_OS_VISION) && TARGET_OS_VISION -, visionos(1.0) -#endif -) API_UNAVAILABLE(macos); ++ (instancetype)backgroundActivitySession API_AVAILABLE(ios(17.0), watchos(10.0)) API_UNAVAILABLE(macos); + +/* backgroundActivitySessionWithQueue:handler: + * Discussion: + * Starts a background activity session while delivering diagnostic + * updates to the handler. + * + * queue: Specifies the queue to which the handler is submitted with each + * available diagnostic. + * handler: Specifies the block that will be invoked with each update. + * + * See -backgroundActivitySession for more details + */ ++ (instancetype)backgroundActivitySessionWithQueue:(dispatch_queue_t)queue handler:(void(^)(CLBackgroundActivitySessionDiagnostic * diagnostic))handler API_AVAILABLE(ios(18.0), watchos(11.0)) API_UNAVAILABLE(macos); @end NS_ASSUME_NONNULL_END diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLCondition.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLCondition.h index 067b04bc..b90c3149 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLCondition.h +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLCondition.h @@ -9,15 +9,16 @@ #import #import -#if (((defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \ +#if ((defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \ __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_14_0) || \ (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && \ __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_17_0) || \ (defined(__TV_OS_VERSION_MIN_REQUIRED) && \ __TV_OS_VERSION_MIN_REQUIRED >= __TVOS_17_0) || \ (defined(__WATCH_OS_VERSION_MIN_REQUIRED) && \ - __WATCH_OS_VERSION_MIN_REQUIRED >= __WATCHOS_10_0)) && \ - !TARGET_OS_VISION) + __WATCH_OS_VERSION_MIN_REQUIRED >= __WATCHOS_10_0) || \ + (defined(__VISION_OS_VERSION_MIN_REQUIRED) && \ + __VISION_OS_VERSION_MIN_REQUIRED >= __VISIONOS_2_0)) //To prevent iPadOS apps from crashing in visionOS #define CL_TARGET_SUPPORTS_CONDITIONS 1 #else #define CL_TARGET_SUPPORTS_CONDITIONS 0 diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLLocationUpdater.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLLocationUpdater.h index 01774961..581130a7 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLLocationUpdater.h +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLLocationUpdater.h @@ -41,30 +41,114 @@ API_AVAILABLE(ios(17.0), macos(14.0), watchos(10.0), tvos(17.0)) NS_REFINED_FOR_ @interface CLUpdate : NSObject /* - * isStationary + * authorizationDenied + * + * Discussion: + * True if updates will be suspended while the app has been denied + * location authorization. + * + */ +@property (nonatomic, readonly) BOOL authorizationDenied API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0), macos(15.0)); + +/* + * authorizationDeniedGlobally + * + * Discussion: + * True if updates will be suspended while the user has disabled Location + * Services system-wide. + * + */ +@property (nonatomic, readonly) BOOL authorizationDeniedGlobally API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0), macos(15.0)); + +/* + * authorizationRestricted + * + * Discussion: + * True if updates will be suspended while the app lacks authorization, + * and authorization changes are prevented by parental restrictions, + * MDM configuration, or other factors. + */ +@property (nonatomic, readonly) BOOL authorizationRestricted API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0), macos(15.0)); + +/* + * isStationary + * + * Discussion: + * Deprecated. See -stationary. + * + */ +@property (readonly) BOOL isStationary API_DEPRECATED_WITH_REPLACEMENT("-stationary", ios(17.0, 17.0), macos(14.0, 14.0), tvos(17.0, 17.0)); + +/* + * stationary * * Discussion: * Updates may stop flowing temporarily for many reasons such as * the app is no longer authorized for locations or if its * location becomes unknown. If CoreLocation stops * delivering updates because the device is stationary, then - * isStationary will be set to YES. Otherwise it will be NO. + * stationary will be set to YES. Otherwise it will be NO. * - * If isStationary is YES, then updates may be suspended until + * If stationary is YES, then updates may be suspended until * the user next moves, or their location becomes unknown. * */ -#if defined(TARGET_OS_VISION) && TARGET_OS_VISION -@property (readonly) BOOL isStationary API_AVAILABLE(ios(17.0), macos(14.0), watchos(10.0), tvos(17.0), visionos(1.0)); -#else -@property (readonly) BOOL isStationary API_AVAILABLE(ios(17.0), macos(14.0), watchos(10.0), tvos(17.0)); -#endif +@property (readonly) BOOL stationary API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0), macos(15.0)); + +/* + * insufficientlyInUse + * + * Discussion: + * True if updates will be suspended while the app is not sufficiently + * in-use. + * + */ +@property (nonatomic, readonly) BOOL insufficientlyInUse API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0), macos(15.0)); + +/* + * locationUnavailable + * + * Discussion: + * True if updates will be suspended while the device's location can no + * longer be determined. + * + */ +@property (nonatomic, readonly) BOOL locationUnavailable API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0), macos(15.0)); + +/* + * accuracyLimited + * + * Discussion: + * True if further updates will be suspended for some time while the app is + * subject to accuracy limitation. + * + */ +@property (nonatomic, readonly) BOOL accuracyLimited API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0), macos(15.0)); + +/* + * serviceSessionRequired + * + * Discussion: + * True if LocationServices are disabled because the app has adopted CLRequireExplicitServiceSession + * info.plist key but no CLServiceSession requiring authorization is outstanding yet. + * + */ +@property (nonatomic, readonly) BOOL serviceSessionRequired API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + +/* + * authorizationRequestInProgress + * + * Discussion: + * True if the system is requesting authorization from the user on behalf of the app, but no response has been received yet. + * + */ +@property (nonatomic, readonly) BOOL authorizationRequestInProgress API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); /* - * location + * location * * Discussion: - * Return the user's location if available, otherwise returns nil. + * Return the user's location if available, otherwise returns nil. * */ #if defined(TARGET_OS_VISION) && TARGET_OS_VISION diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitor.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitor.h index a6e8f506..d01a82c7 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitor.h +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitor.h @@ -24,9 +24,10 @@ NS_ASSUME_NONNULL_BEGIN */ NS_REFINED_FOR_SWIFT NS_SWIFT_SENDABLE CL_EXTERN -API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos) #if defined(TARGET_OS_VISION) && TARGET_OS_VISION -API_UNAVAILABLE(visionos) +API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos, visionos) +#else +API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos) #endif @interface CLMonitor : NSObject @@ -70,10 +71,7 @@ API_UNAVAILABLE(visionos) * */ + (void)requestMonitorWithConfiguration:(CLMonitorConfiguration *)config - completion:(void(^)(CLMonitor *monitor))completionHandler API_AVAILABLE(ios(17.0), macos(14.0)) API_UNAVAILABLE(watchos, tvos) -#if defined(TARGET_OS_VISION) && TARGET_OS_VISION -API_UNAVAILABLE(visionos) -#endif + completion:(void(^)(CLMonitor *monitor))completionHandler NS_REFINED_FOR_SWIFT NS_SWIFT_ASYNC(2); /* diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitorConfiguration.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitorConfiguration.h index 8f7489da..c0054f99 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitorConfiguration.h +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitorConfiguration.h @@ -12,11 +12,9 @@ NS_ASSUME_NONNULL_BEGIN -#if !TARGET_OS_VISION @class CLLocationManager; @class CLMonitor; @class CLMonitoringEvent; -#endif /* * `CLMonitorConfiguration` describes the configuration with which a `CLMonitor` * instance can be created. @@ -24,9 +22,10 @@ NS_ASSUME_NONNULL_BEGIN */ NS_REFINED_FOR_SWIFT NS_SWIFT_SENDABLE CL_EXTERN -API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos) #if defined(TARGET_OS_VISION) && TARGET_OS_VISION -API_UNAVAILABLE(visionos) +API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos, visionos) +#else +API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos) #endif @interface CLMonitorConfiguration : NSObject @@ -48,7 +47,6 @@ API_UNAVAILABLE(visionos) */ @property (readonly) dispatch_queue_t queue; -#if !TARGET_OS_VISION /* * handler * @@ -76,7 +74,6 @@ API_UNAVAILABLE(visionos) + (CLMonitorConfiguration *)configWithMonitorName:(NSString *)name queue:(dispatch_queue_t)queue eventHandler:(void(^)(CLMonitor *monitor, CLMonitoringEvent *event))eventHandler; -#endif @end diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitoringEvent.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitoringEvent.h index 2c1e3b76..0b0cb976 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitoringEvent.h +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitoringEvent.h @@ -20,7 +20,11 @@ typedef NS_ENUM(NSUInteger, CLMonitoringState) { CLMonitoringStateUnknown, CLMonitoringStateSatisfied, CLMonitoringStateUnsatisfied, - CLMonitoringStateUnmonitored API_AVAILABLE(macos(14.2), ios(17.2)) API_UNAVAILABLE(tvos, watchos) +#if defined(TARGET_OS_VISION) && TARGET_OS_VISION + CLMonitoringStateUnmonitored API_AVAILABLE(macos(14.2), ios(17.2)) API_UNAVAILABLE(tvos, watchos, visionos), +#else + CLMonitoringStateUnmonitored API_AVAILABLE(macos(14.2), ios(17.2)) API_UNAVAILABLE(tvos, watchos), +#endif } NS_REFINED_FOR_SWIFT; /* @@ -33,9 +37,10 @@ typedef NS_ENUM(NSUInteger, CLMonitoringState) { */ NS_REFINED_FOR_SWIFT CL_EXTERN -API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos) #if defined(TARGET_OS_VISION) && TARGET_OS_VISION -API_UNAVAILABLE(visionos) +API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos, visionos) +#else +API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos) #endif @interface CLMonitoringEvent : NSObject @@ -76,6 +81,108 @@ API_UNAVAILABLE(visionos) */ @property (readonly, strong) NSDate *date; +/* + * authorizationDenied + * + * Discussion: + * True if events will be suspended while the app has been denied + * location authorization. + * + */ +@property (nonatomic, readonly) BOOL authorizationDenied API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + +/* + * authorizationDeniedGlobally + * + * Discussion: + * True if events will be suspended while the user has disabled Location + * Services system-wide. + * + */ +@property (nonatomic, readonly) BOOL authorizationDeniedGlobally API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + +/* + * authorizationRestricted + * + * Discussion: + * True if events will be suspended while the app lacks authorization, + * and authorization changes are prevented by parental restrictions, + * MDM configuration, or other factors. + * + */ +@property (nonatomic, readonly) BOOL authorizationRestricted API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + +/* + * insufficientlyInUse + * + * Discussion: + * True if events will be suspended while the app is not sufficiently + * in-use. + * + */ +@property (nonatomic, readonly) BOOL insufficientlyInUse API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + +/* + * accuracyLimited + * + * Discussion: + * True if events will not be delivered because the app is subject + * to accuracy limitation. + * + */ +@property (nonatomic, readonly) BOOL accuracyLimited API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + +/* + * conditionUnsupported + * + * Discussion: + * True if events will be suspended for this condition because + * monitoring is not supported for conditions of its type. + * + */ + @property (nonatomic, readonly) BOOL conditionUnsupported API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + +/* + * conditionLimitExceeded + * + * Discussion: + * True if events will be suspended for this condition while the app + * has too many other conditions of this type monitored. + * + */ +@property (nonatomic, readonly) BOOL conditionLimitExceeded API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + + /* + * persistenceUnavailable + * + * Discussion: + * True if monitoring is not possible due to persistence failure. + * Some or all properties of the condition, if identified, or all conditions, + * and events associated with the monitoring of affected conditions may not + * be stored persistently. + * + */ +@property (nonatomic, readonly) BOOL persistenceUnavailable API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + +/* + * serviceSessionRequired + * + * Discussion: + * True if LocationServices are disabled because the app has adopted CLRequireExplicitServiceSession + * info.plist key but no CLServiceSession requiring authorization is outstanding yet. + * + */ +@property (nonatomic, readonly) BOOL serviceSessionRequired API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + +/* + * authorizationRequestInProgress + * + * Discussion: + * True if the system is requesting authorization from the user on behalf of the app, but no response has been received yet. + * + */ +@property (nonatomic, readonly) BOOL authorizationRequestInProgress API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos); + - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitoringRecord.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitoringRecord.h index 80ba8e35..992f1acc 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitoringRecord.h +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLMonitoringRecord.h @@ -28,9 +28,10 @@ NS_ASSUME_NONNULL_BEGIN */ NS_REFINED_FOR_SWIFT CL_EXTERN -API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos) #if defined(TARGET_OS_VISION) && TARGET_OS_VISION -API_UNAVAILABLE(visionos) +API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos, visionos) +#else +API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(watchos, tvos) #endif @interface CLMonitoringRecord : NSObject diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLPlacemark.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLPlacemark.h index fac3d9d3..993b4fe5 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLPlacemark.h +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLPlacemark.h @@ -24,7 +24,7 @@ NS_ASSUME_NONNULL_BEGIN * information such as the country, state, city, and street address. */ CL_EXTERN -API_AVAILABLE(macos(10.8), ios(5.0)) +NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.8), ios(5.0)) @interface CLPlacemark : NSObject { @private diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CLServiceSession.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLServiceSession.h new file mode 100644 index 00000000..49c64156 --- /dev/null +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CLServiceSession.h @@ -0,0 +1,243 @@ +// +// CLServiceSession.h +// CoreLocation +// +// Created by Siraj Abidi on 04/11/24. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0) +#if defined(TARGET_OS_VISION) && TARGET_OS_VISION +, visionos(2.0) +#endif +) API_UNAVAILABLE(macos) +typedef NS_ENUM(NSInteger, CLServiceSessionAuthorizationRequirement) { + CLServiceSessionAuthorizationRequirementNone = 0, + CLServiceSessionAuthorizationRequirementWhenInUse, + CLServiceSessionAuthorizationRequirementAlways API_UNAVAILABLE(tvos), +} NS_REFINED_FOR_SWIFT; + +API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0) +#if defined(TARGET_OS_VISION) && TARGET_OS_VISION +, visionos(2.0) +#endif +) API_UNAVAILABLE(macos) NS_REFINED_FOR_SWIFT +@interface CLServiceSessionDiagnostic : NSObject +/* + * authorizationDenied + * + * Discussion: + * True if the session will be suspended while the app has been denied + * location authorization. + * + */ +@property (nonatomic, readonly) BOOL authorizationDenied; + +/* + * authorizationDeniedGlobally + * + * Discussion: + * True if the session will be suspended while the user has disabled Location + * Services system-wide. + * + */ +@property (nonatomic, readonly) BOOL authorizationDeniedGlobally; + +/* + * authorizationRestricted + * + * Discussion: + * True if session will be suspended while the app lacks authorization, + * and authorization changes are prevented by parental restrictions, + * MDM configuration, or other factors. + * + */ + @property (nonatomic, readonly) BOOL authorizationRestricted; + +/* + * insufficientlyInUse + * + * Discussion: + * True if the session will be suspended while the app is not sufficiently + * in-use. + * + */ +@property (nonatomic, readonly) BOOL insufficientlyInUse; + +/* + * serviceSessionRequired + * + * Discussion: + * True if LocationServices are disabled because the app has adopted CLRequireExplicitServiceSession + * info.plist key but no CLServiceSession requiring authorization is outstanding yet. + * + */ +@property (nonatomic, readonly) BOOL serviceSessionRequired; + +/* + * fullAccuracyDenied + * + * Discussion: + * True if a session requiring FullAccuracy has been denied full accuracy due to user decision. + * + */ +@property (nonatomic, readonly) BOOL fullAccuracyDenied; + +/* +* alwaysAuthorizationDenied +* +* Discussion: +* True if a session requiring Always authorization has been denied Always due to user decision. +* +*/ +@property (nonatomic, readonly) BOOL alwaysAuthorizationDenied; + +/* + * authorizationRequestInProgress + * + * Discussion: + * True if the system is requesting authorization from the user on behalf of the app, but no response has been received yet. + * + */ +@property (nonatomic, readonly) BOOL authorizationRequestInProgress; + +@end + +CL_EXTERN +API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0) +#if defined(TARGET_OS_VISION) && TARGET_OS_VISION +, visionos(2.0) +#endif +) API_UNAVAILABLE(macos) NS_REFINED_FOR_SWIFT +@interface CLServiceSession : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + + +/* + * sessionRequiringAuthorization: + * + * Discussion: + * Creates a CLServiceSession instance with specified authorization requirement. + * + * authorizationRequirement: Passing None for authorization requirement + * creates a session object which does not seek authorization from the user, + * but meets a requested Explicit Service Session requirement if authorization + * has already been obtained. + * + * Passing an authorization requirement other than .none will cause + * Location Services to seek the corresponding level of authorization + * from the user when possible. + * + * Like a CLBackgroundActivitySession instance, a CLServiceSession + * instance should be created while in-use, or immediately when launched + * in the background if a matching session was held when previously + * running. If an instance is created that does not meet either + * requirement, it will yield the .insufficientlyInUse diagnostic until + * the app returns to the foreground (off-course to receive updates use the below + * variant which specifies a handler) + * + * Note: A CLServiceSession instance with an authorization requirement of + * .always must be held, and reporting no relevant diagnostic properties, + * whenever Always authorization is to be leveraged. An app with Always + * authorization, but which is not holding such a CLServiceSession will + * not be able to receive CLLocationUpdate.liveUpdates() or CLMonitor.events() + * when it is not in-use. So be careful to take one when the user + * configures always-operation, and retake it promptly during launch + * after background termination. + * + */ ++ (CLServiceSession *)sessionRequiringAuthorization:(CLServiceSessionAuthorizationRequirement)authorizationRequirement API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0) +#if defined(TARGET_OS_VISION) && TARGET_OS_VISION +, visionos(2.0) +#endif +) API_UNAVAILABLE(macos); + +/* sessionRequiringAuthorization:queue:handler: + * Discussion: + * Creates a CLServiceSession instance with specified authorization requirement. + * Session behaves the same as decribed for sessionRequiringAuthorization: + * + * queue: Specifies the queue to which the handler is submitted for receiving + * diagnostic updates + * + * handler: Specifies the block that will be invoked with each diagnostic update. + * + */ ++ (CLServiceSession *)sessionRequiringAuthorization:(CLServiceSessionAuthorizationRequirement)authorizationRequirement + queue:(dispatch_queue_t)queue + handler:(void(^)(CLServiceSessionDiagnostic *diagnostic))handler API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0) +#if defined(TARGET_OS_VISION) && TARGET_OS_VISION +, visionos(2.0) +#endif +) API_UNAVAILABLE(macos); + + +/* + * sessionRequiringAuthorization:fullAccuracyPurposeKey: + * + * Discussion: + * Creates a CLServiceSession instance with specified authorization requirement + * and fullAccuracy Purpose Key + * + * authorizationRequirement: + * Same as applicable for sessionRequiringAuthorization: i.e Passing an + * authorization requirement other than .none will cause Location Services + * to seek the corresponding level of authorization from the user when possible. + * + * fullAccuracyPurposeKey: + * Names a string in the NSLocationTemporaryUsageDescriptionDictionary. + * Location Services will request temporary full accuracy authorization + * from the user using this string if necessary while this session is + * outstanding. + * + */ ++ (CLServiceSession *)sessionRequiringAuthorization:(CLServiceSessionAuthorizationRequirement)authorizationRequirement + fullAccuracyPurposeKey:(nonnull NSString *)purposeKey API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0) +#if defined(TARGET_OS_VISION) && TARGET_OS_VISION +, visionos(2.0) +#endif +) API_UNAVAILABLE(macos); + + + +/* + * sessionRequiringAuthorization:fullAccuracyPurposeKey:queue:handler: + * + * Discussion: + * Creates a CLServiceSession instance with specified authorization requirement + * and fullAccuracy Purpose Key same as sessionRequiringAuthorization:fullAccuracyPurposeKey: + * + * This variant allows to specify a queue to which specified callback handler + * will be submitted for receiving diagnostic updates. + */ ++ (CLServiceSession *)sessionRequiringAuthorization:(CLServiceSessionAuthorizationRequirement)authorizationRequirement + fullAccuracyPurposeKey:(nonnull NSString *)purposeKey + queue:(dispatch_queue_t)queue + handler:(void(^)(CLServiceSessionDiagnostic *diagnostic))handler API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0) +#if defined(TARGET_OS_VISION) && TARGET_OS_VISION +, visionos(2.0) +#endif +) API_UNAVAILABLE(macos); + + +/* + * invalidate + * + * Discussion: + * Ends the session immediately. Once the session is + * invalidated it cannot become active again. + */ +- (void)invalidate API_AVAILABLE(ios(18.0), watchos(11.0), tvos(18.0) +#if defined(TARGET_OS_VISION) && TARGET_OS_VISION +, visionos(2.0) +#endif +) API_UNAVAILABLE(macos); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/CoreLocation.framework/Versions/A/Headers/CoreLocation.h b/Frameworks/CoreLocation.framework/Versions/A/Headers/CoreLocation.h index d884b74d..c5908a1f 100644 --- a/Frameworks/CoreLocation.framework/Versions/A/Headers/CoreLocation.h +++ b/Frameworks/CoreLocation.framework/Versions/A/Headers/CoreLocation.h @@ -40,5 +40,6 @@ #import #import #import +#import #endif /* __CORELOCATION__ */ diff --git a/Frameworks/CoreServices.framework/Versions/A/CoreServices.tbd b/Frameworks/CoreServices.framework/Versions/A/CoreServices.tbd index 780d5f3b..557faad2 100644 --- a/Frameworks/CoreServices.framework/Versions/A/CoreServices.tbd +++ b/Frameworks/CoreServices.framework/Versions/A/CoreServices.tbd @@ -155,6 +155,56 @@ allowable-clients: exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] + symbols: [ _CallComponent, _CallComponentFunctionWithStorageProcInfo_TVector, + _DeclineVolumeNotification, _DeclineVolumeNotificationWithFlags, + _DestroyComponent, _DisposeCollectionNotificationAddUPP, _DisposeCollectionNotificationRemoveUPP, + _DisposeStackListCompareUPP, _DisposeStackListConvertUPP, + _DisposeThreadEventsWaitingUPP, _DisposeThreadInitHookUPP, + _DisposeVNUPP, _Endian64_Swap, _ErrorTranslate, _FSGetCanonicalPath, + _FSGetDefaultTextEncoding, _FSMountCopyIOMediaIconBundleIdentifier, + _FSMountCopyIOMediaIconFamilyName, _FSMountDestroy, _FSMountGetCapabilities, + _FSMountGetFSID, _FSMountGetIOBlockSize, _FSMountGetMaxFileSize, + _FSMountGetMountID, _FSMountGetMountPoint, _FSMountGetMutableVolumeInfo, + _FSMountGetSpecialDeviceType, _FSMountGetVolumeCreationDate, + _FSMountGetVolumeFlags, _FSMountGetVolumeName, _FSMountGetVolumeUUID, + _FSMountMakepath, _FSMountMountIDToVRefNum, _FSMountPrepare, + _FSMountPrepareWithMountPointString, _FSMountRenameVolume, + _FSMountSetProperty, _FSMountStorageSize, _FSMountUpdateCaseInsensitiveName, + _FSMountVCBVRefNum, _FSObjTypeToFSNodeObjectType, _FSRefCreate64, + _FSSetDefaultTextEncoding, _FileIDTreeCreateMountPointArrayWithOptions, + _FileIDTreeGetChildIDFromName, _FileIDTreeGetEntryInfoFromFileID, + _FileIDTreeGetFileIDFromPath, _GetCollectionNotificationAddProc, + _GetCollectionNotificationRemoveProc, _GetFSRefComponentsForFileReferenceURL, + _GetMacOSStatusCommentString, _GetMacOSStatusErrorCodes, _GetMacOSStatusErrorString, + _GetScriptManagerVariable, _IUMagWString, _InitScriptBundleComponent, + _IntlGetInitValues, _InvokeCollectionNotificationAddUPP, _InvokeCollectionNotificationRemoveUPP, + _InvokeStackListCompareUPP, _InvokeStackListConvertUPP, _InvokeThreadEventsWaitingUPP, + _InvokeThreadInitHookUPP, _InvokeVNUPP, _MPCreateTaskCFM, + _ModeToFSNodeType, _NewCollectionNotificationAddUPP, _NewCollectionNotificationRemoveUPP, + _NewStackListCompareUPP, _NewStackListConvertUPP, _NewThreadEventsWaitingUPP, + _NewThreadInitHookUPP, _NewVNUPP, _OLD_NEXT_COLORS, _PrintLaunchDebugInfo, + _RMAddResFileToSearchPath, _RMRemoveResFileFromSearchPath, + _RefFix2X, _RefX2Fix, _RefX2Frac, _RequestVolumeNotification, + _RequestVolumeNotificationWithFlags, _S64Absolute, _SMDisposeIntlSpec, + _SMInitIntlSpec, _SetCollectionNotificationAddProc, _SetCollectionNotificationRemoveProc, + _SetGetFNumProc, _SetGetFontFromPortProc, _SetGetFontNameProc, + _SetGetFontScriptProc, _SetInitializeScriptHLProc, _SetOverrideAttributes, + _SetScriptManagerVariable, _TSGetMainThreadBacktrace, _TUCharacterByteType, + _TransferCustomIconAndBadge, _UCKeyboardLayoutStringMax, _UmapBCharToUChars, + _UmapCloseMapping, _UmapGetCharsToComposeUSet, _UmapOpenMapping, + _UmapScanUCharElement, _UmapSetFallbacks, _UmapSetLookupInfo, + _UmapUCharElementToBChars, __CSCopyNamedData, __CSCreateSeed, + __CSDestroySeed, __CSGetProcessorArchitecture, __CSIncrementSeed, + __CSReadSeed, __CSWriteSeed, __FSAddVolumeObserver, __FSAddVolumeObserverOnQueue, + __FSRemoveVolumeObserver, __FSRemoveVolumeObserverOnQueue, + __FileIDTreeGetSKServiceDescription, __GDBUserBreakCallbackFunc, + __GDBUserBreakShouldSignalWithSIGINT, __SCSeedGetSKServiceDescription, + _dec2numl, _gCarbonDiskSwitchDialog, _kFSEventVolumeAboutToRename, + _kFSEventVolumeAboutToUnmount, _kFSEventVolumeMounted, _kFSEventVolumePropertyChanged, + _kFSEventVolumeRenamed, _kFSEventVolumeRepairStarted, _kFSEventVolumeUnmountFailed, + _kFSEventVolumeUnmounted, _ldtox80, _lowMem, _num2decl, _relationl, + _scRunningInCacheServer, _x80told ] + - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] symbols: [ _AbsoluteDeltaToDuration, _AbsoluteDeltaToNanoseconds, _AbsoluteToDuration, _AbsoluteToNanoseconds, _AddAbsoluteToAbsolute, _AddAtomic, _AddAtomic16, _AddAtomic8, _AddCollectionItem, _AddCollectionItemHdl, @@ -179,19 +229,18 @@ exports: _CSMemReallocateHandle, _CSMemRecoverHandle, _CSMemSetHandleSize, _CSMemSetPtrSize, _CSRefCreateInstance, _CSRefRelease, _CSRefReleaseCallbackForCF, _CSRefRetain, _CSRefRetainCallbackForCF, _CSSetComponentsThreadMode, - _CallComponent, _CallComponentCanDo, _CallComponentClose, - _CallComponentDispatch, _CallComponentFunction, _CallComponentFunctionWithStorage, - _CallComponentFunctionWithStorageProcInfo, _CallComponentFunctionWithStorageProcInfo_TVector, - _CallComponentGetMPWorkFunction, _CallComponentGetPublicResource, - _CallComponentOpen, _CallComponentRegister, _CallComponentTarget, - _CallComponentUnregister, _CallComponentVersion, _CallThreadInitHooks, - _CaptureComponent, _CarbonCoreGetMainRunLoop, _ChangeTextToUnicodeInfo, - _ChangeUnicodeToTextInfo, _ChangedResource, _CharacterByteType, - _CharacterType, _ClassicVolumeGetStartupInfo, _ClearIntlResourceCache, - _ClearStackList, _CloneCollection, _CloseComponent, _CloseComponentResFile, - _CloseResFile, _CollectionTagExists, _CompareAndSwap, _CompareString, - _CompareText, _CompleteFolderRouting, _ConvertFromPStringToUnicode, - _ConvertFromTextToUnicode, _ConvertFromTextToUnicodeNoInit, + _CallComponentCanDo, _CallComponentClose, _CallComponentDispatch, + _CallComponentFunction, _CallComponentFunctionWithStorage, + _CallComponentFunctionWithStorageProcInfo, _CallComponentGetMPWorkFunction, + _CallComponentGetPublicResource, _CallComponentOpen, _CallComponentRegister, + _CallComponentTarget, _CallComponentUnregister, _CallComponentVersion, + _CallThreadInitHooks, _CaptureComponent, _CarbonCoreGetMainRunLoop, + _ChangeTextToUnicodeInfo, _ChangeUnicodeToTextInfo, _ChangedResource, + _CharacterByteType, _CharacterType, _ClassicVolumeGetStartupInfo, + _ClearIntlResourceCache, _ClearStackList, _CloneCollection, + _CloseComponent, _CloseComponentResFile, _CloseResFile, _CollectionTagExists, + _CompareAndSwap, _CompareString, _CompareText, _CompleteFolderRouting, + _ConvertFromPStringToUnicode, _ConvertFromTextToUnicode, _ConvertFromTextToUnicodeNoInit, _ConvertFromUnicodeToPString, _ConvertFromUnicodeToScriptCodeRun, _ConvertFromUnicodeToText, _ConvertFromUnicodeToTextNoInit, _ConvertFromUnicodeToTextRun, _ConvertLocalTimeToUTC, _ConvertLocalToUTCDateTime, @@ -209,19 +258,28 @@ exports: _CreateUnicodeToTextRunInfoByEncoding, _CreateUnicodeToTextRunInfoByScriptCode, _CurResFile, _DTCurrentContextIsDeferredTask, _DebugAssert, _DebugCStr, _DebugDumpGestalt, _DebugGestalt, _DebugGestaltStr, - _DebugLogEntry, _DebugPrint, _DebugStr, _Debugger, _DeclineVolumeNotification, - _DeclineVolumeNotificationWithFlags, _DecrementAtomic, _DecrementAtomic16, - _DecrementAtomic8, _Delay, _DelegateComponentCall, _DeleteGestaltValue, - _Dequeue, _DestroyComponent, _DetachHandleFromExternalPtr, + _DebugLogEntry, _DebugPrint, _DebugStr, _Debugger, _DecrementAtomic, + _DecrementAtomic16, _DecrementAtomic8, _Delay, _DelegateComponentCall, + _DeleteGestaltValue, _Dequeue, _DetachHandleFromExternalPtr, _DetachResource, _DetachResourceFile, _DetermineIfPathIsEnclosedByFolder, - _DisposeCollection, _DisposeComponentFunctionUPP, _DisposeDebugComponent, - _DisposeDebugLog, _DisposeHandle, _DisposePtr, _DisposeStackList, - _DisposeTextToUnicodeInfo, _DisposeTextToUnicodeInfoNoInit, - _DisposeThread, _DisposeThreadInitHookUPP, _DisposeUnicodeToTextInfo, + _DisposeCollection, _DisposeCollectionExceptionUPP, _DisposeCollectionFlattenUPP, + _DisposeComponentFunctionUPP, _DisposeComponentMPWorkFunctionUPP, + _DisposeComponentRoutineUPP, _DisposeDebugAssertOutputHandlerUPP, + _DisposeDebugComponent, _DisposeDebugComponentCallbackUPP, + _DisposeDebugLog, _DisposeDebuggerDisposeThreadUPP, _DisposeDebuggerNewThreadUPP, + _DisposeDebuggerThreadSchedulerUPP, _DisposeDeferredTaskUPP, + _DisposeExceptionHandlerUPP, _DisposeFNSubscriptionUPP, _DisposeFSVolumeEjectUPP, + _DisposeFSVolumeMountUPP, _DisposeFSVolumeUnmountUPP, _DisposeFileInterrogatorUPP, + _DisposeFolderManagerNotificationUPP, _DisposeGetMissingComponentResourceUPP, + _DisposeHandle, _DisposeIOCompletionUPP, _DisposeIndexToUCStringUPP, + _DisposePtr, _DisposeResErrUPP, _DisposeSelectorFunctionUPP, + _DisposeStackList, _DisposeTextToUnicodeInfo, _DisposeTextToUnicodeInfoNoInit, + _DisposeThread, _DisposeThreadEntryUPP, _DisposeThreadSchedulerUPP, + _DisposeThreadSwitchUPP, _DisposeThreadTerminationUPP, _DisposeTimerUPP, + _DisposeUnicodeToTextFallbackUPP, _DisposeUnicodeToTextInfo, _DisposeUnicodeToTextInfoNoInit, _DisposeUnicodeToTextRunInfo, - _DisposeVNUPP, _DurationToAbsolute, _DurationToNanoseconds, - _EmptyCollection, _EmptyHandle, _Endian64_Swap, _Enqueue, - _EqualString, _ErrorTranslate, _ExtendedToString, _FIDDumpFileIDMap, + _DurationToAbsolute, _DurationToNanoseconds, _EmptyCollection, + _EmptyHandle, _Enqueue, _EqualString, _ExtendedToString, _FIDDumpFileIDMap, _FIDListFileIDMaps, _FNGetDirectoryForSubscription, _FNNotify, _FNNotifyAll, _FNNotifyByPath, _FNSubscribe, _FNSubscribeByPath, _FNUnsubscribe, _FSAllocateFork, _FSCancelVolumeOperation, @@ -245,30 +303,21 @@ exports: _FSFileSecuritySetGroup, _FSFileSecuritySetGroupUUID, _FSFileSecuritySetMode, _FSFileSecuritySetOwner, _FSFileSecuritySetOwnerUUID, _FSFindFolder, _FSFlushFork, _FSFlushVolume, _FSFollowFinderAlias, _FSGetAsyncEjectStatus, - _FSGetAsyncMountStatus, _FSGetAsyncUnmountStatus, _FSGetCanonicalPath, - _FSGetCatalogInfo, _FSGetCatalogInfoBulk, _FSGetDataForkName, - _FSGetDefaultTextEncoding, _FSGetForkCBInfo, _FSGetForkPosition, - _FSGetForkSize, _FSGetHFSUniStrFromString, _FSGetResourceForkName, - _FSGetTemporaryDirectoryForReplaceObject, _FSGetVolumeForDADisk, - _FSGetVolumeForDiskID, _FSGetVolumeInfo, _FSGetVolumeMountInfo, - _FSGetVolumeMountInfoSize, _FSGetVolumeParent, _FSGetVolumeParms, - _FSIsAliasFile, _FSIsFSRefValid, _FSIterateForks, _FSLockRange, - _FSMakeFSRefUnicode, _FSMatchAliasBulk, _FSMountCopyIOMediaIconBundleIdentifier, - _FSMountCopyIOMediaIconFamilyName, _FSMountDestroy, _FSMountGetCapabilities, - _FSMountGetFSID, _FSMountGetIOBlockSize, _FSMountGetMaxFileSize, - _FSMountGetMountID, _FSMountGetMountPoint, _FSMountGetMutableVolumeInfo, - _FSMountGetSpecialDeviceType, _FSMountGetVolumeCreationDate, - _FSMountGetVolumeFlags, _FSMountGetVolumeName, _FSMountGetVolumeUUID, - _FSMountLocalVolumeAsync, _FSMountLocalVolumeSync, _FSMountMakepath, - _FSMountMountIDToVRefNum, _FSMountPrepare, _FSMountPrepareWithMountPointString, - _FSMountRenameVolume, _FSMountServerVolumeAsync, _FSMountServerVolumeSync, - _FSMountSetProperty, _FSMountStorageSize, _FSMountUpdateCaseInsensitiveName, - _FSMountVCBVRefNum, _FSMoveObject, _FSMoveObjectAsync, _FSMoveObjectAsyncWithCallbacks, + _FSGetAsyncMountStatus, _FSGetAsyncUnmountStatus, _FSGetCatalogInfo, + _FSGetCatalogInfoBulk, _FSGetDataForkName, _FSGetForkCBInfo, + _FSGetForkPosition, _FSGetForkSize, _FSGetHFSUniStrFromString, + _FSGetResourceForkName, _FSGetTemporaryDirectoryForReplaceObject, + _FSGetVolumeForDADisk, _FSGetVolumeForDiskID, _FSGetVolumeInfo, + _FSGetVolumeMountInfo, _FSGetVolumeMountInfoSize, _FSGetVolumeParent, + _FSGetVolumeParms, _FSIsAliasFile, _FSIsFSRefValid, _FSIterateForks, + _FSLockRange, _FSMakeFSRefUnicode, _FSMatchAliasBulk, _FSMountLocalVolumeAsync, + _FSMountLocalVolumeSync, _FSMountServerVolumeAsync, _FSMountServerVolumeSync, + _FSMoveObject, _FSMoveObjectAsync, _FSMoveObjectAsyncWithCallbacks, _FSMoveObjectSync, _FSMoveObjectToTrashAsync, _FSMoveObjectToTrashSync, _FSNewAlias, _FSNewAliasFromPath, _FSNewAliasMinimal, _FSNewAliasMinimalUnicode, - _FSNewAliasUnicode, _FSObjTypeToFSNodeObjectType, _FSOpenFork, - _FSOpenIterator, _FSOpenOrphanResFile, _FSOpenResFile, _FSOpenResourceFile, - _FSOpenResourceFileMapped, _FSPathCopyExtendedAttribute, _FSPathCopyExtendedAttributeList, + _FSNewAliasUnicode, _FSOpenFork, _FSOpenIterator, _FSOpenOrphanResFile, + _FSOpenResFile, _FSOpenResourceFile, _FSOpenResourceFileMapped, + _FSPathCopyExtendedAttribute, _FSPathCopyExtendedAttributeList, _FSPathCopyObjectAsync, _FSPathCopyObjectAsyncWithCallbacks, _FSPathCopyObjectSync, _FSPathCopyObjectSyncWithCallbacks, _FSPathFileOperationCopyStatus, _FSPathGetTemporaryDirectoryForReplaceObject, @@ -277,27 +326,25 @@ exports: _FSPathMoveObjectSyncWithCallbacks, _FSPathMoveObjectToTrashAsync, _FSPathMoveObjectToTrashSync, _FSPathRemoveExtendedAttribute, _FSPathReplaceObject, _FSPathSetExtendedAttribute, _FSReadFork, - _FSRefCreate64, _FSRefMakePath, _FSRemoveExtendedAttribute, - _FSRemoveExtendedAttributeByForkRefNum, _FSRenameUnicode, - _FSReplaceObject, _FSReservationAcquire, _FSReservationCopyPath, - _FSReservationCreateWithFSRef, _FSReservationCreateWithPath, + _FSRefMakePath, _FSRemoveExtendedAttribute, _FSRemoveExtendedAttributeByForkRefNum, + _FSRenameUnicode, _FSReplaceObject, _FSReservationAcquire, + _FSReservationCopyPath, _FSReservationCreateWithFSRef, _FSReservationCreateWithPath, _FSReservationGetFSRefInfo, _FSReservationGetReservationType, _FSReservationGetTypeID, _FSReservationRelinquish, _FSReservationUpdate, _FSResolveAlias, _FSResolveAliasFile, _FSResolveAliasFileWithMountFlags, _FSResolveAliasFileWithMountFlagsThreadSafe, _FSResolveAliasWithMountFlags, _FSResolveNodeID, _FSResourceFileAlreadyOpen, _FSSetCatalogInfo, - _FSSetDefaultTextEncoding, _FSSetExtendedAttribute, _FSSetExtendedAttributeByForkRefNum, + _FSSetExtendedAttribute, _FSSetExtendedAttributeByForkRefNum, _FSSetForkPosition, _FSSetForkSize, _FSSetVolumeInfo, _FSUnlinkObject, _FSUnlockRange, _FSUnmountVolumeAsync, _FSUnmountVolumeSync, - _FSUpdateAlias, _FSVolumeMount, _FSWriteFork, _FileIDTreeCreateMountPointArrayWithOptions, - _FileIDTreeGetChildIDFromName, _FileIDTreeGetEntryInfoFromFileID, - _FileIDTreeGetFileIDFromPath, _FileIDTreePrintVolumeIDs, _FileIDTreePrintVolumeInfo, - _FileIDTreePrintVolumeTree, _FileIDTreePrintVolumes, _FileIDTree_GetBootGUID, - _FillParseTable, _FindCharInSet, _FindFolder, _FindFolderRoutingForDomain, - _FindNextComponent, _Fix2Frac, _Fix2Long, _Fix2X, _FixATan2, - _FixDiv, _FixMul, _FixRatio, _FixRound, _FlattenAliasRecord, - _FlattenCollection, _FlattenCollectionToHdl, _FlattenPartialCollection, - _FlushDebugLog, _FolderManagerDeleteUserSpecificItems, _FolderManagerDeleteUserSpecificItemsForVRefNum, + _FSUpdateAlias, _FSVolumeMount, _FSWriteFork, _FileIDTreePrintVolumeIDs, + _FileIDTreePrintVolumeInfo, _FileIDTreePrintVolumeTree, _FileIDTreePrintVolumes, + _FileIDTree_GetBootGUID, _FillParseTable, _FindCharInSet, + _FindFolder, _FindFolderRoutingForDomain, _FindNextComponent, + _Fix2Frac, _Fix2Long, _Fix2X, _FixATan2, _FixDiv, _FixMul, + _FixRatio, _FixRound, _FlattenAliasRecord, _FlattenCollection, + _FlattenCollectionToHdl, _FlattenPartialCollection, _FlushDebugLog, + _FolderManagerDeleteUserSpecificItems, _FolderManagerDeleteUserSpecificItemsForVRefNum, _Font2RealScript, _FontScript, _FontToScript, _FormatRecToString, _Frac2Fix, _Frac2X, _FracCos, _FracDiv, _FracMul, _FracSin, _FracSqrt, _GDBComponentList, _Gestalt, _GestaltHostName, @@ -312,17 +359,15 @@ exports: _GetComponentPublicResourceList, _GetComponentRefcon, _GetComponentResource, _GetComponentTypeModSeed, _GetCurrentThread, _GetDYLDEntryPoint, _GetDYLDEntryPointWithImage, _GetDebugComponentInfo, _GetDebugOptionInfo, - _GetDefaultThreadStackSize, _GetFSRefComponentsForFileReferenceURL, - _GetFolderNameUnicode, _GetFolderTypes, _GetForkPhysicalInfo, - _GetFreeThreadCount, _GetHandleSize, _GetHostName, _GetIndResource, - _GetIndType, _GetIndexedCollectionItem, _GetIndexedCollectionItemHdl, - _GetIndexedCollectionItemInfo, _GetIndexedCollectionTag, _GetIntlResource, - _GetIntlResourceTable, _GetLocalDateTime, _GetMacOSStatusCommentString, - _GetMacOSStatusErrorString, _GetMap, _GetMaxResourceSize, - _GetNamedResource, _GetNewCollection, _GetNextFOND, _GetNextResourceFile, - _GetOverrideAttributes, _GetOverrideMap, _GetPtrSize, _GetResAttrs, - _GetResFileAttrs, _GetResInfo, _GetResource, _GetResourceSizeOnDisk, - _GetScriptInfoFromTextEncoding, _GetScriptManagerVariable, + _GetDefaultThreadStackSize, _GetFolderNameUnicode, _GetFolderTypes, + _GetForkPhysicalInfo, _GetFreeThreadCount, _GetHandleSize, + _GetHostName, _GetIndResource, _GetIndType, _GetIndexedCollectionItem, + _GetIndexedCollectionItemHdl, _GetIndexedCollectionItemInfo, + _GetIndexedCollectionTag, _GetIntlResource, _GetIntlResourceTable, + _GetLocalDateTime, _GetMap, _GetMaxResourceSize, _GetNamedResource, + _GetNewCollection, _GetNextFOND, _GetNextResourceFile, _GetOverrideAttributes, + _GetOverrideMap, _GetPtrSize, _GetResAttrs, _GetResFileAttrs, + _GetResInfo, _GetResource, _GetResourceSizeOnDisk, _GetScriptInfoFromTextEncoding, _GetScriptManagerVariable_Internal, _GetScriptVariable, _GetSpecificFreeThreadCount, _GetStackListElementFromIndex, _GetSysDirection, _GetTaggedCollectionItem, _GetTaggedCollectionItemInfo, _GetTextEncodingBase, _GetTextEncodingFormat, @@ -334,49 +379,58 @@ exports: _HandAndHand, _HandToHand, _HomeResFile, _IUClearCacheSys, _IUGetItlScript, _IUMagWPString, _IUTextOrderSys, _IdenticalString, _IdenticalText, _IdentifyFolder, _IdentifyFolderInDomain, - _IncrementAtomic, _IncrementAtomic16, _IncrementAtomic8, _InitScriptBundleComponent, - _InsTime, _InsXTime, _InsertOverrideFile, _InsertOverrideMap, - _InsertResourceFile, _InsertStackListElement, _InsertSystemOverrideFile, - _InstallDebugAssertOutputHandler, _InstallExceptionHandler, - _InstallThreadEventsWaitingHook, _InstallThreadInitHook, _InstallTimeTask, - _InstallXTimeTask, _IntlFCAddSearchCriteria, _IntlFCAddSearchDirectory, - _IntlFCCloseComponentData, _IntlFCCreateNewComponentObject, - _IntlFCDebugCache, _IntlFCDeleteComponent, _IntlFCDisposeComponentObject, - _IntlFCEditComponentObject, _IntlFCOpenComponentData, _IntlFCWriteComponentObject, - _IntlGetCache, _IntlGetInitValues, _IntlGetIsInitIntlValueDone, - _IntlGetToken, _IntlIsInitIntlValueDone, _IntlScript, _IntlSetCache, - _IntlSetInitIntlValueProc, _IntlSetInitValues, _IntlSetToken, - _IntlTokenize, _InvalidateFolderDescriptorCache, _InvokeThreadInitHookUPP, - _InvokeVNUPP, _IsHandleValid, _IsHeapValid, _IsMetric, _IsPointerValid, - _IsThisASystemResourceMap, _LLConvertUCS2toUTF8, _LLConvertUTF8toUCS2, - _LLConvertUTF8toUTF16, _LMGetApFontID, _LMGetApFontIDNoInit, - _LMGetBootDrive, _LMGetBrianBits, _LMGetDskSwtchHook, _LMGetHSCHndl, - _LMGetIntlSpec, _LMGetItlSysCachePtr, _LMGetKeyCache, _LMGetLangMapPtr, - _LMGetMemErr, _LMGetQDExist, _LMGetROMMapHndl, _LMGetResErr, - _LMGetResLoad, _LMGetResOneDeep, _LMGetScriptMapPtr, _LMGetSoundActive, - _LMGetSysFontFamNoInit, _LMGetSysFontSize, _LMGetSysMap, _LMGetTmpResLoad, - _LMGetWWExist, _LMInvalidateKeyCache, _LMSetApFontID, _LMSetBootDrive, - _LMSetBrianBits, _LMSetDskSwtchHook, _LMSetHSCHndl, _LMSetIntlSpec, - _LMSetItlSysCachePtr, _LMSetKeyCache, _LMSetKeyboardSwitchingState, - _LMSetLangMapPtr, _LMSetMemErr, _LMSetQDExist, _LMSetROMMapHndl, - _LMSetResErr, _LMSetResLoad, _LMSetResOneDeep, _LMSetScriptMapPtr, - _LMSetSoundActive, _LMSetSysFontFam, _LMSetSysFontSize, _LMSetSysMap, - _LMSetTmpResLoad, _LanguageOrder, _LoadResource, _LocaleCountNames, - _LocaleGetIndName, _LocaleGetName, _LocaleOperationCountLocales, - _LocaleOperationCountNames, _LocaleOperationGetIndName, _LocaleOperationGetLocales, - _LocaleOperationGetName, _LocaleOperationLoadData, _LocaleOperationUnloadData, - _LocaleRefFromLangOrRegionCode, _LocaleRefFromLocaleString, - _LocaleRefGetPartString, _LocaleStringToLangAndRegionCodes, + _IncrementAtomic, _IncrementAtomic16, _IncrementAtomic8, _InsTime, + _InsXTime, _InsertOverrideFile, _InsertOverrideMap, _InsertResourceFile, + _InsertStackListElement, _InsertSystemOverrideFile, _InstallDebugAssertOutputHandler, + _InstallExceptionHandler, _InstallThreadEventsWaitingHook, + _InstallThreadInitHook, _InstallTimeTask, _InstallXTimeTask, + _IntlFCAddSearchCriteria, _IntlFCAddSearchDirectory, _IntlFCCloseComponentData, + _IntlFCCreateNewComponentObject, _IntlFCDebugCache, _IntlFCDeleteComponent, + _IntlFCDisposeComponentObject, _IntlFCEditComponentObject, + _IntlFCOpenComponentData, _IntlFCWriteComponentObject, _IntlGetCache, + _IntlGetIsInitIntlValueDone, _IntlGetToken, _IntlIsInitIntlValueDone, + _IntlScript, _IntlSetCache, _IntlSetInitIntlValueProc, _IntlSetInitValues, + _IntlSetToken, _IntlTokenize, _InvalidateFolderDescriptorCache, + _InvokeCollectionExceptionUPP, _InvokeCollectionFlattenUPP, + _InvokeComponentMPWorkFunctionUPP, _InvokeComponentRoutineUPP, + _InvokeDebugAssertOutputHandlerUPP, _InvokeDebugComponentCallbackUPP, + _InvokeDebuggerDisposeThreadUPP, _InvokeDebuggerNewThreadUPP, + _InvokeDebuggerThreadSchedulerUPP, _InvokeDeferredTaskUPP, + _InvokeExceptionHandlerUPP, _InvokeFNSubscriptionUPP, _InvokeFSVolumeEjectUPP, + _InvokeFSVolumeMountUPP, _InvokeFSVolumeUnmountUPP, _InvokeFileInterrogatorUPP, + _InvokeFolderManagerNotificationUPP, _InvokeGetMissingComponentResourceUPP, + _InvokeIOCompletionUPP, _InvokeIndexToUCStringUPP, _InvokeResErrUPP, + _InvokeSelectorFunctionUPP, _InvokeThreadEntryUPP, _InvokeThreadSchedulerUPP, + _InvokeThreadSwitchUPP, _InvokeThreadTerminationUPP, _InvokeTimerUPP, + _InvokeUnicodeToTextFallbackUPP, _IsHandleValid, _IsHeapValid, + _IsMetric, _IsPointerValid, _IsThisASystemResourceMap, _LLConvertUCS2toUTF8, + _LLConvertUTF8toUCS2, _LLConvertUTF8toUTF16, _LMGetApFontID, + _LMGetApFontIDNoInit, _LMGetBootDrive, _LMGetBrianBits, _LMGetDskSwtchHook, + _LMGetHSCHndl, _LMGetIntlSpec, _LMGetItlSysCachePtr, _LMGetKeyCache, + _LMGetLangMapPtr, _LMGetMemErr, _LMGetQDExist, _LMGetROMMapHndl, + _LMGetResErr, _LMGetResLoad, _LMGetResOneDeep, _LMGetScriptMapPtr, + _LMGetSoundActive, _LMGetSysFontFamNoInit, _LMGetSysFontSize, + _LMGetSysMap, _LMGetTmpResLoad, _LMGetWWExist, _LMInvalidateKeyCache, + _LMSetApFontID, _LMSetBootDrive, _LMSetBrianBits, _LMSetDskSwtchHook, + _LMSetHSCHndl, _LMSetIntlSpec, _LMSetItlSysCachePtr, _LMSetKeyCache, + _LMSetKeyboardSwitchingState, _LMSetLangMapPtr, _LMSetMemErr, + _LMSetQDExist, _LMSetROMMapHndl, _LMSetResErr, _LMSetResLoad, + _LMSetResOneDeep, _LMSetScriptMapPtr, _LMSetSoundActive, _LMSetSysFontFam, + _LMSetSysFontSize, _LMSetSysMap, _LMSetTmpResLoad, _LanguageOrder, + _LoadResource, _LocaleCountNames, _LocaleGetIndName, _LocaleGetName, + _LocaleOperationCountLocales, _LocaleOperationCountNames, + _LocaleOperationGetIndName, _LocaleOperationGetLocales, _LocaleOperationGetName, + _LocaleOperationLoadData, _LocaleOperationUnloadData, _LocaleRefFromLangOrRegionCode, + _LocaleRefFromLocaleString, _LocaleRefGetPartString, _LocaleStringToLangAndRegionCodes, _Long2Fix, _MPAllocate, _MPAllocateAligned, _MPAllocateTaskStorageIndex, _MPArmTimer, _MPBlockClear, _MPBlockCopy, _MPCancelTimer, _MPCauseNotification, _MPCreateCriticalRegion, _MPCreateEvent, _MPCreateNotification, _MPCreateQueue, _MPCreateSemaphore, - _MPCreateTask, _MPCreateTaskCFM, _MPCreateTimer, _MPCurrentTaskID, - _MPDeallocateTaskStorageIndex, _MPDelayUntil, _MPDeleteCriticalRegion, - _MPDeleteEvent, _MPDeleteNotification, _MPDeleteQueue, _MPDeleteSemaphore, - _MPDeleteTimer, _MPDisposeTaskException, _MPEnterCriticalRegion, - _MPExit, _MPExitCriticalRegion, _MPExtractTaskState, _MPFree, - _MPGetAllocatedBlockSize, _MPGetNextCpuID, _MPGetNextTaskID, + _MPCreateTask, _MPCreateTimer, _MPCurrentTaskID, _MPDeallocateTaskStorageIndex, + _MPDelayUntil, _MPDeleteCriticalRegion, _MPDeleteEvent, _MPDeleteNotification, + _MPDeleteQueue, _MPDeleteSemaphore, _MPDeleteTimer, _MPDisposeTaskException, + _MPEnterCriticalRegion, _MPExit, _MPExitCriticalRegion, _MPExtractTaskState, + _MPFree, _MPGetAllocatedBlockSize, _MPGetNextCpuID, _MPGetNextTaskID, _MPGetTaskStorageValue, _MPModifyNotification, _MPModifyNotificationParameters, _MPNotifyQueue, _MPProcessors, _MPProcessorsScheduled, _MPRegisterDebugger, _MPRemoteCall, _MPRemoteCallCFM, _MPSetEvent, _MPSetExceptionHandler, @@ -385,60 +439,68 @@ exports: _MPSignalSemaphore, _MPTaskIsPreemptive, _MPTerminateTask, _MPThrowException, _MPUnregisterDebugger, _MPWaitForEvent, _MPWaitOnQueue, _MPWaitOnSemaphore, _MPYield, _MapScriptInfoAndISOCodes, - _MemError, _Microseconds, _ModeToFSNodeType, _Munger, _NanosecondsToAbsolute, + _MemError, _Microseconds, _Munger, _NanosecondsToAbsolute, _NanosecondsToDuration, _NearestMacTextEncodings, _NearestMacTextEncodingsNoInit, - _NewCollection, _NewComponentFunctionUPP, _NewDebugComponent, - _NewDebugLog, _NewDebugOption, _NewEmptyHandle, _NewGestaltValue, - _NewHandle, _NewHandleClear, _NewHandleFromExternalPtr, _NewPtr, - _NewPtrClear, _NewStackListSys, _NewThread, _NewThreadInitHookUPP, - _NewVNUPP, _NumToString, _OLD_NEXT_COLORS, _OSTypeToCString, - _OpenAComponent, _OpenAComponentResFile, _OpenADefaultComponent, - _OpenComponent, _OpenComponentResFile, _OpenDefaultComponent, - _PBAllocateForkAsync, _PBAllocateForkSync, _PBCatalogSearchAsync, - _PBCatalogSearchSync, _PBCloseForkAsync, _PBCloseForkSync, - _PBCloseIteratorAsync, _PBCloseIteratorSync, _PBCompareFSRefsAsync, - _PBCompareFSRefsSync, _PBCreateDirectoryUnicodeAsync, _PBCreateDirectoryUnicodeSync, - _PBCreateFileAndOpenForkUnicodeAsync, _PBCreateFileAndOpenForkUnicodeSync, - _PBCreateFileUnicodeAsync, _PBCreateFileUnicodeSync, _PBCreateForkAsync, - _PBCreateForkSync, _PBDeleteForkAsync, _PBDeleteForkSync, - _PBDeleteObjectAsync, _PBDeleteObjectSync, _PBExchangeObjectsAsync, - _PBExchangeObjectsSync, _PBFSCopyFileAsync, _PBFSCopyFileSync, - _PBFSResolveNodeIDAsync, _PBFSResolveNodeIDSync, _PBFlushForkAsync, - _PBFlushForkSync, _PBFlushVolumeAsync, _PBFlushVolumeSync, - _PBGetCatalogInfoAsync, _PBGetCatalogInfoBulkAsync, _PBGetCatalogInfoBulkSync, - _PBGetCatalogInfoSync, _PBGetForkCBInfoAsync, _PBGetForkCBInfoSync, - _PBGetForkPositionAsync, _PBGetForkPositionSync, _PBGetForkSizeAsync, - _PBGetForkSizeSync, _PBGetVolumeInfoAsync, _PBGetVolumeInfoSync, - _PBIterateForksAsync, _PBIterateForksSync, _PBMakeFSRefUnicodeAsync, - _PBMakeFSRefUnicodeSync, _PBMoveObjectAsync, _PBMoveObjectSync, - _PBOpenForkAsync, _PBOpenForkSync, _PBOpenIteratorAsync, _PBOpenIteratorSync, - _PBReadForkAsync, _PBReadForkSync, _PBRenameUnicodeAsync, - _PBRenameUnicodeSync, _PBSetCatalogInfoAsync, _PBSetCatalogInfoSync, - _PBSetForkPositionAsync, _PBSetForkPositionSync, _PBSetForkSizeAsync, - _PBSetForkSizeSync, _PBSetVolumeInfoAsync, _PBSetVolumeInfoSync, - _PBUnlinkObjectAsync, _PBUnlinkObjectSync, _PBWriteForkAsync, - _PBWriteForkSync, _PBXLockRangeAsync, _PBXLockRangeSync, _PBXUnlockRangeAsync, + _NewCollection, _NewCollectionExceptionUPP, _NewCollectionFlattenUPP, + _NewComponentFunctionUPP, _NewComponentMPWorkFunctionUPP, + _NewComponentRoutineUPP, _NewDebugAssertOutputHandlerUPP, + _NewDebugComponent, _NewDebugComponentCallbackUPP, _NewDebugLog, + _NewDebugOption, _NewDebuggerDisposeThreadUPP, _NewDebuggerNewThreadUPP, + _NewDebuggerThreadSchedulerUPP, _NewDeferredTaskUPP, _NewEmptyHandle, + _NewExceptionHandlerUPP, _NewFNSubscriptionUPP, _NewFSVolumeEjectUPP, + _NewFSVolumeMountUPP, _NewFSVolumeUnmountUPP, _NewFileInterrogatorUPP, + _NewFolderManagerNotificationUPP, _NewGestaltValue, _NewGetMissingComponentResourceUPP, + _NewHandle, _NewHandleClear, _NewHandleFromExternalPtr, _NewIOCompletionUPP, + _NewIndexToUCStringUPP, _NewPtr, _NewPtrClear, _NewResErrUPP, + _NewSelectorFunctionUPP, _NewStackListSys, _NewThread, _NewThreadEntryUPP, + _NewThreadSchedulerUPP, _NewThreadSwitchUPP, _NewThreadTerminationUPP, + _NewTimerUPP, _NewUnicodeToTextFallbackUPP, _NumToString, + _OSTypeToCString, _OpenAComponent, _OpenAComponentResFile, + _OpenADefaultComponent, _OpenComponent, _OpenComponentResFile, + _OpenDefaultComponent, _PBAllocateForkAsync, _PBAllocateForkSync, + _PBCatalogSearchAsync, _PBCatalogSearchSync, _PBCloseForkAsync, + _PBCloseForkSync, _PBCloseIteratorAsync, _PBCloseIteratorSync, + _PBCompareFSRefsAsync, _PBCompareFSRefsSync, _PBCreateDirectoryUnicodeAsync, + _PBCreateDirectoryUnicodeSync, _PBCreateFileAndOpenForkUnicodeAsync, + _PBCreateFileAndOpenForkUnicodeSync, _PBCreateFileUnicodeAsync, + _PBCreateFileUnicodeSync, _PBCreateForkAsync, _PBCreateForkSync, + _PBDeleteForkAsync, _PBDeleteForkSync, _PBDeleteObjectAsync, + _PBDeleteObjectSync, _PBExchangeObjectsAsync, _PBExchangeObjectsSync, + _PBFSCopyFileAsync, _PBFSCopyFileSync, _PBFSResolveNodeIDAsync, + _PBFSResolveNodeIDSync, _PBFlushForkAsync, _PBFlushForkSync, + _PBFlushVolumeAsync, _PBFlushVolumeSync, _PBGetCatalogInfoAsync, + _PBGetCatalogInfoBulkAsync, _PBGetCatalogInfoBulkSync, _PBGetCatalogInfoSync, + _PBGetForkCBInfoAsync, _PBGetForkCBInfoSync, _PBGetForkPositionAsync, + _PBGetForkPositionSync, _PBGetForkSizeAsync, _PBGetForkSizeSync, + _PBGetVolumeInfoAsync, _PBGetVolumeInfoSync, _PBIterateForksAsync, + _PBIterateForksSync, _PBMakeFSRefUnicodeAsync, _PBMakeFSRefUnicodeSync, + _PBMoveObjectAsync, _PBMoveObjectSync, _PBOpenForkAsync, _PBOpenForkSync, + _PBOpenIteratorAsync, _PBOpenIteratorSync, _PBReadForkAsync, + _PBReadForkSync, _PBRenameUnicodeAsync, _PBRenameUnicodeSync, + _PBSetCatalogInfoAsync, _PBSetCatalogInfoSync, _PBSetForkPositionAsync, + _PBSetForkPositionSync, _PBSetForkSizeAsync, _PBSetForkSizeSync, + _PBSetVolumeInfoAsync, _PBSetVolumeInfoSync, _PBUnlinkObjectAsync, + _PBUnlinkObjectSync, _PBWriteForkAsync, _PBWriteForkSync, + _PBXLockRangeAsync, _PBXLockRangeSync, _PBXUnlockRangeAsync, _PBXUnlockRangeSync, _PLpos, _PLstrcat, _PLstrchr, _PLstrcmp, _PLstrcpy, _PLstrlen, _PLstrncat, _PLstrncmp, _PLstrncpy, _PLstrpbrk, _PLstrrchr, _PLstrspn, _PLstrstr, _PopStackListElement, _PrimeTime, _PrimeTimeTask, _PrintEnumerationCache, _PrintFSAccessControlEntry, - _PrintFSRef, _PrintFSRefPath, _PrintFileInfo, _PrintLaunchDebugInfo, - _PrintOpenForks, _PrintResourceChain, _PrintVolumeInfo, _PtrAndHand, - _PtrToHand, _PtrToXHand, _PurgeCollection, _PurgeCollectionTag, - _PushStackListElement, _QueryUnicodeMappings, _QueryUnicodeMappingsNoInit, - _RMAddResFileToSearchPath, _RMAddResourceByFileRef, _RMChangedResourceByFileRef, - _RMCloseResourceFile, _RMCloseResourceFileByFileRef, _RMDetachResourceByFileRef, - _RMDisposeMappedFileRef, _RMFSCreateResFile, _RMFSCreateResourceFile, - _RMFSOpenResourceFile, _RMGetIndexedResource, _RMGetIndexedResourceByFileRef, - _RMGetIndexedType, _RMGetNamedResource, _RMGetPtrAndSizeFromMappedRef, - _RMGetResource, _RMGetResourceByFileRef, _RMGetResourceCount, - _RMGetResourceCountByFileRef, _RMGetResourceSize, _RMGetTopOfOrphanChain, - _RMGetTypeCount, _RMInsertMappedResourceFileInChain, _RMNewMappedRefFromMappedFork, - _RMOpenResourceFileRef, _RMReadPartialResourceByFileRef, _RMReleaseResourceByFileRef, - _RMRemoveResFileFromSearchPath, _RMRemoveResourceByFileRef, - _RMUpdateResourceFileByFileRef, _RMWriteResourceByFileRef, - _ReadLocation, _ReadPartialResource, _RealScript, _ReallocateHandle, - _RecoverHandle, _RefFix2X, _RefX2Fix, _RefX2Frac, _RegisterComponent, + _PrintFSRef, _PrintFSRefPath, _PrintFileInfo, _PrintOpenForks, + _PrintResourceChain, _PrintVolumeInfo, _PtrAndHand, _PtrToHand, + _PtrToXHand, _PurgeCollection, _PurgeCollectionTag, _PushStackListElement, + _QueryUnicodeMappings, _QueryUnicodeMappingsNoInit, _RMAddResourceByFileRef, + _RMChangedResourceByFileRef, _RMCloseResourceFile, _RMCloseResourceFileByFileRef, + _RMDetachResourceByFileRef, _RMDisposeMappedFileRef, _RMFSCreateResFile, + _RMFSCreateResourceFile, _RMFSOpenResourceFile, _RMGetIndexedResource, + _RMGetIndexedResourceByFileRef, _RMGetIndexedType, _RMGetNamedResource, + _RMGetPtrAndSizeFromMappedRef, _RMGetResource, _RMGetResourceByFileRef, + _RMGetResourceCount, _RMGetResourceCountByFileRef, _RMGetResourceSize, + _RMGetTopOfOrphanChain, _RMGetTypeCount, _RMInsertMappedResourceFileInChain, + _RMNewMappedRefFromMappedFork, _RMOpenResourceFileRef, _RMReadPartialResourceByFileRef, + _RMReleaseResourceByFileRef, _RMRemoveResourceByFileRef, _RMUpdateResourceFileByFileRef, + _RMWriteResourceByFileRef, _ReadLocation, _ReadPartialResource, + _RealScript, _ReallocateHandle, _RecoverHandle, _RegisterComponent, _RegisterComponentFileRef, _RegisterComponentFileRefEntries, _RegisterComponentResource, _RegisterComponentResourceFile, _RelString, _ReleaseCollection, _ReleaseFolder, _ReleaseResource, @@ -446,28 +508,20 @@ exports: _RemoveIndexedCollectionItem, _RemoveResource, _RemoveStackListElement, _RemoveThreadInitHook, _RemoveTimeTask, _ReplaceGestaltValue, _ReplaceIndexedCollectionItem, _ReplaceIndexedCollectionItemHdl, - _ReplaceStackListElement, _ReplaceText, _RequestVolumeNotification, - _RequestVolumeNotificationWithFlags, _ResError, _ResetTextToUnicodeInfo, + _ReplaceStackListElement, _ReplaceText, _ResError, _ResetTextToUnicodeInfo, _ResetUnicodeToTextInfo, _ResetUnicodeToTextRunInfo, _ResolveComponentAlias, _ResolveDefaultTextEncoding, _RetainCollection, _RevertTextEncodingToScriptInfo, - _RmvTime, _S32Set, _S64Absolute, _S64Add, _S64And, _S64BitwiseAnd, - _S64BitwiseEor, _S64BitwiseNot, _S64BitwiseOr, _S64Compare, - _S64Divide, _S64Eor, _S64Max, _S64Min, _S64Multiply, _S64Negate, - _S64Not, _S64Or, _S64Set, _S64SetU, _S64ShiftLeft, _S64ShiftRight, - _S64Subtract, _SInt64ToUInt64, _SMDisposeIntlSpec, _SMInitIntlSpec, - _ScriptOrder, _ScriptToRange, _SearchStackList, _SearchStackListFirstFourBytes, - _SetAliasUserType, _SetAliasUserTypeWithPtr, _SetCollectionDefaultAttributes, - _SetCollectionExceptionProc, _SetCollectionItemInfo, _SetComponentInstanceError, - _SetComponentInstanceStorage, _SetComponentMgrFlags, _SetComponentRefcon, - _SetDebugOptionValue, _SetDebuggerNotificationProcs, _SetDefaultComponent, - _SetFallbackUnicodeToText, _SetFallbackUnicodeToTextRun, _SetGestaltSystemValue, - _SetGestaltSystemValuesBulk, _SetGestaltValue, _SetGestaltValuesBulk, - _SetGetFNumProc, _SetGetFontFromPortProc, _SetGetFontNameProc, - _SetGetFontScriptProc, _SetGetScriptFontFlagsCallback, _SetHandleSize, - _SetIndexedCollectionItemInfo, _SetInitializeScriptHLProc, - _SetLocalDateTime, _SetOverrideAttributes, _SetPtrSize, _SetResAttrs, - _SetResFileAttrs, _SetResInfo, _SetResLoad, _SetResPurge, - _SetResourceSize, _SetScriptFontValidatorCallback, _SetScriptManagerVariable, + _RmvTime, _ScriptOrder, _ScriptToRange, _SearchStackList, + _SearchStackListFirstFourBytes, _SetAliasUserType, _SetAliasUserTypeWithPtr, + _SetCollectionDefaultAttributes, _SetCollectionExceptionProc, + _SetCollectionItemInfo, _SetComponentInstanceError, _SetComponentInstanceStorage, + _SetComponentMgrFlags, _SetComponentRefcon, _SetDebugOptionValue, + _SetDebuggerNotificationProcs, _SetDefaultComponent, _SetFallbackUnicodeToText, + _SetFallbackUnicodeToTextRun, _SetGestaltSystemValue, _SetGestaltSystemValuesBulk, + _SetGestaltValue, _SetGestaltValuesBulk, _SetGetScriptFontFlagsCallback, + _SetHandleSize, _SetIndexedCollectionItemInfo, _SetLocalDateTime, + _SetPtrSize, _SetResAttrs, _SetResFileAttrs, _SetResInfo, + _SetResLoad, _SetResPurge, _SetResourceSize, _SetScriptFontValidatorCallback, _SetScriptManagerVariable_KeyScriptOverride, _SetScriptVariable, _SetSwapKeyboardProc, _SetSysDirection, _SetThreadGlobalsAreCooperative, _SetThreadReadyGivenTaskRef, _SetThreadScheduler, _SetThreadState, @@ -496,43 +550,35 @@ exports: _TSDestroyCondition, _TSDestroyMutex, _TSDestroyReaderWriterLock, _TSDestroySemaphore, _TSDurationToTimeSpec, _TSExceptionAbort, _TSExceptionContinue, _TSExceptionGetLiveState, _TSExit, _TSGetDefaultThreadStackSize, - _TSGetMainThreadBacktrace, _TSGetPriority, _TSGetStackBase, - _TSGetStackSize, _TSGetStorage, _TSInitCondition, _TSInitMutex, - _TSInitReaderWriterLock, _TSInitSemaphore, _TSInstallExceptionCatcher, - _TSLockMutex, _TSReaderToWriter, _TSReleaseReader, _TSRemoveExceptionCatcher, - _TSSelf, _TSSetPriority, _TSSetStorage, _TSSignalCondition, - _TSSignalSemaphore, _TSTerminateThread, _TSTryLockMutex, _TSUnlockMutex, - _TSWaitOnCondition, _TSWaitOnConditionTimed, _TSWaitOnConditionTimedRelative, - _TSWaitOnSemaphore, _TSWaitOnSemaphoreRelative, _TSWriterToReader, - _TSYield, _TUCharacterByteType, _TaskLevel, _TempNewHandle, - _TestAndClear, _TestAndSet, _TextOrder, _ThreadBeginCritical, - _ThreadCurrentStackSpace, _ThreadEndCritical, _ThreadsHaveNonMainRunnable, - _TickCount, _TransferCustomIconAndBadge, _TransliterateText, - _TruncateForTextToUnicode, _TruncateForUnicodeToText, _U32SetU, - _U64Add, _U64And, _U64BitwiseAnd, _U64BitwiseEor, _U64BitwiseNot, - _U64BitwiseOr, _U64Compare, _U64Divide, _U64Eor, _U64Max, - _U64Multiply, _U64Not, _U64Or, _U64Set, _U64SetU, _U64ShiftLeft, - _U64ShiftRight, _U64Subtract, _UCCompareCollationKeys, _UCCompareText, - _UCCompareTextDefault, _UCCompareTextNoLocale, _UCCompileuchr, - _UCConvertCFAbsoluteTimeToLongDateTime, _UCConvertCFAbsoluteTimeToSeconds, - _UCConvertCFAbsoluteTimeToUTCDateTime, _UCConvertLongDateTimeToCFAbsoluteTime, - _UCConvertSecondsToCFAbsoluteTime, _UCConvertUTCDateTimeToCFAbsoluteTime, - _UCCreateCollator, _UCCreateTextBreakLocator, _UCCreateUSetForUchr, - _UCDisposeCollator, _UCDisposeTextBreakLocator, _UCFindTextBreak, - _UCGenerateSwappedUchr, _UCGetCharProperty, _UCGetCollationKey, - _UCKeyTranslate, _UCKeyboardLayoutStringMax, _UCLoadCharPropsTablePriv, + _TSGetPriority, _TSGetStackBase, _TSGetStackSize, _TSGetStorage, + _TSInitCondition, _TSInitMutex, _TSInitReaderWriterLock, _TSInitSemaphore, + _TSInstallExceptionCatcher, _TSLockMutex, _TSReaderToWriter, + _TSReleaseReader, _TSRemoveExceptionCatcher, _TSSelf, _TSSetPriority, + _TSSetStorage, _TSSignalCondition, _TSSignalSemaphore, _TSTerminateThread, + _TSTryLockMutex, _TSUnlockMutex, _TSWaitOnCondition, _TSWaitOnConditionTimed, + _TSWaitOnConditionTimedRelative, _TSWaitOnSemaphore, _TSWaitOnSemaphoreRelative, + _TSWriterToReader, _TSYield, _TaskLevel, _TempNewHandle, _TestAndClear, + _TestAndSet, _TextOrder, _ThreadBeginCritical, _ThreadCurrentStackSpace, + _ThreadEndCritical, _ThreadsHaveNonMainRunnable, _TickCount, + _TransliterateText, _TruncateForTextToUnicode, _TruncateForUnicodeToText, + _U64Compare, _UCCompareCollationKeys, _UCCompareText, _UCCompareTextDefault, + _UCCompareTextNoLocale, _UCCompileuchr, _UCConvertCFAbsoluteTimeToLongDateTime, + _UCConvertCFAbsoluteTimeToSeconds, _UCConvertCFAbsoluteTimeToUTCDateTime, + _UCConvertLongDateTimeToCFAbsoluteTime, _UCConvertSecondsToCFAbsoluteTime, + _UCConvertUTCDateTimeToCFAbsoluteTime, _UCCreateCollator, + _UCCreateTextBreakLocator, _UCCreateUSetForUchr, _UCDisposeCollator, + _UCDisposeTextBreakLocator, _UCFindTextBreak, _UCGenerateSwappedUchr, + _UCGetCharProperty, _UCGetCollationKey, _UCKeyTranslate, _UCLoadCharPropsTablePriv, _UCTypeSelectAddKeyToSelector, _UCTypeSelectAddKeyToSelectorData, _UCTypeSelectAddKeyToSelectorDataWithTime, _UCTypeSelectCompare, _UCTypeSelectCreateSelector, _UCTypeSelectDisposeSelector, _UCTypeSelectFindItem, _UCTypeSelectFlushSelectorData, _UCTypeSelectNewSelector, _UCTypeSelectReleaseSelector, _UCTypeSelectWalkList, _UCTypeSelectWouldResetBuffer, - _UCUnloadCharPropsTablePriv, _UCUseCharPropsTablePriv, _UInt64ToSInt64, - _UTF8ToCString, _UmapBCharToUChars, _UmapCloseMapping, _UmapGetCharsToComposeUSet, - _UmapOpenMapping, _UmapScanUCharElement, _UmapSetFallbacks, - _UmapSetLookupInfo, _UmapUCharElementToBChars, _UncaptureComponent, - _UnflattenAliasRecord, _UnflattenCollection, _UnflattenCollectionFromHdl, - _UnicodeValidConversionLength, _Unique1ID, _UniqueID, _UnregisterComponent, - _UnsignedFixedMulDiv, _UpTime, _UpdateResFile, _UpgradeScriptInfoToTextEncoding, + _UCUnloadCharPropsTablePriv, _UCUseCharPropsTablePriv, _UTF8ToCString, + _UncaptureComponent, _UnflattenAliasRecord, _UnflattenCollection, + _UnflattenCollectionFromHdl, _UnicodeValidConversionLength, + _Unique1ID, _UniqueID, _UnregisterComponent, _UnsignedFixedMulDiv, + _UpTime, _UpdateResFile, _UpgradeScriptInfoToTextEncoding, _UseResFile, _ValidComponent, _WideAdd, _WideBitShift, _WideCompare, _WideDivide, _WideMultiply, _WideNegate, _WideShift, _WideSquareRoot, _WideSubtract, _WideWideDivide, _WritePartialResource, _WriteResource, @@ -581,17 +627,18 @@ exports: __CSBackupRequestFreeSpaceOnVolume, __CSBackupRuleTreeCreateWithVolumeName, __CSBackupRuleTreeEvaluateFile, __CSBackupRuleTreeEvaluateFolder, __CSBackupRuleTreeGetNodeForPath, __CSBackupRuleTreeGetTypeID, - __CSBackupRuleTreePushFullPath, __CSBackupRuleTreeSetPathExcluded, - __CSBackupRuleTreeSetPathsExcluded, __CSBackupRulesEngineAddPath, - __CSBackupRulesEngineAddRuleTree, __CSBackupRulesEngineAddSourcePath, - __CSBackupRulesEngineAddStdRulesToTree, __CSBackupRulesEngineBulkEvaluatePathCopyIncludedChildren, + __CSBackupRuleTreePushFullPath, __CSBackupRuleTreeSetFoldersExcluded, + __CSBackupRuleTreeSetPathExcluded, __CSBackupRuleTreeSetPathsExcluded, + __CSBackupRulesEngineAddPath, __CSBackupRulesEngineAddRuleTree, + __CSBackupRulesEngineAddSourcePath, __CSBackupRulesEngineAddStdRulesToTree, + __CSBackupRulesEngineBulkEvaluatePathCopyIncludedChildren, __CSBackupRulesEngineBulkEvaluateURLCopyIncludedChildren, __CSBackupRulesEngineCopyRuleTrees, __CSBackupRulesEngineCopySourceDictionary, - __CSBackupRulesEngineCopySourcePaths, __CSBackupRulesEngineCreateForBackup, - __CSBackupRulesEngineCreateWithArchive, __CSBackupRulesEngineEvaluateFile, - __CSBackupRulesEngineEvaluateFileFromFullPath, __CSBackupRulesEngineEvaluateFolder, - __CSBackupRulesEngineEvaluateFolderFromFullPath, __CSBackupRulesEngineEvaluateFromFullPath, - __CSBackupRulesEngineEvaluateFromFullPathDeferDirectoryDecision, + __CSBackupRulesEngineCopySourcePaths, __CSBackupRulesEngineCreate, + __CSBackupRulesEngineCreateForBackup, __CSBackupRulesEngineCreateWithArchive, + __CSBackupRulesEngineEvaluateFile, __CSBackupRulesEngineEvaluateFileFromFullPath, + __CSBackupRulesEngineEvaluateFolder, __CSBackupRulesEngineEvaluateFolderFromFullPath, + __CSBackupRulesEngineEvaluateFromFullPath, __CSBackupRulesEngineEvaluateFromFullPathDeferDirectoryDecision, __CSBackupRulesEngineGetRuleTreeForPath, __CSBackupRulesEngineGetRuleTreeWithVolEntry, __CSBackupRulesEngineGetTypeID, __CSBackupRulesEngineIsExclusionRulesCacheEnabled, __CSBackupRulesEngineIsPathExcluded, __CSBackupRulesEnginePopAllComponents, @@ -602,21 +649,21 @@ exports: __CSBackupRulesEngineSetTraversalPath, __CSBackupServerCopyStatus, __CSBackupServerIsActive, __CSBackupServerProxyBackupNow, __CSBackupServerProxyCancelBackup, __CSBackupServerProxyCopyDestinationMountPoint, - __CSBackupServerProxyGetTypeID, __CSBackupServerProxyIsPortRegistered, - __CSBackupServerProxyRunHealthCheck, __CSBackupServerProxySendMessage, - __CSBackupServerProxySetNeedsRescan, __CSBackupSessionCopyBackupDirectory, - __CSBackupSessionGetTypeID, __CSBackupSetBackupSessionTarget, - __CSBackupSettingsAreSystemFilesSkipped, __CSBackupSettingsCanEnableAutoBackup, - __CSBackupSettingsCanManuallyBackup, __CSBackupSettingsCanSetBackupVolume, - __CSBackupSettingsCopyBackupAlias, __CSBackupSettingsCopyBackupAliasData, - __CSBackupSettingsCopyDestinations, __CSBackupSettingsCopyExcludedPaths, - __CSBackupSettingsCopyExcludedVolumes, __CSBackupSettingsCopyIncludedPaths, - __CSBackupSettingsCopyIncludedVolumes, __CSBackupSettingsCopyNextBackupDate, - __CSBackupSettingsCopySkippedFolders, __CSBackupSettingsCopySkippedItems, - __CSBackupSettingsCopySkippedPaths, __CSBackupSettingsCopyStdExcludedContentPaths, - __CSBackupSettingsCopyStdExcludedFileContentPaths, __CSBackupSettingsCopyStdExcludedPaths, - __CSBackupSettingsCopyStdExcludedUserPaths, __CSBackupSettingsCreate, - __CSBackupSettingsExcludePath, __CSBackupSettingsGetMaxBackupSize, + __CSBackupServerProxyCopyMountPointForDestination, __CSBackupServerProxyGetTypeID, + __CSBackupServerProxyIsPortRegistered, __CSBackupServerProxyRunHealthCheck, + __CSBackupServerProxySendMessage, __CSBackupServerProxySetNeedsRescan, + __CSBackupSessionCopyBackupDirectory, __CSBackupSessionGetTypeID, + __CSBackupSetBackupSessionTarget, __CSBackupSettingsAreSystemFilesSkipped, + __CSBackupSettingsCanEnableAutoBackup, __CSBackupSettingsCanManuallyBackup, + __CSBackupSettingsCanSetBackupVolume, __CSBackupSettingsCopyBackupAlias, + __CSBackupSettingsCopyBackupAliasData, __CSBackupSettingsCopyDestinations, + __CSBackupSettingsCopyExcludedPaths, __CSBackupSettingsCopyExcludedVolumes, + __CSBackupSettingsCopyIncludedPaths, __CSBackupSettingsCopyIncludedVolumes, + __CSBackupSettingsCopyNextBackupDate, __CSBackupSettingsCopySkippedFolders, + __CSBackupSettingsCopySkippedItems, __CSBackupSettingsCopySkippedPaths, + __CSBackupSettingsCopyStdExcludedContentPaths, __CSBackupSettingsCopyStdExcludedFileContentPaths, + __CSBackupSettingsCopyStdExcludedPaths, __CSBackupSettingsCopyStdExcludedUserPaths, + __CSBackupSettingsCreate, __CSBackupSettingsExcludePath, __CSBackupSettingsGetMaxBackupSize, __CSBackupSettingsGetTypeID, __CSBackupSettingsIsAutoBackupEnabled, __CSBackupSettingsIsPathExcluded, __CSBackupShouldBackUpRecoverySet, __CSBackupShouldCheckLocalRecoveryPartition, __CSBackupStartBackingUpItem, @@ -624,24 +671,22 @@ exports: __CSBackupSystemVersionCompare, __CSBackupURLIsBackupItem, __CSBackupUnregisterMTMExclusions, __CSBackupWasItemEverBackedUp, __CSCheckFix, __CSCheckFixDisable, __CSCheckFixSetBundleInformation, - __CSCheckFixWithInfo, __CSCopyLazyValuesForKey, __CSCopyNamedData, - __CSCreateSeed, __CSDestroySeed, __CSFlushNamedData, __CSGetNamedData, - __CSGetProcessorArchitecture, __CSIncrementSeed, __CSReadSeed, - __CSReleaseNamedData, __CSSetNamedData, __CSWriteSeed, __CharacterByteType, - __ConvertLocalTimeToUTC, __ConvertLocalToUTCDateTime, __ConvertUTCToLocalDateTime, - __ConvertUTCToLocalTime, __CopyCStringToPascal, __CopyComponentBundleIdentifier, - __CopyPascalStringToC, __CoreServicesServerMain, __EqualString, - __FNNotifyByURL, __FSAccessControlEntryCopyUUID, __FSAccessControlEntryCreateMutableWithUUID, - __FSAccessControlEntryCreateMutableWithUUIDBytes, __FSAccessControlEntryGetAccessControlInfo, - __FSAccessControlEntryGetDisplayAsCurrentID, __FSAccessControlEntryGetDisplayAsCurrentIDValue, - __FSAccessControlEntryGetTypeID, __FSAccessControlEntryGetUUIDBytes, - __FSAccessControlEntryGetUnmappableInfo, __FSAccessControlEntryGetVisibility, - __FSAccessControlEntrySetAccessControlInfo, __FSAccessControlEntrySetUUID, - __FSAccessControlEntrySetUUIDBytes, __FSAddVolumeObserver, - __FSAddVolumeObserverOnQueue, __FSAllocateQuarantineData, - __FSApplyAccessRightsToObjectForUser, __FSApplyAccessRightsToObjectWithDictionary, - __FSCatalogSearchPlusFileIDs, __FSCompareAliasRecords, __FSCompareFlattenedFSRefs, - __FSCopyAliasFile, __FSCopyAliasFileWithFlags, __FSCopyAliasInfoFromAliasPtr, + __CSCheckFixWithInfo, __CSCopyLazyValuesForKey, __CSFlushNamedData, + __CSGetNamedData, __CSReleaseNamedData, __CSSetNamedData, + __CharacterByteType, __ConvertLocalTimeToUTC, __ConvertLocalToUTCDateTime, + __ConvertUTCToLocalDateTime, __ConvertUTCToLocalTime, __CopyCStringToPascal, + __CopyComponentBundleIdentifier, __CopyPascalStringToC, __CoreServicesServerMain, + __EqualString, __FNNotifyByURL, __FSAccessControlEntryCopyUUID, + __FSAccessControlEntryCreateMutableWithUUID, __FSAccessControlEntryCreateMutableWithUUIDBytes, + __FSAccessControlEntryGetAccessControlInfo, __FSAccessControlEntryGetDisplayAsCurrentID, + __FSAccessControlEntryGetDisplayAsCurrentIDValue, __FSAccessControlEntryGetTypeID, + __FSAccessControlEntryGetUUIDBytes, __FSAccessControlEntryGetUnmappableInfo, + __FSAccessControlEntryGetVisibility, __FSAccessControlEntrySetAccessControlInfo, + __FSAccessControlEntrySetUUID, __FSAccessControlEntrySetUUIDBytes, + __FSAllocateQuarantineData, __FSApplyAccessRightsToObjectForUser, + __FSApplyAccessRightsToObjectWithDictionary, __FSCatalogSearchPlusFileIDs, + __FSCompareAliasRecords, __FSCompareFlattenedFSRefs, __FSCopyAliasFile, + __FSCopyAliasFileWithFlags, __FSCopyAliasInfoFromAliasPtr, __FSCopyExtendedAliasInfoFromAliasPtr, __FSCopyFSPackedFSRef, __FSCopyFile, __FSCopyPOSIXSymlink, __FSCopyVolumeProperty, __FSCreateEffectiveAccessArrayWithACLArray, __FSCreateFSPackedFSRef, @@ -679,7 +724,6 @@ exports: __FSPermissionArrayCreateFSPermissionInfoWithVolume, __FSPermissionArrayCreateWithPermissionInfo, __FSPermissionArrayCreateWithPermissionInfoWithVolume, __FSPermissionArrayCreateWithSecurityInfo, __FSPermissionArrayWriteToDisk, __FSRemoveUserFromObjectAccessControlList, - __FSRemoveVolumeObserver, __FSRemoveVolumeObserverOnQueue, __FSRemoveVolumeProperty, __FSReplaceAccessControlListWithArray, __FSReplaceAccessControlListWithDictionary, __FSSamePhysicalDevice, __FSScheduleFileVolumeOperations, __FSSetAliasHandleSizeValidation, @@ -687,26 +731,26 @@ exports: __FSSetObjectOwnership, __FSSetQuarantineData, __FSSetStrictAliasPathMatchByDefault, __FSSetVolumeEncoding, __FSSetVolumePermissions, __FSSetVolumeProperty, __FSTransferExtendedAttributes, __FSTransferExtendedAttributesByForkRefNum, - __FSUnflattenFSRef, __FSUnscheduleFileVolumeOperations, __FSValidVolume, - __FSVolumeAllocateQuarantineData, __FSVolumeMount, __FSVolumeSetQuarantineData, - __FileIDTreeGetSKServiceDescription, __FindFolderRouting, - __FindNextComponentWithPlatformsBitmap, __FlattenComponent, - __FolderManagerDeleteUserSpecificItemsWithTimeout, __GDBUserBreakCallbackFunc, - __GDBUserBreakShouldSignalWithSIGINT, __GetComponentFSRef, - __GetComponentPlatformsBitmap, __GetComponentThingInfo, __GetCurrentEventTimestamp, - __GetIOKitDeviceTypeFromDeviceID, __GetUTCDateTime, __HClrRBit, - __HGetState, __HNoPurge, __HPurge, __HSetRBit, __HSetState, - __InitCarbonCore, __LMGetApFontID, __LMGetSysFontFam, __MPIsFullyInitialized, - __MPLibraryIsCompatible, __MPLibraryVersion, __P2CStr, __PBCatalogSearchPlusFileIDs, + __FSUnflattenFSRef, __FSUnscheduleFileVolumeOperations, __FSUpdateOutOfProcessFSRef, + __FSValidVolume, __FSVolumeAllocateQuarantineData, __FSVolumeMount, + __FSVolumeSetQuarantineData, __FindFolderRouting, __FindNextComponentWithPlatformsBitmap, + __FlattenComponent, __FolderManagerDeleteUserSpecificItemsWithTimeout, + __GetComponentFSRef, __GetComponentPlatformsBitmap, __GetComponentThingInfo, + __GetCurrentEventTimestamp, __GetIOKitDeviceTypeFromDeviceID, + __GetUTCDateTime, __HClrRBit, __HGetState, __HNoPurge, __HPurge, + __HSetRBit, __HSetState, __InitCarbonCore, __LMGetApFontID, + __LMGetSysFontFam, __MPIsFullyInitialized, __MPLibraryIsCompatible, + __MPLibraryVersion, __P2CStr, __PBCatalogSearchPlusFileIDs, __PLpos, __PLstrcat, __PLstrchr, __PLstrcmp, __PLstrcpy, __PLstrlen, __PLstrncat, __PLstrncmp, __PLstrncpy, __PLstrpbrk, __PLstrrchr, - __PLstrspn, __PLstrstr, __SCSeedGetSKServiceDescription, __URLGetExtendedUserAccess, + __PLstrspn, __PLstrstr, __SCGetServerRunLoop, __URLGetExtendedUserAccess, __UnflattenComponent, __UppercaseText, __c2pstr, __c2pstrcpy, __ccSetGetHandleSizeCallout, __p2cstr, __p2cstrcpy, _annuity, _compound, _dec2f, _dec2l, _dec2num, _dec2s, _dec2str, _dtox80, - _gCarbonDiskSwitchDialog, _gSCKnownSKPlugins, _kBackupID, - _kBackupMachineAddressXAttrKey, _kBackupNotificationObject, - _kBackupPrefsChangedNotification, _kBackupPrefsPlist, _kBackupsTopLevelFolder, + _gSCKnownSKPlugins, _kBackupID, _kBackupMachineAddressXAttrKey, + _kBackupNotificationObject, _kBackupPrefsChangedNotification, + _kBackupPrefsPlist, _kBackupsTopLevelFolder, _kCSBackupAdvisoryListFilePathKey, + _kCSBackupAdvisoryListFileTypeKey, _kCSBackupAdvisoryListLockProxyKey, _kCSBackupAirPortInfoMacAddressKey, _kCSBackupAirPortInfoNameKey, _kCSBackupAirPortInfoVersionKey, _kCSBackupAlwaysShowDeletedBackupsWarningKey, _kCSBackupBootPlist, _kCSBackupClientIdXPCKey, _kCSBackupCustomBooter, @@ -765,10 +809,7 @@ exports: _kCSBackupdKeyTimeRemaining, _kCSBackupdKeyTotalBytesCopied, _kCSBackupdKeyTotalMobileBackupsToMigrate, _kCSBackupdPortName, _kCSBackupdResultDictionaryPath, _kCSBackupdSignature, _kCSBackupdStatusPortName, - _kCompletionDateXAttrKey, _kFSEventVolumeAboutToRename, _kFSEventVolumeAboutToUnmount, - _kFSEventVolumeMounted, _kFSEventVolumePropertyChanged, _kFSEventVolumeRenamed, - _kFSEventVolumeRepairStarted, _kFSEventVolumeUnmountFailed, - _kFSEventVolumeUnmounted, _kFSFileManagerVolumePropertyChanged, + _kCompletionDateXAttrKey, _kFSFileManagerVolumePropertyChanged, _kFSFileManagerVolumePropertyMonitor, _kFSIOMediaIconBundleIdentifier, _kFSIOMediaIconFamilyName, _kFSIsAirportVolume, _kFSIsBDVideo, _kFSIsDVDVideo, _kFSIsMobileTimeMachine, _kFSIsNetworkOpticalVolume, @@ -781,19 +822,19 @@ exports: _kFSVolumeIsBeingRepaired, _kFSVolumeIsBeingUnmounted, _kFSVolumePropertyKey, _kFSVolumeRefNumKey, _kSnapshotContainerXAttrKey, _kSnapshotStateXAttrKey, _kSnapshotVolumeFSEventStoreUUIDXAttrKey, _kSnapshotVolumeLastEventBackedUpXAttrKey, - _kSnapshotVolumeUUIDXAttrKey, _ldtox80, _lowMem, _num2dec, - _numtostring, _pi, _randomx, _relation, _relstring, _scAddReconnectProc, - _scCopyAllSessionInfo, _scCreateService, _scCreateServiceVersion, - _scCreateSystemService, _scCreateSystemServiceVersion, _scGetProcessOptions, - _scGetServerCheckinPort, _scGetServerOptions, _scPrefsForgetKey, - _scPrefsGetInteger, _scPrefsGetString, _scPrefsPostData, _scPrefsSetInteger, - _scPrefsSetString, _str2dec, _x80tod, _x80told ] + _kSnapshotVolumeUUIDXAttrKey, _num2dec, _numtostring, _pi, + _randomx, _relation, _relstring, _scAddReconnectProc, _scCopyAllSessionInfo, + _scCreateService, _scCreateServiceVersion, _scCreateSystemService, + _scCreateSystemServiceVersion, _scGetProcessOptions, _scGetServerCheckinPort, + _scGetServerOptions, _scPrefsForgetKey, _scPrefsGetInteger, + _scPrefsGetString, _scPrefsPostData, _scPrefsSetInteger, _scPrefsSetString, + _str2dec, _x80tod ] --- !tapi-tbd tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices' -current-version: 355 +current-version: 368.203 parent-umbrella: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -863,7 +904,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents' -current-version: 1376 +current-version: 1400.100.1 parent-umbrella: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -914,8 +955,9 @@ exports: _LSCopyDisplayNameForURL, _LSCopyItemAttribute, _LSCopyItemAttributes, _LSCopyItemInfoForRef, _LSCopyItemInfoForURL, _LSCopyKindStringForMIMEType, _LSCopyKindStringForRef, _LSCopyKindStringForTypeInfo, _LSCopyKindStringForURL, - _LSDefaultApplicationManagementDomain, _LSDefaultIconName, - _LSDisableURLOverrides, _LSDocumentTypesChangedNotificationName, + _LSDefaultAppCategoryForMask, _LSDefaultAppCategoryGetFromName, + _LSDefaultAppCategoryMaskForCategory, _LSDefaultApplicationManagementDomain, + _LSDefaultIconName, _LSDisableURLOverrides, _LSDocumentTypesChangedNotificationName, _LSFileProviderStringKey, _LSFindApplicationForInfo, _LSGeoJSONKey, _LSGetApplicationForInfo, _LSGetApplicationForItem, _LSGetApplicationForURL, _LSGetExtensionInfo, _LSGetHandlerOptionsForContentType, _LSGetOpenRoles, @@ -939,8 +981,9 @@ exports: _LSUserActivityIsNotificationOptionKey, _LSUserActivityManagerActivityContinuationIsEnabledChangedNotification, _LSUserActivityTypeNowPlaying, _LSUserActivityTypeSiri, _LSUserActivityTypeTeamIDOverideKey, _LSUserApplicationType, _LSUserInitiatedUninstall, _LSVPNPluginType, - _LSiTunesArtworkKey, _LSiTunesMetadataKey, _OverrideIconRef, - _ReadIconFromFSRef, _RegisterIconRefFromFSRef, _RegisterIconRefFromIconFamily, + _LSiTunesArtworkKey, _LSiTunesMetadataKey, '_OBJC_CLASS_$_LSCodeEvaluation', + '_OBJC_CLASS_$_LSCodeEvaluationInfo', _OverrideIconRef, _ReadIconFromFSRef, + _RegisterIconRefFromFSRef, _RegisterIconRefFromIconFamily, _ReleaseIconRef, _RemoveIconRefOverride, _SetCustomIconsEnabled, _UTCreateStringForOSType, _UTGetOSTypeFromString, _UTTypeConformsTo, _UTTypeCopyAllTagsWithClass, _UTTypeCopyChildIdentifiers, @@ -1013,6 +1056,7 @@ exports: __LSEnumerateApplicationsFromSpotlight, __LSExceptionsGetAppStoreInfoForBundleIdentifier, __LSExceptionsIsBundleIdentifierInternallyBlocked, __LSExtensionsLog, __LSFindApplications, __LSFindApplicationsItem, __LSGetApplicationInformationSeed, + __LSGetApplicationLaunchServicesServerConnectionStatusFlags, __LSGetApplicationListSeed, __LSGetBundle, __LSGetCurrentActivationToken, __LSGetCurrentApplicationASN, __LSGetDescriptionForPersonaType, __LSGetFrontApplicationSeed, __LSGetIconRefForURL, __LSGetMainBundleURL, @@ -1047,25 +1091,27 @@ exports: __LSSendNotification, __LSServerMain, __LSSetApplicationCategories, __LSSetApplicationInformation, __LSSetApplicationInformationItem, __LSSetApplicationLaunchServicesServerConnectionStatus, __LSSetArchitecturePreferenceForApplicationURL, - __LSSetDatabaseIsSeeded, __LSSetDefaultSchemeHandlerURL, __LSSetDefaultSchemeHandlerURLWaitingUntilDone, - __LSSetDefaultWebBrowserWithApplicationURL, __LSSetDefaultWebBrowserWithBundleIdentifierAndVersion, - __LSSetDefaultXPCConnection, __LSSetFrontApplication, __LSSetFrontApplicationLong, - __LSSetFrontApplicationLongWithCompletion, __LSSetMetaApplicationInformation, - __LSSetMetaApplicationInformationItem, __LSSetPointerAuthKeyStatePreferenceForCurrentApplication, + __LSSetContentTypeHandler, __LSSetDatabaseIsSeeded, __LSSetDefaultSchemeHandlerURL, + __LSSetDefaultSchemeHandlerURLWaitingUntilDone, __LSSetDefaultWebBrowserWithApplicationURL, + __LSSetDefaultWebBrowserWithBundleIdentifierAndVersion, __LSSetDefaultXPCConnection, + __LSSetFrontApplication, __LSSetFrontApplicationLong, __LSSetFrontApplicationLongWithCompletion, + __LSSetMetaApplicationInformation, __LSSetMetaApplicationInformationItem, + __LSSetPointerAuthKeyStatePreferenceForCurrentApplication, __LSSetProcessQuarantineProperties, __LSSetRecentItemCount, - __LSSetShowAllExtensionsPreference, __LSSetUpClientSideReconnectionServices, - __LSSetWeakBindingForFileURL, __LSSetWeakBindingURLForType, - __LSSetWeakBindingURLForUTI, __LSSharedMemoryBumpApplicationInformationSeed, - __LSSharedMemoryBumpApplicationListSeed, __LSSharedMemoryBumpFrontApplicationASNSeed, - __LSSharedMemoryBumpMenuBarOwnerASNSeed, __LSSharedMemoryBumpPendingApplicationListSeed, - __LSSharedMemoryBumpVisibleApplicationListSeed, __LSSharedMemoryClearIndexedApplicationInformation, - __LSSharedMemoryCopyForSessionID, __LSSharedMemoryCopySystemUIPresentationModeStrRef, - __LSSharedMemoryGetApplicationInformation, __LSSharedMemoryGetApplicationInformationForPid, - __LSSharedMemoryGetApplicationInformationSeed, __LSSharedMemoryGetApplicationListCount, - __LSSharedMemoryGetApplicationListSeed, __LSSharedMemoryGetCGSSessionID, - __LSSharedMemoryGetChangeCount, __LSSharedMemoryGetDebugLevel, - __LSSharedMemoryGetExpectedFrontApplicationASNLow, __LSSharedMemoryGetFrontASNLow, - __LSSharedMemoryGetFrontApplicationASNSeed, __LSSharedMemoryGetIndexedApplicationAdditionalInformation, + __LSSetSchemeHandler, __LSSetShowAllExtensionsPreference, + __LSSetUpClientSideReconnectionServices, __LSSetWeakBindingForFileURL, + __LSSetWeakBindingURLForType, __LSSetWeakBindingURLForUTI, + __LSSharedMemoryBumpApplicationInformationSeed, __LSSharedMemoryBumpApplicationListSeed, + __LSSharedMemoryBumpFrontApplicationASNSeed, __LSSharedMemoryBumpMenuBarOwnerASNSeed, + __LSSharedMemoryBumpPendingApplicationListSeed, __LSSharedMemoryBumpVisibleApplicationListSeed, + __LSSharedMemoryClearIndexedApplicationInformation, __LSSharedMemoryCopyForSessionID, + __LSSharedMemoryCopySystemUIPresentationModeStrRef, __LSSharedMemoryGetApplicationInformation, + __LSSharedMemoryGetApplicationInformationForPid, __LSSharedMemoryGetApplicationInformationSeed, + __LSSharedMemoryGetApplicationListCount, __LSSharedMemoryGetApplicationListSeed, + __LSSharedMemoryGetCGSSessionID, __LSSharedMemoryGetChangeCount, + __LSSharedMemoryGetDebugLevel, __LSSharedMemoryGetExpectedFrontApplicationASNLow, + __LSSharedMemoryGetFrontASNLow, __LSSharedMemoryGetFrontApplicationASNSeed, + __LSSharedMemoryGetIndexedApplicationAdditionalInformation, __LSSharedMemoryGetIndexedApplicationInformation, __LSSharedMemoryGetLaunchProgressFlags, __LSSharedMemoryGetLaunchProgressUserActivityCount, __LSSharedMemoryGetLockCount, __LSSharedMemoryGetMenuBarOwnerASNLow, __LSSharedMemoryGetMenuBarOwnerASNSeed, @@ -1127,37 +1173,38 @@ exports: __kLSApplicationInThrottledStateAfterLaunchKey, __kLSApplicationInformationSeedKey, __kLSApplicationIsBetaKey, __kLSApplicationIsHiddenKey, __kLSApplicationIsTemplateApplicationKey, __kLSApplicationIsTemplateProxyApplicationKey, __kLSApplicationListSeedKey, - __kLSApplicationLockedInStoppedStateKey, __kLSApplicationOverriddenBackgroundDomainNameKey, - __kLSApplicationReadyToBeFrontableKey, __kLSApplicationSandboxedInformationItemsKey, - __kLSApplicationTemplateApplicationParametersKey, __kLSApplicationTemplateProxyApplicationParametersKey, - __kLSApplicationTypeKey, __kLSApplicationTypeToRestoreKey, - __kLSApplicationUIElementTypeKey, __kLSApplicationVersionKey, - __kLSApplicationWasTerminatedByTALKey, __kLSApplicationWouldBeTerminatedByTALKey, - __kLSApplicationsRecordingAppleEventsKey, __kLSArchitectureARM64Value, - __kLSArchitectureKey, __kLSArchitecturePowerPC64Value, __kLSArchitecturePowerPCValue, - __kLSArchitectureUnknownValue, __kLSArchitecturei386Value, - __kLSArchitecturex86_64Value, __kLSAuditTokenKey, __kLSBackgroundPriorityKey, - __kLSBackgroundPriorityOnceKey, __kLSBindingResourceInfoBadgeableKey, - __kLSBindingResourceInfoNameKey, __kLSBindingResourceInfoResourceKey, - __kLSBindingResourceInfoVariantFlagsKey, __kLSBringForwardDelayKey, - __kLSBringForwardRequestCausedByUserIntentKey, __kLSBringForwardRequestForcedKey, - __kLSBringForwardRequestIfFrontReservationExistsKey, __kLSBringForwardRequestImmediateKey, - __kLSBringForwardRequestStandardActivationKey, __kLSBringForwardWindowIDKey, - __kLSBringNextApplicationForwardKey, __kLSBundleIdentifierLowerCaseKey, - __kLSBundleNameLowerCaseKey, __kLSBundlePathDeviceIDKey, __kLSBundlePathINodeKey, - __kLSBundlePathKey, __kLSBundlePathLastComponentLowerCaseKey, - __kLSBundlePathSandboxExtensionKey, __kLSCheckInTimeKey, __kLSDYLDPlatformKey, - __kLSDataContainerPersonalityIconKey, __kLSDataContainerPersonalityLocalizedNameKey, - __kLSDebugLevelKey, __kLSDisableAllPostLaunchBringForwardRequestsKey, - __kLSDisplayNameKey, __kLSDoNotBFIfFrontApplicationSeedIsChangedKey, - __kLSDoNotBringAllWindowsForwardKey, __kLSDoNotBringAnyWindowsForwardKey, - __kLSDoNotSetTaskPolicyAutomaticallyKey, __kLSDontDropRootPermissionsKey, - __kLSErrorMessageStringKey, __kLSExecutableFilenameLowerCaseKey, - __kLSExecutableFormatCFMKey, __kLSExecutableFormatKey, __kLSExecutableFormatMachOKey, - __kLSExecutableFormatPoundBangKey, __kLSExecutablePathDeviceIDKey, - __kLSExecutablePathINodeKey, __kLSExecutablePathKey, __kLSExecutablePlatformKey, - __kLSExecutableSDKVersionKey, __kLSExitStatusKey, __kLSExpectedFrontApplicationASNKey, - __kLSFileCreatorKey, __kLSFileTypeKey, __kLSFlavorKey, __kLSForegroundPriorityKey, + __kLSApplicationLockedInStoppedStateKey, __kLSApplicationOnlyForegroundOnUserLaunchKey, + __kLSApplicationOverriddenBackgroundDomainNameKey, __kLSApplicationReadyToBeFrontableKey, + __kLSApplicationSandboxedInformationItemsKey, __kLSApplicationTemplateApplicationParametersKey, + __kLSApplicationTemplateProxyApplicationParametersKey, __kLSApplicationTypeKey, + __kLSApplicationTypeToRestoreKey, __kLSApplicationUIElementTypeKey, + __kLSApplicationVersionKey, __kLSApplicationWasTerminatedByTALKey, + __kLSApplicationWouldBeTerminatedByTALKey, __kLSApplicationsRecordingAppleEventsKey, + __kLSArchitectureARM64Value, __kLSArchitectureKey, __kLSArchitecturePowerPC64Value, + __kLSArchitecturePowerPCValue, __kLSArchitectureUnknownValue, + __kLSArchitecturei386Value, __kLSArchitecturex86_64Value, + __kLSAuditTokenKey, __kLSBackgroundPriorityKey, __kLSBackgroundPriorityOnceKey, + __kLSBindingResourceInfoBadgeableKey, __kLSBindingResourceInfoNameKey, + __kLSBindingResourceInfoResourceKey, __kLSBindingResourceInfoVariantFlagsKey, + __kLSBringForwardDelayKey, __kLSBringForwardRequestCausedByUserIntentKey, + __kLSBringForwardRequestForcedKey, __kLSBringForwardRequestIfFrontReservationExistsKey, + __kLSBringForwardRequestImmediateKey, __kLSBringForwardRequestStandardActivationKey, + __kLSBringForwardWindowIDKey, __kLSBringNextApplicationForwardKey, + __kLSBundleIdentifierLowerCaseKey, __kLSBundleNameLowerCaseKey, + __kLSBundlePathDeviceIDKey, __kLSBundlePathINodeKey, __kLSBundlePathKey, + __kLSBundlePathLastComponentLowerCaseKey, __kLSBundlePathSandboxExtensionKey, + __kLSCheckInTimeKey, __kLSDYLDPlatformKey, __kLSDataContainerPersonalityIconKey, + __kLSDataContainerPersonalityLocalizedNameKey, __kLSDebugLevelKey, + __kLSDisableAllPostLaunchBringForwardRequestsKey, __kLSDisplayNameKey, + __kLSDoNotBFIfFrontApplicationSeedIsChangedKey, __kLSDoNotBringAllWindowsForwardKey, + __kLSDoNotBringAnyWindowsForwardKey, __kLSDoNotSetTaskPolicyAutomaticallyKey, + __kLSDontDropRootPermissionsKey, __kLSErrorMessageStringKey, + __kLSExecutableFilenameLowerCaseKey, __kLSExecutableFormatCFMKey, + __kLSExecutableFormatKey, __kLSExecutableFormatMachOKey, __kLSExecutableFormatPoundBangKey, + __kLSExecutablePathDeviceIDKey, __kLSExecutablePathINodeKey, + __kLSExecutablePathKey, __kLSExecutablePlatformKey, __kLSExecutableSDKVersionKey, + __kLSExitStatusKey, __kLSExpectedFrontApplicationASNKey, __kLSFileCreatorKey, + __kLSFileTypeKey, __kLSFlavorKey, __kLSForegroundPriorityKey, __kLSForegroundPriorityOnceKey, __kLSFrontASNKey, __kLSFrontApplicationSeedKey, __kLSFrontReservationExistsKey, __kLSHiddenApplicationCountKey, __kLSIsProxiedForTALKey, __kLSKeyBeingAddedKey, __kLSKeyBeingChangedKey, @@ -1219,10 +1266,11 @@ exports: __kLSOpenOptionLaunchStdOutPathKey, __kLSOpenOptionLaunchUIDKey, __kLSOpenOptionLaunchWhenThisProcessExitsKey, __kLSOpenOptionLaunchWithoutRestoringStateKey, __kLSOpenOptionLaunchedByPersistenceKey, __kLSOpenOptionNotRelaunchedForTALKey, - __kLSOpenOptionOverrideAuditTokenKey, __kLSOpenOptionOverrideBackgroundPriorityDomainNameKey, - __kLSOpenOptionPreferRunningInstanceKey, __kLSOpenOptionPrintDocumentsKey, - __kLSOpenOptionProhitLaunchingSelfKey, __kLSOpenOptionRequireBundledExecutableKey, - __kLSOpenOptionRequiresUniversalLinksKey, __kLSOpenOptionRolesMaskKey, + __kLSOpenOptionOverriddenSpawnConstraintsDictionaryKey, __kLSOpenOptionOverrideAuditTokenKey, + __kLSOpenOptionOverrideBackgroundPriorityDomainNameKey, __kLSOpenOptionPreferRunningInstanceKey, + __kLSOpenOptionPrintDocumentsKey, __kLSOpenOptionProhitLaunchingSelfKey, + __kLSOpenOptionRequireBundledExecutableKey, __kLSOpenOptionRequiresUniversalLinksKey, + __kLSOpenOptionRolesMaskKey, __kLSOpenOptionSpawnConstraintsDictionaryKey, __kLSOpenOptionStopProcessKey, __kLSOpenOptionSynchronousKey, __kLSOpenOptionUIElementLaunchKey, __kLSOpenOptionUserInfoKey, __kLSOpenOptionWaitForApplicationToCheckInKey, __kLSOriginalExecutablePathDeviceIDKey, @@ -1239,6 +1287,7 @@ exports: __kLSUIPresentationModeAllSuppressedValue, __kLSUIPresentationModeContentHiddenValue, __kLSUIPresentationModeContentSuppressedValue, __kLSUIPresentationModeKey, __kLSUIPresentationModeNormalValue, __kLSUIPresentationOptionsKey, + __kLSURLApplicationShouldBeHiddenBySystemPreferenceKey, __kLSURLCanSetApplicationShouldBeHiddenBySystemPreferenceKey, __kLSUnhiddenApplicationCountKey, __kLSUserActivityCountKey, __kLSVisibleApplicationCountKey, __kLSVisibleApplicationListSeedKey, __kLSWantsToComeForwardAtRegistrationTimeKey, __kUTTypeGlyphNameKey, @@ -1256,7 +1305,8 @@ exports: _kLSItemContentType, _kLSItemDisplayKind, _kLSItemDisplayName, _kLSItemExtension, _kLSItemExtensionIsHidden, _kLSItemFileCreator, _kLSItemFileType, _kLSItemIsInvisible, _kLSItemQuarantineProperties, - _kLSItemRoleHandlerDisplayName, _kLSLocalLibraryBundleIdentifier, + _kLSItemRoleHandlerDisplayName, _kLSLaunchOptionTemplateApplicationBundlePathKeyEntitlement, + _kLSLaunchWithCoreServicesUIAgentEntitlement, _kLSLocalLibraryBundleIdentifier, _kLSMeetingRoomCanonicalName, _kLSNetworkLibraryBundleIdentifier, _kLSNetworkRootCanonicalName, _kLSNotificationDatabaseSeedingComplete, _kLSNotificationDatabaseSeedingStart, _kLSNotificationSystemConfigurationChange, @@ -1341,11 +1391,12 @@ exports: LSApplicationWorkspace, LSApplicationWorkspaceObserver, LSBundleIdentity, LSBundleInfoCachedValues, LSBundleProxy, LSBundleRecord, LSBundleWrapperCreator, LSBundleWrapperStagingReceipt, LSBundleWrapperUpdater, LSClaimBinding, - LSClaimBindingConfiguration, LSClaimRecord, LSCodeEvaluation, - LSCodeEvaluationInfo, LSDatabaseContext, LSDocumentProxy, - LSEnumerator, LSExtensionPoint, LSExtensionPointRecord, LSIconResource, - LSObserver, LSOpenWithMenuConstructor, LSPlugInKitProxy, LSPlugInQuery, - LSPlugInQueryWithIdentifier, LSPlugInQueryWithQueryDictionary, + LSClaimBindingConfiguration, LSClaimRecord, LSDatabaseContext, + LSDefaultApplicationQueryResult, LSDocumentProxy, LSEligibilityPredicate, + LSEligibilityPredicateEvaluator, LSEnumerator, LSExtensionPoint, + LSExtensionPointRecord, LSFeatureFlagPredicate, LSFeatureFlagPredicateEvaluator, + LSIconResource, LSObserver, LSOpenWithMenuConstructor, LSPlugInKitProxy, + LSPlugInQuery, LSPlugInQueryWithIdentifier, LSPlugInQueryWithQueryDictionary, LSPlugInQueryWithURL, LSPrecondition, LSPropertyList, LSRecord, LSRecordPromise, LSResourceProxy, LSServiceRecord, LSSettingsStore, LSSpotlightAction, LSSystemBundleIdentity, UTTypeRecord, _LSApplicationState, @@ -1364,7 +1415,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata' -current-version: 2274.9 +current-version: 2333.22.13 parent-umbrella: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -1387,33 +1438,33 @@ exports: _MDCopySessionLeaveUserDirectory, _MDItemCopyAttribute, _MDItemCopyAttributeNames, _MDItemCopyAttributes, _MDItemCopyAttributesBulk, _MDItemCopyLabels, _MDItemCreate, _MDItemCreateForAbsolutePaths, _MDItemCreateWithURL, - _MDItemGetTypeID, _MDItemRemoveAttribute, _MDItemRemoveAttributes, - _MDItemRemoveAttributesForAbsolutePaths, _MDItemRemoveLabel, - _MDItemSetAttribute, _MDItemSetAttributes, _MDItemSetAttributesForAbsolutePaths, - _MDItemSetLabel, _MDItemSetLocalizedAttribute, _MDItemWithPathGetTypeID, - _MDItemsCopyAttributes, _MDItemsCreateWithURLs, _MDItemsSetAttributes, - _MDItemsSetAttributesNoExAttr, _MDLabelAddToItems, _MDLabelCopyAttribute, - _MDLabelCopyAttributeName, _MDLabelCreate, _MDLabelDelete, - _MDLabelGetTypeID, _MDLabelRemoveFromItems, _MDLabelSetAttributes, - _MDQueryCopyQueryString, _MDQueryCopySortingAttributes, _MDQueryCopyValueListAttributes, - _MDQueryCopyValuesOfAttribute, _MDQueryCreate, _MDQueryCreateForItems, - _MDQueryCreateSubset, _MDQueryDisableUpdates, _MDQueryEnableUpdates, - _MDQueryExecute, _MDQueryGetAttributeValueOfResultAtIndex, - _MDQueryGetBatchingParameters, _MDQueryGetCountOfResultsWithAttributeValue, - _MDQueryGetIndexOfResult, _MDQueryGetResultAtIndex, _MDQueryGetResultCount, - _MDQueryGetTypeID, _MDQueryIsGatheringComplete, _MDQueryIsStopped, - _MDQuerySetBatchingParameters, _MDQuerySetCreateResultFunction, - _MDQuerySetCreateValueFunction, _MDQuerySetDispatchQueue, - _MDQuerySetMatchesSupportFiles, _MDQuerySetMaxCount, _MDQuerySetSearchScope, - _MDQuerySetSortComparator, _MDQuerySetSortComparatorBlock, - _MDQuerySetSortOptionFlagsForAttribute, _MDQuerySetSortOrder, - _MDQueryStop, _MDSchemaCopyAllAttributes, _MDSchemaCopyAttributesForContentType, - _MDSchemaCopyDisplayDescriptionForAttribute, _MDSchemaCopyDisplayNameForAttribute, - _MDSchemaCopyMetaAttributesForAttribute, _MDServiceConnectionBindChannelUUID, - _MDServiceConnectionDropChannelUUID, _MDServiceConnectionGetConnection, - _MDServiceConnectionGetTypeID, _MDServiceConnectionReceive, - _MDServiceConnectionReceiveBlock, _MDServiceConnectionSend, - _MDServiceConnectionSendEnv, _MDServiceConnectionSendReceive, + _MDItemGetCacheFileDescriptors, _MDItemGetTypeID, _MDItemRemoveAttribute, + _MDItemRemoveAttributes, _MDItemRemoveAttributesForAbsolutePaths, + _MDItemRemoveLabel, _MDItemSetAttribute, _MDItemSetAttributes, + _MDItemSetAttributesForAbsolutePaths, _MDItemSetLabel, _MDItemSetLocalizedAttribute, + _MDItemWithPathGetTypeID, _MDItemsCopyAttributes, _MDItemsCreateWithURLs, + _MDItemsSetAttributes, _MDItemsSetAttributesNoExAttr, _MDLabelAddToItems, + _MDLabelCopyAttribute, _MDLabelCopyAttributeName, _MDLabelCreate, + _MDLabelDelete, _MDLabelGetTypeID, _MDLabelRemoveFromItems, + _MDLabelSetAttributes, _MDQueryCopyQueryString, _MDQueryCopySortingAttributes, + _MDQueryCopyValueListAttributes, _MDQueryCopyValuesOfAttribute, + _MDQueryCreate, _MDQueryCreateForItems, _MDQueryCreateSubset, + _MDQueryDisableUpdates, _MDQueryEnableUpdates, _MDQueryExecute, + _MDQueryGetAttributeValueOfResultAtIndex, _MDQueryGetBatchingParameters, + _MDQueryGetCountOfResultsWithAttributeValue, _MDQueryGetIndexOfResult, + _MDQueryGetResultAtIndex, _MDQueryGetResultCount, _MDQueryGetTypeID, + _MDQueryIsGatheringComplete, _MDQueryIsStopped, _MDQuerySetBatchingParameters, + _MDQuerySetCreateResultFunction, _MDQuerySetCreateValueFunction, + _MDQuerySetDispatchQueue, _MDQuerySetMatchesSupportFiles, + _MDQuerySetMaxCount, _MDQuerySetSearchScope, _MDQuerySetSortComparator, + _MDQuerySetSortComparatorBlock, _MDQuerySetSortOptionFlagsForAttribute, + _MDQuerySetSortOrder, _MDQueryStop, _MDSchemaCopyAllAttributes, + _MDSchemaCopyAttributesForContentType, _MDSchemaCopyDisplayDescriptionForAttribute, + _MDSchemaCopyDisplayNameForAttribute, _MDSchemaCopyMetaAttributesForAttribute, + _MDServiceConnectionBindChannelUUID, _MDServiceConnectionDropChannelUUID, + _MDServiceConnectionGetConnection, _MDServiceConnectionGetTypeID, + _MDServiceConnectionReceive, _MDServiceConnectionReceiveBlock, + _MDServiceConnectionSend, _MDServiceConnectionSendEnv, _MDServiceConnectionSendReceive, _NSMetadataItemAcquisitionMakeKey, _NSMetadataItemAcquisitionModelKey, _NSMetadataItemAlbumKey, _NSMetadataItemAltitudeKey, _NSMetadataItemApertureKey, _NSMetadataItemAppleLoopDescriptorsKey, _NSMetadataItemAppleLoopsKeyFilterTypeKey, @@ -1482,6 +1533,7 @@ exports: _NSMetadataItemTimestampKey, _NSMetadataItemTitleKey, _NSMetadataItemTotalBitRateKey, _NSMetadataItemVersionKey, _NSMetadataItemVideoBitRateKey, _NSMetadataItemWhereFromsKey, _NSMetadataItemWhiteBalanceKey, + _NSMetadataItemXMPCredit, _NSMetadataItemXMPDigitalSourceType, _NSMetadataQueryIndexedLocalComputerScope, _NSMetadataQueryIndexedNetworkScope, _NSMetadataQueryUpdateAddedItemsKey, _NSMetadataQueryUpdateChangedItemsKey, _NSMetadataQueryUpdateRemovedItemsKey, _SIUINT32SetAddValue, @@ -1552,43 +1604,46 @@ exports: __MDQueryCreateQueryStringToMatchAttributeWithOptions, __MDQueryCreateQueryStringToMatchDisplayName, __MDQueryCreateQueryStringToMatchDisplayNameWithOptions, __MDQueryCreateQueryStringToMatchDisplayNamesWithOptions, __MDQueryCreateQueryStringWithOptions, __MDQueryCreateQueryStringWithOptionsDict, - __MDQueryCreateStringByAddingBackslashEscapes, __MDQueryDontEnforceTopN, - __MDQueryEnablePerfGathering, __MDQueryEnumerateNodesInQueryString, + __MDQueryCreateStringByAddingBackslashEscapes, __MDQueryCreateWithAnnParams, + __MDQueryDontEnforceTopN, __MDQueryEnablePerfGathering, __MDQueryEnumerateNodesInQueryString, __MDQueryExtractTextTerms, __MDQueryFastWillStop, __MDQueryGetAttributeValueOfResultAtIndexForGroup, __MDQueryGetAttributeValuesOfResultAtIndex, __MDQueryGetGeneration, __MDQueryGetGroupCount, __MDQueryGetResultAtIndexForGroup, __MDQueryGetResultCountForAllGroups, __MDQueryGetResultCountForGroup, __MDQueryGetSortFlagsForAttribute, __MDQueryIgnoreAllLastUsedUpdatesForItem, __MDQueryIgnoreNextLastUsedUpdateForItem, __MDQueryProcessUpdates, - __MDQuerySendPerformanceFeedback, __MDQuerySetCompletionOptions, + __MDQuerySendPerformanceFeedback, __MDQuerySetAttributedUserQuery, + __MDQuerySetClientBundleID, __MDQuerySetCompletionOptions, __MDQuerySetCompletionQuery, __MDQuerySetCompletionQueryWithWeights, __MDQuerySetCompletionResultCount, __MDQuerySetCreateResultFunctionWithKeyCallBacks, __MDQuerySetGroupComparator, __MDQuerySetGroupingRules, __MDQuerySetHasUpdateNotification, __MDQuerySetLabel, __MDQuerySetMDFilter, __MDQuerySetMDFilterQueries, __MDQuerySetMatchesOnlyFinderFiles, __MDQuerySetMaxCountPerGroup, __MDQuerySetMenuSortFlagsForQuery, __MDQuerySetNoProgress, + __MDQuerySetPommesRanking, __MDQuerySetQueryUnderstanding, __MDQuerySetRankingTerms, __MDQuerySetResultMatchingAttributes, __MDQuerySetSearchScopes, __MDQuerySetSortFlagsForAttribute, - __MDQuerySetSortOrder, __MDQuerySetSortToNone, __MDQuerySortDatesDescending, - __MDQueryStringCopyUserInput, __MDQueryStringCreateForRanking, - __MDQueryStringPreload, __MDQueryTotalCount, __MDQueryUserStringFacetsApplyDoWhileBlock, - __MDQueryWillSendPerformanceFeedback, __MDRankBitForShortcut, - __MDRankIsExactPhraseMatch, __MDRankIsMeaningfulForTopHit, - __MDRankIsOnOldBootVolume, __MDRegisterMailClient, __MDRemoveExtendedAttributes, - __MDRemoveExtendedAttributesForPath, __MDRemoveExtenedAttributes, - __MDRemoveExtenedAttributesForPath, __MDRequestVolumeRecycle, - __MDResumeIndexing, __MDResumeIndexingDirectory, __MDSchemaAddSchemaChangedHandler, - __MDSchemaCopyAll, __MDSchemaCopyAllStringsFiles, __MDSchemaCopyShortDisplayNameForAttribute, - __MDSchemaCopyShortNamesForAttribute, __MDSetExclusion, __MDSetExtendedAttributes, - __MDSetExtendedAttributesForPath, __MDSetLastUsedDate, __MDSetMailMessageAttributes, - __MDSetMailMessageAttributesAtTime, __MDSimpleQueryDeallocate, - __MDSimpleQueryGatherRangesForKeyAndValue, __MDSimpleQueryModifyForMatching, - __MDSimpleQueryObjectMatches, __MDSimpleQuerySetWidcardAttributes, - __MDSoftwareUpdateComplete, __MDStaticAppRankOfItem, __MDStringCompareLocalized, - __MDStringCopyCollationData, __MDStringPrefixOfString, __MDSuspendIndexing, - __MDSuspendIndexingDirectory, __MDTransferExtendedAttributes, - __MDUserListChange, __MDWaitForServerDeath, ___MDItemCopyAttributesEllipsis1, - ___MDItemRemoveAttributesEllipsis1, ___MDItemSetAttributesEllipsis1, + __MDQuerySetSortOrder, __MDQuerySetSortToNone, __MDQuerySetTokenRewrites, + __MDQuerySortDatesDescending, __MDQueryStringCopyUserInput, + __MDQueryStringCreateForRanking, __MDQueryStringPreload, __MDQueryTotalCount, + __MDQueryUserStringFacetsApplyDoWhileBlock, __MDQueryWillSendPerformanceFeedback, + __MDRankBitForShortcut, __MDRankIsExactPhraseMatch, __MDRankIsMeaningfulForTopHit, + __MDRankIsOnOldBootVolume, __MDRegisterFileProviderPaths, + __MDRegisterMailClient, __MDRemoveExtendedAttributes, __MDRemoveExtendedAttributesForPath, + __MDRemoveExtenedAttributes, __MDRemoveExtenedAttributesForPath, + __MDRequestVolumeRecycle, __MDResumeIndexing, __MDResumeIndexingDirectory, + __MDSchemaAddSchemaChangedHandler, __MDSchemaCopyAll, __MDSchemaCopyAllStringsFiles, + __MDSchemaCopyShortDisplayNameForAttribute, __MDSchemaCopyShortNamesForAttribute, + __MDSetExclusion, __MDSetExtendedAttributes, __MDSetExtendedAttributesForPath, + __MDSetLastUsedDate, __MDSetMailMessageAttributes, __MDSetMailMessageAttributesAtTime, + __MDSimpleQueryDeallocate, __MDSimpleQueryGatherRangesForKeyAndValue, + __MDSimpleQueryModifyForMatching, __MDSimpleQueryObjectMatches, + __MDSimpleQuerySetWidcardAttributes, __MDSoftwareUpdateComplete, + __MDStaticAppRankOfItem, __MDStringCompareLocalized, __MDStringCopyCollationData, + __MDStringPrefixOfString, __MDSuspendIndexing, __MDSuspendIndexingDirectory, + __MDTransferExtendedAttributes, __MDUserListChange, __MDWaitForServerDeath, + ___MDItemCopyAttributesEllipsis1, ___MDItemRemoveAttributesEllipsis1, + ___MDItemSetAttributesEllipsis1, __kMDAttributedUserQuery, __kMDImportIsForBackup, __kMDImporterTextLimitInK, __kMDItemAdamID, __kMDItemContentChangeDate, __kMDItemCreationDate, __kMDItemCreatorCode, __kMDItemExportImporterAvaliable, __kMDItemFSContentType, @@ -1605,11 +1660,15 @@ exports: __kMDItemOwnerUserID, __kMDItemPrescanCandidate, __kMDItemServerVersion, __kMDItemSharedItemCurrentUserRole, __kMDItemSharedProjectID, __kMDItemSortIdentityAttr, __kMDItemStaticInterestScore, __kMDItemSupportFileType, - __kMDItemTextContentIndexExists, __kMDItemTypeCode, __kMDItemUserTags, - __kMDParametersForImporter, __kMDQueryItemInScopeForRankingOnly, - __kMDQueryScope, __kMDUserQueryAttributedInputDateKey, __kMDUserQueryAttributedInputRecipientKey, - __kMDUserQueryAttributedInputSenderKey, __kMDUserQueryAttributedInputTitleKey, - __kMDUserQueryAttributedInputTopicKey, __kMDUserQueryDictionaryQueryAttributedInputKey, + __kMDItemTextContentIndexExists, __kMDItemTypeCode, __kMDItemURLCanBeHiddenBySystem, + __kMDItemUserTags, __kMDParametersForImporter, __kMDQueryAnnSearchParams, + __kMDQueryClientBundleID, __kMDQueryItemInScopeForRankingOnly, + __kMDQueryPommesRanking, __kMDQueryScope, __kMDQueryTokenRewrites, + __kMDQueryUnderstanding, __kMDUserQueryAttributedInputDateKey, + __kMDUserQueryAttributedInputRecipientKey, __kMDUserQueryAttributedInputSenderKey, + __kMDUserQueryAttributedInputTitleKey, __kMDUserQueryAttributedInputTopicKey, + __kMDUserQueryDictionaryAttributedInputSourceRuleBased, __kMDUserQueryDictionaryAttributedInputSourceU2Based, + __kMDUserQueryDictionaryQueryAttributedInputKey, __kMDUserQueryDictionaryQueryAttributedInputSourcesKey, __kMDUserQueryDictionaryQueryConfidenceHighValue, __kMDUserQueryDictionaryQueryConfidenceKey, __kMDUserQueryDictionaryQueryConfidenceLowValue, __kMDUserQueryDictionaryQueryConfidenceMediumValue, __kMDUserQueryDictionaryQueryConfidenceNoneValue, __kMDUserQueryDictionaryQueryDefaultStringKey, @@ -1692,8 +1751,8 @@ exports: _kMDItemLabelKind, _kMDItemLabelUUID, _kMDItemLanguages, _kMDItemLastUsedDate, _kMDItemLatitude, _kMDItemLayerNames, _kMDItemLensModel, _kMDItemLogicalSize, _kMDItemLongitude, _kMDItemLyricist, _kMDItemMaxAperture, - _kMDItemMediaTypes, _kMDItemMeteringMode, _kMDItemMusicalGenre, - _kMDItemMusicalInstrumentCategory, _kMDItemMusicalInstrumentName, + _kMDItemMediaExtensions, _kMDItemMediaTypes, _kMDItemMeteringMode, + _kMDItemMusicalGenre, _kMDItemMusicalInstrumentCategory, _kMDItemMusicalInstrumentName, _kMDItemNamedLocation, _kMDItemNumberOfPages, _kMDItemOrganizations, _kMDItemOrientation, _kMDItemOriginApplicationIdentifier, _kMDItemOriginMessageID, _kMDItemOriginSenderDisplayName, @@ -1721,8 +1780,9 @@ exports: _kMDItemUserSharedSentRecipientHandle, _kMDItemUserSharedSentSender, _kMDItemUserSharedSentSenderHandle, _kMDItemUserSharedSentTransport, _kMDItemUserTags, _kMDItemVersion, _kMDItemVideoBitRate, _kMDItemWhereFroms, - _kMDItemWhiteBalance, _kMDLabelAddedNotification, _kMDLabelAttributeBits, - _kMDLabelBundleURL, _kMDLabelChangedNotification, _kMDLabelContentChangeDate, + _kMDItemWhiteBalance, _kMDItemXMPCredit, _kMDItemXMPDigitalSourceType, + _kMDLabelAddedNotification, _kMDLabelAttributeBits, _kMDLabelBundleURL, + _kMDLabelChangedNotification, _kMDLabelContentChangeDate, _kMDLabelDisplayName, _kMDLabelExtendedFinderColor, _kMDLabelHasPreviewIcon, _kMDLabelID, _kMDLabelIconData, _kMDLabelIconURL, _kMDLabelIconUUID, _kMDLabelIsMutuallyExclusiveSetMember, _kMDLabelKind, _kMDLabelKindIsMutuallyExclusiveSetKey, @@ -1740,9 +1800,9 @@ exports: _kMDQueryMatchOnlyFinderFiles, _kMDQueryMatchSupportFiles, _kMDQueryMaxCount, _kMDQueryNoProgress, _kMDQueryNoRewrite, _kMDQueryOptionContextIdentifier, _kMDQueryOptionFinderLabelsDict, - _kMDQueryOptionFinderLabelsDictLocale, _kMDQueryProgressNotification, - _kMDQueryQoSClass, _kMDQueryResultContentRelevance, _kMDQueryResultGroupId, - _kMDQueryResultMLRelevance, _kMDQueryResultMatchedDisplayNameField, + _kMDQueryOptionFinderLabelsDictLocale, _kMDQueryOptionSPQUParse, + _kMDQueryProgressNotification, _kMDQueryQoSClass, _kMDQueryResultContentRelevance, + _kMDQueryResultGroupId, _kMDQueryResultMLRelevance, _kMDQueryResultMatchedDisplayNameField, _kMDQueryResultMatchedExtraQueriesField, _kMDQueryResultMatchedFields, _kMDQueryResultMatchingAttributes, _kMDQueryResultMatchingSceneIdentifiers, _kMDQueryResultMenuRelevance, _kMDQueryResultNewMatchedExtraQueriesField, @@ -1774,9 +1834,9 @@ reexports: arm64e-macos, arm64e-maccatalyst ] symbols: [ _MDChildPlistBytesContextCreate, _MDChildPlistBytesContextDestroy, _MDPlistArrayGetCount, _MDPlistArrayGetPlistObjectAtIndex, - _MDPlistArrayIterate, _MDPlistBooleanGetValue, _MDPlistBytesAddBoolean, - _MDPlistBytesAddCString, _MDPlistBytesAddData, _MDPlistBytesAddDate, - _MDPlistBytesAddInteger, _MDPlistBytesAddInternedCString, + _MDPlistArrayIterate, _MDPlistArrayIterateWithError, _MDPlistBooleanGetValue, + _MDPlistBytesAddBoolean, _MDPlistBytesAddCString, _MDPlistBytesAddData, + _MDPlistBytesAddDate, _MDPlistBytesAddInteger, _MDPlistBytesAddInternedCString, _MDPlistBytesAddNull, _MDPlistBytesAddPlistBytes, _MDPlistBytesAddRawInternedCStringKey, _MDPlistBytesAddRawInternedCStringKeyWithString, _MDPlistBytesAddReal, _MDPlistBytesAddString, _MDPlistBytesAddUUID, _MDPlistBytesAppendMultiplePlistBytes, @@ -1810,12 +1870,13 @@ reexports: _MDPlistContainerEndContainer, _MDPlistContainerEndDictionary, _MDPlistContainerGetBytes, _MDPlistContainerGetLength, _MDPlistContainerGetPlistObjectAtKeyArray, _MDPlistContainerGetPlistObjectAtKeyPath, _MDPlistContainerHasObjectAtKeyPath, + _MDPlistContainerValidateRootObject, _MDPlistContainerValidateRootObjectFromBytes, _MDPlistContainerWillUseMalloc, _MDPlistDataGetBytePtr, _MDPlistDateGetValue, _MDPlistDictionaryGetCount, _MDPlistDictionaryGetPlistObjectForKey, - _MDPlistDictionaryIterate, _MDPlistEmbeddedReferenceToPlistObject, - _MDPlistEnumerateQueryResults, _MDPlistGetPlistObjectSize, - _MDPlistGetPlistObjectType, _MDPlistGetRootPlistObject, _MDPlistNumberGetDoubleValue, - _MDPlistNumberGetIntValue, _MDPlistPlistObjectToEmbeddedReference, + _MDPlistDictionaryIterate, _MDPlistDictionaryIterateWithError, + _MDPlistEmbeddedReferenceToPlistObject, _MDPlistEnumerateQueryResults, + _MDPlistGetPlistObjectSize, _MDPlistGetPlistObjectType, _MDPlistGetRootPlistObject, + _MDPlistNumberGetDoubleValue, _MDPlistNumberGetIntValue, _MDPlistPlistObjectToEmbeddedReference, _MDPlistReferenceToPlistObject, _MDPlistStringGetValue, _MDPlistUUIDGetValue, _MDSPathFilterDumpRawFilterInternal, _MDStoreOIDArrayAddOID, _MDStoreOIDArrayAppendOIDArray, _MDStoreOIDArrayApplyBlock, @@ -1826,7 +1887,7 @@ reexports: _MDStoreOIDArrayCreateMutableWithOids, _MDStoreOIDArrayCreateWithDeallocator, _MDStoreOIDArrayEndBulkAdd, _MDStoreOIDArrayEndSequence, _MDStoreOIDArrayGetMappedVector, _MDStoreOIDArrayGetTypeID, _MDStoreOIDArrayGetVector, _MDStoreOIDArrayGetVectorCount, - _MDStoreOIDArrayRoom, _MDStoreOIDArraySetShouldDeallocate, + _MDStoreOIDArrayIsMutable, _MDStoreOIDArrayRoom, _MDStoreOIDArraySetShouldDeallocate, _MDStoreOIDArraySetShouldUseMalloc, _MDUniquiedStringDictCreate, __MDPlistBytesAddObject, __MDPlistBytesAddUInt64Array, __MDPlistBytesAddURL, __MDPlistBytesAppendChunk, __MDPlistBytesFirstChunk, __MDPlistBytesNextChunk, @@ -1846,100 +1907,44 @@ parent-umbrella: exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] - symbols: [ _AlertSoundPlay, _AlertSoundPlayCustomSound, _BatteryCount, - _CSGetDefaultIdentityAuthority, _CSGetLocalIdentityAuthority, - _CSGetManagedIdentityAuthority, _CSIdentityAddAlias, _CSIdentityAddMember, - _CSIdentityAuthenticateUsingPassword, _CSIdentityAuthorityCopyLocalizedName, - _CSIdentityAuthorityGetTypeID, _CSIdentityCommit, _CSIdentityCommitAsynchronously, - _CSIdentityCreate, _CSIdentityCreateCopy, _CSIdentityCreateGroupMembershipQuery, - _CSIdentityCreatePersistentReference, _CSIdentityDelete, _CSIdentityGetAliases, - _CSIdentityGetAuthority, _CSIdentityGetCertificate, _CSIdentityGetClass, - _CSIdentityGetEmailAddress, _CSIdentityGetFullName, _CSIdentityGetImageData, - _CSIdentityGetImageDataType, _CSIdentityGetImageURL, _CSIdentityGetPosixID, - _CSIdentityGetPosixName, _CSIdentityGetTypeID, _CSIdentityGetUUID, - _CSIdentityIsCommitting, _CSIdentityIsEnabled, _CSIdentityIsHidden, - _CSIdentityIsMemberOfGroup, _CSIdentityQueryCopyResults, _CSIdentityQueryCreate, - _CSIdentityQueryCreateForCurrentUser, _CSIdentityQueryCreateForName, - _CSIdentityQueryCreateForPersistentReference, _CSIdentityQueryCreateForPosixID, - _CSIdentityQueryCreateForUUID, _CSIdentityQueryExecute, _CSIdentityQueryExecuteAsynchronously, - _CSIdentityQueryGetTypeID, _CSIdentityQueryStop, _CSIdentityRemoveAlias, - _CSIdentityRemoveClient, _CSIdentityRemoveMember, _CSIdentitySetCertificate, - _CSIdentitySetEmailAddress, _CSIdentitySetFullName, _CSIdentitySetImageData, - _CSIdentitySetImageURL, _CSIdentitySetIsEnabled, _CSIdentitySetPassword, - _CurrentProcessorSpeed, _GetCPUSpeed, _KCAddCallback, _KCCopyItem, - _KCCountKeychains, _KCDeleteItem, _KCFindAppleSharePassword, - _KCFindFirstItem, _KCFindGenericPassword, _KCFindInternetPassword, - _KCFindInternetPasswordWithPath, _KCFindNextItem, _KCGetAttribute, - _KCGetData, _KCGetDefaultKeychain, _KCGetIndKeychain, _KCGetKeychain, - _KCGetKeychainManagerVersion, _KCGetKeychainName, _KCGetStatus, - _KCIsInteractionAllowed, _KCLock, _KCMakeAliasFromKCRef, _KCMakeKCRefFromAlias, - _KCMakeKCRefFromFSRef, _KCNewItem, _KCReleaseItem, _KCReleaseKeychain, - _KCReleaseSearch, _KCRemoveCallback, _KCSetAttribute, _KCSetData, - _KCSetDefaultKeychain, _KCSetInteractionAllowed, _KCUnlockNoUI, - _KCUpdateItem, _MakeAppleSharePasswordKCItemRef, _MakeGenericPasswordKCItemRef, - _MakeInternetPasswordKCItemRef, _MaximumProcessorSpeed, _MinimumProcessorSpeed, - _SecNewAFPXVolMountInfo, _Sleep, _SleepQInstall, _SleepQRemove, + symbols: [ _AlertSoundPlay, _AlertSoundPlayCustomSound, _CSIdentityAuthorityCopyLocalizedName, + _CSIdentityAuthorityGetTypeID, _CSIdentityCreateCopy, _CSIdentityCreatePersistentReference, + _CSIdentityGetAuthority, _CSIdentityGetClass, _CSIdentityGetFullName, + _CSIdentityGetPosixName, _CSIdentityGetTypeID, _CSIdentityQueryCopyResults, + _CSIdentityQueryCreateForName, _CSIdentityQueryCreateForPersistentReference, + _CSIdentityQueryExecute, _CSIdentityQueryExecuteAsynchronously, + _CSIdentityQueryGetTypeID, _CSIdentityQueryStop, _SecNewAFPXVolMountInfo, _SystemSoundGetActionID, _SystemSoundGetProperty, _SystemSoundGetPropertyInfo, _SystemSoundPlay, _SystemSoundRemoveActionID, _SystemSoundRemoveCompletionRoutine, _SystemSoundSetCompletionRoutine, _SystemSoundSetProperty, - _UpdateSystemActivity, _WSGetCFTypeIDFromWSTypeID, _WSGetWSTypeIDFromCFType, - _WSMethodInvocationAddDeserializationOverride, _WSMethodInvocationAddSerializationOverride, - _WSMethodInvocationCopyParameters, _WSMethodInvocationCopyProperty, - _WSMethodInvocationCopySerialization, _WSMethodInvocationCreate, - _WSMethodInvocationCreateFromSerialization, _WSMethodInvocationGetTypeID, - _WSMethodInvocationInvoke, _WSMethodInvocationScheduleWithRunLoop, - _WSMethodInvocationSetCallBack, _WSMethodInvocationSetParameters, - _WSMethodInvocationSetProperty, _WSMethodInvocationUnscheduleFromRunLoop, - _WSMethodResultIsFault, _WSProtocolHandlerCopyFaultDocument, - _WSProtocolHandlerCopyProperty, _WSProtocolHandlerCopyReplyDictionary, - _WSProtocolHandlerCopyReplyDocument, _WSProtocolHandlerCopyRequestDictionary, - _WSProtocolHandlerCopyRequestDocument, _WSProtocolHandlerCreate, - _WSProtocolHandlerGetTypeID, _WSProtocolHandlerSetDeserializationOverride, - _WSProtocolHandlerSetProperty, _WSProtocolHandlerSetSerializationOverride, __AppleIDAuthenticatePassword, __AppleIDAuthenticatePasswordWithBlock, __AppleIDAuthenticationAddAppleID, __AppleIDAuthenticationAddAppleIDWithBlock, - __AppleIDAuthenticationCopyAppleIDs, __AppleIDAuthenticationCopyCertificateInfo, - __AppleIDAuthenticationCopyCertificateInfoWithBlock, __AppleIDAuthenticationCopyMyInfo, - __AppleIDAuthenticationCopyMyInfoWithBlock, __AppleIDAuthenticationCopyStatus, - __AppleIDAuthenticationCopyStatusWithBlock, __AppleIDAuthenticationFindPerson, - __AppleIDAuthenticationFindPersonWithBlock, __AppleIDAuthenticationForgetAppleID, - __AppleIDAuthenticationForgetAppleIDWithBlock, __AppleIDBreadcrumbCheckinWithBlock, - __AppleIDCopyDSIDForCertificate, __AppleIDCopySecIdentityForAppleIDAccount, - __AppleIDGetBreadcrumbEncryptedKeyWithBlock, __AppleIDSetBreadcrumbEncryptedKeyWithBlock, - __AppleIDUpdateLinkedIdentityProvisioning, __AppleIDUpdateLinkedIdentityProvisioningWithBlock, - __CSAddAppleIDAccount, __CSAddAppleIDAccountUsingCompletionBlock, - __CSBackToMyMacCopyDomain, __CSBackToMyMacCopyDomains, __CSBackToMyMacDisableEveryone, - __CSBackToMyMacIsEnabledForSomeUser, __CSBackToMyMacResetForUser, - __CSCopyAccountIdentifierForAppleIDCertificate, __CSCopyAccountIdentifierForAppleIDCertificateChain, - __CSCopyAccountInfoForAppleID, __CSCopyAccountStatusForAppleID, - __CSCopyAppleIDAccountForAppleIDCertificate, __CSCopyAppleIDAccounts, - __CSCopyCommentForServerName, __CSCopyDefaultSharingSecIdentities, - __CSCopyKerberosPrincipalForCertificate, __CSCopyLocalHostnameForComputerName, - __CSCopySecIdentityForAppleID, __CSCopyUserIdentityForPersonInfo, + __AppleIDAuthenticationCopyAppleIDs, __AppleIDAuthenticationCopyAppleIDsWithBlock, + __AppleIDAuthenticationCopyCertificateInfo, __AppleIDAuthenticationCopyCertificateInfoWithBlock, + __AppleIDAuthenticationCopyMyInfo, __AppleIDAuthenticationCopyMyInfoWithBlock, + __AppleIDAuthenticationCopyStatus, __AppleIDAuthenticationCopyStatusWithBlock, + __AppleIDAuthenticationFindPerson, __AppleIDAuthenticationFindPersonWithBlock, + __AppleIDAuthenticationForgetAppleID, __AppleIDAuthenticationForgetAppleIDWithBlock, + __AppleIDBreadcrumbCheckinWithBlock, __AppleIDCopyDSIDForCertificate, + __AppleIDCopySecIdentityForAppleIDAccount, __AppleIDGetBreadcrumbEncryptedKeyWithBlock, + __AppleIDSetBreadcrumbEncryptedKeyWithBlock, __AppleIDUpdateLinkedIdentityProvisioning, + __AppleIDUpdateLinkedIdentityProvisioningWithBlock, __CSAddAppleIDAccount, + __CSAddAppleIDAccountUsingCompletionBlock, __CSBackToMyMacCopyDomain, + __CSBackToMyMacCopyDomains, __CSCopyAccountIdentifierForAppleIDCertificate, + __CSCopyAccountIdentifierForAppleIDCertificateChain, __CSCopyAccountInfoForAppleID, + __CSCopyAccountStatusForAppleID, __CSCopyAppleIDAccountForAppleIDCertificate, + __CSCopyAppleIDAccounts, __CSCopyCommentForServerName, __CSCopyDefaultSharingSecIdentities, + __CSCopyLocalHostnameForComputerName, __CSCopySecIdentityForAppleID, __CSCreateAppleIDIdentityWithCertificate, __CSCreateAppleIDIdentityWithCertificateChain, __CSCreateAppleIDIdentityWithNameAndAccountIdentifier, __CSCreatePosixNameFromString, __CSDefaultLog, __CSDeviceSupportsAirDrop, __CSDeviceSupportsODisk, __CSDisassociateWireless, __CSEnableWirelessP2P, __CSGetAppleIDIdentityAuthority, - __CSIdentityAddLinkedIdentityWithNameAndAuthority, __CSIdentityAllowsPasswordResetWithAuthority, - __CSIdentityAllowsPasswordResetWithAuthorityFromDSAttrData, __CSIdentityAuthenticateUsingCertificate, __CSIdentityAuthenticateUsingCertificateChain, - __CSIdentityAuthenticateUsingPassword, __CSIdentityAuthorityAuthenticateNameAndPassword, - __CSIdentityAuthorityCopyIdentityWithName, __CSIdentityChangePassword, - __CSIdentityCopyCurrentUser, __CSIdentityCopyLinkedIdentityAuthorities, - __CSIdentityCopyLinkedIdentityNameWithAuthorityFromDSAttrData, - __CSIdentityCopyLinkedIdentityNamesWithAuthority, __CSIdentityCopyLinkedIdentityNamesWithAuthorityFromDSAttrData, - __CSIdentityGetHomeDirectoryURL, __CSIdentityGetLinkedIdentityNameWithAuthority, - __CSIdentityGetLoginShellURL, __CSIdentityIsLoginUser, __CSIdentityRemoveLinkedIdentityWithAuthority, - __CSIdentityRemoveLinkedIdentityWithNameAndAuthority, __CSIdentitySetAllowsPasswordResetWithAuthority, - __CSIdentityUpdateLinkedIdentityProvisioning, __CSIsComputerToComputerEnabled, - __CSIsCurrentUserAdmin, __CSIsMobileTimeMachineDisk, __CSIsMobileTimeMachineEnabled, - __CSIsOpticalDisk, __CSIsWirelessAccessPointEnabled, __CSIsWirelessP2PEnabled, + __CSIdentityAuthorityCopyIdentityWithName, __CSIdentityUpdateLinkedIdentityProvisioning, + __CSIsComputerToComputerEnabled, __CSIsWirelessAccessPointEnabled, __CSLinkCurrentUserToAppleIDWithVerifiedAccountIdentifier, - __CSRemoveAppleIDAccount, __CSRemoveDotMacIdentitiesFromKeychain, - __CSUnlinkCurrentUserFromAppleID, __ISGetIconIndex, __ISGetIconIndexInfo, - __ISIconIndexHasJPEGFlag, __LWCopyNextFireDateForScheduledAction, - __LWRemoveScheduledAction, __LWScheduleCommandAction, __LWScheduleOpenItemAction, - __LWScheduleOpenURLAction, __LWSchedulerNotifyPortName, __OSS_InstallGestaltSelectors, + __CSRemoveAppleIDAccount, __CSUnlinkCurrentUserFromAppleID, + __ISGetIconIndexInfo, __ISIconIndexHasJPEGFlag, __OSS_InstallGestaltSelectors, __kCSAppleIDAccountAllEmailAddresses, __kCSAppleIDAccountAppleID, __kCSAppleIDAccountCertificateExpirationDate, __kCSAppleIDAccountCertificateSerialNumber, __kCSAppleIDAccountFirstName, __kCSAppleIDAccountLastName, @@ -1959,8 +1964,67 @@ exports: _kAppleIDValidatedItemsRecordDataCertificateType, _kAppleIDValidationRecordOptionDoNotCheckValidAsOfDateKey, _kAppleIDValidationRecordOptionDoNotCheckVersionKey, _kAppleIDValidationRecordOptionDoNotEvaluateTrustRefKey, _kAppleIDValidationRecordOptionOverrideSuggestedDurationValueKey, - _kCSIdentityErrorDomain, _kCSIdentityGeneratePosixName, _kISIconResType, - _kWSAuthInfo, _kWSAuthInfo_authScheme, _kWSAuthInfo_forProxy, + _kCSIdentityErrorDomain ] + - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] + symbols: [ _BatteryCount, _CSGetDefaultIdentityAuthority, _CSGetLocalIdentityAuthority, + _CSGetManagedIdentityAuthority, _CSIdentityAddAlias, _CSIdentityAddMember, + _CSIdentityAuthenticateUsingPassword, _CSIdentityCommit, _CSIdentityCommitAsynchronously, + _CSIdentityCreate, _CSIdentityCreateGroupMembershipQuery, + _CSIdentityDelete, _CSIdentityGetAliases, _CSIdentityGetCertificate, + _CSIdentityGetEmailAddress, _CSIdentityGetImageData, _CSIdentityGetImageDataType, + _CSIdentityGetImageURL, _CSIdentityGetPosixID, _CSIdentityGetUUID, + _CSIdentityIsCommitting, _CSIdentityIsEnabled, _CSIdentityIsHidden, + _CSIdentityIsMemberOfGroup, _CSIdentityQueryCreate, _CSIdentityQueryCreateForCurrentUser, + _CSIdentityQueryCreateForPosixID, _CSIdentityQueryCreateForUUID, + _CSIdentityRemoveAlias, _CSIdentityRemoveClient, _CSIdentityRemoveMember, + _CSIdentitySetCertificate, _CSIdentitySetEmailAddress, _CSIdentitySetFullName, + _CSIdentitySetImageData, _CSIdentitySetImageURL, _CSIdentitySetIsEnabled, + _CSIdentitySetPassword, _CurrentProcessorSpeed, _DisposeKCCallbackUPP, + _DisposeSleepQUPP, _GetCPUSpeed, _InvokeKCCallbackUPP, _InvokeSleepQUPP, + _KCAddCallback, _KCCopyItem, _KCCountKeychains, _KCDeleteItem, + _KCFindAppleSharePassword, _KCFindFirstItem, _KCFindGenericPassword, + _KCFindInternetPassword, _KCFindInternetPasswordWithPath, + _KCFindNextItem, _KCGetAttribute, _KCGetData, _KCGetDefaultKeychain, + _KCGetIndKeychain, _KCGetKeychain, _KCGetKeychainManagerVersion, + _KCGetKeychainName, _KCGetStatus, _KCIsInteractionAllowed, + _KCLock, _KCMakeAliasFromKCRef, _KCMakeKCRefFromAlias, _KCMakeKCRefFromFSRef, + _KCNewItem, _KCReleaseItem, _KCReleaseKeychain, _KCReleaseSearch, + _KCRemoveCallback, _KCSetAttribute, _KCSetData, _KCSetDefaultKeychain, + _KCSetInteractionAllowed, _KCUnlockNoUI, _KCUpdateItem, _MakeAppleSharePasswordKCItemRef, + _MakeGenericPasswordKCItemRef, _MakeInternetPasswordKCItemRef, + _MaximumProcessorSpeed, _MinimumProcessorSpeed, _NewKCCallbackUPP, + _NewSleepQUPP, _Sleep, _SleepQInstall, _SleepQRemove, _UpdateSystemActivity, + _WSGetCFTypeIDFromWSTypeID, _WSGetWSTypeIDFromCFType, _WSMethodInvocationAddDeserializationOverride, + _WSMethodInvocationAddSerializationOverride, _WSMethodInvocationCopyParameters, + _WSMethodInvocationCopyProperty, _WSMethodInvocationCopySerialization, + _WSMethodInvocationCreate, _WSMethodInvocationCreateFromSerialization, + _WSMethodInvocationGetTypeID, _WSMethodInvocationInvoke, _WSMethodInvocationScheduleWithRunLoop, + _WSMethodInvocationSetCallBack, _WSMethodInvocationSetParameters, + _WSMethodInvocationSetProperty, _WSMethodInvocationUnscheduleFromRunLoop, + _WSMethodResultIsFault, _WSProtocolHandlerCopyFaultDocument, + _WSProtocolHandlerCopyProperty, _WSProtocolHandlerCopyReplyDictionary, + _WSProtocolHandlerCopyReplyDocument, _WSProtocolHandlerCopyRequestDictionary, + _WSProtocolHandlerCopyRequestDocument, _WSProtocolHandlerCreate, + _WSProtocolHandlerGetTypeID, _WSProtocolHandlerSetDeserializationOverride, + _WSProtocolHandlerSetProperty, _WSProtocolHandlerSetSerializationOverride, + __CSBackToMyMacDisableEveryone, __CSBackToMyMacIsEnabledForSomeUser, + __CSBackToMyMacResetForUser, __CSCopyKerberosPrincipalForCertificate, + __CSCopyUserIdentityForPersonInfo, __CSIdentityAddLinkedIdentity, + __CSIdentityAddLinkedIdentityWithNameAndAuthority, __CSIdentityAllowsPasswordResetWithAuthority, + __CSIdentityAllowsPasswordResetWithAuthorityFromDSAttrData, + __CSIdentityAuthenticateUsingPassword, __CSIdentityAuthorityAuthenticateNameAndPassword, + __CSIdentityChangePassword, __CSIdentityCopyCurrentUser, __CSIdentityCopyLinkedIdentityAuthorities, + __CSIdentityCopyLinkedIdentityNameWithAuthorityFromDSAttrData, + __CSIdentityCopyLinkedIdentityNamesWithAuthority, __CSIdentityCopyLinkedIdentityNamesWithAuthorityFromDSAttrData, + __CSIdentityGetHomeDirectoryURL, __CSIdentityGetLinkedIdentityNameWithAuthority, + __CSIdentityGetLoginShellURL, __CSIdentityIsLoginUser, __CSIdentityRemoveLinkedIdentityWithAuthority, + __CSIdentityRemoveLinkedIdentityWithNameAndAuthority, __CSIdentitySetAllowsPasswordResetWithAuthority, + __CSIsCurrentUserAdmin, __CSIsMobileTimeMachineDisk, __CSIsMobileTimeMachineEnabled, + __CSIsOpticalDisk, __CSRemoveDotMacIdentitiesFromKeychain, + __ISGetIconIndex, __LWCopyNextFireDateForScheduledAction, + __LWRemoveScheduledAction, __LWScheduleCommandAction, __LWScheduleOpenItemAction, + __LWScheduleOpenURLAction, __LWSchedulerNotifyPortName, _kCSIdentityGeneratePosixName, + _kISIconResType, _kWSAuthInfo, _kWSAuthInfo_authScheme, _kWSAuthInfo_forProxy, _kWSAuthInfo_password, _kWSAuthInfo_user, _kWSDebugIncomingBody, _kWSDebugIncomingHeaders, _kWSDebugOutgoingBody, _kWSDebugOutgoingHeaders, _kWSFaultCode, _kWSFaultExtra, _kWSFaultString, _kWSHTTPExtraHeaders, @@ -1980,98 +2044,23 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit' -current-version: 417.1 +current-version: 417.5 parent-umbrella: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] umbrella: CoreServices exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, - arm64e-macos, arm64e-maccatalyst ] - symbols: [ _AIATFree, _AIATGetAllocator, _AIATMalloc, _AIATRegisterReportErrorUPP, - _AIATSetAllocator, _DisposeIASearchIsHitFilterUPP, _IACFDataDocAccessorCreate, - _IACFDataDocAccessorDispose, _IADocKeyAccessorCreate, _IADocKeyAccessorLength, - _IADocKeyAccessorRead, _IADocKeyAccessorRelease, _IADocKeyAccessorRetain, - _IADocKeyCanCreateAccessor, _IADocKeyCanCreateIterator, _IADocKeyCompare, - _IADocKeyCopyFilePath, _IADocKeyCopyMIMEType, _IADocKeyCopyModDate, - _IADocKeyCopyURL, _IADocKeyCopyURLEncodedName, _IADocKeyCreate, - _IADocKeyCreateFromFSRef, _IADocKeyCreateFromFilePath, _IADocKeyGetFSRef, - _IADocKeyGetName, _IADocKeyGetParent, _IADocKeyGetSchemeName, - _IADocKeyIteratorCopyNextDoc, _IADocKeyIteratorCreate, _IADocKeyIteratorDispose, - _IADocKeyRelease, _IADocKeyRetain, _IAGetHFSDocSchemeName, - _IAIndexAddDoc, _IAIndexAddDocAsync, _IAIndexAddDocWithTextStream, - _IAIndexAddDocWithTextStreamAsync, _IAIndexCompact, _IAIndexCompactAsync, - _IAIndexCopyDocKeyFromID, _IAIndexCopyDocProperties, _IAIndexCopyDocTermIDArrray, - _IAIndexCopyTermData, _IAIndexCopyTermDocIDArrray, _IAIndexDocIteratorCopyNext, - _IAIndexDocIteratorCreate, _IAIndexDocIteratorDispose, _IAIndexFlush, - _IAIndexGetBytesForUpdate, _IAIndexGetDocKeyID, _IAIndexGetDocState, - _IAIndexGetDocTermCount, _IAIndexGetDocTermFrequency, _IAIndexGetMaxDocID, - _IAIndexGetMaxTermID, _IAIndexGetNumDocuments, _IAIndexGetRootDocKeyCount, - _IAIndexGetRootDocKeys, _IAIndexGetStorage, _IAIndexGetTermDocCount, - _IAIndexGetTermID, _IAIndexGetTextAnalysisTypeCount, _IAIndexGetTextAnalysisTypes, - _IAIndexGetType, _IAIndexInitialize, _IAIndexInitializeFromFSRef, - _IAIndexInitializeFromFilePath, _IAIndexMakeRootDocKey, _IAIndexMoveDoc, - _IAIndexOpen, _IAIndexOpenFromFSRef, _IAIndexOpenFromFilePath, - _IAIndexRelease, _IAIndexRemoveDoc, _IAIndexRemoveDocAsync, - _IAIndexRenameDoc, _IAIndexReplaceRootDocKey, _IAIndexRetain, - _IAIndexSetBytesForUpdate, _IAIndexSetDocProperties, _IAIndexUpdate, - _IAIndexUpdateAsync, _IAInputBlockCreate, _IAInputBlockDispose, - _IAInputBlockGetPosition, _IAInputBlockReadBuffer, _IAInputBlockReadByte, - _IAInputBlockReadCFData, _IAInputBlockReadCFString, _IAInputBlockReadCFType, - _IAInputBlockReadUInt32, _IAInputBlockReadUInt64, _IAInputBlockReadVInt32, - _IAInputBlockReadVInt64, _IALoadDefaultExtractorPlugIns, _IALoadExtractorPlugIn, - _IAMutexCreate, _IAMutexDispose, _IAMutexGetGlobalMutex, _IAMutexLock, - _IAMutexUnlock, _IAOutputBlockCreate, _IAOutputBlockDispose, - _IAOutputBlockGetPosition, _IAOutputBlockWriteBuffer, _IAOutputBlockWriteByte, - _IAOutputBlockWriteCFData, _IAOutputBlockWriteCFString, _IAOutputBlockWriteCFType, - _IAOutputBlockWriteUInt32, _IAOutputBlockWriteUInt64, _IAOutputBlockWriteVInt32, - _IAOutputBlockWriteVInt64, _IASearchResultsCopyMatchingTerms, - _IASearchResultsDispose, _IASearchResultsGetCount, _IASearchResultsGetInfoBulk, - _IASearchSetAddIndices, _IASearchSetCreate, _IASearchSetFindSimilarDocuments, - _IASearchSetGetIndexCount, _IASearchSetGetIndices, _IASearchSetQuery, - _IASearchSetQueryAsync, _IASearchSetRankedQueryFromTextStream, - _IASearchSetRelease, _IASearchSetRetain, _IASearchSetTaskGetSearchResults, - _IASentenceParserCopyNextSentence, _IASentenceParserCreate, - _IASentenceParserRegister, _IASentenceParserRelease, _IASentenceParserRetain, - _IASentenceParserSetSourceText, _IAStorageAllocateBlock, _IAStorageAllocateNamedBlock, - _IAStorageCFDataSize, _IAStorageCFStringSize, _IAStorageCFTypeSize, - _IAStorageCommit, _IAStorageCompact, _IAStorageCopyBlockNames, - _IAStorageCopyFilePath, _IAStorageDeallocateBlock, _IAStorageDeallocateNamedBlock, - _IAStorageFreeSpace, _IAStorageGetBlockSize, _IAStorageGetCFData, - _IAStorageGetDiskBlockSize, _IAStorageGetFSRef, _IAStorageGetMaxBlockID, - _IAStorageGetNamedBlock, _IAStorageGetReadAddress, _IAStorageGetStream, - _IAStorageGetStreamCallbacks, _IAStorageGetType, _IAStorageGetWriteAddress, - _IAStorageIsOpen, _IAStorageIsWritable, _IAStorageLockMutex, - _IAStorageMemoryOpen, _IAStorageOpenFromFSRef, _IAStorageOpenFromFilePath, - _IAStorageRelease, _IAStorageRemoveBlockName, _IAStorageRetain, - _IAStorageSetBlockName, _IAStorageSetDiskBlockSize, _IAStorageTotalSpace, - _IAStorageUnlockMutex, _IAStorageVInt32Size, _IAStorageVInt64Size, - _IASummaryCopyParagraphs, _IASummaryCopyRankedSentenceArray, - _IASummaryCopySentenceArray, _IASummaryCopyText, _IASummaryCreate, - _IASummaryCreateWithQuery, _IASummaryDispose, _IASummaryGetHitCount, - _IASummaryGetNthRankedSentence, _IASummaryGetNthSentence, - _IASummaryGetSentenceCount, _IASummmaryCopyText, _IATaskCancel, - _IATaskCopyProperties, _IATaskCreate, _IATaskDispose, _IATaskGetContext, - _IATaskGetCurrent, _IATaskGetProgress, _IATaskIsDone, _IATaskSetProperties, - _IATaskWasCanceled, _IATaskYield, _IATextAnalysisCreate, _IATextAnalysisGetCallbacks, - _IATextAnalysisGetProperties, _IATextAnalysisGetType, _IATextAnalysisRegister, - _IATextAnalysisRelease, _IATextAnalysisRetain, _IATextAnalysisSetProperties, - _IATextAnalysisUnregister, _IATextStreamCreate, _IATextStreamCreateFromCFData, - _IATextStreamCreateFromCFString, _IATextStreamGetCurrentEncoding, - _IATextStreamRead, _IATextStreamRelease, _IATextStreamRetain, - _IATextStreamRewind, _IATokenizerCreate, _IATokenizerGetNextToken, - _IATokenizerRelease, _IATokenizerRetain, _InvokeIASearchIsHitFilterUPP, - _NewIASearchIsHitFilterUPP, _SKCurrentLocaleData, _SKDocumentCopyText, - _SKDocumentCopyURL, _SKDocumentCreate, _SKDocumentCreateWithURL, - _SKDocumentGetName, _SKDocumentGetParent, _SKDocumentGetSchemeName, - _SKDocumentGetTypeID, _SKIndexAddDocument, _SKIndexAddDocumentWithText, - _SKIndexClose, _SKIndexCompact, _SKIndexContainsContentForDocumentID, - _SKIndexCopyDocumentForDocumentID, _SKIndexCopyDocumentIDArrayForTermID, - _SKIndexCopyDocumentNameForDocumentID, _SKIndexCopyDocumentProperties, - _SKIndexCopyDocumentRefsForDocumentIDs, _SKIndexCopyDocumentURLsForDocumentIDs, - _SKIndexCopyInfoForDocumentIDs, _SKIndexCopyTermIDArrayForDocumentID, - _SKIndexCopyTermStringForTermID, _SKIndexCopyUniqueTerms, - _SKIndexCreateTermIterator, _SKIndexCreateWithMutableData, + - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] + symbols: [ _SKCurrentLocaleData, _SKDocumentCopyText, _SKDocumentCopyURL, + _SKDocumentCreate, _SKDocumentCreateWithURL, _SKDocumentGetName, + _SKDocumentGetParent, _SKDocumentGetSchemeName, _SKDocumentGetTypeID, + _SKIndexAddDocument, _SKIndexAddDocumentWithText, _SKIndexClose, + _SKIndexCompact, _SKIndexContainsContentForDocumentID, _SKIndexCopyDocumentForDocumentID, + _SKIndexCopyDocumentIDArrayForTermID, _SKIndexCopyDocumentNameForDocumentID, + _SKIndexCopyDocumentProperties, _SKIndexCopyDocumentRefsForDocumentIDs, + _SKIndexCopyDocumentURLsForDocumentIDs, _SKIndexCopyInfoForDocumentIDs, + _SKIndexCopyTermIDArrayForDocumentID, _SKIndexCopyTermStringForTermID, + _SKIndexCopyUniqueTerms, _SKIndexCreateTermIterator, _SKIndexCreateWithMutableData, _SKIndexCreateWithURL, _SKIndexDocumentIteratorCopyNext, _SKIndexDocumentIteratorCreate, _SKIndexDocumentIteratorGetTypeID, _SKIndexEnumerateTokens, _SKIndexFlush, _SKIndexFlushCache, _SKIndexFlushInternal, @@ -2097,11 +2086,9 @@ exports: _SKSummaryCopySentenceSummaryString, _SKSummaryCreateWithString, _SKSummaryGetParagraphCount, _SKSummaryGetParagraphSummaryInfo, _SKSummaryGetSentenceCount, _SKSummaryGetSentenceSummaryInfo, - _SKSummaryGetTypeID, _gSKGlobalFlags, _kIAIndexDefaultAnalysis, - _kIAStoreStreamCFDataType, _kIAStoreStreamFSRefType, _kIAStoreStreamFileType, - _kSKEndTermChars, _kSKLanguageTypes, _kSKMaximumTerms, _kSKMinTermLength, - _kSKProximityIndexing, _kSKStartTermChars, _kSKStopWords, - _kSKSubstitutions, _kSKTermChars ] + _SKSummaryGetTypeID, _gSKGlobalFlags, _kSKEndTermChars, _kSKLanguageTypes, + _kSKMaximumTerms, _kSKMinTermLength, _kSKProximityIndexing, + _kSKStartTermChars, _kSKStopWords, _kSKSubstitutions, _kSKTermChars ] --- !tapi-tbd tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Headers/AEMach.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Headers/AEMach.h index 7cc207d6..b89646cc 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Headers/AEMach.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Headers/AEMach.h @@ -26,12 +26,8 @@ #if TARGET_RT_MAC_MACHO -#ifdef __cplusplus -extern "C" { -#endif +#ifndef _MACH_MESSAGE_H_ #include -#ifdef __cplusplus -} #endif #endif diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Headers/AppleEvents.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Headers/AppleEvents.h index 419878f4..c2307b7d 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Headers/AppleEvents.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Headers/AppleEvents.h @@ -60,6 +60,14 @@ CF_ENUM(AEKeyword) { keyAEVersion = 'vers' /* available only in vers 1.0.1 and greater */ }; +#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1500 +CF_ENUM(AEKeyword) { + kAEApplicationActivationExpected = 'aapd' //!< in a kAEOpenDocuments/kAEReopenApplication event, a typeBoolean value, if true then the process should expect a request to be frontmost to accompany this AppleEvent +}; +#endif + + + /* Event Class */ CF_ENUM(DescType) { kCoreEventClass = 'aevt' diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore.tbd b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore.tbd index 6c946523..33e07ada 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore.tbd +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore.tbd @@ -15,6 +15,56 @@ allowable-clients: exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] + symbols: [ _CallComponent, _CallComponentFunctionWithStorageProcInfo_TVector, + _DeclineVolumeNotification, _DeclineVolumeNotificationWithFlags, + _DestroyComponent, _DisposeCollectionNotificationAddUPP, _DisposeCollectionNotificationRemoveUPP, + _DisposeStackListCompareUPP, _DisposeStackListConvertUPP, + _DisposeThreadEventsWaitingUPP, _DisposeThreadInitHookUPP, + _DisposeVNUPP, _Endian64_Swap, _ErrorTranslate, _FSGetCanonicalPath, + _FSGetDefaultTextEncoding, _FSMountCopyIOMediaIconBundleIdentifier, + _FSMountCopyIOMediaIconFamilyName, _FSMountDestroy, _FSMountGetCapabilities, + _FSMountGetFSID, _FSMountGetIOBlockSize, _FSMountGetMaxFileSize, + _FSMountGetMountID, _FSMountGetMountPoint, _FSMountGetMutableVolumeInfo, + _FSMountGetSpecialDeviceType, _FSMountGetVolumeCreationDate, + _FSMountGetVolumeFlags, _FSMountGetVolumeName, _FSMountGetVolumeUUID, + _FSMountMakepath, _FSMountMountIDToVRefNum, _FSMountPrepare, + _FSMountPrepareWithMountPointString, _FSMountRenameVolume, + _FSMountSetProperty, _FSMountStorageSize, _FSMountUpdateCaseInsensitiveName, + _FSMountVCBVRefNum, _FSObjTypeToFSNodeObjectType, _FSRefCreate64, + _FSSetDefaultTextEncoding, _FileIDTreeCreateMountPointArrayWithOptions, + _FileIDTreeGetChildIDFromName, _FileIDTreeGetEntryInfoFromFileID, + _FileIDTreeGetFileIDFromPath, _GetCollectionNotificationAddProc, + _GetCollectionNotificationRemoveProc, _GetFSRefComponentsForFileReferenceURL, + _GetMacOSStatusCommentString, _GetMacOSStatusErrorCodes, _GetMacOSStatusErrorString, + _GetScriptManagerVariable, _IUMagWString, _InitScriptBundleComponent, + _IntlGetInitValues, _InvokeCollectionNotificationAddUPP, _InvokeCollectionNotificationRemoveUPP, + _InvokeStackListCompareUPP, _InvokeStackListConvertUPP, _InvokeThreadEventsWaitingUPP, + _InvokeThreadInitHookUPP, _InvokeVNUPP, _MPCreateTaskCFM, + _ModeToFSNodeType, _NewCollectionNotificationAddUPP, _NewCollectionNotificationRemoveUPP, + _NewStackListCompareUPP, _NewStackListConvertUPP, _NewThreadEventsWaitingUPP, + _NewThreadInitHookUPP, _NewVNUPP, _OLD_NEXT_COLORS, _PrintLaunchDebugInfo, + _RMAddResFileToSearchPath, _RMRemoveResFileFromSearchPath, + _RefFix2X, _RefX2Fix, _RefX2Frac, _RequestVolumeNotification, + _RequestVolumeNotificationWithFlags, _S64Absolute, _SMDisposeIntlSpec, + _SMInitIntlSpec, _SetCollectionNotificationAddProc, _SetCollectionNotificationRemoveProc, + _SetGetFNumProc, _SetGetFontFromPortProc, _SetGetFontNameProc, + _SetGetFontScriptProc, _SetInitializeScriptHLProc, _SetOverrideAttributes, + _SetScriptManagerVariable, _TSGetMainThreadBacktrace, _TUCharacterByteType, + _TransferCustomIconAndBadge, _UCKeyboardLayoutStringMax, _UmapBCharToUChars, + _UmapCloseMapping, _UmapGetCharsToComposeUSet, _UmapOpenMapping, + _UmapScanUCharElement, _UmapSetFallbacks, _UmapSetLookupInfo, + _UmapUCharElementToBChars, __CSCopyNamedData, __CSCreateSeed, + __CSDestroySeed, __CSGetProcessorArchitecture, __CSIncrementSeed, + __CSReadSeed, __CSWriteSeed, __FSAddVolumeObserver, __FSAddVolumeObserverOnQueue, + __FSRemoveVolumeObserver, __FSRemoveVolumeObserverOnQueue, + __FileIDTreeGetSKServiceDescription, __GDBUserBreakCallbackFunc, + __GDBUserBreakShouldSignalWithSIGINT, __SCSeedGetSKServiceDescription, + _dec2numl, _gCarbonDiskSwitchDialog, _kFSEventVolumeAboutToRename, + _kFSEventVolumeAboutToUnmount, _kFSEventVolumeMounted, _kFSEventVolumePropertyChanged, + _kFSEventVolumeRenamed, _kFSEventVolumeRepairStarted, _kFSEventVolumeUnmountFailed, + _kFSEventVolumeUnmounted, _ldtox80, _lowMem, _num2decl, _relationl, + _scRunningInCacheServer, _x80told ] + - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] symbols: [ _AbsoluteDeltaToDuration, _AbsoluteDeltaToNanoseconds, _AbsoluteToDuration, _AbsoluteToNanoseconds, _AddAbsoluteToAbsolute, _AddAtomic, _AddAtomic16, _AddAtomic8, _AddCollectionItem, _AddCollectionItemHdl, @@ -39,19 +89,18 @@ exports: _CSMemReallocateHandle, _CSMemRecoverHandle, _CSMemSetHandleSize, _CSMemSetPtrSize, _CSRefCreateInstance, _CSRefRelease, _CSRefReleaseCallbackForCF, _CSRefRetain, _CSRefRetainCallbackForCF, _CSSetComponentsThreadMode, - _CallComponent, _CallComponentCanDo, _CallComponentClose, - _CallComponentDispatch, _CallComponentFunction, _CallComponentFunctionWithStorage, - _CallComponentFunctionWithStorageProcInfo, _CallComponentFunctionWithStorageProcInfo_TVector, - _CallComponentGetMPWorkFunction, _CallComponentGetPublicResource, - _CallComponentOpen, _CallComponentRegister, _CallComponentTarget, - _CallComponentUnregister, _CallComponentVersion, _CallThreadInitHooks, - _CaptureComponent, _CarbonCoreGetMainRunLoop, _ChangeTextToUnicodeInfo, - _ChangeUnicodeToTextInfo, _ChangedResource, _CharacterByteType, - _CharacterType, _ClassicVolumeGetStartupInfo, _ClearIntlResourceCache, - _ClearStackList, _CloneCollection, _CloseComponent, _CloseComponentResFile, - _CloseResFile, _CollectionTagExists, _CompareAndSwap, _CompareString, - _CompareText, _CompleteFolderRouting, _ConvertFromPStringToUnicode, - _ConvertFromTextToUnicode, _ConvertFromTextToUnicodeNoInit, + _CallComponentCanDo, _CallComponentClose, _CallComponentDispatch, + _CallComponentFunction, _CallComponentFunctionWithStorage, + _CallComponentFunctionWithStorageProcInfo, _CallComponentGetMPWorkFunction, + _CallComponentGetPublicResource, _CallComponentOpen, _CallComponentRegister, + _CallComponentTarget, _CallComponentUnregister, _CallComponentVersion, + _CallThreadInitHooks, _CaptureComponent, _CarbonCoreGetMainRunLoop, + _ChangeTextToUnicodeInfo, _ChangeUnicodeToTextInfo, _ChangedResource, + _CharacterByteType, _CharacterType, _ClassicVolumeGetStartupInfo, + _ClearIntlResourceCache, _ClearStackList, _CloneCollection, + _CloseComponent, _CloseComponentResFile, _CloseResFile, _CollectionTagExists, + _CompareAndSwap, _CompareString, _CompareText, _CompleteFolderRouting, + _ConvertFromPStringToUnicode, _ConvertFromTextToUnicode, _ConvertFromTextToUnicodeNoInit, _ConvertFromUnicodeToPString, _ConvertFromUnicodeToScriptCodeRun, _ConvertFromUnicodeToText, _ConvertFromUnicodeToTextNoInit, _ConvertFromUnicodeToTextRun, _ConvertLocalTimeToUTC, _ConvertLocalToUTCDateTime, @@ -69,19 +118,28 @@ exports: _CreateUnicodeToTextRunInfoByEncoding, _CreateUnicodeToTextRunInfoByScriptCode, _CurResFile, _DTCurrentContextIsDeferredTask, _DebugAssert, _DebugCStr, _DebugDumpGestalt, _DebugGestalt, _DebugGestaltStr, - _DebugLogEntry, _DebugPrint, _DebugStr, _Debugger, _DeclineVolumeNotification, - _DeclineVolumeNotificationWithFlags, _DecrementAtomic, _DecrementAtomic16, - _DecrementAtomic8, _Delay, _DelegateComponentCall, _DeleteGestaltValue, - _Dequeue, _DestroyComponent, _DetachHandleFromExternalPtr, + _DebugLogEntry, _DebugPrint, _DebugStr, _Debugger, _DecrementAtomic, + _DecrementAtomic16, _DecrementAtomic8, _Delay, _DelegateComponentCall, + _DeleteGestaltValue, _Dequeue, _DetachHandleFromExternalPtr, _DetachResource, _DetachResourceFile, _DetermineIfPathIsEnclosedByFolder, - _DisposeCollection, _DisposeComponentFunctionUPP, _DisposeDebugComponent, - _DisposeDebugLog, _DisposeHandle, _DisposePtr, _DisposeStackList, - _DisposeTextToUnicodeInfo, _DisposeTextToUnicodeInfoNoInit, - _DisposeThread, _DisposeThreadInitHookUPP, _DisposeUnicodeToTextInfo, + _DisposeCollection, _DisposeCollectionExceptionUPP, _DisposeCollectionFlattenUPP, + _DisposeComponentFunctionUPP, _DisposeComponentMPWorkFunctionUPP, + _DisposeComponentRoutineUPP, _DisposeDebugAssertOutputHandlerUPP, + _DisposeDebugComponent, _DisposeDebugComponentCallbackUPP, + _DisposeDebugLog, _DisposeDebuggerDisposeThreadUPP, _DisposeDebuggerNewThreadUPP, + _DisposeDebuggerThreadSchedulerUPP, _DisposeDeferredTaskUPP, + _DisposeExceptionHandlerUPP, _DisposeFNSubscriptionUPP, _DisposeFSVolumeEjectUPP, + _DisposeFSVolumeMountUPP, _DisposeFSVolumeUnmountUPP, _DisposeFileInterrogatorUPP, + _DisposeFolderManagerNotificationUPP, _DisposeGetMissingComponentResourceUPP, + _DisposeHandle, _DisposeIOCompletionUPP, _DisposeIndexToUCStringUPP, + _DisposePtr, _DisposeResErrUPP, _DisposeSelectorFunctionUPP, + _DisposeStackList, _DisposeTextToUnicodeInfo, _DisposeTextToUnicodeInfoNoInit, + _DisposeThread, _DisposeThreadEntryUPP, _DisposeThreadSchedulerUPP, + _DisposeThreadSwitchUPP, _DisposeThreadTerminationUPP, _DisposeTimerUPP, + _DisposeUnicodeToTextFallbackUPP, _DisposeUnicodeToTextInfo, _DisposeUnicodeToTextInfoNoInit, _DisposeUnicodeToTextRunInfo, - _DisposeVNUPP, _DurationToAbsolute, _DurationToNanoseconds, - _EmptyCollection, _EmptyHandle, _Endian64_Swap, _Enqueue, - _EqualString, _ErrorTranslate, _ExtendedToString, _FIDDumpFileIDMap, + _DurationToAbsolute, _DurationToNanoseconds, _EmptyCollection, + _EmptyHandle, _Enqueue, _EqualString, _ExtendedToString, _FIDDumpFileIDMap, _FIDListFileIDMaps, _FNGetDirectoryForSubscription, _FNNotify, _FNNotifyAll, _FNNotifyByPath, _FNSubscribe, _FNSubscribeByPath, _FNUnsubscribe, _FSAllocateFork, _FSCancelVolumeOperation, @@ -105,30 +163,21 @@ exports: _FSFileSecuritySetGroup, _FSFileSecuritySetGroupUUID, _FSFileSecuritySetMode, _FSFileSecuritySetOwner, _FSFileSecuritySetOwnerUUID, _FSFindFolder, _FSFlushFork, _FSFlushVolume, _FSFollowFinderAlias, _FSGetAsyncEjectStatus, - _FSGetAsyncMountStatus, _FSGetAsyncUnmountStatus, _FSGetCanonicalPath, - _FSGetCatalogInfo, _FSGetCatalogInfoBulk, _FSGetDataForkName, - _FSGetDefaultTextEncoding, _FSGetForkCBInfo, _FSGetForkPosition, - _FSGetForkSize, _FSGetHFSUniStrFromString, _FSGetResourceForkName, - _FSGetTemporaryDirectoryForReplaceObject, _FSGetVolumeForDADisk, - _FSGetVolumeForDiskID, _FSGetVolumeInfo, _FSGetVolumeMountInfo, - _FSGetVolumeMountInfoSize, _FSGetVolumeParent, _FSGetVolumeParms, - _FSIsAliasFile, _FSIsFSRefValid, _FSIterateForks, _FSLockRange, - _FSMakeFSRefUnicode, _FSMatchAliasBulk, _FSMountCopyIOMediaIconBundleIdentifier, - _FSMountCopyIOMediaIconFamilyName, _FSMountDestroy, _FSMountGetCapabilities, - _FSMountGetFSID, _FSMountGetIOBlockSize, _FSMountGetMaxFileSize, - _FSMountGetMountID, _FSMountGetMountPoint, _FSMountGetMutableVolumeInfo, - _FSMountGetSpecialDeviceType, _FSMountGetVolumeCreationDate, - _FSMountGetVolumeFlags, _FSMountGetVolumeName, _FSMountGetVolumeUUID, - _FSMountLocalVolumeAsync, _FSMountLocalVolumeSync, _FSMountMakepath, - _FSMountMountIDToVRefNum, _FSMountPrepare, _FSMountPrepareWithMountPointString, - _FSMountRenameVolume, _FSMountServerVolumeAsync, _FSMountServerVolumeSync, - _FSMountSetProperty, _FSMountStorageSize, _FSMountUpdateCaseInsensitiveName, - _FSMountVCBVRefNum, _FSMoveObject, _FSMoveObjectAsync, _FSMoveObjectAsyncWithCallbacks, + _FSGetAsyncMountStatus, _FSGetAsyncUnmountStatus, _FSGetCatalogInfo, + _FSGetCatalogInfoBulk, _FSGetDataForkName, _FSGetForkCBInfo, + _FSGetForkPosition, _FSGetForkSize, _FSGetHFSUniStrFromString, + _FSGetResourceForkName, _FSGetTemporaryDirectoryForReplaceObject, + _FSGetVolumeForDADisk, _FSGetVolumeForDiskID, _FSGetVolumeInfo, + _FSGetVolumeMountInfo, _FSGetVolumeMountInfoSize, _FSGetVolumeParent, + _FSGetVolumeParms, _FSIsAliasFile, _FSIsFSRefValid, _FSIterateForks, + _FSLockRange, _FSMakeFSRefUnicode, _FSMatchAliasBulk, _FSMountLocalVolumeAsync, + _FSMountLocalVolumeSync, _FSMountServerVolumeAsync, _FSMountServerVolumeSync, + _FSMoveObject, _FSMoveObjectAsync, _FSMoveObjectAsyncWithCallbacks, _FSMoveObjectSync, _FSMoveObjectToTrashAsync, _FSMoveObjectToTrashSync, _FSNewAlias, _FSNewAliasFromPath, _FSNewAliasMinimal, _FSNewAliasMinimalUnicode, - _FSNewAliasUnicode, _FSObjTypeToFSNodeObjectType, _FSOpenFork, - _FSOpenIterator, _FSOpenOrphanResFile, _FSOpenResFile, _FSOpenResourceFile, - _FSOpenResourceFileMapped, _FSPathCopyExtendedAttribute, _FSPathCopyExtendedAttributeList, + _FSNewAliasUnicode, _FSOpenFork, _FSOpenIterator, _FSOpenOrphanResFile, + _FSOpenResFile, _FSOpenResourceFile, _FSOpenResourceFileMapped, + _FSPathCopyExtendedAttribute, _FSPathCopyExtendedAttributeList, _FSPathCopyObjectAsync, _FSPathCopyObjectAsyncWithCallbacks, _FSPathCopyObjectSync, _FSPathCopyObjectSyncWithCallbacks, _FSPathFileOperationCopyStatus, _FSPathGetTemporaryDirectoryForReplaceObject, @@ -137,27 +186,25 @@ exports: _FSPathMoveObjectSyncWithCallbacks, _FSPathMoveObjectToTrashAsync, _FSPathMoveObjectToTrashSync, _FSPathRemoveExtendedAttribute, _FSPathReplaceObject, _FSPathSetExtendedAttribute, _FSReadFork, - _FSRefCreate64, _FSRefMakePath, _FSRemoveExtendedAttribute, - _FSRemoveExtendedAttributeByForkRefNum, _FSRenameUnicode, - _FSReplaceObject, _FSReservationAcquire, _FSReservationCopyPath, - _FSReservationCreateWithFSRef, _FSReservationCreateWithPath, + _FSRefMakePath, _FSRemoveExtendedAttribute, _FSRemoveExtendedAttributeByForkRefNum, + _FSRenameUnicode, _FSReplaceObject, _FSReservationAcquire, + _FSReservationCopyPath, _FSReservationCreateWithFSRef, _FSReservationCreateWithPath, _FSReservationGetFSRefInfo, _FSReservationGetReservationType, _FSReservationGetTypeID, _FSReservationRelinquish, _FSReservationUpdate, _FSResolveAlias, _FSResolveAliasFile, _FSResolveAliasFileWithMountFlags, _FSResolveAliasFileWithMountFlagsThreadSafe, _FSResolveAliasWithMountFlags, _FSResolveNodeID, _FSResourceFileAlreadyOpen, _FSSetCatalogInfo, - _FSSetDefaultTextEncoding, _FSSetExtendedAttribute, _FSSetExtendedAttributeByForkRefNum, + _FSSetExtendedAttribute, _FSSetExtendedAttributeByForkRefNum, _FSSetForkPosition, _FSSetForkSize, _FSSetVolumeInfo, _FSUnlinkObject, _FSUnlockRange, _FSUnmountVolumeAsync, _FSUnmountVolumeSync, - _FSUpdateAlias, _FSVolumeMount, _FSWriteFork, _FileIDTreeCreateMountPointArrayWithOptions, - _FileIDTreeGetChildIDFromName, _FileIDTreeGetEntryInfoFromFileID, - _FileIDTreeGetFileIDFromPath, _FileIDTreePrintVolumeIDs, _FileIDTreePrintVolumeInfo, - _FileIDTreePrintVolumeTree, _FileIDTreePrintVolumes, _FileIDTree_GetBootGUID, - _FillParseTable, _FindCharInSet, _FindFolder, _FindFolderRoutingForDomain, - _FindNextComponent, _Fix2Frac, _Fix2Long, _Fix2X, _FixATan2, - _FixDiv, _FixMul, _FixRatio, _FixRound, _FlattenAliasRecord, - _FlattenCollection, _FlattenCollectionToHdl, _FlattenPartialCollection, - _FlushDebugLog, _FolderManagerDeleteUserSpecificItems, _FolderManagerDeleteUserSpecificItemsForVRefNum, + _FSUpdateAlias, _FSVolumeMount, _FSWriteFork, _FileIDTreePrintVolumeIDs, + _FileIDTreePrintVolumeInfo, _FileIDTreePrintVolumeTree, _FileIDTreePrintVolumes, + _FileIDTree_GetBootGUID, _FillParseTable, _FindCharInSet, + _FindFolder, _FindFolderRoutingForDomain, _FindNextComponent, + _Fix2Frac, _Fix2Long, _Fix2X, _FixATan2, _FixDiv, _FixMul, + _FixRatio, _FixRound, _FlattenAliasRecord, _FlattenCollection, + _FlattenCollectionToHdl, _FlattenPartialCollection, _FlushDebugLog, + _FolderManagerDeleteUserSpecificItems, _FolderManagerDeleteUserSpecificItemsForVRefNum, _Font2RealScript, _FontScript, _FontToScript, _FormatRecToString, _Frac2Fix, _Frac2X, _FracCos, _FracDiv, _FracMul, _FracSin, _FracSqrt, _GDBComponentList, _Gestalt, _GestaltHostName, @@ -172,17 +219,15 @@ exports: _GetComponentPublicResourceList, _GetComponentRefcon, _GetComponentResource, _GetComponentTypeModSeed, _GetCurrentThread, _GetDYLDEntryPoint, _GetDYLDEntryPointWithImage, _GetDebugComponentInfo, _GetDebugOptionInfo, - _GetDefaultThreadStackSize, _GetFSRefComponentsForFileReferenceURL, - _GetFolderNameUnicode, _GetFolderTypes, _GetForkPhysicalInfo, - _GetFreeThreadCount, _GetHandleSize, _GetHostName, _GetIndResource, - _GetIndType, _GetIndexedCollectionItem, _GetIndexedCollectionItemHdl, - _GetIndexedCollectionItemInfo, _GetIndexedCollectionTag, _GetIntlResource, - _GetIntlResourceTable, _GetLocalDateTime, _GetMacOSStatusCommentString, - _GetMacOSStatusErrorString, _GetMap, _GetMaxResourceSize, - _GetNamedResource, _GetNewCollection, _GetNextFOND, _GetNextResourceFile, - _GetOverrideAttributes, _GetOverrideMap, _GetPtrSize, _GetResAttrs, - _GetResFileAttrs, _GetResInfo, _GetResource, _GetResourceSizeOnDisk, - _GetScriptInfoFromTextEncoding, _GetScriptManagerVariable, + _GetDefaultThreadStackSize, _GetFolderNameUnicode, _GetFolderTypes, + _GetForkPhysicalInfo, _GetFreeThreadCount, _GetHandleSize, + _GetHostName, _GetIndResource, _GetIndType, _GetIndexedCollectionItem, + _GetIndexedCollectionItemHdl, _GetIndexedCollectionItemInfo, + _GetIndexedCollectionTag, _GetIntlResource, _GetIntlResourceTable, + _GetLocalDateTime, _GetMap, _GetMaxResourceSize, _GetNamedResource, + _GetNewCollection, _GetNextFOND, _GetNextResourceFile, _GetOverrideAttributes, + _GetOverrideMap, _GetPtrSize, _GetResAttrs, _GetResFileAttrs, + _GetResInfo, _GetResource, _GetResourceSizeOnDisk, _GetScriptInfoFromTextEncoding, _GetScriptManagerVariable_Internal, _GetScriptVariable, _GetSpecificFreeThreadCount, _GetStackListElementFromIndex, _GetSysDirection, _GetTaggedCollectionItem, _GetTaggedCollectionItemInfo, _GetTextEncodingBase, _GetTextEncodingFormat, @@ -194,49 +239,58 @@ exports: _HandAndHand, _HandToHand, _HomeResFile, _IUClearCacheSys, _IUGetItlScript, _IUMagWPString, _IUTextOrderSys, _IdenticalString, _IdenticalText, _IdentifyFolder, _IdentifyFolderInDomain, - _IncrementAtomic, _IncrementAtomic16, _IncrementAtomic8, _InitScriptBundleComponent, - _InsTime, _InsXTime, _InsertOverrideFile, _InsertOverrideMap, - _InsertResourceFile, _InsertStackListElement, _InsertSystemOverrideFile, - _InstallDebugAssertOutputHandler, _InstallExceptionHandler, - _InstallThreadEventsWaitingHook, _InstallThreadInitHook, _InstallTimeTask, - _InstallXTimeTask, _IntlFCAddSearchCriteria, _IntlFCAddSearchDirectory, - _IntlFCCloseComponentData, _IntlFCCreateNewComponentObject, - _IntlFCDebugCache, _IntlFCDeleteComponent, _IntlFCDisposeComponentObject, - _IntlFCEditComponentObject, _IntlFCOpenComponentData, _IntlFCWriteComponentObject, - _IntlGetCache, _IntlGetInitValues, _IntlGetIsInitIntlValueDone, - _IntlGetToken, _IntlIsInitIntlValueDone, _IntlScript, _IntlSetCache, - _IntlSetInitIntlValueProc, _IntlSetInitValues, _IntlSetToken, - _IntlTokenize, _InvalidateFolderDescriptorCache, _InvokeThreadInitHookUPP, - _InvokeVNUPP, _IsHandleValid, _IsHeapValid, _IsMetric, _IsPointerValid, - _IsThisASystemResourceMap, _LLConvertUCS2toUTF8, _LLConvertUTF8toUCS2, - _LLConvertUTF8toUTF16, _LMGetApFontID, _LMGetApFontIDNoInit, - _LMGetBootDrive, _LMGetBrianBits, _LMGetDskSwtchHook, _LMGetHSCHndl, - _LMGetIntlSpec, _LMGetItlSysCachePtr, _LMGetKeyCache, _LMGetLangMapPtr, - _LMGetMemErr, _LMGetQDExist, _LMGetROMMapHndl, _LMGetResErr, - _LMGetResLoad, _LMGetResOneDeep, _LMGetScriptMapPtr, _LMGetSoundActive, - _LMGetSysFontFamNoInit, _LMGetSysFontSize, _LMGetSysMap, _LMGetTmpResLoad, - _LMGetWWExist, _LMInvalidateKeyCache, _LMSetApFontID, _LMSetBootDrive, - _LMSetBrianBits, _LMSetDskSwtchHook, _LMSetHSCHndl, _LMSetIntlSpec, - _LMSetItlSysCachePtr, _LMSetKeyCache, _LMSetKeyboardSwitchingState, - _LMSetLangMapPtr, _LMSetMemErr, _LMSetQDExist, _LMSetROMMapHndl, - _LMSetResErr, _LMSetResLoad, _LMSetResOneDeep, _LMSetScriptMapPtr, - _LMSetSoundActive, _LMSetSysFontFam, _LMSetSysFontSize, _LMSetSysMap, - _LMSetTmpResLoad, _LanguageOrder, _LoadResource, _LocaleCountNames, - _LocaleGetIndName, _LocaleGetName, _LocaleOperationCountLocales, - _LocaleOperationCountNames, _LocaleOperationGetIndName, _LocaleOperationGetLocales, - _LocaleOperationGetName, _LocaleOperationLoadData, _LocaleOperationUnloadData, - _LocaleRefFromLangOrRegionCode, _LocaleRefFromLocaleString, - _LocaleRefGetPartString, _LocaleStringToLangAndRegionCodes, + _IncrementAtomic, _IncrementAtomic16, _IncrementAtomic8, _InsTime, + _InsXTime, _InsertOverrideFile, _InsertOverrideMap, _InsertResourceFile, + _InsertStackListElement, _InsertSystemOverrideFile, _InstallDebugAssertOutputHandler, + _InstallExceptionHandler, _InstallThreadEventsWaitingHook, + _InstallThreadInitHook, _InstallTimeTask, _InstallXTimeTask, + _IntlFCAddSearchCriteria, _IntlFCAddSearchDirectory, _IntlFCCloseComponentData, + _IntlFCCreateNewComponentObject, _IntlFCDebugCache, _IntlFCDeleteComponent, + _IntlFCDisposeComponentObject, _IntlFCEditComponentObject, + _IntlFCOpenComponentData, _IntlFCWriteComponentObject, _IntlGetCache, + _IntlGetIsInitIntlValueDone, _IntlGetToken, _IntlIsInitIntlValueDone, + _IntlScript, _IntlSetCache, _IntlSetInitIntlValueProc, _IntlSetInitValues, + _IntlSetToken, _IntlTokenize, _InvalidateFolderDescriptorCache, + _InvokeCollectionExceptionUPP, _InvokeCollectionFlattenUPP, + _InvokeComponentMPWorkFunctionUPP, _InvokeComponentRoutineUPP, + _InvokeDebugAssertOutputHandlerUPP, _InvokeDebugComponentCallbackUPP, + _InvokeDebuggerDisposeThreadUPP, _InvokeDebuggerNewThreadUPP, + _InvokeDebuggerThreadSchedulerUPP, _InvokeDeferredTaskUPP, + _InvokeExceptionHandlerUPP, _InvokeFNSubscriptionUPP, _InvokeFSVolumeEjectUPP, + _InvokeFSVolumeMountUPP, _InvokeFSVolumeUnmountUPP, _InvokeFileInterrogatorUPP, + _InvokeFolderManagerNotificationUPP, _InvokeGetMissingComponentResourceUPP, + _InvokeIOCompletionUPP, _InvokeIndexToUCStringUPP, _InvokeResErrUPP, + _InvokeSelectorFunctionUPP, _InvokeThreadEntryUPP, _InvokeThreadSchedulerUPP, + _InvokeThreadSwitchUPP, _InvokeThreadTerminationUPP, _InvokeTimerUPP, + _InvokeUnicodeToTextFallbackUPP, _IsHandleValid, _IsHeapValid, + _IsMetric, _IsPointerValid, _IsThisASystemResourceMap, _LLConvertUCS2toUTF8, + _LLConvertUTF8toUCS2, _LLConvertUTF8toUTF16, _LMGetApFontID, + _LMGetApFontIDNoInit, _LMGetBootDrive, _LMGetBrianBits, _LMGetDskSwtchHook, + _LMGetHSCHndl, _LMGetIntlSpec, _LMGetItlSysCachePtr, _LMGetKeyCache, + _LMGetLangMapPtr, _LMGetMemErr, _LMGetQDExist, _LMGetROMMapHndl, + _LMGetResErr, _LMGetResLoad, _LMGetResOneDeep, _LMGetScriptMapPtr, + _LMGetSoundActive, _LMGetSysFontFamNoInit, _LMGetSysFontSize, + _LMGetSysMap, _LMGetTmpResLoad, _LMGetWWExist, _LMInvalidateKeyCache, + _LMSetApFontID, _LMSetBootDrive, _LMSetBrianBits, _LMSetDskSwtchHook, + _LMSetHSCHndl, _LMSetIntlSpec, _LMSetItlSysCachePtr, _LMSetKeyCache, + _LMSetKeyboardSwitchingState, _LMSetLangMapPtr, _LMSetMemErr, + _LMSetQDExist, _LMSetROMMapHndl, _LMSetResErr, _LMSetResLoad, + _LMSetResOneDeep, _LMSetScriptMapPtr, _LMSetSoundActive, _LMSetSysFontFam, + _LMSetSysFontSize, _LMSetSysMap, _LMSetTmpResLoad, _LanguageOrder, + _LoadResource, _LocaleCountNames, _LocaleGetIndName, _LocaleGetName, + _LocaleOperationCountLocales, _LocaleOperationCountNames, + _LocaleOperationGetIndName, _LocaleOperationGetLocales, _LocaleOperationGetName, + _LocaleOperationLoadData, _LocaleOperationUnloadData, _LocaleRefFromLangOrRegionCode, + _LocaleRefFromLocaleString, _LocaleRefGetPartString, _LocaleStringToLangAndRegionCodes, _Long2Fix, _MPAllocate, _MPAllocateAligned, _MPAllocateTaskStorageIndex, _MPArmTimer, _MPBlockClear, _MPBlockCopy, _MPCancelTimer, _MPCauseNotification, _MPCreateCriticalRegion, _MPCreateEvent, _MPCreateNotification, _MPCreateQueue, _MPCreateSemaphore, - _MPCreateTask, _MPCreateTaskCFM, _MPCreateTimer, _MPCurrentTaskID, - _MPDeallocateTaskStorageIndex, _MPDelayUntil, _MPDeleteCriticalRegion, - _MPDeleteEvent, _MPDeleteNotification, _MPDeleteQueue, _MPDeleteSemaphore, - _MPDeleteTimer, _MPDisposeTaskException, _MPEnterCriticalRegion, - _MPExit, _MPExitCriticalRegion, _MPExtractTaskState, _MPFree, - _MPGetAllocatedBlockSize, _MPGetNextCpuID, _MPGetNextTaskID, + _MPCreateTask, _MPCreateTimer, _MPCurrentTaskID, _MPDeallocateTaskStorageIndex, + _MPDelayUntil, _MPDeleteCriticalRegion, _MPDeleteEvent, _MPDeleteNotification, + _MPDeleteQueue, _MPDeleteSemaphore, _MPDeleteTimer, _MPDisposeTaskException, + _MPEnterCriticalRegion, _MPExit, _MPExitCriticalRegion, _MPExtractTaskState, + _MPFree, _MPGetAllocatedBlockSize, _MPGetNextCpuID, _MPGetNextTaskID, _MPGetTaskStorageValue, _MPModifyNotification, _MPModifyNotificationParameters, _MPNotifyQueue, _MPProcessors, _MPProcessorsScheduled, _MPRegisterDebugger, _MPRemoteCall, _MPRemoteCallCFM, _MPSetEvent, _MPSetExceptionHandler, @@ -245,60 +299,68 @@ exports: _MPSignalSemaphore, _MPTaskIsPreemptive, _MPTerminateTask, _MPThrowException, _MPUnregisterDebugger, _MPWaitForEvent, _MPWaitOnQueue, _MPWaitOnSemaphore, _MPYield, _MapScriptInfoAndISOCodes, - _MemError, _Microseconds, _ModeToFSNodeType, _Munger, _NanosecondsToAbsolute, + _MemError, _Microseconds, _Munger, _NanosecondsToAbsolute, _NanosecondsToDuration, _NearestMacTextEncodings, _NearestMacTextEncodingsNoInit, - _NewCollection, _NewComponentFunctionUPP, _NewDebugComponent, - _NewDebugLog, _NewDebugOption, _NewEmptyHandle, _NewGestaltValue, - _NewHandle, _NewHandleClear, _NewHandleFromExternalPtr, _NewPtr, - _NewPtrClear, _NewStackListSys, _NewThread, _NewThreadInitHookUPP, - _NewVNUPP, _NumToString, _OLD_NEXT_COLORS, _OSTypeToCString, - _OpenAComponent, _OpenAComponentResFile, _OpenADefaultComponent, - _OpenComponent, _OpenComponentResFile, _OpenDefaultComponent, - _PBAllocateForkAsync, _PBAllocateForkSync, _PBCatalogSearchAsync, - _PBCatalogSearchSync, _PBCloseForkAsync, _PBCloseForkSync, - _PBCloseIteratorAsync, _PBCloseIteratorSync, _PBCompareFSRefsAsync, - _PBCompareFSRefsSync, _PBCreateDirectoryUnicodeAsync, _PBCreateDirectoryUnicodeSync, - _PBCreateFileAndOpenForkUnicodeAsync, _PBCreateFileAndOpenForkUnicodeSync, - _PBCreateFileUnicodeAsync, _PBCreateFileUnicodeSync, _PBCreateForkAsync, - _PBCreateForkSync, _PBDeleteForkAsync, _PBDeleteForkSync, - _PBDeleteObjectAsync, _PBDeleteObjectSync, _PBExchangeObjectsAsync, - _PBExchangeObjectsSync, _PBFSCopyFileAsync, _PBFSCopyFileSync, - _PBFSResolveNodeIDAsync, _PBFSResolveNodeIDSync, _PBFlushForkAsync, - _PBFlushForkSync, _PBFlushVolumeAsync, _PBFlushVolumeSync, - _PBGetCatalogInfoAsync, _PBGetCatalogInfoBulkAsync, _PBGetCatalogInfoBulkSync, - _PBGetCatalogInfoSync, _PBGetForkCBInfoAsync, _PBGetForkCBInfoSync, - _PBGetForkPositionAsync, _PBGetForkPositionSync, _PBGetForkSizeAsync, - _PBGetForkSizeSync, _PBGetVolumeInfoAsync, _PBGetVolumeInfoSync, - _PBIterateForksAsync, _PBIterateForksSync, _PBMakeFSRefUnicodeAsync, - _PBMakeFSRefUnicodeSync, _PBMoveObjectAsync, _PBMoveObjectSync, - _PBOpenForkAsync, _PBOpenForkSync, _PBOpenIteratorAsync, _PBOpenIteratorSync, - _PBReadForkAsync, _PBReadForkSync, _PBRenameUnicodeAsync, - _PBRenameUnicodeSync, _PBSetCatalogInfoAsync, _PBSetCatalogInfoSync, - _PBSetForkPositionAsync, _PBSetForkPositionSync, _PBSetForkSizeAsync, - _PBSetForkSizeSync, _PBSetVolumeInfoAsync, _PBSetVolumeInfoSync, - _PBUnlinkObjectAsync, _PBUnlinkObjectSync, _PBWriteForkAsync, - _PBWriteForkSync, _PBXLockRangeAsync, _PBXLockRangeSync, _PBXUnlockRangeAsync, + _NewCollection, _NewCollectionExceptionUPP, _NewCollectionFlattenUPP, + _NewComponentFunctionUPP, _NewComponentMPWorkFunctionUPP, + _NewComponentRoutineUPP, _NewDebugAssertOutputHandlerUPP, + _NewDebugComponent, _NewDebugComponentCallbackUPP, _NewDebugLog, + _NewDebugOption, _NewDebuggerDisposeThreadUPP, _NewDebuggerNewThreadUPP, + _NewDebuggerThreadSchedulerUPP, _NewDeferredTaskUPP, _NewEmptyHandle, + _NewExceptionHandlerUPP, _NewFNSubscriptionUPP, _NewFSVolumeEjectUPP, + _NewFSVolumeMountUPP, _NewFSVolumeUnmountUPP, _NewFileInterrogatorUPP, + _NewFolderManagerNotificationUPP, _NewGestaltValue, _NewGetMissingComponentResourceUPP, + _NewHandle, _NewHandleClear, _NewHandleFromExternalPtr, _NewIOCompletionUPP, + _NewIndexToUCStringUPP, _NewPtr, _NewPtrClear, _NewResErrUPP, + _NewSelectorFunctionUPP, _NewStackListSys, _NewThread, _NewThreadEntryUPP, + _NewThreadSchedulerUPP, _NewThreadSwitchUPP, _NewThreadTerminationUPP, + _NewTimerUPP, _NewUnicodeToTextFallbackUPP, _NumToString, + _OSTypeToCString, _OpenAComponent, _OpenAComponentResFile, + _OpenADefaultComponent, _OpenComponent, _OpenComponentResFile, + _OpenDefaultComponent, _PBAllocateForkAsync, _PBAllocateForkSync, + _PBCatalogSearchAsync, _PBCatalogSearchSync, _PBCloseForkAsync, + _PBCloseForkSync, _PBCloseIteratorAsync, _PBCloseIteratorSync, + _PBCompareFSRefsAsync, _PBCompareFSRefsSync, _PBCreateDirectoryUnicodeAsync, + _PBCreateDirectoryUnicodeSync, _PBCreateFileAndOpenForkUnicodeAsync, + _PBCreateFileAndOpenForkUnicodeSync, _PBCreateFileUnicodeAsync, + _PBCreateFileUnicodeSync, _PBCreateForkAsync, _PBCreateForkSync, + _PBDeleteForkAsync, _PBDeleteForkSync, _PBDeleteObjectAsync, + _PBDeleteObjectSync, _PBExchangeObjectsAsync, _PBExchangeObjectsSync, + _PBFSCopyFileAsync, _PBFSCopyFileSync, _PBFSResolveNodeIDAsync, + _PBFSResolveNodeIDSync, _PBFlushForkAsync, _PBFlushForkSync, + _PBFlushVolumeAsync, _PBFlushVolumeSync, _PBGetCatalogInfoAsync, + _PBGetCatalogInfoBulkAsync, _PBGetCatalogInfoBulkSync, _PBGetCatalogInfoSync, + _PBGetForkCBInfoAsync, _PBGetForkCBInfoSync, _PBGetForkPositionAsync, + _PBGetForkPositionSync, _PBGetForkSizeAsync, _PBGetForkSizeSync, + _PBGetVolumeInfoAsync, _PBGetVolumeInfoSync, _PBIterateForksAsync, + _PBIterateForksSync, _PBMakeFSRefUnicodeAsync, _PBMakeFSRefUnicodeSync, + _PBMoveObjectAsync, _PBMoveObjectSync, _PBOpenForkAsync, _PBOpenForkSync, + _PBOpenIteratorAsync, _PBOpenIteratorSync, _PBReadForkAsync, + _PBReadForkSync, _PBRenameUnicodeAsync, _PBRenameUnicodeSync, + _PBSetCatalogInfoAsync, _PBSetCatalogInfoSync, _PBSetForkPositionAsync, + _PBSetForkPositionSync, _PBSetForkSizeAsync, _PBSetForkSizeSync, + _PBSetVolumeInfoAsync, _PBSetVolumeInfoSync, _PBUnlinkObjectAsync, + _PBUnlinkObjectSync, _PBWriteForkAsync, _PBWriteForkSync, + _PBXLockRangeAsync, _PBXLockRangeSync, _PBXUnlockRangeAsync, _PBXUnlockRangeSync, _PLpos, _PLstrcat, _PLstrchr, _PLstrcmp, _PLstrcpy, _PLstrlen, _PLstrncat, _PLstrncmp, _PLstrncpy, _PLstrpbrk, _PLstrrchr, _PLstrspn, _PLstrstr, _PopStackListElement, _PrimeTime, _PrimeTimeTask, _PrintEnumerationCache, _PrintFSAccessControlEntry, - _PrintFSRef, _PrintFSRefPath, _PrintFileInfo, _PrintLaunchDebugInfo, - _PrintOpenForks, _PrintResourceChain, _PrintVolumeInfo, _PtrAndHand, - _PtrToHand, _PtrToXHand, _PurgeCollection, _PurgeCollectionTag, - _PushStackListElement, _QueryUnicodeMappings, _QueryUnicodeMappingsNoInit, - _RMAddResFileToSearchPath, _RMAddResourceByFileRef, _RMChangedResourceByFileRef, - _RMCloseResourceFile, _RMCloseResourceFileByFileRef, _RMDetachResourceByFileRef, - _RMDisposeMappedFileRef, _RMFSCreateResFile, _RMFSCreateResourceFile, - _RMFSOpenResourceFile, _RMGetIndexedResource, _RMGetIndexedResourceByFileRef, - _RMGetIndexedType, _RMGetNamedResource, _RMGetPtrAndSizeFromMappedRef, - _RMGetResource, _RMGetResourceByFileRef, _RMGetResourceCount, - _RMGetResourceCountByFileRef, _RMGetResourceSize, _RMGetTopOfOrphanChain, - _RMGetTypeCount, _RMInsertMappedResourceFileInChain, _RMNewMappedRefFromMappedFork, - _RMOpenResourceFileRef, _RMReadPartialResourceByFileRef, _RMReleaseResourceByFileRef, - _RMRemoveResFileFromSearchPath, _RMRemoveResourceByFileRef, - _RMUpdateResourceFileByFileRef, _RMWriteResourceByFileRef, - _ReadLocation, _ReadPartialResource, _RealScript, _ReallocateHandle, - _RecoverHandle, _RefFix2X, _RefX2Fix, _RefX2Frac, _RegisterComponent, + _PrintFSRef, _PrintFSRefPath, _PrintFileInfo, _PrintOpenForks, + _PrintResourceChain, _PrintVolumeInfo, _PtrAndHand, _PtrToHand, + _PtrToXHand, _PurgeCollection, _PurgeCollectionTag, _PushStackListElement, + _QueryUnicodeMappings, _QueryUnicodeMappingsNoInit, _RMAddResourceByFileRef, + _RMChangedResourceByFileRef, _RMCloseResourceFile, _RMCloseResourceFileByFileRef, + _RMDetachResourceByFileRef, _RMDisposeMappedFileRef, _RMFSCreateResFile, + _RMFSCreateResourceFile, _RMFSOpenResourceFile, _RMGetIndexedResource, + _RMGetIndexedResourceByFileRef, _RMGetIndexedType, _RMGetNamedResource, + _RMGetPtrAndSizeFromMappedRef, _RMGetResource, _RMGetResourceByFileRef, + _RMGetResourceCount, _RMGetResourceCountByFileRef, _RMGetResourceSize, + _RMGetTopOfOrphanChain, _RMGetTypeCount, _RMInsertMappedResourceFileInChain, + _RMNewMappedRefFromMappedFork, _RMOpenResourceFileRef, _RMReadPartialResourceByFileRef, + _RMReleaseResourceByFileRef, _RMRemoveResourceByFileRef, _RMUpdateResourceFileByFileRef, + _RMWriteResourceByFileRef, _ReadLocation, _ReadPartialResource, + _RealScript, _ReallocateHandle, _RecoverHandle, _RegisterComponent, _RegisterComponentFileRef, _RegisterComponentFileRefEntries, _RegisterComponentResource, _RegisterComponentResourceFile, _RelString, _ReleaseCollection, _ReleaseFolder, _ReleaseResource, @@ -306,28 +368,20 @@ exports: _RemoveIndexedCollectionItem, _RemoveResource, _RemoveStackListElement, _RemoveThreadInitHook, _RemoveTimeTask, _ReplaceGestaltValue, _ReplaceIndexedCollectionItem, _ReplaceIndexedCollectionItemHdl, - _ReplaceStackListElement, _ReplaceText, _RequestVolumeNotification, - _RequestVolumeNotificationWithFlags, _ResError, _ResetTextToUnicodeInfo, + _ReplaceStackListElement, _ReplaceText, _ResError, _ResetTextToUnicodeInfo, _ResetUnicodeToTextInfo, _ResetUnicodeToTextRunInfo, _ResolveComponentAlias, _ResolveDefaultTextEncoding, _RetainCollection, _RevertTextEncodingToScriptInfo, - _RmvTime, _S32Set, _S64Absolute, _S64Add, _S64And, _S64BitwiseAnd, - _S64BitwiseEor, _S64BitwiseNot, _S64BitwiseOr, _S64Compare, - _S64Divide, _S64Eor, _S64Max, _S64Min, _S64Multiply, _S64Negate, - _S64Not, _S64Or, _S64Set, _S64SetU, _S64ShiftLeft, _S64ShiftRight, - _S64Subtract, _SInt64ToUInt64, _SMDisposeIntlSpec, _SMInitIntlSpec, - _ScriptOrder, _ScriptToRange, _SearchStackList, _SearchStackListFirstFourBytes, - _SetAliasUserType, _SetAliasUserTypeWithPtr, _SetCollectionDefaultAttributes, - _SetCollectionExceptionProc, _SetCollectionItemInfo, _SetComponentInstanceError, - _SetComponentInstanceStorage, _SetComponentMgrFlags, _SetComponentRefcon, - _SetDebugOptionValue, _SetDebuggerNotificationProcs, _SetDefaultComponent, - _SetFallbackUnicodeToText, _SetFallbackUnicodeToTextRun, _SetGestaltSystemValue, - _SetGestaltSystemValuesBulk, _SetGestaltValue, _SetGestaltValuesBulk, - _SetGetFNumProc, _SetGetFontFromPortProc, _SetGetFontNameProc, - _SetGetFontScriptProc, _SetGetScriptFontFlagsCallback, _SetHandleSize, - _SetIndexedCollectionItemInfo, _SetInitializeScriptHLProc, - _SetLocalDateTime, _SetOverrideAttributes, _SetPtrSize, _SetResAttrs, - _SetResFileAttrs, _SetResInfo, _SetResLoad, _SetResPurge, - _SetResourceSize, _SetScriptFontValidatorCallback, _SetScriptManagerVariable, + _RmvTime, _ScriptOrder, _ScriptToRange, _SearchStackList, + _SearchStackListFirstFourBytes, _SetAliasUserType, _SetAliasUserTypeWithPtr, + _SetCollectionDefaultAttributes, _SetCollectionExceptionProc, + _SetCollectionItemInfo, _SetComponentInstanceError, _SetComponentInstanceStorage, + _SetComponentMgrFlags, _SetComponentRefcon, _SetDebugOptionValue, + _SetDebuggerNotificationProcs, _SetDefaultComponent, _SetFallbackUnicodeToText, + _SetFallbackUnicodeToTextRun, _SetGestaltSystemValue, _SetGestaltSystemValuesBulk, + _SetGestaltValue, _SetGestaltValuesBulk, _SetGetScriptFontFlagsCallback, + _SetHandleSize, _SetIndexedCollectionItemInfo, _SetLocalDateTime, + _SetPtrSize, _SetResAttrs, _SetResFileAttrs, _SetResInfo, + _SetResLoad, _SetResPurge, _SetResourceSize, _SetScriptFontValidatorCallback, _SetScriptManagerVariable_KeyScriptOverride, _SetScriptVariable, _SetSwapKeyboardProc, _SetSysDirection, _SetThreadGlobalsAreCooperative, _SetThreadReadyGivenTaskRef, _SetThreadScheduler, _SetThreadState, @@ -356,43 +410,35 @@ exports: _TSDestroyCondition, _TSDestroyMutex, _TSDestroyReaderWriterLock, _TSDestroySemaphore, _TSDurationToTimeSpec, _TSExceptionAbort, _TSExceptionContinue, _TSExceptionGetLiveState, _TSExit, _TSGetDefaultThreadStackSize, - _TSGetMainThreadBacktrace, _TSGetPriority, _TSGetStackBase, - _TSGetStackSize, _TSGetStorage, _TSInitCondition, _TSInitMutex, - _TSInitReaderWriterLock, _TSInitSemaphore, _TSInstallExceptionCatcher, - _TSLockMutex, _TSReaderToWriter, _TSReleaseReader, _TSRemoveExceptionCatcher, - _TSSelf, _TSSetPriority, _TSSetStorage, _TSSignalCondition, - _TSSignalSemaphore, _TSTerminateThread, _TSTryLockMutex, _TSUnlockMutex, - _TSWaitOnCondition, _TSWaitOnConditionTimed, _TSWaitOnConditionTimedRelative, - _TSWaitOnSemaphore, _TSWaitOnSemaphoreRelative, _TSWriterToReader, - _TSYield, _TUCharacterByteType, _TaskLevel, _TempNewHandle, - _TestAndClear, _TestAndSet, _TextOrder, _ThreadBeginCritical, - _ThreadCurrentStackSpace, _ThreadEndCritical, _ThreadsHaveNonMainRunnable, - _TickCount, _TransferCustomIconAndBadge, _TransliterateText, - _TruncateForTextToUnicode, _TruncateForUnicodeToText, _U32SetU, - _U64Add, _U64And, _U64BitwiseAnd, _U64BitwiseEor, _U64BitwiseNot, - _U64BitwiseOr, _U64Compare, _U64Divide, _U64Eor, _U64Max, - _U64Multiply, _U64Not, _U64Or, _U64Set, _U64SetU, _U64ShiftLeft, - _U64ShiftRight, _U64Subtract, _UCCompareCollationKeys, _UCCompareText, - _UCCompareTextDefault, _UCCompareTextNoLocale, _UCCompileuchr, - _UCConvertCFAbsoluteTimeToLongDateTime, _UCConvertCFAbsoluteTimeToSeconds, - _UCConvertCFAbsoluteTimeToUTCDateTime, _UCConvertLongDateTimeToCFAbsoluteTime, - _UCConvertSecondsToCFAbsoluteTime, _UCConvertUTCDateTimeToCFAbsoluteTime, - _UCCreateCollator, _UCCreateTextBreakLocator, _UCCreateUSetForUchr, - _UCDisposeCollator, _UCDisposeTextBreakLocator, _UCFindTextBreak, - _UCGenerateSwappedUchr, _UCGetCharProperty, _UCGetCollationKey, - _UCKeyTranslate, _UCKeyboardLayoutStringMax, _UCLoadCharPropsTablePriv, + _TSGetPriority, _TSGetStackBase, _TSGetStackSize, _TSGetStorage, + _TSInitCondition, _TSInitMutex, _TSInitReaderWriterLock, _TSInitSemaphore, + _TSInstallExceptionCatcher, _TSLockMutex, _TSReaderToWriter, + _TSReleaseReader, _TSRemoveExceptionCatcher, _TSSelf, _TSSetPriority, + _TSSetStorage, _TSSignalCondition, _TSSignalSemaphore, _TSTerminateThread, + _TSTryLockMutex, _TSUnlockMutex, _TSWaitOnCondition, _TSWaitOnConditionTimed, + _TSWaitOnConditionTimedRelative, _TSWaitOnSemaphore, _TSWaitOnSemaphoreRelative, + _TSWriterToReader, _TSYield, _TaskLevel, _TempNewHandle, _TestAndClear, + _TestAndSet, _TextOrder, _ThreadBeginCritical, _ThreadCurrentStackSpace, + _ThreadEndCritical, _ThreadsHaveNonMainRunnable, _TickCount, + _TransliterateText, _TruncateForTextToUnicode, _TruncateForUnicodeToText, + _U64Compare, _UCCompareCollationKeys, _UCCompareText, _UCCompareTextDefault, + _UCCompareTextNoLocale, _UCCompileuchr, _UCConvertCFAbsoluteTimeToLongDateTime, + _UCConvertCFAbsoluteTimeToSeconds, _UCConvertCFAbsoluteTimeToUTCDateTime, + _UCConvertLongDateTimeToCFAbsoluteTime, _UCConvertSecondsToCFAbsoluteTime, + _UCConvertUTCDateTimeToCFAbsoluteTime, _UCCreateCollator, + _UCCreateTextBreakLocator, _UCCreateUSetForUchr, _UCDisposeCollator, + _UCDisposeTextBreakLocator, _UCFindTextBreak, _UCGenerateSwappedUchr, + _UCGetCharProperty, _UCGetCollationKey, _UCKeyTranslate, _UCLoadCharPropsTablePriv, _UCTypeSelectAddKeyToSelector, _UCTypeSelectAddKeyToSelectorData, _UCTypeSelectAddKeyToSelectorDataWithTime, _UCTypeSelectCompare, _UCTypeSelectCreateSelector, _UCTypeSelectDisposeSelector, _UCTypeSelectFindItem, _UCTypeSelectFlushSelectorData, _UCTypeSelectNewSelector, _UCTypeSelectReleaseSelector, _UCTypeSelectWalkList, _UCTypeSelectWouldResetBuffer, - _UCUnloadCharPropsTablePriv, _UCUseCharPropsTablePriv, _UInt64ToSInt64, - _UTF8ToCString, _UmapBCharToUChars, _UmapCloseMapping, _UmapGetCharsToComposeUSet, - _UmapOpenMapping, _UmapScanUCharElement, _UmapSetFallbacks, - _UmapSetLookupInfo, _UmapUCharElementToBChars, _UncaptureComponent, - _UnflattenAliasRecord, _UnflattenCollection, _UnflattenCollectionFromHdl, - _UnicodeValidConversionLength, _Unique1ID, _UniqueID, _UnregisterComponent, - _UnsignedFixedMulDiv, _UpTime, _UpdateResFile, _UpgradeScriptInfoToTextEncoding, + _UCUnloadCharPropsTablePriv, _UCUseCharPropsTablePriv, _UTF8ToCString, + _UncaptureComponent, _UnflattenAliasRecord, _UnflattenCollection, + _UnflattenCollectionFromHdl, _UnicodeValidConversionLength, + _Unique1ID, _UniqueID, _UnregisterComponent, _UnsignedFixedMulDiv, + _UpTime, _UpdateResFile, _UpgradeScriptInfoToTextEncoding, _UseResFile, _ValidComponent, _WideAdd, _WideBitShift, _WideCompare, _WideDivide, _WideMultiply, _WideNegate, _WideShift, _WideSquareRoot, _WideSubtract, _WideWideDivide, _WritePartialResource, _WriteResource, @@ -441,17 +487,18 @@ exports: __CSBackupRequestFreeSpaceOnVolume, __CSBackupRuleTreeCreateWithVolumeName, __CSBackupRuleTreeEvaluateFile, __CSBackupRuleTreeEvaluateFolder, __CSBackupRuleTreeGetNodeForPath, __CSBackupRuleTreeGetTypeID, - __CSBackupRuleTreePushFullPath, __CSBackupRuleTreeSetPathExcluded, - __CSBackupRuleTreeSetPathsExcluded, __CSBackupRulesEngineAddPath, - __CSBackupRulesEngineAddRuleTree, __CSBackupRulesEngineAddSourcePath, - __CSBackupRulesEngineAddStdRulesToTree, __CSBackupRulesEngineBulkEvaluatePathCopyIncludedChildren, + __CSBackupRuleTreePushFullPath, __CSBackupRuleTreeSetFoldersExcluded, + __CSBackupRuleTreeSetPathExcluded, __CSBackupRuleTreeSetPathsExcluded, + __CSBackupRulesEngineAddPath, __CSBackupRulesEngineAddRuleTree, + __CSBackupRulesEngineAddSourcePath, __CSBackupRulesEngineAddStdRulesToTree, + __CSBackupRulesEngineBulkEvaluatePathCopyIncludedChildren, __CSBackupRulesEngineBulkEvaluateURLCopyIncludedChildren, __CSBackupRulesEngineCopyRuleTrees, __CSBackupRulesEngineCopySourceDictionary, - __CSBackupRulesEngineCopySourcePaths, __CSBackupRulesEngineCreateForBackup, - __CSBackupRulesEngineCreateWithArchive, __CSBackupRulesEngineEvaluateFile, - __CSBackupRulesEngineEvaluateFileFromFullPath, __CSBackupRulesEngineEvaluateFolder, - __CSBackupRulesEngineEvaluateFolderFromFullPath, __CSBackupRulesEngineEvaluateFromFullPath, - __CSBackupRulesEngineEvaluateFromFullPathDeferDirectoryDecision, + __CSBackupRulesEngineCopySourcePaths, __CSBackupRulesEngineCreate, + __CSBackupRulesEngineCreateForBackup, __CSBackupRulesEngineCreateWithArchive, + __CSBackupRulesEngineEvaluateFile, __CSBackupRulesEngineEvaluateFileFromFullPath, + __CSBackupRulesEngineEvaluateFolder, __CSBackupRulesEngineEvaluateFolderFromFullPath, + __CSBackupRulesEngineEvaluateFromFullPath, __CSBackupRulesEngineEvaluateFromFullPathDeferDirectoryDecision, __CSBackupRulesEngineGetRuleTreeForPath, __CSBackupRulesEngineGetRuleTreeWithVolEntry, __CSBackupRulesEngineGetTypeID, __CSBackupRulesEngineIsExclusionRulesCacheEnabled, __CSBackupRulesEngineIsPathExcluded, __CSBackupRulesEnginePopAllComponents, @@ -462,21 +509,21 @@ exports: __CSBackupRulesEngineSetTraversalPath, __CSBackupServerCopyStatus, __CSBackupServerIsActive, __CSBackupServerProxyBackupNow, __CSBackupServerProxyCancelBackup, __CSBackupServerProxyCopyDestinationMountPoint, - __CSBackupServerProxyGetTypeID, __CSBackupServerProxyIsPortRegistered, - __CSBackupServerProxyRunHealthCheck, __CSBackupServerProxySendMessage, - __CSBackupServerProxySetNeedsRescan, __CSBackupSessionCopyBackupDirectory, - __CSBackupSessionGetTypeID, __CSBackupSetBackupSessionTarget, - __CSBackupSettingsAreSystemFilesSkipped, __CSBackupSettingsCanEnableAutoBackup, - __CSBackupSettingsCanManuallyBackup, __CSBackupSettingsCanSetBackupVolume, - __CSBackupSettingsCopyBackupAlias, __CSBackupSettingsCopyBackupAliasData, - __CSBackupSettingsCopyDestinations, __CSBackupSettingsCopyExcludedPaths, - __CSBackupSettingsCopyExcludedVolumes, __CSBackupSettingsCopyIncludedPaths, - __CSBackupSettingsCopyIncludedVolumes, __CSBackupSettingsCopyNextBackupDate, - __CSBackupSettingsCopySkippedFolders, __CSBackupSettingsCopySkippedItems, - __CSBackupSettingsCopySkippedPaths, __CSBackupSettingsCopyStdExcludedContentPaths, - __CSBackupSettingsCopyStdExcludedFileContentPaths, __CSBackupSettingsCopyStdExcludedPaths, - __CSBackupSettingsCopyStdExcludedUserPaths, __CSBackupSettingsCreate, - __CSBackupSettingsExcludePath, __CSBackupSettingsGetMaxBackupSize, + __CSBackupServerProxyCopyMountPointForDestination, __CSBackupServerProxyGetTypeID, + __CSBackupServerProxyIsPortRegistered, __CSBackupServerProxyRunHealthCheck, + __CSBackupServerProxySendMessage, __CSBackupServerProxySetNeedsRescan, + __CSBackupSessionCopyBackupDirectory, __CSBackupSessionGetTypeID, + __CSBackupSetBackupSessionTarget, __CSBackupSettingsAreSystemFilesSkipped, + __CSBackupSettingsCanEnableAutoBackup, __CSBackupSettingsCanManuallyBackup, + __CSBackupSettingsCanSetBackupVolume, __CSBackupSettingsCopyBackupAlias, + __CSBackupSettingsCopyBackupAliasData, __CSBackupSettingsCopyDestinations, + __CSBackupSettingsCopyExcludedPaths, __CSBackupSettingsCopyExcludedVolumes, + __CSBackupSettingsCopyIncludedPaths, __CSBackupSettingsCopyIncludedVolumes, + __CSBackupSettingsCopyNextBackupDate, __CSBackupSettingsCopySkippedFolders, + __CSBackupSettingsCopySkippedItems, __CSBackupSettingsCopySkippedPaths, + __CSBackupSettingsCopyStdExcludedContentPaths, __CSBackupSettingsCopyStdExcludedFileContentPaths, + __CSBackupSettingsCopyStdExcludedPaths, __CSBackupSettingsCopyStdExcludedUserPaths, + __CSBackupSettingsCreate, __CSBackupSettingsExcludePath, __CSBackupSettingsGetMaxBackupSize, __CSBackupSettingsGetTypeID, __CSBackupSettingsIsAutoBackupEnabled, __CSBackupSettingsIsPathExcluded, __CSBackupShouldBackUpRecoverySet, __CSBackupShouldCheckLocalRecoveryPartition, __CSBackupStartBackingUpItem, @@ -484,24 +531,22 @@ exports: __CSBackupSystemVersionCompare, __CSBackupURLIsBackupItem, __CSBackupUnregisterMTMExclusions, __CSBackupWasItemEverBackedUp, __CSCheckFix, __CSCheckFixDisable, __CSCheckFixSetBundleInformation, - __CSCheckFixWithInfo, __CSCopyLazyValuesForKey, __CSCopyNamedData, - __CSCreateSeed, __CSDestroySeed, __CSFlushNamedData, __CSGetNamedData, - __CSGetProcessorArchitecture, __CSIncrementSeed, __CSReadSeed, - __CSReleaseNamedData, __CSSetNamedData, __CSWriteSeed, __CharacterByteType, - __ConvertLocalTimeToUTC, __ConvertLocalToUTCDateTime, __ConvertUTCToLocalDateTime, - __ConvertUTCToLocalTime, __CopyCStringToPascal, __CopyComponentBundleIdentifier, - __CopyPascalStringToC, __CoreServicesServerMain, __EqualString, - __FNNotifyByURL, __FSAccessControlEntryCopyUUID, __FSAccessControlEntryCreateMutableWithUUID, - __FSAccessControlEntryCreateMutableWithUUIDBytes, __FSAccessControlEntryGetAccessControlInfo, - __FSAccessControlEntryGetDisplayAsCurrentID, __FSAccessControlEntryGetDisplayAsCurrentIDValue, - __FSAccessControlEntryGetTypeID, __FSAccessControlEntryGetUUIDBytes, - __FSAccessControlEntryGetUnmappableInfo, __FSAccessControlEntryGetVisibility, - __FSAccessControlEntrySetAccessControlInfo, __FSAccessControlEntrySetUUID, - __FSAccessControlEntrySetUUIDBytes, __FSAddVolumeObserver, - __FSAddVolumeObserverOnQueue, __FSAllocateQuarantineData, - __FSApplyAccessRightsToObjectForUser, __FSApplyAccessRightsToObjectWithDictionary, - __FSCatalogSearchPlusFileIDs, __FSCompareAliasRecords, __FSCompareFlattenedFSRefs, - __FSCopyAliasFile, __FSCopyAliasFileWithFlags, __FSCopyAliasInfoFromAliasPtr, + __CSCheckFixWithInfo, __CSCopyLazyValuesForKey, __CSFlushNamedData, + __CSGetNamedData, __CSReleaseNamedData, __CSSetNamedData, + __CharacterByteType, __ConvertLocalTimeToUTC, __ConvertLocalToUTCDateTime, + __ConvertUTCToLocalDateTime, __ConvertUTCToLocalTime, __CopyCStringToPascal, + __CopyComponentBundleIdentifier, __CopyPascalStringToC, __CoreServicesServerMain, + __EqualString, __FNNotifyByURL, __FSAccessControlEntryCopyUUID, + __FSAccessControlEntryCreateMutableWithUUID, __FSAccessControlEntryCreateMutableWithUUIDBytes, + __FSAccessControlEntryGetAccessControlInfo, __FSAccessControlEntryGetDisplayAsCurrentID, + __FSAccessControlEntryGetDisplayAsCurrentIDValue, __FSAccessControlEntryGetTypeID, + __FSAccessControlEntryGetUUIDBytes, __FSAccessControlEntryGetUnmappableInfo, + __FSAccessControlEntryGetVisibility, __FSAccessControlEntrySetAccessControlInfo, + __FSAccessControlEntrySetUUID, __FSAccessControlEntrySetUUIDBytes, + __FSAllocateQuarantineData, __FSApplyAccessRightsToObjectForUser, + __FSApplyAccessRightsToObjectWithDictionary, __FSCatalogSearchPlusFileIDs, + __FSCompareAliasRecords, __FSCompareFlattenedFSRefs, __FSCopyAliasFile, + __FSCopyAliasFileWithFlags, __FSCopyAliasInfoFromAliasPtr, __FSCopyExtendedAliasInfoFromAliasPtr, __FSCopyFSPackedFSRef, __FSCopyFile, __FSCopyPOSIXSymlink, __FSCopyVolumeProperty, __FSCreateEffectiveAccessArrayWithACLArray, __FSCreateFSPackedFSRef, @@ -539,7 +584,6 @@ exports: __FSPermissionArrayCreateFSPermissionInfoWithVolume, __FSPermissionArrayCreateWithPermissionInfo, __FSPermissionArrayCreateWithPermissionInfoWithVolume, __FSPermissionArrayCreateWithSecurityInfo, __FSPermissionArrayWriteToDisk, __FSRemoveUserFromObjectAccessControlList, - __FSRemoveVolumeObserver, __FSRemoveVolumeObserverOnQueue, __FSRemoveVolumeProperty, __FSReplaceAccessControlListWithArray, __FSReplaceAccessControlListWithDictionary, __FSSamePhysicalDevice, __FSScheduleFileVolumeOperations, __FSSetAliasHandleSizeValidation, @@ -547,26 +591,26 @@ exports: __FSSetObjectOwnership, __FSSetQuarantineData, __FSSetStrictAliasPathMatchByDefault, __FSSetVolumeEncoding, __FSSetVolumePermissions, __FSSetVolumeProperty, __FSTransferExtendedAttributes, __FSTransferExtendedAttributesByForkRefNum, - __FSUnflattenFSRef, __FSUnscheduleFileVolumeOperations, __FSValidVolume, - __FSVolumeAllocateQuarantineData, __FSVolumeMount, __FSVolumeSetQuarantineData, - __FileIDTreeGetSKServiceDescription, __FindFolderRouting, - __FindNextComponentWithPlatformsBitmap, __FlattenComponent, - __FolderManagerDeleteUserSpecificItemsWithTimeout, __GDBUserBreakCallbackFunc, - __GDBUserBreakShouldSignalWithSIGINT, __GetComponentFSRef, - __GetComponentPlatformsBitmap, __GetComponentThingInfo, __GetCurrentEventTimestamp, - __GetIOKitDeviceTypeFromDeviceID, __GetUTCDateTime, __HClrRBit, - __HGetState, __HNoPurge, __HPurge, __HSetRBit, __HSetState, - __InitCarbonCore, __LMGetApFontID, __LMGetSysFontFam, __MPIsFullyInitialized, - __MPLibraryIsCompatible, __MPLibraryVersion, __P2CStr, __PBCatalogSearchPlusFileIDs, + __FSUnflattenFSRef, __FSUnscheduleFileVolumeOperations, __FSUpdateOutOfProcessFSRef, + __FSValidVolume, __FSVolumeAllocateQuarantineData, __FSVolumeMount, + __FSVolumeSetQuarantineData, __FindFolderRouting, __FindNextComponentWithPlatformsBitmap, + __FlattenComponent, __FolderManagerDeleteUserSpecificItemsWithTimeout, + __GetComponentFSRef, __GetComponentPlatformsBitmap, __GetComponentThingInfo, + __GetCurrentEventTimestamp, __GetIOKitDeviceTypeFromDeviceID, + __GetUTCDateTime, __HClrRBit, __HGetState, __HNoPurge, __HPurge, + __HSetRBit, __HSetState, __InitCarbonCore, __LMGetApFontID, + __LMGetSysFontFam, __MPIsFullyInitialized, __MPLibraryIsCompatible, + __MPLibraryVersion, __P2CStr, __PBCatalogSearchPlusFileIDs, __PLpos, __PLstrcat, __PLstrchr, __PLstrcmp, __PLstrcpy, __PLstrlen, __PLstrncat, __PLstrncmp, __PLstrncpy, __PLstrpbrk, __PLstrrchr, - __PLstrspn, __PLstrstr, __SCSeedGetSKServiceDescription, __URLGetExtendedUserAccess, + __PLstrspn, __PLstrstr, __SCGetServerRunLoop, __URLGetExtendedUserAccess, __UnflattenComponent, __UppercaseText, __c2pstr, __c2pstrcpy, __ccSetGetHandleSizeCallout, __p2cstr, __p2cstrcpy, _annuity, _compound, _dec2f, _dec2l, _dec2num, _dec2s, _dec2str, _dtox80, - _gCarbonDiskSwitchDialog, _gSCKnownSKPlugins, _kBackupID, - _kBackupMachineAddressXAttrKey, _kBackupNotificationObject, - _kBackupPrefsChangedNotification, _kBackupPrefsPlist, _kBackupsTopLevelFolder, + _gSCKnownSKPlugins, _kBackupID, _kBackupMachineAddressXAttrKey, + _kBackupNotificationObject, _kBackupPrefsChangedNotification, + _kBackupPrefsPlist, _kBackupsTopLevelFolder, _kCSBackupAdvisoryListFilePathKey, + _kCSBackupAdvisoryListFileTypeKey, _kCSBackupAdvisoryListLockProxyKey, _kCSBackupAirPortInfoMacAddressKey, _kCSBackupAirPortInfoNameKey, _kCSBackupAirPortInfoVersionKey, _kCSBackupAlwaysShowDeletedBackupsWarningKey, _kCSBackupBootPlist, _kCSBackupClientIdXPCKey, _kCSBackupCustomBooter, @@ -625,10 +669,7 @@ exports: _kCSBackupdKeyTimeRemaining, _kCSBackupdKeyTotalBytesCopied, _kCSBackupdKeyTotalMobileBackupsToMigrate, _kCSBackupdPortName, _kCSBackupdResultDictionaryPath, _kCSBackupdSignature, _kCSBackupdStatusPortName, - _kCompletionDateXAttrKey, _kFSEventVolumeAboutToRename, _kFSEventVolumeAboutToUnmount, - _kFSEventVolumeMounted, _kFSEventVolumePropertyChanged, _kFSEventVolumeRenamed, - _kFSEventVolumeRepairStarted, _kFSEventVolumeUnmountFailed, - _kFSEventVolumeUnmounted, _kFSFileManagerVolumePropertyChanged, + _kCompletionDateXAttrKey, _kFSFileManagerVolumePropertyChanged, _kFSFileManagerVolumePropertyMonitor, _kFSIOMediaIconBundleIdentifier, _kFSIOMediaIconFamilyName, _kFSIsAirportVolume, _kFSIsBDVideo, _kFSIsDVDVideo, _kFSIsMobileTimeMachine, _kFSIsNetworkOpticalVolume, @@ -641,11 +682,11 @@ exports: _kFSVolumeIsBeingRepaired, _kFSVolumeIsBeingUnmounted, _kFSVolumePropertyKey, _kFSVolumeRefNumKey, _kSnapshotContainerXAttrKey, _kSnapshotStateXAttrKey, _kSnapshotVolumeFSEventStoreUUIDXAttrKey, _kSnapshotVolumeLastEventBackedUpXAttrKey, - _kSnapshotVolumeUUIDXAttrKey, _ldtox80, _lowMem, _num2dec, - _numtostring, _pi, _randomx, _relation, _relstring, _scAddReconnectProc, - _scCopyAllSessionInfo, _scCreateService, _scCreateServiceVersion, - _scCreateSystemService, _scCreateSystemServiceVersion, _scGetProcessOptions, - _scGetServerCheckinPort, _scGetServerOptions, _scPrefsForgetKey, - _scPrefsGetInteger, _scPrefsGetString, _scPrefsPostData, _scPrefsSetInteger, - _scPrefsSetString, _str2dec, _x80tod, _x80told ] + _kSnapshotVolumeUUIDXAttrKey, _num2dec, _numtostring, _pi, + _randomx, _relation, _relstring, _scAddReconnectProc, _scCopyAllSessionInfo, + _scCreateService, _scCreateServiceVersion, _scCreateSystemService, + _scCreateSystemServiceVersion, _scGetProcessOptions, _scGetServerCheckinPort, + _scGetServerOptions, _scPrefsForgetKey, _scPrefsGetInteger, + _scPrefsGetString, _scPrefsPostData, _scPrefsSetInteger, _scPrefsSetString, + _str2dec, _x80tod ] ... diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/AVLTree.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/AVLTree.h index 917c526b..e15843e3 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/AVLTree.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/AVLTree.h @@ -32,860 +32,6 @@ extern "C" { #pragma pack(push, 2) -/* - * AVLVisitStage - * - * Discussion: - * The visit stage for AVLWalk() walkProcs - */ -typedef UInt16 AVLVisitStage; -enum { - - /* - * Passed the first time AVLWalk iterates thru a given node. - */ - kAVLPreOrder = 0, - - /* - * Passed the AVLWalk iterates thru a given node when it is 'in - * order'. - */ - kAVLInOrder = 1, - - /* - * Passed the last time AVLWalk iterates thru a given node. - */ - kAVLPostOrder = 2 -}; - - -/* - * AVLOrder - * - * Discussion: - * The order the tree is walked or disposed of. - */ -typedef UInt16 AVLOrder; -enum { - - /* - * Walk the tree in left-to-right order ( smaller to bigger, usually ) - */ - kLeftToRight = 0, - - /* - * Walk the tree in right-to-left order ( bigger to smaller, usually ) - */ - kRightToLeft = 1 -}; - - -/* - * AVLNodeType - * - * Discussion: - * The type of the node being passed to a callback proc. - */ -typedef UInt16 AVLNodeType; -enum { - kAVLIsTree = 0, - kAVLIsLeftBranch = 1, - kAVLIsRightBranch = 2, - kAVLIsLeaf = 3, - kAVLNullNode = 4 -}; - -enum { - errItemAlreadyInTree = -960, - errNotValidTree = -961, - errItemNotFoundInTree = -962, - errCanNotInsertWhileWalkProcInProgress = -963, - errTreeIsLocked = -964 -}; - - -/* - * AVLTreeStruct - * - * Summary: - * An opaque structure for a balanced binary tree. - * - * Discussion: - * The structure of a tree. It's opaque; don't assume it's 36 bytes - * in size. - */ -struct AVLTreeStruct { - OSType signature; - unsigned long privateStuff[8]; -}; -typedef struct AVLTreeStruct AVLTreeStruct; -typedef AVLTreeStruct * AVLTreePtr; - -/* - * AVLCompareItemsProcPtr - * - * Summary: - * A callback function which compares two data items and returns - * their ordering. - * - * Discussion: - * Every tree must have a function which compares the data for two - * items and returns < 0, 0, or >0 for the items - < 0 if the first - * item is 'before' the second item according to some criteria, == 0 - * if the two items are identical according to the criteria, or > 0 - * if the first item is 'after' the second item according to the - * criteria. The comparison function is also passed the node type, - * but most of the time this can be ignored. - * - * Parameters: - * - * tree: - * The tree which contains the items being compared - * - * i1: - * A pointer to the first item - * - * i2: - * A pointer to the second item - * - * nd_typ: - * The type of the nodes being compared. This is not terribly - * useful most of the time. - * - * Result: - * A value < 0 if i1 is 'before' i2, > 0 if i1 is 'after' i2, or == - * 0 if i1 is equal to i2. - */ -typedef CALLBACK_API( SInt32 , AVLCompareItemsProcPtr )(AVLTreePtr tree, const void *i1, const void *i2, AVLNodeType nd_typ); - -/* - * AVLItemSizeProcPtr - * - * Summary: - * A callback function which returns the size of an item. - * - * Discussion: - * Every tree must have a itemSizeProc; this routine gets passed a - * pointer to the item's data and returns the size of the data. If - * a tree contains records of a fixed size, this function can just - * return sizeof( that-struct ); otherwise it should calculate the - * size of the item based on the data for the item. - * - * Parameters: - * - * tree: - * The tree which contains the item whose size is being requested. - * - * itemPtr: - * A pointer to the item whose size is being returned. - * - * Result: - * The size of the item. - */ -typedef CALLBACK_API( ByteCount , AVLItemSizeProcPtr )(AVLTreePtr tree, const void *itemPtr); - -/* - * AVLDisposeItemProcPtr - * - * Summary: - * Dispose of any additional memory associated with an item in the - * tree. - * - * Discussion: - * A tree may have an optional disposeItemProc, which gets called - * whenever an item is removed from the tree ( via AVLRemove() or - * when AVLDispose() deletes all of the items in the tree ). This - * might be useful if the nodes in the tree own 'resources' ( like, - * open files ) which should be released before the item is removed. - * - * Parameters: - * - * tree: - * The tree containing the item being disposed. - * - * dataP: - * A pointer to the data for the item being disposed. - */ -typedef CALLBACK_API( void , AVLDisposeItemProcPtr )(AVLTreePtr tree, const void *dataP); - -/* - * AVLWalkProcPtr - * - * Summary: - * A callback function which gets passed each item in the tree, in a - * specified order. - * - * Discussion: - * The common way to iterate across all of the items in a tree is - * via AVLWalk(), which takes a walkProcPtr. This function will get - * called for every item in the tree three times, as the tree is - * being walked across. First, the walkProc will get called with - * visitStage == kAVLPreOrder, at which point internally the node of - * the tree for the given data has just been reached. Later, this - * function will get called with visitStage == kAVLInOrder, and - * lastly this function will get called with visitStage == - * kAVLPostOrder. The 'minimum' item in the tree will get called - * with visitStage == kInOrder first, followed by the 'next' item in - * the tree, up until the last item in the tree structure is called. - * In general, you'll only care about calls to this function when - * visitStage == kAVLInOrder. - * - * Parameters: - * - * tree: - * The tree being walked. - * - * dataPtr: - * A pointer to the data for an item in the tree. - * - * visitStage: - * The stage of the walk for the given node. - * - * node: - * The type of the given node. This is not terribly useful most of - * the time. - * - * level: - * How 'deep' in the tree the given node is. This is not terribly - * useful most of the time. - * - * balance: - * How balanced the given node in the tree is. This is not - * terribly useful most of the time. - * - * refCon: - * The refCon passed into AVLWalk() for this call. - * - * Result: - * Return 0 to continue walking the tree, or 1 to terminate. - */ -typedef CALLBACK_API( OSErr , AVLWalkProcPtr )(AVLTreePtr tree, const void *dataPtr, AVLVisitStage visitStage, AVLNodeType node, UInt32 level, SInt32 balance, void *refCon); -typedef STACK_UPP_TYPE(AVLCompareItemsProcPtr) AVLCompareItemsUPP; -typedef STACK_UPP_TYPE(AVLItemSizeProcPtr) AVLItemSizeUPP; -typedef STACK_UPP_TYPE(AVLDisposeItemProcPtr) AVLDisposeItemUPP; -typedef STACK_UPP_TYPE(AVLWalkProcPtr) AVLWalkUPP; -/* - * NewAVLCompareItemsUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern AVLCompareItemsUPP -NewAVLCompareItemsUPP(AVLCompareItemsProcPtr userRoutine) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * NewAVLItemSizeUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern AVLItemSizeUPP -NewAVLItemSizeUPP(AVLItemSizeProcPtr userRoutine) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * NewAVLDisposeItemUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern AVLDisposeItemUPP -NewAVLDisposeItemUPP(AVLDisposeItemProcPtr userRoutine) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * NewAVLWalkUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern AVLWalkUPP -NewAVLWalkUPP(AVLWalkProcPtr userRoutine) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * DisposeAVLCompareItemsUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern void -DisposeAVLCompareItemsUPP(AVLCompareItemsUPP userUPP) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * DisposeAVLItemSizeUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern void -DisposeAVLItemSizeUPP(AVLItemSizeUPP userUPP) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * DisposeAVLDisposeItemUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern void -DisposeAVLDisposeItemUPP(AVLDisposeItemUPP userUPP) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * DisposeAVLWalkUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern void -DisposeAVLWalkUPP(AVLWalkUPP userUPP) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * InvokeAVLCompareItemsUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt32 -InvokeAVLCompareItemsUPP( - AVLTreePtr tree, - const void * i1, - const void * i2, - AVLNodeType nd_typ, - AVLCompareItemsUPP userUPP) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * InvokeAVLItemSizeUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern ByteCount -InvokeAVLItemSizeUPP( - AVLTreePtr tree, - const void * itemPtr, - AVLItemSizeUPP userUPP) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * InvokeAVLDisposeItemUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern void -InvokeAVLDisposeItemUPP( - AVLTreePtr tree, - const void * dataP, - AVLDisposeItemUPP userUPP) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -/* - * InvokeAVLWalkUPP() - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern OSErr -InvokeAVLWalkUPP( - AVLTreePtr tree, - const void * dataPtr, - AVLVisitStage visitStage, - AVLNodeType node, - UInt32 level, - SInt32 balance, - void * refCon, - AVLWalkUPP userUPP) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - -#if __MACH__ - #ifdef __cplusplus - inline AVLCompareItemsUPP NewAVLCompareItemsUPP(AVLCompareItemsProcPtr userRoutine) { return userRoutine; } - inline AVLItemSizeUPP NewAVLItemSizeUPP(AVLItemSizeProcPtr userRoutine) { return userRoutine; } - inline AVLDisposeItemUPP NewAVLDisposeItemUPP(AVLDisposeItemProcPtr userRoutine) { return userRoutine; } - inline AVLWalkUPP NewAVLWalkUPP(AVLWalkProcPtr userRoutine) { return userRoutine; } - inline void DisposeAVLCompareItemsUPP(AVLCompareItemsUPP) { } - inline void DisposeAVLItemSizeUPP(AVLItemSizeUPP) { } - inline void DisposeAVLDisposeItemUPP(AVLDisposeItemUPP) { } - inline void DisposeAVLWalkUPP(AVLWalkUPP) { } - inline SInt32 InvokeAVLCompareItemsUPP(AVLTreePtr tree, const void * i1, const void * i2, AVLNodeType nd_typ, AVLCompareItemsUPP userUPP) { return (*userUPP)(tree, i1, i2, nd_typ); } - inline ByteCount InvokeAVLItemSizeUPP(AVLTreePtr tree, const void * itemPtr, AVLItemSizeUPP userUPP) { return (*userUPP)(tree, itemPtr); } - inline void InvokeAVLDisposeItemUPP(AVLTreePtr tree, const void * dataP, AVLDisposeItemUPP userUPP) { (*userUPP)(tree, dataP); } - inline OSErr InvokeAVLWalkUPP(AVLTreePtr tree, const void * dataPtr, AVLVisitStage visitStage, AVLNodeType node, UInt32 level, SInt32 balance, void * refCon, AVLWalkUPP userUPP) { return (*userUPP)(tree, dataPtr, visitStage, node, level, balance, refCon); } - #else - #define NewAVLCompareItemsUPP(userRoutine) ((AVLCompareItemsUPP)userRoutine) - #define NewAVLItemSizeUPP(userRoutine) ((AVLItemSizeUPP)userRoutine) - #define NewAVLDisposeItemUPP(userRoutine) ((AVLDisposeItemUPP)userRoutine) - #define NewAVLWalkUPP(userRoutine) ((AVLWalkUPP)userRoutine) - #define DisposeAVLCompareItemsUPP(userUPP) - #define DisposeAVLItemSizeUPP(userUPP) - #define DisposeAVLDisposeItemUPP(userUPP) - #define DisposeAVLWalkUPP(userUPP) - #define InvokeAVLCompareItemsUPP(tree, i1, i2, nd_typ, userUPP) (*userUPP)(tree, i1, i2, nd_typ) - #define InvokeAVLItemSizeUPP(tree, itemPtr, userUPP) (*userUPP)(tree, itemPtr) - #define InvokeAVLDisposeItemUPP(tree, dataP, userUPP) (*userUPP)(tree, dataP) - #define InvokeAVLWalkUPP(tree, dataPtr, visitStage, node, level, balance, refCon, userUPP) (*userUPP)(tree, dataPtr, visitStage, node, level, balance, refCon) - #endif -#endif - -#if !__LP64__ -/* - * AVLInit() *** DEPRECATED *** - * - * Summary: - * Create an AVL ( balanced binary ) tree - * - * Discussion: - * Create an AVL tree. The compareItemsProc and the sizeItemProc - * are required; disposeItemProc is optional and can be nil. The - * refCon is stored with the list, and is passed back to the - * compareItemsProc, sizeItemProc, and disposeItemsProc calls. The - * allocation of the tree ( and all nodes later added to the list - * with AVLInsert ) will be created in what is the current zone at - * the time AVLInit() is called. Always call AVLDispose() to - * dispose of a list created with AVLInit(). - * - * Mac OS X threading: - * Thread safe - * - * Parameters: - * - * flags: - * Creation flags. Currently, no flags are defined, so pass 0. - * - * compareItemsProc: - * A UPP for a function which compares two data items, and returns - * a value which is < 0, == 0, or > 0 depending on whether the - * first item is 'before', 'equal', or 'after' the first item. - * - * sizeItemProc: - * A UPP for a function which takes a pointer to a data item, and - * returns the size in bytes which it requires to store. - * - * disposeItemProc: - * A UPP for a function which takes a pointer to a data item, and - * disposes of any memory which may have been allocated for the - * item. This does not need to dispose of the item itself ( the - * AVLTree Manager will do that ), only any memory which the item - * passed in may be pointing to. This function may be NULL if - * data items do not use any memory besides that taken up by the - * item itself. - * - * refCon: - * A 32 bit quantity which is stored with this tree, and can be - * retrieved at an time ( and in a callback, if desired ) with - * AVLGetRefcon(). - * - * tree: - * The created AVLTree, or NULL if there is an error. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5 - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: in InterfaceLib 9.0 and later - */ -extern OSErr -AVLInit( - UInt32 flags, - AVLCompareItemsUPP compareItemsProc, - AVLItemSizeUPP sizeItemProc, - AVLDisposeItemUPP disposeItemProc, - void * refCon, - AVLTreePtr * tree) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - - -/* - * AVLDispose() *** DEPRECATED *** - * - * Summary: - * Dispose of an AVL tree created with AVLInit() - * - * Discussion: - * Dispose of an AVL tree. This will dispose of each item in the - * tree in the order specified, call the tree's disposeProc proc for - * each item, and then dispose of the space allocated for the tree - * itself. - * - * Mac OS X threading: - * Thread safe - * AVLDispose is thread safe provided no other thread is still using - * the tree being dispose. - * - * Parameters: - * - * tree: - * The tree to dispose, which was created with AVLInit(). - * - * order: - * The order to dispose of the items in the tree. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5 - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: in InterfaceLib 9.0 and later - */ -extern OSErr -AVLDispose( - AVLTreePtr * tree, - AVLOrder order) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - - -/* - * AVLWalk() *** DEPRECATED *** - * - * Summary: - * Iterate across all of the items in an AVL tree, in a specified - * order. - * - * Discussion: - * Iterate across all of the items in the tree, in the order - * specified. kLeftToRight is basically lowest-to-highest order, - * kRightToLeft is highest-to-lowest order. For each node in the - * tree, it will call the walkProc with three messages ( at the - * appropriate time ). First, with kAVLPreOrder when the walking - * gets to this node in the tree, before handling either the left or - * right subtree, secondly, with kAVLInOrder after handling one - * subtree but before handling the other, and lastly with - * kAVLPostOrder after handling both subtrees. If you want to - * handle items in order, then only do something if the visit stage - * is kAVLInOrder. You can only call AVLRemove() from inside a - * walkProc if visit stage is kAVLPostOrder ( because if you remove - * a node during the pre or in order stages you will corrupt the - * list ) OR if you return a non-zero result from the walkProc call - * which called AVLRemove() to immediately terminate the walkProc. - * Do not call AVLInsert() to insert a node into the tree from - * inside a walkProc. The walkProc function gets called with the - * AVLTreePtr, a pointer to the data for the current node ( which - * you can change in place as long as you do not affect the order - * within the tree ), the visit stage, the type of the current node - * ( leaf node, right or left branch, or full tree ), the level - * within the tree ( the root is level 1 ), the balance for the - * current node, and the refCon passed to AVLWalk(). This refCon is - * different from the one passed into AVLInit(); use AVLGetRefCon() - * to get that refCon if you want it inside a walkProc. ( Most - * walkProcs will not care about the values for node type, level, or - * balance. ) - * - * Mac OS X threading: - * Thread safe - * AVLWalk is thread safe as long as no other thread tries to modify - * the tree by inserting or removing an item, or disposing of the - * tree itself. - * - * Parameters: - * - * tree: - * The tree to dispose, which was created with AVLInit(). - * - * walkProc: - * A UPP for a function which is called during the walk thru the - * tree for each item. - * - * order: - * The order to iterate thru the tree. - * - * walkRefCon: - * A 32 bit value passed to the walkProc each time it is called. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5 - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: in InterfaceLib 9.0 and later - */ -extern OSErr -AVLWalk( - AVLTreePtr tree, - AVLWalkUPP walkProc, - AVLOrder order, - void * walkRefCon) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - - -/* - * AVLCount() *** DEPRECATED *** - * - * Summary: - * Return the number of items in the given tree. - * - * Discussion: - * Return the number of items in the given tree. - * - * Mac OS X threading: - * Thread safe - * AVLCount is thread safe as long as no other thread tries to - * modify the tree by inserting or removing an item, or disposing of - * the tree itself. - * - * Parameters: - * - * tree: - * The tree to return the count of items for. - * - * count: - * On return, the count of items ( 1-based ) in the tree. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5 - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: in InterfaceLib 9.0 and later - */ -extern OSErr -AVLCount( - AVLTreePtr tree, - UInt32 * count) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - - -/* - * AVLGetIndItem() *** DEPRECATED *** - * - * Summary: - * Return the data of the index-th item from the tree. - * - * Discussion: - * Return the one-based index-th item from the tree by putting it's - * data at dataPtr if dataPtr is non-nil, and it's size into - * *itemSize if itemSize is non-nil. If index is out of range, - * return errItemNotFoundInTree. ( Internally, this does an - * AVLWalk(), so the tree can not be modified while this call is in - * progress ). - * - * Mac OS X threading: - * Thread safe - * AVLGetIndItem is thread safe as long as no other thread tries to - * modify the tree by inserting or removing an item, or disposing of - * the tree itself. - * - * Parameters: - * - * tree: - * The tree to return the index-th items for. - * - * index: - * A index of the item to return. The 'first' item in the tree is - * index = 1, the last item is index = the count of items in the - * tree. - * - * dataPtr: - * An address in memory to return the data for the item, or NULL - * if you don not want data returned. The memory point to must be - * large enough to hold all of the data for the item. - * - * itemSize: - * On return, the size of the data for the index-th item. If you - * do not care about the size of the data, pass NULL. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5 - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: in InterfaceLib 9.0 and later - */ -extern OSErr -AVLGetIndItem( - AVLTreePtr tree, - UInt32 index, - void * dataPtr, - ByteCount * itemSize) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - - -/* - * AVLInsert() *** DEPRECATED *** - * - * Summary: - * Insert an item into the tree. - * - * Discussion: - * Insert the given item into the tree. This will call the tree's - * sizeItemProc to determine how big the item at data is, and then - * will make a copy of the item and insert it into the tree in the - * appropriate place. If an item already exists in the tree with - * the same key ( so that the compareItemsUPP returns 0 when asked - * to compare this item to an existing one ), then it will return - * errItemNotFoundInTree. - * - * Mac OS X threading: - * Thread safe - * AVLInsert is thread safe as long as no other thread tries to walk - * or modify the tree by inserting or removing an item, or disposing - * of the tree itself. - * - * Parameters: - * - * tree: - * The tree to return the index-th items for. - * - * data: - * A pointer to the item to be inserted. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5 - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: in InterfaceLib 9.0 and later - */ -extern OSErr -AVLInsert( - AVLTreePtr tree, - const void * data) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - - -/* - * AVLRemove() *** DEPRECATED *** - * - * Summary: - * Remove an item from the tree. - * - * Discussion: - * Remove any item from the tree with the given key. If dataPtr != - * nil, then copy the item's data to dataPtr before removing it from - * the tree. Before removing the item, call the tree's - * disposeItemProc to let it release anything used by the data in - * the tree. It is not necessary to fill in a complete record for - * key, only that the compareItemsProc return 0 when asked to - * compare the data at key with the node in the tree to be deleted. - * If the item cannot be found in the tree, this will return - * errItemNotFoundInTree. - * - * Mac OS X threading: - * Thread safe - * AVLRemove is thread safe as long as no other thread tries to walk - * or modify the tree by inserting or removing an item, or disposing - * of the tree itself. - * - * Parameters: - * - * tree: - * The tree to return the index-th items for. - * - * key: - * A pointer to the item to be removed ( or, enough of the item - * that it can be found in the tree ). - * - * dataPtr: - * An address in memory to return the data for the item, or NULL - * if you don not want data returned. The memory point to must be - * large enough to hold all of the data for the item. - * - * itemSize: - * On return, the size of the data for the index-th item. If you - * do not care about the size of the data, pass NULL. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5 - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: in InterfaceLib 9.0 and later - */ -extern OSErr -AVLRemove( - AVLTreePtr tree, - const void * key, - void * dataPtr, - ByteCount * itemSize) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - - -/* - * AVLFind() *** DEPRECATED *** - * - * Summary: - * Remove an item from the tree. - * - * Discussion: - * Find the item in the tree with the given key, and return it's - * data in dataPtr ( if dataPtr != nil ), and it's size in *itemSize - * ( if itemSize != nil ). It is not necessary to fill in a - * complete record for key, only that the compareItemsProc return 0 - * when asked to compare the data at key with the node in the tree - * to be deleted. If the item cannot be found in the tree, this - * will return errItemNotFoundInTree. - * - * Mac OS X threading: - * Thread safe - * AVLRemove is thread safe as long as no other thread tries to walk - * or modify the tree by inserting or removing an item, or disposing - * of the tree itself. - * - * Parameters: - * - * tree: - * The tree to return the index-th items for. - * - * key: - * A pointer to the item to be found ( or, enough of the item that - * it can be found in the tree ). - * - * dataPtr: - * An address in memory to return the data for the item, or NULL - * if you don not want data returned. The memory point to must be - * large enough to hold all of the data for the item. - * - * itemSize: - * On return, the size of the data for the index-th item. If you - * do not care about the size of the data, pass NULL. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5 - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: in InterfaceLib 9.0 and later - */ -extern OSErr -AVLFind( - AVLTreePtr tree, - const void * key, - void * dataPtr, - ByteCount * itemSize) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - - -/* - * AVLGetRefcon() *** DEPRECATED *** - * - * Summary: - * Return the refCon set when the tree was created. - * - * Discussion: - * Get the refCon for the given tree ( set in AVLInit ) and return - * it. - * - * Mac OS X threading: - * Thread safe - * AVLGetRefcon is thread safe as long as no other thread tries to - * dispose of the tree itself. - * - * Parameters: - * - * tree: - * The tree to return the refcon for. - * - * refCon: - * On return, the refCon for the tree, or NULL if tree is invalid. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5 - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: in InterfaceLib 9.0 and later - */ -extern OSErr -AVLGetRefcon( - AVLTreePtr tree, - void ** refCon) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_NA, __IPHONE_NA); - - -#endif /* !__LP64__ */ - - #pragma pack(pop) #ifdef __cplusplus diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Debugging.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Debugging.h index bf31649a..044be3ca 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Debugging.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Debugging.h @@ -9,6 +9,8 @@ #ifndef __DEBUGGING__ #define __DEBUGGING__ +#include + #ifndef __MACTYPES__ #include #endif @@ -30,10 +32,6 @@ #pragma once #endif -#ifdef __cplusplus -extern "C" { -#endif - /* This file supplies standard debugging routines and macros to Carbon and Classic Mac OS programs. Other C programs which wish to use the @@ -217,6 +215,9 @@ extern "C" { * Include AssertMacros.h where all of the check, verify, and require macros are defined */ #include + +__BEGIN_DECLS + /* * The following check, verify, and require macros assert that TaskLevel is 0. */ @@ -286,7 +287,6 @@ extern "C" { #define DPRINTF(x) { } #endif - /* * kBlessedBusErrorBait is an address that will never be mapped by * Mac OS 8 or 9. It is close to the middle of the 64K range from 0x68F10000 @@ -729,130 +729,30 @@ typedef STACK_UPP_TYPE(DebugAssertOutputHandlerProcPtr) DebugAssertOutpu extern void InstallDebugAssertOutputHandler(DebugAssertOutputHandlerUPP handler) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA); - -/* - * dprintf() - * - * Summary: - * printf takes a variable argument list and 'prints' that to the - * debugging output handler. Calling dprintf() from anything but C - * or C++ is tricky. - * - * Parameters: - * - * format: - * The format string. - * - * ...: - * The arguments to the format string. - * - * Availability: - * Mac OS X: not available - * CarbonLib: not available - * Non-Carbon CFM: in DebugLib 1.1 and later - */ - - -/* - * vdprintf() - * - * Summary: - * vdprintf takes a va_args list and 'prints' that to the debugging - * output handler. - * - * Parameters: - * - * format: - * The format string. - * - * va_args_list: - * The va_args list. - * - * Availability: - * Mac OS X: not available - * CarbonLib: not available - * Non-Carbon CFM: in DebugLib 1.1 and later - */ - - -/* - * GetMacOSStatusErrorString() - * - * Summary: - * Returns a const char* string which corresponds to the textual - * constant for the given OSStatus code. - * - * Discussion: - * This function returns a text string which corresponds to the - * given OSStatus code, based on the errors in MacErrors.h. For - * example, GetMacOSStatusErrorString( -43 ) returns "fnfErr", which - * is the text representation for the error constant -43. This - * function is useful if you want to get or print out ( for - * debugging purposes only ) a useful description for a given - * OSStatus error. If no string is available for the given - * constant, then the empty string "" is returned. Some error values - * have multiple meanings; in those cases the multiple meanings are +/*! + * @abstract Returns a const char\* string which corresponds to the textual constant for the given OSStatus code. + * @discussion + * This function returns a text string which corresponds to the given OSStatus code, based on the errors in MacErrors.h. For example, GetMacOSStatusErrorString( -43 ) returns "fnfErr", which + * is the text representation for the error constant -43. This function is useful if you want to get or print out (for debugging purposes only) a useful description for a given + * OSStatus error. If no string is available for the given constant, then the empty string "" is returned. Some error values have multiple meanings; in those cases the multiple meanings are * all returned seperated by '/'es. - * - * Mac OS X threading: - * Thread safe - * - * Parameters: - * - * err: - * The OSStatus to return a text string for. - * - * Result: - * A const char* string corresponding to the given OSStatus - * - * Availability: - * Mac OS X: in version 10.4 and later in CoreServices.framework - * CarbonLib: not available - * Non-Carbon CFM: not available + * @param err the OSStatus to return a text string for + * @result a const char\* string corresponding to the given OSStatus */ extern const char * -GetMacOSStatusErrorString(OSStatus err) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_8, __IPHONE_NA, __IPHONE_NA); +GetMacOSStatusErrorString(OSStatus err) API_AVAILABLE(macos(10.4), macCatalyst(11.0) ) API_UNAVAILABLE(ios, tvos, watchos ); - -/* - * GetMacOSStatusCommentString() - * - * Summary: - * Returns a const char* string which corresponds to the descriptive - * string for the given OSStatus code. - * - * Discussion: - * This function returns a text string which corresponds to a - * comment for the given OSStatus code, based on the errors in - * MacErrors.h. For example, GetMacOSStatusConstantString( -43 ) - * returns "File not found", which is the text representation for - * the error constant -43. This function is useful if you want to - * get or print out ( for debugging purposes only ) a useful - * description for a given OSStatus error. If no string is - * available for the given constant, then the empty string "" is - * returned. If no string is available for the given constant, then - * the empty string "" is returned. Some error values have multiple - * meanings; in those cases the multiple meanings are all returned - * seperated by '/'es. - * - * Mac OS X threading: - * Thread safe - * - * Parameters: - * - * err: - * The OSStatus to return a text string for. - * - * Result: - * A const char* string corresponding to the given OSStatus - * - * Availability: - * Mac OS X: in version 10.4 and later in CoreServices.framework - * CarbonLib: not available - * Non-Carbon CFM: not available +/*! + * @abstract Returns a const char\* string which corresponds to the descriptive string for the given OSStatus code. + * @discussion This function returns a text string which corresponds to a comment for the given OSStatus code, based on the errors in MacErrors.h. For example, GetMacOSStatusConstantString( -43 ) + * returns "File not found", which is the text representation for the error constant -43. This function is useful if you want to get or print out ( for debugging purposes only ) a useful + * description for a given OSStatus error. If no string is available for the given constant, then the empty string "" is returned. If no string is available for the given constant, then + * the empty string "" is returned. Some error values have multiple meanings; in those cases the multiple meanings are all returned seperated by '/'es. + * @param err the OSStatus to return a text string for. + * @result a const char\* string corresponding to the given OSStatus */ extern const char * -GetMacOSStatusCommentString(OSStatus err) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_8, __IPHONE_NA, __IPHONE_NA); +GetMacOSStatusCommentString(OSStatus err) API_AVAILABLE(macos(10.4), macCatalyst(11.0) ) API_UNAVAILABLE(ios, tvos, watchos ) ; /* @@ -954,9 +854,7 @@ InvokeDebugAssertOutputHandlerUPP( #endif -#ifdef __cplusplus -} -#endif +__END_DECLS #endif /* __DEBUGGING__ */ diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Endian.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Endian.h index 3dccfffd..58fed98b 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Endian.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Endian.h @@ -10,6 +10,8 @@ #ifndef __ENDIAN__ #define __ENDIAN__ +#include + #ifndef __CONDITIONALMACROS__ #include #endif @@ -26,14 +28,12 @@ #pragma once #endif -#ifdef __cplusplus -extern "C" { -#endif - #ifdef __GNUC__ #include #endif - + +__BEGIN_DECLS + #pragma pack(push, 2) /* @@ -489,9 +489,7 @@ CoreEndianFlipData( #pragma pack(pop) -#ifdef __cplusplus -} -#endif +__END_DECLS #endif /* __ENDIAN__ */ diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Math64.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Math64.h index e42bb3ca..1b0d8010 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Math64.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Math64.h @@ -29,1301 +29,1238 @@ extern "C" { #endif +// If this compiler supports inline functions, then we define static inline versions of most of +// the functions in this header so that no actually calls into CarbonCore are generated for any call. +// If the compiler does not support inline functions, then we define the functions as externs but in most +// cases define a macro with the name of the function which performs the operation, again to avoid a +// function call. These macros are careful never to use a parameter multiple times, to avoid an issue +// where a parameter has a side effect. +#ifndef MATH64_USE_INLINE + #if defined(__cplusplus) || ( defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L ) + #define MATH64_USE_INLINE 1 + #endif +#endif -/* - * S64Max() - * - * Discussion: - * Returns largest possible SInt64 value - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64Max(void); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64Max(void) { return 9223372036854775807LL; } + /*! @brief Returns largest possible SInt64 value + * @result the largest SInt64 value */ + static inline SInt64 S64Max(void) { return 9223372036854775807LL; } #else + /*! @brief Returns largest possible SInt64 value + * @result the largest SInt64 value */ + extern SInt64 S64Max(void); #define S64Max() (9223372036854775807LL) #endif +#else +/*! @brief Returns largest possible SInt64 value + * @result the largest SInt64 value */ +extern SInt64 S64Max(void); #endif -/* - * S64Min() - * - * Discussion: - * Returns smallest possible SInt64 value - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64Min(void); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64Min(void) { return -S64Max() - 1; } + /*! @brief Returns smallest possible SInt64 value + @result the smallest SInt64 value */ + static inline SInt64 S64Min(void) { return -S64Max() - 1; } #else + /*! @brief Returns smallest possible SInt64 value + @result the smallest SInt64 value */ + extern SInt64 S64Min(void); #define S64Min() (-S64Max() - 1) #endif +#else +/*! @brief Returns smallest possible SInt64 value + @result the smallest SInt64 value */ +extern SInt64 S64Min(void); #endif -/* - * S64Add() - * - * Discussion: - * Adds two integers, producing an integer result. If an overflow - * occurs the result is congruent mod (2^64) as if the operands and - * result were unsigned. No overflow is signaled. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64Add( - SInt64 left, - SInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64Add(SInt64 left, SInt64 right) { return (SInt64)(left) + (SInt64)(right); } + /*! @brief Adds two integers, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the operands an result were unsigned. No overflow is signaled. + @result the result, with truncation, of adding left and right as SInt64 values + */ + static inline SInt64 S64Add(SInt64 left, SInt64 right) { return (SInt64)(left) + (SInt64)(right); } #else + /*! @brief Adds two integers, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the operands an result were unsigned. No overflow is signaled. + @result the result, with truncation, of adding left and right as SInt64 values + */ + extern SInt64 S64Add( SInt64 left, SInt64 right); #define S64Add(left, right) ((SInt64)(left) + (SInt64)(right)) #endif +#else +/*! @brief Adds two integers, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the operands an result were unsigned. No overflow is signaled. + @result the result, with truncation, of adding left and right as SInt64 values + */ +extern SInt64 S64Add( SInt64 left, SInt64 right); #endif -/* - * S64Subtract() - * - * Discussion: - * Subtracts two integers, producing an integer result. If an - * overflow occurs the result is congruent mod (2^64) as if the - * operands and result were unsigned. No overflow is signaled. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64Subtract( - SInt64 left, - SInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64Subtract(SInt64 left, SInt64 right) { return (SInt64)(left) - (SInt64)(right); } + /*! @brief Subtracts the second integer from the first integer, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the operands and result were unsigned. No overflow is signaled. + @param left a SInt64 value + @param right a SInt64 value + @result the result of subsracting the value right from the value left */ + static inline SInt64 S64Subtract(SInt64 left, SInt64 right) { return (SInt64)(left) - (SInt64)(right); } #else + /*! @brief Subtracts the second integer from the first integer, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the operands and result were unsigned. No overflow is signaled. + @param left a SInt64 value + @param right a SInt64 value + @result the result of subsracting the value right from the value left */ + extern SInt64 S64Subtract( SInt64 left, SInt64 right); #define S64Subtract(left, right) ((SInt64)(left) - (SInt64)(right)) #endif +#else +/*! @brief Subtracts the second integer from the first integer, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the operands and result were unsigned. No overflow is signaled. + @param left a SInt64 value + @param right a SInt64 value + @result the result of subsracting the value right from the value left */ +extern SInt64 S64Subtract( SInt64 left, SInt64 right); #endif -/* - * S64Negate() - * - * Discussion: - * Returns the additive inverse of a signed number (i.e. it returns - * 0 - the number). S64Negate (S64Min) is not representable (in - * fact, it returns S64Min). - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64Negate(SInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64Negate(SInt64 value) { return -(SInt64)(value); } + /*! @brief Returns the additive inverse of a signed number (i.e. it returns 0 - the number). S64Negate (S64Min) is not representable (in fact, it returns S64Min). + @param value the value to negate + @result the additive inverse of the given value */ + static inline SInt64 S64Negate(SInt64 value) { return -(SInt64)(value); } #else + /*! @brief Returns the additive inverse of a signed number (i.e. it returns 0 - the number). S64Negate (S64Min) is not representable (in fact, it returns S64Min). + @param the value to negate + @result the additive inverse of the given value */ + extern SInt64 S64Negate(SInt64 value); #define S64Negate(value) (-(SInt64)(value)) #endif +#else +/*! @brief Returns the additive inverse of a signed number (i.e. it returns 0 - the number). S64Negate (S64Min) is not representable (in fact, it returns S64Min). + @param the value to negate + @result the additive inverse of the given value */ +extern SInt64 S64Negate(SInt64 value); #endif #if !TYPE_LONGLONG -/* - * S64Absolute() - * - * Discussion: - * Returns the absolute value of the number (i.e. the number if it - * is positive, or 0 - the number if it is negative). Disabled for - * compilers that support long long until llabs() is available - * everywhere. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64Absolute(SInt64 value); -#if TYPE_LONGLONG + #if MATH64_USE_INLINE - inline SInt64 S64Absolute(SInt64 value) { return llabs((SInt64)value); } + /*! @brief Returns the absolute value of the number (i.e. the number if it is positive, or 0 - the number if it is negative). + @param value a SInt64 value + @result the absolute value of value */ + static inline SInt64 S64Absolute(SInt64 value) { return llabs((SInt64)value); } #else + /*! @brief Returns the absolute value of the number (i.e. the number if it is positive, or 0 - the number if it is negative). + @param value a SInt64 value + @result the absolute value of value */ + extern SInt64 S64Absolute(SInt64 value); #define S64Absolute(value) (llabs((SInt64)value)) #endif +#else +/*! @brief Returns the absolute value of the number (i.e. the number if it is positive, or 0 - the number if it is negative). + @param value a SInt64 value + @result the absolute value of value */ +extern SInt64 S64Absolute(SInt64 value); #endif - -#endif /* !TYPE_LONGLONG */ - -/* - * S64Multiply() - * - * Discussion: - * Multiplies two signed numbers, producing a signed result. - * Overflow is ignored and the low-order part of the product is - * returned. The sign of the result is not guaranteed to be correct - * if the magnitude of the product is not representable. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64Multiply( - SInt64 left, - SInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64Multiply(SInt64 left, SInt64 right) { return (SInt64)(left) * (SInt64)(right); } + /*! @brief Multiplies two signed numbers, producing a signed result. Overflow is ignored and the low-order part of the product is + returned. The sign of the result is not guaranteed to be correct if the magnitude of the product is not representable. + @param left a SInt64 value + @param right a SInt64 value + @result The result of multiplying left by right, truncated to a SInt64 value */ + static inline SInt64 S64Multiply(SInt64 left, SInt64 right) { return (SInt64)(left) * (SInt64)(right); } #else + /*! @brief Multiplies two signed numbers, producing a signed result. Overflow is ignored and the low-order part of the product is + returned. The sign of the result is not guaranteed to be correct if the magnitude of the product is not representable. + @param left a SInt64 value + @param right a SInt64 value + @result The result of multiplying left by right, truncated to a SInt64 value */ + extern SInt64 S64Multiply( SInt64 left, SInt64 right); #define S64Multiply(left, right) ((SInt64)(left) * (SInt64)(right)) #endif +#else +/*! @brief Multiplies two signed numbers, producing a signed result. Overflow is ignored and the low-order part of the product is + returned. The sign of the result is not guaranteed to be correct if the magnitude of the product is not representable. + @param left a SInt64 value + @param right a SInt64 value + @result The result of multiplying left by right, truncated to a SInt64 value */ +extern SInt64 S64Multiply( SInt64 left, SInt64 right); #endif - - -/* - * S64Mod() - * - * Discussion: - * Returns the remainder of divide of dividend by divisor. The sign - * of the remainder is the same as the sign of the dividend (i.e., - * it takes the absolute values of the operands, does the division, - * then fixes the sign of the quotient and remainder). - * - * Availability: - * Implemented by client - */ -extern SInt64 -S64Mod( - SInt64 dividend, - SInt64 divisor); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64Mod(SInt64 dividend, SInt64 divisor) { return (SInt64)(dividend) % (SInt64)(divisor); } + /*! @brief Returns the remainder of divide of dividend by divisor. The sign of the remainder is the same as the sign of the dividend (i.e., + it takes the absolute values of the operands, does the division, then fixes the sign of the quotient and remainder). + @param dividend a SInt64 value + @param divisor a SInt64 value + @result the integer remainder after dividing dividend by divisor */ + static inline SInt64 S64Mod(SInt64 dividend, SInt64 divisor) { return (SInt64)(dividend) % (SInt64)(divisor); } #else +/*! @brief Returns the remainder of divide of dividend by divisor. The sign of the remainder is the same as the sign of the dividend (i.e., + it takes the absolute values of the operands, does the division, then fixes the sign of the quotient and remainder). + @param dividend a SInt64 value + @param divisor a SInt64 value + @result the integer remainder after dividing dividend by divisor */ + extern SInt64 S64Mod( SInt64 dividend, SInt64 divisor); #define S64Mod(dividend, divisor) ((SInt64)(dividend) % (SInt64)(divisor)) #endif +#else +/*! @brief Returns the remainder of divide of dividend by divisor. The sign of the remainder is the same as the sign of the dividend (i.e., + it takes the absolute values of the operands, does the division, then fixes the sign of the quotient and remainder). + @param dividend a SInt64 value + @param divisor a SInt64 value + @result the integer remainder after dividing dividend by divisor */ +extern SInt64 S64Mod( SInt64 dividend, SInt64 divisor); #endif - - - -/* - * S64Divide() - * - * Discussion: - * Divides dividend by divisor, returning the quotient. The - * remainder is returned in *remainder if remainder (the pointer) is - * non-NULL. The sign of the remainder is the same as the sign of - * the dividend (i.e. it takes the absolute values of the operands, - * does the division, then fixes the sign of the quotient and - * remainder). If the divisor is zero, then S64Max() will be - * returned (or S64Min() if the dividend is negative), and the - * remainder will be the dividend; no error is reported. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64Divide( - SInt64 dividend, - SInt64 divisor, - SInt64 * remainder); /* can be NULL */ #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64Divide(SInt64 dividend, SInt64 divisor, SInt64 *remainder) { return ( (void)((remainder) && (*((SInt64*)(remainder)) = ((SInt64)(dividend) % (SInt64)(divisor)))), ((SInt64)(dividend) / (SInt64)(divisor)) ); } +/*! @brief Divides dividend by divisor, returning the quotient. The remainder is returned in remainder if remainder (the pointer) is + non-NULL. The sign of the remainder is the same as the sign of the dividend (i.e. it takes the absolute values of the operands, + does the division, then fixes the sign of the quotient and remainder). If the divisor is zero, then S64Max() will be + returned (or S64Min() if the dividend is negative), and the remainder will be the dividend; no error is reported. + @param dividend a SInt64 value + @param divisor a SInt64 value + @param remainderP on return, if non-NULL, the integer remainder after dividing dividend by divisor + @result the integer result of dividing dividend by divisor */ + static inline SInt64 S64Divide(SInt64 dividend, SInt64 divisor, SInt64 *remainderP) { return ( (void)((remainderP) && (*((SInt64*)(remainderP)) = ((SInt64)(dividend) % (SInt64)(divisor)))), ((SInt64)(dividend) / (SInt64)(divisor)) ); } #else + /*! @brief Divides dividend by divisor, returning the quotient. The remainder is returned in remainder if remainder (the pointer) is + non-NULL. The sign of the remainder is the same as the sign of the dividend (i.e. it takes the absolute values of the operands, + does the division, then fixes the sign of the quotient and remainder). If the divisor is zero, then S64Max() will be + returned (or S64Min() if the dividend is negative), and the remainder will be the dividend; no error is reported. + @param dividend a SInt64 value + @param divisor a SInt64 value + @param remainderP on return, the integer remainder after dividing dividend by divisor + @result the integer result of dividing dividend by divisor */ + extern SInt64 S64Divide( SInt64 dividend, SInt64 divisor, SInt64 * remainderP); #define S64Divide(dividend, divisor, remainder) (( (void)((remainder) && (*((SInt64*)(remainder)) = ((SInt64)(dividend) % (SInt64)(divisor)))), ((SInt64)(dividend) / (SInt64)(divisor)) )) #endif +#else +/*! @brief Divides dividend by divisor, returning the quotient. The remainder is returned in remainder if remainder (the pointer) is + non-NULL. The sign of the remainder is the same as the sign of the dividend (i.e. it takes the absolute values of the operands, + does the division, then fixes the sign of the quotient and remainder). If the divisor is zero, then S64Max() will be + returned (or S64Min() if the dividend is negative), and the remainder will be the dividend; no error is reported. + @param dividend a SInt64 value + @param divisor a SInt64 value + @param remainderP on return, the integer remainder after dividing dividend by divisor + @result the integer result of dividing dividend by divisor */ +extern SInt64 S64Divide( SInt64 dividend, SInt64 divisor, SInt64 * remainderP); #endif - - -/* - * S64Div() - * - * Discussion: - * Divides dividend by divisor, returning the quotient. - * - * Availability: - * Implemented by client - */ -extern SInt64 -S64Div( - SInt64 dividend, - SInt64 divisor); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64Div(SInt64 dividend, SInt64 divisor) { return S64Divide((dividend), (divisor), NULL); } + /*! @brief Divides dividend by divisor, returning the quotient. + @param dividend a SInt64 value + @param divisor a SInt64 value + @result the integer result of dividing dividend by divisor */ + static inline SInt64 S64Div(SInt64 dividend, SInt64 divisor) { return S64Divide((dividend), (divisor), NULL); } #else + /*! @brief Divides dividend by divisor, returning the quotient. + @param dividend a SInt64 value + @param divisor a SInt64 value + @result the integer result of dividing dividend by divisor */ + extern SInt64 S64Div( SInt64 dividend, SInt64 divisor); #define S64Div(dividend, divisor) (S64Divide((dividend), (divisor), NULL)) #endif +#else +/*! @brief Divides dividend by divisor, returning the quotient. + @param dividend a SInt64 value + @param divisor a SInt64 value + @result the integer result of dividing dividend by divisor */ +extern SInt64 S64Div( SInt64 dividend, SInt64 divisor); #endif -/* - * S64Set() - * - * Discussion: - * Given an SInt32, returns an SInt64 with the same value. Use this - * routine instead of coding 64-bit constants (at least when the - * constant will fit in an SInt32). - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64Set(SInt32 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64Set(SInt32 value) { return (SInt64)(value); } + /*! @brief Given an SInt32, returns an SInt64 with the same value. Use this routine instead of coding 64-bit constants (at least when the + constant will fit in an SInt32). + @param value a SInt32 value + @result the SInt64 equivalent of value */ + static inline SInt64 S64Set(SInt32 value) { return (SInt64)(value); } #else +/*! @brief Given an SInt32, returns an SInt64 with the same value. Use this routine instead of coding 64-bit constants (at least when the + constant will fit in an SInt32). + @param value a SInt32 value + @result the SInt64 equivalent of value */ + extern SInt64 S64Set(SInt32 value); #define S64Set(value) ((SInt64)(value)) #endif +#else +/*! @brief Given an SInt32, returns an SInt64 with the same value. Use this routine instead of coding 64-bit constants (at least when the + constant will fit in an SInt32). + @param value a SInt32 value + @result the SInt64 equivalent of value */ +extern SInt64 S64Set(SInt32 value); #endif - - -/* - * S64SetU() - * - * Discussion: - * Given a UInt32, returns a SInt64 with the same value. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64SetU(UInt32 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64SetU(UInt32 value) { return (SInt64)(value); } +/*! @brief Given a UInt32, returns a SInt64 with the same value. + @param value A UInt32 value + @result the SInt64 equivalent of value */ + static inline SInt64 S64SetU(UInt32 value) { return (SInt64)(value); } #else +/*! @brief Given a UInt32, returns a SInt64 with the same value. + @param value A UInt32 value + @result the SInt64 equivalent of value */ + extern SInt64 S64SetU(UInt32 value); #define S64SetU(value) ((SInt64)(value)) #endif +#else +/*! @brief Given a UInt32, returns a SInt64 with the same value. + @param value A UInt32 value + @result the SInt64 equivalent of value */ +extern SInt64 S64SetU(UInt32 value); #endif -/* - * S32Set() - * - * Discussion: - * Given an SInt64, returns an SInt32 by discarding the high-order - * 32 bits. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt32 -S32Set(SInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt32 S32Set(SInt64 value) { return (SInt32)(value); } + /*! @brief Given an SInt64, returns an SInt32 by discarding the high-order 32 bits. + @param value A SInt64 value + @result return the lowest 32 bits of value as a SInt32 */ + static inline SInt32 S32Set(SInt64 value) { return (SInt32)(value); } #else + /*! @brief Given an SInt64, returns an SInt32 by discarding the high-order 32 bits. + @param value A SInt64 value + @result return the lowest 32 bits of value as a SInt32 */ + extern SInt32 S32Set(SInt64 value); #define S32Set(value) ((SInt32)(value)) #endif +#else +/*! @brief Given an SInt64, returns an SInt32 by discarding the high-order 32 bits. + @param value A SInt64 value + @result return the lowest 32 bits of value as a SInt32 */ +extern SInt32 S32Set(SInt64 value); #endif - - -/* - * S64And() - * - * Discussion: - * Returns one if left and right are non-zero, otherwise returns zero - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern Boolean -S64And( - SInt64 left, - SInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline Boolean S64And(SInt64 left, SInt64 right) { return (SInt64)(left) && (SInt64)(right); } + /*! @brief Returns one if left and right are non-zero, otherwise returns zero + @param left a SInt64 value + @param right a SInt64 value + @result return the value 1 if both left and right are non-zero, and 0 if not */ + static inline Boolean S64And(SInt64 left, SInt64 right) { return ((SInt64)(left) && (SInt64)(right)) ? 1 : 0 ; } #else + /*! @brief Returns one if left and right are non-zero, otherwise returns zero + @param left a SInt64 value + @param right a SInt64 value + @result return the value 1 if both left and right are non-zero, and 0 if not */ + extern Boolean S64And( SInt64 left, SInt64 right); #define S64And(left, right) ((SInt64)(left) && (SInt64)(right)) #endif +#else +/*! @brief Returns one if left and right are non-zero, otherwise returns zero + @param left a SInt64 value + @param right a SInt64 value + @result return the value 1 if both left and right are non-zero, and 0 if not */ +extern Boolean S64And( SInt64 left, SInt64 right); #endif - - -/* - * S64Or() - * - * Discussion: - * Returns one if left or right are non-zero, otherwise returns zero - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern Boolean -S64Or( - SInt64 left, - SInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline Boolean S64Or(SInt64 left, SInt64 right) { return (SInt64)(left) || (SInt64)(right); } + /*! @brief Returns one if left or right are non-zero, otherwise returns zero + @param left a SInt64 value + @param right a SInt64 value + @result return the value 1 if either left is non-zero or right is non-zero and 0 if not */ + static inline Boolean S64Or(SInt64 left, SInt64 right) { return ((SInt64)(left) || (SInt64)(right)) ? 1 : 0; } #else +/*! @brief Returns one if left or right are non-zero, otherwise returns zero + @param left a SInt64 value + @param right a SInt64 value + @result return the value 1 if either left is non-zero or right is non-zero and 0 if not */ + extern Boolean S64Or( SInt64 left, SInt64 right); #define S64Or(left, right) ((SInt64)(left) || (SInt64)(right)) #endif +#else +/*! @brief Returns one if left or right are non-zero, otherwise returns zero + @param left a SInt64 value + @param right a SInt64 value + @result return the value 1 if either left is non-zero or right is non-zero and 0 if not */ +extern Boolean S64Or( SInt64 left, SInt64 right); #endif - - -/* - * S64Eor() - * - * Discussion: - * Returns one if left xor right are non-zero, otherwise returns zero - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern Boolean -S64Eor( - SInt64 left, - SInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline Boolean S64Eor(SInt64 left, SInt64 right) { return (Boolean)(((SInt64)(left) ? 1 : 0) ^ ((SInt64)(right) ? 1 : 0)); } + /*! @brief Returns one if left xor right are non-zero, otherwise returns zero + @param left a SInt64 value + @param right a SInt64 value + @result return the value 1 if left EOR right is non-zero, 0 otherwise */ + static inline Boolean S64Eor(SInt64 left, SInt64 right) { return (Boolean)(((SInt64)(left) ? 1 : 0) ^ ((SInt64)(right) ? 1 : 0)); } #else + /*! @brief Returns one if left xor right are non-zero, otherwise returns zero + @param left a SInt64 value + @param right a SInt64 value + @result return the value 1 if left EOR right is non-zero, 0 otherwise */ + extern Boolean S64Eor( SInt64 left, SInt64 right); #define S64Eor(left, right) ((Boolean)(((SInt64)(left) ? 1 : 0) ^ ((SInt64)(right) ? 1 : 0))) #endif +#else +/*! @brief Returns one if left xor right are non-zero, otherwise returns zero + @param left a SInt64 value + @param right a SInt64 value + @result return the value 1 if left EOR right is non-zero, 0 otherwise */ +extern Boolean S64Eor( SInt64 left, SInt64 right); #endif - - -/* - * S64Not() - * - * Discussion: - * Returns one if value is non-zero, otherwisze returns zero. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern Boolean -S64Not(SInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline Boolean S64Not(SInt64 value) { return !((SInt64)(value)); } + /*! @brief Returns one if value is non-zero, otherwise returns zero. + @param value a SInt64 value + @result return 1 if value is non-zero, 0 if it is zero */ + static inline Boolean S64Not(SInt64 value) { return !((SInt64)(value)); } #else + /*! @brief Returns one if value is non-zero, otherwise returns zero. + @param value a SInt64 value + @result return 1 if value is non-zero, 0 if it is zero */ + extern Boolean S64Not(SInt64 value); #define S64Not(value) (!((SInt64)(value))) #endif +#else +/*! @brief Returns one if value is non-zero, otherwise returns zero. + @param value a SInt64 value + @result return 1 if value is non-zero, 0 if it is zero */ +extern Boolean S64Not(SInt64 value); #endif -/* - * S64Compare() - * - * Discussion: - * Given two signed numbers, left and right, returns an SInt32 that - * compares with zero the same way left compares with right. If you - * wanted to perform a comparison on 64-bit integers of the - * form: - * operand_1 operand_2 - * then you could use an expression of the form: - * xxxS64Compare(operand_1,operand_2) 0 - * to test for the same condition. CAUTION: DO NOT depend on the - * exact value returned by this routine. Only the sign (i.e. - * positive, zero, or negative) of the result is guaranteed. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: not available - */ -extern SInt32 -S64Compare( - SInt64 left, - SInt64 right) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA); - +#if TYPE_LONGLONG + #if MATH64_USE_INLINE +/*! @brief Given two signed numbers, left and right, returns an SInt32 that compares with zero the same way left compares with right. If you + wanted to perform a comparison on 64-bit integers of the form: + left OPERATION right + then you could use an expression of the form: + S64Compare( left,right ) OPERATION 0 + to test for the same condition. CAUTION: DO NOT depend on the exact value returned by this routine. Only the sign (i.e. + positive, zero, or negative) of the result is guaranteed. + @param left a SInt64 value + @param right a SInt64 value + @result if left is less than right, a negative value; if left is equal to right, then 0, if left is greater than right, a positive value */ + static inline SInt32 S64Compare( SInt64 left, SInt64 right) { if (left < right) { return -1; } else if (left > right) { return 1; } else { return 0; } }; + #else +/*! @brief Given two signed numbers, left and right, returns an SInt32 that compares with zero the same way left compares with right. If you + wanted to perform a comparison on 64-bit integers of the form: + left OPERATION right + then you could use an expression of the form: + S64Compare( left,right ) OPERATION 0 + to test for the same condition. CAUTION: DO NOT depend on the exact value returned by this routine. Only the sign (i.e. + positive, zero, or negative) of the result is guaranteed. + @param left a SInt64 value + @param right a SInt64 value + @result if left is less than right, a negative value; if left is equal to right, then 0, if left is greater than right, a positive value */ + extern SInt32 S64Compare( SInt64 left, SInt64 right); + #endif +#else +/*! @brief Given two signed numbers, left and right, returns an SInt32 that compares with zero the same way left compares with right. If you + wanted to perform a comparison on 64-bit integers of the form: + left OPERATION right + then you could use an expression of the form: + S64Compare( left,right ) OPERATION 0 + to test for the same condition. CAUTION: DO NOT depend on the exact value returned by this routine. Only the sign (i.e. + positive, zero, or negative) of the result is guaranteed. + @param left a SInt64 value + @param right a SInt64 value + @result if left is less than right, a negative value; if left is equal to right, then 0, if left is greater than right, a positive value */ +SInt32 S64Compare( SInt64 left, SInt64 right); +#endif -/* - * S64BitwiseAnd() - * - * Discussion: - * bitwise AND - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64BitwiseAnd( - SInt64 left, - SInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64BitwiseAnd(SInt64 left, SInt64 right) { return (SInt64)(left) & (SInt64)(right); } +/*! @brief Given two signed numbers, return the bitwise AND of the two values + @param left a SInt64 value + @param right a SInt64 value + @result the SInt64 result of a bitwise AND of left and right, treating both values as 64 bit unsigned values */ + static inline SInt64 S64BitwiseAnd(SInt64 left, SInt64 right) { return (SInt64)(left) & (SInt64)(right); } #else +/*! @brief Given two signed numbers, return the bitwise AND of the two values + @param left a SInt64 value + @param right a SInt64 value + @result the SInt64 result of a bitwise AND of left and right, treating both values as 64 bit unsigned values */ + extern SInt64 S64BitwiseAnd( SInt64 left, SInt64 right); #define S64BitwiseAnd(left, right) ((SInt64)(left) & (SInt64)(right)) #endif +#else +/*! @brief Given two signed numbers, return the bitwise AND of the two values + @param left a SInt64 value + @param right a SInt64 value + @result the SInt64 result of a bitwise AND of left and right, treating both values as 64 bit unsigned values */ +extern SInt64 S64BitwiseAnd( SInt64 left, SInt64 right); #endif - - -/* - * S64BitwiseOr() - * - * Discussion: - * bitwise OR - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64BitwiseOr( - SInt64 left, - SInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64BitwiseOr(SInt64 left, SInt64 right) { return (SInt64)(left) | (SInt64)(right); } +/*! @brief Given two signed numbers, return the bitwise OR of the two values + @param left a SInt64 value + @param right a SInt64 value + @result the SInt64 result of a bitwise OR of left and right, treating both values as 64 bit unsigned values */ + static inline SInt64 S64BitwiseOr(SInt64 left, SInt64 right) { return (SInt64)(left) | (SInt64)(right); } #else +/*! @brief Given two signed numbers, return the bitwise OR of the two values + @param left a SInt64 value + @param right a SInt64 value + @result the SInt64 result of a bitwise OR of left and right, treating both values as 64 bit unsigned values */ + extern SInt64 S64BitwiseOr( SInt64 left, SInt64 right); #define S64BitwiseOr(left, right) ((SInt64)(left) | (SInt64)(right)) #endif +#else +/*! @brief Given two signed numbers, return the bitwise OR of the two values + @param left a SInt64 value + @param right a SInt64 value + @result the SInt64 result of a bitwise OR of left and right, treating both values as 64 bit unsigned values */ +extern SInt64 S64BitwiseOr( SInt64 left, SInt64 right); #endif - - -/* - * S64BitwiseEor() - * - * Discussion: - * bitwise XOR - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64BitwiseEor( - SInt64 left, - SInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64BitwiseEor(SInt64 left, SInt64 right) { return (SInt64)(left) ^ (SInt64)(right); } +/*! @brief Given two signed numbers, return the bitwise XOR of the two values + @param left a SInt64 value + @param right a SInt64 value + @result the SInt64 result of a bitwise XOR of left and right, treating both values as 64 bit unsigned values */ + static inline SInt64 S64BitwiseEor(SInt64 left, SInt64 right) { return (SInt64)(left) ^ (SInt64)(right); } #else +/*! @brief Given two signed numbers, return the bitwise XOR of the two values + @param left a SInt64 value + @param right a SInt64 value + @result the SInt64 result of a bitwise XOR of left and right, treating both values as 64 bit unsigned values */ + extern SInt64 S64BitwiseEor( SInt64 left, SInt64 right); #define S64BitwiseEor(left, right) ((SInt64)(left) ^ (SInt64)(right)) #endif +#else +/*! @brief Given two signed numbers, return the bitwise XOR of the two values + @param left a SInt64 value + @param right a SInt64 value + @result the SInt64 result of a bitwise XOR of left and right, treating both values as 64 bit unsigned values */ +extern SInt64 S64BitwiseEor( SInt64 left, SInt64 right); #endif - - -/* - * S64BitwiseNot() - * - * Discussion: - * bitwise negate - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64BitwiseNot(SInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64BitwiseNot(SInt64 value) { return ~((SInt64)(value)); } +/*! @brief Given a SInt64 value, return the bitwise negation of value + @param value a SInt64 value + @result the bitwise negation of value */ + static inline SInt64 S64BitwiseNot(SInt64 value) { return ~((SInt64)(value)); } #else +/*! @brief Given a SInt64 value, return the bitwise negation of value + @param value a SInt64 value + @result the bitwise negation of value */ + extern SInt64 S64BitwiseNot(SInt64 value); #define S64BitwiseNot(value) (~((SInt64)(value))) #endif +#else +/*! @brief Given a SInt64 value, return the bitwise negation of value + @param value a SInt64 value + @result the bitwise negation of value */ +extern SInt64 S64BitwiseNot(SInt64 value); #endif - - -/* - * S64ShiftRight() - * - * Discussion: - * Arithmetic shift of value by the lower 7 bits of the shift. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64ShiftRight( - SInt64 value, - UInt32 shift); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64ShiftRight(SInt64 value, UInt32 shift) { return (SInt64)(value) >> ((shift) & 0x7F); } +/*! @brief Given a SInt64 value, return the arithmetic shift right of value by the lower 7 bits of the shift. + @param value a SInt64 value + @param shift an unsigned amount to shift value by + @result the result of shifting value right by shift bits */ + static inline SInt64 S64ShiftRight(SInt64 value, UInt32 shift) { return (SInt64)(value) >> ((shift) & 0x7F); } #else +/*! @brief Given a SInt64 value, return the arithmetic shift right of value by the lower 7 bits of the shift. + @param value a SInt64 value + @param shift an unsigned amount to shift value by + @result the result of shifting value right by shift bits */ + extern SInt64 S64ShiftRight( SInt64 value, UInt32 shift); #define S64ShiftRight(value, shift) ((SInt64)(value) >> ((shift) & 0x7F)) #endif +#else +/*! @brief Given a SInt64 value, return the arithmetic shift right of value by the lower 7 bits of the shift. + @param value a SInt64 value + @param shift an unsigned amount to shift value by + @result the result of shifting value right by shift bits */ +extern SInt64 S64ShiftRight( SInt64 value, UInt32 shift); #endif -/* - * S64ShiftLeft() - * - * Discussion: - * Logical shift of value by the lower 7 bits of the shift. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -S64ShiftLeft( - SInt64 value, - UInt32 shift); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 S64ShiftLeft(SInt64 value, UInt32 shift) { return (SInt64)(value) << ((shift) & 0x7F); } +/*! @brief Given a SInt64 value, return the arithmetic shift left of value by the lower 7 bits of the shift. + @param value a SInt64 value + @param shift an unsigned amount to shift value by + @result the result of shifting value left by shift bits */ + static inline SInt64 S64ShiftLeft(SInt64 value, UInt32 shift) { return (SInt64)(value) << ((shift) & 0x7F); } #else +/*! @brief Given a SInt64 value, return the arithmetic shift left of value by the lower 7 bits of the shift. + @param value a SInt64 value + @param shift an unsigned amount to shift value by + @result the result of shifting value left by shift bits */ + extern SInt64 S64ShiftLeft( SInt64 value, UInt32 shift); #define S64ShiftLeft(value, shift) ((SInt64)(value) << ((shift) & 0x7F)) #endif +#else +/*! @brief Given a SInt64 value, return the arithmetic shift left of value by the lower 7 bits of the shift. + @param value a SInt64 value + @param shift an unsigned amount to shift value by + @result the result of shifting value left by shift bits */ +extern SInt64 S64ShiftLeft( SInt64 value, UInt32 shift); #endif - - #if !TYPE_LONGDOUBLE_IS_DOUBLE -/* - * SInt64ToLongDouble() - * - * Discussion: - * Converts SInt64 to long double. Note all SInt64s fit exactly - * into long doubles, thus, the binary -> decimal conversion - * routines in fp.h can be used to achieve SInt64 -> long double -> - * decimal conversions. Note: The function implementation assumes - * long double is a 128-bit floating point on PowerPC and 80-bit - * type on 68K - * - * Availability: - * Mac OS X: not available - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern long double -SInt64ToLongDouble(SInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline long double SInt64ToLongDouble(SInt64 value) { return (long double)(value); } +/*! @brief Converts SInt64 to long double. Note all SInt64s fit exactly into long doubles, thus, the binary -> decimal conversion + routines in fp.h can be used to achieve SInt64 -> long double -> decimal conversions. + @param value a SInt64 value + @result a double equivalent of value */ + static inline long double SInt64ToLongDouble(SInt64 value) { return (long double)(value); } #else +/*! @brief Converts SInt64 to long double. Note all SInt64s fit exactly into long doubles, thus, the binary -> decimal conversion + routines in fp.h can be used to achieve SInt64 -> long double -> decimal conversions. + @param value a SInt64 value + @result a double equivalent of value */ + extern long double SInt64ToLongDouble(SInt64 value); #define SInt64ToLongDouble(value) ((long double)(value)) #endif +#else +/*! @brief Converts SInt64 to long double. Note all SInt64s fit exactly into long doubles, thus, the binary -> decimal conversion + routines in fp.h can be used to achieve SInt64 -> long double -> decimal conversions. + @param value a SInt64 value + @result a double equivalent of value */ +extern long double SInt64ToLongDouble(SInt64 value); #endif - -/* - * LongDoubleToSInt64() - * - * Discussion: - * Converts a long double to a SInt64. Any decimal string that fits - * into a SInt64 can be converted exactly into a long double, using - * the conversion routines found in fp.h. Then this routine can be - * used to complete the conversion to SInt64. Note: The function - * implementation assumes long double is a 128-bit floating point on - * PowerPC and 80-bit type on 68K - * - * Availability: - * Mac OS X: not available - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -LongDoubleToSInt64(long double value); #if TYPE_LONGLONG #if MATH64_USE_INLINE +/*! @brief Converts a long double to a SInt64. Any decimal string that fits into a SInt64 can be converted exactly into a long double, using + the conversion routines found in fp.h. Then this routine can be used to complete the conversion to SInt64. + @param value a long double value + @result the closest SInt64 value to value */ inline SInt64 LongDoubleToSInt64(long double value) { return (SInt64)(value); } #else +/*! @brief Converts a long double to a SInt64. Any decimal string that fits into a SInt64 can be converted exactly into a long double, using + the conversion routines found in fp.h. Then this routine can be used to complete the conversion to SInt64. + @param value a long double value + @result the closest SInt64 value to value */ + extern SInt64 LongDoubleToSInt64(long double value); #define LongDoubleToSInt64(value) ((SInt64)(value)) #endif +#else +/*! @brief Converts a long double to a SInt64. Any decimal string that fits into a SInt64 can be converted exactly into a long double, using + the conversion routines found in fp.h. Then this routine can be used to complete the conversion to SInt64. + @param value a long double value + @result the closest SInt64 value to value */ +extern SInt64 LongDoubleToSInt64(long double value); #endif - #endif /* !TYPE_LONGDOUBLE_IS_DOUBLE */ - -/* - * U64Max() - * - * Discussion: - * Returns largest possible UInt64 value - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64Max(void); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64Max(void) { return 0xffffffffffffffffULL; } + /*! @brief Returns largest possible UInt64 value + @result the largest SInt64 value */ + static inline UInt64 U64Max(void) { return 0xffffffffffffffffULL; } #else + /*! @brief Returns largest possible UInt64 value + @result the largest SInt64 value */ + extern UInt64 U64Max(void); #define U64Max() (0xffffffffffffffffULL) #endif +#else +/*! @brief Returns largest possible UInt64 value + @result the largest SInt64 value */ +extern UInt64 U64Max(void); #endif -/* - * U64Add() - * - * Discussion: - * Adds two unsigned integers, producing an integer result. If an - * overflow occurs the result is congruent mod (2^64) as if the - * operands and result were unsigned. No overflow is signaled. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64Add( - UInt64 left, - UInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64Add(UInt64 left, UInt64 right) { return (UInt64)(left) + (UInt64)(right); } + /*! @brief Adds two unsigned integers, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the + operands and result were unsigned. No overflow is signaled. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of adding left to right, ignoring overflow and truncating to a UInt64 */ + static inline UInt64 U64Add(UInt64 left, UInt64 right) { return (UInt64)(left) + (UInt64)(right); } #else + /*! @brief Adds two unsigned integers, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the + operands and result were unsigned. No overflow is signaled. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of adding left to right, ignoring overflow and truncating to a UInt64 */ + extern UInt64 U64Add( UInt64 left, UInt64 right); #define U64Add(left, right) ((UInt64)(left) + (UInt64)(right)) #endif +#else +/*! @brief Adds two unsigned integers, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the + operands and result were unsigned. No overflow is signaled. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of adding left to right, ignoring overflow and truncating to a UInt64 */ +extern UInt64 U64Add( UInt64 left, UInt64 right); #endif -/* - * U64Subtract() - * - * Discussion: - * Subtracts two unsigned integers, producing an integer result. If - * an overflow occurs the result is congruent mod (2^64) as if the - * operands and result were unsigned. No overflow is signaled. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64Subtract( - UInt64 left, - UInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64Subtract(UInt64 left, UInt64 right) { return (UInt64)(left) - (UInt64)(right); } + /*! @brief Subtracts two unsigned integers, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the + operands and result were unsigned. No overflow is signaled. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of subtracting the value right from left, ignoring underflow */ + static inline UInt64 U64Subtract(UInt64 left, UInt64 right) { return (UInt64)(left) - (UInt64)(right); } #else + /*! @brief Subtracts two unsigned integers, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the + operands and result were unsigned. No overflow is signaled. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of subtracting the value right from left, ignoring underflow */ + extern UInt64 U64Subtract( UInt64 left, UInt64 right); #define U64Subtract(left, right) ((UInt64)(left) - (UInt64)(right)) #endif +#else +/*! @brief Subtracts two unsigned integers, producing an integer result. If an overflow occurs the result is congruent mod (2^64) as if the + operands and result were unsigned. No overflow is signaled. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of subtracting the value right from left, ignoring underflow */ +extern UInt64 U64Subtract( UInt64 left, UInt64 right); #endif - - -/* - * U64Multiply() - * - * Discussion: - * Multiplies two unsigned numbers, producing a signed result. - * Overflow is ignored and the low-order part of the product is - * returned. The sign of the result is not guaranteed to be correct - * if the magnitude of the product is not representable. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64Multiply( - UInt64 left, - UInt64 right); +/*! @brief Multiplies two unsigned numbers, producing a signed result. Overflow is ignored and the low-order part of the product is +returned. The sign of the result is not guaranteed to be correct if the magnitude of the product is not representable. +@param left a \c UInt64 value +@param right a \c UInt64 value +@result the result of multiplying left by right, truncated to a \c UInt64 value. */ #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64Multiply(UInt64 left, UInt64 right) { return (UInt64)(left) * (UInt64)(right); } +/*! @brief Multiplies two unsigned numbers, producing a signed result. Overflow is ignored and the low-order part of the product is + returned. The sign of the result is not guaranteed to be correct if the magnitude of the product is not representable. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of multiplying left by right, truncated to a \c UInt64 value. */ + static inline UInt64 U64Multiply(UInt64 left, UInt64 right) { return (UInt64)(left) * (UInt64)(right); } #else +/*! @brief Multiplies two unsigned numbers, producing a signed result. Overflow is ignored and the low-order part of the product is + returned. The sign of the result is not guaranteed to be correct if the magnitude of the product is not representable. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of multiplying left by right, truncated to a \c UInt64 value. */ + extern UInt64 U64Multiply( UInt64 left, UInt64 right); #define U64Multiply(left, right) ((UInt64)(left) * (UInt64)(right)) #endif +#else +/*! @brief Multiplies two unsigned numbers, producing a signed result. Overflow is ignored and the low-order part of the product is + returned. The sign of the result is not guaranteed to be correct if the magnitude of the product is not representable. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of multiplying left by right, truncated to a \c UInt64 value. */ +extern UInt64 U64Multiply( UInt64 left, UInt64 right); #endif - - -/* - * U64Mod() - * - * Discussion: - * Returns the remainder of divide of dividend by divisor. The sign - * of the remainder is the same as the sign of the dividend (i.e., - * it takes the absolute values of the operands, does the division, - * then fixes the sign of the quotient and remainder). - * - * Availability: - * Implemented by client - */ -extern UInt64 -U64Mod( - UInt64 dividend, - UInt64 divisor); +/*! @brief Returns the remainder of divide of dividend by divisor. The sign of the remainder is the same as the sign of the dividend (i.e., +it takes the absolute values of the operands, does the division, then fixes the sign of the quotient and remainder). +@param dividend a \c UInt64 value +@param divisor a \c UInt64 value +@result the remainder after dividing dividend by divisor */ #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64Mod(UInt64 dividend, UInt64 divisor) { return (UInt64)(dividend) % (UInt64)(divisor); } + /*! @brief Returns the remainder of divide of dividend by divisor. The sign of the remainder is the same as the sign of the dividend (i.e., + it takes the absolute values of the operands, does the division, then fixes the sign of the quotient and remainder). + @param dividend a \c UInt64 value + @param divisor a \c UInt64 value + @result the remainder after dividing dividend by divisor */ + static inline UInt64 U64Mod(UInt64 dividend, UInt64 divisor) { return (UInt64)(dividend) % (UInt64)(divisor); } #else + /*! @brief Returns the remainder of divide of dividend by divisor. The sign of the remainder is the same as the sign of the dividend (i.e., + it takes the absolute values of the operands, does the division, then fixes the sign of the quotient and remainder). + @param dividend a \c UInt64 value + @param divisor a \c UInt64 value + @result the remainder after dividing dividend by divisor */ + extern UInt64 U64Mod( UInt64 dividend, UInt64 divisor); #define U64Mod(dividend, divisor) ((UInt64)(dividend) % (UInt64)(divisor)) #endif +#else +/*! @brief Returns the remainder of divide of dividend by divisor. The sign of the remainder is the same as the sign of the dividend (i.e., + it takes the absolute values of the operands, does the division, then fixes the sign of the quotient and remainder). + @param dividend a \c UInt64 value + @param divisor a \c UInt64 value + @result the remainder after dividing dividend by divisor */ +extern UInt64 U64Mod( UInt64 dividend, UInt64 divisor); #endif - - -/* - * U64Divide() - * - * Discussion: - * Divides dividend by divisor, returning the quotient. The - * remainder is returned in *remainder if remainder (the pointer) is - * non-NULL. The sign of the remainder is the same as the sign of - * the dividend (i.e. it takes the absolute values of the operands, - * does the division, then fixes the sign of the quotient and - * remainder). If the divisor is zero, then U64Max() will be - * returned (or U64Min() if the dividend is negative), and the - * remainder will be the dividend; no error is reported. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64Divide( - UInt64 dividend, - UInt64 divisor, - UInt64 * remainder); /* can be NULL */ #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64Divide(UInt64 dividend, UInt64 divisor, UInt64 *remainder) { return ( (void)((remainder) && (*((UInt64*)(remainder)) = ((UInt64)(dividend) % (UInt64)(divisor)))), ((UInt64)(dividend) / (UInt64)(divisor)) ); } + /*! @brief Divides dividend by divisor, returning the quotient. The remainder is returned in remainder if remainder (the pointer) is + non-NULL. The sign of the remainder is the same as the sign of the dividend (i.e. it takes the absolute values of the operands, + does the division, then fixes the sign of the quotient and remainder). If the divisor is zero, then U64Max() will be + returned (or U64Min() if the dividend is negative), and the remainder will be the dividend; no error is reported. + @param dividend the value to be divided + @param divisor the value to divide by + @param remainder if non-null, on exit the remainder of the operation + @result the \c UInt64 value ( divident / divisor ) */ + static inline UInt64 U64Divide(UInt64 dividend, UInt64 divisor, UInt64 *remainder) { return ( (void)((remainder) && (*((UInt64*)(remainder)) = ((UInt64)(dividend) % (UInt64)(divisor)))), ((UInt64)(dividend) / (UInt64)(divisor)) ); } #else + /*! @brief Divides dividend by divisor, returning the quotient. The remainder is returned in remainder if remainder (the pointer) is + non-NULL. The sign of the remainder is the same as the sign of the dividend (i.e. it takes the absolute values of the operands, + does the division, then fixes the sign of the quotient and remainder). If the divisor is zero, then U64Max() will be + returned (or U64Min() if the dividend is negative), and the remainder will be the dividend; no error is reported. + @param dividend the value to be divided + @param divisor the value to divide by + @param remainder if non-null, on exit the remainder of the operation + @result the \c UInt64 value ( divident / divisor ) */ + extern UInt64 U64Divide( UInt64 dividend, UInt64 divisor, UInt64 * remainder); #define U64Divide(dividend, divisor, remainder) (( (void)((remainder) && (*((UInt64*)(remainder)) = ((UInt64)(dividend) % (UInt64)(divisor)))), ((UInt64)(dividend) / (UInt64)(divisor)) )) #endif +#else +/*! @brief Divides dividend by divisor, returning the quotient. The remainder is returned in remainder if remainder (the pointer) is + non-NULL. The sign of the remainder is the same as the sign of the dividend (i.e. it takes the absolute values of the operands, + does the division, then fixes the sign of the quotient and remainder). If the divisor is zero, then U64Max() will be + returned (or U64Min() if the dividend is negative), and the remainder will be the dividend; no error is reported. + @param dividend the value to be divided + @param divisor the value to divide by + @param remainder if non-null, on exit the remainder of the operation + @result the \c UInt64 value ( divident / divisor ) */ +extern UInt64 U64Divide( UInt64 dividend, UInt64 divisor, UInt64 * remainder); #endif - - - - -/* - * U64Div() - * - * Discussion: - * Divides dividend by divisor, returning the quotient. - * - * Availability: - * Implemented by client - */ -extern UInt64 -U64Div( - UInt64 dividend, - UInt64 divisor); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64Div(UInt64 dividend, UInt64 divisor) { return U64Divide((dividend), (divisor), NULL); } + /*! @brief Divides dividend by divisor, returning the quotient. The sign of the remainder is the same as the sign of the dividend (i.e. it takes the absolute values of the operands, + does the division, then fixes the sign of the quotient and remainder). If the divisor is zero, then U64Max() will be returned (or U64Min() if the dividend is negative), and + the remainder will be the dividend; no error is reported. + @param dividend the value to be divided + @param divisor the value to divide by + @result the \c UInt64 value ( dividend / divisor ) */ + static inline UInt64 U64Div(UInt64 dividend, UInt64 divisor) { return U64Divide((dividend), (divisor), NULL); } #else + /*! @brief Divides dividend by divisor, returning the quotient. The sign of the remainder is the same as the sign of the dividend (i.e. it takes the absolute values of the operands, + does the division, then fixes the sign of the quotient and remainder). If the divisor is zero, then U64Max() will be returned (or U64Min() if the dividend is negative), and + the remainder will be the dividend; no error is reported. + @param dividend the value to be divided + @param divisor the value to divide by + @result the \c UInt64 value ( dividend / divisor ) */ + extern UInt64 U64Div( UInt64 dividend, UInt64 divisor); #define U64Div(dividend, divisor) (U64Divide((dividend), (divisor), NULL)) #endif +#else +/*! @brief Divides dividend by divisor, returning the quotient. The sign of the remainder is the same as the sign of the dividend (i.e. it takes the absolute values of the operands, + does the division, then fixes the sign of the quotient and remainder). If the divisor is zero, then U64Max() will be returned (or U64Min() if the dividend is negative), and + the remainder will be the dividend; no error is reported. + @param dividend the value to be divided + @param divisor the value to divide by + @result the \c UInt64 value ( dividend / divisor ) */ +extern UInt64 U64Div( UInt64 dividend, UInt64 divisor); #endif - - -/* - * U64Set() - * - * Discussion: - * Given an SInt32, returns an UInt64 with the same value. Use this - * routine instead of coding 64-bit constants (at least when the - * constant will fit in an SInt32). - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64Set(SInt32 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64Set(SInt32 value) { return (UInt64)(value); } + /*! @brief Given an\c SInt32, returns an UInt64 with the same value. Use this routine instead of coding 64-bit constants (at least when the constant will fit in an SInt32). + @discussion If value is negative, this returns the equivalent bit 32 bit value as an unsigned value + @param value the \c SInt32 value to coerce to a \c UInt64 + @result the \c UInt64 equivalent of the SInt32 value */ + static inline UInt64 U64Set(SInt32 value) { return (UInt64)(value); } #else + /*! @brief Given an\c SInt32, returns an UInt64 with the same value. Use this routine instead of coding 64-bit constants (at least when the constant will fit in an SInt32). + @discussion If value is negative, this returns the equivalent bit 32 bit value as an unsigned value + @param value the \c SInt32 value to coerce to a \c UInt64 + @result the \c UInt64 equivalent of the SInt32 value */ + extern UInt64 U64Set(SInt32 value); #define U64Set(value) ((UInt64)(value)) #endif +#else +/*! @brief Given an\c SInt32, returns an UInt64 with the same value. Use this routine instead of coding 64-bit constants (at least when the constant will fit in an SInt32). + @discussion If value is negative, this returns the equivalent bit 32 bit value as an unsigned value + @param value the \c SInt32 value to coerce to a \c UInt64 + @result the \c UInt64 equivalent of the SInt32 value */ +extern UInt64 U64Set(SInt32 value); #endif - -/* - * U64SetU() - * - * Discussion: - * Given a UInt32, returns a UInt64 with the same value. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64SetU(UInt32 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64SetU(UInt32 value) { return (UInt64)(value); } + /*! @brief Given a UInt32, returns a UInt64 with the same value. + @param value A \c UInt32 value + @result A UInt64 value equivalent to value */ + static inline UInt64 U64SetU(UInt32 value) { return (UInt64)(value); } #else + /*! @brief Given a UInt32, returns a UInt64 with the same value. + @param value A \c UInt32 value + @result A UInt64 value equivalent to value */ + extern UInt64 U64SetU(UInt32 value); #define U64SetU(value) ((UInt64)(value)) #endif +#else +/*! @brief Given a UInt32, returns a UInt64 with the same value. + @param value A \c UInt32 value + @result A UInt64 value equivalent to value */ +extern UInt64 U64SetU(UInt32 value); #endif -/* - * U32SetU() - * - * Discussion: - * Given an UInt64, returns an UInt32 by discarding the high-order - * 32 bits. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt32 -U32SetU(UInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt32 U32SetU(UInt64 value) { return (UInt32)(value); } + /*! @brief Given an UInt64, returns an UInt32 by discarding the high-order 32 bits. + @param value A \c UInt64 value + @result the \c SInt32 value created by discarding the high-order 32 bits of value */ + static inline UInt32 U32SetU(UInt64 value) { return (UInt32)(value); } #else + /*! @brief Given an UInt64, returns an UInt32 by discarding the high-order 32 bits. + @param value A \c UInt64 value + @result the \c SInt32 value created by discarding the high-order 32 bits of value */ + extern UInt32 U32SetU(UInt64 value); #define U32SetU(value) ((UInt32)(value)) #endif +#else +/*! @brief Given an UInt64, returns an UInt32 by discarding the high-order 32 bits. + @param value A \c UInt64 value + @result the \c SInt32 value created by discarding the high-order 32 bits of value */ +extern UInt32 U32SetU(UInt64 value); #endif -/* - * U64And() - * - * Discussion: - * Returns one if left and right are non-zero, otherwise returns zero - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern Boolean -U64And( - UInt64 left, - UInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline Boolean U64And(UInt64 left, UInt64 right) { return (UInt64)(left) && (UInt64)(right); } + /*! @brief Returns true if left and right are non-zero, otherwise returns false + @param left a \c UInt64 value + @param right a \c UInt64 value + @result returns true if either left or right is non-zero, false otherwise */ + static inline Boolean U64And(UInt64 left, UInt64 right) { return (UInt64)(left) && (UInt64)(right); } #else + /*! @brief Returns true if left and right are non-zero, otherwise returns false + @param left a \c UInt64 value + @param right a \c UInt64 value + @result returns true if either left or right is non-zero, false otherwise */ + extern Boolean U64And( UInt64 left, UInt64 right); #define U64And(left, right) ((UInt64)(left) && (UInt64)(right)) #endif +#else +/*! @brief Returns true if left and right are non-zero, otherwise returns false + @param left a \c UInt64 value + @param right a \c UInt64 value + @result returns true if either left or right is non-zero, false otherwise */ +extern Boolean U64And( UInt64 left, UInt64 right); #endif - - -/* - * U64Or() - * - * Discussion: - * Returns one if left or right are non-zero, otherwise returns zero - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern Boolean -U64Or( - UInt64 left, - UInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline Boolean U64Or(UInt64 left, UInt64 right) { return (UInt64)(left) || (UInt64)(right); } + /*! @brief Returns true if left or right are non-zero, otherwise returns false + @param left a \c UInt64 value + @param right a \c UInt64 value + @result returns true if both left or right is non-zero, false otherwise */ + static inline Boolean U64Or(UInt64 left, UInt64 right) { return (UInt64)(left) || (UInt64)(right); } #else + /*! @brief Returns true if left or right are non-zero, otherwise returns false + @param left a \c UInt64 value + @param right a \c UInt64 value + @result returns true if both left or right is non-zero, false otherwise */ + extern Boolean U64Or( UInt64 left, UInt64 right); #define U64Or(left, right) ((UInt64)(left) || (UInt64)(right)) #endif +#else +/*! @brief Returns true if left or right are non-zero, otherwise returns false + @param left a \c UInt64 value + @param right a \c UInt64 value + @result returns true if both left or right is non-zero, false otherwise */ +extern Boolean U64Or( UInt64 left, UInt64 right); #endif - -/* - * U64Eor() - * - * Discussion: - * Returns one if left xor right are non-zero, otherwise returns zero - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern Boolean -U64Eor( - UInt64 left, - UInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline Boolean U64Eor(UInt64 left, UInt64 right) { return (Boolean)(((UInt64)(left) ? 1 : 0) ^ ((UInt64)(right) ? 1 : 0)); } + /*! @brief Returns one if left xor right are non-zero, otherwise returns zero + @param left a \c UInt64 value + @param right a \c UInt64 value + @result return true if both left and right are zero, or if both left and right are non-zero; false otherwise */ + static inline Boolean U64Eor(UInt64 left, UInt64 right) { return (Boolean)(((UInt64)(left) ? 1 : 0) ^ ((UInt64)(right) ? 1 : 0)); } #else + /*! @brief Returns one if left xor right are non-zero, otherwise returns zero + @param left a \c UInt64 value + @param right a \c UInt64 value + @result return true if both left and right are zero, or if both left and right are non-zero; false otherwise */ + extern Boolean U64Eor( UInt64 left, UInt64 right); #define U64Eor(left, right) ((Boolean)(((UInt64)(left) ? 1 : 0) ^ ((UInt64)(right) ? 1 : 0))) #endif +#else +/*! @brief Returns one if left xor right are non-zero, otherwise returns zero + @param left a \c UInt64 value + @param right a \c UInt64 value + @result return true if both left and right are zero, or if both left and right are non-zero; false otherwise */ +extern Boolean U64Eor( UInt64 left, UInt64 right); #endif - -/* - * U64Not() - * - * Discussion: - * Returns one if value is non-zero, otherwisze returns zero. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern Boolean -U64Not(UInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline Boolean U64Not(UInt64 value) { return !((UInt64)(value)); } + /*! @brief Returns true if value is non-zero, otherwisze returns false. + @param value a \c UInt64 value + @result return true if value is non-zero, true otherwise */ + static inline Boolean U64Not(UInt64 value) { return !((UInt64)(value)); } #else + /*! @brief Returns true if value is non-zero, otherwisze returns false. + @param value a \c UInt64 value + @result return true if value is non-zero, true otherwise */ + extern Boolean U64Not(UInt64 value); #define U64Not(value) (!((UInt64)(value))) #endif +#else +/*! @brief Returns true if value is non-zero, otherwisze returns false. + @param value a \c UInt64 value + @result return true if value is non-zero, true otherwise */ +extern Boolean U64Not(UInt64 value); #endif -/* - * U64Compare() - * - * Discussion: - * Given two unsigned numbers, left and right, returns an SInt32 - * that compares with zero the same way left compares with right. - * If you wanted to perform a comparison on 64-bit integers of the - * form: - * operand_1 operand_2 - * then you could use an expression of the form: - * xxxU64Compare(operand_1,operand_2) 0 - * to test for the same condition. CAUTION: DO NOT depend on the - * exact value returned by this routine. Only the sign (i.e. - * positive, zero, or negative) of the result is guaranteed. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: not available - */ -extern SInt32 -U64Compare( - UInt64 left, - UInt64 right) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA); +/*! @brief Given two unsigned numbers, left and right, returns an SInt32 that compares with zero the same way left compares with right. Do not depend on the actual value returned, only on its sign or whether it is zero. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result If left is less than right, then a negative value; if left is larger than right then a positive value, and if left == right then the value zero. */ +extern SInt32 U64Compare( UInt64 left, UInt64 right) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA); -/* - * U64BitwiseAnd() - * - * Discussion: - * bitwise AND - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64BitwiseAnd( - UInt64 left, - UInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64BitwiseAnd(UInt64 left, UInt64 right) { return (UInt64)(left) & (UInt64)(right); } + /*! @brief Return the bitwise AND value of the two parameters. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of the bitwise AND of left and right */ + static inline UInt64 U64BitwiseAnd(UInt64 left, UInt64 right) { return (UInt64)(left) & (UInt64)(right); } #else + /*! @brief Return the bitwise AND value of the two parameters. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of the bitwise AND of left and right */ + extern UInt64 U64BitwiseAnd( UInt64 left, UInt64 right); #define U64BitwiseAnd(left, right) ((UInt64)(left) & (UInt64)(right)) #endif +#else +/*! @brief Return the bitwise AND value of the two parameters. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of the bitwise AND of left and right */ +extern UInt64 U64BitwiseAnd( UInt64 left, UInt64 right); #endif -/* - * U64BitwiseOr() - * - * Discussion: - * bitwise OR - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64BitwiseOr( - UInt64 left, - UInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64BitwiseOr(UInt64 left, UInt64 right) { return (UInt64)(left) | (UInt64)(right); } + /*! @brief Return the bitwise OR value of the two parameters. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of the bitwise OR of left and right */ + static inline UInt64 U64BitwiseOr(UInt64 left, UInt64 right) { return (UInt64)(left) | (UInt64)(right); } #else + /*! @brief Return the bitwise OR value of the two parameters. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of the bitwise OR of left and right */ + extern UInt64 U64BitwiseOr( UInt64 left, UInt64 right); #define U64BitwiseOr(left, right) ((UInt64)(left) | (UInt64)(right)) #endif +#else +/*! @brief Return the bitwise OR value of the two parameters. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of the bitwise OR of left and right */ +extern UInt64 U64BitwiseOr( UInt64 left, UInt64 right); #endif -/* - * U64BitwiseEor() - * - * Discussion: - * bitwise XOR - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64BitwiseEor( - UInt64 left, - UInt64 right); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64BitwiseEor(UInt64 left, UInt64 right) { return (UInt64)(left) ^ (UInt64)(right); } + /*! @brief Return the bitwise EOR value of the two parameters. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of the bitwise EOR of left and right */ + static inline UInt64 U64BitwiseEor(UInt64 left, UInt64 right) { return (UInt64)(left) ^ (UInt64)(right); } #else + /*! @brief Return the bitwise EOR value of the two parameters. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of the bitwise OR of left and right */ + extern UInt64 U64BitwiseEor( UInt64 left, UInt64 right); #define U64BitwiseEor(left, right) ((UInt64)(left) ^ (UInt64)(right)) #endif +#else +/*! @brief Return the bitwise EOR value of the two parameters. + @param left a \c UInt64 value + @param right a \c UInt64 value + @result the result of the bitwise OR of left and right */ +extern UInt64 U64BitwiseEor( UInt64 left, UInt64 right); #endif -/* - * U64BitwiseNot() - * - * Discussion: - * bitwise negate - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64BitwiseNot(UInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64BitwiseNot(UInt64 value) { return ~((UInt64)(value)); } + /*! @brief Return the bitwise NOT value of the given value + @param value a \c UInt64 value + @result the result of the bitwise NOT of value */ + static inline UInt64 U64BitwiseNot(UInt64 value) { return ~((UInt64)(value)); } #else + /*! @brief Return the bitwise NOT value of the given value + @param value a \c UInt64 value + @result the result of the bitwise NOT of value */ + extern UInt64 U64BitwiseNot(UInt64 value); #define U64BitwiseNot(value) (~((UInt64)(value))) #endif +#else +/*! @brief Return the bitwise NOT value of the given value + @param value a \c UInt64 value + @result the result of the bitwise NOT of value */ +extern UInt64 U64BitwiseNot(UInt64 value); #endif - -/* - * U64ShiftRight() - * - * Discussion: - * Arithmetic shift of value by the lower 7 bits of the shift. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64ShiftRight( - UInt64 value, - UInt32 shift); #if TYPE_LONGLONG - #if MATH64_USE_INLINE - inline UInt64 U64ShiftRight(UInt64 value, UInt32 shift) { return (UInt64)(value) >> ((shift) & 0x7F); } +#if MATH64_USE_INLINE + /*! @brief Return a \c UInt64 value created by shifting a given value right by a given number of bit positions + @param value a \c UInt64 value + @param shift a \c UInt32 number of positions to shift, between 0 and 127 + @result the result of shifting value to the right by shift bit positions */ + static inline UInt64 U64ShiftRight(UInt64 value, UInt32 shift) { return (UInt64)(value) >> ((shift) & 0x7F); } #else + /*! @brief Return a \c UInt64 value created by shifting a given value right by a given number of bit positions + @param value a \c UInt64 value + @param shift a \c UInt32 number of positions to shift, between 0 and 127 + @result the result of shifting value to the right by shift bit positions */ + extern UInt64 U64ShiftRight( UInt64 value, UInt32 shift); #define U64ShiftRight(value, shift) ((UInt64)(value) >> ((shift) & 0x7F)) #endif +#else +/*! @brief Return a \c UInt64 value created by shifting a given value right by a given number of bit positions + @param value a \c UInt64 value + @param shift a \c UInt32 number of positions to shift, between 0 and 127 + @result the result of shifting value to the right by shift bit positions */ +extern UInt64 U64ShiftRight( UInt64 value, UInt32 shift); #endif -/* - * U64ShiftLeft() - * - * Discussion: - * Logical shift of value by the lower 7 bits of the shift. - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -U64ShiftLeft( - UInt64 value, - UInt32 shift); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 U64ShiftLeft(UInt64 value, UInt32 shift) { return (UInt64)(value) << ((shift) & 0x7F); } + /*! @brief Return a \c UInt64 value created by shifting a given value left by a given number of bit positions + @param value a \c UInt64 value + @param shift a \c UInt32 number of positions to shift, between 0 and 127 + @result the result of shifting value to the left by shift bit positions */ + static inline UInt64 U64ShiftLeft(UInt64 value, UInt32 shift) { return (UInt64)(value) << ((shift) & 0x7F); } #else + /*! @brief Return a \c UInt64 value created by shifting a given value left by a given number of bit positions + @param value a \c UInt64 value + @param shift a \c UInt32 number of positions to shift, between 0 and 127 + @result the result of shifting value to the left by shift bit positions */ + extern UInt64 U64ShiftLeft( UInt64 value, UInt32 shift); #define U64ShiftLeft(value, shift) ((UInt64)(value) << ((shift) & 0x7F)) #endif +#else +/*! @brief Return a \c UInt64 value created by shifting a given value left by a given number of bit positions + @param value a \c UInt64 value + @param shift a \c UInt32 number of positions to shift, between 0 and 127 + @result the result of shifting value to the left by shift bit positions */ +extern UInt64 U64ShiftLeft( UInt64 value, UInt32 shift); #endif #if !TYPE_LONGDOUBLE_IS_DOUBLE -/* - * UInt64ToLongDouble() - * - * Discussion: - * Convert an signed 64 bit integer to a long double (128-bit on - * PowerPC floating point) - * - * Availability: - * Mac OS X: not available - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern long double -UInt64ToLongDouble(UInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline long double UInt64ToLongDouble(UInt64 value) { return (long double)(value); } + /*! @brief Convert an signed 64 bit integer to a long double + @param value a \c UInt64 value + @result a long double equivalent to double */ + static inline long double UInt64ToLongDouble(UInt64 value) { return (long double)(value); } #else + /*! @brief Convert an signed 64 bit integer to a long double + @param value a \c UInt64 value + @result a long double equivalent to double */ + extern long double UInt64ToLongDouble(UInt64 value); #define UInt64ToLongDouble(value) ((long double)(value)) #endif +#else +/*! @brief Convert an signed 64 bit integer to a long double + @param value a \c UInt64 value + @result a long double equivalent to double */ +extern long double UInt64ToLongDouble(UInt64 value); #endif -/* - * LongDoubleToUInt64() - * - * Discussion: - * Convert long double (128-bit on PowerPC floating point) to a - * signed 64-bit integer - * - * Availability: - * Mac OS X: not available - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -LongDoubleToUInt64(long double value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 LongDoubleToUInt64(long double value) { return (UInt64)(value); } + /*! @brief Convert long double (128-bit on PowerPC floating point) to a signed 64-bit integer + @param value a \c long \c double value + @result a \c UInt64 value created by truncating value to a UInt64 */ + static inline UInt64 LongDoubleToUInt64(long double value) { return (UInt64)(value); } #else + /*! @brief Convert long double (128-bit on PowerPC floating point) to a signed 64-bit integer + @param value a \c long \c double value + @result a \c UInt64 value created by truncating value to a UInt64 */ + extern UInt64 LongDoubleToUInt64(long double value); #define LongDoubleToUInt64(value) ((UInt64)(value)) #endif +#else +/*! @brief Convert long double (128-bit on PowerPC floating point) to a signed 64-bit integer + @param value a \c long \c double value + @result a \c UInt64 value created by truncating value to a UInt64 */ +extern UInt64 LongDoubleToUInt64(long double value); #endif #endif /* !TYPE_LONGDOUBLE_IS_DOUBLE */ -/* - * UInt64ToSInt64() - * - * Discussion: - * converts UInt64 -> SInt64 - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern SInt64 -UInt64ToSInt64(UInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline SInt64 UInt64ToSInt64(UInt64 value) { return (SInt64)(value); } + /*! @brief Coerces a \c UInt64 -> \c SInt64 + @param value a \c UInt64 value + @result the result of coercing value into a \c SInt64; if value is > SIntMax() then a negavite value */ + static inline SInt64 UInt64ToSInt64(UInt64 value) { return (SInt64)(value); } #else + /*! @brief Coerces a \c UInt64 -> \c SInt64 + @param value a \c UInt64 value + @result the result of coercing value into a \c SInt64; if value is > SIntMax() then a negavite value */ + extern SInt64 UInt64ToSInt64(UInt64 value); #define UInt64ToSInt64(value) ((SInt64)(value)) #endif +#else +/*! @brief Coerces a \c UInt64 -> \c SInt64 + @param value a \c UInt64 value + @result the result of coercing value into a \c SInt64; if value is > SIntMax() then a negavite value */ +extern SInt64 UInt64ToSInt64(UInt64 value); #endif -/* - * SInt64ToUInt64() - * - * Discussion: - * converts SInt64 -> UInt64 - * - * Availability: - * Mac OS X: in version 10.0 and later in CoreServices.framework - * CarbonLib: in CarbonLib 1.0 and later - * Non-Carbon CFM: available as macro/inline - */ -extern UInt64 -SInt64ToUInt64(SInt64 value); #if TYPE_LONGLONG #if MATH64_USE_INLINE - inline UInt64 SInt64ToUInt64(SInt64 value) { return (UInt64)(value); } + /*! @brief Coerce a \c SInt64 -> \c UInt64 + @param value a \c SInt64 value + @result a UInt64 value; if value is less than zero then a positive value greater than SIntMax() */ + static inline UInt64 SInt64ToUInt64(SInt64 value) { return (UInt64)(value); } #else + /*! @brief Coerce a \c SInt64 -> \c UInt64 + @param value a \c SInt64 value + @result a UInt64 value; if value is less than zero then a positive value greater than SIntMax() */ + extern UInt64 SInt64ToUInt64(SInt64 value); #define SInt64ToUInt64(value) ((UInt64)(value)) #endif +#else +/*! @brief Coerce a \c SInt64 -> \c UInt64 + @param value a \c SInt64 value + @result a UInt64 value; if value is less than zero then a positive value greater than SIntMax() */ +extern UInt64 SInt64ToUInt64(SInt64 value); #endif - - - - /* Functions to convert between [Unsigned]Wide and [S|U]Int64 types. @@ -1392,8 +1329,6 @@ SInt64ToUInt64(SInt64 value); #endif - - #ifdef __cplusplus } #endif diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/StringCompare.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/StringCompare.h index 037766b8..eee84c90 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/StringCompare.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/StringCompare.h @@ -576,16 +576,6 @@ relstring( Boolean diacSensitive) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_4, __IPHONE_NA, __IPHONE_NA); -/* - * equalstring() - * - * Availability: - * Mac OS X: not available [32-bit only] - * CarbonLib: not available - * Non-Carbon CFM: in InterfaceLib 7.1 and later - */ - - #endif /* !__LP64__ */ diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/TextCommon.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/TextCommon.h index 35770ee7..affc1616 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/TextCommon.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/TextCommon.h @@ -3,7 +3,7 @@ Contains: TextEncoding-related types and constants, and prototypes for related functions - Copyright: © 1995-2020 Apple Inc. All rights reserved. + Copyright: © 1995-2023 Apple Inc. All rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: @@ -177,7 +177,10 @@ enum { kTextEncodingUnicodeV10_0 = 0x0114, /* Adds CJK Ext F, Hentaigana, 4 scripts, Bitcoin sign, 56 emoji...*/ kTextEncodingUnicodeV11_0 = 0x0115, /* Adds Georgian Mtavruli capitals, 7 scripts, Copyleft, 66 emoji...*/ kTextEncodingUnicodeV12_1 = 0x0116, /* Adds 4 new scripts, more letters for 5, Marca reg., 61 emoji...*/ - kTextEncodingUnicodeV13_0 = 0x0117 /* Adds 4 new scripts, more letters for 3, CJK Ext G, 55 emoji...*/ + kTextEncodingUnicodeV13_0 = 0x0117, /* Adds 4 new scripts, more letters for 3, CJK Ext G, 55 emoji...*/ + kTextEncodingUnicodeV14_0 = 0x0118, + kTextEncodingUnicodeV15_0 = 0x0119, + kTextEncodingUnicodeV15_1 = 0x011A }; /* ISO 8-bit and 7-bit encodings begin at 0x200*/ diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/fp.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/fp.h index ddf3510c..277c318d 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/fp.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/fp.h @@ -2310,6 +2310,8 @@ extern relop relationl(long double x, long double y); #if TYPE_LONGDOUBLE_IS_DOUBLE #ifdef __cplusplus inline relop relationl(long double x, long double y) { return relation((double)(x), (double)(y)); } + #elif defined(__STDC__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + inline relop relationl(long double x, long double y) { return relation((double)(x), (double)(y)); } #else #define relationl(x, y) (relation((double)(x), (double)(y))) #endif @@ -2329,6 +2331,8 @@ extern void num2decl(const decform *f, long double x, decimal *d); #if TYPE_LONGDOUBLE_IS_DOUBLE #ifdef __cplusplus inline void num2decl(const decform *f, long double x, decimal *d) { num2dec((f), (double)(x), (d)); } + #elif defined(__STDC__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + inline void num2decl(const decform *f, long double x, decimal *d) { num2dec((f), (double)(x), (d)); } #else #define num2decl(f, x, d) (num2dec((f), (double)(x), (d))) #endif @@ -2348,6 +2352,8 @@ extern long double dec2numl(const decimal * d); #if TYPE_LONGDOUBLE_IS_DOUBLE #ifdef __cplusplus inline long double dec2numl(const decimal *d) { return (long double) dec2num(d); } + #elif defined(__STDC__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + inline long double dec2numl(const decimal *d) { return (long double) dec2num(d); } #else #define dec2numl(d) ((long double) dec2num(d)) #endif diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices.tbd b/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices.tbd index d32166f2..2632684f 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices.tbd +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices' -current-version: 355 +current-version: 368.203 parent-umbrella: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents.tbd b/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents.tbd index daa425d2..360c619a 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents.tbd +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents' -current-version: 1376 +current-version: 1400.100.1 parent-umbrella: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Headers/FSEvents.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Headers/FSEvents.h index f09c5e3c..89a6dd9d 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Headers/FSEvents.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Headers/FSEvents.h @@ -29,6 +29,7 @@ #include +#include #if PRAGMA_ONCE #pragma once diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/UTCoreTypes.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/UTCoreTypes.h index 328d21e6..0c7a6e6a 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/UTCoreTypes.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/UTCoreTypes.h @@ -181,7 +181,7 @@ extern const CFStringRef kUTTypeAliasRecord API_DEPRECA extern const CFStringRef kUTTypeData API_DEPRECATED("Use UTTypeData or UTType.data (swift) instead.", ios(3.0, 15.0), macos(10.4, 12.0), tvos(9.0, 15.0), watchos(1.0, 8.0)); extern const CFStringRef kUTTypeDirectory API_DEPRECATED("Use UTTypeDirectory or UTType.directory (swift) instead.", ios(3.0, 15.0), macos(10.4, 12.0), tvos(9.0, 15.0), watchos(1.0, 8.0)); extern const CFStringRef kUTTypeResolvable API_DEPRECATED("Use UTTypeResolvable or UTType.resolvable (swift) instead.", ios(3.0, 15.0), macos(10.4, 12.0), tvos(9.0, 15.0), watchos(1.0, 8.0)); -extern const CFStringRef kUTTypeSymLink API_DEPRECATED("Use UTTypeSymLink or UTType.symbolicLink (swift) instead.", ios(3.0, 15.0), macos(10.4, 12.0), tvos(9.0, 15.0), watchos(1.0, 8.0)); +extern const CFStringRef kUTTypeSymLink API_DEPRECATED("Use UTTypeSymbolicLink or UTType.symbolicLink (swift) instead.", ios(3.0, 15.0), macos(10.4, 12.0), tvos(9.0, 15.0), watchos(1.0, 8.0)); extern const CFStringRef kUTTypeExecutable API_DEPRECATED("Use UTTypeExecutable or UTType.executable (swift) instead.", ios(8.0, 15.0), macos(10.5, 12.0), tvos(9.0, 15.0), watchos(1.0, 8.0)); extern const CFStringRef kUTTypeMountPoint API_DEPRECATED("Use UTTypeMountPoint or UTType.mountPoint (swift) instead.", ios(3.0, 15.0), macos(10.4, 12.0), tvos(9.0, 15.0), watchos(1.0, 8.0)); extern const CFStringRef kUTTypeAliasFile API_DEPRECATED("Use UTTypeAliasFile or UTType.aliasFile (swift) instead.", ios(3.0, 15.0), macos(10.4, 12.0), tvos(9.0, 15.0), watchos(1.0, 8.0)); diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices.tbd b/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices.tbd index ac83e9a2..a8762dc4 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices.tbd +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices.tbd @@ -31,8 +31,9 @@ exports: _LSCopyDisplayNameForURL, _LSCopyItemAttribute, _LSCopyItemAttributes, _LSCopyItemInfoForRef, _LSCopyItemInfoForURL, _LSCopyKindStringForMIMEType, _LSCopyKindStringForRef, _LSCopyKindStringForTypeInfo, _LSCopyKindStringForURL, - _LSDefaultApplicationManagementDomain, _LSDefaultIconName, - _LSDisableURLOverrides, _LSDocumentTypesChangedNotificationName, + _LSDefaultAppCategoryForMask, _LSDefaultAppCategoryGetFromName, + _LSDefaultAppCategoryMaskForCategory, _LSDefaultApplicationManagementDomain, + _LSDefaultIconName, _LSDisableURLOverrides, _LSDocumentTypesChangedNotificationName, _LSFileProviderStringKey, _LSFindApplicationForInfo, _LSGeoJSONKey, _LSGetApplicationForInfo, _LSGetApplicationForItem, _LSGetApplicationForURL, _LSGetExtensionInfo, _LSGetHandlerOptionsForContentType, _LSGetOpenRoles, @@ -56,8 +57,9 @@ exports: _LSUserActivityIsNotificationOptionKey, _LSUserActivityManagerActivityContinuationIsEnabledChangedNotification, _LSUserActivityTypeNowPlaying, _LSUserActivityTypeSiri, _LSUserActivityTypeTeamIDOverideKey, _LSUserApplicationType, _LSUserInitiatedUninstall, _LSVPNPluginType, - _LSiTunesArtworkKey, _LSiTunesMetadataKey, _OverrideIconRef, - _ReadIconFromFSRef, _RegisterIconRefFromFSRef, _RegisterIconRefFromIconFamily, + _LSiTunesArtworkKey, _LSiTunesMetadataKey, '_OBJC_CLASS_$_LSCodeEvaluation', + '_OBJC_CLASS_$_LSCodeEvaluationInfo', _OverrideIconRef, _ReadIconFromFSRef, + _RegisterIconRefFromFSRef, _RegisterIconRefFromIconFamily, _ReleaseIconRef, _RemoveIconRefOverride, _SetCustomIconsEnabled, _UTCreateStringForOSType, _UTGetOSTypeFromString, _UTTypeConformsTo, _UTTypeCopyAllTagsWithClass, _UTTypeCopyChildIdentifiers, @@ -130,6 +132,7 @@ exports: __LSEnumerateApplicationsFromSpotlight, __LSExceptionsGetAppStoreInfoForBundleIdentifier, __LSExceptionsIsBundleIdentifierInternallyBlocked, __LSExtensionsLog, __LSFindApplications, __LSFindApplicationsItem, __LSGetApplicationInformationSeed, + __LSGetApplicationLaunchServicesServerConnectionStatusFlags, __LSGetApplicationListSeed, __LSGetBundle, __LSGetCurrentActivationToken, __LSGetCurrentApplicationASN, __LSGetDescriptionForPersonaType, __LSGetFrontApplicationSeed, __LSGetIconRefForURL, __LSGetMainBundleURL, @@ -164,25 +167,27 @@ exports: __LSSendNotification, __LSServerMain, __LSSetApplicationCategories, __LSSetApplicationInformation, __LSSetApplicationInformationItem, __LSSetApplicationLaunchServicesServerConnectionStatus, __LSSetArchitecturePreferenceForApplicationURL, - __LSSetDatabaseIsSeeded, __LSSetDefaultSchemeHandlerURL, __LSSetDefaultSchemeHandlerURLWaitingUntilDone, - __LSSetDefaultWebBrowserWithApplicationURL, __LSSetDefaultWebBrowserWithBundleIdentifierAndVersion, - __LSSetDefaultXPCConnection, __LSSetFrontApplication, __LSSetFrontApplicationLong, - __LSSetFrontApplicationLongWithCompletion, __LSSetMetaApplicationInformation, - __LSSetMetaApplicationInformationItem, __LSSetPointerAuthKeyStatePreferenceForCurrentApplication, + __LSSetContentTypeHandler, __LSSetDatabaseIsSeeded, __LSSetDefaultSchemeHandlerURL, + __LSSetDefaultSchemeHandlerURLWaitingUntilDone, __LSSetDefaultWebBrowserWithApplicationURL, + __LSSetDefaultWebBrowserWithBundleIdentifierAndVersion, __LSSetDefaultXPCConnection, + __LSSetFrontApplication, __LSSetFrontApplicationLong, __LSSetFrontApplicationLongWithCompletion, + __LSSetMetaApplicationInformation, __LSSetMetaApplicationInformationItem, + __LSSetPointerAuthKeyStatePreferenceForCurrentApplication, __LSSetProcessQuarantineProperties, __LSSetRecentItemCount, - __LSSetShowAllExtensionsPreference, __LSSetUpClientSideReconnectionServices, - __LSSetWeakBindingForFileURL, __LSSetWeakBindingURLForType, - __LSSetWeakBindingURLForUTI, __LSSharedMemoryBumpApplicationInformationSeed, - __LSSharedMemoryBumpApplicationListSeed, __LSSharedMemoryBumpFrontApplicationASNSeed, - __LSSharedMemoryBumpMenuBarOwnerASNSeed, __LSSharedMemoryBumpPendingApplicationListSeed, - __LSSharedMemoryBumpVisibleApplicationListSeed, __LSSharedMemoryClearIndexedApplicationInformation, - __LSSharedMemoryCopyForSessionID, __LSSharedMemoryCopySystemUIPresentationModeStrRef, - __LSSharedMemoryGetApplicationInformation, __LSSharedMemoryGetApplicationInformationForPid, - __LSSharedMemoryGetApplicationInformationSeed, __LSSharedMemoryGetApplicationListCount, - __LSSharedMemoryGetApplicationListSeed, __LSSharedMemoryGetCGSSessionID, - __LSSharedMemoryGetChangeCount, __LSSharedMemoryGetDebugLevel, - __LSSharedMemoryGetExpectedFrontApplicationASNLow, __LSSharedMemoryGetFrontASNLow, - __LSSharedMemoryGetFrontApplicationASNSeed, __LSSharedMemoryGetIndexedApplicationAdditionalInformation, + __LSSetSchemeHandler, __LSSetShowAllExtensionsPreference, + __LSSetUpClientSideReconnectionServices, __LSSetWeakBindingForFileURL, + __LSSetWeakBindingURLForType, __LSSetWeakBindingURLForUTI, + __LSSharedMemoryBumpApplicationInformationSeed, __LSSharedMemoryBumpApplicationListSeed, + __LSSharedMemoryBumpFrontApplicationASNSeed, __LSSharedMemoryBumpMenuBarOwnerASNSeed, + __LSSharedMemoryBumpPendingApplicationListSeed, __LSSharedMemoryBumpVisibleApplicationListSeed, + __LSSharedMemoryClearIndexedApplicationInformation, __LSSharedMemoryCopyForSessionID, + __LSSharedMemoryCopySystemUIPresentationModeStrRef, __LSSharedMemoryGetApplicationInformation, + __LSSharedMemoryGetApplicationInformationForPid, __LSSharedMemoryGetApplicationInformationSeed, + __LSSharedMemoryGetApplicationListCount, __LSSharedMemoryGetApplicationListSeed, + __LSSharedMemoryGetCGSSessionID, __LSSharedMemoryGetChangeCount, + __LSSharedMemoryGetDebugLevel, __LSSharedMemoryGetExpectedFrontApplicationASNLow, + __LSSharedMemoryGetFrontASNLow, __LSSharedMemoryGetFrontApplicationASNSeed, + __LSSharedMemoryGetIndexedApplicationAdditionalInformation, __LSSharedMemoryGetIndexedApplicationInformation, __LSSharedMemoryGetLaunchProgressFlags, __LSSharedMemoryGetLaunchProgressUserActivityCount, __LSSharedMemoryGetLockCount, __LSSharedMemoryGetMenuBarOwnerASNLow, __LSSharedMemoryGetMenuBarOwnerASNSeed, @@ -244,37 +249,38 @@ exports: __kLSApplicationInThrottledStateAfterLaunchKey, __kLSApplicationInformationSeedKey, __kLSApplicationIsBetaKey, __kLSApplicationIsHiddenKey, __kLSApplicationIsTemplateApplicationKey, __kLSApplicationIsTemplateProxyApplicationKey, __kLSApplicationListSeedKey, - __kLSApplicationLockedInStoppedStateKey, __kLSApplicationOverriddenBackgroundDomainNameKey, - __kLSApplicationReadyToBeFrontableKey, __kLSApplicationSandboxedInformationItemsKey, - __kLSApplicationTemplateApplicationParametersKey, __kLSApplicationTemplateProxyApplicationParametersKey, - __kLSApplicationTypeKey, __kLSApplicationTypeToRestoreKey, - __kLSApplicationUIElementTypeKey, __kLSApplicationVersionKey, - __kLSApplicationWasTerminatedByTALKey, __kLSApplicationWouldBeTerminatedByTALKey, - __kLSApplicationsRecordingAppleEventsKey, __kLSArchitectureARM64Value, - __kLSArchitectureKey, __kLSArchitecturePowerPC64Value, __kLSArchitecturePowerPCValue, - __kLSArchitectureUnknownValue, __kLSArchitecturei386Value, - __kLSArchitecturex86_64Value, __kLSAuditTokenKey, __kLSBackgroundPriorityKey, - __kLSBackgroundPriorityOnceKey, __kLSBindingResourceInfoBadgeableKey, - __kLSBindingResourceInfoNameKey, __kLSBindingResourceInfoResourceKey, - __kLSBindingResourceInfoVariantFlagsKey, __kLSBringForwardDelayKey, - __kLSBringForwardRequestCausedByUserIntentKey, __kLSBringForwardRequestForcedKey, - __kLSBringForwardRequestIfFrontReservationExistsKey, __kLSBringForwardRequestImmediateKey, - __kLSBringForwardRequestStandardActivationKey, __kLSBringForwardWindowIDKey, - __kLSBringNextApplicationForwardKey, __kLSBundleIdentifierLowerCaseKey, - __kLSBundleNameLowerCaseKey, __kLSBundlePathDeviceIDKey, __kLSBundlePathINodeKey, - __kLSBundlePathKey, __kLSBundlePathLastComponentLowerCaseKey, - __kLSBundlePathSandboxExtensionKey, __kLSCheckInTimeKey, __kLSDYLDPlatformKey, - __kLSDataContainerPersonalityIconKey, __kLSDataContainerPersonalityLocalizedNameKey, - __kLSDebugLevelKey, __kLSDisableAllPostLaunchBringForwardRequestsKey, - __kLSDisplayNameKey, __kLSDoNotBFIfFrontApplicationSeedIsChangedKey, - __kLSDoNotBringAllWindowsForwardKey, __kLSDoNotBringAnyWindowsForwardKey, - __kLSDoNotSetTaskPolicyAutomaticallyKey, __kLSDontDropRootPermissionsKey, - __kLSErrorMessageStringKey, __kLSExecutableFilenameLowerCaseKey, - __kLSExecutableFormatCFMKey, __kLSExecutableFormatKey, __kLSExecutableFormatMachOKey, - __kLSExecutableFormatPoundBangKey, __kLSExecutablePathDeviceIDKey, - __kLSExecutablePathINodeKey, __kLSExecutablePathKey, __kLSExecutablePlatformKey, - __kLSExecutableSDKVersionKey, __kLSExitStatusKey, __kLSExpectedFrontApplicationASNKey, - __kLSFileCreatorKey, __kLSFileTypeKey, __kLSFlavorKey, __kLSForegroundPriorityKey, + __kLSApplicationLockedInStoppedStateKey, __kLSApplicationOnlyForegroundOnUserLaunchKey, + __kLSApplicationOverriddenBackgroundDomainNameKey, __kLSApplicationReadyToBeFrontableKey, + __kLSApplicationSandboxedInformationItemsKey, __kLSApplicationTemplateApplicationParametersKey, + __kLSApplicationTemplateProxyApplicationParametersKey, __kLSApplicationTypeKey, + __kLSApplicationTypeToRestoreKey, __kLSApplicationUIElementTypeKey, + __kLSApplicationVersionKey, __kLSApplicationWasTerminatedByTALKey, + __kLSApplicationWouldBeTerminatedByTALKey, __kLSApplicationsRecordingAppleEventsKey, + __kLSArchitectureARM64Value, __kLSArchitectureKey, __kLSArchitecturePowerPC64Value, + __kLSArchitecturePowerPCValue, __kLSArchitectureUnknownValue, + __kLSArchitecturei386Value, __kLSArchitecturex86_64Value, + __kLSAuditTokenKey, __kLSBackgroundPriorityKey, __kLSBackgroundPriorityOnceKey, + __kLSBindingResourceInfoBadgeableKey, __kLSBindingResourceInfoNameKey, + __kLSBindingResourceInfoResourceKey, __kLSBindingResourceInfoVariantFlagsKey, + __kLSBringForwardDelayKey, __kLSBringForwardRequestCausedByUserIntentKey, + __kLSBringForwardRequestForcedKey, __kLSBringForwardRequestIfFrontReservationExistsKey, + __kLSBringForwardRequestImmediateKey, __kLSBringForwardRequestStandardActivationKey, + __kLSBringForwardWindowIDKey, __kLSBringNextApplicationForwardKey, + __kLSBundleIdentifierLowerCaseKey, __kLSBundleNameLowerCaseKey, + __kLSBundlePathDeviceIDKey, __kLSBundlePathINodeKey, __kLSBundlePathKey, + __kLSBundlePathLastComponentLowerCaseKey, __kLSBundlePathSandboxExtensionKey, + __kLSCheckInTimeKey, __kLSDYLDPlatformKey, __kLSDataContainerPersonalityIconKey, + __kLSDataContainerPersonalityLocalizedNameKey, __kLSDebugLevelKey, + __kLSDisableAllPostLaunchBringForwardRequestsKey, __kLSDisplayNameKey, + __kLSDoNotBFIfFrontApplicationSeedIsChangedKey, __kLSDoNotBringAllWindowsForwardKey, + __kLSDoNotBringAnyWindowsForwardKey, __kLSDoNotSetTaskPolicyAutomaticallyKey, + __kLSDontDropRootPermissionsKey, __kLSErrorMessageStringKey, + __kLSExecutableFilenameLowerCaseKey, __kLSExecutableFormatCFMKey, + __kLSExecutableFormatKey, __kLSExecutableFormatMachOKey, __kLSExecutableFormatPoundBangKey, + __kLSExecutablePathDeviceIDKey, __kLSExecutablePathINodeKey, + __kLSExecutablePathKey, __kLSExecutablePlatformKey, __kLSExecutableSDKVersionKey, + __kLSExitStatusKey, __kLSExpectedFrontApplicationASNKey, __kLSFileCreatorKey, + __kLSFileTypeKey, __kLSFlavorKey, __kLSForegroundPriorityKey, __kLSForegroundPriorityOnceKey, __kLSFrontASNKey, __kLSFrontApplicationSeedKey, __kLSFrontReservationExistsKey, __kLSHiddenApplicationCountKey, __kLSIsProxiedForTALKey, __kLSKeyBeingAddedKey, __kLSKeyBeingChangedKey, @@ -336,10 +342,11 @@ exports: __kLSOpenOptionLaunchStdOutPathKey, __kLSOpenOptionLaunchUIDKey, __kLSOpenOptionLaunchWhenThisProcessExitsKey, __kLSOpenOptionLaunchWithoutRestoringStateKey, __kLSOpenOptionLaunchedByPersistenceKey, __kLSOpenOptionNotRelaunchedForTALKey, - __kLSOpenOptionOverrideAuditTokenKey, __kLSOpenOptionOverrideBackgroundPriorityDomainNameKey, - __kLSOpenOptionPreferRunningInstanceKey, __kLSOpenOptionPrintDocumentsKey, - __kLSOpenOptionProhitLaunchingSelfKey, __kLSOpenOptionRequireBundledExecutableKey, - __kLSOpenOptionRequiresUniversalLinksKey, __kLSOpenOptionRolesMaskKey, + __kLSOpenOptionOverriddenSpawnConstraintsDictionaryKey, __kLSOpenOptionOverrideAuditTokenKey, + __kLSOpenOptionOverrideBackgroundPriorityDomainNameKey, __kLSOpenOptionPreferRunningInstanceKey, + __kLSOpenOptionPrintDocumentsKey, __kLSOpenOptionProhitLaunchingSelfKey, + __kLSOpenOptionRequireBundledExecutableKey, __kLSOpenOptionRequiresUniversalLinksKey, + __kLSOpenOptionRolesMaskKey, __kLSOpenOptionSpawnConstraintsDictionaryKey, __kLSOpenOptionStopProcessKey, __kLSOpenOptionSynchronousKey, __kLSOpenOptionUIElementLaunchKey, __kLSOpenOptionUserInfoKey, __kLSOpenOptionWaitForApplicationToCheckInKey, __kLSOriginalExecutablePathDeviceIDKey, @@ -356,6 +363,7 @@ exports: __kLSUIPresentationModeAllSuppressedValue, __kLSUIPresentationModeContentHiddenValue, __kLSUIPresentationModeContentSuppressedValue, __kLSUIPresentationModeKey, __kLSUIPresentationModeNormalValue, __kLSUIPresentationOptionsKey, + __kLSURLApplicationShouldBeHiddenBySystemPreferenceKey, __kLSURLCanSetApplicationShouldBeHiddenBySystemPreferenceKey, __kLSUnhiddenApplicationCountKey, __kLSUserActivityCountKey, __kLSVisibleApplicationCountKey, __kLSVisibleApplicationListSeedKey, __kLSWantsToComeForwardAtRegistrationTimeKey, __kUTTypeGlyphNameKey, @@ -373,7 +381,8 @@ exports: _kLSItemContentType, _kLSItemDisplayKind, _kLSItemDisplayName, _kLSItemExtension, _kLSItemExtensionIsHidden, _kLSItemFileCreator, _kLSItemFileType, _kLSItemIsInvisible, _kLSItemQuarantineProperties, - _kLSItemRoleHandlerDisplayName, _kLSLocalLibraryBundleIdentifier, + _kLSItemRoleHandlerDisplayName, _kLSLaunchOptionTemplateApplicationBundlePathKeyEntitlement, + _kLSLaunchWithCoreServicesUIAgentEntitlement, _kLSLocalLibraryBundleIdentifier, _kLSMeetingRoomCanonicalName, _kLSNetworkLibraryBundleIdentifier, _kLSNetworkRootCanonicalName, _kLSNotificationDatabaseSeedingComplete, _kLSNotificationDatabaseSeedingStart, _kLSNotificationSystemConfigurationChange, @@ -458,11 +467,12 @@ exports: LSApplicationWorkspace, LSApplicationWorkspaceObserver, LSBundleIdentity, LSBundleInfoCachedValues, LSBundleProxy, LSBundleRecord, LSBundleWrapperCreator, LSBundleWrapperStagingReceipt, LSBundleWrapperUpdater, LSClaimBinding, - LSClaimBindingConfiguration, LSClaimRecord, LSCodeEvaluation, - LSCodeEvaluationInfo, LSDatabaseContext, LSDocumentProxy, - LSEnumerator, LSExtensionPoint, LSExtensionPointRecord, LSIconResource, - LSObserver, LSOpenWithMenuConstructor, LSPlugInKitProxy, LSPlugInQuery, - LSPlugInQueryWithIdentifier, LSPlugInQueryWithQueryDictionary, + LSClaimBindingConfiguration, LSClaimRecord, LSDatabaseContext, + LSDefaultApplicationQueryResult, LSDocumentProxy, LSEligibilityPredicate, + LSEligibilityPredicateEvaluator, LSEnumerator, LSExtensionPoint, + LSExtensionPointRecord, LSFeatureFlagPredicate, LSFeatureFlagPredicateEvaluator, + LSIconResource, LSObserver, LSOpenWithMenuConstructor, LSPlugInKitProxy, + LSPlugInQuery, LSPlugInQueryWithIdentifier, LSPlugInQueryWithQueryDictionary, LSPlugInQueryWithURL, LSPrecondition, LSPropertyList, LSRecord, LSRecordPromise, LSResourceProxy, LSServiceRecord, LSSettingsStore, LSSpotlightAction, LSSystemBundleIdentity, UTTypeRecord, _LSApplicationState, diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Headers/MDItem.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Headers/MDItem.h index 2dd3d9e8..17c6608b 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Headers/MDItem.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Headers/MDItem.h @@ -169,6 +169,14 @@ MD_EXPORT CFArrayRef MDItemCopyAttributeNames(MDItemRef item) MD_AVAIL; */ MD_EXPORT CFArrayRef MDItemsCopyAttributes(CFArrayRef items, CFArrayRef names) API_AVAILABLE( macos(10.12) ) API_UNAVAILABLE( ios, tvos, watchos ); +/* + @function MDItemGetCacheFileDescriptors + Returns an array of corresponding cache file descriptors for MDItem files + @param items The CFArray of MDItems. + @result array of XPC_TYPE_FD if corresponding cache file exists, or XPC_TYPE_NULL otherwise. +*/ +MD_EXPORT void MDItemGetCacheFileDescriptors(CFArrayRef items, void(^completionHandler)(CFArrayRef array) ) API_AVAILABLE( macos(15.2) ) API_UNAVAILABLE( ios, tvos, watchos ); + /* List of well-known attributes */ /*! @@ -348,6 +356,9 @@ MD_EXPORT CFArrayRef MDItemsCopyAttributes(CFArrayRef items, CFArrayRef names) A @const kMDItemCodecs The codecs used to encode/decode the media + + @const kMDItemMediaExtensions + The media extensions used to decode the media @const kMDItemMediaTypes Media types present in the content @@ -475,6 +486,8 @@ MD_EXPORT const CFStringRef kMDItemContactKeywords MD_AVAIL; // CF MD_EXPORT const CFStringRef kMDItemVersion MD_AVAIL; // CFString MD_EXPORT const CFStringRef kMDItemPixelHeight MD_AVAIL; // CFNumber +MD_EXPORT const CFStringRef kMDItemXMPCredit MD_AVAIL; // CFString +MD_EXPORT const CFStringRef kMDItemXMPDigitalSourceType MD_AVAIL; // CFString MD_EXPORT const CFStringRef kMDItemPixelWidth MD_AVAIL; // CFNumber MD_EXPORT const CFStringRef kMDItemPixelCount API_AVAILABLE( macos(10.6) ) API_UNAVAILABLE( ios, tvos, watchos ); // CFNumber MD_EXPORT const CFStringRef kMDItemColorSpace MD_AVAIL; // CFString @@ -522,6 +535,7 @@ MD_EXPORT const CFStringRef kMDItemGPSAreaInformation API_AVAILABLE( macos(10.7) MD_EXPORT const CFStringRef kMDItemGPSDateStamp API_AVAILABLE( macos(10.7) ) API_UNAVAILABLE( ios, tvos, watchos ); // CFDate MD_EXPORT const CFStringRef kMDItemGPSDifferental API_AVAILABLE( macos(10.7) ) API_UNAVAILABLE( ios, tvos, watchos ); // CFNumber +MD_EXPORT const CFStringRef kMDItemMediaExtensions API_AVAILABLE( macos(15.0) ) API_UNAVAILABLE( ios, tvos, watchos ); // CFArray of CFString MD_EXPORT const CFStringRef kMDItemCodecs MD_AVAIL; // CFArray of CFString MD_EXPORT const CFStringRef kMDItemMediaTypes MD_AVAIL; // CFArray of CFString MD_EXPORT const CFStringRef kMDItemStreamable MD_AVAIL; // CFBoolean @@ -955,7 +969,7 @@ MD_EXPORT const CFStringRef kMDItemSupportFileType API_DEPRECATED("No longer the email address, and not the human readable version) @const kMDItemRecipientEmailAddresses - This attribute indicates the reciepients email addresses. (This is always the email + This attribute indicates the recipients email addresses. (This is always the email address, and not the human readable version). @const kMDItemAuthorAddresses diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata.tbd b/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata.tbd index 6bf8b72e..cb022a5c 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata.tbd +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata' -current-version: 2274.10 +current-version: 2333.22.13 parent-umbrella: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -26,33 +26,33 @@ exports: _MDCopySessionLeaveUserDirectory, _MDItemCopyAttribute, _MDItemCopyAttributeNames, _MDItemCopyAttributes, _MDItemCopyAttributesBulk, _MDItemCopyLabels, _MDItemCreate, _MDItemCreateForAbsolutePaths, _MDItemCreateWithURL, - _MDItemGetTypeID, _MDItemRemoveAttribute, _MDItemRemoveAttributes, - _MDItemRemoveAttributesForAbsolutePaths, _MDItemRemoveLabel, - _MDItemSetAttribute, _MDItemSetAttributes, _MDItemSetAttributesForAbsolutePaths, - _MDItemSetLabel, _MDItemSetLocalizedAttribute, _MDItemWithPathGetTypeID, - _MDItemsCopyAttributes, _MDItemsCreateWithURLs, _MDItemsSetAttributes, - _MDItemsSetAttributesNoExAttr, _MDLabelAddToItems, _MDLabelCopyAttribute, - _MDLabelCopyAttributeName, _MDLabelCreate, _MDLabelDelete, - _MDLabelGetTypeID, _MDLabelRemoveFromItems, _MDLabelSetAttributes, - _MDQueryCopyQueryString, _MDQueryCopySortingAttributes, _MDQueryCopyValueListAttributes, - _MDQueryCopyValuesOfAttribute, _MDQueryCreate, _MDQueryCreateForItems, - _MDQueryCreateSubset, _MDQueryDisableUpdates, _MDQueryEnableUpdates, - _MDQueryExecute, _MDQueryGetAttributeValueOfResultAtIndex, - _MDQueryGetBatchingParameters, _MDQueryGetCountOfResultsWithAttributeValue, - _MDQueryGetIndexOfResult, _MDQueryGetResultAtIndex, _MDQueryGetResultCount, - _MDQueryGetTypeID, _MDQueryIsGatheringComplete, _MDQueryIsStopped, - _MDQuerySetBatchingParameters, _MDQuerySetCreateResultFunction, - _MDQuerySetCreateValueFunction, _MDQuerySetDispatchQueue, - _MDQuerySetMatchesSupportFiles, _MDQuerySetMaxCount, _MDQuerySetSearchScope, - _MDQuerySetSortComparator, _MDQuerySetSortComparatorBlock, - _MDQuerySetSortOptionFlagsForAttribute, _MDQuerySetSortOrder, - _MDQueryStop, _MDSchemaCopyAllAttributes, _MDSchemaCopyAttributesForContentType, - _MDSchemaCopyDisplayDescriptionForAttribute, _MDSchemaCopyDisplayNameForAttribute, - _MDSchemaCopyMetaAttributesForAttribute, _MDServiceConnectionBindChannelUUID, - _MDServiceConnectionDropChannelUUID, _MDServiceConnectionGetConnection, - _MDServiceConnectionGetTypeID, _MDServiceConnectionReceive, - _MDServiceConnectionReceiveBlock, _MDServiceConnectionSend, - _MDServiceConnectionSendEnv, _MDServiceConnectionSendReceive, + _MDItemGetCacheFileDescriptors, _MDItemGetTypeID, _MDItemRemoveAttribute, + _MDItemRemoveAttributes, _MDItemRemoveAttributesForAbsolutePaths, + _MDItemRemoveLabel, _MDItemSetAttribute, _MDItemSetAttributes, + _MDItemSetAttributesForAbsolutePaths, _MDItemSetLabel, _MDItemSetLocalizedAttribute, + _MDItemWithPathGetTypeID, _MDItemsCopyAttributes, _MDItemsCreateWithURLs, + _MDItemsSetAttributes, _MDItemsSetAttributesNoExAttr, _MDLabelAddToItems, + _MDLabelCopyAttribute, _MDLabelCopyAttributeName, _MDLabelCreate, + _MDLabelDelete, _MDLabelGetTypeID, _MDLabelRemoveFromItems, + _MDLabelSetAttributes, _MDQueryCopyQueryString, _MDQueryCopySortingAttributes, + _MDQueryCopyValueListAttributes, _MDQueryCopyValuesOfAttribute, + _MDQueryCreate, _MDQueryCreateForItems, _MDQueryCreateSubset, + _MDQueryDisableUpdates, _MDQueryEnableUpdates, _MDQueryExecute, + _MDQueryGetAttributeValueOfResultAtIndex, _MDQueryGetBatchingParameters, + _MDQueryGetCountOfResultsWithAttributeValue, _MDQueryGetIndexOfResult, + _MDQueryGetResultAtIndex, _MDQueryGetResultCount, _MDQueryGetTypeID, + _MDQueryIsGatheringComplete, _MDQueryIsStopped, _MDQuerySetBatchingParameters, + _MDQuerySetCreateResultFunction, _MDQuerySetCreateValueFunction, + _MDQuerySetDispatchQueue, _MDQuerySetMatchesSupportFiles, + _MDQuerySetMaxCount, _MDQuerySetSearchScope, _MDQuerySetSortComparator, + _MDQuerySetSortComparatorBlock, _MDQuerySetSortOptionFlagsForAttribute, + _MDQuerySetSortOrder, _MDQueryStop, _MDSchemaCopyAllAttributes, + _MDSchemaCopyAttributesForContentType, _MDSchemaCopyDisplayDescriptionForAttribute, + _MDSchemaCopyDisplayNameForAttribute, _MDSchemaCopyMetaAttributesForAttribute, + _MDServiceConnectionBindChannelUUID, _MDServiceConnectionDropChannelUUID, + _MDServiceConnectionGetConnection, _MDServiceConnectionGetTypeID, + _MDServiceConnectionReceive, _MDServiceConnectionReceiveBlock, + _MDServiceConnectionSend, _MDServiceConnectionSendEnv, _MDServiceConnectionSendReceive, _NSMetadataItemAcquisitionMakeKey, _NSMetadataItemAcquisitionModelKey, _NSMetadataItemAlbumKey, _NSMetadataItemAltitudeKey, _NSMetadataItemApertureKey, _NSMetadataItemAppleLoopDescriptorsKey, _NSMetadataItemAppleLoopsKeyFilterTypeKey, @@ -121,6 +121,7 @@ exports: _NSMetadataItemTimestampKey, _NSMetadataItemTitleKey, _NSMetadataItemTotalBitRateKey, _NSMetadataItemVersionKey, _NSMetadataItemVideoBitRateKey, _NSMetadataItemWhereFromsKey, _NSMetadataItemWhiteBalanceKey, + _NSMetadataItemXMPCredit, _NSMetadataItemXMPDigitalSourceType, _NSMetadataQueryIndexedLocalComputerScope, _NSMetadataQueryIndexedNetworkScope, _NSMetadataQueryUpdateAddedItemsKey, _NSMetadataQueryUpdateChangedItemsKey, _NSMetadataQueryUpdateRemovedItemsKey, _SIUINT32SetAddValue, @@ -191,43 +192,46 @@ exports: __MDQueryCreateQueryStringToMatchAttributeWithOptions, __MDQueryCreateQueryStringToMatchDisplayName, __MDQueryCreateQueryStringToMatchDisplayNameWithOptions, __MDQueryCreateQueryStringToMatchDisplayNamesWithOptions, __MDQueryCreateQueryStringWithOptions, __MDQueryCreateQueryStringWithOptionsDict, - __MDQueryCreateStringByAddingBackslashEscapes, __MDQueryDontEnforceTopN, - __MDQueryEnablePerfGathering, __MDQueryEnumerateNodesInQueryString, + __MDQueryCreateStringByAddingBackslashEscapes, __MDQueryCreateWithAnnParams, + __MDQueryDontEnforceTopN, __MDQueryEnablePerfGathering, __MDQueryEnumerateNodesInQueryString, __MDQueryExtractTextTerms, __MDQueryFastWillStop, __MDQueryGetAttributeValueOfResultAtIndexForGroup, __MDQueryGetAttributeValuesOfResultAtIndex, __MDQueryGetGeneration, __MDQueryGetGroupCount, __MDQueryGetResultAtIndexForGroup, __MDQueryGetResultCountForAllGroups, __MDQueryGetResultCountForGroup, __MDQueryGetSortFlagsForAttribute, __MDQueryIgnoreAllLastUsedUpdatesForItem, __MDQueryIgnoreNextLastUsedUpdateForItem, __MDQueryProcessUpdates, - __MDQuerySendPerformanceFeedback, __MDQuerySetCompletionOptions, + __MDQuerySendPerformanceFeedback, __MDQuerySetAttributedUserQuery, + __MDQuerySetClientBundleID, __MDQuerySetCompletionOptions, __MDQuerySetCompletionQuery, __MDQuerySetCompletionQueryWithWeights, __MDQuerySetCompletionResultCount, __MDQuerySetCreateResultFunctionWithKeyCallBacks, __MDQuerySetGroupComparator, __MDQuerySetGroupingRules, __MDQuerySetHasUpdateNotification, __MDQuerySetLabel, __MDQuerySetMDFilter, __MDQuerySetMDFilterQueries, __MDQuerySetMatchesOnlyFinderFiles, __MDQuerySetMaxCountPerGroup, __MDQuerySetMenuSortFlagsForQuery, __MDQuerySetNoProgress, + __MDQuerySetPommesRanking, __MDQuerySetQueryUnderstanding, __MDQuerySetRankingTerms, __MDQuerySetResultMatchingAttributes, __MDQuerySetSearchScopes, __MDQuerySetSortFlagsForAttribute, - __MDQuerySetSortOrder, __MDQuerySetSortToNone, __MDQuerySortDatesDescending, - __MDQueryStringCopyUserInput, __MDQueryStringCreateForRanking, - __MDQueryStringPreload, __MDQueryTotalCount, __MDQueryUserStringFacetsApplyDoWhileBlock, - __MDQueryWillSendPerformanceFeedback, __MDRankBitForShortcut, - __MDRankIsExactPhraseMatch, __MDRankIsMeaningfulForTopHit, - __MDRankIsOnOldBootVolume, __MDRegisterMailClient, __MDRemoveExtendedAttributes, - __MDRemoveExtendedAttributesForPath, __MDRemoveExtenedAttributes, - __MDRemoveExtenedAttributesForPath, __MDRequestVolumeRecycle, - __MDResumeIndexing, __MDResumeIndexingDirectory, __MDSchemaAddSchemaChangedHandler, - __MDSchemaCopyAll, __MDSchemaCopyAllStringsFiles, __MDSchemaCopyShortDisplayNameForAttribute, - __MDSchemaCopyShortNamesForAttribute, __MDSetExclusion, __MDSetExtendedAttributes, - __MDSetExtendedAttributesForPath, __MDSetLastUsedDate, __MDSetMailMessageAttributes, - __MDSetMailMessageAttributesAtTime, __MDSimpleQueryDeallocate, - __MDSimpleQueryGatherRangesForKeyAndValue, __MDSimpleQueryModifyForMatching, - __MDSimpleQueryObjectMatches, __MDSimpleQuerySetWidcardAttributes, - __MDSoftwareUpdateComplete, __MDStaticAppRankOfItem, __MDStringCompareLocalized, - __MDStringCopyCollationData, __MDStringPrefixOfString, __MDSuspendIndexing, - __MDSuspendIndexingDirectory, __MDTransferExtendedAttributes, - __MDUserListChange, __MDWaitForServerDeath, ___MDItemCopyAttributesEllipsis1, - ___MDItemRemoveAttributesEllipsis1, ___MDItemSetAttributesEllipsis1, + __MDQuerySetSortOrder, __MDQuerySetSortToNone, __MDQuerySetTokenRewrites, + __MDQuerySortDatesDescending, __MDQueryStringCopyUserInput, + __MDQueryStringCreateForRanking, __MDQueryStringPreload, __MDQueryTotalCount, + __MDQueryUserStringFacetsApplyDoWhileBlock, __MDQueryWillSendPerformanceFeedback, + __MDRankBitForShortcut, __MDRankIsExactPhraseMatch, __MDRankIsMeaningfulForTopHit, + __MDRankIsOnOldBootVolume, __MDRegisterFileProviderPaths, + __MDRegisterMailClient, __MDRemoveExtendedAttributes, __MDRemoveExtendedAttributesForPath, + __MDRemoveExtenedAttributes, __MDRemoveExtenedAttributesForPath, + __MDRequestVolumeRecycle, __MDResumeIndexing, __MDResumeIndexingDirectory, + __MDSchemaAddSchemaChangedHandler, __MDSchemaCopyAll, __MDSchemaCopyAllStringsFiles, + __MDSchemaCopyShortDisplayNameForAttribute, __MDSchemaCopyShortNamesForAttribute, + __MDSetExclusion, __MDSetExtendedAttributes, __MDSetExtendedAttributesForPath, + __MDSetLastUsedDate, __MDSetMailMessageAttributes, __MDSetMailMessageAttributesAtTime, + __MDSimpleQueryDeallocate, __MDSimpleQueryGatherRangesForKeyAndValue, + __MDSimpleQueryModifyForMatching, __MDSimpleQueryObjectMatches, + __MDSimpleQuerySetWidcardAttributes, __MDSoftwareUpdateComplete, + __MDStaticAppRankOfItem, __MDStringCompareLocalized, __MDStringCopyCollationData, + __MDStringPrefixOfString, __MDSuspendIndexing, __MDSuspendIndexingDirectory, + __MDTransferExtendedAttributes, __MDUserListChange, __MDWaitForServerDeath, + ___MDItemCopyAttributesEllipsis1, ___MDItemRemoveAttributesEllipsis1, + ___MDItemSetAttributesEllipsis1, __kMDAttributedUserQuery, __kMDImportIsForBackup, __kMDImporterTextLimitInK, __kMDItemAdamID, __kMDItemContentChangeDate, __kMDItemCreationDate, __kMDItemCreatorCode, __kMDItemExportImporterAvaliable, __kMDItemFSContentType, @@ -244,11 +248,15 @@ exports: __kMDItemOwnerUserID, __kMDItemPrescanCandidate, __kMDItemServerVersion, __kMDItemSharedItemCurrentUserRole, __kMDItemSharedProjectID, __kMDItemSortIdentityAttr, __kMDItemStaticInterestScore, __kMDItemSupportFileType, - __kMDItemTextContentIndexExists, __kMDItemTypeCode, __kMDItemUserTags, - __kMDParametersForImporter, __kMDQueryItemInScopeForRankingOnly, - __kMDQueryScope, __kMDUserQueryAttributedInputDateKey, __kMDUserQueryAttributedInputRecipientKey, - __kMDUserQueryAttributedInputSenderKey, __kMDUserQueryAttributedInputTitleKey, - __kMDUserQueryAttributedInputTopicKey, __kMDUserQueryDictionaryQueryAttributedInputKey, + __kMDItemTextContentIndexExists, __kMDItemTypeCode, __kMDItemURLCanBeHiddenBySystem, + __kMDItemUserTags, __kMDParametersForImporter, __kMDQueryAnnSearchParams, + __kMDQueryClientBundleID, __kMDQueryItemInScopeForRankingOnly, + __kMDQueryPommesRanking, __kMDQueryScope, __kMDQueryTokenRewrites, + __kMDQueryUnderstanding, __kMDUserQueryAttributedInputDateKey, + __kMDUserQueryAttributedInputRecipientKey, __kMDUserQueryAttributedInputSenderKey, + __kMDUserQueryAttributedInputTitleKey, __kMDUserQueryAttributedInputTopicKey, + __kMDUserQueryDictionaryAttributedInputSourceRuleBased, __kMDUserQueryDictionaryAttributedInputSourceU2Based, + __kMDUserQueryDictionaryQueryAttributedInputKey, __kMDUserQueryDictionaryQueryAttributedInputSourcesKey, __kMDUserQueryDictionaryQueryConfidenceHighValue, __kMDUserQueryDictionaryQueryConfidenceKey, __kMDUserQueryDictionaryQueryConfidenceLowValue, __kMDUserQueryDictionaryQueryConfidenceMediumValue, __kMDUserQueryDictionaryQueryConfidenceNoneValue, __kMDUserQueryDictionaryQueryDefaultStringKey, @@ -331,8 +339,8 @@ exports: _kMDItemLabelKind, _kMDItemLabelUUID, _kMDItemLanguages, _kMDItemLastUsedDate, _kMDItemLatitude, _kMDItemLayerNames, _kMDItemLensModel, _kMDItemLogicalSize, _kMDItemLongitude, _kMDItemLyricist, _kMDItemMaxAperture, - _kMDItemMediaTypes, _kMDItemMeteringMode, _kMDItemMusicalGenre, - _kMDItemMusicalInstrumentCategory, _kMDItemMusicalInstrumentName, + _kMDItemMediaExtensions, _kMDItemMediaTypes, _kMDItemMeteringMode, + _kMDItemMusicalGenre, _kMDItemMusicalInstrumentCategory, _kMDItemMusicalInstrumentName, _kMDItemNamedLocation, _kMDItemNumberOfPages, _kMDItemOrganizations, _kMDItemOrientation, _kMDItemOriginApplicationIdentifier, _kMDItemOriginMessageID, _kMDItemOriginSenderDisplayName, @@ -360,8 +368,9 @@ exports: _kMDItemUserSharedSentRecipientHandle, _kMDItemUserSharedSentSender, _kMDItemUserSharedSentSenderHandle, _kMDItemUserSharedSentTransport, _kMDItemUserTags, _kMDItemVersion, _kMDItemVideoBitRate, _kMDItemWhereFroms, - _kMDItemWhiteBalance, _kMDLabelAddedNotification, _kMDLabelAttributeBits, - _kMDLabelBundleURL, _kMDLabelChangedNotification, _kMDLabelContentChangeDate, + _kMDItemWhiteBalance, _kMDItemXMPCredit, _kMDItemXMPDigitalSourceType, + _kMDLabelAddedNotification, _kMDLabelAttributeBits, _kMDLabelBundleURL, + _kMDLabelChangedNotification, _kMDLabelContentChangeDate, _kMDLabelDisplayName, _kMDLabelExtendedFinderColor, _kMDLabelHasPreviewIcon, _kMDLabelID, _kMDLabelIconData, _kMDLabelIconURL, _kMDLabelIconUUID, _kMDLabelIsMutuallyExclusiveSetMember, _kMDLabelKind, _kMDLabelKindIsMutuallyExclusiveSetKey, @@ -379,9 +388,9 @@ exports: _kMDQueryMatchOnlyFinderFiles, _kMDQueryMatchSupportFiles, _kMDQueryMaxCount, _kMDQueryNoProgress, _kMDQueryNoRewrite, _kMDQueryOptionContextIdentifier, _kMDQueryOptionFinderLabelsDict, - _kMDQueryOptionFinderLabelsDictLocale, _kMDQueryProgressNotification, - _kMDQueryQoSClass, _kMDQueryResultContentRelevance, _kMDQueryResultGroupId, - _kMDQueryResultMLRelevance, _kMDQueryResultMatchedDisplayNameField, + _kMDQueryOptionFinderLabelsDictLocale, _kMDQueryOptionSPQUParse, + _kMDQueryProgressNotification, _kMDQueryQoSClass, _kMDQueryResultContentRelevance, + _kMDQueryResultGroupId, _kMDQueryResultMLRelevance, _kMDQueryResultMatchedDisplayNameField, _kMDQueryResultMatchedExtraQueriesField, _kMDQueryResultMatchedFields, _kMDQueryResultMatchingAttributes, _kMDQueryResultMatchingSceneIdentifiers, _kMDQueryResultMenuRelevance, _kMDQueryResultNewMatchedExtraQueriesField, @@ -413,9 +422,9 @@ reexports: arm64e-macos, arm64e-maccatalyst ] symbols: [ _MDChildPlistBytesContextCreate, _MDChildPlistBytesContextDestroy, _MDPlistArrayGetCount, _MDPlistArrayGetPlistObjectAtIndex, - _MDPlistArrayIterate, _MDPlistBooleanGetValue, _MDPlistBytesAddBoolean, - _MDPlistBytesAddCString, _MDPlistBytesAddData, _MDPlistBytesAddDate, - _MDPlistBytesAddInteger, _MDPlistBytesAddInternedCString, + _MDPlistArrayIterate, _MDPlistArrayIterateWithError, _MDPlistBooleanGetValue, + _MDPlistBytesAddBoolean, _MDPlistBytesAddCString, _MDPlistBytesAddData, + _MDPlistBytesAddDate, _MDPlistBytesAddInteger, _MDPlistBytesAddInternedCString, _MDPlistBytesAddNull, _MDPlistBytesAddPlistBytes, _MDPlistBytesAddRawInternedCStringKey, _MDPlistBytesAddRawInternedCStringKeyWithString, _MDPlistBytesAddReal, _MDPlistBytesAddString, _MDPlistBytesAddUUID, _MDPlistBytesAppendMultiplePlistBytes, @@ -449,12 +458,13 @@ reexports: _MDPlistContainerEndContainer, _MDPlistContainerEndDictionary, _MDPlistContainerGetBytes, _MDPlistContainerGetLength, _MDPlistContainerGetPlistObjectAtKeyArray, _MDPlistContainerGetPlistObjectAtKeyPath, _MDPlistContainerHasObjectAtKeyPath, + _MDPlistContainerValidateRootObject, _MDPlistContainerValidateRootObjectFromBytes, _MDPlistContainerWillUseMalloc, _MDPlistDataGetBytePtr, _MDPlistDateGetValue, _MDPlistDictionaryGetCount, _MDPlistDictionaryGetPlistObjectForKey, - _MDPlistDictionaryIterate, _MDPlistEmbeddedReferenceToPlistObject, - _MDPlistEnumerateQueryResults, _MDPlistGetPlistObjectSize, - _MDPlistGetPlistObjectType, _MDPlistGetRootPlistObject, _MDPlistNumberGetDoubleValue, - _MDPlistNumberGetIntValue, _MDPlistPlistObjectToEmbeddedReference, + _MDPlistDictionaryIterate, _MDPlistDictionaryIterateWithError, + _MDPlistEmbeddedReferenceToPlistObject, _MDPlistEnumerateQueryResults, + _MDPlistGetPlistObjectSize, _MDPlistGetPlistObjectType, _MDPlistGetRootPlistObject, + _MDPlistNumberGetDoubleValue, _MDPlistNumberGetIntValue, _MDPlistPlistObjectToEmbeddedReference, _MDPlistReferenceToPlistObject, _MDPlistStringGetValue, _MDPlistUUIDGetValue, _MDSPathFilterDumpRawFilterInternal, _MDStoreOIDArrayAddOID, _MDStoreOIDArrayAppendOIDArray, _MDStoreOIDArrayApplyBlock, @@ -465,7 +475,7 @@ reexports: _MDStoreOIDArrayCreateMutableWithOids, _MDStoreOIDArrayCreateWithDeallocator, _MDStoreOIDArrayEndBulkAdd, _MDStoreOIDArrayEndSequence, _MDStoreOIDArrayGetMappedVector, _MDStoreOIDArrayGetTypeID, _MDStoreOIDArrayGetVector, _MDStoreOIDArrayGetVectorCount, - _MDStoreOIDArrayRoom, _MDStoreOIDArraySetShouldDeallocate, + _MDStoreOIDArrayIsMutable, _MDStoreOIDArrayRoom, _MDStoreOIDArraySetShouldDeallocate, _MDStoreOIDArraySetShouldUseMalloc, _MDUniquiedStringDictCreate, __MDPlistBytesAddObject, __MDPlistBytesAddUInt64Array, __MDPlistBytesAddURL, __MDPlistBytesAppendChunk, __MDPlistBytesFirstChunk, __MDPlistBytesNextChunk, diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices.tbd b/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices.tbd index 8d26cee2..d9d8e668 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices.tbd +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices.tbd @@ -11,100 +11,44 @@ parent-umbrella: exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] - symbols: [ _AlertSoundPlay, _AlertSoundPlayCustomSound, _BatteryCount, - _CSGetDefaultIdentityAuthority, _CSGetLocalIdentityAuthority, - _CSGetManagedIdentityAuthority, _CSIdentityAddAlias, _CSIdentityAddMember, - _CSIdentityAuthenticateUsingPassword, _CSIdentityAuthorityCopyLocalizedName, - _CSIdentityAuthorityGetTypeID, _CSIdentityCommit, _CSIdentityCommitAsynchronously, - _CSIdentityCreate, _CSIdentityCreateCopy, _CSIdentityCreateGroupMembershipQuery, - _CSIdentityCreatePersistentReference, _CSIdentityDelete, _CSIdentityGetAliases, - _CSIdentityGetAuthority, _CSIdentityGetCertificate, _CSIdentityGetClass, - _CSIdentityGetEmailAddress, _CSIdentityGetFullName, _CSIdentityGetImageData, - _CSIdentityGetImageDataType, _CSIdentityGetImageURL, _CSIdentityGetPosixID, - _CSIdentityGetPosixName, _CSIdentityGetTypeID, _CSIdentityGetUUID, - _CSIdentityIsCommitting, _CSIdentityIsEnabled, _CSIdentityIsHidden, - _CSIdentityIsMemberOfGroup, _CSIdentityQueryCopyResults, _CSIdentityQueryCreate, - _CSIdentityQueryCreateForCurrentUser, _CSIdentityQueryCreateForName, - _CSIdentityQueryCreateForPersistentReference, _CSIdentityQueryCreateForPosixID, - _CSIdentityQueryCreateForUUID, _CSIdentityQueryExecute, _CSIdentityQueryExecuteAsynchronously, - _CSIdentityQueryGetTypeID, _CSIdentityQueryStop, _CSIdentityRemoveAlias, - _CSIdentityRemoveClient, _CSIdentityRemoveMember, _CSIdentitySetCertificate, - _CSIdentitySetEmailAddress, _CSIdentitySetFullName, _CSIdentitySetImageData, - _CSIdentitySetImageURL, _CSIdentitySetIsEnabled, _CSIdentitySetPassword, - _CurrentProcessorSpeed, _GetCPUSpeed, _KCAddCallback, _KCCopyItem, - _KCCountKeychains, _KCDeleteItem, _KCFindAppleSharePassword, - _KCFindFirstItem, _KCFindGenericPassword, _KCFindInternetPassword, - _KCFindInternetPasswordWithPath, _KCFindNextItem, _KCGetAttribute, - _KCGetData, _KCGetDefaultKeychain, _KCGetIndKeychain, _KCGetKeychain, - _KCGetKeychainManagerVersion, _KCGetKeychainName, _KCGetStatus, - _KCIsInteractionAllowed, _KCLock, _KCMakeAliasFromKCRef, _KCMakeKCRefFromAlias, - _KCMakeKCRefFromFSRef, _KCNewItem, _KCReleaseItem, _KCReleaseKeychain, - _KCReleaseSearch, _KCRemoveCallback, _KCSetAttribute, _KCSetData, - _KCSetDefaultKeychain, _KCSetInteractionAllowed, _KCUnlockNoUI, - _KCUpdateItem, _MakeAppleSharePasswordKCItemRef, _MakeGenericPasswordKCItemRef, - _MakeInternetPasswordKCItemRef, _MaximumProcessorSpeed, _MinimumProcessorSpeed, - _SecNewAFPXVolMountInfo, _Sleep, _SleepQInstall, _SleepQRemove, + symbols: [ _AlertSoundPlay, _AlertSoundPlayCustomSound, _CSIdentityAuthorityCopyLocalizedName, + _CSIdentityAuthorityGetTypeID, _CSIdentityCreateCopy, _CSIdentityCreatePersistentReference, + _CSIdentityGetAuthority, _CSIdentityGetClass, _CSIdentityGetFullName, + _CSIdentityGetPosixName, _CSIdentityGetTypeID, _CSIdentityQueryCopyResults, + _CSIdentityQueryCreateForName, _CSIdentityQueryCreateForPersistentReference, + _CSIdentityQueryExecute, _CSIdentityQueryExecuteAsynchronously, + _CSIdentityQueryGetTypeID, _CSIdentityQueryStop, _SecNewAFPXVolMountInfo, _SystemSoundGetActionID, _SystemSoundGetProperty, _SystemSoundGetPropertyInfo, _SystemSoundPlay, _SystemSoundRemoveActionID, _SystemSoundRemoveCompletionRoutine, _SystemSoundSetCompletionRoutine, _SystemSoundSetProperty, - _UpdateSystemActivity, _WSGetCFTypeIDFromWSTypeID, _WSGetWSTypeIDFromCFType, - _WSMethodInvocationAddDeserializationOverride, _WSMethodInvocationAddSerializationOverride, - _WSMethodInvocationCopyParameters, _WSMethodInvocationCopyProperty, - _WSMethodInvocationCopySerialization, _WSMethodInvocationCreate, - _WSMethodInvocationCreateFromSerialization, _WSMethodInvocationGetTypeID, - _WSMethodInvocationInvoke, _WSMethodInvocationScheduleWithRunLoop, - _WSMethodInvocationSetCallBack, _WSMethodInvocationSetParameters, - _WSMethodInvocationSetProperty, _WSMethodInvocationUnscheduleFromRunLoop, - _WSMethodResultIsFault, _WSProtocolHandlerCopyFaultDocument, - _WSProtocolHandlerCopyProperty, _WSProtocolHandlerCopyReplyDictionary, - _WSProtocolHandlerCopyReplyDocument, _WSProtocolHandlerCopyRequestDictionary, - _WSProtocolHandlerCopyRequestDocument, _WSProtocolHandlerCreate, - _WSProtocolHandlerGetTypeID, _WSProtocolHandlerSetDeserializationOverride, - _WSProtocolHandlerSetProperty, _WSProtocolHandlerSetSerializationOverride, __AppleIDAuthenticatePassword, __AppleIDAuthenticatePasswordWithBlock, __AppleIDAuthenticationAddAppleID, __AppleIDAuthenticationAddAppleIDWithBlock, - __AppleIDAuthenticationCopyAppleIDs, __AppleIDAuthenticationCopyCertificateInfo, - __AppleIDAuthenticationCopyCertificateInfoWithBlock, __AppleIDAuthenticationCopyMyInfo, - __AppleIDAuthenticationCopyMyInfoWithBlock, __AppleIDAuthenticationCopyStatus, - __AppleIDAuthenticationCopyStatusWithBlock, __AppleIDAuthenticationFindPerson, - __AppleIDAuthenticationFindPersonWithBlock, __AppleIDAuthenticationForgetAppleID, - __AppleIDAuthenticationForgetAppleIDWithBlock, __AppleIDBreadcrumbCheckinWithBlock, - __AppleIDCopyDSIDForCertificate, __AppleIDCopySecIdentityForAppleIDAccount, - __AppleIDGetBreadcrumbEncryptedKeyWithBlock, __AppleIDSetBreadcrumbEncryptedKeyWithBlock, - __AppleIDUpdateLinkedIdentityProvisioning, __AppleIDUpdateLinkedIdentityProvisioningWithBlock, - __CSAddAppleIDAccount, __CSAddAppleIDAccountUsingCompletionBlock, - __CSBackToMyMacCopyDomain, __CSBackToMyMacCopyDomains, __CSBackToMyMacDisableEveryone, - __CSBackToMyMacIsEnabledForSomeUser, __CSBackToMyMacResetForUser, - __CSCopyAccountIdentifierForAppleIDCertificate, __CSCopyAccountIdentifierForAppleIDCertificateChain, - __CSCopyAccountInfoForAppleID, __CSCopyAccountStatusForAppleID, - __CSCopyAppleIDAccountForAppleIDCertificate, __CSCopyAppleIDAccounts, - __CSCopyCommentForServerName, __CSCopyDefaultSharingSecIdentities, - __CSCopyKerberosPrincipalForCertificate, __CSCopyLocalHostnameForComputerName, - __CSCopySecIdentityForAppleID, __CSCopyUserIdentityForPersonInfo, + __AppleIDAuthenticationCopyAppleIDs, __AppleIDAuthenticationCopyAppleIDsWithBlock, + __AppleIDAuthenticationCopyCertificateInfo, __AppleIDAuthenticationCopyCertificateInfoWithBlock, + __AppleIDAuthenticationCopyMyInfo, __AppleIDAuthenticationCopyMyInfoWithBlock, + __AppleIDAuthenticationCopyStatus, __AppleIDAuthenticationCopyStatusWithBlock, + __AppleIDAuthenticationFindPerson, __AppleIDAuthenticationFindPersonWithBlock, + __AppleIDAuthenticationForgetAppleID, __AppleIDAuthenticationForgetAppleIDWithBlock, + __AppleIDBreadcrumbCheckinWithBlock, __AppleIDCopyDSIDForCertificate, + __AppleIDCopySecIdentityForAppleIDAccount, __AppleIDGetBreadcrumbEncryptedKeyWithBlock, + __AppleIDSetBreadcrumbEncryptedKeyWithBlock, __AppleIDUpdateLinkedIdentityProvisioning, + __AppleIDUpdateLinkedIdentityProvisioningWithBlock, __CSAddAppleIDAccount, + __CSAddAppleIDAccountUsingCompletionBlock, __CSBackToMyMacCopyDomain, + __CSBackToMyMacCopyDomains, __CSCopyAccountIdentifierForAppleIDCertificate, + __CSCopyAccountIdentifierForAppleIDCertificateChain, __CSCopyAccountInfoForAppleID, + __CSCopyAccountStatusForAppleID, __CSCopyAppleIDAccountForAppleIDCertificate, + __CSCopyAppleIDAccounts, __CSCopyCommentForServerName, __CSCopyDefaultSharingSecIdentities, + __CSCopyLocalHostnameForComputerName, __CSCopySecIdentityForAppleID, __CSCreateAppleIDIdentityWithCertificate, __CSCreateAppleIDIdentityWithCertificateChain, __CSCreateAppleIDIdentityWithNameAndAccountIdentifier, __CSCreatePosixNameFromString, __CSDefaultLog, __CSDeviceSupportsAirDrop, __CSDeviceSupportsODisk, __CSDisassociateWireless, __CSEnableWirelessP2P, __CSGetAppleIDIdentityAuthority, - __CSIdentityAddLinkedIdentityWithNameAndAuthority, __CSIdentityAllowsPasswordResetWithAuthority, - __CSIdentityAllowsPasswordResetWithAuthorityFromDSAttrData, __CSIdentityAuthenticateUsingCertificate, __CSIdentityAuthenticateUsingCertificateChain, - __CSIdentityAuthenticateUsingPassword, __CSIdentityAuthorityAuthenticateNameAndPassword, - __CSIdentityAuthorityCopyIdentityWithName, __CSIdentityChangePassword, - __CSIdentityCopyCurrentUser, __CSIdentityCopyLinkedIdentityAuthorities, - __CSIdentityCopyLinkedIdentityNameWithAuthorityFromDSAttrData, - __CSIdentityCopyLinkedIdentityNamesWithAuthority, __CSIdentityCopyLinkedIdentityNamesWithAuthorityFromDSAttrData, - __CSIdentityGetHomeDirectoryURL, __CSIdentityGetLinkedIdentityNameWithAuthority, - __CSIdentityGetLoginShellURL, __CSIdentityIsLoginUser, __CSIdentityRemoveLinkedIdentityWithAuthority, - __CSIdentityRemoveLinkedIdentityWithNameAndAuthority, __CSIdentitySetAllowsPasswordResetWithAuthority, - __CSIdentityUpdateLinkedIdentityProvisioning, __CSIsComputerToComputerEnabled, - __CSIsCurrentUserAdmin, __CSIsMobileTimeMachineDisk, __CSIsMobileTimeMachineEnabled, - __CSIsOpticalDisk, __CSIsWirelessAccessPointEnabled, __CSIsWirelessP2PEnabled, + __CSIdentityAuthorityCopyIdentityWithName, __CSIdentityUpdateLinkedIdentityProvisioning, + __CSIsComputerToComputerEnabled, __CSIsWirelessAccessPointEnabled, __CSLinkCurrentUserToAppleIDWithVerifiedAccountIdentifier, - __CSRemoveAppleIDAccount, __CSRemoveDotMacIdentitiesFromKeychain, - __CSUnlinkCurrentUserFromAppleID, __ISGetIconIndex, __ISGetIconIndexInfo, - __ISIconIndexHasJPEGFlag, __LWCopyNextFireDateForScheduledAction, - __LWRemoveScheduledAction, __LWScheduleCommandAction, __LWScheduleOpenItemAction, - __LWScheduleOpenURLAction, __LWSchedulerNotifyPortName, __OSS_InstallGestaltSelectors, + __CSRemoveAppleIDAccount, __CSUnlinkCurrentUserFromAppleID, + __ISGetIconIndexInfo, __ISIconIndexHasJPEGFlag, __OSS_InstallGestaltSelectors, __kCSAppleIDAccountAllEmailAddresses, __kCSAppleIDAccountAppleID, __kCSAppleIDAccountCertificateExpirationDate, __kCSAppleIDAccountCertificateSerialNumber, __kCSAppleIDAccountFirstName, __kCSAppleIDAccountLastName, @@ -124,8 +68,67 @@ exports: _kAppleIDValidatedItemsRecordDataCertificateType, _kAppleIDValidationRecordOptionDoNotCheckValidAsOfDateKey, _kAppleIDValidationRecordOptionDoNotCheckVersionKey, _kAppleIDValidationRecordOptionDoNotEvaluateTrustRefKey, _kAppleIDValidationRecordOptionOverrideSuggestedDurationValueKey, - _kCSIdentityErrorDomain, _kCSIdentityGeneratePosixName, _kISIconResType, - _kWSAuthInfo, _kWSAuthInfo_authScheme, _kWSAuthInfo_forProxy, + _kCSIdentityErrorDomain ] + - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] + symbols: [ _BatteryCount, _CSGetDefaultIdentityAuthority, _CSGetLocalIdentityAuthority, + _CSGetManagedIdentityAuthority, _CSIdentityAddAlias, _CSIdentityAddMember, + _CSIdentityAuthenticateUsingPassword, _CSIdentityCommit, _CSIdentityCommitAsynchronously, + _CSIdentityCreate, _CSIdentityCreateGroupMembershipQuery, + _CSIdentityDelete, _CSIdentityGetAliases, _CSIdentityGetCertificate, + _CSIdentityGetEmailAddress, _CSIdentityGetImageData, _CSIdentityGetImageDataType, + _CSIdentityGetImageURL, _CSIdentityGetPosixID, _CSIdentityGetUUID, + _CSIdentityIsCommitting, _CSIdentityIsEnabled, _CSIdentityIsHidden, + _CSIdentityIsMemberOfGroup, _CSIdentityQueryCreate, _CSIdentityQueryCreateForCurrentUser, + _CSIdentityQueryCreateForPosixID, _CSIdentityQueryCreateForUUID, + _CSIdentityRemoveAlias, _CSIdentityRemoveClient, _CSIdentityRemoveMember, + _CSIdentitySetCertificate, _CSIdentitySetEmailAddress, _CSIdentitySetFullName, + _CSIdentitySetImageData, _CSIdentitySetImageURL, _CSIdentitySetIsEnabled, + _CSIdentitySetPassword, _CurrentProcessorSpeed, _DisposeKCCallbackUPP, + _DisposeSleepQUPP, _GetCPUSpeed, _InvokeKCCallbackUPP, _InvokeSleepQUPP, + _KCAddCallback, _KCCopyItem, _KCCountKeychains, _KCDeleteItem, + _KCFindAppleSharePassword, _KCFindFirstItem, _KCFindGenericPassword, + _KCFindInternetPassword, _KCFindInternetPasswordWithPath, + _KCFindNextItem, _KCGetAttribute, _KCGetData, _KCGetDefaultKeychain, + _KCGetIndKeychain, _KCGetKeychain, _KCGetKeychainManagerVersion, + _KCGetKeychainName, _KCGetStatus, _KCIsInteractionAllowed, + _KCLock, _KCMakeAliasFromKCRef, _KCMakeKCRefFromAlias, _KCMakeKCRefFromFSRef, + _KCNewItem, _KCReleaseItem, _KCReleaseKeychain, _KCReleaseSearch, + _KCRemoveCallback, _KCSetAttribute, _KCSetData, _KCSetDefaultKeychain, + _KCSetInteractionAllowed, _KCUnlockNoUI, _KCUpdateItem, _MakeAppleSharePasswordKCItemRef, + _MakeGenericPasswordKCItemRef, _MakeInternetPasswordKCItemRef, + _MaximumProcessorSpeed, _MinimumProcessorSpeed, _NewKCCallbackUPP, + _NewSleepQUPP, _Sleep, _SleepQInstall, _SleepQRemove, _UpdateSystemActivity, + _WSGetCFTypeIDFromWSTypeID, _WSGetWSTypeIDFromCFType, _WSMethodInvocationAddDeserializationOverride, + _WSMethodInvocationAddSerializationOverride, _WSMethodInvocationCopyParameters, + _WSMethodInvocationCopyProperty, _WSMethodInvocationCopySerialization, + _WSMethodInvocationCreate, _WSMethodInvocationCreateFromSerialization, + _WSMethodInvocationGetTypeID, _WSMethodInvocationInvoke, _WSMethodInvocationScheduleWithRunLoop, + _WSMethodInvocationSetCallBack, _WSMethodInvocationSetParameters, + _WSMethodInvocationSetProperty, _WSMethodInvocationUnscheduleFromRunLoop, + _WSMethodResultIsFault, _WSProtocolHandlerCopyFaultDocument, + _WSProtocolHandlerCopyProperty, _WSProtocolHandlerCopyReplyDictionary, + _WSProtocolHandlerCopyReplyDocument, _WSProtocolHandlerCopyRequestDictionary, + _WSProtocolHandlerCopyRequestDocument, _WSProtocolHandlerCreate, + _WSProtocolHandlerGetTypeID, _WSProtocolHandlerSetDeserializationOverride, + _WSProtocolHandlerSetProperty, _WSProtocolHandlerSetSerializationOverride, + __CSBackToMyMacDisableEveryone, __CSBackToMyMacIsEnabledForSomeUser, + __CSBackToMyMacResetForUser, __CSCopyKerberosPrincipalForCertificate, + __CSCopyUserIdentityForPersonInfo, __CSIdentityAddLinkedIdentity, + __CSIdentityAddLinkedIdentityWithNameAndAuthority, __CSIdentityAllowsPasswordResetWithAuthority, + __CSIdentityAllowsPasswordResetWithAuthorityFromDSAttrData, + __CSIdentityAuthenticateUsingPassword, __CSIdentityAuthorityAuthenticateNameAndPassword, + __CSIdentityChangePassword, __CSIdentityCopyCurrentUser, __CSIdentityCopyLinkedIdentityAuthorities, + __CSIdentityCopyLinkedIdentityNameWithAuthorityFromDSAttrData, + __CSIdentityCopyLinkedIdentityNamesWithAuthority, __CSIdentityCopyLinkedIdentityNamesWithAuthorityFromDSAttrData, + __CSIdentityGetHomeDirectoryURL, __CSIdentityGetLinkedIdentityNameWithAuthority, + __CSIdentityGetLoginShellURL, __CSIdentityIsLoginUser, __CSIdentityRemoveLinkedIdentityWithAuthority, + __CSIdentityRemoveLinkedIdentityWithNameAndAuthority, __CSIdentitySetAllowsPasswordResetWithAuthority, + __CSIsCurrentUserAdmin, __CSIsMobileTimeMachineDisk, __CSIsMobileTimeMachineEnabled, + __CSIsOpticalDisk, __CSRemoveDotMacIdentitiesFromKeychain, + __ISGetIconIndex, __LWCopyNextFireDateForScheduledAction, + __LWRemoveScheduledAction, __LWScheduleCommandAction, __LWScheduleOpenItemAction, + __LWScheduleOpenURLAction, __LWSchedulerNotifyPortName, _kCSIdentityGeneratePosixName, + _kISIconResType, _kWSAuthInfo, _kWSAuthInfo_authScheme, _kWSAuthInfo_forProxy, _kWSAuthInfo_password, _kWSAuthInfo_user, _kWSDebugIncomingBody, _kWSDebugIncomingHeaders, _kWSDebugOutgoingBody, _kWSDebugOutgoingHeaders, _kWSFaultCode, _kWSFaultExtra, _kWSFaultString, _kWSHTTPExtraHeaders, diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKAnalysis.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKAnalysis.h index cd2e0f0d..241a8e27 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKAnalysis.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKAnalysis.h @@ -3,9 +3,9 @@ Contains: SearchKit Interfaces. - Version: SearchKit-417.1 + Version: SearchKit-417.5 - Copyright: 2003-2019 by Apple, Inc., all rights reserved + Copyright: © 2003–2023 Apple Inc. All rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKDocument.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKDocument.h index 6aeb0bf8..7306fed9 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKDocument.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKDocument.h @@ -3,9 +3,9 @@ Contains: SearchKit Interfaces. - Version: SearchKit-417.1 + Version: SearchKit-417.5 - Copyright: 2003-2019 by Apple, Inc., all rights reserved + Copyright: © 2003–2023 Apple Inc. All rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKIndex.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKIndex.h index a2c5e095..1a8a5f3a 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKIndex.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKIndex.h @@ -3,9 +3,9 @@ Contains: SearchKit Interfaces. - Version: SearchKit-417.1 + Version: SearchKit-417.5 - Copyright: 2003-2019 by Apple, Inc., all rights reserved + Copyright: © 2003–2023 Apple Inc. All rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKSearch.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKSearch.h index 878d84ac..b02d0a35 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKSearch.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKSearch.h @@ -3,9 +3,9 @@ Contains: SearchKit Interfaces. - Version: SearchKit-417.1 + Version: SearchKit-417.5 - Copyright: 2003-2019 by Apple, Inc., all rights reserved + Copyright: © 2003–2023 Apple Inc. All rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKSummary.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKSummary.h index 2990e7a0..ef8e1bb2 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKSummary.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SKSummary.h @@ -3,9 +3,9 @@ Contains: SearchKit Interfaces. - Version: SearchKit-417.1 + Version: SearchKit-417.5 - Copyright: 2004-2019 by Apple, Inc., all rights reserved + Copyright: © 2004–2023 Apple Inc. All rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SearchKit.h b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SearchKit.h index b8ba1c4c..4f0264c1 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SearchKit.h +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/Headers/SearchKit.h @@ -3,9 +3,9 @@ Contains: SearchKit Interfaces. - Version: SearchKit-417.1 + Version: SearchKit-417.5 - Copyright: 2003-2019 by Apple, Inc., all rights reserved + Copyright: © 2003–2023 Apple Inc. All rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit.tbd b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit.tbd index ade8ea7c..6c9c456a 100644 --- a/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit.tbd +++ b/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit.tbd @@ -3,98 +3,23 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit' -current-version: 417.1 +current-version: 417.5 parent-umbrella: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] umbrella: CoreServices exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, - arm64e-macos, arm64e-maccatalyst ] - symbols: [ _AIATFree, _AIATGetAllocator, _AIATMalloc, _AIATRegisterReportErrorUPP, - _AIATSetAllocator, _DisposeIASearchIsHitFilterUPP, _IACFDataDocAccessorCreate, - _IACFDataDocAccessorDispose, _IADocKeyAccessorCreate, _IADocKeyAccessorLength, - _IADocKeyAccessorRead, _IADocKeyAccessorRelease, _IADocKeyAccessorRetain, - _IADocKeyCanCreateAccessor, _IADocKeyCanCreateIterator, _IADocKeyCompare, - _IADocKeyCopyFilePath, _IADocKeyCopyMIMEType, _IADocKeyCopyModDate, - _IADocKeyCopyURL, _IADocKeyCopyURLEncodedName, _IADocKeyCreate, - _IADocKeyCreateFromFSRef, _IADocKeyCreateFromFilePath, _IADocKeyGetFSRef, - _IADocKeyGetName, _IADocKeyGetParent, _IADocKeyGetSchemeName, - _IADocKeyIteratorCopyNextDoc, _IADocKeyIteratorCreate, _IADocKeyIteratorDispose, - _IADocKeyRelease, _IADocKeyRetain, _IAGetHFSDocSchemeName, - _IAIndexAddDoc, _IAIndexAddDocAsync, _IAIndexAddDocWithTextStream, - _IAIndexAddDocWithTextStreamAsync, _IAIndexCompact, _IAIndexCompactAsync, - _IAIndexCopyDocKeyFromID, _IAIndexCopyDocProperties, _IAIndexCopyDocTermIDArrray, - _IAIndexCopyTermData, _IAIndexCopyTermDocIDArrray, _IAIndexDocIteratorCopyNext, - _IAIndexDocIteratorCreate, _IAIndexDocIteratorDispose, _IAIndexFlush, - _IAIndexGetBytesForUpdate, _IAIndexGetDocKeyID, _IAIndexGetDocState, - _IAIndexGetDocTermCount, _IAIndexGetDocTermFrequency, _IAIndexGetMaxDocID, - _IAIndexGetMaxTermID, _IAIndexGetNumDocuments, _IAIndexGetRootDocKeyCount, - _IAIndexGetRootDocKeys, _IAIndexGetStorage, _IAIndexGetTermDocCount, - _IAIndexGetTermID, _IAIndexGetTextAnalysisTypeCount, _IAIndexGetTextAnalysisTypes, - _IAIndexGetType, _IAIndexInitialize, _IAIndexInitializeFromFSRef, - _IAIndexInitializeFromFilePath, _IAIndexMakeRootDocKey, _IAIndexMoveDoc, - _IAIndexOpen, _IAIndexOpenFromFSRef, _IAIndexOpenFromFilePath, - _IAIndexRelease, _IAIndexRemoveDoc, _IAIndexRemoveDocAsync, - _IAIndexRenameDoc, _IAIndexReplaceRootDocKey, _IAIndexRetain, - _IAIndexSetBytesForUpdate, _IAIndexSetDocProperties, _IAIndexUpdate, - _IAIndexUpdateAsync, _IAInputBlockCreate, _IAInputBlockDispose, - _IAInputBlockGetPosition, _IAInputBlockReadBuffer, _IAInputBlockReadByte, - _IAInputBlockReadCFData, _IAInputBlockReadCFString, _IAInputBlockReadCFType, - _IAInputBlockReadUInt32, _IAInputBlockReadUInt64, _IAInputBlockReadVInt32, - _IAInputBlockReadVInt64, _IALoadDefaultExtractorPlugIns, _IALoadExtractorPlugIn, - _IAMutexCreate, _IAMutexDispose, _IAMutexGetGlobalMutex, _IAMutexLock, - _IAMutexUnlock, _IAOutputBlockCreate, _IAOutputBlockDispose, - _IAOutputBlockGetPosition, _IAOutputBlockWriteBuffer, _IAOutputBlockWriteByte, - _IAOutputBlockWriteCFData, _IAOutputBlockWriteCFString, _IAOutputBlockWriteCFType, - _IAOutputBlockWriteUInt32, _IAOutputBlockWriteUInt64, _IAOutputBlockWriteVInt32, - _IAOutputBlockWriteVInt64, _IASearchResultsCopyMatchingTerms, - _IASearchResultsDispose, _IASearchResultsGetCount, _IASearchResultsGetInfoBulk, - _IASearchSetAddIndices, _IASearchSetCreate, _IASearchSetFindSimilarDocuments, - _IASearchSetGetIndexCount, _IASearchSetGetIndices, _IASearchSetQuery, - _IASearchSetQueryAsync, _IASearchSetRankedQueryFromTextStream, - _IASearchSetRelease, _IASearchSetRetain, _IASearchSetTaskGetSearchResults, - _IASentenceParserCopyNextSentence, _IASentenceParserCreate, - _IASentenceParserRegister, _IASentenceParserRelease, _IASentenceParserRetain, - _IASentenceParserSetSourceText, _IAStorageAllocateBlock, _IAStorageAllocateNamedBlock, - _IAStorageCFDataSize, _IAStorageCFStringSize, _IAStorageCFTypeSize, - _IAStorageCommit, _IAStorageCompact, _IAStorageCopyBlockNames, - _IAStorageCopyFilePath, _IAStorageDeallocateBlock, _IAStorageDeallocateNamedBlock, - _IAStorageFreeSpace, _IAStorageGetBlockSize, _IAStorageGetCFData, - _IAStorageGetDiskBlockSize, _IAStorageGetFSRef, _IAStorageGetMaxBlockID, - _IAStorageGetNamedBlock, _IAStorageGetReadAddress, _IAStorageGetStream, - _IAStorageGetStreamCallbacks, _IAStorageGetType, _IAStorageGetWriteAddress, - _IAStorageIsOpen, _IAStorageIsWritable, _IAStorageLockMutex, - _IAStorageMemoryOpen, _IAStorageOpenFromFSRef, _IAStorageOpenFromFilePath, - _IAStorageRelease, _IAStorageRemoveBlockName, _IAStorageRetain, - _IAStorageSetBlockName, _IAStorageSetDiskBlockSize, _IAStorageTotalSpace, - _IAStorageUnlockMutex, _IAStorageVInt32Size, _IAStorageVInt64Size, - _IASummaryCopyParagraphs, _IASummaryCopyRankedSentenceArray, - _IASummaryCopySentenceArray, _IASummaryCopyText, _IASummaryCreate, - _IASummaryCreateWithQuery, _IASummaryDispose, _IASummaryGetHitCount, - _IASummaryGetNthRankedSentence, _IASummaryGetNthSentence, - _IASummaryGetSentenceCount, _IASummmaryCopyText, _IATaskCancel, - _IATaskCopyProperties, _IATaskCreate, _IATaskDispose, _IATaskGetContext, - _IATaskGetCurrent, _IATaskGetProgress, _IATaskIsDone, _IATaskSetProperties, - _IATaskWasCanceled, _IATaskYield, _IATextAnalysisCreate, _IATextAnalysisGetCallbacks, - _IATextAnalysisGetProperties, _IATextAnalysisGetType, _IATextAnalysisRegister, - _IATextAnalysisRelease, _IATextAnalysisRetain, _IATextAnalysisSetProperties, - _IATextAnalysisUnregister, _IATextStreamCreate, _IATextStreamCreateFromCFData, - _IATextStreamCreateFromCFString, _IATextStreamGetCurrentEncoding, - _IATextStreamRead, _IATextStreamRelease, _IATextStreamRetain, - _IATextStreamRewind, _IATokenizerCreate, _IATokenizerGetNextToken, - _IATokenizerRelease, _IATokenizerRetain, _InvokeIASearchIsHitFilterUPP, - _NewIASearchIsHitFilterUPP, _SKCurrentLocaleData, _SKDocumentCopyText, - _SKDocumentCopyURL, _SKDocumentCreate, _SKDocumentCreateWithURL, - _SKDocumentGetName, _SKDocumentGetParent, _SKDocumentGetSchemeName, - _SKDocumentGetTypeID, _SKIndexAddDocument, _SKIndexAddDocumentWithText, - _SKIndexClose, _SKIndexCompact, _SKIndexContainsContentForDocumentID, - _SKIndexCopyDocumentForDocumentID, _SKIndexCopyDocumentIDArrayForTermID, - _SKIndexCopyDocumentNameForDocumentID, _SKIndexCopyDocumentProperties, - _SKIndexCopyDocumentRefsForDocumentIDs, _SKIndexCopyDocumentURLsForDocumentIDs, - _SKIndexCopyInfoForDocumentIDs, _SKIndexCopyTermIDArrayForDocumentID, - _SKIndexCopyTermStringForTermID, _SKIndexCopyUniqueTerms, - _SKIndexCreateTermIterator, _SKIndexCreateWithMutableData, + - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] + symbols: [ _SKCurrentLocaleData, _SKDocumentCopyText, _SKDocumentCopyURL, + _SKDocumentCreate, _SKDocumentCreateWithURL, _SKDocumentGetName, + _SKDocumentGetParent, _SKDocumentGetSchemeName, _SKDocumentGetTypeID, + _SKIndexAddDocument, _SKIndexAddDocumentWithText, _SKIndexClose, + _SKIndexCompact, _SKIndexContainsContentForDocumentID, _SKIndexCopyDocumentForDocumentID, + _SKIndexCopyDocumentIDArrayForTermID, _SKIndexCopyDocumentNameForDocumentID, + _SKIndexCopyDocumentProperties, _SKIndexCopyDocumentRefsForDocumentIDs, + _SKIndexCopyDocumentURLsForDocumentIDs, _SKIndexCopyInfoForDocumentIDs, + _SKIndexCopyTermIDArrayForDocumentID, _SKIndexCopyTermStringForTermID, + _SKIndexCopyUniqueTerms, _SKIndexCreateTermIterator, _SKIndexCreateWithMutableData, _SKIndexCreateWithURL, _SKIndexDocumentIteratorCopyNext, _SKIndexDocumentIteratorCreate, _SKIndexDocumentIteratorGetTypeID, _SKIndexEnumerateTokens, _SKIndexFlush, _SKIndexFlushCache, _SKIndexFlushInternal, @@ -120,9 +45,7 @@ exports: _SKSummaryCopySentenceSummaryString, _SKSummaryCreateWithString, _SKSummaryGetParagraphCount, _SKSummaryGetParagraphSummaryInfo, _SKSummaryGetSentenceCount, _SKSummaryGetSentenceSummaryInfo, - _SKSummaryGetTypeID, _gSKGlobalFlags, _kIAIndexDefaultAnalysis, - _kIAStoreStreamCFDataType, _kIAStoreStreamFSRefType, _kIAStoreStreamFileType, - _kSKEndTermChars, _kSKLanguageTypes, _kSKMaximumTerms, _kSKMinTermLength, - _kSKProximityIndexing, _kSKStartTermChars, _kSKStopWords, - _kSKSubstitutions, _kSKTermChars ] + _SKSummaryGetTypeID, _gSKGlobalFlags, _kSKEndTermChars, _kSKLanguageTypes, + _kSKMaximumTerms, _kSKMinTermLength, _kSKProximityIndexing, + _kSKStartTermChars, _kSKStopWords, _kSKSubstitutions, _kSKTermChars ] ... diff --git a/Frameworks/CoreText.framework/Versions/A/CoreText.tbd b/Frameworks/CoreText.framework/Versions/A/CoreText.tbd index 1d1c8624..fb5b6272 100644 --- a/Frameworks/CoreText.framework/Versions/A/CoreText.tbd +++ b/Frameworks/CoreText.framework/Versions/A/CoreText.tbd @@ -3,10 +3,37 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText' +current-version: 844.4 +swift-abi-version: 7 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] - symbols: [ _CTCopyDescriptionDictionary, _CTCopySampleStringForLanguage, + symbols: [ '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV11contentType07UniformJ11Identifiers6UTTypeVvgZ', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV11contentType07UniformJ11Identifiers6UTTypeVvpZMV', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV12imageContentAA4DataVvg', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV12imageContentAA4DataVvpMV', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV12imageContentAfA4DataV_tcfC', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV15_convertingFromAFSo010CTAdaptivegH0C_tcfC', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV17contentIdentifierSSvg', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV17contentIdentifierSSvpMV', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV18contentDescriptionSSvg', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV18contentDescriptionSSvpMV', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV2eeoiySbAF_AFtFZ', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV4fromAFs7Decoder_p_tKcfC', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV4hash4intoys6HasherVz_tF', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV6encode2toys7Encoder_p_tKF', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV9hashValueSivg', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphV9hashValueSivpMV', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphVMa', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphVMn', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphVN', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphVSEADMc', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphVSHADMc', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphVSQADMc', + '_$s10Foundation16AttributedStringV8CoreTextE18AdaptiveImageGlyphVSeADMc', + '_$sSo20CTAdaptiveImageGlyphC8CoreTextE09_adaptivebC014convertingFromAB10Foundation16AttributedStringVACE08AdaptivebC0V_tFZ', + _CTCopyDescriptionDictionary, _CTCopyLanguageIdentifierNormalizedForLocalizedNames, + _CTCopySampleStringForLanguage, _CTCreatePathMaskedByLines, _CTFontCollectionCopyFontAttribute, _CTFontCollectionCopyFontAttributes, _CTFontCollectionCreateCopyWithFontDescriptors, _CTFontCollectionCreateForLocale, _CTFontCollectionCreateFromAvailableFonts, _CTFontCollectionCreateMatchingFontDescriptors, @@ -20,14 +47,15 @@ exports: _CTFontCopyDisplayName, _CTFontCopyFamilyName, _CTFontCopyFeatureSettings, _CTFontCopyFeatures, _CTFontCopyFeaturesInternal, _CTFontCopyFontDescriptor, _CTFontCopyFullName, _CTFontCopyGlyphCoverageForFeature, _CTFontCopyGraphicsFont, - _CTFontCopyImageForGlyph, _CTFontCopyLocalizedName, _CTFontCopyLocalizedNameByIDWithLanguages, - _CTFontCopyLocalizedNameWithLanguages, _CTFontCopyLogicalCharacterSet, - _CTFontCopyName, _CTFontCopyNameForGlyph, _CTFontCopyOTFontFeatureTable, - _CTFontCopyOTName, _CTFontCopyPhysicalFont, _CTFontCopyPostScriptName, - _CTFontCopyQuickdrawInstances, _CTFontCopySampleLettersWithLanguages, - _CTFontCopySampleString, _CTFontCopySampleStringForLanguage, - _CTFontCopySampleStringWithLanguages, _CTFontCopyShapingLanguages, - _CTFontCopyStringForGlyph, _CTFontCopySupportedLanguages, + _CTFontCopyImageForGlyph, _CTFontCopyImageFromAdaptiveImageProvider, + _CTFontCopyImageFromEmojiImageProvider, _CTFontCopyLocalizedName, + _CTFontCopyLocalizedNameByIDWithLanguages, _CTFontCopyLocalizedNameWithLanguages, + _CTFontCopyLogicalCharacterSet, _CTFontCopyName, _CTFontCopyNameForGlyph, + _CTFontCopyOTFontFeatureTable, _CTFontCopyOTName, _CTFontCopyPhysicalFont, + _CTFontCopyPostScriptName, _CTFontCopyQuickdrawInstances, + _CTFontCopySampleLettersWithLanguages, _CTFontCopySampleString, + _CTFontCopySampleStringForLanguage, _CTFontCopySampleStringWithLanguages, + _CTFontCopyShapingLanguages, _CTFontCopyStringForGlyph, _CTFontCopySupportedLanguages, _CTFontCopySystemUIFontExcessiveLineHeightCharacterSet, _CTFontCopyTable, _CTFontCopyTallestTextStyleLanguageForString, _CTFontCopyTextScaleRecipeForStringAttributes, _CTFontCopyTraits, _CTFontCopyVariantsOfGlyph, _CTFontCopyVariation, @@ -53,18 +81,20 @@ exports: _CTFontDescriptorCreateMatchingFontDescriptors, _CTFontDescriptorCreateMatchingFontDescriptorsWithOptions, _CTFontDescriptorCreateWithAttributes, _CTFontDescriptorCreateWithAttributesAndOptions, _CTFontDescriptorCreateWithNameAndSize, _CTFontDescriptorCreateWithTextStyle, - _CTFontDescriptorCreateWithTextStyleAndAttributes, _CTFontDescriptorGetClientObject, - _CTFontDescriptorGetContentSizeCategoryFromIndex, _CTFontDescriptorGetContentSizeCategoryIndex, - _CTFontDescriptorGetDefaultTextStylePlatform, _CTFontDescriptorGetLanguageAwareTextStyleSize, - _CTFontDescriptorGetOptions, _CTFontDescriptorGetSymbolicTraits, - _CTFontDescriptorGetTextStyleSize, _CTFontDescriptorGetTextStyleWithSymbolicTraits, - _CTFontDescriptorGetTypeID, _CTFontDescriptorGetWeight, _CTFontDescriptorHasPostScriptNameAlias, + _CTFontDescriptorCreateWithTextStyleAndAttributes, _CTFontDescriptorDownloadMatchingFontDescriptors, + _CTFontDescriptorGetClientObject, _CTFontDescriptorGetContentSizeCategoryFromIndex, + _CTFontDescriptorGetContentSizeCategoryIndex, _CTFontDescriptorGetDefaultTextStylePlatform, + _CTFontDescriptorGetLanguageAwareTextStyleSize, _CTFontDescriptorGetOptions, + _CTFontDescriptorGetSymbolicTraits, _CTFontDescriptorGetTextStyleSize, + _CTFontDescriptorGetTextStyleWithSymbolicTraits, _CTFontDescriptorGetTypeID, + _CTFontDescriptorGetWeight, _CTFontDescriptorHasPostScriptNameAlias, _CTFontDescriptorIsAppleFont, _CTFontDescriptorIsSystemUIFont, _CTFontDescriptorIsValid, _CTFontDescriptorIsVisible, _CTFontDescriptorMatchFontDescriptorsWithProgressHandler, _CTFontDescriptorRequiresFontAssetRequest, _CTFontDescriptorSetClientObject, _CTFontDescriptorsCopyAttribute, _CTFontDescriptorsCopyAttributes, _CTFontDescriptorsCopyLocalizedAttribute, _CTFontDrawGlyphs, _CTFontDrawGlyphsAtPoint, _CTFontDrawGlyphsAtPositions, _CTFontDrawGlyphsWithAdvances, + _CTFontDrawImageFromAdaptiveImageProviderAtPoint, _CTFontDrawImageFromEmojiImageProviderAtPoint, _CTFontEnumerateOverlappingGlyphs, _CTFontGetAccessibilityBoldWeightOfWeight, _CTFontGetAdvancesForGlyphs, _CTFontGetAscent, _CTFontGetAscentForSystemFontOfSize, _CTFontGetBoundingBox, _CTFontGetBoundingRectsForGlyphs, _CTFontGetCapHeight, @@ -74,15 +104,17 @@ exports: _CTFontGetExuberatedLineHeightForLineHeight, _CTFontGetGlyphCount, _CTFontGetGlyphWithName, _CTFontGetGlyphsAndAdvancesForCharacterRange, _CTFontGetGlyphsForCharacterRange, _CTFontGetGlyphsForCharacters, - _CTFontGetLanguageAwareOutsets, _CTFontGetLanguageAwareOutsetsForLanguage, - _CTFontGetLatin1GlyphsAndAdvanceWidths, _CTFontGetLeading, - _CTFontGetLigatureCaretPositions, _CTFontGetMatrix, _CTFontGetMaximumAdvance, - _CTFontGetOpticalBoundsForGlyphs, _CTFontGetPhysicalSymbolicTraits, - _CTFontGetSbixImageSizeForGlyph, _CTFontGetSbixImageSizeForGlyphAndContentsScale, - _CTFontGetSize, _CTFontGetSlantAngle, _CTFontGetStringEncoding, - _CTFontGetSymbolicTraits, _CTFontGetTextStyle, _CTFontGetTrackingFloor, - _CTFontGetTransformedAdvancesForGlyphsAndStyle, _CTFontGetTransformedBoundingRectsForGlyphsAndStyle, - _CTFontGetTypeID, _CTFontGetUIFontDesign, _CTFontGetUIFontType, + _CTFontGetGlyphsForLongCharacters, _CTFontGetLanguageAwareOutsets, + _CTFontGetLanguageAwareOutsetsForLanguage, _CTFontGetLatin1GlyphsAndAdvanceWidths, + _CTFontGetLeading, _CTFontGetLigatureCaretPositions, _CTFontGetMatrix, + _CTFontGetMaximumAdvance, _CTFontGetOpticalBoundsForGlyphs, + _CTFontGetPhysicalSymbolicTraits, _CTFontGetSbixImageSizeForGlyph, + _CTFontGetSbixImageSizeForGlyphAndContentsScale, _CTFontGetSize, + _CTFontGetSlantAngle, _CTFontGetStringEncoding, _CTFontGetSymbolicTraits, + _CTFontGetTextStyle, _CTFontGetTrackingFloor, _CTFontGetTransformedAdvancesForGlyphsAndStyle, + _CTFontGetTransformedBoundingRectsForGlyphsAndStyle, _CTFontGetTypeID, + _CTFontGetTypographicBoundsForAdaptiveImageProvider, _CTFontGetTypographicBoundsForEmojiImageProvider, + _CTFontGetTypographicMetrics, _CTFontGetUIFontDesign, _CTFontGetUIFontType, _CTFontGetUnderlinePosition, _CTFontGetUnderlineThickness, _CTFontGetUnitsPerEm, _CTFontGetUnsummedAdvancesForGlyphsAndStyle, _CTFontGetVerticalGlyphsForCharacters, _CTFontGetVerticalTranslationsForGlyphs, @@ -95,15 +127,15 @@ exports: _CTFontManagerCopyAvailableFontFamilyNames, _CTFontManagerCopyAvailablePostScriptNames, _CTFontManagerCopyRegisteredFontDescriptors, _CTFontManagerCreateFontDescriptorFromData, _CTFontManagerCreateFontDescriptorsFromData, _CTFontManagerCreateFontDescriptorsFromURL, - _CTFontManagerInstalledFontsChanged, _CTFontManagerRegisterFontDescriptors, - _CTFontManagerRegisterFontURLs, _CTFontManagerRegisterFontsForURL, - _CTFontManagerRegisterFontsForURLs, _CTFontManagerRegisterFontsWithAssetNames, - _CTFontManagerRegisterGraphicsFont, _CTFontManagerRequestFonts, - _CTFontManagerUnregisterFontDescriptors, _CTFontManagerUnregisterFontURLs, - _CTFontManagerUnregisterFontsForURL, _CTFontManagerUnregisterFontsForURLs, - _CTFontManagerUnregisterGraphicsFont, _CTFontRemoveFromCaches, - _CTFontSetAltTextStyleSpec, _CTFontSetClientObject, _CTFontShapeGlyphs, - _CTFontShouldAntiAlias, _CTFontStrikeMetricsCreateDictionaryRepresentation, + _CTFontManagerCreateMemorySafeFontDescriptorFromData, _CTFontManagerInstalledFontsChanged, + _CTFontManagerRegisterFontDescriptors, _CTFontManagerRegisterFontURLs, + _CTFontManagerRegisterFontsForURL, _CTFontManagerRegisterFontsForURLs, + _CTFontManagerRegisterFontsWithAssetNames, _CTFontManagerRegisterGraphicsFont, + _CTFontManagerRequestFonts, _CTFontManagerUnregisterFontDescriptors, + _CTFontManagerUnregisterFontURLs, _CTFontManagerUnregisterFontsForURL, + _CTFontManagerUnregisterFontsForURLs, _CTFontManagerUnregisterGraphicsFont, + _CTFontRemoveFromCaches, _CTFontSetAltTextStyleSpec, _CTFontSetClientObject, + _CTFontShapeGlyphs, _CTFontShouldAntiAlias, _CTFontStrikeMetricsCreateDictionaryRepresentation, _CTFontSupportsConnectedLanguage, _CTFontSwapDefaultLineHeightAdjustment, _CTFontSwapDefaultSize, _CTFontSwapEmojiPolicy, _CTFontTransformGlyphs, _CTFontTransformGlyphsWithLanguage, _CTFrameCopyVisibleString, @@ -121,20 +153,24 @@ exports: _CTGlyphInfoGetGlyphName, _CTGlyphInfoGetTypeID, _CTGlyphStorageCreateMutableWithInterface, _CTGlyphStorageGetInterface, _CTGlyphStorageGetRefCon, _CTGlyphStorageSyncWithInterface, _CTIsExuberatedLanguage, _CTLineCopyCaretPathForStringIndex, - _CTLineCopyHighlightPathForStringRange, _CTLineCreateFromLineWithOffset, - _CTLineCreateHyphenatedLineWithOffset, _CTLineCreateJustifiedLine, - _CTLineCreateJustifiedLineWithOptions, _CTLineCreateTruncatedLine, - _CTLineCreateTruncatedLineWithTokenCallback, _CTLineCreateTruncatedLineWithTokenHandler, - _CTLineCreateWithAttributedString, _CTLineCreateWithRunArray, - _CTLineCreateWithString, _CTLineCreateWithUniCharProvider, - _CTLineDraw, _CTLineDrawAttributedString, _CTLineDrawWithAttributeOverrides, - _CTLineEnumerateCaretOffsets, _CTLineGetBoundsWithOptions, - _CTLineGetDefaultBounds, _CTLineGetGlyphCount, _CTLineGetGlyphRuns, - _CTLineGetImageBounds, _CTLineGetOffsetForStringIndex, _CTLineGetPenOffsetForFlush, - _CTLineGetStringIndexForPosition, _CTLineGetStringIndexOfTabOverflow, - _CTLineGetStringRange, _CTLineGetTrailingWhitespaceWidth, - _CTLineGetTypeID, _CTLineGetTypographicBounds, _CTLineGetWidthForStringRangeWithOffset, - _CTLineHasBidiLevels, _CTLineIsRightToLeft, _CTLineSuggestClusterBreakWithOffset, + _CTLineCopyHighlightPathForStringRange, _CTLineCreateCopyWithAttributeOverrides, + _CTLineCreateFromLineWithOffset, _CTLineCreateHyphenatedLineWithOffset, + _CTLineCreateJustifiedLine, _CTLineCreateJustifiedLineWithOptions, + _CTLineCreateTruncatedLine, _CTLineCreateTruncatedLineWithTokenCallback, + _CTLineCreateTruncatedLineWithTokenHandler, _CTLineCreateWithAttributedString, + _CTLineCreateWithRunArray, _CTLineCreateWithString, _CTLineCreateWithUniCharProvider, + _CTLineDecorationApplyWithBlock, _CTLineDecorationGetFragment, + _CTLineDecorationGetSegment, _CTLineDecorationGetSegmentColor, + _CTLineDecorationGetType, _CTLineDraw, _CTLineDrawAttributedString, + _CTLineDrawWithAttributeOverrides, _CTLineEnumerateCaretOffsets, + _CTLineGetBoundsWithOptions, _CTLineGetDefaultBounds, _CTLineGetGlyphCount, + _CTLineGetGlyphRuns, _CTLineGetImageBounds, _CTLineGetOffsetForStringIndex, + _CTLineGetPenOffsetForFlush, _CTLineGetRangeOfCharacterClusterAtIndex, + _CTLineGetRunAtIndex, _CTLineGetRunCount, _CTLineGetStringIndexForPosition, + _CTLineGetStringIndexOfTabOverflow, _CTLineGetStringRange, + _CTLineGetTrailingWhitespaceWidth, _CTLineGetTypeID, _CTLineGetTypographicBounds, + _CTLineGetWidthForStringRangeWithOffset, _CTLineHasBidiLevels, + _CTLineIsRightToLeft, _CTLineSuggestClusterBreakWithOffset, _CTLineSuggestClusterBreakWithTabOverflow, _CTLineSuggestLineBreakWithOffset, _CTLineSuggestLineBreakWithTabOverflow, _CTLineSyncWithRuns, _CTParagraphStyleCreate, _CTParagraphStyleCreateCopy, _CTParagraphStyleGetCompositionLanguage, @@ -147,16 +183,17 @@ exports: _CTRunCopyEncapsulationPath, _CTRunCopyRubyAnnotationLineForPosition, _CTRunCreateMutableRunsWithStorageAndOptions, _CTRunDelegateCreate, _CTRunDelegateGetRefCon, _CTRunDelegateGetTypeID, _CTRunDraw, - _CTRunGetAdvances, _CTRunGetAdvancesPtr, _CTRunGetAttachmentCounts, - _CTRunGetAttachmentCountsPtr, _CTRunGetAttributes, _CTRunGetBackgroundBounds, - _CTRunGetBaseAdvancesAndOrigins, _CTRunGetFont, _CTRunGetGlyphCount, - _CTRunGetGlyphStorage, _CTRunGetGlyphs, _CTRunGetGlyphsPtr, - _CTRunGetImageBounds, _CTRunGetInitialAdvance, _CTRunGetInitialBaseAdvance, - _CTRunGetMetrics, _CTRunGetPositions, _CTRunGetPositionsPtr, - _CTRunGetPropertiesPtr, _CTRunGetScript, _CTRunGetStatus, - _CTRunGetStretchFactors, _CTRunGetStringIndices, _CTRunGetStringIndicesPtr, - _CTRunGetStringRange, _CTRunGetTextMatrix, _CTRunGetTypeID, - _CTRunGetTypographicBounds, _CTRunSyncWithStorage, _CTStringIsSuitableForArabicJustification, + _CTRunDrawDecorations, _CTRunDrawWithAttributeOverrides, _CTRunGetAdvances, + _CTRunGetAdvancesPtr, _CTRunGetAttachmentCounts, _CTRunGetAttachmentCountsPtr, + _CTRunGetAttributes, _CTRunGetBackgroundBounds, _CTRunGetBaseAdvancesAndOrigins, + _CTRunGetFont, _CTRunGetGlyphCount, _CTRunGetGlyphStorage, + _CTRunGetGlyphs, _CTRunGetGlyphsPtr, _CTRunGetImageBounds, + _CTRunGetInitialAdvance, _CTRunGetInitialBaseAdvance, _CTRunGetMetrics, + _CTRunGetPositions, _CTRunGetPositionsPtr, _CTRunGetPropertiesPtr, + _CTRunGetScript, _CTRunGetStatus, _CTRunGetStretchFactors, + _CTRunGetStringIndices, _CTRunGetStringIndicesPtr, _CTRunGetStringRange, + _CTRunGetTextMatrix, _CTRunGetTypeID, _CTRunGetTypographicBounds, + _CTRunSyncWithStorage, _CTStringIsSuitableForArabicJustification, _CTStringIsSuitableForVerticalLayout, _CTSwapLineBreakEpsilon, _CTTextTabCreate, _CTTextTabGetAlignment, _CTTextTabGetLocation, _CTTextTabGetOptions, _CTTextTabGetTypeID, _CTTypesetterCreateLine, @@ -174,7 +211,8 @@ exports: __CTGetEmojiFontName, __CTGetFrameworkBundleForLocalization, __CTGetVisibleFormatterCharacterSet, __CTGlyphInfoGetBaseString, __CTGlyphInfoGetFont, __CTGlyphInfoGetGlyph, __CTLineEnumerateDecorations, - __CTSetFrameworkBundleForLocalization, _kCTBackgroundColorAttributeName, + __CTSetFrameworkBundleForLocalization, __CTSwapAllDescriptorsFallbackDisabled, + _kCTAdaptiveImageProviderAttributeName, _kCTBackgroundColorAttributeName, _kCTBaselineAttributeName, _kCTBaselineClassAttributeName, _kCTBaselineClassHanging, _kCTBaselineClassICFBottom, _kCTBaselineClassICFTop, _kCTBaselineClassIdeographicCentered, _kCTBaselineClassIdeographicHigh, @@ -182,11 +220,11 @@ exports: _kCTBaselineInfoAttributeName, _kCTBaselineOffsetAttributeName, _kCTBaselineOriginalFont, _kCTBaselineReferenceFont, _kCTBaselineReferenceInfoAttributeName, _kCTBaselineVerticalOriginalFont, _kCTCharacterShapeAttributeName, - _kCTFallbackWritingDirectionAttributeName, _kCTFontAllowCellularDownloadAttribute, - _kCTFontAssetFontInfoKey, _kCTFontAssetType, _kCTFontAttributeName, - _kCTFontBaselineAdjustAttribute, _kCTFontCSSFamilyCursive, - _kCTFontCSSFamilyEmoji, _kCTFontCSSFamilyFangSong, _kCTFontCSSFamilyFantasy, - _kCTFontCSSFamilyMonospace, _kCTFontCSSFamilyMonospaceUI, + _kCTEmojiImageProviderAttributeName, _kCTFallbackWritingDirectionAttributeName, + _kCTFontAllowCellularDownloadAttribute, _kCTFontAssetFontInfoKey, + _kCTFontAssetType, _kCTFontAttributeName, _kCTFontBaselineAdjustAttribute, + _kCTFontCSSFamilyCursive, _kCTFontCSSFamilyEmoji, _kCTFontCSSFamilyFangSong, + _kCTFontCSSFamilyFantasy, _kCTFontCSSFamilyMonospace, _kCTFontCSSFamilyMonospaceUI, _kCTFontCSSFamilyRoundedUI, _kCTFontCSSFamilySansSerif, _kCTFontCSSFamilySerif, _kCTFontCSSFamilySerifUI, _kCTFontCSSFamilySystemUI, _kCTFontCSSWeightAttribute, _kCTFontCSSWidthAttribute, _kCTFontCacheGlyphImagesAttribute, @@ -222,7 +260,8 @@ exports: _kCTFontDescriptorTextStyleUltraLightItalic, _kCTFontDesignLanguagesAttribute, _kCTFontDesignerNameKey, _kCTFontDesignerURLNameKey, _kCTFontDisplayNameAttribute, _kCTFontDownloadableAttribute, _kCTFontDownloadableStubAttribute, - _kCTFontDownloadedAttribute, _kCTFontEnabledAttribute, _kCTFontFallbackOptionAttribute, + _kCTFontDownloadedAttribute, _kCTFontEmojiMLUpscalingTimeoutAttribute, + _kCTFontEnabledAttribute, _kCTFontFallbackOptionAttribute, _kCTFontFamilyNameAttribute, _kCTFontFamilyNameKey, _kCTFontFeatureSampleTextKey, _kCTFontFeatureSampleTextNameIDKey, _kCTFontFeatureSelectorDefaultKey, _kCTFontFeatureSelectorIdentifierKey, _kCTFontFeatureSelectorNameIDKey, @@ -234,9 +273,9 @@ exports: _kCTFontFeaturesAttribute, _kCTFontFixedAdvanceAttribute, _kCTFontFormatAttribute, _kCTFontFullNameKey, _kCTFontGradeTrait, _kCTFontIgnoreLegibilityWeightAttribute, _kCTFontIgnoreScriptAnalysisAttribute, - _kCTFontLanguageAwareLineHeightRatioAttribute, _kCTFontLanguagesAttribute, - _kCTFontLegibilityWeightAttribute, _kCTFontLicenseNameKey, - _kCTFontLicenseURLNameKey, _kCTFontLineSpacingOverrideAttribute, + _kCTFontLangSysListAttribute, _kCTFontLanguageAwareLineHeightRatioAttribute, + _kCTFontLanguagesAttribute, _kCTFontLegibilityWeightAttribute, + _kCTFontLicenseNameKey, _kCTFontLicenseURLNameKey, _kCTFontLineSpacingOverrideAttribute, _kCTFontMacintoshEncodingsAttribute, _kCTFontManagerAvailableFontURLsAddedKey, _kCTFontManagerAvailableFontURLsRemovedKey, _kCTFontManagerErrorDomain, _kCTFontManagerErrorFontAssetNameKey, _kCTFontManagerErrorFontDescriptorsKey, @@ -252,19 +291,20 @@ exports: _kCTFontQuickdrawFamilyNameKey, _kCTFontQuickdrawStyleKey, _kCTFontReferenceURLAttribute, _kCTFontRegistrationScopeAttribute, _kCTFontRegistrationUserInfoAttribute, _kCTFontSampleTextNameKey, - _kCTFontSearchDomainAttribute, _kCTFontSizeAttribute, _kCTFontSizeCategoryAttribute, - _kCTFontSlantTrait, _kCTFontStyleNameAttribute, _kCTFontStyleNameKey, - _kCTFontSubFamilyNameKey, _kCTFontSymbolicTrait, _kCTFontSyntheticFamilyNameKey, - _kCTFontSyntheticNameKey, _kCTFontSystemAlternate, _kCTFontSystemAlternateBlack, - _kCTFontSystemAlternateBlackItalic, _kCTFontSystemAlternateBold, - _kCTFontSystemAlternateBoldItalic, _kCTFontSystemAlternateDemi, - _kCTFontSystemAlternateDemiItalic, _kCTFontSystemAlternateHeavy, - _kCTFontSystemAlternateHeavyItalic, _kCTFontSystemAlternateItalic, - _kCTFontSystemAlternateLight, _kCTFontSystemAlternateLightItalic, - _kCTFontSystemAlternateMedium, _kCTFontSystemAlternateMediumItalic, - _kCTFontSystemAlternateThin, _kCTFontSystemAlternateThinItalic, - _kCTFontSystemAlternateUltraLight, _kCTFontSystemAlternateUltraLightItalic, - _kCTFontSystemCondensed, _kCTFontSystemCondensedBlack, _kCTFontSystemCondensedBold, + _kCTFontSearchDomainAttribute, _kCTFontShapingGlyphsAttribute, + _kCTFontSizeAttribute, _kCTFontSizeCategoryAttribute, _kCTFontSlantTrait, + _kCTFontStyleNameAttribute, _kCTFontStyleNameKey, _kCTFontSubFamilyNameKey, + _kCTFontSymbolicTrait, _kCTFontSyntheticFamilyNameKey, _kCTFontSyntheticNameKey, + _kCTFontSystemAlternate, _kCTFontSystemAlternateBlack, _kCTFontSystemAlternateBlackItalic, + _kCTFontSystemAlternateBold, _kCTFontSystemAlternateBoldItalic, + _kCTFontSystemAlternateDemi, _kCTFontSystemAlternateDemiItalic, + _kCTFontSystemAlternateHeavy, _kCTFontSystemAlternateHeavyItalic, + _kCTFontSystemAlternateItalic, _kCTFontSystemAlternateLight, + _kCTFontSystemAlternateLightItalic, _kCTFontSystemAlternateMedium, + _kCTFontSystemAlternateMediumItalic, _kCTFontSystemAlternateThin, + _kCTFontSystemAlternateThinItalic, _kCTFontSystemAlternateUltraLight, + _kCTFontSystemAlternateUltraLightItalic, _kCTFontSystemCondensed, + _kCTFontSystemCondensedBlack, _kCTFontSystemCondensedBold, _kCTFontSystemCondensedDemi, _kCTFontSystemCondensedHeavy, _kCTFontSystemCondensedLight, _kCTFontSystemCondensedMedium, _kCTFontSystemCondensedThin, _kCTFontSystemCondensedUltraLight, @@ -278,7 +318,8 @@ exports: _kCTFontSystemCoreHeavyItalic, _kCTFontSystemCoreItalic, _kCTFontSystemCoreLight, _kCTFontSystemCoreLightItalic, _kCTFontSystemCoreMedium, _kCTFontSystemCoreMediumItalic, _kCTFontSystemCoreThin, _kCTFontSystemCoreThinItalic, _kCTFontSystemCoreUltraLight, - _kCTFontSystemCoreUltraLightItalic, _kCTFontTextStylePlatformAttribute, + _kCTFontSystemCoreUltraLightItalic, _kCTFontSystemPreferredSizeBold, + _kCTFontSystemPreferredSizeRegular, _kCTFontTextStylePlatformAttribute, _kCTFontTextStyleTraitsAttribute, _kCTFontTrackAttribute, _kCTFontTrademarkNameKey, _kCTFontTraitsAttribute, _kCTFontUIFontDesignAlternate, _kCTFontUIFontDesignCompact, _kCTFontUIFontDesignCompactRounded, @@ -312,32 +353,33 @@ exports: _kCTRenderingStyleAttributeName, _kCTRubyAnnotationAttributeName, _kCTRubyAnnotationDrawBaseTextAttributeName, _kCTRubyAnnotationScaleToFitAttributeName, _kCTRubyAnnotationSizeFactorAttributeName, _kCTRunDelegateAttributeName, - _kCTSecondaryScaleAttributeName, _kCTStrikethroughColorAttributeName, - _kCTStrikethroughStyleAttributeName, _kCTStrokeColorAttributeName, - _kCTStrokeWidthAttributeName, _kCTSuperscriptAttributeName, - _kCTTabColumnTerminatorsAttributeName, _kCTTextEffectsContextAttributeName, - _kCTTextEncapsulationAttributeName, _kCTTextEncapsulationTraitEnclosureColor, - _kCTTextEncapsulationTraitLineWeight, _kCTTextEncapsulationTraitPlatterSize, - _kCTTextEncapsulationTraitScale, _kCTTextEncapsulationTraitShape, - _kCTTextEncapsulationTraitStyle, _kCTTextScaleAttributeName, - _kCTTextScaleRatioAttributeName, _kCTTextScaleSecondary, _kCTTrackingAttributeName, - _kCTTrimWhitespaceBackgroundAttributeName, _kCTTypesetterOptionAllowUnboundedLayout, - _kCTTypesetterOptionBidiLevelsProvider, _kCTTypesetterOptionDisableBidiProcessing, - _kCTTypesetterOptionForcedEmbeddingLevel, _kCTTypesetterOptionVerticalLayout, - _kCTUIFontTextStyleBody, _kCTUIFontTextStyleCallout, _kCTUIFontTextStyleCaption1, - _kCTUIFontTextStyleCaption2, _kCTUIFontTextStyleCaption3, - _kCTUIFontTextStyleEmphasizedBody, _kCTUIFontTextStyleEmphasizedExtraLargeTitle, - _kCTUIFontTextStyleEmphasizedExtraLargeTitle2, _kCTUIFontTextStyleExtraLargeTitle, - _kCTUIFontTextStyleExtraLargeTitle2, _kCTUIFontTextStyleFootnote, - _kCTUIFontTextStyleFootnote1, _kCTUIFontTextStyleFootnote2, - _kCTUIFontTextStyleHeadline, _kCTUIFontTextStyleHeadline1, - _kCTUIFontTextStyleHeadline2, _kCTUIFontTextStyleHeadline3, - _kCTUIFontTextStyleItalicBody, _kCTUIFontTextStyleSection1, - _kCTUIFontTextStyleSection2, _kCTUIFontTextStyleSection3, - _kCTUIFontTextStyleShortBody, _kCTUIFontTextStyleShortCaption1, - _kCTUIFontTextStyleShortFootnote, _kCTUIFontTextStyleShortHeadline, - _kCTUIFontTextStyleShortSubhead, _kCTUIFontTextStyleSubhead, - _kCTUIFontTextStyleSubhead1, _kCTUIFontTextStyleSubhead2, + _kCTRunMetricsDelegateAttributeName, _kCTSecondaryScaleAttributeName, + _kCTStrikethroughColorAttributeName, _kCTStrikethroughStyleAttributeName, + _kCTStrokeColorAttributeName, _kCTStrokeWidthAttributeName, + _kCTSuperscriptAttributeName, _kCTTabColumnTerminatorsAttributeName, + _kCTTextEffectsContextAttributeName, _kCTTextEncapsulationAttributeName, + _kCTTextEncapsulationTraitEnclosureColor, _kCTTextEncapsulationTraitLineWeight, + _kCTTextEncapsulationTraitPlatterSize, _kCTTextEncapsulationTraitScale, + _kCTTextEncapsulationTraitShape, _kCTTextEncapsulationTraitStyle, + _kCTTextScaleAttributeName, _kCTTextScaleRatioAttributeName, + _kCTTextScaleSecondary, _kCTTextScaleStaticWeightMatchingAttributeName, + _kCTTrackingAttributeName, _kCTTrimWhitespaceBackgroundAttributeName, + _kCTTypesetterOptionAllowUnboundedLayout, _kCTTypesetterOptionBidiLevelsProvider, + _kCTTypesetterOptionDisableBidiProcessing, _kCTTypesetterOptionForcedEmbeddingLevel, + _kCTTypesetterOptionVerticalLayout, _kCTUIFontTextStyleBody, + _kCTUIFontTextStyleCallout, _kCTUIFontTextStyleCaption1, _kCTUIFontTextStyleCaption2, + _kCTUIFontTextStyleCaption3, _kCTUIFontTextStyleEmphasizedBody, + _kCTUIFontTextStyleEmphasizedExtraLargeTitle, _kCTUIFontTextStyleEmphasizedExtraLargeTitle2, + _kCTUIFontTextStyleExtraLargeTitle, _kCTUIFontTextStyleExtraLargeTitle2, + _kCTUIFontTextStyleFootnote, _kCTUIFontTextStyleFootnote1, + _kCTUIFontTextStyleFootnote2, _kCTUIFontTextStyleHeadline, + _kCTUIFontTextStyleHeadline1, _kCTUIFontTextStyleHeadline2, + _kCTUIFontTextStyleHeadline3, _kCTUIFontTextStyleItalicBody, + _kCTUIFontTextStyleSection1, _kCTUIFontTextStyleSection2, + _kCTUIFontTextStyleSection3, _kCTUIFontTextStyleShortBody, + _kCTUIFontTextStyleShortCaption1, _kCTUIFontTextStyleShortFootnote, + _kCTUIFontTextStyleShortHeadline, _kCTUIFontTextStyleShortSubhead, + _kCTUIFontTextStyleSubhead, _kCTUIFontTextStyleSubhead1, _kCTUIFontTextStyleSubhead2, _kCTUIFontTextStyleSubtitle1, _kCTUIFontTextStyleSubtitle2, _kCTUIFontTextStyleSubtitle3, _kCTUIFontTextStyleTallBody, _kCTUIFontTextStyleTitle0, _kCTUIFontTextStyleTitle1, _kCTUIFontTextStyleTitle2, @@ -348,7 +390,8 @@ exports: _kFOGlyphHAdvancesOverrideKey, _kFOGlyphHAdvancesPerAltFontKey, _kFOLanguageKey, _kFOMatrixKey, _kFOStringKey, _kFOTypeKey, _kFOUnicodeCharSetKey, _kFOUnicodeRangeKey, _kFOcmapOverrideKey ] - objc-classes: [ CTGlyphStorageInterface, NSTextEncapsulation ] + objc-classes: [ CTAdaptiveImageGlyph, CTEmojiImageAsset, CTEmojiImageStrike, + CTGlyphStorageInterface, CTRunMetricsDelegate, NSTextEncapsulation ] objc-ivars: [ CTGlyphStorageInterface._absorbedCounts, CTGlyphStorageInterface._advances, CTGlyphStorageInterface._glyphCount, CTGlyphStorageInterface._glyphs, CTGlyphStorageInterface._origins, CTGlyphStorageInterface._props, @@ -361,17 +404,16 @@ exports: _CTFontCollectionSetExclusionDescriptors, _CTFontCollectionSetMatchingOptions, _CTFontCollectionSetQueryDescriptors, _CTFontCopyExternalFontName, _CTFontCreateWithFontToken, _CTFontCreateWithPlatformFont, - _CTFontCreateWithQuickdrawInstance, _CTFontDescriptorDownloadMatchingFontDescriptors, - _CTFontGetFontToken, _CTFontGetPlatformFont, _CTFontIsExternalFontName, - _CTFontManagerCopyAvailableFontFamilyNamesForLanguage, _CTFontManagerCopyAvailableFontURLs, - _CTFontManagerCreateFontRequestRunLoopSource, _CTFontManagerEnableAllUserFonts, - _CTFontManagerEnableFontDescriptors, _CTFontManagerEnableSystemVisibleFonts, - _CTFontManagerGetAutoActivationSetting, _CTFontManagerGetScopeForURL, - _CTFontManagerIsSupportedFont, _CTFontManagerRegisterFontForData, - _CTFontManagerSetAutoActivationSetting, _CTFontManagerSystemVisibleFontsEnabled, - _CTFontManagerUnregisterFontForData, _CTFontManagerValidateFonts, - _CTLineDrawCharsWithUnicodeProvider, _NSFontCollectionActionKey, - _NSFontCollectionAllFonts, _NSFontCollectionDidChangeNotification, + _CTFontCreateWithQuickdrawInstance, _CTFontGetFontToken, _CTFontGetPlatformFont, + _CTFontIsExternalFontName, _CTFontManagerCopyAvailableFontFamilyNamesForLanguage, + _CTFontManagerCopyAvailableFontURLs, _CTFontManagerCreateFontRequestRunLoopSource, + _CTFontManagerEnableAllUserFonts, _CTFontManagerEnableFontDescriptors, + _CTFontManagerEnableSystemVisibleFonts, _CTFontManagerGetAutoActivationSetting, + _CTFontManagerGetScopeForURL, _CTFontManagerIsSupportedFont, + _CTFontManagerRegisterFontForData, _CTFontManagerSetAutoActivationSetting, + _CTFontManagerSystemVisibleFontsEnabled, _CTFontManagerUnregisterFontForData, + _CTFontManagerValidateFonts, _CTLineDrawCharsWithUnicodeProvider, + _NSFontCollectionActionKey, _NSFontCollectionAllFonts, _NSFontCollectionDidChangeNotification, _NSFontCollectionDisallowAutoActivationOption, _NSFontCollectionFavorites, _NSFontCollectionIncludeDisabledFontsOption, _NSFontCollectionNameKey, _NSFontCollectionOldNameKey, _NSFontCollectionRecentlyUsed, diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTDefines.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTDefines.h index 5d99183c..544c09b4 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTDefines.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTDefines.h @@ -10,7 +10,7 @@ #define __CTDEFINES__ #include -#include +#include #ifndef __has_feature # define __has_feature(x) 0 @@ -77,16 +77,16 @@ #define CF_ASSUME_NONNULL_END # if defined(CT_BUILDING_CoreText) && defined(__cplusplus) -# define CT_EXPORT extern "C" __declspec(dllexport) +# define CT_EXPORT extern "C" __declspec(dllexport) __attribute__((visibility ("default"))) # elif defined(CT_BUILDING_CoreText) && !defined(__cplusplus) -# define CT_EXPORT extern __declspec(dllexport) +# define CT_EXPORT extern __declspec(dllexport) __attribute__((visibility ("default"))) # elif defined(__cplusplus) -# define CT_EXPORT extern "C" __declspec(dllimport) +# define CT_EXPORT extern "C" __declspec(dllimport) __attribute__((visibility ("default"))) # else -# define CT_EXPORT extern __declspec(dllimport) +# define CT_EXPORT extern __declspec(dllimport) __attribute__((visibility ("default"))) # endif #else -# define CT_EXPORT extern +# define CT_EXPORT extern __attribute__((visibility ("default"))) #endif #endif diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTFont.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTFont.h index dc506113..a05fd324 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTFont.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTFont.h @@ -2,7 +2,7 @@ * CTFont.h * CoreText * - * Copyright (c) 2006-2022 Apple Inc. All rights reserved. + * Copyright (c) 2006-2024 Apple Inc. All rights reserved. * */ @@ -43,6 +43,7 @@ typedef const struct CF_BRIDGED_TYPE(NSFont) __CTFont * CTFontRef; @abstract Returns the type identifier for Core Text font references. @result The identifier for the opaque type CTFontRef. */ +CT_EXPORT CFTypeID CTFontGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! -------------------------------------------------------------------------- @@ -164,6 +165,7 @@ CT_EXPORT const CFStringRef kCTFontPostScriptCIDNameKey CT_AVAILABLE(macos(10.5) @result This function will return a CTFontRef that best matches the name provided with size and matrix attributes. The name parameter is the only required parameters, and default values will be used for unspecified parameters. A best match will be found if all parameters cannot be matched identically. */ +CT_EXPORT CTFontRef CTFontCreateWithName( CFStringRef name, CGFloat size, @@ -198,6 +200,7 @@ static inline CF_SWIFT_NAME(CTFont.init(_:transform:)) CTFontRef _CTFontCreateWi @result This function will return a CTFontRef that best matches the attributes provided with the font descriptor. The size and matrix parameters will override any specified in the font descriptor, unless they are unspecified. A best match font will always be returned, and default values will be used for any unspecified. */ +CT_EXPORT CTFontRef CTFontCreateWithFontDescriptor( CTFontDescriptorRef descriptor, CGFloat size, @@ -256,6 +259,7 @@ typedef CF_OPTIONS(CFOptionFlags, CTFontOptions) { @result This function will return a CTFontRef that best matches the name provided with size and matrix attributes. The name parameter is the only required parameters, and default values will be used for unspecified parameters. A best match will be found if all parameters cannot be matched identically. */ +CT_EXPORT CTFontRef CTFontCreateWithNameAndOptions( CFStringRef name, CGFloat size, @@ -280,6 +284,7 @@ CTFontRef CTFontCreateWithNameAndOptions( @result This function will return a CTFontRef that best matches the attributes provided with the font descriptor. The size and matrix parameters will override any specified in the font descriptor, unless they are unspecified. A best match font will always be returned, and default values will be used for any unspecified. */ +CT_EXPORT CTFontRef CTFontCreateWithFontDescriptorAndOptions( CTFontDescriptorRef descriptor, CGFloat size, @@ -394,6 +399,7 @@ typedef CF_ENUM(uint32_t, CTFontUIFontType) { @result This function returns the correct font for various UI uses. The only required parameter is the uiType selector, unspecified optional parameters will use default values. */ +CT_EXPORT CTFontRef _Nullable CTFontCreateUIFontForLanguage( CTFontUIFontType uiType, CGFloat size, @@ -433,6 +439,7 @@ static inline CF_SWIFT_NAME(CTFont.init(_:size:language:)) CTFontRef _CTFontCrea @result Returns a new font reference converted from the original with the specified attributes. */ +CT_EXPORT CTFontRef CTFontCreateCopyWithAttributes( CTFontRef font, CGFloat size, @@ -460,6 +467,7 @@ CTFontRef CTFontCreateCopyWithAttributes( @result Returns a new font reference in the same family with the given symbolic traits, or NULL if none found in the system. */ +CT_EXPORT CTFontRef _Nullable CTFontCreateCopyWithSymbolicTraits( CTFontRef font, CGFloat size, @@ -485,6 +493,7 @@ CTFontRef _Nullable CTFontCreateCopyWithSymbolicTraits( @result Returns a new font reference with the original traits in the given family. NULL if non found in the system. */ +CT_EXPORT CTFontRef _Nullable CTFontCreateCopyWithFamily( CTFontRef font, CGFloat size, @@ -516,6 +525,7 @@ CTFontRef _Nullable CTFontCreateCopyWithFamily( @seealso CTFontGetGlyphsForCharacters @seealso kCTFontCascadeListAttribute */ +CT_EXPORT CTFontRef CTFontCreateForString( CTFontRef currentFont, CFStringRef string, @@ -545,6 +555,7 @@ CTFontRef CTFontCreateForString( @seealso CTFontGetGlyphsForCharacters @seealso kCTFontCascadeListAttribute */ +CT_EXPORT CTFontRef CTFontCreateForStringWithLanguage( CTFontRef currentFont, CFStringRef string, @@ -578,6 +589,7 @@ static inline CF_SWIFT_NAME(CTFont.init(font:string:range:language:)) CTFontRef @result This function returns a normalized font descriptor for a font. The font descriptor contains enough information to recreate this font at a later time. */ +CT_EXPORT CTFontDescriptorRef CTFontCopyFontDescriptor( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -593,6 +605,7 @@ CTFontDescriptorRef CTFontCopyFontDescriptor( @result This function returns a retained reference to an arbitrary attribute. If the requested attribute is not present, NULL is returned. Refer to the attribute definitions for documentation as to how each attribute is packaged as a CFType. */ +CT_EXPORT CFTypeRef _Nullable CTFontCopyAttribute( CTFontRef font, CFStringRef attribute ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -606,6 +619,7 @@ CFTypeRef _Nullable CTFontCopyAttribute( @result This function returns the point size of the given font reference. This is the point size provided when the font was created. */ +CT_EXPORT CGFloat CTFontGetSize( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -617,6 +631,7 @@ CGFloat CTFontGetSize( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watc @result This function returns the transformation matrix for this given font reference. This is the matrix that was provided when the font was created. */ +CT_EXPORT CGAffineTransform CTFontGetMatrix( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -628,6 +643,7 @@ CGAffineTransform CTFontGetMatrix( CTFontRef font ) CT_AVAILABLE(macos(10.5), io @result This function returns the symbolic traits of the font. This is equivalent to the kCTFontSymbolicTrait of traits dictionary. See CTFontTraits.h for a definition of the font traits. */ +CT_EXPORT CTFontSymbolicTraits CTFontGetSymbolicTraits( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -639,8 +655,24 @@ CTFontSymbolicTraits CTFontGetSymbolicTraits( CTFontRef font ) CT_AVAILABLE(maco @result This function returns a retained reference to the font traits dictionary. Individual traits can be accessed with the trait key constants. See CTFontTraits.h for a definition of the font traits. */ +CT_EXPORT CFDictionaryRef CTFontCopyTraits( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); +/*! + @function CTFontCopyDefaultCascadeListForLanguages + @abstract Return an ordered list of CTFontDescriptorRef's for font fallback derived from the system default fallback according to the given language preferences, making a reasonable attempt to match the given font's style, weight, and width. + + @param font + The font reference. + + @param languagePrefList + An array of language identifiers as CFString values, in decreasing order of preference. + + @result The ordered list of fallback fonts - ordered array of CTFontDescriptors. +*/ +CT_EXPORT +CFArrayRef _Nullable CTFontCopyDefaultCascadeListForLanguages( CTFontRef font, CFArrayRef _Nullable languagePrefList ) CT_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0)); + /*! -------------------------------------------------------------------------- @group Font Names *///-------------------------------------------------------------------------- @@ -654,6 +686,7 @@ CFDictionaryRef CTFontCopyTraits( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios @result This function returns a retained reference to the PostScript name of the font. */ +CT_EXPORT CFStringRef CTFontCopyPostScriptName( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -665,6 +698,7 @@ CFStringRef CTFontCopyPostScriptName( CTFontRef font ) CT_AVAILABLE(macos(10.5), @result This function returns a retained reference to the family name of the font. */ +CT_EXPORT CFStringRef CTFontCopyFamilyName( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -676,6 +710,7 @@ CFStringRef CTFontCopyFamilyName( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios @result This function returns a retained reference to the full name of the font. */ +CT_EXPORT CFStringRef CTFontCopyFullName( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -687,6 +722,7 @@ CFStringRef CTFontCopyFullName( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3 @result This function returns a retained reference to the localized display name of the font. */ +CT_EXPORT CFStringRef CTFontCopyDisplayName( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -701,6 +737,7 @@ CFStringRef CTFontCopyDisplayName( CTFontRef font ) CT_AVAILABLE(macos(10.5), io @result This function creates the requested name for the font, or NULL if the font does not have an entry for the requested name. The Unicode version of the name will be preferred, otherwise the first available will be used. */ +CT_EXPORT CFStringRef _Nullable CTFontCopyName( CTFontRef font, CFStringRef nameKey ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -721,6 +758,7 @@ CFStringRef _Nullable CTFontCopyName( @result This function returns a specific localized name from the font reference. The name is localized based on the user's global language precedence. If the font does not have an entry for the requested name, NULL will be returned. The matched language will be returned in the caller's buffer. */ +CT_EXPORT CFStringRef _Nullable CTFontCopyLocalizedName( CTFontRef font, CFStringRef nameKey, @@ -739,6 +777,7 @@ CFStringRef _Nullable CTFontCopyLocalizedName( @result This function returns a retained reference to the font's character set. This character set covers the nominal referenced by the font's Unicode cmap table (or equivalent). */ +CT_EXPORT CFCharacterSetRef CTFontCopyCharacterSet( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -750,6 +789,7 @@ CFCharacterSetRef CTFontCopyCharacterSet( CTFontRef font ) CT_AVAILABLE(macos(10 @result This function returns the best string encoding for the font. */ +CT_EXPORT CFStringEncoding CTFontGetStringEncoding( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -761,6 +801,7 @@ CFStringEncoding CTFontGetStringEncoding( CTFontRef font ) CT_AVAILABLE(macos(10 @result This function returns a retained reference to an array of languages supported by the font. The array contains language identifier strings as CFStringRefs. The format of the language identifier will conform to UTS #35. */ +CT_EXPORT CFArrayRef CTFontCopySupportedLanguages( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -785,6 +826,7 @@ CFArrayRef CTFontCopySupportedLanguages( CTFontRef font ) CT_AVAILABLE(macos(10. @seealso CTFontCopyCharacterSet */ +CT_EXPORT bool CTFontGetGlyphsForCharacters( CTFontRef font, const UniChar characters[_Nonnull], @@ -804,6 +846,7 @@ bool CTFontGetGlyphsForCharacters( @result This function returns the font ascent metric scaled based on the point size and matrix of the font reference. */ +CT_EXPORT CGFloat CTFontGetAscent( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -815,6 +858,7 @@ CGFloat CTFontGetAscent( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), wa @result This function returns the font descent metric scaled based on the point size and matrix of the font reference. */ +CT_EXPORT CGFloat CTFontGetDescent( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -826,6 +870,7 @@ CGFloat CTFontGetDescent( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), w @result This function returns the font leading metric scaled based on the point size and matrix of the font reference. */ +CT_EXPORT CGFloat CTFontGetLeading( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -837,6 +882,7 @@ CGFloat CTFontGetLeading( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), w @result This function returns the units per em of the font. */ +CT_EXPORT unsigned CTFontGetUnitsPerEm( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -848,6 +894,7 @@ unsigned CTFontGetUnitsPerEm( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2 @result This function returns the number of glyphs in the font. */ +CT_EXPORT CFIndex CTFontGetGlyphCount( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -859,6 +906,7 @@ CFIndex CTFontGetGlyphCount( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2) @result This will return the design bounding box of the font, which is the rectangle defined by xMin, yMin, xMax, and yMax values for the font. */ +CT_EXPORT CGRect CTFontGetBoundingBox( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -870,6 +918,7 @@ CGRect CTFontGetBoundingBox( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2) @result This function returns the font underline position metric scaled based on the point size and matrix of the font reference. */ +CT_EXPORT CGFloat CTFontGetUnderlinePosition( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -881,6 +930,7 @@ CGFloat CTFontGetUnderlinePosition( CTFontRef font ) CT_AVAILABLE(macos(10.5), i @result This function returns the font underline thickness metric scaled based on the point size and matrix of the font reference. */ +CT_EXPORT CGFloat CTFontGetUnderlineThickness( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -892,6 +942,7 @@ CGFloat CTFontGetUnderlineThickness( CTFontRef font ) CT_AVAILABLE(macos(10.5), @result This function returns the transformed slant angle of the font. This is equivalent to the italic or caret angle with any skew from the transformation matrix applied. */ +CT_EXPORT CGFloat CTFontGetSlantAngle( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -903,6 +954,7 @@ CGFloat CTFontGetSlantAngle( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2) @result This function returns the font cap height metric scaled based on the point size and matrix of the font reference. */ +CT_EXPORT CGFloat CTFontGetCapHeight( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -914,6 +966,7 @@ CGFloat CTFontGetCapHeight( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), @result This function returns the font X height metric scaled based on the point size and matrix of the font reference. */ +CT_EXPORT CGFloat CTFontGetXHeight( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! -------------------------------------------------------------------------- @@ -932,6 +985,7 @@ CGFloat CTFontGetXHeight( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), w @result The glyph with the specified name or 0 if the name is not recognized; this glyph can be used with other Core Text glyph data accessors or with Quartz. */ +CT_EXPORT CGGlyph CTFontGetGlyphWithName( CTFontRef font, CFStringRef glyphName ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -950,6 +1004,7 @@ CGGlyph CTFontGetGlyphWithName( @seealso CTFontGetGlyphWithName */ +CT_EXPORT CFStringRef _Nullable CTFontCopyNameForGlyph( CTFontRef font, CGGlyph glyph ) CT_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0)); @@ -975,6 +1030,7 @@ CFStringRef _Nullable CTFontCopyNameForGlyph( @result This function returns the overall bounding rectangle for an array or run of glyphs. The bounding rects of the individual glyphs are returned through the boundingRects parameter. These are the design metrics from the font transformed in font space. */ +CT_EXPORT CGRect CTFontGetBoundingRectsForGlyphs( CTFontRef font, CTFontOrientation orientation, @@ -1005,6 +1061,7 @@ CGRect CTFontGetBoundingRectsForGlyphs( @result This function returns the overall bounding rectangle for an array or run of glyphs. The bounding rects of the individual glyphs are returned through the boundingRects parameter. These are the design metrics from the font transformed in font space. */ +CT_EXPORT CGRect CTFontGetOpticalBoundsForGlyphs( CTFontRef font, const CGGlyph glyphs[_Nonnull], @@ -1033,6 +1090,7 @@ CGRect CTFontGetOpticalBoundsForGlyphs( @result This function returns the summed glyph advance of an array of glyphs. Individual glyph advances are passed back via the advances parameter. These are the ideal metrics for each glyph scaled and transformed in font space. */ +CT_EXPORT double CTFontGetAdvancesForGlyphs( CTFontRef font, CTFontOrientation orientation, @@ -1056,6 +1114,7 @@ double CTFontGetAdvancesForGlyphs( @param count The capacity of the glyphs and translations buffers. */ +CT_EXPORT void CTFontGetVerticalTranslationsForGlyphs( CTFontRef font, const CGGlyph glyphs[_Nonnull], @@ -1079,6 +1138,7 @@ void CTFontGetVerticalTranslationsForGlyphs( @result A retained CGPath reference containing the glyph outlines or NULL if there is no such glyph or it has no outline. */ +CT_EXPORT CGPathRef _Nullable CTFontCreatePathForGlyph( CTFontRef font, CGGlyph glyph, @@ -1115,7 +1175,7 @@ CT_EXPORT const CFStringRef kCTFontVariationAxisDefaultValueKey CT_AVAILABLE(mac /*! @defined kCTFontVariationAxisNameKey @abstract Key to get the variation axis name string. - @discussion This key is used with a variation axis dictionary to get the localized variation axis name. + @discussion This key is used with a variation axis dictionary to get the variation axis name. */ CT_EXPORT const CFStringRef kCTFontVariationAxisNameKey CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -1128,12 +1188,14 @@ CT_EXPORT const CFStringRef kCTFontVariationAxisHiddenKey CT_AVAILABLE(macos(10. /*! @function CTFontCopyVariationAxes @abstract Returns an array of variation axis dictionaries. + @discussion Each variation axis dictionary contains the five kCTFontVariationAxis* keys above, and kCTFontVariationAxisNameKey values will be localized when supported by the font. @param font The font reference. - @result This function returns an array of variation axis dictionaries or null if the font does not support variations. Each variation axis dictionary contains the five kCTFontVariationAxis* keys above. + @result An array of variation axis dictionaries or null if the font does not support variations. */ +CT_EXPORT CFArrayRef _Nullable CTFontCopyVariationAxes( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -1149,6 +1211,7 @@ CFArrayRef _Nullable CTFontCopyVariationAxes( CTFontRef font ) CT_AVAILABLE(maco @seealso kCTFontVariationAxisIdentifierKey @seealso kCTFontVariationAxisDefaultValueKey */ +CT_EXPORT CFDictionaryRef _Nullable CTFontCopyVariation( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! -------------------------------------------------------------------------- @@ -1237,6 +1300,7 @@ CT_EXPORT const CFStringRef kCTFontFeatureTooltipTextKey CT_AVAILABLE(macos(10.1 @result This function returns an array of font feature dictionaries for the font reference. */ +CT_EXPORT CFArrayRef _Nullable CTFontCopyFeatures( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -1250,6 +1314,7 @@ CFArrayRef _Nullable CTFontCopyFeatures( CTFontRef font ) CT_AVAILABLE(macos(10. @result This function returns a normalized array of font feature setting dictionaries. The array will only contain the non-default settings that should be applied to the font, or NULL if the default settings should be used. */ +CT_EXPORT CFArrayRef _Nullable CTFontCopyFeatureSettings( CTFontRef font ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! -------------------------------------------------------------------------- @@ -1268,6 +1333,7 @@ CFArrayRef _Nullable CTFontCopyFeatureSettings( CTFontRef font ) CT_AVAILABLE(ma @result This function returns a CGFontRef for the given font reference. Additional attributes from the font will be passed back as a font descriptor via the attributes parameter. The result must be released by the caller. */ +CT_EXPORT CGFontRef CTFontCopyGraphicsFont( CTFontRef font, CTFontDescriptorRef _Nullable * _Nullable attributes ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -1290,6 +1356,7 @@ CGFontRef CTFontCopyGraphicsFont( @result This function returns a new font reference for an existing CGFontRef with the specified size, matrix, and additional attributes. */ +CT_EXPORT CTFontRef CTFontCreateWithGraphicsFont( CGFontRef graphicsFont, CGFloat size, @@ -1314,6 +1381,7 @@ typedef UInt32 ATSFontRef; @result This function returns a an ATSFontRef for the given font reference. Additional attributes from the font will be passed back as a font descriptor via the attributes parameter. */ +CT_EXPORT ATSFontRef CTFontGetPlatformFont( CTFontRef font, CTFontDescriptorRef _Nullable * _Nullable attributes ) CT_DEPRECATED("ATS is deprecated", macos(10.5, 11.0)) CT_UNAVAILABLE(ios, watchos, tvos); @@ -1336,6 +1404,7 @@ ATSFontRef CTFontGetPlatformFont( @result This function returns a new font reference for an ATSFontRef with the specified size, matrix, and additional attributes. */ +CT_EXPORT CTFontRef _Nullable CTFontCreateWithPlatformFont( ATSFontRef platformFont, CGFloat size, @@ -1362,6 +1431,7 @@ CTFontRef _Nullable CTFontCreateWithPlatformFont( @result This function returns the best font instance matching the Quickdraw instance information. */ +CT_EXPORT CTFontRef CTFontCreateWithQuickdrawInstance( ConstStr255Param _Nullable name, int16_t identifier, @@ -1472,10 +1542,27 @@ typedef CF_OPTIONS(uint32_t, CTFontTableOptions) { @result This function returns an array of CTFontTableTag values for the given font and the supplied options. The returned set will contain unboxed values, which may be extracted like so: CTFontTableTag tag = (CTFontTableTag)(uintptr_t)CFArrayGetValueAtIndex(tags, index); */ +CT_EXPORT CFArrayRef _Nullable CTFontCopyAvailableTables( CTFontRef font, CTFontTableOptions options ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); +/*! + @function CTFontHasTable + @abstract Determine whether a table is present in a font. + @discussion This is a convenience function to avoid requesting an array of table tags or any table data. It behaves according as if using `kCTFontTableOptionNoOptions`. + + @param font + The font reference. + + @param tag + The font table identifier as a CTFontTableTag. + + @result Returns true if the call was successful and the requested table is present. +*/ +CT_EXPORT +bool CTFontHasTable(CTFontRef font, CTFontTableTag tag) CT_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); + /*! @function CTFontCopyTable @abstract Returns a reference to the font table data. @@ -1491,6 +1578,7 @@ CFArrayRef _Nullable CTFontCopyAvailableTables( @result This function returns a retained reference to the font table data as CFDataRef or NULL if the table is not present. */ +CT_EXPORT CFDataRef _Nullable CTFontCopyTable( CTFontRef font, CTFontTableTag table, @@ -1518,8 +1606,9 @@ CFDataRef _Nullable CTFontCopyTable( @param context CGContext used to render the glyphs. */ +CT_EXPORT void CTFontDrawGlyphs( - CTFontRef font, + CTFontRef font, const CGGlyph glyphs[_Nonnull], const CGPoint positions[_Nonnull], size_t count, @@ -1550,6 +1639,7 @@ void CTFontDrawGlyphs( @result Returns the number of caret positions for the specified glyph. */ +CT_EXPORT CFIndex CTFontGetLigatureCaretPositions( CTFontRef font, CGGlyph glyph, @@ -1633,19 +1723,68 @@ CT_EXPORT const CFStringRef kCTBaselineReferenceFont CT_AVAILABLE(macos(10.8), i CT_EXPORT const CFStringRef kCTBaselineOriginalFont CT_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0)); +/*! -------------------------------------------------------------------------- + @group Adaptive Image Glyphs +*///-------------------------------------------------------------------------- + +#if defined(__OBJC__) +@protocol CTAdaptiveImageProviding; +#endif + /*! - @function CTFontCopyDefaultCascadeListForLanguages - @abstract Return an ordered list of CTFontDescriptorRef's for font fallback derived from the system default fallback region according to the given language preferences. The style of the given is also matched as well as the weight and width of the font is not one of the system UI font, otherwise the UI font fallback is applied. + @function CTFontGetTypographicBoundsForAdaptiveImageProvider + @abstract Returns metrics needed by clients performing their own typesetting of an adaptive image glyph. + + @discussion Adaptive image glyphs are handled automatically when using an attributed string with system frameworks. + Clients performing their own typesetting can use this function to calculate the appropriate metrics for an adaptive image glyph, + including the ascent and descent to be used instead of those applicable to the font on its own. @param font - The font reference. - - @param languagePrefList - The language preference list - ordered array of CFStringRef's of ISO language codes. + The effective font in the range containing the adaptive image glyph. - @result The ordered list of fallback fonts - ordered array of CTFontDescriptors. + @param provider + An object conforming to the CTAdaptiveImageProviding protocol. Default results will be returned in the absence of a provider, on the assumption an image is not yet available. + + @result The typographic bounds in points expressed as a rect whose width corresponds to the advance width, maximum Y corresponds to the ascent (above the baseline), and minimum Y corresponds to the descent (below the baseline). + + @seealso CTAdaptiveImageProviding */ -CFArrayRef _Nullable CTFontCopyDefaultCascadeListForLanguages( CTFontRef font, CFArrayRef _Nullable languagePrefList ) CT_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0)); +#if defined(__OBJC__) +CT_EXPORT +CGRect CTFontGetTypographicBoundsForAdaptiveImageProvider(CTFontRef font, id _Nullable provider) CT_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +#else +CT_EXPORT +CGRect CTFontGetTypographicBoundsForAdaptiveImageProvider(CTFontRef font, CFTypeRef _Nullable provider) CT_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +#endif + +/*! + @function CTFontDrawImageFromAdaptiveImageProviderAtPoint + @abstract Draws the image for a font and adaptive image provider. + + @discussion Adaptive image glyphs are handled automatically when using an attributed string with system frameworks. + Clients performing their own typesetting can use this function to display an adaptive image glyph at the given point. + + @param font + The effective font in the range containing the adaptive image glyph. + + @param provider + An object conforming to the CTAdaptiveImageProviding protocol. + + @param point + The position relative to which the adaptive image glyph will be drawn. + + @param context + The context in which the adaptive image glyph will be drawn. + + @seealso CTAdaptiveImageProviding +*/ +#if defined(__OBJC__) +CT_EXPORT +void CTFontDrawImageFromAdaptiveImageProviderAtPoint(CTFontRef font, id provider, CGPoint point, CGContextRef context) CT_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +#else +CT_EXPORT +void CTFontDrawImageFromAdaptiveImageProviderAtPoint(CTFontRef font, CFTypeRef provider, CGPoint point, CGContextRef context) CT_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +#endif CF_ASSUME_NONNULL_END CF_EXTERN_C_END diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTFontCollection.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTFontCollection.h index 7f818ee6..35eeae7f 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTFontCollection.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTFontCollection.h @@ -54,6 +54,7 @@ typedef struct CF_BRIDGED_MUTABLE_TYPE(NSMutableFontCollection) __CTFontCollecti @abstract Returns the type identifier for Core Text font collection references. @result The identifier for the opaque types CTFontCollectionRef or CTMutableFontCollectionRef. */ +CT_EXPORT CFTypeID CTFontCollectionGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! @@ -104,6 +105,7 @@ CT_EXPORT const CFStringRef kCTFontCollectionDisallowAutoActivationOption CT_AVA @result This function creates a new collection containing all fonts available to the current application. */ +CT_EXPORT CTFontCollectionRef CTFontCollectionCreateFromAvailableFonts( CFDictionaryRef _Nullable options ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -119,6 +121,7 @@ CTFontCollectionRef CTFontCollectionCreateFromAvailableFonts( @result This function creates a new collection based on the provided font descriptors. The contents of this collection is defined by matching the provided descriptors against all available font descriptors. */ +CT_EXPORT CTFontCollectionRef CTFontCollectionCreateWithFontDescriptors( CFArrayRef _Nullable queryDescriptors, CFDictionaryRef _Nullable options ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -138,6 +141,7 @@ CTFontCollectionRef CTFontCollectionCreateWithFontDescriptors( @result This function creates a copy of the original font collection augmented by the new font descriptors and options. The new font descriptors are merged with the existing descriptors to create a single set. */ +CT_EXPORT CTFontCollectionRef CTFontCollectionCreateCopyWithFontDescriptors( CTFontCollectionRef original, CFArrayRef _Nullable queryDescriptors, @@ -152,6 +156,7 @@ CTFontCollectionRef CTFontCollectionCreateCopyWithFontDescriptors( @result This function creates a mutable copy of the original font collection. */ +CT_EXPORT CTMutableFontCollectionRef CTFontCollectionCreateMutableCopy( CTFontCollectionRef original ) CT_AVAILABLE(macos(10.7)) CT_UNAVAILABLE(ios, watchos, tvos); @@ -168,6 +173,7 @@ CTMutableFontCollectionRef CTFontCollectionCreateMutableCopy( @result This function returns a retained reference to the array of descriptors to be used to query (match) the system font database. The return value is undefined if CTFontCollectionCreateFromAvailableFonts was used to create the collection. */ +CT_EXPORT CFArrayRef _Nullable CTFontCollectionCopyQueryDescriptors( CTFontCollectionRef collection ) CT_AVAILABLE(macos(10.7)) CT_UNAVAILABLE(ios, watchos, tvos); @@ -181,6 +187,7 @@ CFArrayRef _Nullable CTFontCollectionCopyQueryDescriptors( @param descriptors An array of CTFontDescriptorRef. May be NULL to represent an empty collection, in which case the matching descriptors will also be NULL. */ +CT_EXPORT void CTFontCollectionSetQueryDescriptors( CTMutableFontCollectionRef collection, CFArrayRef _Nullable descriptors ) CT_AVAILABLE(macos(10.7)) CT_UNAVAILABLE(ios, watchos, tvos); @@ -194,6 +201,7 @@ void CTFontCollectionSetQueryDescriptors( @result This function returns a retained reference to the array of descriptors to be used to query (match) the system font database. */ +CT_EXPORT CFArrayRef _Nullable CTFontCollectionCopyExclusionDescriptors( CTFontCollectionRef collection ) CT_AVAILABLE(macos(10.7)) CT_UNAVAILABLE(ios, watchos, tvos); /*! @@ -206,6 +214,7 @@ CFArrayRef _Nullable CTFontCollectionCopyExclusionDescriptors( CTFontCollectionR @param descriptors An array of CTFontDescriptorRef. May be NULL. */ +CT_EXPORT void CTFontCollectionSetExclusionDescriptors( CTMutableFontCollectionRef collection, CFArrayRef _Nullable descriptors ) CT_AVAILABLE(macos(10.7)) CT_UNAVAILABLE(ios, watchos, tvos); @@ -223,6 +232,7 @@ void CTFontCollectionSetExclusionDescriptors( @result An array of CTFontDescriptors matching the collection definition or NULL if there are none. */ +CT_EXPORT CFArrayRef _Nullable CTFontCollectionCreateMatchingFontDescriptors( CTFontCollectionRef collection ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -241,6 +251,7 @@ CFArrayRef _Nullable CTFontCollectionCreateMatchingFontDescriptors( @result An array of CTFontDescriptors matching the criteria of the collection, sorted by the results of the sorting callback function, or NULL if there are none. */ +CT_EXPORT CFArrayRef _Nullable CTFontCollectionCreateMatchingFontDescriptorsSortedWithCallback( CTFontCollectionRef collection, CTFontCollectionSortDescriptorsCallback _Nullable sortCallback, @@ -258,6 +269,7 @@ CFArrayRef _Nullable CTFontCollectionCreateMatchingFontDescriptorsSortedWithCall @result An array of CTFontDescriptors matching the collection definition or NULL if there are none. */ +CT_EXPORT CFArrayRef _Nullable CTFontCollectionCreateMatchingFontDescriptorsWithOptions( CTFontCollectionRef collection, CFDictionaryRef _Nullable options ) CT_AVAILABLE(macos(10.7), ios(12.0), watchos(5.0), tvos(12.0)); @@ -274,6 +286,7 @@ CFArrayRef _Nullable CTFontCollectionCreateMatchingFontDescriptorsWithOptions( @result An array of CTFontDescriptors matching the specified family in the collection or NULL if there are none. */ +CT_EXPORT CFArrayRef _Nullable CTFontCollectionCreateMatchingFontDescriptorsForFamily( CTFontCollectionRef collection, CFStringRef familyName, @@ -313,6 +326,7 @@ typedef CF_OPTIONS(uint32_t, CTFontCollectionCopyOptions) { @result An array containing one value for each descriptor. With kCTFontCollectionCopyDefaultOptions, the values will be in the same order as the results from CTFontCollectionCreateMatchingFontDescriptors and NULL values will be transformed to kCFNull. When the kCTFontCollectionCopyUnique is set, duplicate values will be removed. When kCTFontCollectionCopyStandardSort is set, the values will be sorted in standard UI order. */ +CT_EXPORT CFArrayRef CTFontCollectionCopyFontAttribute( CTFontCollectionRef collection, CFStringRef attributeName, @@ -333,6 +347,7 @@ CFArrayRef CTFontCollectionCopyFontAttribute( @result An array containing one CFDictionary value for each descriptor mapping the requested attribute names. With kCTFontCollectionCopyDefaultOptions, the values will be in the same order as the results from CTFontCollectionCreateMatchingFontDescriptors. When the kCTFontCollectionCopyUnique is set, duplicate values will be removed. When kCTFontCollectionCopyStandardSort is set, the values will be sorted in standard UI order. */ +CT_EXPORT CFArrayRef CTFontCollectionCopyFontAttributes( CTFontCollectionRef collection, CFSetRef attributeNames, diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTFontDescriptor.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTFontDescriptor.h index 22b67a75..73e1b61e 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTFontDescriptor.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTFontDescriptor.h @@ -46,6 +46,7 @@ typedef const struct CF_BRIDGED_TYPE(NSFontDescriptor) __CTFontDescriptor * CTFo references. @result The identifier for the opaque type CTFontDescriptorRef. */ +CT_EXPORT CFTypeID CTFontDescriptorGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); /*! -------------------------------------------------------------------------- @@ -306,6 +307,7 @@ CT_EXPORT const CFStringRef kCTFontOpticalSizeAttribute CT_AVAILABLE(macos(10.9) @discussion If you are trying to create a system UI font descriptor (with name beginning with a "."), you should create a font with CTFontCreateUIFontForLanguage() or appropriate AppKit/UIKit APIs instead, then use CTFontCopyFontDescriptor() to get its font descriptor. */ +CT_EXPORT CTFontDescriptorRef CTFontDescriptorCreateWithNameAndSize( CFStringRef name, CGFloat size ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -319,6 +321,7 @@ CTFontDescriptorRef CTFontDescriptorCreateWithNameAndSize( @result This function creates a new font descriptor with the attributes specified. This dictionary can contain arbitrary attributes that will be preserved, however unrecognized attributes will be ignored on font creation and and may not be preserved over the round trip (descriptor -> font -> descriptor). */ +CT_EXPORT CTFontDescriptorRef CTFontDescriptorCreateWithAttributes( CFDictionaryRef attributes ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -336,6 +339,7 @@ CTFontDescriptorRef CTFontDescriptorCreateWithAttributes( Starting with macOS 10.12 and iOS 10.0, setting the value of kCTFontFeatureSettingsAttribute to kCFNull will clear the feature settings of the original font descriptor. Setting the value of any individual feature settings pair in the kCTFontFeatureSettingsAttribute value array to kCFNull will clear that feature setting alone. For example, an element like @{ (id)kCTFontFeatureTypeIdentifierKey: @(kLigaturesType), (id)kCTFontFeatureSelectorIdentifierKey: (id)kCFNull } means clear the kLigatureType feature set in the original font descriptor. An element like @[ @"liga", (id)kCFNull ] will have the same effect. */ +CT_EXPORT CTFontDescriptorRef CTFontDescriptorCreateCopyWithAttributes( CTFontDescriptorRef original, CFDictionaryRef attributes ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -352,6 +356,7 @@ CTFontDescriptorRef CTFontDescriptorCreateCopyWithAttributes( @result Returns a new font reference with the original traits in the given family, or NULL if none found in the system. */ +CT_EXPORT CTFontDescriptorRef _Nullable CTFontDescriptorCreateCopyWithFamily( CTFontDescriptorRef original, CFStringRef family ) CT_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)); @@ -371,6 +376,7 @@ CTFontDescriptorRef _Nullable CTFontDescriptorCreateCopyWithFamily( @result Returns a new font descriptor reference in the same family with the given symbolic traits, or NULL if none found in the system. */ +CT_EXPORT CTFontDescriptorRef _Nullable CTFontDescriptorCreateCopyWithSymbolicTraits( CTFontDescriptorRef original, CTFontSymbolicTraits symTraitValue, @@ -391,6 +397,7 @@ CTFontDescriptorRef _Nullable CTFontDescriptorCreateCopyWithSymbolicTraits( @result This function returns a copy of the original font descriptor with a new variation instance. This is a convenience method for easily creating new variation font instances. */ +CT_EXPORT CTFontDescriptorRef CTFontDescriptorCreateCopyWithVariation( CTFontDescriptorRef original, CFNumberRef variationIdentifier, @@ -413,6 +420,7 @@ CTFontDescriptorRef CTFontDescriptorCreateCopyWithVariation( @result A copy of the original font descriptor modified with the given feature settings. */ +CT_EXPORT CTFontDescriptorRef CTFontDescriptorCreateCopyWithFeature( CTFontDescriptorRef original, CFNumberRef featureTypeIdentifier, @@ -430,6 +438,7 @@ CTFontDescriptorRef CTFontDescriptorCreateCopyWithFeature( @result This function returns a retained array of normalized font descriptors matching the attributes present in descriptor. If descriptor itself is normalized then the array will contain only one item, the original descriptor. */ +CT_EXPORT CFArrayRef _Nullable CTFontDescriptorCreateMatchingFontDescriptors( CTFontDescriptorRef descriptor, CFSetRef _Nullable mandatoryAttributes ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -446,6 +455,7 @@ CFArrayRef _Nullable CTFontDescriptorCreateMatchingFontDescriptors( @result This function returns a retained normalized font descriptor matching the attributes present in descriptor. The original descriptor may be returned in normalized form. */ +CT_EXPORT CTFontDescriptorRef _Nullable CTFontDescriptorCreateMatchingFontDescriptor( CTFontDescriptorRef descriptor, CFSetRef _Nullable mandatoryAttributes ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -521,6 +531,7 @@ typedef bool (^CTFontDescriptorProgressHandler)(CTFontDescriptorMatchingState st @result false if it couldn't start the work. */ +CT_EXPORT bool CTFontDescriptorMatchFontDescriptorsWithProgressHandler( CFArrayRef descriptors, CFSetRef _Nullable mandatoryAttributes, @@ -541,6 +552,7 @@ bool CTFontDescriptorMatchFontDescriptorsWithProgressHandler( @result A retained reference to the font descriptor attributes dictionary. This dictionary will contain the minimum number of attributes to fully specify this particular font descriptor. */ +CT_EXPORT CFDictionaryRef CTFontDescriptorCopyAttributes( CTFontDescriptorRef descriptor ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -556,6 +568,7 @@ CFDictionaryRef CTFontDescriptorCopyAttributes( @result A retained reference to the requested attribute, or NULL if the requested attribute is not present. Refer to the attribute definitions for documentation as to how each attribute is packaged as a CFType. */ +CT_EXPORT CFTypeRef _Nullable CTFontDescriptorCopyAttribute( CTFontDescriptorRef descriptor, CFStringRef attribute ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -578,6 +591,7 @@ CFTypeRef _Nullable CTFontDescriptorCopyAttribute( @result A retained reference to the requested attribute, or NULL if the requested attribute is not present. Refer to the attribute definitions for documentation as to how each attribute is packaged as a CFType. */ +CT_EXPORT CFTypeRef _Nullable CTFontDescriptorCopyLocalizedAttribute( CTFontDescriptorRef descriptor, CFStringRef attribute, diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTFontManager.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTFontManager.h index cd70305d..c1067641 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTFontManager.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTFontManager.h @@ -2,7 +2,7 @@ * CTFontManager.h * CoreText * - * Copyright (c) 2008-2022 Apple Inc. All rights reserved. + * Copyright (c) 2008-2024 Apple Inc. All rights reserved. * */ @@ -35,6 +35,7 @@ CF_ASSUME_NONNULL_BEGIN @result An array of CFStrings. */ +CT_EXPORT CFArrayRef CTFontManagerCopyAvailablePostScriptNames( void ) CT_AVAILABLE(macos(10.6), ios(10.0), watchos(3.0), tvos(10.0)); /*! @@ -43,6 +44,7 @@ CFArrayRef CTFontManagerCopyAvailablePostScriptNames( void ) CT_AVAILABLE(macos( @result An array of CFStrings. */ +CT_EXPORT CFArrayRef CTFontManagerCopyAvailableFontFamilyNames( void ) CT_AVAILABLE(macos(10.6), ios(10.0), watchos(3.0), tvos(10.0)); /*! @@ -51,6 +53,7 @@ CFArrayRef CTFontManagerCopyAvailableFontFamilyNames( void ) CT_AVAILABLE(macos( @result An array of CFURLs. */ +CT_EXPORT CFArrayRef CTFontManagerCopyAvailableFontURLs( void ) CT_AVAILABLE(macos(10.6)) CT_UNAVAILABLE(ios, watchos, tvos); /*! @@ -65,6 +68,7 @@ CFArrayRef CTFontManagerCopyAvailableFontURLs( void ) CT_AVAILABLE(macos(10.6)) Unused. Can be NULL. @result A CFComparisonResult value indicating the sort order for the two family names. kCFComparisonResultGreaterThan if family1 is greater than family2, kCFComparisonResultLessThan if family1 is less than family2, and kCFComparisonResultEqualTo if they are equal. */ +CT_EXPORT CFComparisonResult CTFontManagerCompareFontFamilyNames( const void * family1, const void * family2, @@ -80,6 +84,7 @@ CFComparisonResult CTFontManagerCompareFontFamilyNames( @result An array of CTFontDescriptors or NULL if there are no valid fonts. */ +CT_EXPORT CFArrayRef _Nullable CTFontManagerCreateFontDescriptorsFromURL( CFURLRef fileURL ) CT_AVAILABLE(macos(10.6), ios(7.0), watchos(2.0), tvos(9.0)); @@ -95,6 +100,7 @@ CFArrayRef _Nullable CTFontManagerCreateFontDescriptorsFromURL( @result A font descriptor created from the data or NULL if it is not a valid font. */ +CT_EXPORT CTFontDescriptorRef _Nullable CTFontManagerCreateFontDescriptorFromData( CFDataRef data ) CT_AVAILABLE(macos(10.7), ios(7.0), watchos(2.0), tvos(9.0)); @@ -108,6 +114,7 @@ CTFontDescriptorRef _Nullable CTFontManagerCreateFontDescriptorFromData( @result An array of font descriptors. This can be an empty array in the event of invalid or unsupported font data. */ +CT_EXPORT CFArrayRef CTFontManagerCreateFontDescriptorsFromData(CFDataRef data) CT_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)); /*! @@ -160,6 +167,7 @@ CT_EXPORT const CFStringRef kCTFontRegistrationUserInfoAttribute CT_AVAILABLE(io @result Returns true if registration of the fonts was successful. */ +CT_EXPORT bool CTFontManagerRegisterFontsForURL( CFURLRef fontURL, CTFontManagerScope scope, @@ -182,6 +190,7 @@ bool CTFontManagerRegisterFontsForURL( @result Returns true if unregistration of the fonts was successful. */ +CT_EXPORT bool CTFontManagerUnregisterFontsForURL( CFURLRef fontURL, CTFontManagerScope scope, @@ -190,8 +199,9 @@ bool CTFontManagerUnregisterFontsForURL( /*! @function CTFontManagerRegisterGraphicsFont @abstract Registers the specified graphics font with the font manager. Registered fonts participate in font descriptor matching. - Attempts to register a font that is either already registered or contains the same PostScript name of an already registered font will fail. - This functionality is useful for fonts that may be embedded in documents or present/constructed in memory. A graphics font is obtained + + @discussion Attempts to register a font that is either already registered or contains the same PostScript name of an already registered font will fail. + This functionality is intended for fonts that may be embedded in documents or present/constructed in memory. A graphics font is obtained by calling CGFontCreateWithDataProvider. Fonts that are backed by files should be registered using CTFontManagerRegisterFontsForURL. @param font @@ -202,10 +212,11 @@ bool CTFontManagerUnregisterFontsForURL( @result Returns true if registration of the fonts was successful. */ +CT_EXPORT bool CTFontManagerRegisterGraphicsFont( CGFontRef font, - CFErrorRef * error ) CT_AVAILABLE(macos(10.8), ios(4.1), watchos(2.0), tvos(9.0)); - + CFErrorRef * error ) CT_DEPRECATED("Use CTFontManagerCreateFontDescriptorsFromData or CTFontManagerRegisterFontsForURL", macos(10.8, 15), ios(4.1, 18), watchos(2, 11), tvos(9, 18)); + /*! @function CTFontManagerUnregisterGraphicsFont @abstract Unregisters the specified graphics font with the font manager. Unregistered fonts do not participate in font descriptor matching. @@ -218,9 +229,10 @@ bool CTFontManagerRegisterGraphicsFont( @result Returns true if unregistration of the font was successful. */ +CT_EXPORT bool CTFontManagerUnregisterGraphicsFont( CGFontRef font, - CFErrorRef * error ) CT_AVAILABLE(macos(10.8), ios(4.1), watchos(2.0), tvos(9.0)); + CFErrorRef * error ) CT_DEPRECATED("Use the API corresponding to the one used to register the font", macos(10.8, 15), ios(4.1, 18), watchos(2, 11), tvos(9, 18)); /*! @function CTFontManagerRegisterFontsForURLs @@ -237,6 +249,7 @@ bool CTFontManagerUnregisterGraphicsFont( @result Returns true if registration of all font URLs was successful. Otherwise false. */ +CT_EXPORT bool CTFontManagerRegisterFontsForURLs( CFArrayRef fontURLs, CTFontManagerScope scope, @@ -258,6 +271,7 @@ bool CTFontManagerRegisterFontsForURLs( @result Returns true if unregistration of all font URLs was successful. Otherwise false. */ +CT_EXPORT bool CTFontManagerUnregisterFontsForURLs( CFArrayRef fontURLs, CTFontManagerScope scope, @@ -282,6 +296,7 @@ bool CTFontManagerUnregisterFontsForURLs( @param registrationHandler Block called as errors are discovered or upon completion. The errors parameter contains an array of CFError references. An empty array indicates no errors. Each error reference will contain a CFArray of font URLs corresponding to kCTFontManagerErrorFontURLsKey. These URLs represent the font files that caused the error, and were not successfully registered. Note, the handler may be called multiple times during the registration process. The done parameter will be set to true when the registration process has completed. The handler should return false if the operation is to be stopped. This may be desirable after receiving an error. */ +CT_EXPORT void CTFontManagerRegisterFontURLs( CFArrayRef fontURLs, CTFontManagerScope scope, @@ -302,6 +317,7 @@ void CTFontManagerRegisterFontURLs( @param registrationHandler Block called as errors are discovered or upon completion. The errors parameter will be an empty array if all files are unregistered. Otherwise, it will contain an array of CFError references. Each error reference will contain a CFArray of font URLs corresponding to kCTFontManagerErrorFontURLsKey. These URLs represent the font files that caused the error, and were not successfully unregistered. Note, the handler may be called multiple times during the unregistration process. The done parameter will be set to true when the unregistration process has completed. The handler should return false if the operation is to be stopped. This may be desirable after receiving an error. */ +CT_EXPORT void CTFontManagerUnregisterFontURLs( CFArrayRef fontURLs, CTFontManagerScope scope, @@ -325,6 +341,7 @@ void CTFontManagerUnregisterFontURLs( @param registrationHandler Block called as errors are discovered or upon completion. The errors parameter contains an array of CFError references. An empty array indicates no errors. Each error reference will contain a CFArray of font descriptors corresponding to kCTFontManagerErrorFontDescriptorsKey. These represent the font descriptors that caused the error, and were not successfully registered. Note, the handler may be called multiple times during the registration process. The done parameter will be set to true when the registration process has completed. The handler should return false if the operation is to be stopped. This may be desirable after receiving an error. */ +CT_EXPORT void CTFontManagerRegisterFontDescriptors( CFArrayRef fontDescriptors, CTFontManagerScope scope, @@ -344,6 +361,7 @@ void CTFontManagerRegisterFontDescriptors( @param registrationHandler Block called as errors are discovered or upon completion. The errors parameter will be an empty array if all font descriptors are unregistered. Otherwise, it will contain an array of CFError references. Each error reference will contain a CFArray of font descriptors corresponding to kCTFontManagerErrorFontDescriptorsKey. These represent the font descriptors that caused the error, and were not successfully unregistered. Note, the handler may be called multiple times during the unregistration process. The done parameter will be set to true when the unregistration process has completed. The handler should return false if the operation is to be stopped. This may be desirable after receiving an error. */ +CT_EXPORT void CTFontManagerUnregisterFontDescriptors( CFArrayRef fontDescriptors, CTFontManagerScope scope, @@ -371,6 +389,7 @@ void CTFontManagerUnregisterFontDescriptors( @param registrationHandler Block called as errors are discovered, or upon completion. The errors parameter contains an array of CFError references. An empty array indicates no errors. Each error reference will contain a CFArray of font asset names corresponding to kCTFontManagerErrorFontAssetNameKey. These represent the font asset names that were not successfully registered. Note, the handler may be called multiple times during the registration process. The done parameter will be set to true when the registration process has completed. The handler should return false if the operation is to be stopped. This may be desirable after receiving an error. */ +CT_EXPORT void CTFontManagerRegisterFontsWithAssetNames( CFArrayRef fontAssetNames, CFBundleRef _Nullable bundle, @@ -389,6 +408,7 @@ void CTFontManagerRegisterFontsWithAssetNames( @param enable Boolean value indicating whether the fonts matching descriptors should be enabled for font descriptor matching. */ +CT_EXPORT void CTFontManagerEnableFontDescriptors( CFArrayRef descriptors, bool enable ) CT_AVAILABLE(macos(10.6)) CT_UNAVAILABLE(ios, watchos, tvos); @@ -402,6 +422,7 @@ void CTFontManagerEnableFontDescriptors( @result Returns the registration scope of the specified URL, will return kCTFontManagerScopeNone if not currently registered. */ +CT_EXPORT CTFontManagerScope CTFontManagerGetScopeForURL( CFURLRef fontURL ) CT_AVAILABLE(macos(10.6)) CT_UNAVAILABLE(ios, watchos, tvos); @@ -419,6 +440,7 @@ CTFontManagerScope CTFontManagerGetScopeForURL( @result Array of of font descriptors registered by the application. Array may be empty if nothing is registered. */ +CT_EXPORT CFArrayRef CTFontManagerCopyRegisteredFontDescriptors( CTFontManagerScope scope, bool enabled ) CT_AVAILABLE(ios(13.0)) API_UNAVAILABLE(macos, watchos, tvos); @@ -436,6 +458,7 @@ CFArrayRef CTFontManagerCopyRegisteredFontDescriptors( @param completionHandler Block called after request operation completes. Block takes a single parameter containing an array of those descriptors that could not be resolved/found. The array can be empty if all descriptors were resolved. */ +CT_EXPORT void CTFontManagerRequestFonts( CFArrayRef fontDescriptors, void (^completionHandler)(CFArrayRef unresolvedFontDescriptors) ) CT_AVAILABLE(ios(13.0)) API_UNAVAILABLE(macos, watchos, tvos); @@ -452,6 +475,7 @@ void CTFontManagerRequestFonts( @result This function returns true if the file is in a supported font format. */ +CT_EXPORT bool CTFontManagerIsSupportedFont( CFURLRef fontURL ) CT_AVAILABLE(macos(10.6)) CT_UNAVAILABLE(ios, watchos, tvos); @@ -469,6 +493,7 @@ bool CTFontManagerIsSupportedFont( A block to handle the font request. @result A CFRunLoopSourceRef that should be added to the run loop. To stop receiving requests, invalidate this run loop source. Will return NULL on error, in the case of a duplicate requestPortName or invalid context structure. */ +CT_EXPORT CFRunLoopSourceRef _Nullable CTFontManagerCreateFontRequestRunLoopSource( CFIndex sourceOrder, CFArrayRef (^createMatchesCallback)(CFDictionaryRef requestAttributes, pid_t requestingProcess)) CT_DEPRECATED("This functionality will be removed in a future release", macos(10.6, 11.0)) CT_UNAVAILABLE(ios, watchos, tvos); @@ -512,6 +537,7 @@ typedef CF_ENUM(uint32_t, CTFontManagerAutoActivationSetting) { The new setting. @discussion Function will apply the setting to the appropriate preferences location. */ +CT_EXPORT void CTFontManagerSetAutoActivationSetting( CFStringRef _Nullable bundleIdentifier, CTFontManagerAutoActivationSetting setting ) CT_AVAILABLE(macos(10.6)) CT_UNAVAILABLE(ios, watchos, tvos); @@ -525,6 +551,7 @@ void CTFontManagerSetAutoActivationSetting( will set the global auto-activation settings. @result Will return the auto-activation setting for specified bundle identifier. */ +CT_EXPORT CTFontManagerAutoActivationSetting CTFontManagerGetAutoActivationSetting( CFStringRef _Nullable bundleIdentifier ) CT_AVAILABLE(macos(10.6)) CT_UNAVAILABLE(ios, watchos, tvos); diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTFrame.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTFrame.h index 09346952..cf00689a 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTFrame.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTFrame.h @@ -38,6 +38,7 @@ typedef const struct CF_BRIDGED_TYPE(id) __CTFrame * CTFrameRef; @abstract Returns the CFType of the frame object */ +CT_EXPORT CFTypeID CTFrameGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -178,6 +179,7 @@ CT_EXPORT const CFStringRef kCTFramePathClippingPathAttributeName CT_AVAILABLE(m then an empty range will be returned. */ +CT_EXPORT CFRange CTFrameGetStringRange( CTFrameRef frame ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -201,6 +203,7 @@ CFRange CTFrameGetStringRange( in the frame, then an empty range will be returned. */ +CT_EXPORT CFRange CTFrameGetVisibleStringRange( CTFrameRef frame ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -213,6 +216,7 @@ CFRange CTFrameGetVisibleStringRange( The frame that you want to obtain the path from. */ +CT_EXPORT CGPathRef CTFrameGetPath( CTFrameRef frame ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -235,6 +239,7 @@ CGPathRef CTFrameGetPath( will return NULL. */ +CT_EXPORT CFDictionaryRef _Nullable CTFrameGetFrameAttributes( CTFrameRef frame ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -257,6 +262,7 @@ CFDictionaryRef _Nullable CTFrameGetFrameAttributes( CTLine objects that make up the frame. */ +CT_EXPORT CFArrayRef CTFrameGetLines( CTFrameRef frame ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -292,6 +298,7 @@ CFArrayRef CTFrameGetLines( on framesetting in the first place. */ +CT_EXPORT void CTFrameGetLineOrigins( CTFrameRef frame, CFRange range, @@ -316,6 +323,7 @@ void CTFrameGetLineOrigins( drawn in the context. */ +CT_EXPORT void CTFrameDraw( CTFrameRef frame, CGContextRef context ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTFramesetter.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTFramesetter.h index 4e622876..ad14e793 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTFramesetter.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTFramesetter.h @@ -36,6 +36,7 @@ typedef const struct CF_BRIDGED_TYPE(id) __CTFramesetter * CTFramesetterRef; @abstract Returns the CFType of the framesetter object */ +CT_EXPORT CFTypeID CTFramesetterGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -60,6 +61,7 @@ CFTypeID CTFramesetterGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watc @seealso CTTypesetterCreateWithAttributedStringAndOptions */ +CT_EXPORT CTFramesetterRef CTFramesetterCreateWithTypesetter( CTTypesetterRef typesetter ) CT_AVAILABLE(macos(10.14), ios(12.0), watchos(5.0), tvos(12.0)); @@ -78,6 +80,7 @@ CTFramesetterRef CTFramesetterCreateWithTypesetter( @result This function will return a reference to a CTFramesetter object. */ +CT_EXPORT CTFramesetterRef CTFramesetterCreateWithAttributedString( CFAttributedStringRef attrString ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -117,6 +120,7 @@ CTFramesetterRef CTFramesetterCreateWithAttributedString( @result This function will return a reference to a new CTFrame object. */ +CT_EXPORT CTFrameRef CTFramesetterCreateFrame( CTFramesetterRef framesetter, CFRange stringRange, @@ -141,6 +145,7 @@ CTFrameRef CTFramesetterCreateFrame( object, which should not be released by the caller. */ +CT_EXPORT CTTypesetterRef CTFramesetterGetTypesetter( CTFramesetterRef framesetter ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -182,6 +187,7 @@ CTTypesetterRef CTFramesetterGetTypesetter( @result The actual dimensions for the given string range and constraints. */ +CT_EXPORT CGSize CTFramesetterSuggestFrameSizeWithConstraints( CTFramesetterRef framesetter, CFRange stringRange, diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTGlyphInfo.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTGlyphInfo.h index e5190093..1c4b1a80 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTGlyphInfo.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTGlyphInfo.h @@ -38,6 +38,7 @@ typedef const struct CF_BRIDGED_TYPE(NSGlyphInfo) CT_SWIFT_SENDABLE __CTGlyphInf @abstract Returns the CFType of the glyph info object */ +CT_EXPORT CFTypeID CTGlyphInfoGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -116,6 +117,7 @@ typedef CF_ENUM(uint16_t, CTCharacterCollection) { @result This function will return a reference to a CTGlyphInfo object. */ +CT_EXPORT CTGlyphInfoRef _Nullable CTGlyphInfoCreateWithGlyphName( CFStringRef glyphName, CTFontRef font, @@ -142,6 +144,7 @@ CTGlyphInfoRef _Nullable CTGlyphInfoCreateWithGlyphName( @result This function will return a reference to a CTGlyphInfo object. */ +CT_EXPORT CTGlyphInfoRef _Nullable CTGlyphInfoCreateWithGlyph( CGGlyph glyph, CTFontRef font, @@ -168,6 +171,7 @@ CTGlyphInfoRef _Nullable CTGlyphInfoCreateWithGlyph( @result This function will return a reference to a CTGlyphInfo object. */ +CT_EXPORT CTGlyphInfoRef _Nullable CTGlyphInfoCreateWithCharacterIdentifier( CGFontIndex cid, CTCharacterCollection collection, @@ -191,6 +195,7 @@ CTGlyphInfoRef _Nullable CTGlyphInfoCreateWithCharacterIdentifier( be returned. Otherwise, this function will return NULL. */ +CT_EXPORT CFStringRef _Nullable CTGlyphInfoGetGlyphName( CTGlyphInfoRef glyphInfo ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -208,6 +213,7 @@ CFStringRef _Nullable CTGlyphInfoGetGlyphName( returned. Otherwise, this function will return 0. */ +CT_EXPORT CGGlyph CTGlyphInfoGetGlyph( CTGlyphInfoRef glyphInfo ) CT_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); @@ -225,6 +231,7 @@ CGGlyph CTGlyphInfoGetGlyph( it will be returned. Otherwise, this function will return 0. */ +CT_EXPORT CGFontIndex CTGlyphInfoGetCharacterIdentifier( CTGlyphInfoRef glyphInfo ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -245,6 +252,7 @@ CGFontIndex CTGlyphInfoGetCharacterIdentifier( glyph info. */ +CT_EXPORT CTCharacterCollection CTGlyphInfoGetCharacterCollection( CTGlyphInfoRef glyphInfo ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTLine.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTLine.h index f24a15b7..eaae8456 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTLine.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTLine.h @@ -110,6 +110,7 @@ typedef CF_ENUM(uint32_t, CTLineTruncationType) { @abstract Returns the CFType of the line object */ +CT_EXPORT CFTypeID CTLineGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -134,6 +135,7 @@ CFTypeID CTLineGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0 @result This function will return a reference to a CTLine object. */ +CT_EXPORT CTLineRef CTLineCreateWithAttributedString( CFAttributedStringRef attrString ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -167,6 +169,7 @@ CTLineRef CTLineCreateWithAttributedString( NULL. */ +CT_EXPORT CTLineRef _Nullable CTLineCreateTruncatedLine( CTLineRef line, double width, @@ -198,6 +201,7 @@ CTLineRef _Nullable CTLineCreateTruncatedLine( NULL. */ +CT_EXPORT CTLineRef _Nullable CTLineCreateJustifiedLine( CTLineRef line, CGFloat justificationFactor, @@ -221,6 +225,7 @@ CTLineRef _Nullable CTLineCreateJustifiedLine( @result The total glyph count for the line passed in. */ +CT_EXPORT CFIndex CTLineGetGlyphCount( CTLineRef line ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -235,6 +240,7 @@ CFIndex CTLineGetGlyphCount( @result A CFArrayRef containing the CTRun objects that make up the line. */ +CT_EXPORT CFArrayRef CTLineGetGlyphRuns( CTLineRef line ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -252,6 +258,7 @@ CFArrayRef CTLineGetGlyphRuns( empty range will be returned. */ +CT_EXPORT CFRange CTLineGetStringRange( CTLineRef line ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -277,6 +284,7 @@ CFRange CTLineGetStringRange( the flush operation. */ +CT_EXPORT double CTLineGetPenOffsetForFlush( CTLineRef line, CGFloat flushFactor, @@ -301,6 +309,7 @@ double CTLineGetPenOffsetForFlush( The context to which the line will be drawn. */ +CT_EXPORT void CTLineDraw( CTLineRef line, CGContextRef context ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -339,6 +348,7 @@ void CTLineDraw( @seealso CTLineGetTrailingWhitespaceWidth */ +CT_EXPORT double CTLineGetTypographicBounds( CTLineRef line, CGFloat * _Nullable ascent, @@ -362,6 +372,7 @@ double CTLineGetTypographicBounds( is invalid this function will return CGRectNull. */ +CT_EXPORT CGRect CTLineGetBoundsWithOptions( CTLineRef line, CTLineBoundsOptions options ) CT_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0)); @@ -383,6 +394,7 @@ CGRect CTLineGetBoundsWithOptions( this function will always return zero. */ +CT_EXPORT double CTLineGetTrailingWhitespaceWidth( CTLineRef line ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -414,6 +426,7 @@ double CTLineGetTrailingWhitespaceWidth( @seealso CTLineGetPenOffsetForFlush */ +CT_EXPORT CGRect CTLineGetImageBounds( CTLineRef line, CGContextRef _Nullable context ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -446,6 +459,7 @@ CGRect CTLineGetImageBounds( failure, this function will return kCFNotFound. */ +CT_EXPORT CFIndex CTLineGetStringIndexForPosition( CTLineRef line, CGPoint position ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -483,6 +497,7 @@ CFIndex CTLineGetStringIndexForPosition( the event of failure. */ +CT_EXPORT CGFloat CTLineGetOffsetForStringIndex( CTLineRef line, CFIndex charIndex, @@ -501,6 +516,7 @@ CGFloat CTLineGetOffsetForStringIndex( The offset parameter is relative to the line origin. The leadingEdge parameter of this block refers to logical order. */ +CT_EXPORT void CTLineEnumerateCaretOffsets( CTLineRef line, void (^block)(double offset, CFIndex charIndex, bool leadingEdge, bool* stop) ) CT_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTParagraphStyle.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTParagraphStyle.h index c3002bc1..849d3162 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTParagraphStyle.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTParagraphStyle.h @@ -38,6 +38,7 @@ typedef const struct CF_RELATED_TYPE(NSParagraphStyle,,) __CTParagraphStyle * CT @abstract Returns the CFType of the paragraph style object */ +CT_EXPORT CFTypeID CTParagraphStyleGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -417,6 +418,7 @@ typedef struct CTParagraphStyleSetting object. Otherwise, this function will return NULL. */ +CT_EXPORT CTParagraphStyleRef CTParagraphStyleCreate( const CTParagraphStyleSetting * _Nullable settings, size_t settingCount ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -435,6 +437,7 @@ CTParagraphStyleRef CTParagraphStyleCreate( "paragraphStyle". */ +CT_EXPORT CTParagraphStyleRef CTParagraphStyleCreateCopy( CTParagraphStyleRef paragraphStyle ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -478,6 +481,7 @@ CTParagraphStyleRef CTParagraphStyleCreateCopy( indicating that one or more of the parameters is not valid. */ +CT_EXPORT bool CTParagraphStyleGetValueForSpecifier( CTParagraphStyleRef paragraphStyle, CTParagraphStyleSpecifier spec, diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTRubyAnnotation.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTRubyAnnotation.h index da3943a7..6e3d91a8 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTRubyAnnotation.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTRubyAnnotation.h @@ -38,6 +38,7 @@ typedef const struct CF_BRIDGED_TYPE(id) __CTRubyAnnotation * CTRubyAnnotationRe @abstract Returns the CFType of the ruby annotation object */ +CT_EXPORT CFTypeID CTRubyAnnotationGetTypeID( void ) CT_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); @@ -169,6 +170,7 @@ typedef CF_ENUM(uint8_t, CTRubyPosition) { @result This function will return a reference to a CTRubyAnnotation object. */ +CT_EXPORT CTRubyAnnotationRef CTRubyAnnotationCreate( CTRubyAlignment alignment, CTRubyOverhang overhang, @@ -224,6 +226,7 @@ CT_EXPORT const CFStringRef kCTRubyAnnotationScaleToFitAttributeName CT_AVAILABL @result This function will return a reference to a CTRubyAnnotation object. */ +CT_EXPORT CTRubyAnnotationRef CTRubyAnnotationCreateWithAttributes( CTRubyAlignment alignment, CTRubyOverhang overhang, @@ -244,6 +247,7 @@ CTRubyAnnotationRef CTRubyAnnotationCreateWithAttributes( "rubyAnnotation". */ +CT_EXPORT CTRubyAnnotationRef CTRubyAnnotationCreateCopy( CTRubyAnnotationRef rubyAnnotation ) CT_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); @@ -259,6 +263,7 @@ CTRubyAnnotationRef CTRubyAnnotationCreateCopy( function will return its alignment. Otherwise it will return kCTRubyAlignmentInvalid. */ +CT_EXPORT CTRubyAlignment CTRubyAnnotationGetAlignment( CTRubyAnnotationRef rubyAnnotation ) CT_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); @@ -274,6 +279,7 @@ CTRubyAlignment CTRubyAnnotationGetAlignment( function will return its overhang value. Otherwise it will return kCTRubyOverhangInvalid. */ +CT_EXPORT CTRubyOverhang CTRubyAnnotationGetOverhang( CTRubyAnnotationRef rubyAnnotation ) CT_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); @@ -288,6 +294,7 @@ CTRubyOverhang CTRubyAnnotationGetOverhang( function will return its sizeFactor. Otherwise it will return 0. */ +CT_EXPORT CGFloat CTRubyAnnotationGetSizeFactor( CTRubyAnnotationRef rubyAnnotation ) CT_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); @@ -306,6 +313,7 @@ CGFloat CTRubyAnnotationGetSizeFactor( function will return a CFStringRef for the text. Otherwise it will return NULL. */ +CT_EXPORT CFStringRef _Nullable CTRubyAnnotationGetTextForPosition( CTRubyAnnotationRef rubyAnnotation, CTRubyPosition position ) CT_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTRun.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTRun.h index 3329f2b0..0b4bc780 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTRun.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTRun.h @@ -69,6 +69,7 @@ typedef CF_OPTIONS(uint32_t, CTRunStatus) @abstract Returns the CFType of the run object */ +CT_EXPORT CFTypeID CTRunGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -88,6 +89,7 @@ CFTypeID CTRunGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0) indicating that there are no glyphs in this run. */ +CT_EXPORT CFIndex CTRunGetGlyphCount( CTRunRef run ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -109,6 +111,7 @@ CFIndex CTRunGetGlyphCount( @result The attribute dictionary. */ +CT_EXPORT CFDictionaryRef CTRunGetAttributes( CTRunRef run ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -131,6 +134,7 @@ CFDictionaryRef CTRunGetAttributes( @result The run's status. */ +CT_EXPORT CTRunStatus CTRunGetStatus( CTRunRef run ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -152,6 +156,7 @@ CTRunStatus CTRunGetStatus( @result A valid pointer to an array of CGGlyph structures or NULL. */ +CT_EXPORT const CGGlyph * _Nullable CTRunGetGlyphsPtr( CTRunRef run ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -174,6 +179,7 @@ const CGGlyph * _Nullable CTRunGetGlyphsPtr( allocated to at least the value specified by the range's length. */ +CT_EXPORT void CTRunGetGlyphs( CTRunRef run, CFRange range, @@ -199,6 +205,7 @@ void CTRunGetGlyphs( @result A valid pointer to an array of CGPoint structures or NULL. */ +CT_EXPORT const CGPoint * _Nullable CTRunGetPositionsPtr( CTRunRef run ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -225,6 +232,7 @@ const CGPoint * _Nullable CTRunGetPositionsPtr( length. */ +CT_EXPORT void CTRunGetPositions( CTRunRef run, CFRange range, @@ -252,6 +260,7 @@ void CTRunGetPositions( @result A valid pointer to an array of CGSize structures or NULL. */ +CT_EXPORT const CGSize * _Nullable CTRunGetAdvancesPtr( CTRunRef run ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -275,6 +284,7 @@ const CGSize * _Nullable CTRunGetAdvancesPtr( length. */ +CT_EXPORT void CTRunGetAdvances( CTRunRef run, CFRange range, @@ -301,6 +311,7 @@ void CTRunGetAdvances( @result A valid pointer to an array of CFIndex structures or NULL. */ +CT_EXPORT const CFIndex * _Nullable CTRunGetStringIndicesPtr( CTRunRef run ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -328,6 +339,7 @@ const CFIndex * _Nullable CTRunGetStringIndicesPtr( length. */ +CT_EXPORT void CTRunGetStringIndices( CTRunRef run, CFRange range, @@ -346,6 +358,7 @@ void CTRunGetStringIndices( glyphs. If run is invalid, this will return an empty range. */ +CT_EXPORT CFRange CTRunGetStringRange( CTRunRef run ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -379,6 +392,7 @@ CFRange CTRunGetStringRange( invalid, then this function will always return zero. */ +CT_EXPORT double CTRunGetTypographicBounds( CTRunRef run, CFRange range, @@ -422,6 +436,7 @@ double CTRunGetTypographicBounds( @seealso CTRunGetTypographicBounds */ +CT_EXPORT CGRect CTRunGetImageBounds( CTRunRef run, CGContextRef _Nullable context, @@ -442,6 +457,7 @@ CGRect CTRunGetImageBounds( @result A CGAffineTransform. */ +CT_EXPORT CGAffineTransform CTRunGetTextMatrix( CTRunRef run ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -482,6 +498,7 @@ CGAffineTransform CTRunGetTextMatrix( specified by the range's length. */ +CT_EXPORT void CTRunGetBaseAdvancesAndOrigins( CTRunRef runRef, CFRange range, @@ -516,6 +533,7 @@ void CTRunGetBaseAdvancesAndOrigins( the range's start index to the end of the run. */ +CT_EXPORT void CTRunDraw( CTRunRef run, CGContextRef context, diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTRunDelegate.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTRunDelegate.h index 06a26e8c..7dc13886 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTRunDelegate.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTRunDelegate.h @@ -2,7 +2,7 @@ * CTRunDelegate.h * CoreText * - * Copyright (c) 2006-2018 Apple Inc. All rights reserved. + * Copyright (c) 2006-2024 Apple Inc. All rights reserved. * */ @@ -26,6 +26,7 @@ typedef const struct CF_BRIDGED_TYPE(id) __CTRunDelegate * CTRunDelegateRef; @abstract Returns the CFType of CTRunDelegate objects. */ +CT_EXPORT CFTypeID CTRunDelegateGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -165,6 +166,7 @@ enum { object. Otherwise, this function will return NULL. */ +CT_EXPORT CTRunDelegateRef _Nullable CTRunDelegateCreate( const CTRunDelegateCallbacks* callbacks, void * _Nullable refCon ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -187,10 +189,23 @@ CTRunDelegateRef _Nullable CTRunDelegateCreate( @result The refCon value of the supplied run delegate. */ +CT_EXPORT void * CTRunDelegateGetRefCon( CTRunDelegateRef runDelegate ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); +#pragma mark - + +#if defined(__OBJC__) + +@protocol CTAdaptiveImageProviding +/* The callee is to return an image for use at a particular point size and scale factor, as well as its offset and size (in points), which define the placement of the returned image relative to a rect with the proposed size. + */ +- (CGImageRef _Nullable)imageForProposedSize:(CGSize)proposedSize scaleFactor:(CGFloat)scaleFactor imageOffset:(out CGPoint * _Nonnull)outImageOffset imageSize:(out CGSize * _Nonnull)outImageSize CF_RETURNS_NOT_RETAINED; +@end + +#endif // defined(__OBJC__) + CF_ASSUME_NONNULL_END CF_EXTERN_C_END CF_IMPLICIT_BRIDGING_DISABLED diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTStringAttributes.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTStringAttributes.h index f14d1ccb..52a1df57 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTStringAttributes.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTStringAttributes.h @@ -479,6 +479,17 @@ enum { CT_EXPORT const CFStringRef kCTRubyAnnotationAttributeName CT_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); +/*! + @const kCTAdaptiveImageProviderAttributeName + @abstract Provide the image for an emoji-like text attachment. + + @discussion The attribute value must be an object conforming to the CTAdaptiveImageProviding protocol. + The range this attribute is applied to should be one or more U+FFFC characters, each of which will be drawn as the provided image, + and the font attribute applied to that range will be used to determine properties such as point size. +*/ +CT_EXPORT const CFStringRef kCTAdaptiveImageProviderAttributeName CT_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + + CF_ASSUME_NONNULL_END CF_EXTERN_C_END diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTTextTab.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTTextTab.h index 2910293c..603edc67 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTTextTab.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTTextTab.h @@ -47,6 +47,7 @@ typedef const struct CF_RELATED_TYPE(NSTextTab,,) __CTTextTab * CTTextTabRef; @abstract Returns the CFType of the text tab object */ +CT_EXPORT CFTypeID CTTextTabGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -93,6 +94,7 @@ CT_EXPORT const CFStringRef kCTTabColumnTerminatorsAttributeName CT_AVAILABLE(ma @result The new CTTextTab. */ +CT_EXPORT CTTextTabRef CTTextTabCreate( CTTextAlignment alignment, double location, @@ -113,6 +115,7 @@ CTTextTabRef CTTextTabCreate( @result The tab's text alignment value. */ +CT_EXPORT CTTextAlignment CTTextTabGetAlignment( CTTextTabRef tab ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -127,6 +130,7 @@ CTTextAlignment CTTextTabGetAlignment( @result The tab's ruler location relative to the back margin. */ +CT_EXPORT double CTTextTabGetLocation( CTTextTabRef tab ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -142,6 +146,7 @@ double CTTextTabGetLocation( no dictionary is present. */ +CT_EXPORT CFDictionaryRef _Nullable CTTextTabGetOptions( CTTextTabRef tab ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CTTypesetter.h b/Frameworks/CoreText.framework/Versions/A/Headers/CTTypesetter.h index 54748f2c..94559597 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CTTypesetter.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CTTypesetter.h @@ -35,6 +35,7 @@ typedef const struct CF_BRIDGED_TYPE(id) __CTTypesetter * CTTypesetterRef; @abstract Returns the CFType of the typesetter object */ +CT_EXPORT CFTypeID CTTypesetterGetTypeID( void ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -98,6 +99,7 @@ CT_EXPORT const CFStringRef kCTTypesetterOptionForcedEmbeddingLevel CT_AVAILABLE @result This function will return a reference to a CTTypesetter. */ +CT_EXPORT CTTypesetterRef CTTypesetterCreateWithAttributedString( CFAttributedStringRef string ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -125,6 +127,7 @@ CTTypesetterRef CTTypesetterCreateWithAttributedString( @seealso kCTTypesetterOptionAllowUnboundedLayout */ +CT_EXPORT CTTypesetterRef _Nullable CTTypesetterCreateWithAttributedStringAndOptions( CFAttributedStringRef string, CFDictionaryRef _Nullable options ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -157,6 +160,7 @@ CTTypesetterRef _Nullable CTTypesetterCreateWithAttributedStringAndOptions( @result This function will return a reference to a CTLine. */ +CT_EXPORT CTLineRef CTTypesetterCreateLineWithOffset( CTTypesetterRef typesetter, CFRange stringRange, @@ -168,6 +172,7 @@ CTLineRef CTTypesetterCreateLineWithOffset( @abstract Equivalent to CTTypesetterCreateLineWithOffset with offset = 0.0. */ +CT_EXPORT CTLineRef CTTypesetterCreateLine( CTTypesetterRef typesetter, CFRange stringRange ) CT_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); @@ -203,6 +208,7 @@ CTLineRef CTTypesetterCreateLine( to construct a character range for CTTypesetterCreateLine. */ +CT_EXPORT CFIndex CTTypesetterSuggestLineBreakWithOffset( CTTypesetterRef typesetter, CFIndex startIndex, @@ -215,6 +221,7 @@ CFIndex CTTypesetterSuggestLineBreakWithOffset( @abstract Equivalent to CTTypesetterSuggestLineBreakWithOffset with offset = 0.0. */ +CT_EXPORT CFIndex CTTypesetterSuggestLineBreak( CTTypesetterRef typesetter, CFIndex startIndex, @@ -252,6 +259,7 @@ CFIndex CTTypesetterSuggestLineBreak( used to construct a character range for CTTypesetterCreateLine. */ +CT_EXPORT CFIndex CTTypesetterSuggestClusterBreakWithOffset( CTTypesetterRef typesetter, CFIndex startIndex, @@ -264,6 +272,7 @@ CFIndex CTTypesetterSuggestClusterBreakWithOffset( @abstract Equivalent to CTTypesetterSuggestClusterBreakWithOffset with offset = 0.0. */ +CT_EXPORT CFIndex CTTypesetterSuggestClusterBreak( CTTypesetterRef typesetter, CFIndex startIndex, diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/CoreText.h b/Frameworks/CoreText.framework/Versions/A/Headers/CoreText.h index d4236c06..33668d19 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/CoreText.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/CoreText.h @@ -58,6 +58,7 @@ CF_EXTERN_C_BEGIN kCTVersionNumber11_0. */ +CT_EXPORT uint32_t CTGetCoreTextVersion( void ) CT_DEPRECATED("Use -[NSProcessInfo operatingSystemVersion]", macos(10.5, 11.0), ios(3.2, 14.0), watchos(2.0, 7.0), tvos(9.0, 14.0)); #define kCTVersionNumber10_5 0x00020000 diff --git a/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h b/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h index 496bb439..65cd4273 100644 --- a/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h +++ b/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h @@ -10,7 +10,7 @@ #define __SFNTLAYOUTTYPES__ #include -#include +#include #if !TARGET_OS_WIN32 #include diff --git a/Frameworks/CoreVideo.framework/Versions/A/CoreVideo.tbd b/Frameworks/CoreVideo.framework/Versions/A/CoreVideo.tbd index d716e9a9..3d537e0d 100644 --- a/Frameworks/CoreVideo.framework/Versions/A/CoreVideo.tbd +++ b/Frameworks/CoreVideo.framework/Versions/A/CoreVideo.tbd @@ -13,7 +13,8 @@ exports: _CVBufferPropagateAttachments, _CVBufferRelease, _CVBufferRemoveAllAttachments, _CVBufferRemoveAttachment, _CVBufferRetain, _CVBufferSetAttachment, _CVBufferSetAttachments, _CVColorPrimariesGetIntegerCodePointForString, - _CVColorPrimariesGetStringForIntegerCodePoint, _CVDataBufferCreateWithIOSurface, + _CVColorPrimariesGetStringForIntegerCodePoint, _CVDEBUGPixelBufferGlobalCacheGetColorSpace, + _CVDEBUGPixelBufferGlobalCacheGetPropertyList, _CVDataBufferCreateWithIOSurface, _CVDataBufferDecrementUseCountForCategory, _CVDataBufferGetDataFormatType, _CVDataBufferGetDataSize, _CVDataBufferGetIOSurface, _CVDataBufferGetPixelFormatType, _CVDataBufferGetTypeID, _CVDataBufferIncrementUseCountForCategory, @@ -45,17 +46,21 @@ exports: _CVImageBufferProvideImageTexture, _CVImageBufferSetCleanAperture, _CVImageBufferSetColorSpace, _CVImageBufferSetDisplayDimensions, _CVImageBufferSetFieldCount, _CVImageBufferSetPixelAspectRatio, - _CVIsCompressedPixelFormatAvailable, _CVMetalTextureCacheCreate, - _CVMetalTextureCacheCreateTextureFromImage, _CVMetalTextureCacheFlush, - _CVMetalTextureCacheGetTypeID, _CVMetalTextureGetCleanTexCoords, - _CVMetalTextureGetTexture, _CVMetalTextureGetTypeID, _CVMetalTextureIsFlipped, - _CVOpenGLBufferAttach, _CVOpenGLBufferCreate, _CVOpenGLBufferGetAttributes, - _CVOpenGLBufferGetDisplayMask, _CVOpenGLBufferGetPBuffer, - _CVOpenGLBufferGetSurfaceID, _CVOpenGLBufferGetTypeID, _CVOpenGLBufferPoolCreate, - _CVOpenGLBufferPoolCreateOpenGLBuffer, _CVOpenGLBufferPoolGetAttributes, - _CVOpenGLBufferPoolGetOpenGLBufferAttributes, _CVOpenGLBufferPoolGetTypeID, - _CVOpenGLBufferPoolRelease, _CVOpenGLBufferPoolRetain, _CVOpenGLBufferRelease, - _CVOpenGLBufferRetain, _CVOpenGLTextureBackingImage, _CVOpenGLTextureBufferBackingImage, + _CVIsCompressedPixelFormatAvailable, _CVMetalBufferCacheCreate, + _CVMetalBufferCacheCreateBufferFromImage, _CVMetalBufferCacheFlush, + _CVMetalBufferCacheGetFreeBackings, _CVMetalBufferCacheGetTypeID, + _CVMetalBufferCacheGetUsedBackings, _CVMetalBufferGetBuffer, + _CVMetalBufferGetTypeID, _CVMetalTextureCacheCreate, _CVMetalTextureCacheCreateTextureFromImage, + _CVMetalTextureCacheFlush, _CVMetalTextureCacheGetTypeID, + _CVMetalTextureGetCleanTexCoords, _CVMetalTextureGetTexture, + _CVMetalTextureGetTypeID, _CVMetalTextureIsFlipped, _CVOpenGLBufferAttach, + _CVOpenGLBufferCreate, _CVOpenGLBufferGetAttributes, _CVOpenGLBufferGetDisplayMask, + _CVOpenGLBufferGetPBuffer, _CVOpenGLBufferGetSurfaceID, _CVOpenGLBufferGetTypeID, + _CVOpenGLBufferPoolCreate, _CVOpenGLBufferPoolCreateOpenGLBuffer, + _CVOpenGLBufferPoolGetAttributes, _CVOpenGLBufferPoolGetOpenGLBufferAttributes, + _CVOpenGLBufferPoolGetTypeID, _CVOpenGLBufferPoolRelease, + _CVOpenGLBufferPoolRetain, _CVOpenGLBufferRelease, _CVOpenGLBufferRetain, + _CVOpenGLTextureBackingImage, _CVOpenGLTextureBufferBackingImage, _CVOpenGLTextureCacheCreate, _CVOpenGLTextureCacheCreateCGLS, _CVOpenGLTextureCacheCreateTextureFromImage, _CVOpenGLTextureCacheFlush, _CVOpenGLTextureCacheGetTypeID, _CVOpenGLTextureCacheRelease, @@ -124,14 +129,15 @@ exports: _kCVImageBufferColorPrimaries_ITU_R_709_2, _kCVImageBufferColorPrimaries_P22, _kCVImageBufferColorPrimaries_P3_D65, _kCVImageBufferColorPrimaries_SMPTE_C, _kCVImageBufferContentLightLevelInfoKey, _kCVImageBufferDisplayDimensionsKey, - _kCVImageBufferDisplayHeightKey, _kCVImageBufferDisplayWidthKey, - _kCVImageBufferDolbyCompatibilityIDKey, _kCVImageBufferDolbyDMVersionKey, - _kCVImageBufferDolbyVisionRPUDataKey, _kCVImageBufferFieldCountKey, - _kCVImageBufferFieldDetailKey, _kCVImageBufferFieldDetailSpatialFirstLineEarly, - _kCVImageBufferFieldDetailSpatialFirstLineLate, _kCVImageBufferFieldDetailTemporalBottomFirst, - _kCVImageBufferFieldDetailTemporalTopFirst, _kCVImageBufferGammaLevelKey, - _kCVImageBufferHDR10PlusDataKey, _kCVImageBufferHDRImageStatisticsInfoFilteredKey, - _kCVImageBufferHDRImageStatisticsInfoRawKey, _kCVImageBufferHDRImageStatisticsInfoTransferFunctionKey, + _kCVImageBufferDisplayHeightKey, _kCVImageBufferDisplayImmediatelyKey, + _kCVImageBufferDisplayWidthKey, _kCVImageBufferDolbyCompatibilityIDKey, + _kCVImageBufferDolbyDMVersionKey, _kCVImageBufferDolbyVisionRPUDataKey, + _kCVImageBufferFieldCountKey, _kCVImageBufferFieldDetailKey, + _kCVImageBufferFieldDetailSpatialFirstLineEarly, _kCVImageBufferFieldDetailSpatialFirstLineLate, + _kCVImageBufferFieldDetailTemporalBottomFirst, _kCVImageBufferFieldDetailTemporalTopFirst, + _kCVImageBufferGammaLevelKey, _kCVImageBufferHDR10PlusDataKey, + _kCVImageBufferHDRImageStatisticsInfoFilteredKey, _kCVImageBufferHDRImageStatisticsInfoRawKey, + _kCVImageBufferHDRImageStatisticsInfoTransferFunctionKey, _kCVImageBufferHDRImageStatisticsInfo_AnchorPQKey, _kCVImageBufferHDRImageStatisticsInfo_AnchorPowerKey, _kCVImageBufferHDRImageStatisticsInfo_AverageKey, _kCVImageBufferHDRImageStatisticsInfo_AverageOffsetKey, _kCVImageBufferHDRImageStatisticsInfo_DolbyMetadataVersionKey, @@ -142,18 +148,19 @@ exports: _kCVImageBufferMasteringDisplayColorVolumeKey, _kCVImageBufferPixelAspectRatioHorizontalSpacingKey, _kCVImageBufferPixelAspectRatioKey, _kCVImageBufferPixelAspectRatioVerticalSpacingKey, _kCVImageBufferPreferredCleanApertureKey, _kCVImageBufferRegionOfInterestKey, - _kCVImageBufferSceneReferredExtendedLinearKey, _kCVImageBufferTransferFunctionKey, - _kCVImageBufferTransferFunction_ITU_R_2020, _kCVImageBufferTransferFunction_ITU_R_2100_HLG, - _kCVImageBufferTransferFunction_ITU_R_709_2, _kCVImageBufferTransferFunction_Linear, - _kCVImageBufferTransferFunction_SMPTE_240M_1995, _kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ, - _kCVImageBufferTransferFunction_SMPTE_ST_428_1, _kCVImageBufferTransferFunction_UseGamma, - _kCVImageBufferTransferFunction_aYCC, _kCVImageBufferTransferFunction_sRGB, - _kCVImageBufferYCbCrMatrixKey, _kCVImageBufferYCbCrMatrix_DCI_P3, - _kCVImageBufferYCbCrMatrix_IPT, _kCVImageBufferYCbCrMatrix_IPT_C2, - _kCVImageBufferYCbCrMatrix_ITU_R_2020, _kCVImageBufferYCbCrMatrix_ITU_R_2100_ICtCp, - _kCVImageBufferYCbCrMatrix_ITU_R_601_4, _kCVImageBufferYCbCrMatrix_ITU_R_709_2, - _kCVImageBufferYCbCrMatrix_Identity, _kCVImageBufferYCbCrMatrix_P3_D65, - _kCVImageBufferYCbCrMatrix_SMPTE_240M_1995, _kCVIndefiniteTime, + _kCVImageBufferSceneIlluminationKey, _kCVImageBufferSceneReferredExtendedLinearKey, + _kCVImageBufferTransferFunctionKey, _kCVImageBufferTransferFunction_ITU_R_2020, + _kCVImageBufferTransferFunction_ITU_R_2100_HLG, _kCVImageBufferTransferFunction_ITU_R_709_2, + _kCVImageBufferTransferFunction_Linear, _kCVImageBufferTransferFunction_SMPTE_240M_1995, + _kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ, _kCVImageBufferTransferFunction_SMPTE_ST_428_1, + _kCVImageBufferTransferFunction_UseGamma, _kCVImageBufferTransferFunction_aYCC, + _kCVImageBufferTransferFunction_sRGB, _kCVImageBufferYCbCrMatrixKey, + _kCVImageBufferYCbCrMatrix_DCI_P3, _kCVImageBufferYCbCrMatrix_IPT, + _kCVImageBufferYCbCrMatrix_IPT_C2, _kCVImageBufferYCbCrMatrix_ITU_R_2020, + _kCVImageBufferYCbCrMatrix_ITU_R_2100_ICtCp, _kCVImageBufferYCbCrMatrix_ITU_R_601_4, + _kCVImageBufferYCbCrMatrix_ITU_R_709_2, _kCVImageBufferYCbCrMatrix_Identity, + _kCVImageBufferYCbCrMatrix_P3_D65, _kCVImageBufferYCbCrMatrix_SMPTE_240M_1995, + _kCVIndefiniteTime, _kCVMetalBufferCacheMaximumBufferAgeKey, _kCVMetalTextureCacheDoNotIncrementUseCountKey, _kCVMetalTextureCacheMaximumTextureAgeKey, _kCVMetalTextureStorageMode, _kCVMetalTextureUsage, _kCVOpenGLBufferFlipped, _kCVOpenGLBufferHeight, _kCVOpenGLBufferInternalFormat, _kCVOpenGLBufferMaximumMipmapLevel, @@ -181,17 +188,18 @@ exports: _kCVPixelBufferPoolAdjustableBaseAddressGranularityKey, _kCVPixelBufferPoolAllocationThresholdKey, _kCVPixelBufferPoolFreeBufferNotification, _kCVPixelBufferPoolMaximumBufferAgeKey, _kCVPixelBufferPoolMinimumBufferCountKey, _kCVPixelBufferPoolNameKey, - _kCVPixelBufferPoolPrefetchOnAllocation, _kCVPixelBufferPoolScanFreeIOSurfaces, - _kCVPixelBufferPoolScanUsedIOSurfaces, _kCVPixelBufferPoolWorstCaseBytesPerRowKey, - _kCVPixelBufferPreferRealTimeCacheModeIfEveryoneDoesKey, _kCVPixelBufferProResRAWKey_BlackLevel, - _kCVPixelBufferProResRAWKey_ColorMatrix, _kCVPixelBufferProResRAWKey_GainFactor, - _kCVPixelBufferProResRAWKey_LargestDCQSS, _kCVPixelBufferProResRAWKey_MetadataExtension, - _kCVPixelBufferProResRAWKey_RecommendedCrop, _kCVPixelBufferProResRAWKey_SenselSitingOffsets, - _kCVPixelBufferProResRAWKey_WhiteBalanceBlueFactor, _kCVPixelBufferProResRAWKey_WhiteBalanceCCT, - _kCVPixelBufferProResRAWKey_WhiteBalanceRedFactor, _kCVPixelBufferProResRAWKey_WhiteLevel, - _kCVPixelBufferQDCompatibilityKey, _kCVPixelBufferRotationKey, - _kCVPixelBufferVersatileBayerKey_BayerPattern, _kCVPixelBufferWidthKey, - _kCVPixelFormatBitsPerBlock, _kCVPixelFormatBitsPerComponent, + _kCVPixelBufferPoolPreferIOSurfaceWithWiringAssertionKey, + _kCVPixelBufferPoolPrefetchOnAllocation, _kCVPixelBufferPoolRequireIOSurfaceWithoutWiringAssertionYetKey, + _kCVPixelBufferPoolScanFreeIOSurfaces, _kCVPixelBufferPoolScanUsedIOSurfaces, + _kCVPixelBufferPoolWorstCaseBytesPerRowKey, _kCVPixelBufferPreferRealTimeCacheModeIfEveryoneDoesKey, + _kCVPixelBufferProResRAWKey_BlackLevel, _kCVPixelBufferProResRAWKey_ColorMatrix, + _kCVPixelBufferProResRAWKey_GainFactor, _kCVPixelBufferProResRAWKey_LargestDCQSS, + _kCVPixelBufferProResRAWKey_MetadataExtension, _kCVPixelBufferProResRAWKey_RecommendedCrop, + _kCVPixelBufferProResRAWKey_SenselSitingOffsets, _kCVPixelBufferProResRAWKey_WhiteBalanceBlueFactor, + _kCVPixelBufferProResRAWKey_WhiteBalanceCCT, _kCVPixelBufferProResRAWKey_WhiteBalanceRedFactor, + _kCVPixelBufferProResRAWKey_WhiteLevel, _kCVPixelBufferQDCompatibilityKey, + _kCVPixelBufferRotationKey, _kCVPixelBufferVersatileBayerKey_BayerPattern, + _kCVPixelBufferWidthKey, _kCVPixelFormatBitsPerBlock, _kCVPixelFormatBitsPerComponent, _kCVPixelFormatBlackBlock, _kCVPixelFormatBlockHeight, _kCVPixelFormatBlockHorizontalAlignment, _kCVPixelFormatBlockVerticalAlignment, _kCVPixelFormatBlockWidth, _kCVPixelFormatCGBitmapContextCompatibility, _kCVPixelFormatCGBitmapInfo, @@ -221,6 +229,7 @@ exports: _kCVPixelFormatMultiSlice, _kCVPixelFormatTiledAddressFormat ] - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] symbols: [ _CVPixelBufferCreateWithParentIOSurface, _CVPixelBufferCreateWithParentPixelBuffer, + _kCVImageBufferPostDecodeProcessingFrameMetadataKey, _kCVImageBufferPostDecodeProcessingSequenceMetadataKey, _kCVImageBufferTransferFunction_EBU_3213, _kCVImageBufferTransferFunction_SMPTE_C, _kCVPixelBufferIOSurfaceOpenGLESFBOCompatibilityKey, _kCVPixelBufferIOSurfaceOpenGLESTextureCompatibilityKey, _kCVPixelBufferOpenGLESCompatibilityKey, _kCVPixelBufferOpenGLESTextureCacheCompatibilityKey, diff --git a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVBuffer.h b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVBuffer.h index 590a39af..a255db3b 100644 --- a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVBuffer.h +++ b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVBuffer.h @@ -100,7 +100,7 @@ CV_EXPORT void CVBufferSetAttachment( CVBufferRef CV_NONNULL buffer, CFStringRef @discussion You can attach any CF object to a CVBuffer object to store additional information. CVBufferGetAttachment retrieves an attachement identified by a key. @param buffer Target CVBuffer object. @param key Key in form of a CFString identifying the desired attachment. - @param attachmentMode. Returns the mode of the attachment, if desired. May be NULL. + @param attachmentMode Returns the mode of the attachment, if desired. May be NULL. @result If found the attachment object */ CV_EXPORT CFTypeRef CV_NULLABLE CVBufferGetAttachment( CVBufferRef CV_NONNULL buffer, CFStringRef CV_NONNULL key, CVAttachmentMode * CV_NULLABLE attachmentMode ) API_DEPRECATED_WITH_REPLACEMENT("CVBufferCopyAttachment", macos(10.4, 12.0), ios(4.0,15.0), tvos(9.0, 15.0), watchos(4.0, 8.0)); @@ -165,7 +165,7 @@ CV_EXPORT CFDictionaryRef CF_RETURNS_RETAINED CV_NULLABLE CVBufferCopyAttachment @discussion You can attach any CF object to a CVBuffer object to store additional information. CVBufferCopyAttachment retrieves a retained attachment identified by a key. @param buffer Target CVBuffer object. @param key Key in form of a CFString identifying the desired attachment. - @param attachmentMode. Returns the mode of the attachment, if desired. May be NULL. + @param attachmentMode Returns the mode of the attachment, if desired. May be NULL. @result If found the attachment object, return the value; otherwize, return NULL. */ CV_EXPORT CFTypeRef CV_NULLABLE CF_RETURNS_RETAINED CVBufferCopyAttachment( CVBufferRef CV_NONNULL buffer, CFStringRef CV_NONNULL key, CVAttachmentMode * CV_NULLABLE attachmentMode ) API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0)); diff --git a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVDisplayLink.h b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVDisplayLink.h index aa810c06..332a36c8 100644 --- a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVDisplayLink.h +++ b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVDisplayLink.h @@ -48,7 +48,9 @@ typedef CVReturn (^CVDisplayLinkOutputHandler)( CVOptionFlags * CV_NONNULL flagsOut ) CV_SWIFT_SENDABLE; #endif // __BLOCKS__ -CV_EXPORT CFTypeID CVDisplayLinkGetTypeID(void) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +API_DEPRECATED_BEGIN("use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) ", macos(10.4, 15.0)) + +CV_EXPORT CFTypeID CVDisplayLinkGetTypeID(void); /*! @function CVDisplayLinkCreateWithCGDisplays @@ -56,37 +58,37 @@ CV_EXPORT CFTypeID CVDisplayLinkGetTypeID(void) AVAILABLE_MAC_OS_X_VERSION_10_4_ @discussion Use this call to create a CVDisplayLink for a set of displays indentified by the CGDirectDisplayIDs. @param displayArray array of CGDirectDisplayIDs @param count number of displays in the displayArray - @param displayLisk The new display link will be returned here + @param displayLinkOut The new display link will be returned here @result returns kCVReturnSuccess on success. */ CV_EXPORT CVReturn CVDisplayLinkCreateWithCGDisplays( CGDirectDisplayID * CV_NONNULL displayArray, CFIndex count, - CV_RETURNS_RETAINED_PARAMETER CVDisplayLinkRef CV_NULLABLE * CV_NONNULL displayLinkOut ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; + CV_RETURNS_RETAINED_PARAMETER CVDisplayLinkRef CV_NULLABLE * CV_NONNULL displayLinkOut ); /*! @function CVDisplayLinkCreateWithOpenGLDisplayMask @abstract Convenience call to create a CVDisplayLink from an OpenGL display mask. @discussion Use this call to create a CVDisplayLink for a CGOpenGLDisplayMask. @param mask CGOpenGLDisplayMask describing the display - @param displayLisk The new display link will be returned here + @param displayLinkOut The new display link will be returned here @result returns kCVReturnSuccess on success. */ CV_EXPORT CVReturn CVDisplayLinkCreateWithOpenGLDisplayMask( CGOpenGLDisplayMask mask, - CV_RETURNS_RETAINED_PARAMETER CVDisplayLinkRef CV_NULLABLE * CV_NONNULL displayLinkOut ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; + CV_RETURNS_RETAINED_PARAMETER CVDisplayLinkRef CV_NULLABLE * CV_NONNULL displayLinkOut ); /*! @function CVDisplayLinkCreateWithCGDisplay @abstract Convenience call to create a CVDisplayLink for a single CGDirectDisplay. @discussion Use this call to create a CVDisplayLink for a single CGDirectDisplay. @param displayID CGDirectDisplayID of the target display - @param displayLisk The new display link will be returned here + @param displayLinkOut The new display link will be returned here @result returns kCVReturnSuccess on success. */ CV_EXPORT CVReturn CVDisplayLinkCreateWithCGDisplay( CGDirectDisplayID displayID, - CV_RETURNS_RETAINED_PARAMETER CVDisplayLinkRef CV_NULLABLE * CV_NONNULL displayLinkOut ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; + CV_RETURNS_RETAINED_PARAMETER CVDisplayLinkRef CV_NULLABLE * CV_NONNULL displayLinkOut ); /*! @function CVDisplayLinkCreateWithActiveCGDisplays @@ -95,7 +97,7 @@ CV_EXPORT CVReturn CVDisplayLinkCreateWithCGDisplay( @result kCVReturnSuccess if the device was created, or failure */ CV_EXPORT CVReturn CVDisplayLinkCreateWithActiveCGDisplays( - CV_RETURNS_RETAINED_PARAMETER CVDisplayLinkRef CV_NULLABLE * CV_NONNULL displayLinkOut ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; + CV_RETURNS_RETAINED_PARAMETER CVDisplayLinkRef CV_NULLABLE * CV_NONNULL displayLinkOut ); /*! @function CVDisplayLinkSetCurrentCGDisplay @@ -106,7 +108,7 @@ CV_EXPORT CVReturn CVDisplayLinkCreateWithActiveCGDisplays( @param displayID target CGDirectDisplayID @result CVReturn. kCVReturnSuccess if successfull. */ -CV_EXPORT CVReturn CVDisplayLinkSetCurrentCGDisplay( CVDisplayLinkRef CV_NONNULL displayLink, CGDirectDisplayID displayID ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT CVReturn CVDisplayLinkSetCurrentCGDisplay( CVDisplayLinkRef CV_NONNULL displayLink, CGDirectDisplayID displayID ); /*! @function CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext @@ -119,7 +121,7 @@ CV_EXPORT CVReturn CVDisplayLinkSetCurrentCGDisplay( CVDisplayLinkRef CV_NONNULL CV_EXPORT CVReturn CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext( CVDisplayLinkRef CV_NONNULL displayLink, CGLContextObj CV_NONNULL cglContext, - CGLPixelFormatObj CV_NONNULL cglPixelFormat) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; + CGLPixelFormatObj CV_NONNULL cglPixelFormat); /*! @function CVDisplayLinkGetCurrentCGDisplay @abstract Gets the current display of a DisplayLink @@ -127,7 +129,7 @@ CV_EXPORT CVReturn CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext( @param displayLink target CVDisplayLinkRef @result CGDirectDisplayID */ -CV_EXPORT CGDirectDisplayID CVDisplayLinkGetCurrentCGDisplay( CVDisplayLinkRef CV_NONNULL displayLink ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT CGDirectDisplayID CVDisplayLinkGetCurrentCGDisplay( CVDisplayLinkRef CV_NONNULL displayLink ); /*! @function CVDisplayLinkSetOutputCallback @@ -138,7 +140,7 @@ CV_EXPORT CGDirectDisplayID CVDisplayLinkGetCurrentCGDisplay( CVDisplayLinkRef C @param userInfo User data for the callback to identify the context. @result CVReturn. kCVReturnSuccess if successfull. */ -CV_EXPORT CVReturn CVDisplayLinkSetOutputCallback( CVDisplayLinkRef CV_NONNULL displayLink, CVDisplayLinkOutputCallback CV_NULLABLE callback, void * CV_NULLABLE userInfo ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT CVReturn CVDisplayLinkSetOutputCallback( CVDisplayLinkRef CV_NONNULL displayLink, CVDisplayLinkOutputCallback CV_NULLABLE callback, void * CV_NULLABLE userInfo ); /*! @function CVDisplayLinkSetOutputHandler @@ -159,7 +161,7 @@ CV_EXPORT CVReturn CVDisplayLinkSetOutputHandler( CVDisplayLinkRef CV_NONNULL di @result CVReturn. kCVReturnSuccess if successfull. kCVReturnDisplayLinkCallbacksNotSet The DisplayLink cannot be started until the output callback is set. */ -CV_EXPORT CVReturn CVDisplayLinkStart( CVDisplayLinkRef CV_NONNULL displayLink ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT CVReturn CVDisplayLinkStart( CVDisplayLinkRef CV_NONNULL displayLink ); /*! @function CVDisplayLinkStop @@ -168,7 +170,7 @@ CV_EXPORT CVReturn CVDisplayLinkStart( CVDisplayLinkRef CV_NONNULL displayLink ) @param displayLink target CVDisplayLinkRef @result CVReturn. kCVReturnSuccess if successfull. */ -CV_EXPORT CVReturn CVDisplayLinkStop( CVDisplayLinkRef CV_NONNULL displayLink ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT CVReturn CVDisplayLinkStop( CVDisplayLinkRef CV_NONNULL displayLink ); /*! @function CVDisplayLinkGetNominalOutputVideoRefreshPeriod @@ -177,7 +179,7 @@ CV_EXPORT CVReturn CVDisplayLinkStop( CVDisplayLinkRef CV_NONNULL displayLink ) @param displayLink The CVDisplayLink to get the refresh period from. @result A CVTime struct that holds the nominal refresh period. This value may be indefinite. */ -CV_EXPORT CVTime CVDisplayLinkGetNominalOutputVideoRefreshPeriod( CVDisplayLinkRef CV_NONNULL displayLink ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT CVTime CVDisplayLinkGetNominalOutputVideoRefreshPeriod( CVDisplayLinkRef CV_NONNULL displayLink ); /*! @function CVDisplayLinkGetOutputVideoLatency @@ -186,7 +188,7 @@ CV_EXPORT CVTime CVDisplayLinkGetNominalOutputVideoRefreshPeriod( CVDisplayLinkR @param displayLink The CVDisplayLink to get the latency period from. @result A CVTime struct that holds the latency. This value may be indefinite. */ -CV_EXPORT CVTime CVDisplayLinkGetOutputVideoLatency( CVDisplayLinkRef CV_NONNULL displayLink ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT CVTime CVDisplayLinkGetOutputVideoLatency( CVDisplayLinkRef CV_NONNULL displayLink ); /*! @function CVDisplayLinkGetActualOutputVideoRefreshPeriod @@ -195,7 +197,7 @@ CV_EXPORT CVTime CVDisplayLinkGetOutputVideoLatency( CVDisplayLinkRef CV_NONNULL @param displayLink The CVDisplayLink to get the refresh period from. @result A double containing the actual refresh period. This value may be zero if the device is not running, or is otherwise unavailable. */ -CV_EXPORT double CVDisplayLinkGetActualOutputVideoRefreshPeriod( CVDisplayLinkRef CV_NONNULL displayLink ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT double CVDisplayLinkGetActualOutputVideoRefreshPeriod( CVDisplayLinkRef CV_NONNULL displayLink ); /*! @function CVDisplayLinkIsRunning @@ -204,7 +206,7 @@ CV_EXPORT double CVDisplayLinkGetActualOutputVideoRefreshPeriod( CVDisplayLinkRe @param displayLink The CVDisplayLink to get the running state from. @result A boolean describing the running state. It returns true if it is running and false if it is not running or the CVDisplayLink is invalid. */ -CV_EXPORT Boolean CVDisplayLinkIsRunning( CVDisplayLinkRef CV_NONNULL displayLink ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT Boolean CVDisplayLinkIsRunning( CVDisplayLinkRef CV_NONNULL displayLink ); /*! @function CVDisplayLinkGetCurrentTime @@ -214,7 +216,7 @@ CV_EXPORT Boolean CVDisplayLinkIsRunning( CVDisplayLinkRef CV_NONNULL displayLin @param outTime A pointer to a CVTimeStamp struct. This struct's version field must currently be set correctly (currently 0) to indicate which version of the timestamp struct is desired. @result kCVReturnSuccess if the current time could be retrieved, otherwise an error indicating why the operation failed. */ -CV_EXPORT CVReturn CVDisplayLinkGetCurrentTime( CVDisplayLinkRef CV_NONNULL displayLink, CVTimeStamp * CV_NONNULL outTime ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT CVReturn CVDisplayLinkGetCurrentTime( CVDisplayLinkRef CV_NONNULL displayLink, CVTimeStamp * CV_NONNULL outTime ); /*! @function CVDisplayLinkTranslateTime @@ -227,7 +229,7 @@ CV_EXPORT CVReturn CVDisplayLinkGetCurrentTime( CVDisplayLinkRef CV_NONNULL disp which representations to translate to. @result kCVReturnSuccess if the time could be translated, otherwise an error indicating why the operation failed. */ -CV_EXPORT CVReturn CVDisplayLinkTranslateTime( CVDisplayLinkRef CV_NONNULL displayLink, const CVTimeStamp * CV_NONNULL inTime, CVTimeStamp * CV_NONNULL outTime ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT CVReturn CVDisplayLinkTranslateTime( CVDisplayLinkRef CV_NONNULL displayLink, const CVTimeStamp * CV_NONNULL inTime, CVTimeStamp * CV_NONNULL outTime ); /*! @function CVDisplayLinkRetain @@ -236,7 +238,7 @@ CV_EXPORT CVReturn CVDisplayLinkTranslateTime( CVDisplayLinkRef CV_NONNULL displ @param displayLink target CVDisplayLinkRef. NULL safe. @result If successfull the passed in dislplayLink */ -CV_EXPORT CVDisplayLinkRef CV_NULLABLE CVDisplayLinkRetain( CVDisplayLinkRef CV_NULLABLE displayLink ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT CVDisplayLinkRef CV_NULLABLE CVDisplayLinkRetain( CVDisplayLinkRef CV_NULLABLE displayLink ); /*! @function CVDisplayLinkRelease @@ -244,7 +246,9 @@ CV_EXPORT CVDisplayLinkRef CV_NULLABLE CVDisplayLinkRetain( CVDisplayLinkRef CV_ @discussion Use this call to release a CVDisplayLink. @param displayLink target CVDisplayLinkRef. NULL safe. */ -CV_EXPORT void CVDisplayLinkRelease( CV_RELEASES_ARGUMENT CVDisplayLinkRef CV_NULLABLE displayLink ) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; +CV_EXPORT void CVDisplayLinkRelease( CV_RELEASES_ARGUMENT CVDisplayLinkRef CV_NULLABLE displayLink ); + +API_DEPRECATED_END #if defined(__cplusplus) } diff --git a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVImageBuffer.h b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVImageBuffer.h index 1a6a47eb..bc2a73e6 100644 --- a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVImageBuffer.h +++ b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVImageBuffer.h @@ -123,7 +123,13 @@ CV_EXPORT const CFStringRef CV_NONNULL kCVImageBufferAlphaChannelIsOpaque __OSX_ CV_EXPORT const CFStringRef CV_NONNULL kCVImageBufferAlphaChannelModeKey API_AVAILABLE(macosx(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); CV_EXPORT const CFStringRef CV_NONNULL kCVImageBufferAlphaChannelMode_StraightAlpha API_AVAILABLE(macosx(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); -CV_EXPORT const CFStringRef CV_NONNULL kCVImageBufferAlphaChannelMode_PremultipliedAlpha API_AVAILABLE(macosx(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); +CV_EXPORT const CFStringRef CV_NONNULL kCVImageBufferAlphaChannelMode_PremultipliedAlpha API_AVAILABLE(macosx(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); + +// Used to attach processing metadata to buffers transferred between video decoders and RAW processors. +// Sequence metadata is expected to be invariant over the entire movie, while frame metadata can vary with each frame. +CV_EXPORT const CFStringRef kCVImageBufferPostDecodeProcessingSequenceMetadataKey API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(ios, watchos, tvos, visionos); // CFDictionary +CV_EXPORT const CFStringRef kCVImageBufferPostDecodeProcessingFrameMetadataKey API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(ios, watchos, tvos, visionos); // CFDictionary + // Returns the standard integer code point corresponding to a given CoreVideo YCbCrMatrix constant string (in the kCVImageBufferYCbCrMatrix_... family). Returns 2 (the code point for "unknown") if the string is NULL or not recognized. CV_EXPORT int CVYCbCrMatrixGetIntegerCodePointForString( CV_NULLABLE CFStringRef yCbCrMatrixString ) API_AVAILABLE(macosx(10.13), ios(11.0), tvos(11.0), watchos(4.0)); @@ -183,7 +189,7 @@ CV_EXPORT CGRect CVImageBufferGetCleanRect( CVImageBufferRef CV_NONNULL imageBuf /*! @function CVImageBufferIsFlipped @abstract Returns whether the image is flipped vertically or not. - @param CVImageBuffer target + @param imageBuffer target @result True if 0,0 in the texture is upper left, false if 0,0 is lower left. */ CV_EXPORT Boolean CVImageBufferIsFlipped( CVImageBufferRef CV_NONNULL imageBuffer ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0); @@ -227,12 +233,15 @@ CV_EXPORT const CFStringRef CV_NONNULL kCVImageBufferContentLightLevelInfoKey __ // CFData (8 bytes) containing big-endian data matching payload of Ambient Viewing Environment SEI message CV_EXPORT const CFStringRef CV_NONNULL kCVImageBufferAmbientViewingEnvironmentKey API_AVAILABLE(macosx(12.0), ios(15.0), tvos(15.0), watchos(8.0)); +// CFNumberRef integer value in millilux +CV_EXPORT const CFStringRef CV_NONNULL kCVImageBufferSceneIlluminationKey API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); + /*! @constant kCVImageBufferRegionOfInterestKey @abstract - Specifies region of interest that image statistics cover. This value should be a CGRect dictionary created by CGRectCreateDictionaryRepresentation(). The origin in the CGRect represents the x,y coordinate within the CVPixelBuffer where region of interest is located. + Specifies region of interest that image statistics cover. @discussion - + This value should be a CGRect dictionary created by CGRectCreateDictionaryRepresentation(). The origin in the CGRect represents the x,y coordinate within the CVPixelBuffer where region of interest is located. */ CV_EXPORT const CFStringRef CV_NONNULL kCVImageBufferRegionOfInterestKey API_AVAILABLE(macosx(12.0), ios(15.0), tvos(15.0), watchos(8.0)); diff --git a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVMetalBuffer.h b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVMetalBuffer.h new file mode 100644 index 00000000..b32e6f5d --- /dev/null +++ b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVMetalBuffer.h @@ -0,0 +1,59 @@ +/* + * CVMetalBuffer.h + * CoreVideo + * + * Copyright (c) 2023 Apple Inc. All rights reserved. + */ + + /*! @header CVMetalBuffer.h + @copyright 2023 Apple Inc. All rights reserved. + @availability iOS 18.0 or later. mac 15.0 or later. + @discussion A CoreVideo Metal buffer derives from a buffer, and is used for supplying buffers to Metal. +*/ + +#if !defined(__COREVIDEO_CVMETALBUFFER_H__) +#define __COREVIDEO_CVMETALBUFFER_H__ 1 + +#include +#include +#include +#include +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +#if COREVIDEO_SUPPORTS_IOSURFACE && COREVIDEO_SUPPORTS_METAL + +/*! + @typedef CVMetalBufferRef + @abstract Metal buffer based CVPixelBuffer wrapped buffer + @discussion IMPORTANT NOTE: Clients should retain CVMetalBuffer objects until they are done using the contents in them. + Retaining a CVMetalBuffer is your way to indicate that you're still using the image in the buffer, and that it should not be recycled yet. +*/ +typedef CVBufferRef CVMetalBufferRef CV_SWIFT_NONSENDABLE; + +CV_EXPORT CFTypeID CVMetalBufferGetTypeID(void) API_AVAILABLE(macosx(15.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos); + + +#if defined(__OBJC__) +@protocol MTLBuffer; +/*! + @function CVMetalBufferGetBuffer + @abstract Returns the Metal MTLBuffer object of the CVMetalBufferRef + @param buffer Target CVMetalBuffer + @result Metal buffer +*/ +CV_EXPORT id CV_NULLABLE CVMetalBufferGetBuffer(CVMetalBufferRef CV_NONNULL buffer) API_AVAILABLE(macosx(15.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos); + +#endif // defined(__OBJC__) + +#endif // COREVIDEO_SUPPORTS_IOSURFACE && COREVIDEO_SUPPORTS_METAL + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVMetalBufferCache.h b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVMetalBufferCache.h new file mode 100644 index 00000000..ccc8f0df --- /dev/null +++ b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVMetalBufferCache.h @@ -0,0 +1,98 @@ +/* + * CVMetalBufferCache.h + * CoreVideo + * + * Copyright (c) 2023 Apple Inc. All rights reserved. + */ + +/*! @header CVMetalBufferCache.h + @copyright 2023 Apple Inc. All rights reserved. + @availability iOS 18.0 or later. mac 15.0 or later. + @discussion A CoreVideo Metal buffer derives from a buffer, and is used for supplying buffers to Metal. +*/ + +#if !defined(__COREVIDEO__CVMETALBUFFERCACHE_H__) +#define __COREVIDEO__CVMETALBUFFERCACHE_H__ 1 + +#include +#include +#include +#include + +#if COREVIDEO_SUPPORTS_IOSURFACE && COREVIDEO_SUPPORTS_METAL + +#if defined(__cplusplus) +extern "C" { +#endif + +// By default, buffers will age out after one second. +// Setting a maximum buffer age of zero will disable the age-out mechanism completely. +// CVMetalBufferCacheFlush() can be used to force eviction in either case. +CV_EXPORT const CFStringRef CV_NONNULL kCVMetalBufferCacheMaximumBufferAgeKey API_AVAILABLE(macosx(15.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos); + +typedef struct CV_BRIDGED_TYPE(id) __CVMetalBufferCache *CVMetalBufferCacheRef CV_SWIFT_NONSENDABLE; + +CV_EXPORT CFTypeID CVMetalBufferCacheGetTypeID(void) API_AVAILABLE(macosx(15.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos); + +#if defined(__OBJC__) + +@protocol MTLDevice; + +/*! + @function CVMetalBufferCacheCreate + @abstract Creates a new Buffer Cache. + @param allocator The CFAllocatorRef to use for allocating the cache. May be NULL. + @param cacheAttributes A CFDictionaryRef containing the attributes of the cache itself. May be NULL. + @param metalDevice The Metal device for which the buffer objects will be created. + @param cacheOut The newly created buffer cache will be placed here + @result Returns kCVReturnSuccess on success +*/ +CV_EXPORT CVReturn CVMetalBufferCacheCreate( + CFAllocatorRef CV_NULLABLE allocator, + CFDictionaryRef CV_NULLABLE cacheAttributes, + id CV_NONNULL metalDevice, + CV_RETURNS_RETAINED_PARAMETER CVMetalBufferCacheRef CV_NULLABLE * CV_NONNULL cacheOut +) API_AVAILABLE(macosx(15.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos); + +#endif // __OBJC__ + +/*! + @function CVMetalBufferCacheCreateBuffer + @abstract Creates a CVMetalBuffer object from an existing CVImageBuffer + @param allocator The CFAllocatorRef to use for allocating the CVMetalBuffer object. May be NULL. + @param bufferCache The buffer cache object that will manage the buffer. + @param buffer The CVImageBuffer that you want to create a CVMetalBuffer from. + @param bufferOut The newly created buffer object will be placed here. + @result Returns kCVReturnSuccess on success + @discussion Creates or returns a cached CVMetalBuffer object mapped to the CVImageBuffer. + This creates a live binding between the CVImageBuffer and underlying CVMetalBuffer buffer object. + + IMPORTANT NOTE: Clients should retain CVMetalBuffer objects until they are done using the images in them. + Retaining a CVMetalBuffer is your way to indicate that you're still using the image in the buffer, and that it should not be recycled yet. +*/ +CV_EXPORT CVReturn CVMetalBufferCacheCreateBufferFromImage( + CFAllocatorRef CV_NULLABLE allocator, + CVMetalBufferCacheRef CV_NONNULL bufferCache, + CVImageBufferRef CV_NONNULL imageBuffer, + CV_RETURNS_RETAINED_PARAMETER CVMetalBufferRef CV_NULLABLE * CV_NONNULL bufferOut +) API_AVAILABLE(macosx(15.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos); + +/*! + @function CVMetalBufferCacheFlush + @abstract Performs internal housekeeping/recycling operations + @discussion This call must be made periodically to give the buffer cache a chance to do internal housekeeping operations. + @param bufferCache The buffer cache object to flush + @param options Currently unused, set to 0. +*/ +CV_EXPORT void CVMetalBufferCacheFlush( + CVMetalBufferCacheRef CV_NONNULL bufferCache, + CVOptionFlags options +) API_AVAILABLE(macosx(15.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos); + +#if defined(__cplusplus) +} +#endif + +#endif // COREVIDEO_SUPPORTS_IOSURFACE && COREVIDEO_SUPPORTS_METAL + +#endif // __COREVIDEO__CVMETALBUFFERCACHE_H__ diff --git a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVPixelBuffer.h b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVPixelBuffer.h index 21bd057a..21d7ebd7 100644 --- a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVPixelBuffer.h +++ b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVPixelBuffer.h @@ -62,6 +62,7 @@ enum kCVPixelFormatType_32AlphaGray = 'b32a', /* 32 bit AlphaGray, 16-bit big-endian samples, black is zero */ kCVPixelFormatType_16Gray = 'b16g', /* 16 bit Grayscale, 16-bit big-endian samples, black is zero */ kCVPixelFormatType_30RGB = 'R10k', /* 30 bit RGB, 10-bit big-endian samples, 2 unused padding bits (at least significant end). */ + kCVPixelFormatType_30RGB_r210 = 'r210', /* 30 bit RGB, 10-bit big-endian samples, 2 unused padding bits (at most significant end), video-range (64-940). */ kCVPixelFormatType_422YpCbCr8 = '2vuy', /* Component Y'CbCr 8-bit 4:2:2, ordered Cb Y'0 Cr Y'1 */ kCVPixelFormatType_4444YpCbCrA8 = 'v408', /* Component Y'CbCrA 8-bit 4:4:4:4, ordered Cb Y' Cr A */ kCVPixelFormatType_4444YpCbCrA8R = 'r408', /* Component Y'CbCrA 8-bit 4:4:4:4, rendering format. full range alpha, zero biased YUV, ordered A Y' Cb Cr */ @@ -145,12 +146,14 @@ enum #endif { kCVPixelFormatType_Lossless_32BGRA = '&BGA', /* Lossless-compressed form of kCVPixelFormatType_32BGRA. */ - + kCVPixelFormatType_Lossless_64RGBAHalf = '&RhA', /* Lossless-compressed form of kCVPixelFormatType_64RGBAHalf. No CVPlanarPixelBufferInfo struct. */ + // Lossless-compressed Bi-planar YCbCr pixel format types kCVPixelFormatType_Lossless_420YpCbCr8BiPlanarVideoRange = '&8v0', /* Lossless-compressed form of kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange. No CVPlanarPixelBufferInfo struct. */ kCVPixelFormatType_Lossless_420YpCbCr8BiPlanarFullRange = '&8f0', /* Lossless-compressed form of kCVPixelFormatType_420YpCbCr8BiPlanarFullRange. No CVPlanarPixelBufferInfo struct. */ kCVPixelFormatType_Lossless_420YpCbCr10PackedBiPlanarVideoRange = '&xv0', /* Lossless-compressed-packed form of kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange. No CVPlanarPixelBufferInfo struct. Format is compressed-packed with no padding bits between pixels. */ kCVPixelFormatType_Lossless_422YpCbCr10PackedBiPlanarVideoRange = '&xv2', /* Lossless-compressed form of kCVPixelFormatType_422YpCbCr10BiPlanarVideoRange. No CVPlanarPixelBufferInfo struct. Format is compressed-packed with no padding bits between pixels. */ + kCVPixelFormatType_Lossless_420YpCbCr10PackedBiPlanarFullRange = '&xf0', /* Lossless-compressed form of kCVPixelFormatType_420YpCbCr10BiPlanarFullRange. No CVPlanarPixelBufferInfo struct. Format is compressed-packed with no padding bits between pixels. */ }; /* @@ -337,7 +340,7 @@ CV_EXPORT CFTypeID CVPixelBufferGetTypeID(void) __OSX_AVAILABLE_STARTING(__MAC_1 @function CVPixelBufferRetain @abstract Retains a CVPixelBuffer object @discussion Equivalent to CFRetain, but NULL safe - @param buffer A CVPixelBuffer object that you want to retain. + @param texture A CVPixelBuffer object that you want to retain. @result A CVPixelBuffer object that is the same as the passed in buffer. */ CV_EXPORT CVPixelBufferRef CV_NULLABLE CVPixelBufferRetain( CVPixelBufferRef CV_NULLABLE texture ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0); @@ -346,7 +349,7 @@ CV_EXPORT CVPixelBufferRef CV_NULLABLE CVPixelBufferRetain( CVPixelBufferRef CV_ @function CVPixelBufferRelease @abstract Releases a CVPixelBuffer object @discussion Equivalent to CFRelease, but NULL safe - @param buffer A CVPixelBuffer object that you want to release. + @param texture A CVPixelBuffer object that you want to release. */ CV_EXPORT void CVPixelBufferRelease( CV_RELEASES_ARGUMENT CVPixelBufferRef CV_NULLABLE texture ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0); diff --git a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVPixelFormatDescription.h b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVPixelFormatDescription.h index 8d8978d2..1aeec50a 100644 --- a/Frameworks/CoreVideo.framework/Versions/A/Headers/CVPixelFormatDescription.h +++ b/Frameworks/CoreVideo.framework/Versions/A/Headers/CVPixelFormatDescription.h @@ -21,7 +21,7 @@ extern "C" { #endif -/* This document is influenced by Ice Floe #19: http://developer.apple.com/quicktime/icefloe/dispatch019.html */ +/* This document is influenced by Ice Floe #19: https://developer.apple.com/library/archive/technotes/tn2162/_index.html */ /* The canonical name for the format. This should be the same as the codec name you'd use in QT */ CV_EXPORT const CFStringRef CV_NONNULL kCVPixelFormatName __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0); @@ -64,7 +64,7 @@ CV_EXPORT const CFStringRef CV_NONNULL kCVPixelFormatComponentRange_WideRange __ level dictionary. */ CV_EXPORT const CFStringRef CV_NONNULL kCVPixelFormatPlanes __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0); -/* The following keys describe the requirements/layout of a a single image plane. */ +/* The following keys describe the requirements/layout of a single image plane. */ /* Used to assist with allocating memory for pixel formats that don't have an integer value for bytes per pixel */ @@ -85,7 +85,10 @@ CV_EXPORT const CFStringRef CV_NONNULL kCVPixelFormatBlockHeight __OSX_AVAILABLE bitsPerPixel value. */ CV_EXPORT const CFStringRef CV_NONNULL kCVPixelFormatBitsPerBlock __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0); -/* Used to state requirements on block multiples. v210 would be '8' here for the horizontal case, +/* Indicates, if available, the logical bit depth of each component of the plane. */ +CV_EXPORT const CFStringRef CV_NONNULL kCVPixelFormatBitsPerComponent API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); + +/* Used to state requirements on block multiples. v210 would be '8' here for the horizontal case, to match the standard v210 row alignment value of 48. These may be assumed as 1 if not present. */ CV_EXPORT const CFStringRef CV_NONNULL kCVPixelFormatBlockHorizontalAlignment __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0); diff --git a/Frameworks/CoreVideo.framework/Versions/A/Headers/CoreVideo.h b/Frameworks/CoreVideo.framework/Versions/A/Headers/CoreVideo.h index 342504f4..9dde97db 100644 --- a/Frameworks/CoreVideo.framework/Versions/A/Headers/CoreVideo.h +++ b/Frameworks/CoreVideo.framework/Versions/A/Headers/CoreVideo.h @@ -56,6 +56,8 @@ #if TARGET_OS_MAC #include #include +#include +#include #endif #endif #endif diff --git a/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration.tbd b/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration.tbd index d1d511b8..54a6e113 100644 --- a/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration.tbd +++ b/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration.tbd @@ -13,8 +13,9 @@ exports: _DADiskEject, _DADiskEjectWithBlock, _DADiskGetBSDName, _DADiskGetOptions, _DADiskGetTypeID, _DADiskIsClaimed, _DADiskMount, _DADiskMountWithArguments, _DADiskMountWithArgumentsAndBlock, _DADiskMountWithBlock, - _DADiskRename, _DADiskRenameWithBlock, _DADiskSetOptions, - _DADiskUnclaim, _DADiskUnmount, _DADiskUnmountWithBlock, _DADissenterCreate, + _DADiskProbeWithBlock, _DADiskRename, _DADiskRenameWithBlock, + _DADiskSetFSKitAdditions, _DADiskSetOptions, _DADiskUnclaim, + _DADiskUnmount, _DADiskUnmountWithBlock, _DADissenterCreate, _DADissenterGetProcessID, _DADissenterGetStatus, _DADissenterGetStatusString, _DARegisterDiskAppearedCallback, _DARegisterDiskAppearedCallbackBlock, _DARegisterDiskDescriptionChangedCallback, _DARegisterDiskDescriptionChangedCallbackBlock, @@ -35,22 +36,23 @@ exports: _kDADiskDescriptionDeviceModelKey, _kDADiskDescriptionDevicePathKey, _kDADiskDescriptionDeviceProtocolKey, _kDADiskDescriptionDeviceRevisionKey, _kDADiskDescriptionDeviceTDMLockedKey, _kDADiskDescriptionDeviceUnitKey, - _kDADiskDescriptionDeviceVendorKey, _kDADiskDescriptionMatchMediaUnformatted, - _kDADiskDescriptionMatchMediaWhole, _kDADiskDescriptionMatchVolumeMountable, - _kDADiskDescriptionMatchVolumeUnrecognized, _kDADiskDescriptionMediaBSDMajorKey, - _kDADiskDescriptionMediaBSDMinorKey, _kDADiskDescriptionMediaBSDNameKey, - _kDADiskDescriptionMediaBSDUnitKey, _kDADiskDescriptionMediaBlockSizeKey, - _kDADiskDescriptionMediaContentKey, _kDADiskDescriptionMediaEjectableKey, - _kDADiskDescriptionMediaEncryptedKey, _kDADiskDescriptionMediaEncryptionDetailKey, - _kDADiskDescriptionMediaIconKey, _kDADiskDescriptionMediaKindKey, - _kDADiskDescriptionMediaLeafKey, _kDADiskDescriptionMediaMatchKey, - _kDADiskDescriptionMediaNameKey, _kDADiskDescriptionMediaPathKey, - _kDADiskDescriptionMediaRemovableKey, _kDADiskDescriptionMediaSizeKey, - _kDADiskDescriptionMediaTypeKey, _kDADiskDescriptionMediaUUIDKey, - _kDADiskDescriptionMediaWholeKey, _kDADiskDescriptionMediaWritableKey, - _kDADiskDescriptionVolumeKindKey, _kDADiskDescriptionVolumeLifsURLKey, - _kDADiskDescriptionVolumeMountableKey, _kDADiskDescriptionVolumeNameKey, - _kDADiskDescriptionVolumeNetworkKey, _kDADiskDescriptionVolumePathKey, - _kDADiskDescriptionVolumeTypeKey, _kDADiskDescriptionVolumeUUIDKey, - _kDADiskDescriptionWatchVolumeName, _kDADiskDescriptionWatchVolumePath ] + _kDADiskDescriptionDeviceVendorKey, _kDADiskDescriptionFSKitPrefix, + _kDADiskDescriptionMatchMediaUnformatted, _kDADiskDescriptionMatchMediaWhole, + _kDADiskDescriptionMatchVolumeMountable, _kDADiskDescriptionMatchVolumeUnrecognized, + _kDADiskDescriptionMediaBSDMajorKey, _kDADiskDescriptionMediaBSDMinorKey, + _kDADiskDescriptionMediaBSDNameKey, _kDADiskDescriptionMediaBSDUnitKey, + _kDADiskDescriptionMediaBlockSizeKey, _kDADiskDescriptionMediaContentKey, + _kDADiskDescriptionMediaEjectableKey, _kDADiskDescriptionMediaEncryptedKey, + _kDADiskDescriptionMediaEncryptionDetailKey, _kDADiskDescriptionMediaIconKey, + _kDADiskDescriptionMediaKindKey, _kDADiskDescriptionMediaLeafKey, + _kDADiskDescriptionMediaMatchKey, _kDADiskDescriptionMediaNameKey, + _kDADiskDescriptionMediaPathKey, _kDADiskDescriptionMediaRemovableKey, + _kDADiskDescriptionMediaSizeKey, _kDADiskDescriptionMediaTypeKey, + _kDADiskDescriptionMediaUUIDKey, _kDADiskDescriptionMediaWholeKey, + _kDADiskDescriptionMediaWritableKey, _kDADiskDescriptionVolumeKindKey, + _kDADiskDescriptionVolumeLifsURLKey, _kDADiskDescriptionVolumeMountableKey, + _kDADiskDescriptionVolumeNameKey, _kDADiskDescriptionVolumeNetworkKey, + _kDADiskDescriptionVolumePathKey, _kDADiskDescriptionVolumeTypeKey, + _kDADiskDescriptionVolumeUUIDKey, _kDADiskDescriptionWatchVolumeName, + _kDADiskDescriptionWatchVolumePath ] ... diff --git a/Frameworks/DiskArbitration.framework/Versions/A/Headers/DADisk.h b/Frameworks/DiskArbitration.framework/Versions/A/Headers/DADisk.h index 15712a16..5c12b429 100644 --- a/Frameworks/DiskArbitration.framework/Versions/A/Headers/DADisk.h +++ b/Frameworks/DiskArbitration.framework/Versions/A/Headers/DADisk.h @@ -77,6 +77,8 @@ extern const CFStringRef kDADiskDescriptionDeviceTDMLockedKey /* ( CFBoolean extern const CFStringRef kDADiskDescriptionBusNameKey /* ( CFString ) */ API_AVAILABLE(macos(10.4)); extern const CFStringRef kDADiskDescriptionBusPathKey /* ( CFString ) */ API_AVAILABLE(macos(10.4)); +extern const CFStringRef kDADiskDescriptionFSKitPrefix /* -- Key Prefix -- */ API_AVAILABLE(macos(14.4)); + #ifndef __DISKARBITRATIOND__ diff --git a/Frameworks/DiskArbitration.framework/Versions/A/Headers/DiskArbitration.h b/Frameworks/DiskArbitration.framework/Versions/A/Headers/DiskArbitration.h index e6fe59aa..eb3ddbdd 100644 --- a/Frameworks/DiskArbitration.framework/Versions/A/Headers/DiskArbitration.h +++ b/Frameworks/DiskArbitration.framework/Versions/A/Headers/DiskArbitration.h @@ -45,8 +45,9 @@ CF_IMPLICIT_BRIDGING_ENABLED enum { - kDADiskMountOptionDefault = 0x00000000, - kDADiskMountOptionWhole = 0x00000001 + kDADiskMountOptionDefault = 0x00000000, + kDADiskMountOptionWhole = 0x00000001, + kDADiskMountOptionNoFollow = 0x00000002 }; typedef UInt32 DADiskMountOptions; diff --git a/Frameworks/Foundation.framework/Versions/C/Foundation.tbd b/Frameworks/Foundation.framework/Versions/C/Foundation.tbd index 4b3a22a3..f7666293 100644 --- a/Frameworks/Foundation.framework/Versions/C/Foundation.tbd +++ b/Frameworks/Foundation.framework/Versions/C/Foundation.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation' -current-version: 2202 +current-version: 3423 compatibility-version: 300 swift-abi-version: 7 reexported-libraries: @@ -20,9 +20,7 @@ exports: '$ld$hide$os10.14$_OBJC_CLASS_$_NSURLSessionTaskMetrics', '$ld$hide$os10.14$_OBJC_CLASS_$_NSURLSessionTaskTransactionMetrics', '$ld$hide$os10.14$_OBJC_METACLASS_$_NSURLSessionTaskMetrics', - '$ld$hide$os10.14$_OBJC_METACLASS_$_NSURLSessionTaskTransactionMetrics', - '_$ss7Float80V10Foundation18_FormatSpecifiableACMc', '_$ss7Float80V10Foundation18_FormatSpecifiableACWP', - '_$ss7Float80V10FoundationE4_argABvg', '_$ss7Float80V10FoundationE4_argABvpMV' ] + '$ld$hide$os10.14$_OBJC_METACLASS_$_NSURLSessionTaskTransactionMetrics' ] - targets: [ x86_64-macos, x86_64-maccatalyst ] symbols: [ '$ld$hide$os10.13$_NSMetadataItemAcquisitionMakeKey', '$ld$hide$os10.13$_NSMetadataItemAcquisitionModelKey', '$ld$hide$os10.13$_NSMetadataItemAlbumKey', '$ld$hide$os10.13$_NSMetadataItemAltitudeKey', @@ -181,7 +179,9 @@ exports: '$ld$hide$os10.14$_NSMetadataItemTotalBitRateKey', '$ld$hide$os10.14$_NSMetadataItemVersionKey', '$ld$hide$os10.14$_NSMetadataItemVideoBitRateKey', '$ld$hide$os10.14$_NSMetadataItemWhereFromsKey', '$ld$hide$os10.14$_NSMetadataItemWhiteBalanceKey', '$ld$hide$os10.14$_NSMetadataQueryIndexedLocalComputerScope', - '$ld$hide$os10.14$_NSMetadataQueryIndexedNetworkScope' ] + '$ld$hide$os10.14$_NSMetadataQueryIndexedNetworkScope', '_$ss7Float80V10Foundation18_FormatSpecifiableACMc', + '_$ss7Float80V10Foundation18_FormatSpecifiableACWP', '_$ss7Float80V10FoundationE4_argABvg', + '_$ss7Float80V10FoundationE4_argABvpMV' ] - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] symbols: [ '$ld$previous$/System/Library/Frameworks/CoreData.framework/CoreData$1.0$1$10.9$12.0$_NSDetailedErrorsKey$', @@ -192,698 +192,390 @@ exports: '$ld$previous$/System/Library/Frameworks/CoreData.framework/CoreData$1.0$7$7.0$15.0$_NSDetailedErrorsKey$', '$ld$previous$/System/Library/Frameworks/CoreData.framework/CoreData$1.0$8$9.0$15.0$_NSDetailedErrorsKey$', '$ld$previous$/System/Library/Frameworks/CoreData.framework/CoreData$1.0$9$2.0$8.0$_NSDetailedErrorsKey$', - _NSAffineTransformStructIdentity, _NSAllHashTableObjects, - _NSAllMapTableKeys, _NSAllMapTableValues, _NSAllocateMemoryPages, - _NSAllocateObject, _NSAllocateObjectArray, _NSAllocateScannedUncollectable, - _NSAlternateDescriptionAttributeName, _NSAppleEventManagerWillProcessFirstEventNotification, - _NSAppleEventTimeOutDefault, _NSAppleEventTimeOutNone, _NSArgumentDomain, - _NSAssertionHandlerKey, _NSAutoreleaseObject, _NSAutoreleasePoolCount, - _NSAverageKeyValueOperator, _NSBOOLFromString, _NSBundleDidLoadNotification, - _NSBundleDisableCodeLoading, _NSBundleResourceRequestLoadingPriorityUrgent, - _NSBundleResourceRequestLowDiskSpaceNotification, _NSBurstTrieCreate, - _NSBurstTrieCreateFromFile, _NSBurstTrieCreateFromMappedFile, - _NSBurstTrieFind, _NSBurstTrieFindCharacters, _NSBurstTrieFindUTF8String, - _NSBurstTrieGetCount, _NSBurstTrieInsert, _NSBurstTrieInsertCharacters, - _NSBurstTrieMappedSerialize, _NSBurstTriePrint, _NSBurstTrieRelease, - _NSBurstTrieRetain, _NSBurstTrieSerialize, _NSBurstTrieTraverse, - _NSCharacterConversionException, _NSClassDescriptionNeededForClassNotification, - _NSClassFromObject, _NSClassFromString, _NSCocoaErrorDomain, - _NSCollectedScannedZone, _NSCollectedUnscannedZone, _NSCompareCString, - _NSCompareCharacters, _NSCompareHashTables, _NSCompareMapTables, - _NSConnectionDidDieNotification, _NSConnectionDidInitializeNotification, - _NSConnectionReplyMode, _NSContainsRect, _NSCopyHashTableWithZone, - _NSCopyMapTableWithZone, _NSCopyMemoryPages, _NSCopyObject, - _NSCountFrames, _NSCountHashTable, _NSCountKeyValueOperator, - _NSCountMapTable, _NSCreateHashTable, _NSCreateHashTableWithZone, - _NSCreateMapTable, _NSCreateMapTableWithZone, _NSCreateZone, - _NSDataDeallocatorFree, _NSDataDeallocatorNone, _NSDataDeallocatorUnmap, - _NSDataDeallocatorVM, _NSDeallocateMemoryPages, _NSDeallocateObject, - _NSDeallocateZombies, _NSDebugDescriptionErrorKey, _NSDebugEnabled, - _NSDebugRecordObjectAndStack, _NSDecimalAdd, _NSDecimalCompact, - _NSDecimalCompare, _NSDecimalCopy, _NSDecimalDivide, _NSDecimalMultiply, - _NSDecimalMultiplyByPowerOf10, _NSDecimalNormalize, _NSDecimalNumberDivideByZeroException, - _NSDecimalNumberExactnessException, _NSDecimalNumberOverflowException, - _NSDecimalNumberUnderflowException, _NSDecimalPower, _NSDecimalRound, - _NSDecimalString, _NSDecimalSubtract, _NSDecrementExtraRefCountWasZero, - _NSDefaultMallocZone, _NSDescriptionErrorKey, _NSDestinationFilePathErrorKey, - _NSDestinationInvalidException, _NSDetailedErrorsKey, _NSDidBecomeSingleThreadedNotification, - _NSDistinctUnionOfArraysKeyValueOperator, _NSDistinctUnionOfObjectsKeyValueOperator, - _NSDistinctUnionOfSetsKeyValueOperator, _NSDivideRect, _NSEdgeInsetsEqual, - _NSEdgeInsetsZero, _NSEndHashTableEnumeration, _NSEndMapTableEnumeration, - _NSEnumerateHashTable, _NSEnumerateMapTable, _NSEqualPoints, - _NSEqualRects, _NSEqualSizes, _NSErrorFailingURLStringKey, - _NSExtensionAdditionalServiceName, _NSExtensionContainingAppName, - _NSExtensionErrorDomain, _NSExtensionHostDidBecomeActiveNotification, - _NSExtensionHostDidEnterBackgroundNotification, _NSExtensionHostWillEnterForegroundNotification, - _NSExtensionHostWillResignActiveNotification, _NSExtensionIdentifierName, - _NSExtensionInternalErrorException, _NSExtensionIsPredicateSafeToExecuteWithObject, - _NSExtensionIsSafeKeyPathForObject, _NSExtensionItemAttachmentsKey, - _NSExtensionItemAttributedContentTextKey, _NSExtensionItemAttributedTitleKey, - _NSExtensionItemsAndErrorsKey, _NSExtensionJavaScriptPreprocessingResultsKey, - _NSExtensionMain, _NSExtensionPointName, _NSExtensionPointUIServices, - _NSExtensionSubsystemOptionsUIHostContextUIKitKey, _NSExtensionUUIDName, - _NSExtensionVersionName, _NSExtraRefCount, _NSFailedAuthenticationException, - _NSFileAppendOnly, _NSFileBusy, _NSFileCreationDate, _NSFileDeviceIdentifier, - _NSFileExtendedAttributes, _NSFileExtensionHidden, _NSFileGroupOwnerAccountID, - _NSFileGroupOwnerAccountName, _NSFileHFSCreatorCode, _NSFileHFSTypeCode, - _NSFileHandleConnectionAcceptedNotification, _NSFileHandleDataAvailableNotification, - _NSFileHandleNotificationDataItem, _NSFileHandleNotificationFileHandleItem, - _NSFileHandleNotificationMonitorModes, _NSFileHandleOperationException, - _NSFileHandleReadCompletionNotification, _NSFileHandleReadToEndOfFileCompletionNotification, - _NSFileImmutable, _NSFileModificationDate, _NSFileOwnerAccountID, - _NSFileOwnerAccountName, _NSFilePathErrorKey, _NSFilePosixPermissions, - _NSFileProtectionComplete, _NSFileProtectionCompleteUnlessOpen, - _NSFileProtectionCompleteUntilFirstUserAuthentication, _NSFileProtectionCompleteUntilUserAuthentication, - _NSFileProtectionKey, _NSFileProtectionNone, _NSFileProtectionWriteOnly, - _NSFileReferenceCount, _NSFileSize, _NSFileSystemFileNumber, - _NSFileSystemFreeNodes, _NSFileSystemFreeSize, _NSFileSystemNodes, - _NSFileSystemNumber, _NSFileSystemSize, _NSFileType, _NSFileTypeBlockSpecial, - _NSFileTypeCharacterSpecial, _NSFileTypeDirectory, _NSFileTypeForHFSTypeCode, - _NSFileTypeRegular, _NSFileTypeSocket, _NSFileTypeSymbolicLink, - _NSFileTypeUnknown, _NSFontSymbolicTraitsAttributeName, _NSFoundationVersionNumber, - _NSFoundationVersionString, _NSFrameAddress, _NSFreeHashTable, - _NSFreeMapTable, _NSFreeObjectArray, _NSFullUserName, _NSGetUncaughtExceptionHandler, - _NSGlobalDomain, _NSHFSTypeCodeFromFileType, _NSHFSTypeOfFile, - _NSHTTPCookieComment, _NSHTTPCookieCommentURL, _NSHTTPCookieDiscard, - _NSHTTPCookieDomain, _NSHTTPCookieExpires, _NSHTTPCookieManagerAcceptPolicyChangedNotification, - _NSHTTPCookieManagerCookiesChangedNotification, _NSHTTPCookieMaximumAge, - _NSHTTPCookieName, _NSHTTPCookieOriginURL, _NSHTTPCookiePath, - _NSHTTPCookiePort, _NSHTTPCookieSameSiteLax, _NSHTTPCookieSameSitePolicy, - _NSHTTPCookieSameSiteStrict, _NSHTTPCookieSecure, _NSHTTPCookieValue, - _NSHTTPCookieVersion, _NSHangOnUncaughtException, _NSHashCString, - _NSHashCStringAsIs, _NSHashCharacters, _NSHashGet, _NSHashInsert, - _NSHashInsertIfAbsent, _NSHashInsertKnownAbsent, _NSHashRemove, - _NSHashString, _NSHelpAnchorErrorKey, _NSHomeDirectory, _NSHomeDirectoryForUser, - _NSISEpsilon, _NSImageURLAttributeName, _NSInconsistentArchiveException, - _NSIncrementExtraRefCount, _NSInflectionAgreementArgumentAttributeName, - _NSInflectionAgreementConceptAttributeName, _NSInflectionAlternativeAttributeName, - _NSInflectionConceptsKey, _NSInflectionReferentConceptAttributeName, - _NSInflectionRuleAttributeName, _NSInlinePresentationIntentAttributeName, - _NSInsetRect, _NSIntHashCallBacks, _NSIntMapKeyCallBacks, - _NSIntMapValueCallBacks, _NSIntegerHashCallBacks, _NSIntegerMapKeyCallBacks, - _NSIntegerMapValueCallBacks, _NSIntegralRect, _NSIntegralRectFlipOptions, - _NSIntegralRectWithOptions, _NSIntersectionRange, _NSIntersectionRect, - _NSIntersectsRange, _NSIntersectsRect, _NSInvalidArchiveOperationException, - _NSInvalidReceivePortException, _NSInvalidSendPortException, - _NSInvalidUnarchiveOperationException, _NSInvalidValueErrorKey, - _NSInvocationOperationCancelledException, _NSInvocationOperationVoidResultException, - _NSIsEmptyRect, _NSIsFreedObject, _NSIsNilTransformerName, - _NSIsNotNilTransformerName, _NSItemProviderErrorDomain, _NSItemProviderOptionsDispatchModeAsynchronous, - _NSItemProviderOptionsDispatchModeKey, _NSItemProviderOptionsIssueSandboxExtensionKey, - _NSItemProviderPreferredImageSizeKey, _NSKeepAllocationStatistics, - _NSKeyValueChangeIndexesKey, _NSKeyValueChangeKindKey, _NSKeyValueChangeNewKey, - _NSKeyValueChangeNotificationIsPriorKey, _NSKeyValueChangeOldKey, - _NSKeyedArchiveRootObjectKey, _NSKeyedUnarchiveFromDataTransformerName, - _NSLanguageIdentifierAttributeName, _NSLayoutConstraintParserSpace, - _NSLinguisticTagAdjective, _NSLinguisticTagAdverb, _NSLinguisticTagClassifier, - _NSLinguisticTagCloseParenthesis, _NSLinguisticTagCloseQuote, - _NSLinguisticTagConjunction, _NSLinguisticTagDash, _NSLinguisticTagDeterminer, - _NSLinguisticTagIdiom, _NSLinguisticTagInterjection, _NSLinguisticTagNoun, - _NSLinguisticTagNumber, _NSLinguisticTagOpenParenthesis, _NSLinguisticTagOpenQuote, - _NSLinguisticTagOrganizationName, _NSLinguisticTagOther, _NSLinguisticTagOtherPunctuation, - _NSLinguisticTagOtherWhitespace, _NSLinguisticTagOtherWord, - _NSLinguisticTagParagraphBreak, _NSLinguisticTagParticle, - _NSLinguisticTagPersonalName, _NSLinguisticTagPlaceName, _NSLinguisticTagPreposition, - _NSLinguisticTagPronoun, _NSLinguisticTagPunctuation, _NSLinguisticTagSchemeLanguage, - _NSLinguisticTagSchemeLemma, _NSLinguisticTagSchemeLexicalClass, - _NSLinguisticTagSchemeNameType, _NSLinguisticTagSchemeNameTypeOrLexicalClass, - _NSLinguisticTagSchemeScript, _NSLinguisticTagSchemeTokenType, - _NSLinguisticTagSentenceTerminator, _NSLinguisticTagVerb, - _NSLinguisticTagWhitespace, _NSLinguisticTagWord, _NSLinguisticTagWordJoiner, - _NSLoadedClasses, _NSLocalNotificationCenterType, _NSLocaleLanguageConfidenceHigh, - _NSLocaleLanguageConfidenceLow, _NSLocaleLanguageConfidenceMedium, - _NSLocalizedDescriptionKey, _NSLocalizedFailureErrorKey, _NSLocalizedFailureReasonErrorKey, - _NSLocalizedFileSizeDescription, _NSLocalizedPropertyNameForInvalidValueErrorKey, - _NSLocalizedRecoveryOptionsErrorKey, _NSLocalizedRecoverySuggestionErrorKey, - _NSLog, _NSLogPageSize, _NSLogv, _NSMachErrorDomain, _NSMallocZone, - _NSMapGet, _NSMapInsert, _NSMapInsertIfAbsent, _NSMapInsertKnownAbsent, - _NSMapMember, _NSMapRemove, _NSMarkdownSourcePositionAttributeName, - _NSMaximumKeyValueOperator, _NSMaximumValidValueErrorKey, - _NSMetadataItemContainerIdentifierKey, _NSMetadataItemContentTypeKey, - _NSMetadataItemContentTypeTreeKey, _NSMetadataItemDisplayNameKey, - _NSMetadataItemFSContentChangeDateKey, _NSMetadataItemFSCreationDateKey, - _NSMetadataItemFSNameKey, _NSMetadataItemFSSizeKey, _NSMetadataItemIsUbiquitousKey, - _NSMetadataItemPathKey, _NSMetadataItemURLKey, _NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope, - _NSMetadataQueryDidFinishGatheringNotification, _NSMetadataQueryDidStartGatheringNotification, - _NSMetadataQueryDidUpdateNotification, _NSMetadataQueryExternalDocumentsScope, - _NSMetadataQueryGatheringProgressNotification, _NSMetadataQueryLocalDocumentsScope, - _NSMetadataQueryPerAppExternalDocumentsScope, _NSMetadataQueryResultContentRelevanceAttribute, - _NSMetadataQueryUbiquitousDataScope, _NSMetadataQueryUbiquitousDocumentsScope, - _NSMetadataQueryUpdateAddedItemsKey, _NSMetadataQueryUpdateChangedItemsKey, - _NSMetadataQueryUpdateRemovedItemsKey, _NSMetadataUbiquitousItemContainerDisplayNameKey, - _NSMetadataUbiquitousItemDownloadRequestedKey, _NSMetadataUbiquitousItemDownloadingErrorKey, - _NSMetadataUbiquitousItemDownloadingStatusCurrent, _NSMetadataUbiquitousItemDownloadingStatusDownloaded, - _NSMetadataUbiquitousItemDownloadingStatusKey, _NSMetadataUbiquitousItemDownloadingStatusNotDownloaded, - _NSMetadataUbiquitousItemHasUnresolvedConflictsKey, _NSMetadataUbiquitousItemIsDownloadedKey, - _NSMetadataUbiquitousItemIsDownloadingKey, _NSMetadataUbiquitousItemIsExternalDocumentKey, - _NSMetadataUbiquitousItemIsSharedKey, _NSMetadataUbiquitousItemIsUploadedKey, - _NSMetadataUbiquitousItemIsUploadingKey, _NSMetadataUbiquitousItemPercentDownloadedKey, - _NSMetadataUbiquitousItemPercentUploadedKey, _NSMetadataUbiquitousItemURLInLocalContainerKey, - _NSMetadataUbiquitousItemUploadingErrorKey, _NSMetadataUbiquitousSharedItemCurrentUserPermissionsKey, - _NSMetadataUbiquitousSharedItemCurrentUserRoleKey, _NSMetadataUbiquitousSharedItemMostRecentEditorNameComponentsKey, - _NSMetadataUbiquitousSharedItemOwnerNameComponentsKey, _NSMetadataUbiquitousSharedItemOwnerNameKey, - _NSMetadataUbiquitousSharedItemPermissionsKey, _NSMetadataUbiquitousSharedItemPermissionsReadOnly, - _NSMetadataUbiquitousSharedItemPermissionsReadWrite, _NSMetadataUbiquitousSharedItemReadOnlyPermissions, - _NSMetadataUbiquitousSharedItemReadWritePermissions, _NSMetadataUbiquitousSharedItemRoleKey, - _NSMetadataUbiquitousSharedItemRoleOwner, _NSMetadataUbiquitousSharedItemRoleParticipant, - _NSMinimumKeyValueOperator, _NSMinimumValidValueErrorKey, - _NSMorphologyAttributeName, _NSMouseInRect, _NSMultipleUnderlyingErrorsKey, - _NSNeXTRootDirectory, _NSNegateBooleanTransformerName, _NSNetServicesErrorCode, - _NSNetServicesErrorDomain, _NSNextHashEnumeratorItem, _NSNextMapEnumeratorPair, - _NSNonOwnedPointerHashCallBacks, _NSNonOwnedPointerMapKeyCallBacks, - _NSNonOwnedPointerMapValueCallBacks, _NSNonOwnedPointerOrNullMapKeyCallBacks, - _NSNonRetainedObjectHashCallBacks, _NSNonRetainedObjectMapKeyCallBacks, - _NSNonRetainedObjectMapValueCallBacks, _NSNotFoundRange, _NSOSStatusErrorDomain, - _NSObjectHashCallBacks, _NSObjectInaccessibleException, _NSObjectMapKeyCallBacks, - _NSObjectMapValueCallBacks, _NSObjectNotAvailableException, - _NSOffsetRect, _NSOldStyleException, _NSOpenStepDirectoryForUser, - _NSOpenStepRootDirectory, _NSOperationNotSupportedForKeyException, - _NSOrthographyAllLanguagesForFlags, _NSOrthographyAllScriptsForFlags, - _NSOrthographyDominantLanguageForFlags, _NSOrthographyDominantLanguageForFlagsAndScript, - _NSOrthographyDominantScriptForFlags, _NSOrthographyFlagsForDominantScriptAndLanguageMap, - _NSOrthographyFlagsForScriptAndOrthographyIndexes, _NSOrthographyGetScriptAndOrthographyIndexesForFlags, - _NSOrthographyLanguageMapForFlags, _NSOrthographyScriptIndexForCharacters, - _NSOwnedObjectIdentityHashCallBacks, _NSOwnedPointerHashCallBacks, - _NSOwnedPointerMapKeyCallBacks, _NSOwnedPointerMapValueCallBacks, - _NSPOSIXErrorDomain, _NSPageSize, _NSParseErrorException, - _NSPersonNameComponentDelimiter, _NSPersonNameComponentFamilyName, - _NSPersonNameComponentGivenName, _NSPersonNameComponentKey, - _NSPersonNameComponentMiddleName, _NSPersonNameComponentNickname, - _NSPersonNameComponentPhoneticRepresentation, _NSPersonNameComponentPrefix, - _NSPersonNameComponentSuffix, _NSPersonNameDefaultDisplayNameOrderDefault, - _NSPersonNameDefaultShortNameEnabledDefault, _NSPersonNameDefaultShortNameFormatDefault, - _NSPersonNameDefaultShouldPreferNicknamesPreference, _NSPersonNameLocalizedDefaultAbbreviatedNameStyleKey, - _NSPersonNameLocalizedDefaultInitialsCreatorKey, _NSPersonNameLocalizedDefaultLocaleInfoKey, - _NSPersonNameLocalizedDefaultNameOrderForNonNativeScriptsKey, - _NSPersonNameLocalizedDefaultNameOrderKey, _NSPersonNameLocalizedDefaultScriptInfoKey, - _NSPersonNameLocalizedDefaultShortNameStyleKey, _NSPersonNameLocalizedDefaultShortStyleRestrictionsKey, - _NSPersonNameLocalizedDefaultStyleRestrictionsKey, _NSPointFromString, - _NSPointInRect, _NSPointerToStructHashCallBacks, _NSPopAutoreleasePool, - _NSPortDidBecomeInvalidNotification, _NSPortReceiveException, - _NSPortSendException, _NSPortTimeoutException, _NSPresentationIntentAttributeName, - _NSProcessInfoPowerStateDidChangeNotification, _NSProcessInfoThermalStateDidChangeNotification, - _NSProgressByteCompletedCountKey, _NSProgressByteTotalCountKey, - _NSProgressCategoryKey, _NSProgressEstimatedTimeKey, _NSProgressEstimatedTimeRemainingKey, - _NSProgressFileAnimationImageKey, _NSProgressFileAnimationImageOriginalRectKey, - _NSProgressFileCompletedCountKey, _NSProgressFileDisplayNameKey, - _NSProgressFileDownloadingSourceURLKey, _NSProgressFileIconKey, - _NSProgressFileIconOriginalRectKey, _NSProgressFileLocationCanChangeKey, - _NSProgressFileOperationKindAirDropping, _NSProgressFileOperationKindArchiving, - _NSProgressFileOperationKindCompressing, _NSProgressFileOperationKindCopying, - _NSProgressFileOperationKindDecompressing, _NSProgressFileOperationKindDecompressingAfterDownloading, - _NSProgressFileOperationKindDownloading, _NSProgressFileOperationKindDuplicating, - _NSProgressFileOperationKindKey, _NSProgressFileOperationKindReceiving, - _NSProgressFileOperationKindUnarchiving, _NSProgressFileOperationKindUploading, - _NSProgressFileTotalCountKey, _NSProgressFileURLKey, _NSProgressKindFile, - _NSProgressLocalizedDescriptionFileCountFormatterKey, _NSProgressLocalizedDescriptionFileSizeFormatterOptionsKey, - _NSProgressLocalizedDescriptionPercentCompleteFormatterKey, - _NSProgressLocalizedDescriptionTimeRemainingFormatterKey, - _NSProgressLocalizedDescriptionUnitCountFormatterKey, _NSProgressPhysicalFileURLKey, - _NSProgressSuppressUnitCountInAdditionalDescriptionKey, _NSProgressThroughputKey, - _NSProgressUseItemDescriptionKey, _NSProtocolFromString, _NSPushAutoreleasePool, - _NSRangeFromString, _NSRealMemoryAvailable, _NSReallocateObjectArray, - _NSReallocateScannedUncollectable, _NSRecordAllocationEvent, - _NSRecoveryAttempterErrorKey, _NSRectFromString, _NSRecycleZone, - _NSRegistrationDomain, _NSReplacementIndexAttributeName, _NSRequestConcreteImplementation, - _NSResetHashTable, _NSResetMapTable, _NSReturnAddress, _NSRoundDownToMultipleOfPageSize, - _NSRoundUpToMultipleOfPageSize, _NSScannedZone, _NSSearchPathForDirectoriesInDomains, - _NSSecureUnarchiveFromDataTransformerName, _NSSelectorFromString, - _NSSetUncaughtExceptionHandler, _NSSetZoneName, _NSShouldRetainWithZone, - _NSSizeFromString, _NSSourceFilePathErrorKey, _NSStreamNetworkServiceType, - _NSStreamNetworkServiceTypeBackground, _NSStreamNetworkServiceTypeCallSignaling, - _NSStreamNetworkServiceTypeVideo, _NSStreamNetworkServiceTypeVoIP, - _NSStreamNetworkServiceTypeVoice, _NSStreamSOCKSErrorDomain, - _NSStreamSocketSSLErrorDomain, _NSStringEncodingDetectionAllowLossyKey, - _NSStringEncodingDetectionDisallowedEncodingsKey, _NSStringEncodingDetectionFromWindowsKey, - _NSStringEncodingDetectionLikelyLanguageKey, _NSStringEncodingDetectionLossySubstitutionKey, - _NSStringEncodingDetectionSuggestedEncodingsKey, _NSStringEncodingDetectionUseOnlySuggestedEncodingsKey, - _NSStringEncodingErrorKey, _NSStringFromBOOL, _NSStringFromClass, - _NSStringFromHashTable, _NSStringFromMapTable, _NSStringFromPoint, - _NSStringFromProtocol, _NSStringFromRange, _NSStringFromRect, - _NSStringFromSelector, _NSStringFromSize, _NSSubtractRange, - _NSSumKeyValueOperator, _NSTargetObjectUserInfoKey, _NSTaskDidTerminateNotification, - _NSTemporaryDirectory, _NSTextCheckingAirlineKey, _NSTextCheckingCityKey, - _NSTextCheckingCountryKey, _NSTextCheckingFlightKey, _NSTextCheckingJobTitleKey, - _NSTextCheckingNameKey, _NSTextCheckingOrganizationKey, _NSTextCheckingPhoneKey, - _NSTextCheckingStateKey, _NSTextCheckingStreetKey, _NSTextCheckingZIPKey, - _NSThreadWillExitNotification, _NSTypeIdentifierAddressText, - _NSTypeIdentifierDateText, _NSTypeIdentifierPhoneNumberText, - _NSTypeIdentifierTransitInformationText, _NSURLAuthenticationMethodClientCertificate, - _NSURLAuthenticationMethodDefault, _NSURLAuthenticationMethodHTMLForm, - _NSURLAuthenticationMethodHTTPBasic, _NSURLAuthenticationMethodHTTPDigest, - _NSURLAuthenticationMethodNTLM, _NSURLAuthenticationMethodNegotiate, - _NSURLAuthenticationMethodOAuth, _NSURLAuthenticationMethodServerTrust, - _NSURLAuthenticationMethodXMobileMeAuthToken, _NSURLConnectionBackgroundDownloadCompletedInvocation, - _NSURLConnectionBackgroundDownloadDestinationURL, _NSURLConnectionBackgroundDownloadIdentifier, - _NSURLConnectionBackgroundDownloadMediaKind, _NSURLConnectionBackgroundDownloadPreCompletedInvocation, - _NSURLConnectionIsBackgroundDownload, _NSURLCredentialStorageChangedNotification, - _NSURLCredentialStorageRemoveSynchronizableCredentials, _NSURLErrorBackgroundTaskCancelledReasonKey, - _NSURLErrorDomain, _NSURLErrorFailingURLErrorKey, _NSURLErrorFailingURLPeerTrustErrorKey, - _NSURLErrorFailingURLStringErrorKey, _NSURLErrorKey, _NSURLErrorNetworkUnavailableReasonKey, - _NSURLFileScheme, _NSURLLocalizedString, _NSURLLog, _NSURLProtectionSpaceFTP, - _NSURLProtectionSpaceFTPProxy, _NSURLProtectionSpaceHTTP, - _NSURLProtectionSpaceHTTPProxy, _NSURLProtectionSpaceHTTPS, - _NSURLProtectionSpaceHTTPSProxy, _NSURLProtectionSpaceSOCKSProxy, - _NSURLReportArgumentAssertionFailure, _NSURLReportAssertionFailure, - _NSURLReportAssertionFailureWithMessage, _NSURLReportError, - _NSURLReportFatalError, _NSURLSessionDownloadTaskResumeData, - _NSURLSessionTaskPriorityDefault, _NSURLSessionTaskPriorityHigh, - _NSURLSessionTaskPriorityLow, _NSURLSessionTransferSizeUnknown, - _NSURLSessionUploadTaskResumeData, _NSUbiquitousKeyValueStoreChangeReasonKey, - _NSUbiquitousKeyValueStoreChangedKeysKey, _NSUbiquitousKeyValueStoreDidChangeExternallyNotification, - _NSUbiquitousUserDefaultsCompletedInitialSyncNotification, - _NSUbiquitousUserDefaultsDidChangeAccountsNotification, _NSUbiquitousUserDefaultsNoCloudAccountNotification, - _NSUbiquityIdentityDidChangeNotification, _NSUnarchiveFromDataTransformerName, - _NSUndefinedKeyException, _NSUnderlyingErrorKey, _NSUndoManagerCheckpointNotification, - _NSUndoManagerDidCloseUndoGroupNotification, _NSUndoManagerDidOpenUndoGroupNotification, - _NSUndoManagerDidRedoChangeNotification, _NSUndoManagerDidUndoChangeNotification, - _NSUndoManagerGroupIsDiscardableKey, _NSUndoManagerWillCloseUndoGroupNotification, - _NSUndoManagerWillRedoChangeNotification, _NSUndoManagerWillUndoChangeNotification, - _NSUnimplemented_, _NSUnionOfArraysKeyValueOperator, _NSUnionOfObjectsKeyValueOperator, - _NSUnionOfSetsKeyValueOperator, _NSUnionRange, _NSUnionRect, - _NSUnknownKeyException, _NSUnknownUserInfoKey, _NSUnscannedZone, - _NSUserActivityContentUserActionCall, _NSUserActivityContentUserActionFacetime, - _NSUserActivityContentUserActionMessage, _NSUserActivityContentUserActionNavigate, - _NSUserActivityContentUserActionPlay, _NSUserActivityContentUserActionRecord, - _NSUserActivityContentUserActionSchedule, _NSUserActivityTypeBrowsingWeb, - _NSUserDefaultsDidChangeNotification, _NSUserDefaultsSizeLimitExceededNotification, - _NSUserName, _NSUserStringVariantErrorKey, _NSWillBecomeMultiThreadedNotification, - _NSXMLParserErrorColumnKey, _NSXMLParserErrorDomain, _NSXMLParserErrorFileNameKey, - _NSXMLParserErrorLineNumberKey, _NSXMLParserErrorMessageKey, - _NSZeroPoint, _NSZeroRange, _NSZeroRect, _NSZeroSize, _NSZombieEnabled, - _NSZoneCalloc, _NSZoneFree, _NSZoneFromPointer, _NSZoneMalloc, - _NSZoneName, _NSZoneRealloc, _NSZoneReallyFree, __NSAEDescriptorByConvertingObjectOfTypeInSuite, - __NSAddAltHandler2, __NSAddExceptionHandlerForLock, __NSAlternateDescriptionAttributeName, - __NSAssertFile, __NSAssertLine, __NSAssumedFallbackInflectionAttributeName, - __NSAttributedStringFromMarkdownWithCreator, __NSAutoreleasePoolGetRubyToken, - __NSAutoreleasePoolSetRubyToken, __NSBundleResourceRequestAssetPackNotificationAssetPackIDKey, - __NSBundleResourceRequestAssetPackPinnedNotification, __NSBundleResourceRequestAssetPackUnpinnedNotification, - __NSBundleResourceRequestClientInterface, __NSBundleResourceRequestErrorDomain, - __NSBundleResourceRequestServerBusyTimeIntervalKey, __NSBundleResourceRequestServerInterface, - __NSCStringCharToUnichar, __NSCStringEncoding, __NSCodeAndEnumerationFlagForTypeInSuite, - __NSCoderIsAppleSigningIdentifier, __NSConvertToASCIIorUnicode, - __NSConvertToASCIIorUnicode2, __NSDateFormatterNoInit, __NSDefaultCStringEncoding, - __NSDefaultFileSystemEncoding, __NSDefaultMallocZoneClaimedAddress, - __NSDefaultStringEncoding, __NSDescriptionWithLocaleFunc, - __NSDescriptionWithStringProxyFunc, __NSEncodingFromDataForExtendedAttribute, - __NSEncodingToNewDataForExtendedAttribute, __NSErrnoMessage, - __NSErrorWithCloudSharingError, __NSErrorWithFilePath, __NSErrorWithFilePathAndEncoding, - __NSErrorWithFilePathAndErrno, __NSErrorWithFilePathErrnoAndVariant, - __NSErrorWithFilePathErrnoVariantAndExtraUserInfo, __NSExceptionHandlerCount, - __NSExceptionRaiser, __NSFCClaimsLog, __NSFCFSEventsLog, __NSFCIP, - __NSFCIPPB, __NSFCLog, __NSFCPresenterLog, __NSFCProcessMonitorLog, - __NSFCProviderLog, __NSFCShouldLog, __NSFCShouldLogForNewClaim, - __NSFaultInObject, __NSFaultInObjectWithCleanup, __NSFoundationBundle, - __NSFoundationResourceDirectory, __NSFullMethodName, __NSGetUsingKeyValueGetter, - __NSGetVoidValueWithMethod, __NSGrammarAttributeName, __NSIPCloneToTemporaryDir, - __NSIPItemQueue, __NSImageURLAttributeName, __NSIndentSpace, - __NSInflectableAttributeName, __NSInflectionAlternativeAttributeName, - __NSInlinePresentationIntentAttributeName, __NSIsLocalizedString, - __NSKeyValueCreateImplicitObservationInfo, __NSKeyValueCreatePendingChangeNotificationArray, - __NSKeyValueGetterForClassAndKey, __NSKeyValueInvalidateAllCachesForContainerAndKey, - __NSKeyValueMutableSetGetterForClassAndKey, __NSKeyValueObserverRegistrationEnableLockingAssertions, - __NSKeyValuePrimitiveGetterForClassAndKey, __NSKeyValuePrimitiveSetterForClassAndKey, - __NSKeyValueRemoveObservationInfoForObject, __NSKeyValueSetterForClassAndKey, - __NSLanguageAttributeName, __NSLinguisticTagSchemeInternalClass, - __NSLinguisticTagSchemePossibleClasses, __NSLocalizedFileSizeDescription, - __NSLogCStringFunction, __NSMethodExceptionProem, __NSNewInlineCString, - __NSNewStringByAppendingStrings, __NSNewStringFromCString, - __NSODRSandboxExtensionKey, __NSODRSandboxRootPathKey, __NSODRURLKey, - __NSObjectByConvertingAEDescriptorToTypeInSuite, __NSPNCSettings, - __NSPerformInflectionsWithObserverAndInflectionRule, __NSPersonNameComponentPhoneticFamilyNameKeyPath, - __NSPersonNameComponentPhoneticGivenNameKeyPath, __NSPersonNameComponentPhoneticMiddleNameKeyPath, - __NSPersonNameComponentPhoneticNicknameKeyPath, __NSPersonNameComponentPhoneticPrefixKeyPath, - __NSPersonNameComponentPhoneticSuffixKeyPath, __NSPrintForDebugger, - __NSProgressRemoteLocalizedAdditionalDescriptionKey, __NSProgressRemoteLocalizedDescriptionKey, - __NSRaiseError, __NSReadExtendedAttributesFromFileDescriptor, - __NSRemoveAltHandler2, __NSRemoveExceptionHandlerForLock, - __NSReplacementIndexAttributeName, __NSRequestConcreteObject, - __NSSetExceptionRaiser, __NSSetLogCStringFunction, __NSSetUsingKeyValueSetter, - __NSSetupLibXML, __NSSoftLinkingGetFrameworkFunction, __NSSoftLinkingLoadFramework, - __NSUserDefaults_Log_Nonsensical_Suites, __NSWriteExtendedAttributesToFileDescriptor, - __NSXMLCreateStringFromContentsOfHTML, __NSXPCConnectionInvocationReplyToSelectorKey, - __NSXPCConnectionInvocationReplyUserInfoKey, __NS_os_log_callback, - __NXAccessFile, __NXCurrentWorkingDir, __NXMakeDirs, __NXRenameFile, - __NXStatFile, ___NSCoderInvalidState, ___NSCreateBPlistMappedDataFromURL, - ___NSCreateBPlistMappedString, ___NSDefaultStringEncodingFullyInited, - ___NSDescribeDelayedPerformCallout, ___NSDescribeNSMachPortCallout, - ___NSDescribeTimerCallout, ___NSFireDelayedPerform, ___NSFireMachPort, - ___NSFireTimer, ___NSPropertyListClasses_ForArchival_ErrorAndException, - __cshims_get_formatted_str_length, __cshims_strncasecmp_l, - __cshims_strtod_l, __cshims_strtof_l, _getStackObservedValueClassAndBoxSize ] - objc-classes: [ NSAEDescriptorTranslator, NSAddressCheckingResult, NSAffineTransform, - NSAlignmentLayoutRule, NSAppleEventDescriptor, NSAppleEventManager, - NSAppleScript, NSArchiver, NSArrayChange, NSArrayChanges, - NSAssertionHandler, NSAttributedString, NSAttributedStringMarkdownParsingOptions, - NSAttributedStringMarkdownSourcePosition, NSAutoreleasePool, - NSAutoresizingMaskLayoutConstraint, NSBackgroundActivityScheduler, - NSBigMutableString, NSBlockOperation, NSBlockPredicate, NSBoundKeyPath, - NSBundle, NSBundleResourceRequest, NSByteCountFormatter, NSCachedURLResponse, - NSCalendarDate, NSCharacterSet, NSCheapMutableString, NSClassDescription, - NSCloneCommand, NSCloseCommand, NSCoder, NSComparisonPredicate, - NSComparisonPredicateOperator, NSCompletionCheckingResult, - NSComplexOrthography, NSComplexRegularExpressionCheckingResult, - NSCompoundPredicate, NSCompoundPredicateOperator, NSConcreteAttributedString, - NSConcreteMutableAttributedString, NSConcreteValue, NSCondition, - NSConditionLock, NSConnection, NSConstantDoubleNumber, NSConstantFloatNumber, - NSConstantIntegerNumber, NSConstantString, NSConstantValueExpression, - NSContentSizeLayoutConstraint, NSCorrectionCheckingResult, - NSCountCommand, NSCountedSet, NSCreateCommand, NSDashCheckingResult, - NSDataDetector, NSDateCheckingResult, NSDateComponentsFormatter, - NSDateFormatter, NSDateInterval, NSDateIntervalFormatter, - NSDecimalNumber, NSDecimalNumberHandler, NSDeleteCommand, - NSDeserializer, NSDimension, NSDirectoryEnumerator, NSDistantObject, - NSDistantObjectRequest, NSDistributedLock, NSDistributedNotificationCenter, - NSEmojiCheckingResult, NSEnergyFormatter, NSEqualityPredicateOperator, - NSError, NSExistsCommand, NSExpression, NSExtendedRegularExpressionCheckingResult, - NSExtension, NSExtensionContext, NSExtensionItem, NSFalsePredicate, - NSFileAccessArbiter, NSFileAccessIntent, NSFileCoordinator, - NSFileHandle, NSFileManager, NSFileProviderKernelFileMaterializationInfo, - NSFileProviderKernelMaterializationInfo, NSFileProviderKernelPartialFolderMaterializationInfo, - NSFileProviderMessageInterface, NSFileProviderMessenger, NSFileProviderMovingInfo, - NSFileProviderMovingResponse, NSFileProviderPresenterInfo, - NSFileProviderService, NSFileProvidingInfo, NSFileProvidingResponse, - NSFileVersion, NSFileWrapper, NSFilterObservationTransformer, - NSFormatter, NSFunctionExpression, NSGZipDecoder, NSGetCommand, - NSGrammarCheckingResult, NSHTTPCookie, NSHTTPCookieStorage, - NSHTTPURLResponse, NSHashTable, NSHost, NSIBPrototypingLayoutConstraint, - NSISO8601DateFormatter, NSInPredicateOperator, NSIndexPath, - NSIndexSet, NSIndexSpecifier, NSInflectionRule, NSInflectionRuleExplicit, - NSInvocationOperation, NSItemProvider, NSItemProviderRepresentation, - NSItemRepresentationLoadResult, NSJSONSerialization, NSKeyBinding, - NSKeyGetBinding, NSKeyPathExpression, NSKeyPathSpecifierExpression, - NSKeySetBinding, NSKeyValueAccessor, NSKeyValueGetter, NSKeyValueSetter, - NSKeyedArchiver, NSKeyedUnarchiver, NSLanguageContext, NSLayoutAnchor, - NSLayoutAnchorRule, NSLayoutConstraint, NSLayoutConstraintExplainer, - NSLayoutDimension, NSLayoutPoint, NSLayoutPointRule, NSLayoutRect, - NSLayoutRectRule, NSLayoutXAxisAnchor, NSLayoutYAxisAnchor, - NSLengthFormatter, NSLinguisticTagger, NSLinkCheckingResult, - NSListFormatter, NSLocalizableString, NSLock, NSLogicalTest, - NSLookupMatch, NSMachBootstrapServer, NSMapTable, NSMassFormatter, - NSMeasurement, NSMeasurementFormatter, NSMessagePort, NSMessagePortNameServer, - NSMetadataItem, NSMetadataQuery, NSMetadataQueryAttributeValueTuple, - NSMetadataQueryResultGroup, NSMiddleSpecifier, NSMorphology, - NSMorphologyCustomPronoun, NSMorphologyPronoun, NSMoveCommand, - NSMultiReadUniWriteLock, NSMutableAttributedString, NSMutableCharacterSet, - NSMutableIndexSet, NSMutableRLEArray, NSMutableString, NSMutableStringProxyForMutableAttributedString, - NSMutableURLRequest, NSNameSpecifier, NSNetService, NSNetServiceBrowser, - NSNotification, NSNotificationCenter, NSNotificationObservable, - NSNotificationQueue, NSNumber, NSNumberFormatter, NSObservableKeyPath, - NSObservation, NSObservationBuffer, NSObservationSink, NSObservationSource, - NSObservationTransformer, NSObserverKeyPath, NSOldValueObservationTransformer, - NSOperation, NSOperationQueue, NSOrderedCollectionChange, - NSOrderedCollectionDifference, NSOrderedSetChange, NSOrderedSetChanges, - NSOrthography, NSOrthographyCheckingResult, NSPersonNameComponents, - NSPersonNameComponentsFormatter, NSPhoneNumberCheckingResult, - NSPinyinString, NSPipe, NSPlaceholderMutableString, NSPlaceholderString, - NSPointerArray, NSPointerFunctions, NSPortCoder, NSPortMessage, - NSPortNameServer, NSPositionalSpecifier, NSPredicate, NSPredicateOperator, - NSPresentationIntent, NSProcessInfo, NSProgress, NSPropertyListSerialization, - NSPropertySpecifier, NSProtocolChecker, NSProxy, NSPurgeableData, - NSQuitCommand, NSQuoteCheckingResult, NSRLEArray, NSRTFD, - NSRandomSpecifier, NSRangeSpecifier, NSRecursiveLock, NSReduceObservationTransformer, - NSRegularExpression, NSRegularExpressionCheckingResult, NSRelativeDateTimeFormatter, - NSRelativeSpecifier, NSReplacementCheckingResult, NSScanner, - NSScriptArgumentDescription, NSScriptAttributeDescription, - NSScriptClassDescription, NSScriptCoercionHandler, NSScriptCommand, - NSScriptCommandDescription, NSScriptDeclaredRecordTypeDescription, - NSScriptEnumerationDescription, NSScriptEnumeratorDescription, - NSScriptExecutionContext, NSScriptObjectSpecifier, NSScriptPropertyDescription, - NSScriptRecordFieldDescription, NSScriptRecordTypeDescription, - NSScriptSuiteDescription, NSScriptSuiteRegistry, NSScriptTypeDescription, - NSScriptValueTypeDescription, NSScriptWhoseTest, NSScriptingAppleEventHandler, - NSSecureUnarchiveFromDataTransformer, NSSecurityScopedURLWrapper, - NSSelfExpression, NSSerializer, NSSetChange, NSSetChanges, - NSSetCommand, NSSetExpression, NSSimpleCString, NSSimpleOrthography, - NSSimpleRegularExpressionCheckingResult, NSSmartPunctuationController, - NSSmartQuoteOptions, NSSortDescriptor, NSSpecifierTest, NSSpellCheckingResult, - NSSpellServer, NSStackInContainerRule, NSStackLayoutRule, - NSString, NSStringPredicateOperator, NSSubqueryExpression, - NSSubstitutionCheckingResult, NSSubstringPredicateOperator, - NSTask, NSTermOfAddress, NSTernaryExpression, NSTextCheckingKeyEvent, - NSTextCheckingResult, NSThread, NSTransitInformationCheckingResult, - NSTruePredicate, NSURLAuthenticationChallenge, NSURLCache, - NSURLComponents, NSURLConnection, NSURLCredential, NSURLCredentialStorage, - NSURLDownload, NSURLError, NSURLFileTypeMappings, NSURLHandle, - NSURLProtectionSpace, NSURLProtocol, NSURLQueryItem, NSURLRequest, - NSURLResponse, NSURLSession, NSURLSessionConfiguration, NSURLSessionDataTask, - NSURLSessionDownloadTask, NSURLSessionStreamTask, NSURLSessionTask, - NSURLSessionTaskMetrics, NSURLSessionTaskTransactionMetrics, - NSURLSessionUploadTask, NSURLSessionWebSocketMessage, NSURLSessionWebSocketTask, - NSUUID, NSUbiquitousKeyValueStore, NSUnarchiver, NSUndoManager, - NSUniqueIDSpecifier, NSUnit, NSUnitAcceleration, NSUnitAngle, - NSUnitArea, NSUnitConcentrationMass, NSUnitConverter, NSUnitConverterLinear, - NSUnitDispersion, NSUnitDuration, NSUnitElectricCharge, NSUnitElectricCurrent, - NSUnitElectricPotentialDifference, NSUnitElectricResistance, - NSUnitEnergy, NSUnitFrequency, NSUnitFuelEfficiency, NSUnitIlluminance, - NSUnitInformationStorage, NSUnitLength, NSUnitMass, NSUnitPower, - NSUnitPressure, NSUnitSpeed, NSUnitTemperature, NSUnitVolume, - NSUserActivity, NSValue, NSValueTransformer, NSVariableExpression, - NSVisualFormatLayoutRule, NSWhoseSpecifier, NSXMLAttributeDeclaration, - NSXMLDTD, NSXMLDTDNode, NSXMLDocument, NSXMLElement, NSXMLElementDeclarationContent, - NSXMLNode, NSXMLParser, NSXPCCoder, NSXPCConnection, NSXPCInterface, - NSXPCListener, NSXPCListenerEndpoint, NSZipFileArchive, _NSAttributedStringGrammar, - _NSAttributedStringGrammarInflection, _NSBundleODRTag, _NSCloudSharingDescriptor, - _NSExtensionContextVendor, _NSKVOCompatibility, _NSLocalizedStringResource, - _NSSharedValueTransformer, _NSStringFormattingOptions ] - objc-ivars: [ NSBlockPredicate._block, NSComplexOrthography._dominantScript, - NSComplexOrthography._languageMap, NSComplexOrthography._orthographyFlags, - NSConcreteValue._specialFlags, NSConcreteValue.typeInfo, NSConstantDoubleNumber._value, - NSConstantFloatNumber._value, NSConstantIntegerNumber._encoding, - NSConstantIntegerNumber._value, NSDataDetector._types, NSDimension._converter, - NSFilterObservationTransformer._predicate, NSInPredicateOperator._flags, - NSInPredicateOperator._stringVersion, NSIndexSet._indexSetFlags, - NSIndexSet._internal, NSKeyBinding._class, NSKeyBinding._funcP, - NSKeyBinding._key, NSLocalizableString._developmentLanguageString, - NSLocalizableString._stringsFileKey, NSOldValueObservationTransformer._lastValue, - NSPinyinString._deletionCount, NSPinyinString._firstModificationIndex, - NSPinyinString._insertionCount, NSPinyinString._lastSyllableIsPartial, - NSPinyinString._rangeCount, NSPinyinString._ranges, NSPinyinString._replacementCount, - NSPinyinString._score, NSPinyinString._string, NSPinyinString._syllableCount, - NSPinyinString._transpositionCount, NSPredicate._predicateFlags, - NSPredicate.reserved, NSProxy.isa, NSRegularExpression._checkout, - NSRegularExpression._internal, NSRegularExpression._options, - NSRegularExpression._pattern, NSSimpleOrthography._orthographyFlags, - NSSmartPunctuationController._client, NSSmartPunctuationController._options, - NSSmartPunctuationController._types, NSSmartQuoteOptions._apostrophe, - NSSmartQuoteOptions._leftDoubleQuote, NSSmartQuoteOptions._leftSingleQuote, - NSSmartQuoteOptions._rightDoubleQuote, NSSmartQuoteOptions._rightSingleQuote, - NSURLHandle._clients, NSURLHandle._data, NSURLHandle._reserved, - NSURLHandle._status, NSUserScriptTask._connection, NSUserScriptTask._hasExeced, - NSUserScriptTask._hasTerminated, NSUserScriptTask._scriptURL, - NSUserScriptTask._stderr, NSUserScriptTask._stdin, NSUserScriptTask._stdout, - NSVariableExpression._variable, NSXMLDTDNode._DTDKind, NSXMLDTDNode._name, - NSXMLDTDNode._notationName, NSXMLDTDNode._publicID, NSXMLDTDNode._systemID, - NSXMLDocument._URI, NSXMLDocument._children, NSXMLDocument._childrenHaveMutated, - NSXMLDocument._contentKind, NSXMLDocument._docType, NSXMLDocument._encoding, - NSXMLDocument._extraIvars, NSXMLDocument._fidelityMask, NSXMLDocument._rootElement, - NSXMLDocument._standalone, NSXMLDocument._version, NSXMLDocument.padding, - NSXMLElement._URI, NSXMLElement._attributes, NSXMLElement._children, - NSXMLElement._childrenHaveMutated, NSXMLElement._name, NSXMLElement._namespaces, - NSXMLElement._padding, NSXMLElement._prefixIndex, NSXMLElement._zeroOrOneAttributes, - NSXMLElement._zeroOrOneNamespaces, NSXMLNode._index, NSXMLNode._kind, - NSXMLNode._objectValue, NSXMLNode._parent, _NSCloudSharingDescriptor._invitationsSentViaThirdPartyService, - _NSCloudSharingDescriptor._numberOfInvitations, _NSCloudSharingDescriptor._operation, - _NSCloudSharingDescriptor._publicShare, _NSCloudSharingDescriptor._sharedContentType ] - weak-symbols: [ '__swift_FORCE_LOAD_$_Foundation', '__swift_FORCE_LOAD_$_swiftFoundation' ] - - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] - symbols: [ '_$s10Foundation10CocoaErrorV010formattingC0AC4CodeVvgZ', + '$ld$previous$/usr/lib/swift/libswiftSystem_Foundation.dylib$$1$11.0$15.0$_$s10Foundation3URLV08_System_A0E_11isDirectoryACSg0C08FilePathV_SbtcfC$', + '$ld$previous$/usr/lib/swift/libswiftSystem_Foundation.dylib$$1$11.0$15.0$_$s10Foundation3URLV08_System_A0EyACSg0C08FilePathVcfC$', + '$ld$previous$/usr/lib/swift/libswiftSystem_Foundation.dylib$$1$11.0$15.0$_$s6System8FilePathV01_A11_FoundationEyACSg0D03URLVcfC$', + '$ld$previous$/usr/lib/swift/libswiftSystem_Foundation.dylib$$6$14.0$18.0$_$s10Foundation3URLV08_System_A0E_11isDirectoryACSg0C08FilePathV_SbtcfC$', + '$ld$previous$/usr/lib/swift/libswiftSystem_Foundation.dylib$$6$14.0$18.0$_$s10Foundation3URLV08_System_A0EyACSg0C08FilePathVcfC$', + '$ld$previous$/usr/lib/swift/libswiftSystem_Foundation.dylib$$6$14.0$18.0$_$s6System8FilePathV01_A11_FoundationEyACSg0D03URLVcfC$', + '_$s10Foundation10CocoaErrorV010formattingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV010formattingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV011fileLockingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV011fileLockingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV012isExecutableC0Sbvg', '_$s10Foundation10CocoaErrorV012isExecutableC0SbvpMV', '_$s10Foundation10CocoaErrorV012isFormattingC0Sbvg', '_$s10Foundation10CocoaErrorV012isFormattingC0SbvpMV', '_$s10Foundation10CocoaErrorV012isValidationC0Sbvg', '_$s10Foundation10CocoaErrorV012isValidationC0SbvpMV', '_$s10Foundation10CocoaErrorV013userCancelledC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV013userCancelledC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV014executableLinkC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV014executableLinkC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV014executableLoadC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV014executableLoadC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV014fileNoSuchFileC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV014fileNoSuchFileC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV014isPropertyListC0Sbvg', '_$s10Foundation10CocoaErrorV014isPropertyListC0SbvpMV', '_$s10Foundation10CocoaErrorV014isUserActivityC0Sbvg', '_$s10Foundation10CocoaErrorV014isUserActivityC0SbvpMV', '_$s10Foundation10CocoaErrorV015fileReadUnknownC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV015fileReadUnknownC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV015isXPCConnectionC0Sbvg', '_$s10Foundation10CocoaErrorV015isXPCConnectionC0SbvpMV', '_$s10Foundation10CocoaErrorV016coderReadCorruptC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV016coderReadCorruptC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV016fileReadTooLargeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV016fileReadTooLargeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV016fileWriteUnknownC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV016fileWriteUnknownC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV016isUbiquitousFileC0Sbvg', '_$s10Foundation10CocoaErrorV016isUbiquitousFileC0SbvpMV', '_$s10Foundation10CocoaErrorV018coderValueNotFoundC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV018coderValueNotFoundC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV018featureUnsupportedC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV018featureUnsupportedC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV018fileReadNoSuchFileC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV018fileReadNoSuchFileC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV018keyValueValidationC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV018keyValueValidationC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV019fileReadCorruptFileC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV019fileReadCorruptFileC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV019fileWriteFileExistsC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV019fileWriteFileExistsC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV019fileWriteOutOfSpaceC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV019fileWriteOutOfSpaceC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV020fileReadNoPermissionC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV020fileReadNoPermissionC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV021executableNotLoadableC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV021executableNotLoadableC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV021fileWriteNoPermissionC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV021fileWriteNoPermissionC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV022fileManagerUnmountBusyC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV022fileManagerUnmountBusyC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV022propertyListReadStreamC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV022propertyListReadStreamC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV023fileReadInvalidFileNameC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV023fileReadInvalidFileNameC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV023fileWriteVolumeReadOnlyC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV023fileWriteVolumeReadOnlyC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV023propertyListReadCorruptC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV023propertyListReadCorruptC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV023propertyListWriteStreamC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV023propertyListWriteStreamC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV024fileWriteInvalidFileNameC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV024fileWriteInvalidFileNameC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV024propertyListWriteInvalidC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV024propertyListWriteInvalidC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV025executableRuntimeMismatchC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV025executableRuntimeMismatchC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV025fileManagerUnmountUnknownC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV025fileManagerUnmountUnknownC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV025fileReadUnsupportedSchemeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV025fileReadUnsupportedSchemeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV025ubiquitousFileUnavailableC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV025ubiquitousFileUnavailableC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV025userActivityHandoffFailedC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV025userActivityHandoffFailedC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV026fileWriteUnsupportedSchemeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV026fileWriteUnsupportedSchemeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV029fileReadUnknownStringEncodingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV029fileReadUnknownStringEncodingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV030executableArchitectureMismatchC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV030executableArchitectureMismatchC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV030propertyListReadUnknownVersionC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV030propertyListReadUnknownVersionC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV033userActivityConnectionUnavailableC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV033userActivityConnectionUnavailableC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV034fileReadInapplicableStringEncodingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV034fileReadInapplicableStringEncodingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV035fileWriteInapplicableStringEncodingC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV035fileWriteInapplicableStringEncodingC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV035ubiquitousFileNotUploadedDueToQuotaC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV035ubiquitousFileNotUploadedDueToQuotaC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV035userActivityHandoffUserInfoTooLargeC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV035userActivityHandoffUserInfoTooLargeC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV037userActivityRemoteApplicationTimedOutC0AC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV037userActivityRemoteApplicationTimedOutC0AC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV03_nsC0ACSo7NSErrorC_tcfC', '_$s10Foundation10CocoaErrorV03_nsC0So7NSErrorCvg', '_$s10Foundation10CocoaErrorV03_nsC0So7NSErrorCvpMV', '_$s10Foundation10CocoaErrorV06isFileC0Sbvg', '_$s10Foundation10CocoaErrorV06isFileC0SbvpMV', '_$s10Foundation10CocoaErrorV07isCoderC0Sbvg', '_$s10Foundation10CocoaErrorV07isCoderC0SbvpMV', '_$s10Foundation10CocoaErrorV10formattingAC4CodeVvgZ', - '_$s10Foundation10CocoaErrorV10underlyings0C0_pSgvg', '_$s10Foundation10CocoaErrorV10underlyings0C0_pSgvpMV', - '_$s10Foundation10CocoaErrorV11errorDomainSSvgZ', '_$s10Foundation10CocoaErrorV11fileLockingAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV10formattingAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV10underlyings0C0_pSgvg', + '_$s10Foundation10CocoaErrorV10underlyings0C0_pSgvpMV', '_$s10Foundation10CocoaErrorV11errorDomainSSvgZ', + '_$s10Foundation10CocoaErrorV11errorDomainSSvpZMV', '_$s10Foundation10CocoaErrorV11fileLockingAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV11fileLockingAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV13userCancelledAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV13userCancelledAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV14executableLinkAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV14executableLinkAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV14executableLoadAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV14executableLoadAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV14fileNoSuchFileAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV14fileNoSuchFileAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV14stringEncodingSSAAE0E0VSgvg', '_$s10Foundation10CocoaErrorV14stringEncodingSSAAE0E0VSgvpMV', '_$s10Foundation10CocoaErrorV15fileReadUnknownAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV15fileReadUnknownAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV16coderReadCorruptAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV16coderReadCorruptAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV16fileReadTooLargeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV16fileReadTooLargeAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV16fileWriteUnknownAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV16fileWriteUnknownAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV16underlyingErrorsSays0C0_pGvg', '_$s10Foundation10CocoaErrorV16underlyingErrorsSays0C0_pGvpMV', '_$s10Foundation10CocoaErrorV17coderInvalidValueAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV17coderInvalidValueAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV18coderValueNotFoundAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV18coderValueNotFoundAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV18featureUnsupportedAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV18featureUnsupportedAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV18fileReadNoSuchFileAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV18fileReadNoSuchFileAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV18keyValueValidationAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV18keyValueValidationAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV19fileReadCorruptFileAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV19fileReadCorruptFileAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV19fileWriteFileExistsAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV19fileWriteFileExistsAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV19fileWriteOutOfSpaceAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV19fileWriteOutOfSpaceAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV20fileReadNoPermissionAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV20fileReadNoPermissionAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV20xpcConnectionInvalidAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV20xpcConnectionInvalidAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV21executableNotLoadableAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV21executableNotLoadableAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV21fileWriteNoPermissionAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV21fileWriteNoPermissionAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV22fileManagerUnmountBusyAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV22fileManagerUnmountBusyAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV22propertyListReadStreamAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV22propertyListReadStreamAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV23fileReadInvalidFileNameAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV23fileReadInvalidFileNameAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV23fileWriteVolumeReadOnlyAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV23fileWriteVolumeReadOnlyAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV23propertyListReadCorruptAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV23propertyListReadCorruptAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV23propertyListWriteStreamAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV23propertyListWriteStreamAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV24fileWriteInvalidFileNameAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV24fileWriteInvalidFileNameAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV24propertyListWriteInvalidAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV24propertyListWriteInvalidAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV24xpcConnectionInterruptedAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV24xpcConnectionInterruptedAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV25executableRuntimeMismatchAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV25executableRuntimeMismatchAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV25fileManagerUnmountUnknownAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV25fileManagerUnmountUnknownAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV25fileReadUnsupportedSchemeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV25fileReadUnsupportedSchemeAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV25ubiquitousFileUnavailableAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV25ubiquitousFileUnavailableAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV25userActivityHandoffFailedAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV25userActivityHandoffFailedAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV25xpcConnectionReplyInvalidAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV25xpcConnectionReplyInvalidAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV26fileWriteUnsupportedSchemeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV26fileWriteUnsupportedSchemeAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV29fileReadUnknownStringEncodingAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV29fileReadUnknownStringEncodingAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV30executableArchitectureMismatchAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV30executableArchitectureMismatchAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV30propertyListReadUnknownVersionAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV30propertyListReadUnknownVersionAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV33userActivityConnectionUnavailableAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV33userActivityConnectionUnavailableAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV34fileReadInapplicableStringEncodingAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV34fileReadInapplicableStringEncodingAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV35fileWriteInapplicableStringEncodingAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV35fileWriteInapplicableStringEncodingAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV35ubiquitousFileNotUploadedDueToQuotaAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV35ubiquitousFileNotUploadedDueToQuotaAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV35userActivityHandoffUserInfoTooLargeAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV35userActivityHandoffUserInfoTooLargeAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV37userActivityRemoteApplicationTimedOutAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV37userActivityRemoteApplicationTimedOutAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV3urlAA3URLVSgvg', '_$s10Foundation10CocoaErrorV3urlAA3URLVSgvpMV', '_$s10Foundation10CocoaErrorV40ubiquitousFileUbiquityServerNotAvailableAC4CodeVvgZ', + '_$s10Foundation10CocoaErrorV40ubiquitousFileUbiquityServerNotAvailableAC4CodeVvpZMV', '_$s10Foundation10CocoaErrorV4CodeV010formattingC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV010formattingC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV011fileLockingC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV011fileLockingC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV013userCancelledC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV013userCancelledC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV014executableLinkC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV014executableLinkC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV014executableLoadC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV014executableLoadC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV014fileNoSuchFileC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV014fileNoSuchFileC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV015fileReadUnknownC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV015fileReadUnknownC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV016coderReadCorruptC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV016coderReadCorruptC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV016fileReadTooLargeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV016fileReadTooLargeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV016fileWriteUnknownC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV016fileWriteUnknownC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV018coderValueNotFoundC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV018coderValueNotFoundC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV018featureUnsupportedC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV018featureUnsupportedC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV018fileReadNoSuchFileC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV018fileReadNoSuchFileC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV018keyValueValidationC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV018keyValueValidationC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV019fileReadCorruptFileC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV019fileReadCorruptFileC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV019fileWriteFileExistsC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV019fileWriteFileExistsC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV019fileWriteOutOfSpaceC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV019fileWriteOutOfSpaceC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV020fileReadNoPermissionC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV020fileReadNoPermissionC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV021executableNotLoadableC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV021executableNotLoadableC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV021fileWriteNoPermissionC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV021fileWriteNoPermissionC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV022fileManagerUnmountBusyC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV022fileManagerUnmountBusyC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV022propertyListReadStreamC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV022propertyListReadStreamC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV023fileReadInvalidFileNameC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV023fileReadInvalidFileNameC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV023fileWriteVolumeReadOnlyC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV023fileWriteVolumeReadOnlyC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV023propertyListReadCorruptC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV023propertyListReadCorruptC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV023propertyListWriteStreamC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV023propertyListWriteStreamC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV024fileWriteInvalidFileNameC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV024fileWriteInvalidFileNameC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV024propertyListWriteInvalidC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV024propertyListWriteInvalidC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV025executableRuntimeMismatchC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV025executableRuntimeMismatchC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV025fileManagerUnmountUnknownC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV025fileManagerUnmountUnknownC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV025fileReadUnsupportedSchemeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV025fileReadUnsupportedSchemeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV025ubiquitousFileUnavailableC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV025ubiquitousFileUnavailableC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV025userActivityHandoffFailedC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV025userActivityHandoffFailedC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV026fileWriteUnsupportedSchemeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV026fileWriteUnsupportedSchemeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV029fileReadUnknownStringEncodingC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV029fileReadUnknownStringEncodingC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV030executableArchitectureMismatchC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV030executableArchitectureMismatchC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV030propertyListReadUnknownVersionC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV030propertyListReadUnknownVersionC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV033userActivityConnectionUnavailableC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV033userActivityConnectionUnavailableC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV034fileReadInapplicableStringEncodingC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV034fileReadInapplicableStringEncodingC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV035fileWriteInapplicableStringEncodingC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV035fileWriteInapplicableStringEncodingC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV035ubiquitousFileNotUploadedDueToQuotaC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV035ubiquitousFileNotUploadedDueToQuotaC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV035userActivityHandoffUserInfoTooLargeC0AEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV035userActivityHandoffUserInfoTooLargeC0AEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV037userActivityRemoteApplicationTimedOutC0AEvgZ', - '_$s10Foundation10CocoaErrorV4CodeV10formattingAEvgZ', '_$s10Foundation10CocoaErrorV4CodeV11fileLockingAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV037userActivityRemoteApplicationTimedOutC0AEvpZMV', + '_$s10Foundation10CocoaErrorV4CodeV10formattingAEvgZ', '_$s10Foundation10CocoaErrorV4CodeV10formattingAEvpZMV', + '_$s10Foundation10CocoaErrorV4CodeV11fileLockingAEvgZ', '_$s10Foundation10CocoaErrorV4CodeV11fileLockingAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV13userCancelledAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV13userCancelledAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV14executableLinkAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV14executableLinkAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV14executableLoadAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV14executableLoadAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV14fileNoSuchFileAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV14fileNoSuchFileAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV15fileReadUnknownAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV15fileReadUnknownAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV16coderReadCorruptAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV16coderReadCorruptAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV16fileReadTooLargeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV16fileReadTooLargeAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV16fileWriteUnknownAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV16fileWriteUnknownAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV17coderInvalidValueAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV17coderInvalidValueAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV18coderValueNotFoundAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV18coderValueNotFoundAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV18featureUnsupportedAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV18featureUnsupportedAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV18fileReadNoSuchFileAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV18fileReadNoSuchFileAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV18keyValueValidationAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV18keyValueValidationAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV19fileReadCorruptFileAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV19fileReadCorruptFileAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV19fileWriteFileExistsAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV19fileWriteFileExistsAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV19fileWriteOutOfSpaceAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV19fileWriteOutOfSpaceAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV20fileReadNoPermissionAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV20fileReadNoPermissionAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV20xpcConnectionInvalidAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV20xpcConnectionInvalidAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV21executableNotLoadableAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV21executableNotLoadableAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV21fileWriteNoPermissionAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV21fileWriteNoPermissionAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV22fileManagerUnmountBusyAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV22fileManagerUnmountBusyAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV22propertyListReadStreamAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV22propertyListReadStreamAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV23fileReadInvalidFileNameAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV23fileReadInvalidFileNameAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV23fileWriteVolumeReadOnlyAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV23fileWriteVolumeReadOnlyAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV23propertyListReadCorruptAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV23propertyListReadCorruptAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV23propertyListWriteStreamAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV23propertyListWriteStreamAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV24fileWriteInvalidFileNameAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV24fileWriteInvalidFileNameAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV24propertyListWriteInvalidAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV24propertyListWriteInvalidAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV24xpcConnectionInterruptedAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV24xpcConnectionInterruptedAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV25executableRuntimeMismatchAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV25executableRuntimeMismatchAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV25fileManagerUnmountUnknownAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV25fileManagerUnmountUnknownAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV25fileReadUnsupportedSchemeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV25fileReadUnsupportedSchemeAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV25ubiquitousFileUnavailableAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV25ubiquitousFileUnavailableAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV25userActivityHandoffFailedAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV25userActivityHandoffFailedAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV25xpcConnectionReplyInvalidAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV25xpcConnectionReplyInvalidAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV26fileWriteUnsupportedSchemeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV26fileWriteUnsupportedSchemeAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV29fileReadUnknownStringEncodingAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV29fileReadUnknownStringEncodingAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV30executableArchitectureMismatchAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV30executableArchitectureMismatchAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV30propertyListReadUnknownVersionAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV30propertyListReadUnknownVersionAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV33userActivityConnectionUnavailableAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV33userActivityConnectionUnavailableAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV34fileReadInapplicableStringEncodingAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV34fileReadInapplicableStringEncodingAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV35fileWriteInapplicableStringEncodingAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV35fileWriteInapplicableStringEncodingAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV35ubiquitousFileNotUploadedDueToQuotaAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV35ubiquitousFileNotUploadedDueToQuotaAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV35userActivityHandoffUserInfoTooLargeAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV35userActivityHandoffUserInfoTooLargeAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV37userActivityRemoteApplicationTimedOutAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV37userActivityRemoteApplicationTimedOutAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV40ubiquitousFileUbiquityServerNotAvailableAEvgZ', + '_$s10Foundation10CocoaErrorV4CodeV40ubiquitousFileUbiquityServerNotAvailableAEvpZMV', '_$s10Foundation10CocoaErrorV4CodeV8rawValueAESi_tcfC', '_$s10Foundation10CocoaErrorV4CodeV8rawValueSivg', '_$s10Foundation10CocoaErrorV4CodeV8rawValueSivpMV', '_$s10Foundation10CocoaErrorV4CodeVAA01_cD8ProtocolAAMc', '_$s10Foundation10CocoaErrorV4CodeVAA01_cD8ProtocolAAWP', @@ -901,6 +593,30 @@ exports: '_$s10Foundation10CocoaErrorVMa', '_$s10Foundation10CocoaErrorVMn', '_$s10Foundation10CocoaErrorVN', '_$s10Foundation10CocoaErrorVSHAAMc', '_$s10Foundation10CocoaErrorVSQAAMc', '_$s10Foundation10CocoaErrorVs0C0AAMc', + '_$s10Foundation10ExpressionV10expressionAA017StandardPredicateB0_pq_6OutputAA0eB0PRts_XPvg', + '_$s10Foundation10ExpressionV10expressionAA017StandardPredicateB0_pq_6OutputAA0eB0PRts_XPvpMV', + '_$s10Foundation10ExpressionV11descriptionSSvg', '_$s10Foundation10ExpressionV11descriptionSSvpMV', + '_$s10Foundation10ExpressionV16debugDescriptionSSvg', '_$s10Foundation10ExpressionV16debugDescriptionSSvpMV', + '_$s10Foundation10ExpressionV4from13configurationACyxxQp_QPq_Gs7Decoder_p_AA29PredicateCodableConfigurationVtKcfC', + '_$s10Foundation10ExpressionV4fromACyxxQp_QPq_Gs7Decoder_p_tKcfC', + '_$s10Foundation10ExpressionV6encode2to13configurationys7Encoder_p_AA29PredicateCodableConfigurationVtKF', + '_$s10Foundation10ExpressionV6encode2toys7Encoder_p_tKF', + '_$s10Foundation10ExpressionV8evaluateyq_xxQpKF', '_$s10Foundation10ExpressionV8variableAA20PredicateExpressionsO8VariableVy_xGxQp_tvg', + '_$s10Foundation10ExpressionVMa', '_$s10Foundation10ExpressionVMn', + '_$s10Foundation10ExpressionVyACyxxQp_QPq_GAA017StandardPredicateB0_pq_6OutputAA0dB0PRts_XPAA0D11ExpressionsO8VariableVy_xGxQpXEcfC', + '_$s10Foundation10ExpressionVyxxQp_QPq_GAA26DecodableWithConfigurationAAMc', + '_$s10Foundation10ExpressionVyxxQp_QPq_GAA26DecodableWithConfigurationAAWP', + '_$s10Foundation10ExpressionVyxxQp_QPq_GAA26EncodableWithConfigurationAAMc', + '_$s10Foundation10ExpressionVyxxQp_QPq_GAA26EncodableWithConfigurationAAWP', + '_$s10Foundation10ExpressionVyxxQp_QPq_GSEAAMc', '_$s10Foundation10ExpressionVyxxQp_QPq_GSeAAMc', + '_$s10Foundation10ExpressionVyxxQp_QPq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation10ExpressionVyxxQp_QPq_Gs28CustomDebugStringConvertibleAAMc', + '_$s10Foundation10ICUCLDRKeyV2eeoiySbAC_ACtFZ', '_$s10Foundation10ICUCLDRKeyV3keySSvg', + '_$s10Foundation10ICUCLDRKeyV3keySSvpMV', '_$s10Foundation10ICUCLDRKeyV4hash4intoys6HasherVz_tF', + '_$s10Foundation10ICUCLDRKeyV9hashValueSivg', '_$s10Foundation10ICUCLDRKeyV9hashValueSivpMV', + '_$s10Foundation10ICUCLDRKeyVMa', '_$s10Foundation10ICUCLDRKeyVMn', + '_$s10Foundation10ICUCLDRKeyVN', '_$s10Foundation10ICUCLDRKeyVSHAAMc', + '_$s10Foundation10ICUCLDRKeyVSQAAMc', '_$s10Foundation10ICUCLDRKeyVyACSScfC', '_$s10Foundation10MorphologyV11PronounTypeO10possessiveyA2EmFWC', '_$s10Foundation10MorphologyV11PronounTypeO4fromAEs7Decoder_p_tKcfC', '_$s10Foundation10MorphologyV11PronounTypeO6encode2toys7Encoder_p_tKF', @@ -1099,7 +815,8 @@ exports: '_$s10Foundation10MorphologyV2eeoiySbAC_ACtFZ', '_$s10Foundation10MorphologyV34_conditionallyBridgeFromObjectiveC_6resultSbSo12NSMorphologyC_ACSgztFZ', '_$s10Foundation10MorphologyV36_unconditionallyBridgeFromObjectiveCyACSo12NSMorphologyCSgFZ', '_$s10Foundation10MorphologyV4fromACs7Decoder_p_tKcfC', '_$s10Foundation10MorphologyV4hash4intoys6HasherVz_tF', - '_$s10Foundation10MorphologyV4userACvgZ', '_$s10Foundation10MorphologyV6encode2toys7Encoder_p_tKF', + '_$s10Foundation10MorphologyV4userACvgZ', '_$s10Foundation10MorphologyV4userACvpZMV', + '_$s10Foundation10MorphologyV6encode2toys7Encoder_p_tKF', '_$s10Foundation10MorphologyV6numberAC17GrammaticalNumberOSgvM', '_$s10Foundation10MorphologyV6numberAC17GrammaticalNumberOSgvg', '_$s10Foundation10MorphologyV6numberAC17GrammaticalNumberOSgvpMV', @@ -1132,90 +849,174 @@ exports: '_$s10Foundation10MorphologyVSQAAMc', '_$s10Foundation10MorphologyVSeAAMc', '_$s10Foundation10MorphologyVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation10NSNotFoundSivg', '_$s10Foundation10POSIXErrorV10EADDRINUSE6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV10EADDRINUSE6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV10ECONNRESET6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV10ECONNRESET6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV10EOWNERDEAD6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV10EOWNERDEAD6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV10EPROTOTYPE6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV10EPROTOTYPE6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV10ESHLIBVERS6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV10ESHLIBVERS6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV11EINPROGRESS6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV11EINPROGRESS6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV11ENETUNREACH6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV11ENETUNREACH6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV11ENOPROTOOPT6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV11ENOPROTOOPT6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV11EWOULDBLOCK6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV11errorDomainSSvgZ', '_$s10Foundation10POSIXErrorV12EAFNOSUPPORT6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV11EWOULDBLOCK6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV11errorDomainSSvgZ', '_$s10Foundation10POSIXErrorV11errorDomainSSvpZMV', + '_$s10Foundation10POSIXErrorV12EAFNOSUPPORT6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12EAFNOSUPPORT6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV12ECONNABORTED6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12ECONNABORTED6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV12ECONNREFUSED6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12ECONNREFUSED6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV12EDESTADDRREQ6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12EDESTADDRREQ6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV12EHOSTUNREACH6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12EHOSTUNREACH6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV12ENAMETOOLONG6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12ENAMETOOLONG6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV12EPFNOSUPPORT6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12EPFNOSUPPORT6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV12EPROCUNAVAIL6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12EPROCUNAVAIL6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV12EPROGUNAVAIL6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12EPROGUNAVAIL6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV12ERPCMISMATCH6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12ERPCMISMATCH6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV12ETOOMANYREFS6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV12ETOOMANYREFS6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV13EADDRNOTAVAIL6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV13EADDRNOTAVAIL6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV13EPROGMISMATCH6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV13EPROGMISMATCH6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV15ENOTRECOVERABLE6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV15ENOTRECOVERABLE6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV15EPROTONOSUPPORT6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV15EPROTONOSUPPORT6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV15ESOCKTNOSUPPORT6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV3EIO6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV4EDOM6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV5E2BIG6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EAUTH6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV5EBADF6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EBUSY6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV5EFBIG6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EIDRM6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV5EINTR6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5ELOOP6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV5ENOSR6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5ENXIO6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV5EPERM6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EPIPE6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV5EROFS6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5ESRCH6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV5ETIME6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EXDEV6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6EACCES6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EAGAIN6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6ECHILD6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EDQUOT6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6EEXIST6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EFAULT6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6EFTYPE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EILSEQ6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6EINVAL6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EISDIR6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6EMFILE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EMLINK6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6ENFILE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENODEV6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6ENOENT6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOLCK6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6ENOMEM6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOMSG6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6ENOSPC6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOSTR6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6ENOSYS6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOTTY6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6EPROTO6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EQFULL6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6ERANGE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ESPIPE6Darwin0B4CodeOvgZ', - '_$s10Foundation10POSIXErrorV6ESTALE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EUSERS6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV15ESOCKTNOSUPPORT6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV3EIO6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV3EIO6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV4EDOM6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV4EDOM6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5E2BIG6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5E2BIG6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5EAUTH6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EAUTH6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5EBADF6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EBADF6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5EBUSY6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EBUSY6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5EFBIG6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EFBIG6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5EIDRM6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EIDRM6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5EINTR6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EINTR6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5ELOOP6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5ELOOP6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5ENOSR6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5ENOSR6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5ENXIO6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5ENXIO6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5EPERM6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EPERM6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5EPIPE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EPIPE6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5EROFS6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EROFS6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5ESRCH6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5ESRCH6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5ETIME6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5ETIME6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV5EXDEV6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV5EXDEV6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EACCES6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EACCES6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EAGAIN6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EAGAIN6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ECHILD6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ECHILD6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EDQUOT6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EDQUOT6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EEXIST6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EEXIST6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EFAULT6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EFAULT6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EFTYPE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EFTYPE6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EILSEQ6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EILSEQ6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EINVAL6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EINVAL6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EISDIR6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EISDIR6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EMFILE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EMFILE6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EMLINK6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EMLINK6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ENFILE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENFILE6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ENODEV6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENODEV6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ENOENT6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOENT6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ENOLCK6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOLCK6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ENOMEM6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOMEM6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ENOMSG6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOMSG6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ENOSPC6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOSPC6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ENOSTR6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOSTR6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ENOSYS6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOSYS6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ENOTTY6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ENOTTY6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EPROTO6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EPROTO6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EQFULL6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EQFULL6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ERANGE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ERANGE6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ESPIPE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ESPIPE6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6ESTALE6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6ESTALE6Darwin0B4CodeOvpZMV', + '_$s10Foundation10POSIXErrorV6EUSERS6Darwin0B4CodeOvgZ', '_$s10Foundation10POSIXErrorV6EUSERS6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7EBADMSG6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7EBADMSG6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7EBADRPC6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7EBADRPC6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7EDEADLK6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7EDEADLK6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7EDEVERR6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7EDEVERR6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7EISCONN6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7EISCONN6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7ENOATTR6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7ENOATTR6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7ENOBUFS6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7ENOBUFS6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7ENODATA6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7ENODATA6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7ENOEXEC6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7ENOEXEC6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7ENOLINK6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7ENOLINK6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7ENOTBLK6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7ENOTBLK6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7ENOTDIR6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7ENOTDIR6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7ENOTSUP6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7ENOTSUP6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7EPWROFF6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7EPWROFF6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7EREMOTE6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7EREMOTE6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV7ETXTBSY6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV7ETXTBSY6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV8EALREADY6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV8EALREADY6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV8EBADARCH6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV8EBADARCH6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV8EBADEXEC6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV8EBADEXEC6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV8EMSGSIZE6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV8EMSGSIZE6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV8ENETDOWN6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV8ENETDOWN6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV8ENOTCONN6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV8ENOTCONN6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV8ENOTSOCK6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV8ENOTSOCK6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV8EPROCLIM6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV8EPROCLIM6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV8_nsErrorACSo7NSErrorC_tcfC', '_$s10Foundation10POSIXErrorV8_nsErrorSo7NSErrorCvg', '_$s10Foundation10POSIXErrorV8_nsErrorSo7NSErrorCvpMV', '_$s10Foundation10POSIXErrorV9EBADMACHO6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9EBADMACHO6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9ECANCELED6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9ECANCELED6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9EHOSTDOWN6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9EHOSTDOWN6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9EMULTIHOP6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9EMULTIHOP6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9ENEEDAUTH6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9ENEEDAUTH6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9ENETRESET6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9ENETRESET6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9ENOPOLICY6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9ENOPOLICY6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9ENOTEMPTY6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9ENOTEMPTY6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9EOVERFLOW6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9EOVERFLOW6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9ESHUTDOWN6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9ESHUTDOWN6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9ETIMEDOUT6Darwin0B4CodeOvgZ', + '_$s10Foundation10POSIXErrorV9ETIMEDOUT6Darwin0B4CodeOvpZMV', '_$s10Foundation10POSIXErrorV9hashValueSivg', '_$s10Foundation10POSIXErrorV9hashValueSivpMV', '_$s10Foundation10POSIXErrorVAA13CustomNSErrorAAMc', '_$s10Foundation10POSIXErrorVAA13CustomNSErrorAAWP', '_$s10Foundation10POSIXErrorVAA21_BridgedStoredNSErrorAAMc', @@ -1258,8 +1059,10 @@ exports: '_$s10Foundation10URLRequestV19allHTTPHeaderFieldsSDyS2SGSgvg', '_$s10Foundation10URLRequestV19allHTTPHeaderFieldsSDyS2SGSgvpMV', '_$s10Foundation10URLRequestV19allHTTPHeaderFieldsSDyS2SGSgvs', - '_$s10Foundation10URLRequestV19assumesHTTP3CapableSbvM', '_$s10Foundation10URLRequestV19assumesHTTP3CapableSbvg', - '_$s10Foundation10URLRequestV19assumesHTTP3CapableSbvpMV', + '_$s10Foundation10URLRequestV19allowsPersistentDNSSbvM', '_$s10Foundation10URLRequestV19allowsPersistentDNSSbvg', + '_$s10Foundation10URLRequestV19allowsPersistentDNSSbvpMV', + '_$s10Foundation10URLRequestV19allowsPersistentDNSSbvs', '_$s10Foundation10URLRequestV19assumesHTTP3CapableSbvM', + '_$s10Foundation10URLRequestV19assumesHTTP3CapableSbvg', '_$s10Foundation10URLRequestV19assumesHTTP3CapableSbvpMV', '_$s10Foundation10URLRequestV19assumesHTTP3CapableSbvs', '_$s10Foundation10URLRequestV20allowsCellularAccessSbvM', '_$s10Foundation10URLRequestV20allowsCellularAccessSbvg', '_$s10Foundation10URLRequestV20allowsCellularAccessSbvpMV', @@ -1276,6 +1079,10 @@ exports: '_$s10Foundation10URLRequestV24requiresDNSSECValidationSbvg', '_$s10Foundation10URLRequestV24requiresDNSSECValidationSbvpMV', '_$s10Foundation10URLRequestV24requiresDNSSECValidationSbvs', + '_$s10Foundation10URLRequestV25cookiePartitionIdentifierSSSgvM', + '_$s10Foundation10URLRequestV25cookiePartitionIdentifierSSSgvg', + '_$s10Foundation10URLRequestV25cookiePartitionIdentifierSSSgvpMV', + '_$s10Foundation10URLRequestV25cookiePartitionIdentifierSSSgvs', '_$s10Foundation10URLRequestV26_forceBridgeFromObjectiveC_6resultySo12NSURLRequestC_ACSgztFZ', '_$s10Foundation10URLRequestV28allowsExpensiveNetworkAccessSbvM', '_$s10Foundation10URLRequestV28allowsExpensiveNetworkAccessSbvg', @@ -1304,6 +1111,7 @@ exports: '_$s10Foundation10URLRequestVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation10URLRequestVs23CustomStringConvertibleAAMc', '_$s10Foundation10URLRequestVs28CustomDebugStringConvertibleAAMc', + '_$s10Foundation10parseError_22exampleFormattedStringAA05CocoaC0VSS_SSSgtF', '_$s10Foundation11FormatStyleMp', '_$s10Foundation11FormatStyleP6formaty0B6OutputQz0B5InputQzFTj', '_$s10Foundation11FormatStyleP6formaty0B6OutputQz0B5InputQzFTq', '_$s10Foundation11FormatStyleP6localeyxAA6LocaleVFTj', '_$s10Foundation11FormatStyleP6localeyxAA6LocaleVFTq', @@ -1412,8 +1220,11 @@ exports: '_$s10Foundation11JSONDecoderCMu', '_$s10Foundation11JSONDecoderCN', '_$s10Foundation11JSONDecoderCfD', '_$s10Foundation11JSONDecoderCfd', '_$s10Foundation11JSONEncoderC16OutputFormattingV10sortedKeysAEvgZ', + '_$s10Foundation11JSONEncoderC16OutputFormattingV10sortedKeysAEvpZMV', '_$s10Foundation11JSONEncoderC16OutputFormattingV13prettyPrintedAEvgZ', + '_$s10Foundation11JSONEncoderC16OutputFormattingV13prettyPrintedAEvpZMV', '_$s10Foundation11JSONEncoderC16OutputFormattingV22withoutEscapingSlashesAEvgZ', + '_$s10Foundation11JSONEncoderC16OutputFormattingV22withoutEscapingSlashesAEvpZMV', '_$s10Foundation11JSONEncoderC16OutputFormattingV8rawValueAESu_tcfC', '_$s10Foundation11JSONEncoderC16OutputFormattingV8rawValueSuvg', '_$s10Foundation11JSONEncoderC16OutputFormattingV8rawValueSuvpMV', @@ -1500,10 +1311,16 @@ exports: '_$s10Foundation11JSONEncoderCMn', '_$s10Foundation11JSONEncoderCMo', '_$s10Foundation11JSONEncoderCMu', '_$s10Foundation11JSONEncoderCN', '_$s10Foundation11JSONEncoderCfD', '_$s10Foundation11JSONEncoderCfd', - '_$s10Foundation11MeasurementV11descriptionSSvg', '_$s10Foundation11MeasurementV11descriptionSSvpMV', - '_$s10Foundation11MeasurementV12customMirrors0D0Vvg', '_$s10Foundation11MeasurementV12customMirrors0D0VvpMV', - '_$s10Foundation11MeasurementV16debugDescriptionSSvg', '_$s10Foundation11MeasurementV16debugDescriptionSSvpMV', - '_$s10Foundation11MeasurementV19_bridgeToObjectiveCSo13NSMeasurementCyF', + '_$s10Foundation11LockedStateV027withLockExtendingLifetimeOfC0yqd__qd__xzYbKXEKlF', + '_$s10Foundation11LockedStateV07initialC0ACyxGx_tcfC', '_$s10Foundation11LockedStateV17withLockUncheckedyqd__qd__xzKXEKlF', + '_$s10Foundation11LockedStateV8withLockyqd__qd__xzYbKXEKlF', + '_$s10Foundation11LockedStateVAAytRszlE4lockyyF', '_$s10Foundation11LockedStateVAAytRszlE6unlockyyF', + '_$s10Foundation11LockedStateVAAytRszlE8withLockyqd__qd__yYbKXEKs8SendableRd__lF', + '_$s10Foundation11LockedStateVAAytRszlEACyytGycfC', '_$s10Foundation11LockedStateVMa', + '_$s10Foundation11LockedStateVMn', '_$s10Foundation11MeasurementV11descriptionSSvg', + '_$s10Foundation11MeasurementV11descriptionSSvpMV', '_$s10Foundation11MeasurementV12customMirrors0D0Vvg', + '_$s10Foundation11MeasurementV12customMirrors0D0VvpMV', '_$s10Foundation11MeasurementV16debugDescriptionSSvg', + '_$s10Foundation11MeasurementV16debugDescriptionSSvpMV', '_$s10Foundation11MeasurementV19_bridgeToObjectiveCSo13NSMeasurementCyF', '_$s10Foundation11MeasurementV1doiyACyxGAE_SdtFZ', '_$s10Foundation11MeasurementV1doiyACyxGSd_AEtFZ', '_$s10Foundation11MeasurementV1loiySbACyqd__G_ACyqd_0_GtSo6NSUnitCRbd__AHRbd_0_r0_lFZ', '_$s10Foundation11MeasurementV1moiyACyxGAE_SdtFZ', '_$s10Foundation11MeasurementV1moiyACyxGSd_AEtFZ', @@ -1545,12 +1362,15 @@ exports: '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV6localeAA6LocaleVvs', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV6localeyAGyx_GAA6LocaleVF', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV11abbreviatedAIyx__GvgZ', + '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV11abbreviatedAIyx__GvpZMV', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV2eeoiySbAIyx__G_AKtFZ', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV4fromAIyx__Gs7Decoder_p_tKcfC', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV4hash4intoys6HasherVz_tF', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV4wideAIyx__GvgZ', + '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV4wideAIyx__GvpZMV', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV6encode2toys7Encoder_p_tKF', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV6narrowAIyx__GvgZ', + '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV6narrowAIyx__GvpZMV', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV9hashValueSivg', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthV9hashValueSivpMV', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleV9UnitWidthVMa', @@ -1613,6 +1433,12 @@ exports: '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleVyx_GSHAAMc', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleVyx_GSQAAMc', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE11FormatStyleVyx_GSeAAMc', + '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE15AttributedStyleV13dynamicMemberqd__s15WritableKeyPathCyAcaERbzrlE06FormatE0Vyx_Gqd__G_tcluiM', + '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE15AttributedStyleV13dynamicMemberqd__s15WritableKeyPathCyAcaERbzrlE06FormatE0Vyx_Gqd__G_tcluig', + '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE15AttributedStyleV13dynamicMemberqd__s15WritableKeyPathCyAcaERbzrlE06FormatE0Vyx_Gqd__G_tcluipMV', + '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE15AttributedStyleV13dynamicMemberqd__s15WritableKeyPathCyAcaERbzrlE06FormatE0Vyx_Gqd__G_tcluis', + '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE15AttributedStyleV13dynamicMemberqd__s7KeyPathCyAcaERbzrlE06FormatE0Vyx_Gqd__G_tcluig', + '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE15AttributedStyleV13dynamicMemberqd__s7KeyPathCyAcaERbzrlE06FormatE0Vyx_Gqd__G_tcluipMV', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE15AttributedStyleV2eeoiySbAGyx_G_AItFZ', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE15AttributedStyleV4fromAGyx_Gs7Decoder_p_tKcfC', '_$s10Foundation11MeasurementVAASo11NSDimensionCRbzrlE15AttributedStyleV4hash4intoys6HasherVz_tF', @@ -1704,30 +1530,43 @@ exports: '_$s10Foundation11URLResourceVSeAAMc', '_$s10Foundation12CharacterSetV10isSuperset2ofSbAC_tF', '_$s10Foundation12CharacterSetV11descriptionSSvg', '_$s10Foundation12CharacterSetV11descriptionSSvpMV', '_$s10Foundation12CharacterSetV11subtractingyA2CF', '_$s10Foundation12CharacterSetV11whitespacesACvgZ', - '_$s10Foundation12CharacterSetV12charactersInACSNys7UnicodeO6ScalarVG_tcfC', + '_$s10Foundation12CharacterSetV11whitespacesACvpZMV', '_$s10Foundation12CharacterSetV12charactersInACSNys7UnicodeO6ScalarVG_tcfC', '_$s10Foundation12CharacterSetV12charactersInACSSh_tcfC', '_$s10Foundation12CharacterSetV12charactersInACSnys7UnicodeO6ScalarVG_tcfC', '_$s10Foundation12CharacterSetV12intersectionyA2CF', '_$s10Foundation12CharacterSetV13alphanumericsACvgZ', - '_$s10Foundation12CharacterSetV13decimalDigitsACvgZ', '_$s10Foundation12CharacterSetV13decomposablesACvgZ', - '_$s10Foundation12CharacterSetV14contentsOfFileACSgSSh_tcfC', - '_$s10Foundation12CharacterSetV14urlHostAllowedACvgZ', '_$s10Foundation12CharacterSetV14urlPathAllowedACvgZ', - '_$s10Foundation12CharacterSetV14urlUserAllowedACvgZ', '_$s10Foundation12CharacterSetV15urlQueryAllowedACvgZ', + '_$s10Foundation12CharacterSetV13alphanumericsACvpZMV', '_$s10Foundation12CharacterSetV13decimalDigitsACvgZ', + '_$s10Foundation12CharacterSetV13decimalDigitsACvpZMV', '_$s10Foundation12CharacterSetV13decomposablesACvgZ', + '_$s10Foundation12CharacterSetV13decomposablesACvpZMV', '_$s10Foundation12CharacterSetV14contentsOfFileACSgSSh_tcfC', + '_$s10Foundation12CharacterSetV14urlHostAllowedACvgZ', '_$s10Foundation12CharacterSetV14urlHostAllowedACvpZMV', + '_$s10Foundation12CharacterSetV14urlPathAllowedACvgZ', '_$s10Foundation12CharacterSetV14urlPathAllowedACvpZMV', + '_$s10Foundation12CharacterSetV14urlUserAllowedACvgZ', '_$s10Foundation12CharacterSetV14urlUserAllowedACvpZMV', + '_$s10Foundation12CharacterSetV15urlQueryAllowedACvgZ', '_$s10Foundation12CharacterSetV15urlQueryAllowedACvpZMV', '_$s10Foundation12CharacterSetV16debugDescriptionSSvg', '_$s10Foundation12CharacterSetV16debugDescriptionSSvpMV', '_$s10Foundation12CharacterSetV16formIntersectionyyACF', '_$s10Foundation12CharacterSetV16lowercaseLettersACvgZ', - '_$s10Foundation12CharacterSetV16uppercaseLettersACvgZ', '_$s10Foundation12CharacterSetV17controlCharactersACvgZ', + '_$s10Foundation12CharacterSetV16lowercaseLettersACvpZMV', + '_$s10Foundation12CharacterSetV16uppercaseLettersACvgZ', '_$s10Foundation12CharacterSetV16uppercaseLettersACvpZMV', + '_$s10Foundation12CharacterSetV17controlCharactersACvgZ', + '_$s10Foundation12CharacterSetV17controlCharactersACvpZMV', '_$s10Foundation12CharacterSetV17illegalCharactersACvgZ', + '_$s10Foundation12CharacterSetV17illegalCharactersACvpZMV', '_$s10Foundation12CharacterSetV17nonBaseCharactersACvgZ', + '_$s10Foundation12CharacterSetV17nonBaseCharactersACvpZMV', '_$s10Foundation12CharacterSetV18_getObjectiveCTypeypXpyFZ', '_$s10Foundation12CharacterSetV18capitalizedLettersACvgZ', + '_$s10Foundation12CharacterSetV18capitalizedLettersACvpZMV', '_$s10Foundation12CharacterSetV18urlFragmentAllowedACvgZ', + '_$s10Foundation12CharacterSetV18urlFragmentAllowedACvpZMV', '_$s10Foundation12CharacterSetV18urlPasswordAllowedACvgZ', + '_$s10Foundation12CharacterSetV18urlPasswordAllowedACvpZMV', '_$s10Foundation12CharacterSetV19_bridgeToObjectiveCSo011NSCharacterC0CyF', '_$s10Foundation12CharacterSetV19symmetricDifferenceyA2CF', '_$s10Foundation12CharacterSetV20bitmapRepresentationAA4DataVvg', '_$s10Foundation12CharacterSetV20bitmapRepresentationAA4DataVvpMV', '_$s10Foundation12CharacterSetV20bitmapRepresentationAcA4DataVh_tcfC', '_$s10Foundation12CharacterSetV21punctuationCharactersACvgZ', + '_$s10Foundation12CharacterSetV21punctuationCharactersACvpZMV', '_$s10Foundation12CharacterSetV22whitespacesAndNewlinesACvgZ', + '_$s10Foundation12CharacterSetV22whitespacesAndNewlinesACvpZMV', '_$s10Foundation12CharacterSetV23formSymmetricDifferenceyyACF', '_$s10Foundation12CharacterSetV26_forceBridgeFromObjectiveC_6resultySo011NSCharacterC0C_ACSgztFZ', '_$s10Foundation12CharacterSetV2eeoiySbAC_ACtFZ', '_$s10Foundation12CharacterSetV34_conditionallyBridgeFromObjectiveC_6resultSbSo011NSCharacterC0C_ACSgztFZ', @@ -1744,11 +1583,13 @@ exports: '_$s10Foundation12CharacterSetV6remove12charactersInySnys7UnicodeO6ScalarVG_tF', '_$s10Foundation12CharacterSetV6removeys7UnicodeO6ScalarVSgAHF', '_$s10Foundation12CharacterSetV6update4withs7UnicodeO6ScalarVSgAI_tF', - '_$s10Foundation12CharacterSetV7lettersACvgZ', '_$s10Foundation12CharacterSetV7symbolsACvgZ', + '_$s10Foundation12CharacterSetV7lettersACvgZ', '_$s10Foundation12CharacterSetV7lettersACvpZMV', + '_$s10Foundation12CharacterSetV7symbolsACvgZ', '_$s10Foundation12CharacterSetV7symbolsACvpZMV', '_$s10Foundation12CharacterSetV8containsySbs7UnicodeO6ScalarVF', '_$s10Foundation12CharacterSetV8invertedACvg', '_$s10Foundation12CharacterSetV8invertedACvpMV', - '_$s10Foundation12CharacterSetV8newlinesACvgZ', '_$s10Foundation12CharacterSetV8subtractyyACF', - '_$s10Foundation12CharacterSetV9formUnionyyACF', '_$s10Foundation12CharacterSetV9hasMember7inPlaneSbs5UInt8V_tF', + '_$s10Foundation12CharacterSetV8newlinesACvgZ', '_$s10Foundation12CharacterSetV8newlinesACvpZMV', + '_$s10Foundation12CharacterSetV8subtractyyACF', '_$s10Foundation12CharacterSetV9formUnionyyACF', + '_$s10Foundation12CharacterSetV9hasMember7inPlaneSbs5UInt8V_tF', '_$s10Foundation12CharacterSetV9hashValueSivg', '_$s10Foundation12CharacterSetV9hashValueSivpMV', '_$s10Foundation12CharacterSetVAA20ReferenceConvertibleAAMc', '_$s10Foundation12CharacterSetVAA20ReferenceConvertibleAAWP', @@ -1819,6 +1660,13 @@ exports: '_$s10Foundation12DateIntervalVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation12DateIntervalVs23CustomStringConvertibleAAMc', '_$s10Foundation12DateIntervalVs28CustomDebugStringConvertibleAAMc', + '_$s10Foundation12ICULegacyKeyV2eeoiySbAC_ACtFZ', '_$s10Foundation12ICULegacyKeyV3keySSvg', + '_$s10Foundation12ICULegacyKeyV3keySSvpMV', '_$s10Foundation12ICULegacyKeyV4hash4intoys6HasherVz_tF', + '_$s10Foundation12ICULegacyKeyV9hashValueSivg', '_$s10Foundation12ICULegacyKeyV9hashValueSivpMV', + '_$s10Foundation12ICULegacyKeyVMa', '_$s10Foundation12ICULegacyKeyVMn', + '_$s10Foundation12ICULegacyKeyVN', '_$s10Foundation12ICULegacyKeyVSHAAMc', + '_$s10Foundation12ICULegacyKeyVSQAAMc', '_$s10Foundation12ICULegacyKeyVyACSScfC', + '_$s10Foundation12NSDecimalAddySo18NSCalculationErrorVSpySo0B0aG_SPyAFGAHSo14NSRoundingModeVtF', '_$s10Foundation12NotificationV11descriptionSSvg', '_$s10Foundation12NotificationV11descriptionSSvpMV', '_$s10Foundation12NotificationV12customMirrors0D0Vvg', '_$s10Foundation12NotificationV12customMirrors0D0VvpMV', '_$s10Foundation12NotificationV16debugDescriptionSSvg', '_$s10Foundation12NotificationV16debugDescriptionSSvpMV', @@ -1871,22 +1719,43 @@ exports: '_$s10Foundation12URLQueryItemVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation12URLQueryItemVs23CustomStringConvertibleAAMc', '_$s10Foundation12URLQueryItemVs28CustomDebugStringConvertibleAAMc', - '_$s10Foundation12_KeyPaths_v3V12arrayLiteralACyxGs07PartialB4PathCyxGd_tcfC', - '_$s10Foundation12_KeyPaths_v3V12intersectionyACyxGAEF', '_$s10Foundation12_KeyPaths_v3V16formIntersectionyyACyxGF', - '_$s10Foundation12_KeyPaths_v3V19symmetricDifferenceyACyxGAEnF', - '_$s10Foundation12_KeyPaths_v3V23formSymmetricDifferenceyyACyxGnF', - '_$s10Foundation12_KeyPaths_v3V2eeoiySbACyxG_AEtFZ', '_$s10Foundation12_KeyPaths_v3V4hash4intoys6HasherVz_tF', - '_$s10Foundation12_KeyPaths_v3V5unionyACyxGAEnF', '_$s10Foundation12_KeyPaths_v3V6insertySb8inserted_s07PartialB4PathCyxG17memberAfterInserttAHnF', - '_$s10Foundation12_KeyPaths_v3V6removeys07PartialB4PathCyxGSgAGF', - '_$s10Foundation12_KeyPaths_v3V6update4withs07PartialB4PathCyxGSgAHn_tF', - '_$s10Foundation12_KeyPaths_v3V7isEmptySbvg', '_$s10Foundation12_KeyPaths_v3V7isEmptySbvpMV', - '_$s10Foundation12_KeyPaths_v3V8containsySbs07PartialB4PathCyxGF', - '_$s10Foundation12_KeyPaths_v3V9formUnionyyACyxGnF', '_$s10Foundation12_KeyPaths_v3V9hashValueSivg', - '_$s10Foundation12_KeyPaths_v3V9hashValueSivpMV', '_$s10Foundation12_KeyPaths_v3VA2A012_Observable_D0RzlE9dependentACyxGAF_tcfC', - '_$s10Foundation12_KeyPaths_v3VACyxGycfC', '_$s10Foundation12_KeyPaths_v3VMa', - '_$s10Foundation12_KeyPaths_v3VMn', '_$s10Foundation12_KeyPaths_v3VyACyxGqd__ncSTRd__s07PartialB4PathCyxG7ElementRtd__lufC', - '_$s10Foundation12_KeyPaths_v3VyxGSHAAMc', '_$s10Foundation12_KeyPaths_v3VyxGSQAAMc', - '_$s10Foundation12_KeyPaths_v3VyxGs10SetAlgebraAAMc', '_$s10Foundation12_KeyPaths_v3VyxGs25ExpressibleByArrayLiteralAAMc', + '_$s10Foundation12WeekendRangeV2eeoiySbAC_ACtFZ', '_$s10Foundation12WeekendRangeV3endSivM', + '_$s10Foundation12WeekendRangeV3endSivg', '_$s10Foundation12WeekendRangeV3endSivpMV', + '_$s10Foundation12WeekendRangeV3endSivs', '_$s10Foundation12WeekendRangeV4hash4intoys6HasherVz_tF', + '_$s10Foundation12WeekendRangeV5startSivM', '_$s10Foundation12WeekendRangeV5startSivg', + '_$s10Foundation12WeekendRangeV5startSivpMV', '_$s10Foundation12WeekendRangeV5startSivs', + '_$s10Foundation12WeekendRangeV9ceaseTimeSdSgvM', '_$s10Foundation12WeekendRangeV9ceaseTimeSdSgvg', + '_$s10Foundation12WeekendRangeV9ceaseTimeSdSgvpMV', '_$s10Foundation12WeekendRangeV9ceaseTimeSdSgvs', + '_$s10Foundation12WeekendRangeV9hashValueSivg', '_$s10Foundation12WeekendRangeV9hashValueSivpMV', + '_$s10Foundation12WeekendRangeV9onsetTime05ceaseE05start3endACSdSg_AHS2itcfC', + '_$s10Foundation12WeekendRangeV9onsetTime05ceaseE05start3endACSdSg_AHS2itcfcfA0_', + '_$s10Foundation12WeekendRangeV9onsetTime05ceaseE05start3endACSdSg_AHS2itcfcfA_', + '_$s10Foundation12WeekendRangeV9onsetTimeSdSgvM', '_$s10Foundation12WeekendRangeV9onsetTimeSdSgvg', + '_$s10Foundation12WeekendRangeV9onsetTimeSdSgvpMV', '_$s10Foundation12WeekendRangeV9onsetTimeSdSgvs', + '_$s10Foundation12WeekendRangeVMa', '_$s10Foundation12WeekendRangeVMn', + '_$s10Foundation12WeekendRangeVN', '_$s10Foundation12WeekendRangeVSHAAMc', + '_$s10Foundation12WeekendRangeVSQAAMc', '_$s10Foundation12_TimeZoneGMTC011secondsFromD03forSiAA4DateV_tF', + '_$s10Foundation12_TimeZoneGMTC011secondsFromD0ACSgSi_tcfC', + '_$s10Foundation12_TimeZoneGMTC011secondsFromD0ACSgSi_tcfCTj', + '_$s10Foundation12_TimeZoneGMTC011secondsFromD0ACSgSi_tcfCTq', + '_$s10Foundation12_TimeZoneGMTC011secondsFromD0ACSgSi_tcfc', + '_$s10Foundation12_TimeZoneGMTC014daylightSavingB6Offset3forSdAA4DateV_tF', + '_$s10Foundation12_TimeZoneGMTC016isDaylightSavingB03forSbAA4DateV_tF', + '_$s10Foundation12_TimeZoneGMTC018nextDaylightSavingB10Transition5afterAA4DateVSgAG_tF', + '_$s10Foundation12_TimeZoneGMTC020rawAndDaylightSavingB6Offset3for08repeatedB6Policy07skippedbL0Si0eI0_Sd08daylighthI0tAA4DateV_AA0bC0V0ghbL0OAOtF', + '_$s10Foundation12_TimeZoneGMTC10identifierACSgSS_tcfC', '_$s10Foundation12_TimeZoneGMTC10identifierACSgSS_tcfCTj', + '_$s10Foundation12_TimeZoneGMTC10identifierACSgSS_tcfCTq', + '_$s10Foundation12_TimeZoneGMTC10identifierACSgSS_tcfc', '_$s10Foundation12_TimeZoneGMTC10identifierSSvg', + '_$s10Foundation12_TimeZoneGMTC10identifierSSvpMV', '_$s10Foundation12_TimeZoneGMTC12abbreviation3forSSSgAA4DateV_tF', + '_$s10Foundation12_TimeZoneGMTC12abbreviation3forSSSgSi_tFZ', + '_$s10Foundation12_TimeZoneGMTC13localizedName3for6localeSSSgSo06NSTimecF5StyleV_AA6LocaleVSgtF', + '_$s10Foundation12_TimeZoneGMTC16debugDescriptionSSvg', '_$s10Foundation12_TimeZoneGMTC16debugDescriptionSSvpMV', + '_$s10Foundation12_TimeZoneGMTCAA01_bC8ProtocolAAMc', '_$s10Foundation12_TimeZoneGMTCAA01_bC8ProtocolAAWP', + '_$s10Foundation12_TimeZoneGMTCMa', '_$s10Foundation12_TimeZoneGMTCMm', + '_$s10Foundation12_TimeZoneGMTCMn', '_$s10Foundation12_TimeZoneGMTCMo', + '_$s10Foundation12_TimeZoneGMTCMu', '_$s10Foundation12_TimeZoneGMTCN', + '_$s10Foundation12_TimeZoneGMTCfD', '_$s10Foundation12_TimeZoneGMTCfd', + '_$s10Foundation12_TimeZoneGMTCs28CustomDebugStringConvertibleAAMc', '_$s10Foundation13CustomNSErrorMp', '_$s10Foundation13CustomNSErrorP11errorDomainSSvgZTj', '_$s10Foundation13CustomNSErrorP11errorDomainSSvgZTq', '_$s10Foundation13CustomNSErrorP13errorUserInfoSDySSypGvgTj', '_$s10Foundation13CustomNSErrorP13errorUserInfoSDySSypGvgTq', @@ -1906,25 +1775,28 @@ exports: '_$s10Foundation13ParseStrategyPAAE5fixed6format8timeZone6localeAA4DateVABVAI12FormatStringV_AA04TimeG0VAA6LocaleVSgtAJRszrlFZ', '_$s10Foundation13ParseStrategyPSETb', '_$s10Foundation13ParseStrategyPSHTb', '_$s10Foundation13ParseStrategyPSeTb', '_$s10Foundation13ParseStrategyTL', - '_$s10Foundation13TermOfAddressV19_bridgeToObjectiveCSo06NSTermcD0CyF', + '_$s10Foundation13SendableOSLogVMa', '_$s10Foundation13SendableOSLogVMn', + '_$s10Foundation13SendableOSLogVN', '_$s10Foundation13TermOfAddressV11currentUserACvgZ', + '_$s10Foundation13TermOfAddressV11currentUserACvpZMV', '_$s10Foundation13TermOfAddressV19_bridgeToObjectiveCSo06NSTermcD0CyF', '_$s10Foundation13TermOfAddressV26_forceBridgeFromObjectiveC_6resultySo06NSTermcD0C_ACSgztFZ', '_$s10Foundation13TermOfAddressV2eeoiySbAC_ACtFZ', '_$s10Foundation13TermOfAddressV34_conditionallyBridgeFromObjectiveC_6resultSbSo06NSTermcD0C_ACSgztFZ', '_$s10Foundation13TermOfAddressV36_unconditionallyBridgeFromObjectiveCyACSo06NSTermcD0CSgFZ', '_$s10Foundation13TermOfAddressV4fromACs7Decoder_p_tKcfC', '_$s10Foundation13TermOfAddressV4hash4intoys6HasherVz_tF', '_$s10Foundation13TermOfAddressV6encode2toys7Encoder_p_tKF', - '_$s10Foundation13TermOfAddressV7neutralACvgZ', '_$s10Foundation13TermOfAddressV8feminineACvgZ', + '_$s10Foundation13TermOfAddressV7neutralACvgZ', '_$s10Foundation13TermOfAddressV7neutralACvpZMV', + '_$s10Foundation13TermOfAddressV8feminineACvgZ', '_$s10Foundation13TermOfAddressV8feminineACvpZMV', '_$s10Foundation13TermOfAddressV8languageAA6LocaleV8LanguageVSgvg', '_$s10Foundation13TermOfAddressV8languageAA6LocaleV8LanguageVSgvpMV', '_$s10Foundation13TermOfAddressV8pronounsSayAA10MorphologyV7PronounVGvg', '_$s10Foundation13TermOfAddressV8pronounsSayAA10MorphologyV7PronounVGvpMV', '_$s10Foundation13TermOfAddressV9hashValueSivg', '_$s10Foundation13TermOfAddressV9hashValueSivpMV', '_$s10Foundation13TermOfAddressV9localized8language8pronounsAcA6LocaleV8LanguageV_SayAA10MorphologyV7PronounVGtFZ', - '_$s10Foundation13TermOfAddressV9masculineACvgZ', '_$s10Foundation13TermOfAddressVMa', - '_$s10Foundation13TermOfAddressVMn', '_$s10Foundation13TermOfAddressVN', - '_$s10Foundation13TermOfAddressVSEAAMc', '_$s10Foundation13TermOfAddressVSHAAMc', - '_$s10Foundation13TermOfAddressVSQAAMc', '_$s10Foundation13TermOfAddressVSeAAMc', - '_$s10Foundation13TermOfAddressVs21_ObjectiveCBridgeableAAMc', + '_$s10Foundation13TermOfAddressV9masculineACvgZ', '_$s10Foundation13TermOfAddressV9masculineACvpZMV', + '_$s10Foundation13TermOfAddressVMa', '_$s10Foundation13TermOfAddressVMn', + '_$s10Foundation13TermOfAddressVN', '_$s10Foundation13TermOfAddressVSEAAMc', + '_$s10Foundation13TermOfAddressVSHAAMc', '_$s10Foundation13TermOfAddressVSQAAMc', + '_$s10Foundation13TermOfAddressVSeAAMc', '_$s10Foundation13TermOfAddressVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation13URLComponentsV10queryItemsSayAA12URLQueryItemVGSgvM', '_$s10Foundation13URLComponentsV10queryItemsSayAA12URLQueryItemVGSgvg', '_$s10Foundation13URLComponentsV10queryItemsSayAA12URLQueryItemVGSgvpMV', @@ -2030,7 +1902,8 @@ exports: '_$s10Foundation13__DataStorageC12replaceBytes2in4with6lengthySnySiG_SVSgSitF', '_$s10Foundation13__DataStorageC12replaceBytes2in4with6lengthySo8_NSRangeV_SVSgSitF', '_$s10Foundation13__DataStorageC14enumerateBytes2in_ySnySiG_ySRys5UInt8VG_SiSbztXEtF', - '_$s10Foundation13__DataStorageC14vmOpsThresholdSivgZ', '_$s10Foundation13__DataStorageC15customReference6offsetACSo6NSDataC_SitcfC', + '_$s10Foundation13__DataStorageC14vmOpsThresholdSivgZ', '_$s10Foundation13__DataStorageC14vmOpsThresholdSivpZMV', + '_$s10Foundation13__DataStorageC15customReference6offsetACSo6NSDataC_SitcfC', '_$s10Foundation13__DataStorageC15customReference6offsetACSo6NSDataC_Sitcfc', '_$s10Foundation13__DataStorageC15withUnsafeBytes2in5applyxSnySiG_xSWKXEtKlF', '_$s10Foundation13__DataStorageC16bridgedReferenceySo6NSDataCSnySiGF', @@ -2071,12 +1944,13 @@ exports: '_$s10Foundation13__DataStorageC7_lengthSivpMV', '_$s10Foundation13__DataStorageC7_lengthSivs', '_$s10Foundation13__DataStorageC7_offsetSivM', '_$s10Foundation13__DataStorageC7_offsetSivg', '_$s10Foundation13__DataStorageC7_offsetSivpMV', '_$s10Foundation13__DataStorageC7_offsetSivs', - '_$s10Foundation13__DataStorageC7maxSizeSivgZ', '_$s10Foundation13__DataStorageC8capacityACSi_tcfC', - '_$s10Foundation13__DataStorageC8capacityACSi_tcfCTj', '_$s10Foundation13__DataStorageC8capacityACSi_tcfCTq', - '_$s10Foundation13__DataStorageC8capacityACSi_tcfc', '_$s10Foundation13__DataStorageC8capacitySivg', - '_$s10Foundation13__DataStorageC8capacitySivpMV', '_$s10Foundation13__DataStorageC9_capacitySivM', - '_$s10Foundation13__DataStorageC9_capacitySivg', '_$s10Foundation13__DataStorageC9_capacitySivpMV', - '_$s10Foundation13__DataStorageC9_capacitySivs', '_$s10Foundation13__DataStorageC9copyBytes2to4fromySv_SnySiGtF', + '_$s10Foundation13__DataStorageC7maxSizeSivgZ', '_$s10Foundation13__DataStorageC7maxSizeSivpZMV', + '_$s10Foundation13__DataStorageC8capacityACSi_tcfC', '_$s10Foundation13__DataStorageC8capacityACSi_tcfCTj', + '_$s10Foundation13__DataStorageC8capacityACSi_tcfCTq', '_$s10Foundation13__DataStorageC8capacityACSi_tcfc', + '_$s10Foundation13__DataStorageC8capacitySivg', '_$s10Foundation13__DataStorageC8capacitySivpMV', + '_$s10Foundation13__DataStorageC9_capacitySivM', '_$s10Foundation13__DataStorageC9_capacitySivg', + '_$s10Foundation13__DataStorageC9_capacitySivpMV', '_$s10Foundation13__DataStorageC9_capacitySivs', + '_$s10Foundation13__DataStorageC9copyBytes2to4fromySv_SnySiGtF', '_$s10Foundation13__DataStorageC9setLengthyySiF', '_$s10Foundation13__DataStorageCMa', '_$s10Foundation13__DataStorageCMm', '_$s10Foundation13__DataStorageCMn', '_$s10Foundation13__DataStorageCMo', '_$s10Foundation13__DataStorageCMu', @@ -2126,6 +2000,8 @@ exports: '_$s10Foundation14DateComponentsV4hash4intoys6HasherVz_tF', '_$s10Foundation14DateComponentsV4hourSiSgvM', '_$s10Foundation14DateComponentsV4hourSiSgvg', '_$s10Foundation14DateComponentsV4hourSiSgvpMV', '_$s10Foundation14DateComponentsV4hourSiSgvs', + '_$s10Foundation14DateComponentsV4weekSiSgvM', '_$s10Foundation14DateComponentsV4weekSiSgvg', + '_$s10Foundation14DateComponentsV4weekSiSgvpMV', '_$s10Foundation14DateComponentsV4weekSiSgvs', '_$s10Foundation14DateComponentsV4yearSiSgvM', '_$s10Foundation14DateComponentsV4yearSiSgvg', '_$s10Foundation14DateComponentsV4yearSiSgvpMV', '_$s10Foundation14DateComponentsV4yearSiSgvs', '_$s10Foundation14DateComponentsV5monthSiSgvM', '_$s10Foundation14DateComponentsV5monthSiSgvg', @@ -2150,6 +2026,9 @@ exports: '_$s10Foundation14DateComponentsV8timeZoneAA04TimeE0VSgvg', '_$s10Foundation14DateComponentsV8timeZoneAA04TimeE0VSgvpMV', '_$s10Foundation14DateComponentsV8timeZoneAA04TimeE0VSgvs', + '_$s10Foundation14DateComponentsV9component5valueACSgAA8CalendarV9ComponentO_SitcfC', + '_$s10Foundation14DateComponentsV9dayOfYearSiSgvM', '_$s10Foundation14DateComponentsV9dayOfYearSiSgvg', + '_$s10Foundation14DateComponentsV9dayOfYearSiSgvpMV', '_$s10Foundation14DateComponentsV9dayOfYearSiSgvs', '_$s10Foundation14DateComponentsV9hashValueSivg', '_$s10Foundation14DateComponentsV9hashValueSivpMV', '_$s10Foundation14DateComponentsVAA20ReferenceConvertibleAAMc', '_$s10Foundation14DateComponentsVAA20ReferenceConvertibleAAWP', @@ -2160,11 +2039,15 @@ exports: '_$s10Foundation14DateComponentsVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation14DateComponentsVs23CustomStringConvertibleAAMc', '_$s10Foundation14DateComponentsVs28CustomDebugStringConvertibleAAMc', - '_$s10Foundation14InflectionRuleO10canInflect8languageSbSS_tFZ', + '_$s10Foundation14FormatterCacheV16removeAllObjectsyyF', '_$s10Foundation14FormatterCacheV9formatter3for7creatorq_x_q_yKXEtKF', + '_$s10Foundation14FormatterCacheVACyxq_GycfC', '_$s10Foundation14FormatterCacheVMa', + '_$s10Foundation14FormatterCacheVMn', '_$s10Foundation14FormatterCacheVyq_Sgxcig', + '_$s10Foundation14FormatterCacheVyq_SgxcipMV', '_$s10Foundation14InflectionRuleO10canInflect8languageSbSS_tFZ', '_$s10Foundation14InflectionRuleO10morphologyAcA10MorphologyV_tcfC', '_$s10Foundation14InflectionRuleO19_bridgeToObjectiveCSo012NSInflectionC0CyF', '_$s10Foundation14InflectionRuleO26_forceBridgeFromObjectiveC_6resultySo012NSInflectionC0C_ACSgztFZ', '_$s10Foundation14InflectionRuleO2eeoiySbAC_ACtFZ', '_$s10Foundation14InflectionRuleO31canInflectPreferredLocalizationSbvgZ', + '_$s10Foundation14InflectionRuleO31canInflectPreferredLocalizationSbvpZMV', '_$s10Foundation14InflectionRuleO34_conditionallyBridgeFromObjectiveC_6resultSbSo012NSInflectionC0C_ACSgztFZ', '_$s10Foundation14InflectionRuleO36_unconditionallyBridgeFromObjectiveCyACSo012NSInflectionC0CSgFZ', '_$s10Foundation14InflectionRuleO4fromACs7Decoder_p_tKcfC', @@ -2192,11 +2075,17 @@ exports: '_$s10Foundation14LocalizedErrorPAAE18recoverySuggestionSSSgvg', '_$s10Foundation14LocalizedErrorPAAE18recoverySuggestionSSSgvpMV', '_$s10Foundation14LocalizedErrorPs0C0Tb', '_$s10Foundation14LocalizedErrorTL', - '_$s10Foundation14PredicateErrorV12invalidInputACvgZ', '_$s10Foundation14PredicateErrorV16debugDescriptionSSvg', + '_$s10Foundation14NSDecimalPowerySo18NSCalculationErrorVSpySo0B0aG_SPyAFGSiSo14NSRoundingModeVtF', + '_$s10Foundation14NSDecimalRoundyySpySo0B0aG_SPyADGSiSo14NSRoundingModeVtF', + '_$s10Foundation14PredicateErrorV12invalidInputACvgZ', '_$s10Foundation14PredicateErrorV12invalidInputACvpZMV', + '_$s10Foundation14PredicateErrorV16debugDescriptionSSvg', '_$s10Foundation14PredicateErrorV16debugDescriptionSSvpMV', '_$s10Foundation14PredicateErrorV16forceCastFailureACvgZ', + '_$s10Foundation14PredicateErrorV16forceCastFailureACvpZMV', '_$s10Foundation14PredicateErrorV17undefinedVariableACvgZ', + '_$s10Foundation14PredicateErrorV17undefinedVariableACvpZMV', '_$s10Foundation14PredicateErrorV18forceUnwrapFailureACvgZ', + '_$s10Foundation14PredicateErrorV18forceUnwrapFailureACvpZMV', '_$s10Foundation14PredicateErrorV2eeoiySbAC_ACtFZ', '_$s10Foundation14PredicateErrorV4hash4intoys6HasherVz_tF', '_$s10Foundation14PredicateErrorV9hashValueSivg', '_$s10Foundation14PredicateErrorV9hashValueSivpMV', '_$s10Foundation14PredicateErrorVMa', '_$s10Foundation14PredicateErrorVMn', @@ -2268,18 +2157,8 @@ exports: '_$s10Foundation14SortDescriptorVyxGAA0B10ComparatorAAWP', '_$s10Foundation14SortDescriptorVyxGSEAAMc', '_$s10Foundation14SortDescriptorVyxGSHAAMc', '_$s10Foundation14SortDescriptorVyxGSQAAMc', '_$s10Foundation14SortDescriptorVyxGSeAAMc', - '_$s10Foundation14_Observable_v3Mp', '_$s10Foundation14_Observable_v3P12dependencies2ofAA010_KeyPaths_C0VyxGs07PartialF4PathCyxG_tFZTj', - '_$s10Foundation14_Observable_v3P12dependencies2ofAA010_KeyPaths_C0VyxGs07PartialF4PathCyxG_tFZTq', - '_$s10Foundation14_Observable_v3P12transactions3for9isolationAA022_ObservedTransactions_C0Vyxqd__GAA010_KeyPaths_C0VyxG_qd__tScARd__lFTj', - '_$s10Foundation14_Observable_v3P12transactions3for9isolationAA022_ObservedTransactions_C0Vyxqd__GAA010_KeyPaths_C0VyxG_qd__tScARd__lFTq', - '_$s10Foundation14_Observable_v3P7changes3forAA017_ObservedChanges_C0Vyxqd__Gs7KeyPathCyxqd__G_ts8SendableRd__lFTj', - '_$s10Foundation14_Observable_v3P7changes3forAA017_ObservedChanges_C0Vyxqd__Gs7KeyPathCyxqd__G_ts8SendableRd__lFTq', - '_$s10Foundation14_Observable_v3PAAE12dependencies2ofAA010_KeyPaths_C0VyxGs07PartialF4PathCyxG_tFZ', - '_$s10Foundation14_Observable_v3PAAE12transactions3for9isolationAA022_ObservedTransactions_C0Vyxqd_0_Gs7KeyPathCyxqd__G_qd_0_tScARd_0_r0_lF', - '_$s10Foundation14_Observable_v3PAAE12transactions3forAA022_ObservedTransactions_C0VyxScMGAA010_KeyPaths_C0VyxG_tF', - '_$s10Foundation14_Observable_v3PAAE12transactions3forAA022_ObservedTransactions_C0VyxScMGs7KeyPathCyxqd__G_tlF', - '_$s10Foundation14_Observable_v3TL', '_$s10Foundation15AffineTransformV11descriptionSSvg', - '_$s10Foundation15AffineTransformV11descriptionSSvpMV', '_$s10Foundation15AffineTransformV14translationByX3byYAC12CoreGraphics7CGFloatV_AHtcfC', + '_$s10Foundation15AffineTransformV11descriptionSSvg', '_$s10Foundation15AffineTransformV11descriptionSSvpMV', + '_$s10Foundation15AffineTransformV14translationByX3byYAC12CoreGraphics7CGFloatV_AHtcfC', '_$s10Foundation15AffineTransformV16debugDescriptionSSvg', '_$s10Foundation15AffineTransformV16debugDescriptionSSvpMV', '_$s10Foundation15AffineTransformV17rotationByDegreesAC12CoreGraphics7CGFloatV_tcfC', @@ -2323,7 +2202,8 @@ exports: '_$s10Foundation15AffineTransformV6invertyyF', '_$s10Foundation15AffineTransformV6rotate9byDegreesy12CoreGraphics7CGFloatV_tF', '_$s10Foundation15AffineTransformV6rotate9byRadiansy12CoreGraphics7CGFloatV_tF', '_$s10Foundation15AffineTransformV7prependyyACF', '_$s10Foundation15AffineTransformV8identityACvgZ', - '_$s10Foundation15AffineTransformV8invertedACSgyF', '_$s10Foundation15AffineTransformV8scaleByX3byYAC12CoreGraphics7CGFloatV_AHtcfC', + '_$s10Foundation15AffineTransformV8identityACvpZMV', '_$s10Foundation15AffineTransformV8invertedACSgyF', + '_$s10Foundation15AffineTransformV8scaleByX3byYAC12CoreGraphics7CGFloatV_AHtcfC', '_$s10Foundation15AffineTransformV9hashValueSivg', '_$s10Foundation15AffineTransformV9hashValueSivpMV', '_$s10Foundation15AffineTransformV9transformySo6CGSizeVAFF', '_$s10Foundation15AffineTransformV9transformySo7CGPointVAFF', @@ -2338,7 +2218,9 @@ exports: '_$s10Foundation15AffineTransformVs23CustomStringConvertibleAAMc', '_$s10Foundation15AffineTransformVs28CustomDebugStringConvertibleAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV010MorphologyB0O12markdownNameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV010MorphologyB0O12markdownNameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV010MorphologyB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV010MorphologyB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV010MorphologyB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV010MorphologyB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV010MorphologyB0OAA28DecodableAttributedStringKeyAAMc', @@ -2351,6 +2233,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV010MorphologyB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV010MorphologyB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV011MeasurementB0V4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV011MeasurementB0V4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV011MeasurementB0V9ComponentO4unityA2ImFWC', '_$s10Foundation15AttributeScopesO0A10AttributesV011MeasurementB0V9ComponentO5valueyA2ImFWC', '_$s10Foundation15AttributeScopesO0A10AttributesV011MeasurementB0V9ComponentO8rawValueAISgSi_tcfC', @@ -2390,6 +2273,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V06SymbolB0O0G0OSYAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V06SymbolB0O0G0OSeAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V06SymbolB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V06SymbolB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V06SymbolB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V06SymbolB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V06SymbolB0OAA28DecodableAttributedStringKeyAAMc', @@ -2413,6 +2297,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V0e4PartB0O0eG0OSYAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V0e4PartB0O0eG0OSeAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V0e4PartB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V0e4PartB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V0e4PartB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V0e4PartB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV012NumberFormatD0V0e4PartB0OAA28DecodableAttributedStringKeyAAMc', @@ -2455,6 +2340,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV013DurationFieldB0O0F0OSYAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV013DurationFieldB0O0F0OSeAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV013DurationFieldB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV013DurationFieldB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV013DurationFieldB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV013DurationFieldB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV013DurationFieldB0OAA28DecodableAttributedStringKeyAAMc', @@ -2465,7 +2351,9 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV013DurationFieldB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV013DurationFieldB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV014InflectionRuleB0O12markdownNameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV014InflectionRuleB0O12markdownNameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV014InflectionRuleB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV014InflectionRuleB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV014InflectionRuleB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV014InflectionRuleB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV014InflectionRuleB0OAA28DecodableAttributedStringKeyAAMc', @@ -2478,7 +2366,9 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV014InflectionRuleB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV014InflectionRuleB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV015ReferentConceptB0O12markdownNameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV015ReferentConceptB0O12markdownNameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV015ReferentConceptB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV015ReferentConceptB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV015ReferentConceptB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV015ReferentConceptB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV015ReferentConceptB0OAA28DecodableAttributedStringKeyAAMc', @@ -2491,7 +2381,9 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV015ReferentConceptB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV015ReferentConceptB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV016AgreementConceptB0O12markdownNameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV016AgreementConceptB0O12markdownNameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV016AgreementConceptB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV016AgreementConceptB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV016AgreementConceptB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV016AgreementConceptB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV016AgreementConceptB0OAA28DecodableAttributedStringKeyAAMc', @@ -2504,6 +2396,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV016AgreementConceptB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV016AgreementConceptB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV016ReplacementIndexB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV016ReplacementIndexB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV016ReplacementIndexB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV016ReplacementIndexB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV016ReplacementIndexB0OAA28DecodableAttributedStringKeyAAMc', @@ -2514,7 +2407,9 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV016ReplacementIndexB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV016ReplacementIndexB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV017AgreementArgumentB0O12markdownNameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV017AgreementArgumentB0O12markdownNameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV017AgreementArgumentB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV017AgreementArgumentB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV017AgreementArgumentB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV017AgreementArgumentB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV017AgreementArgumentB0OAA28DecodableAttributedStringKeyAAMc', @@ -2527,7 +2422,9 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV017AgreementArgumentB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV017AgreementArgumentB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV018LanguageIdentifierB0O12markdownNameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV018LanguageIdentifierB0O12markdownNameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV018LanguageIdentifierB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV018LanguageIdentifierB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV018LanguageIdentifierB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV018LanguageIdentifierB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV018LanguageIdentifierB0OAA28DecodableAttributedStringKeyAAMc', @@ -2540,6 +2437,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV018LanguageIdentifierB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV018LanguageIdentifierB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV018PresentationIntentB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV018PresentationIntentB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV018PresentationIntentB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV018PresentationIntentB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV018PresentationIntentB0OAA28DecodableAttributedStringKeyAAMc', @@ -2568,6 +2466,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV019PersonNameComponentB0O0G0OSYAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV019PersonNameComponentB0O0G0OSeAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV019PersonNameComponentB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV019PersonNameComponentB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV019PersonNameComponentB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV019PersonNameComponentB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV019PersonNameComponentB0OAA28DecodableAttributedStringKeyAAMc', @@ -2580,6 +2479,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV019PersonNameComponentB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV019PersonNameComponentB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV020AlternateDescriptionB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV020AlternateDescriptionB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV020AlternateDescriptionB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV020AlternateDescriptionB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV020AlternateDescriptionB0OAA28DecodableAttributedStringKeyAAMc', @@ -2590,9 +2490,11 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV020AlternateDescriptionB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV020AlternateDescriptionB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0O12markdownNameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0O12markdownNameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0O14decodeMarkdown4fromAA16AttributedStringVs7Decoder_p_tKFZ', '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0O15objectiveCValue3forSo8NSObjectCAA16AttributedStringV_tKFZ', '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0O5value3forAA16AttributedStringVSo8NSObjectC_tKFZ', '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0OAA19AttributedStringKeyAAWP', @@ -2607,7 +2509,43 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0OMa', '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV021InflectionAlternativeB0ON', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O12markdownNameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O12markdownNameSSvpZMV', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O4nameSSvpZMV', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV04hashH0Sivg', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV04hashH0SivpMV', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV19_bridgeToObjectiveCSo011NSLocalizedfG4RuleCyF', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV26_forceBridgeFromObjectiveC_6resultySo011NSLocalizedfG4RuleC_AISgztFZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV2eeoiySbAI_AItFZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV34_conditionallyBridgeFromObjectiveC_6resultSbSo011NSLocalizedfG4RuleC_AISgztFZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV36_unconditionallyBridgeFromObjectiveCyAISo011NSLocalizedfG4RuleCSgFZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV4fromAIs7Decoder_p_tKcfC', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV4hash4intoys6HasherVz_tF', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV6encode2toys7Encoder_p_tKF', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV9automaticAIvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueV9automaticAIvpZMV', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueVMa', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueVMn', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueVN', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueVSEAAMc', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueVSHAAMc', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueVSQAAMc', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueVSeAAMc', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0O5ValueVs21_ObjectiveCBridgeableAAMc', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0OAA19AttributedStringKeyAAMc', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0OAA19AttributedStringKeyAAWP', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0OAA28DecodableAttributedStringKeyAAMc', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0OAA28DecodableAttributedStringKeyAAWP', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0OAA28EncodableAttributedStringKeyAAMc', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0OAA28EncodableAttributedStringKeyAAWP', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0OAA36MarkdownDecodableAttributedStringKeyAAMc', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0OAA36MarkdownDecodableAttributedStringKeyAAWP', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0OMa', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0OMn', + '_$s10Foundation15AttributeScopesO0A10AttributesV021LocalizedNumberFormatB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV022MarkdownSourcePositionB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV022MarkdownSourcePositionB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV022MarkdownSourcePositionB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV022MarkdownSourcePositionB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV022MarkdownSourcePositionB0OAA28DecodableAttributedStringKeyAAMc', @@ -2624,6 +2562,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V021localizedDateIntervalG0AG0eijgB0Ovg', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V021localizedDateIntervalG0AG0eijgB0OvpMV', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e11URLArgumentB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e11URLArgumentB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e11URLArgumentB0OAA010AttributedF3KeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e11URLArgumentB0OAA010AttributedF3KeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e11URLArgumentB0OAA019DecodableAttributedF3KeyAAMc', @@ -2634,6 +2573,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e11URLArgumentB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e11URLArgumentB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e12DateIntervalgB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e12DateIntervalgB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e12DateIntervalgB0OAA010AttributedF3KeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e12DateIntervalgB0OAA010AttributedF3KeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e12DateIntervalgB0OAA019DecodableAttributedF3KeyAAMc', @@ -2644,6 +2584,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e12DateIntervalgB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e12DateIntervalgB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e4DategB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e4DategB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e4DategB0OAA010AttributedF3KeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e4DategB0OAA010AttributedF3KeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e4DategB0OAA019DecodableAttributedF3KeyAAMc', @@ -2654,6 +2595,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e4DategB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e4DategB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e7NumericgB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e7NumericgB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e7NumericgB0O5ValueO04hashI0Sivg', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e7NumericgB0O5ValueO04hashI0SivpMV', '_$s10Foundation15AttributeScopesO0A10AttributesV023LocalizedStringArgumentD0V0e7NumericgB0O5ValueO2eeoiySbAK_AKtFZ', @@ -2689,6 +2631,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV023localizedStringArgumentD0AE09LocalizedfgD0VvpMV', '_$s10Foundation15AttributeScopesO0A10AttributesV024InlinePresentationIntentB0O15objectiveCValue3forSo8NSNumberCSo08NSInlinefG0V_tKFZ', '_$s10Foundation15AttributeScopesO0A10AttributesV024InlinePresentationIntentB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV024InlinePresentationIntentB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV024InlinePresentationIntentB0O5value3forSo08NSInlinefG0VSo8NSNumberC_tKFZ', '_$s10Foundation15AttributeScopesO0A10AttributesV024InlinePresentationIntentB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV024InlinePresentationIntentB0OAA19AttributedStringKeyAAWP', @@ -2702,7 +2645,9 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV024InlinePresentationIntentB0OMn', '_$s10Foundation15AttributeScopesO0A10AttributesV024InlinePresentationIntentB0ON', '_$s10Foundation15AttributeScopesO0A10AttributesV025AssumedFallbackInflectionB0O12markdownNameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV025AssumedFallbackInflectionB0O12markdownNameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV025AssumedFallbackInflectionB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV025AssumedFallbackInflectionB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV025AssumedFallbackInflectionB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV025AssumedFallbackInflectionB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV025AssumedFallbackInflectionB0OAA28DecodableAttributedStringKeyAAMc', @@ -2717,6 +2662,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV04LinkB0O15objectiveCValue3forSo8NSObjectCAA3URLV_tKFZ', '_$s10Foundation15AttributeScopesO0A10AttributesV04LinkB0O4nameSSvMZ', '_$s10Foundation15AttributeScopesO0A10AttributesV04LinkB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV04LinkB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV04LinkB0O4nameSSvsZ', '_$s10Foundation15AttributeScopesO0A10AttributesV04LinkB0O5value3forAA3URLVSo8NSObjectC_tKFZ', '_$s10Foundation15AttributeScopesO0A10AttributesV04LinkB0OAA19AttributedStringKeyAAMc', @@ -2753,6 +2699,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV09ByteCountB0O4UnitOSQAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV09ByteCountB0O4UnitOSeAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV09ByteCountB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV09ByteCountB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV09ByteCountB0O9ComponentO06actualeF0yA2ImFWC', '_$s10Foundation15AttributeScopesO0A10AttributesV09ByteCountB0O9ComponentO15spelledOutValueyA2ImFWC', '_$s10Foundation15AttributeScopesO0A10AttributesV09ByteCountB0O9ComponentO2eeoiySbAI_AItFZ', @@ -2810,6 +2757,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV09DateFieldB0O0F0OSQAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV09DateFieldB0O0F0OSeAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV09DateFieldB0O4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV09DateFieldB0O4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV09DateFieldB0OAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV09DateFieldB0OAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV09DateFieldB0OAA28DecodableAttributedStringKeyAAMc', @@ -2834,6 +2782,7 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV16replacementIndexAE011ReplacementfB0Ovg', '_$s10Foundation15AttributeScopesO0A10AttributesV16replacementIndexAE011ReplacementfB0OvpMV', '_$s10Foundation15AttributeScopesO0A10AttributesV17ImageURLAttributeO4nameSSvgZ', + '_$s10Foundation15AttributeScopesO0A10AttributesV17ImageURLAttributeO4nameSSvpZMV', '_$s10Foundation15AttributeScopesO0A10AttributesV17ImageURLAttributeOAA19AttributedStringKeyAAMc', '_$s10Foundation15AttributeScopesO0A10AttributesV17ImageURLAttributeOAA19AttributedStringKeyAAWP', '_$s10Foundation15AttributeScopesO0A10AttributesV17ImageURLAttributeOAA28DecodableAttributedStringKeyAAMc', @@ -2855,6 +2804,8 @@ exports: '_$s10Foundation15AttributeScopesO0A10AttributesV20alternateDescriptionAE09AlternatefB0OvpMV', '_$s10Foundation15AttributeScopesO0A10AttributesV21inflectionAlternativeAE010InflectionfB0Ovg', '_$s10Foundation15AttributeScopesO0A10AttributesV21inflectionAlternativeAE010InflectionfB0OvpMV', + '_$s10Foundation15AttributeScopesO0A10AttributesV21localizedNumberFormatAE09LocalizedfgB0Ovg', + '_$s10Foundation15AttributeScopesO0A10AttributesV21localizedNumberFormatAE09LocalizedfgB0OvpMV', '_$s10Foundation15AttributeScopesO0A10AttributesV22markdownSourcePositionAE08MarkdownfgB0Ovg', '_$s10Foundation15AttributeScopesO0A10AttributesV22markdownSourcePositionAE08MarkdownfgB0OvpMV', '_$s10Foundation15AttributeScopesO0A10AttributesV24inlinePresentationIntentAE06InlinefgB0Ovg', @@ -2921,7 +2872,9 @@ exports: '_$s10Foundation15ListFormatStyleVyxq_GAA0cD0AAMc', '_$s10Foundation15ListFormatStyleVyxq_GAA0cD0AAWP', '_$s10Foundation15ListFormatStyleVyxq_GSEAAMc', '_$s10Foundation15ListFormatStyleVyxq_GSHAAMc', '_$s10Foundation15ListFormatStyleVyxq_GSQAAMc', '_$s10Foundation15ListFormatStyleVyxq_GSeAAMc', - '_$s10Foundation15_BridgedNSErrorMp', '_$s10Foundation15_BridgedNSErrorP14_nsErrorDomainSSvgZTj', + '_$s10Foundation15NSDecimalDivideySo18NSCalculationErrorVSpySo0B0aG_SPyAFGAHSo14NSRoundingModeVtF', + '_$s10Foundation15NSDecimalStringySSSPySo0B0aG_ypSgtF', '_$s10Foundation15_BridgedNSErrorMp', + '_$s10Foundation15_BridgedNSErrorP14_nsErrorDomainSSvgZTj', '_$s10Foundation15_BridgedNSErrorP14_nsErrorDomainSSvgZTq', '_$s10Foundation15_BridgedNSErrorP8RawValueSY_s17FixedWidthIntegerTn', '_$s10Foundation15_BridgedNSErrorPAA26_ObjectiveCBridgeableErrorTb', @@ -2930,7 +2883,133 @@ exports: '_$s10Foundation15_BridgedNSErrorPAAE5_codeSivg', '_$s10Foundation15_BridgedNSErrorPAAE5_codeSivpMV', '_$s10Foundation15_BridgedNSErrorPAAE7_domainSSvg', '_$s10Foundation15_BridgedNSErrorPAAE7_domainSSvpMV', '_$s10Foundation15_BridgedNSErrorPSHTb', '_$s10Foundation15_BridgedNSErrorPSYTb', - '_$s10Foundation15_BridgedNSErrorTL', '_$s10Foundation16AttributedStringV10charactersAC13CharacterViewVvM', + '_$s10Foundation15_BridgedNSErrorTL', '_$s10Foundation15_LocaleProtocolMp', + '_$s10Foundation15_LocaleProtocolP10componentsxAA0B0V10ComponentsV_tcfCTj', + '_$s10Foundation15_LocaleProtocolP10componentsxAA0B0V10ComponentsV_tcfCTq', + '_$s10Foundation15_LocaleProtocolP10identifier5prefsxSS_AA0B11PreferencesVSgtcfCTj', + '_$s10Foundation15_LocaleProtocolP10identifier5prefsxSS_AA0B11PreferencesVSgtcfCTq', + '_$s10Foundation15_LocaleProtocolP10identifierSSvgTj', '_$s10Foundation15_LocaleProtocolP10identifierSSvgTq', + '_$s10Foundation15_LocaleProtocolP10identifierySSAA0B0V14IdentifierTypeOFTj', + '_$s10Foundation15_LocaleProtocolP10identifierySSAA0B0V14IdentifierTypeOFTq', + '_$s10Foundation15_LocaleProtocolP10regionCodeSSSgvgTj', '_$s10Foundation15_LocaleProtocolP10regionCodeSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP10scriptCodeSSSgvgTj', '_$s10Foundation15_LocaleProtocolP10scriptCodeSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP11subdivisionAA0B0V11SubdivisionVSgvgTj', + '_$s10Foundation15_LocaleProtocolP11subdivisionAA0B0V11SubdivisionVSgvgTq', + '_$s10Foundation15_LocaleProtocolP11variantCodeSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP11variantCodeSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP12currencyCodeSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP12currencyCodeSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP12languageCodeSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP12languageCodeSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP12weekendRangeAA07WeekendE0VSgvgTj', + '_$s10Foundation15_LocaleProtocolP12weekendRangeAA07WeekendE0VSgvgTq', + '_$s10Foundation15_LocaleProtocolP14currencySymbolSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP14currencySymbolSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP14firstDayOfWeekAA0B0V7WeekdayOvgTj', + '_$s10Foundation15_LocaleProtocolP14firstDayOfWeekAA0B0V7WeekdayOvgTq', + '_$s10Foundation15_LocaleProtocolP14forceHourCycleAA0B0V0eF0OSgvgTj', + '_$s10Foundation15_LocaleProtocolP14forceHourCycleAA0B0V0eF0OSgvgTq', + '_$s10Foundation15_LocaleProtocolP14isAutoupdatingSbvgTj', + '_$s10Foundation15_LocaleProtocolP14isAutoupdatingSbvgTq', + '_$s10Foundation15_LocaleProtocolP15numberingSystemAA0B0V09NumberingE0VvgTj', + '_$s10Foundation15_LocaleProtocolP15numberingSystemAA0B0V09NumberingE0VvgTq', + '_$s10Foundation15_LocaleProtocolP15temperatureUnitAA0B11PreferencesV011TemperatureE0OvgTj', + '_$s10Foundation15_LocaleProtocolP15temperatureUnitAA0B11PreferencesV011TemperatureE0OvgTq', + '_$s10Foundation15_LocaleProtocolP16bridgeToNSLocaleSo0F0CyFTj', + '_$s10Foundation15_LocaleProtocolP16bridgeToNSLocaleSo0F0CyFTq', + '_$s10Foundation15_LocaleProtocolP16customDateFormatySSSgAA0E0V0F5StyleV0eG0VFTj', + '_$s10Foundation15_LocaleProtocolP16customDateFormatySSSgAA0E0V0F5StyleV0eG0VFTq', + '_$s10Foundation15_LocaleProtocolP16decimalSeparatorSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP16decimalSeparatorSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP16usesMetricSystemSbvgTj', + '_$s10Foundation15_LocaleProtocolP16usesMetricSystemSbvgTq', + '_$s10Foundation15_LocaleProtocolP17forceFirstWeekdayyAA0B0V0F0OSgAA8CalendarV10IdentifierOFTj', + '_$s10Foundation15_LocaleProtocolP17forceFirstWeekdayyAA0B0V0F0OSgAA8CalendarV10IdentifierOFTq', + '_$s10Foundation15_LocaleProtocolP17groupingSeparatorSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP17groupingSeparatorSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP17measurementSystemAA0B0V011MeasurementE0VvgTj', + '_$s10Foundation15_LocaleProtocolP17measurementSystemAA0B0V011MeasurementE0VvgTq', + '_$s10Foundation15_LocaleProtocolP18calendarIdentifierAA8CalendarV0E0OvgTj', + '_$s10Foundation15_LocaleProtocolP18calendarIdentifierAA8CalendarV0E0OvgTq', + '_$s10Foundation15_LocaleProtocolP18collatorIdentifierSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP18collatorIdentifierSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP19collationIdentifierSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP19collationIdentifierSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP20exemplarCharacterSetAA0eF0VSgvgTj', + '_$s10Foundation15_LocaleProtocolP20exemplarCharacterSetAA0eF0VSgvgTq', + '_$s10Foundation15_LocaleProtocolP20forceTemperatureUnitAA0B11PreferencesV0eF0OSgvgTj', + '_$s10Foundation15_LocaleProtocolP20forceTemperatureUnitAA0B11PreferencesV0eF0OSgvgTq', + '_$s10Foundation15_LocaleProtocolP21identifierDisplayName3forSSSgSS_tFTj', + '_$s10Foundation15_LocaleProtocolP21identifierDisplayName3forSSSgSS_tFTq', + '_$s10Foundation15_LocaleProtocolP21quotationEndDelimiterSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP21quotationEndDelimiterSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP21scriptCodeDisplayName3forSSSgSS_tFTj', + '_$s10Foundation15_LocaleProtocolP21scriptCodeDisplayName3forSSSgSS_tFTq', + '_$s10Foundation15_LocaleProtocolP22countryCodeDisplayName3forSSSgSS_tFTj', + '_$s10Foundation15_LocaleProtocolP22countryCodeDisplayName3forSSSgSS_tFTq', + '_$s10Foundation15_LocaleProtocolP22forceMeasurementSystemAA0B0V0eF0VSgvgTj', + '_$s10Foundation15_LocaleProtocolP22forceMeasurementSystemAA0B0V0eF0VSgvgTq', + '_$s10Foundation15_LocaleProtocolP22minimumDaysInFirstWeekSivgTj', + '_$s10Foundation15_LocaleProtocolP22minimumDaysInFirstWeekSivgTq', + '_$s10Foundation15_LocaleProtocolP22variantCodeDisplayName3forSSSgSS_tFTj', + '_$s10Foundation15_LocaleProtocolP22variantCodeDisplayName3forSSSgSS_tFTq', + '_$s10Foundation15_LocaleProtocolP23currencyCodeDisplayName3forSSSgSS_tFTj', + '_$s10Foundation15_LocaleProtocolP23currencyCodeDisplayName3forSSSgSS_tFTq', + '_$s10Foundation15_LocaleProtocolP23forceMinDaysInFirstWeekySiSgAA8CalendarV10IdentifierOFTj', + '_$s10Foundation15_LocaleProtocolP23forceMinDaysInFirstWeekySiSgAA8CalendarV10IdentifierOFTq', + '_$s10Foundation15_LocaleProtocolP23languageCodeDisplayName3forSSSgSS_tFTj', + '_$s10Foundation15_LocaleProtocolP23languageCodeDisplayName3forSSSgSS_tFTq', + '_$s10Foundation15_LocaleProtocolP23quotationBeginDelimiterSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP23quotationBeginDelimiterSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP25availableNumberingSystemsSayAA0B0V0E6SystemVGvgTj', + '_$s10Foundation15_LocaleProtocolP25availableNumberingSystemsSayAA0B0V0E6SystemVGvgTq', + '_$s10Foundation15_LocaleProtocolP25currencySymbolDisplayName3forSSSgSS_tFTj', + '_$s10Foundation15_LocaleProtocolP25currencySymbolDisplayName3forSSSgSS_tFTq', + '_$s10Foundation15_LocaleProtocolP29calendarIdentifierDisplayName3forSSSgAA8CalendarV0E0O_tFTj', + '_$s10Foundation15_LocaleProtocolP29calendarIdentifierDisplayName3forSSSgAA8CalendarV0E0O_tFTq', + '_$s10Foundation15_LocaleProtocolP29collatorIdentifierDisplayName3forSSSgSS_tFTj', + '_$s10Foundation15_LocaleProtocolP29collatorIdentifierDisplayName3forSSSgSS_tFTq', + '_$s10Foundation15_LocaleProtocolP30alternateQuotationEndDelimiterSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP30alternateQuotationEndDelimiterSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP30collationIdentifierDisplayName3forSSSgSS_tFTj', + '_$s10Foundation15_LocaleProtocolP30collationIdentifierDisplayName3forSSSgSS_tFTq', + '_$s10Foundation15_LocaleProtocolP30identifierCapturingPreferencesSSvgTj', + '_$s10Foundation15_LocaleProtocolP30identifierCapturingPreferencesSSvgTq', + '_$s10Foundation15_LocaleProtocolP32alternateQuotationBeginDelimiterSSSgvgTj', + '_$s10Foundation15_LocaleProtocolP32alternateQuotationBeginDelimiterSSSgvgTq', + '_$s10Foundation15_LocaleProtocolP4copy21newCalendarIdentifierAaB_pAA0F0V0G0O_tFTj', + '_$s10Foundation15_LocaleProtocolP4copy21newCalendarIdentifierAaB_pAA0F0V0G0O_tFTq', + '_$s10Foundation15_LocaleProtocolP4name5prefs21disableBundleMatchingxSSSg_AA0B11PreferencesVSbtcfCTj', + '_$s10Foundation15_LocaleProtocolP4name5prefs21disableBundleMatchingxSSSg_AA0B11PreferencesVSbtcfCTq', + '_$s10Foundation15_LocaleProtocolP4pref3forypSgSS_tFTj', '_$s10Foundation15_LocaleProtocolP4pref3forypSgSS_tFTq', + '_$s10Foundation15_LocaleProtocolP5prefsAA0B11PreferencesVSgvgTj', + '_$s10Foundation15_LocaleProtocolP5prefsAA0B11PreferencesVSgvgTq', + '_$s10Foundation15_LocaleProtocolP6regionAA0B0V6RegionVSgvgTj', + '_$s10Foundation15_LocaleProtocolP6regionAA0B0V6RegionVSgvgTq', + '_$s10Foundation15_LocaleProtocolP7variantAA0B0V7VariantVSgvgTj', + '_$s10Foundation15_LocaleProtocolP7variantAA0B0V7VariantVSgvgTq', + '_$s10Foundation15_LocaleProtocolP8calendarAA8CalendarVvgTj', + '_$s10Foundation15_LocaleProtocolP8calendarAA8CalendarVvgTq', + '_$s10Foundation15_LocaleProtocolP8currencyAA0B0V8CurrencyVSgvgTj', + '_$s10Foundation15_LocaleProtocolP8currencyAA0B0V8CurrencyVSgvgTq', + '_$s10Foundation15_LocaleProtocolP8languageAA0B0V8LanguageVvgTj', + '_$s10Foundation15_LocaleProtocolP8languageAA0B0V8LanguageVvgTq', + '_$s10Foundation15_LocaleProtocolP8timeZoneAA04TimeE0VSgvgTj', + '_$s10Foundation15_LocaleProtocolP8timeZoneAA04TimeE0VSgvgTq', + '_$s10Foundation15_LocaleProtocolP9collationAA0B0V9CollationVvgTj', + '_$s10Foundation15_LocaleProtocolP9collationAA0B0V9CollationVvgTq', + '_$s10Foundation15_LocaleProtocolP9hourCycleAA0B0V04HourE0OvgTj', + '_$s10Foundation15_LocaleProtocolP9hourCycleAA0B0V04HourE0OvgTq', + '_$s10Foundation15_LocaleProtocolP9isBridgedSbvgTj', '_$s10Foundation15_LocaleProtocolP9isBridgedSbvgTq', + '_$s10Foundation15_LocaleProtocolPAAE10regionCodeSSSgvg', + '_$s10Foundation15_LocaleProtocolPAAE10regionCodeSSSgvpMV', + '_$s10Foundation15_LocaleProtocolPAAE14isAutoupdatingSbvg', + '_$s10Foundation15_LocaleProtocolPAAE14isAutoupdatingSbvpMV', + '_$s10Foundation15_LocaleProtocolPAAE16debugDescriptionSSvg', + '_$s10Foundation15_LocaleProtocolPAAE16debugDescriptionSSvpMV', + '_$s10Foundation15_LocaleProtocolPAAE9isBridgedSbvg', '_$s10Foundation15_LocaleProtocolPAAE9isBridgedSbvpMV', + '_$s10Foundation15_LocaleProtocolPs28CustomDebugStringConvertibleTb', + '_$s10Foundation15_LocaleProtocolTL', '_$s10Foundation16AttributedStringV10charactersAC13CharacterViewVvM', '_$s10Foundation16AttributedStringV10charactersAC13CharacterViewVvg', '_$s10Foundation16AttributedStringV10charactersAC13CharacterViewVvpMV', '_$s10Foundation16AttributedStringV10charactersAC13CharacterViewVvs', @@ -2984,6 +3063,7 @@ exports: '_$s10Foundation16AttributedStringV15mergeAttributes_0D6PolicyyAA18AttributeContainerV_AC0g5MergeF0OtF', '_$s10Foundation16AttributedStringV15replaceSubrange_4withyx_q_tSXRzAA0bC8ProtocolR_AC5IndexV5BoundRtzr0_lF', '_$s10Foundation16AttributedStringV17FormattingOptionsV30applyReplacementIndexAttributeAEvgZ', + '_$s10Foundation16AttributedStringV17FormattingOptionsV30applyReplacementIndexAttributeAEvpZMV', '_$s10Foundation16AttributedStringV17FormattingOptionsV8rawValueAESu_tcfC', '_$s10Foundation16AttributedStringV17FormattingOptionsV8rawValueSuvg', '_$s10Foundation16AttributedStringV17FormattingOptionsV8rawValueSuvpMV', @@ -3048,10 +3128,16 @@ exports: '_$s10Foundation16AttributedStringV19LocalizationOptionsV20_pluralizationNumberAE014_PluralizationG0OSgvg', '_$s10Foundation16AttributedStringV19LocalizationOptionsV20_pluralizationNumberAE014_PluralizationG0OSgvpMV', '_$s10Foundation16AttributedStringV19LocalizationOptionsV20_pluralizationNumberAE014_PluralizationG0OSgvs', + '_$s10Foundation16AttributedStringV19LocalizationOptionsV21termsOfAddressConceptyAESayAA04TermgH0VGFZ', + '_$s10Foundation16AttributedStringV19LocalizationOptionsV22localizedPhraseConceptyAESSFZ', '_$s10Foundation16AttributedStringV19LocalizationOptionsV30applyReplacementIndexAttributeSbvM', '_$s10Foundation16AttributedStringV19LocalizationOptionsV30applyReplacementIndexAttributeSbvg', '_$s10Foundation16AttributedStringV19LocalizationOptionsV30applyReplacementIndexAttributeSbvpMV', '_$s10Foundation16AttributedStringV19LocalizationOptionsV30applyReplacementIndexAttributeSbvs', + '_$s10Foundation16AttributedStringV19LocalizationOptionsV7inflectSbvM', + '_$s10Foundation16AttributedStringV19LocalizationOptionsV7inflectSbvg', + '_$s10Foundation16AttributedStringV19LocalizationOptionsV7inflectSbvpMV', + '_$s10Foundation16AttributedStringV19LocalizationOptionsV7inflectSbvs', '_$s10Foundation16AttributedStringV19LocalizationOptionsV8conceptsSayAA17InflectionConceptOGSgvM', '_$s10Foundation16AttributedStringV19LocalizationOptionsV8conceptsSayAA17InflectionConceptOGSgvg', '_$s10Foundation16AttributedStringV19LocalizationOptionsV8conceptsSayAA17InflectionConceptOGSgvpMV', @@ -3073,6 +3159,7 @@ exports: '_$s10Foundation16AttributedStringV20AttributeMergePolicyOSHAAMc', '_$s10Foundation16AttributedStringV20AttributeMergePolicyOSQAAMc', '_$s10Foundation16AttributedStringV20InterpolationOptionsV30insertAttributesWithoutMergingAEvgZ', + '_$s10Foundation16AttributedStringV20InterpolationOptionsV30insertAttributesWithoutMergingAEvpZMV', '_$s10Foundation16AttributedStringV20InterpolationOptionsV8rawValueAESu_tcfC', '_$s10Foundation16AttributedStringV20InterpolationOptionsV8rawValueSuvg', '_$s10Foundation16AttributedStringV20InterpolationOptionsV8rawValueSuvpMV', @@ -3200,6 +3287,7 @@ exports: '_$s10Foundation16AttributedStringV2eeoiySbAC_ACtFZ', '_$s10Foundation16AttributedStringV2peoiyyACz_ACtFZ', '_$s10Foundation16AttributedStringV2peoiyyACz_xtAA0bC8ProtocolRzlFZ', '_$s10Foundation16AttributedStringV30AttributeInvalidationConditionV11textChangedAEvgZ', + '_$s10Foundation16AttributedStringV30AttributeInvalidationConditionV11textChangedAEvpZMV', '_$s10Foundation16AttributedStringV30AttributeInvalidationConditionV16attributeChangedyAEs7KeyPathCyAA0D13DynamicLookupOxGAA0bcI0RzlFZ', '_$s10Foundation16AttributedStringV30AttributeInvalidationConditionV16attributeChangedyAExmAA0bC3KeyRzlFZ', '_$s10Foundation16AttributedStringV30AttributeInvalidationConditionV2eeoiySbAE_AEtFZ', @@ -3398,6 +3486,7 @@ exports: '_$s10Foundation16AttributedStringV8markdown9including7options7baseURLAcA4DataV_s7KeyPathCyAA15AttributeScopesOxmGAC22MarkdownParsingOptionsVAA0H0VSgtKcAA0L5ScopeRzlufC', '_$s10Foundation16AttributedStringV8markdown9including7options7baseURLAcA4DataV_xmAC22MarkdownParsingOptionsVAA0H0VSgtKcAA14AttributeScopeRzlufC', '_$s10Foundation16AttributedStringV9hashValueSivg', '_$s10Foundation16AttributedStringV9hashValueSivpMV', + '_$s10Foundation16AttributedStringV9inflected6locale17userTermOfAddress18inflectionConceptsAcA6LocaleV_AA0ghI0VSgSayAA17InflectionConceptOGtF', '_$s10Foundation16AttributedStringV9inflectedACyF', '_$s10Foundation16AttributedStringV9localized12defaultValue7options5table6bundle6locale7comment9includingACs06StaticC0V_SSAAE012LocalizationF0VAC0N7OptionsVSSSgSo8NSBundleCSgAA6LocaleVSgAMSgs7KeyPathCyAA15AttributeScopesOxmGtcAA0T5ScopeRzlufC', '_$s10Foundation16AttributedStringV9localized12defaultValue7options5table6bundle6locale7comment9includingACs06StaticC0V_SSAAE012LocalizationF0VAC0N7OptionsVSSSgSo8NSBundleCSgAA6LocaleVSgAMSgxmtcAA14AttributeScopeRzlufC', '_$s10Foundation16AttributedStringV9localized12defaultValue7options5table6bundle6locale7comment9includingACs06StaticC0V_SSAAE012LocalizationF0VAC17FormattingOptionsVSSSgSo8NSBundleCSgAA6LocaleVSgAMSgs7KeyPathCyAA15AttributeScopesOxmGtcAA0U5ScopeRzlufC', @@ -3454,23 +3543,33 @@ exports: '_$s10Foundation16AttributedStringVyACSo012NSAttributedC0CcfC', '_$s10Foundation16AttributedStringVyAcA0B9SubstringVcfC', '_$s10Foundation16ErrorUserInfoKeyV010NSURLErrorE0ACvgZ', + '_$s10Foundation16ErrorUserInfoKeyV010NSURLErrorE0ACvpZMV', '_$s10Foundation16ErrorUserInfoKeyV010helpAnchorbE0ACvgZ', + '_$s10Foundation16ErrorUserInfoKeyV010helpAnchorbE0ACvpZMV', '_$s10Foundation16ErrorUserInfoKeyV010underlyingbE0ACvgZ', + '_$s10Foundation16ErrorUserInfoKeyV010underlyingbE0ACvpZMV', '_$s10Foundation16ErrorUserInfoKeyV014stringEncodingbE0ACvgZ', + '_$s10Foundation16ErrorUserInfoKeyV014stringEncodingbE0ACvpZMV', '_$s10Foundation16ErrorUserInfoKeyV017recoveryAttempterbE0ACvgZ', + '_$s10Foundation16ErrorUserInfoKeyV017recoveryAttempterbE0ACvpZMV', '_$s10Foundation16ErrorUserInfoKeyV020localizedDescriptionE0ACvgZ', + '_$s10Foundation16ErrorUserInfoKeyV020localizedDescriptionE0ACvpZMV', '_$s10Foundation16ErrorUserInfoKeyV022localizedFailureReasonbE0ACvgZ', + '_$s10Foundation16ErrorUserInfoKeyV022localizedFailureReasonbE0ACvpZMV', '_$s10Foundation16ErrorUserInfoKeyV024localizedRecoveryOptionsbE0ACvgZ', + '_$s10Foundation16ErrorUserInfoKeyV024localizedRecoveryOptionsbE0ACvpZMV', '_$s10Foundation16ErrorUserInfoKeyV027localizedRecoverySuggestionbE0ACvgZ', - '_$s10Foundation16ErrorUserInfoKeyV08filePathbE0ACvgZ', '_$s10Foundation16ErrorUserInfoKeyV8rawValueACSS_tcfC', - '_$s10Foundation16ErrorUserInfoKeyV8rawValueSSvM', '_$s10Foundation16ErrorUserInfoKeyV8rawValueSSvg', - '_$s10Foundation16ErrorUserInfoKeyV8rawValueSSvpMV', '_$s10Foundation16ErrorUserInfoKeyV8rawValueSSvs', - '_$s10Foundation16ErrorUserInfoKeyVMa', '_$s10Foundation16ErrorUserInfoKeyVMn', - '_$s10Foundation16ErrorUserInfoKeyVN', '_$s10Foundation16ErrorUserInfoKeyVSHAAMc', - '_$s10Foundation16ErrorUserInfoKeyVSQAAMc', '_$s10Foundation16ErrorUserInfoKeyVSYAAMc', - '_$s10Foundation16ErrorUserInfoKeyVs20_SwiftNewtypeWrapperAAMc', + '_$s10Foundation16ErrorUserInfoKeyV027localizedRecoverySuggestionbE0ACvpZMV', + '_$s10Foundation16ErrorUserInfoKeyV08filePathbE0ACvgZ', '_$s10Foundation16ErrorUserInfoKeyV08filePathbE0ACvpZMV', + '_$s10Foundation16ErrorUserInfoKeyV8rawValueACSS_tcfC', '_$s10Foundation16ErrorUserInfoKeyV8rawValueSSvM', + '_$s10Foundation16ErrorUserInfoKeyV8rawValueSSvg', '_$s10Foundation16ErrorUserInfoKeyV8rawValueSSvpMV', + '_$s10Foundation16ErrorUserInfoKeyV8rawValueSSvs', '_$s10Foundation16ErrorUserInfoKeyVMa', + '_$s10Foundation16ErrorUserInfoKeyVMn', '_$s10Foundation16ErrorUserInfoKeyVN', + '_$s10Foundation16ErrorUserInfoKeyVSHAAMc', '_$s10Foundation16ErrorUserInfoKeyVSQAAMc', + '_$s10Foundation16ErrorUserInfoKeyVSYAAMc', '_$s10Foundation16ErrorUserInfoKeyVs20_SwiftNewtypeWrapperAAMc', '_$s10Foundation16ErrorUserInfoKeyVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation16ErrorUserInfoKeyVs35_HasCustomAnyHashableRepresentationAAMc', + '_$s10Foundation16NSDecimalCompactyySpySo0B0aGF', '_$s10Foundation16NSDecimalCompareySo18NSComparisonResultVSPySo0B0aG_AGtF', '_$s10Foundation16RecoverableErrorMp', '_$s10Foundation16RecoverableErrorP15attemptRecovery11optionIndex13resultHandlerySi_ySbctFTj', '_$s10Foundation16RecoverableErrorP15attemptRecovery11optionIndex13resultHandlerySi_ySbctFTq', '_$s10Foundation16RecoverableErrorP15attemptRecovery11optionIndexSbSi_tFTj', @@ -3479,6 +3578,17 @@ exports: '_$s10Foundation16RecoverableErrorP15recoveryOptionsSaySSGvgTq', '_$s10Foundation16RecoverableErrorPAAE15attemptRecovery11optionIndex13resultHandlerySi_ySbctF', '_$s10Foundation16RecoverableErrorPs0C0Tb', '_$s10Foundation16RecoverableErrorTL', + '_$s10Foundation17AnySortComparatorV2eeoiySbAC_ACtFZ', '_$s10Foundation17AnySortComparatorV4hash4intoys6HasherVz_tF', + '_$s10Foundation17AnySortComparatorV5orderAA0C5OrderOvM', + '_$s10Foundation17AnySortComparatorV5orderAA0C5OrderOvg', + '_$s10Foundation17AnySortComparatorV5orderAA0C5OrderOvpMV', + '_$s10Foundation17AnySortComparatorV5orderAA0C5OrderOvs', + '_$s10Foundation17AnySortComparatorV7compareySo18NSComparisonResultVyp_yptF', + '_$s10Foundation17AnySortComparatorV9hashValueSivg', '_$s10Foundation17AnySortComparatorV9hashValueSivpMV', + '_$s10Foundation17AnySortComparatorVAA0cD0AAMc', '_$s10Foundation17AnySortComparatorVAA0cD0AAWP', + '_$s10Foundation17AnySortComparatorVMa', '_$s10Foundation17AnySortComparatorVMn', + '_$s10Foundation17AnySortComparatorVN', '_$s10Foundation17AnySortComparatorVSHAAMc', + '_$s10Foundation17AnySortComparatorVSQAAMc', '_$s10Foundation17AnySortComparatorVyACxcAA0cD0RzlufC', '_$s10Foundation17AsyncLineSequenceV04makeB8IteratorAC0bF0Vyx_GyF', '_$s10Foundation17AsyncLineSequenceV0B8IteratorV4nextSSSgyYaKF', '_$s10Foundation17AsyncLineSequenceV0B8IteratorV4nextSSSgyYaKFTu', @@ -3513,6 +3623,102 @@ exports: '_$s10Foundation17KeyPathComparatorV_5orderACyxGs0bC0Cyxqd__SgG_AA9SortOrderOtcSLRd__lufC', '_$s10Foundation17KeyPathComparatorVyxGAA04SortD0AAMc', '_$s10Foundation17KeyPathComparatorVyxGAA04SortD0AAWP', '_$s10Foundation17KeyPathComparatorVyxGSHAAMc', '_$s10Foundation17KeyPathComparatorVyxGSQAAMc', + '_$s10Foundation17LocalePreferencesV11dateFormatsSDyAA4DateV11FormatStyleV0fH0VSSGSgvM', + '_$s10Foundation17LocalePreferencesV11dateFormatsSDyAA4DateV11FormatStyleV0fH0VSSGSgvg', + '_$s10Foundation17LocalePreferencesV11dateFormatsSDyAA4DateV11FormatStyleV0fH0VSSGSgvpMV', + '_$s10Foundation17LocalePreferencesV11dateFormatsSDyAA4DateV11FormatStyleV0fH0VSSGSgvs', + '_$s10Foundation17LocalePreferencesV11force12HourSbSgvM', + '_$s10Foundation17LocalePreferencesV11force12HourSbSgvg', + '_$s10Foundation17LocalePreferencesV11force12HourSbSgvpMV', + '_$s10Foundation17LocalePreferencesV11force12HourSbSgvs', + '_$s10Foundation17LocalePreferencesV11force24HourSbSgvM', + '_$s10Foundation17LocalePreferencesV11force24HourSbSgvg', + '_$s10Foundation17LocalePreferencesV11force24HourSbSgvpMV', + '_$s10Foundation17LocalePreferencesV11force24HourSbSgvs', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfC', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA0_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA10_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA11_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA1_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA2_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA3_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA4_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA5_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA6_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA7_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA8_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA9_', + '_$s10Foundation17LocalePreferencesV11metricUnits9languages6locale14collationOrder12firstWeekday18minDaysInFirstWeek7country011measurementE015temperatureUnit11force24Hour07force12V013numberSymbols11dateFormatsACSbSg_SaySSGSgSSSgATSDyAA8CalendarV10IdentifierOSiGSgAztC011MeasurementT0OSgAC011TemperatureT0OSgA2QSDys6UInt32VSSGSgSDyAA4DateV11FormatStyleV9DateStyleVSSGSgtcfcfA_', + '_$s10Foundation17LocalePreferencesV11metricUnitsSbSgvM', + '_$s10Foundation17LocalePreferencesV11metricUnitsSbSgvg', + '_$s10Foundation17LocalePreferencesV11metricUnitsSbSgvpMV', + '_$s10Foundation17LocalePreferencesV11metricUnitsSbSgvs', + '_$s10Foundation17LocalePreferencesV12firstWeekdaySDyAA8CalendarV10IdentifierOSiGSgvM', + '_$s10Foundation17LocalePreferencesV12firstWeekdaySDyAA8CalendarV10IdentifierOSiGSgvg', + '_$s10Foundation17LocalePreferencesV12firstWeekdaySDyAA8CalendarV10IdentifierOSiGSgvpMV', + '_$s10Foundation17LocalePreferencesV12firstWeekdaySDyAA8CalendarV10IdentifierOSiGSgvs', + '_$s10Foundation17LocalePreferencesV13numberSymbolsSDys6UInt32VSSGSgvM', + '_$s10Foundation17LocalePreferencesV13numberSymbolsSDys6UInt32VSSGSgvg', + '_$s10Foundation17LocalePreferencesV13numberSymbolsSDys6UInt32VSSGSgvpMV', + '_$s10Foundation17LocalePreferencesV13numberSymbolsSDys6UInt32VSSGSgvs', + '_$s10Foundation17LocalePreferencesV14collationOrderSSSgvM', + '_$s10Foundation17LocalePreferencesV14collationOrderSSSgvg', + '_$s10Foundation17LocalePreferencesV14collationOrderSSSgvpMV', + '_$s10Foundation17LocalePreferencesV14collationOrderSSSgvs', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitO11centimetersyA2EmFWC', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitO2eeoiySbAE_AEtFZ', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitO4hash4intoys6HasherVz_tF', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitO6inchesyA2EmFWC', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitO9hashValueSivg', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitO9hashValueSivpMV', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitOMa', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitOMn', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitON', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitOSHAAMc', + '_$s10Foundation17LocalePreferencesV15MeasurementUnitOSQAAMc', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitO10fahrenheityA2EmFWC', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitO2eeoiySbAE_AEtFZ', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitO4hash4intoys6HasherVz_tF', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitO7celsiusyA2EmFWC', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitO9hashValueSivg', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitO9hashValueSivpMV', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitOMa', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitOMn', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitON', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitOSHAAMc', + '_$s10Foundation17LocalePreferencesV15TemperatureUnitOSQAAMc', + '_$s10Foundation17LocalePreferencesV15temperatureUnitAC011TemperatureE0OSgvM', + '_$s10Foundation17LocalePreferencesV15temperatureUnitAC011TemperatureE0OSgvg', + '_$s10Foundation17LocalePreferencesV15temperatureUnitAC011TemperatureE0OSgvpMV', + '_$s10Foundation17LocalePreferencesV15temperatureUnitAC011TemperatureE0OSgvs', + '_$s10Foundation17LocalePreferencesV16measurementUnitsAC15MeasurementUnitOSgvM', + '_$s10Foundation17LocalePreferencesV16measurementUnitsAC15MeasurementUnitOSgvg', + '_$s10Foundation17LocalePreferencesV16measurementUnitsAC15MeasurementUnitOSgvpMV', + '_$s10Foundation17LocalePreferencesV16measurementUnitsAC15MeasurementUnitOSgvs', + '_$s10Foundation17LocalePreferencesV17measurementSystemAA0B0V011MeasurementE0VSgvg', + '_$s10Foundation17LocalePreferencesV17measurementSystemAA0B0V011MeasurementE0VSgvpMV', + '_$s10Foundation17LocalePreferencesV18minDaysInFirstWeekSDyAA8CalendarV10IdentifierOSiGSgvM', + '_$s10Foundation17LocalePreferencesV18minDaysInFirstWeekSDyAA8CalendarV10IdentifierOSiGSgvg', + '_$s10Foundation17LocalePreferencesV18minDaysInFirstWeekSDyAA8CalendarV10IdentifierOSiGSgvpMV', + '_$s10Foundation17LocalePreferencesV18minDaysInFirstWeekSDyAA8CalendarV10IdentifierOSiGSgvs', + '_$s10Foundation17LocalePreferencesV2eeoiySbAC_ACtFZ', '_$s10Foundation17LocalePreferencesV4hash4intoys6HasherVz_tF', + '_$s10Foundation17LocalePreferencesV5applyyyACF', '_$s10Foundation17LocalePreferencesV5applyyySo15CFDictionaryRefaF', + '_$s10Foundation17LocalePreferencesV6localeSSSgvM', '_$s10Foundation17LocalePreferencesV6localeSSSgvg', + '_$s10Foundation17LocalePreferencesV6localeSSSgvpMV', '_$s10Foundation17LocalePreferencesV6localeSSSgvs', + '_$s10Foundation17LocalePreferencesV7countrySSSgvM', '_$s10Foundation17LocalePreferencesV7countrySSSgvg', + '_$s10Foundation17LocalePreferencesV7countrySSSgvpMV', '_$s10Foundation17LocalePreferencesV7countrySSSgvs', + '_$s10Foundation17LocalePreferencesV9hashValueSivg', '_$s10Foundation17LocalePreferencesV9hashValueSivpMV', + '_$s10Foundation17LocalePreferencesV9hourCycleAA0B0V04HourE0OSgvg', + '_$s10Foundation17LocalePreferencesV9hourCycleAA0B0V04HourE0OSgvpMV', + '_$s10Foundation17LocalePreferencesV9languagesSaySSGSgvM', + '_$s10Foundation17LocalePreferencesV9languagesSaySSGSgvg', + '_$s10Foundation17LocalePreferencesV9languagesSaySSGSgvpMV', + '_$s10Foundation17LocalePreferencesV9languagesSaySSGSgvs', + '_$s10Foundation17LocalePreferencesVACycfC', '_$s10Foundation17LocalePreferencesVMa', + '_$s10Foundation17LocalePreferencesVMn', '_$s10Foundation17LocalePreferencesVN', + '_$s10Foundation17LocalePreferencesVSHAAMc', '_$s10Foundation17LocalePreferencesVSQAAMc', + '_$s10Foundation17NSDecimalMultiplyySo18NSCalculationErrorVSpySo0B0aG_SPyAFGAHSo14NSRoundingModeVtF', + '_$s10Foundation17NSDecimalSubtractySo18NSCalculationErrorVSpySo0B0aG_SPyAFGAHSo14NSRoundingModeVtF', '_$s10Foundation17NSLocalizedString_9tableName6bundle5value7commentS2S_SSSgSo8NSBundleCS2StF', '_$s10Foundation17PredicateBindingsV7binding_2toAcA0B11ExpressionsO8VariableVy_xG_xtlF', '_$s10Foundation17PredicateBindingsVMa', '_$s10Foundation17PredicateBindingsVMn', @@ -3775,7 +3981,110 @@ exports: '_$s10Foundation17_AsyncBytesBufferV4nexts5UInt8VSgyYaKFTu', '_$s10Foundation17_AsyncBytesBufferV8capacityACSi_tcfC', '_$s10Foundation17_AsyncBytesBufferVMa', '_$s10Foundation17_AsyncBytesBufferVMn', '_$s10Foundation17_AsyncBytesBufferVN', - '_$s10Foundation18AttributeContainerV11descriptionSSvg', '_$s10Foundation18AttributeContainerV11descriptionSSvpMV', + '_$s10Foundation17_CalendarProtocolMp', '_$s10Foundation17_CalendarProtocolP10identifier8timeZone6locale12firstWeekday22minimumDaysInFirstWeek18gregorianStartDatexAA0B0V10IdentifierO_AA04TimeF0VSgAA6LocaleVSgSiSgAtA0Q0VSgtcfCTj', + '_$s10Foundation17_CalendarProtocolP10identifier8timeZone6locale12firstWeekday22minimumDaysInFirstWeek18gregorianStartDatexAA0B0V10IdentifierO_AA04TimeF0VSgAA6LocaleVSgSiSgAtA0Q0VSgtcfCTq', + '_$s10Foundation17_CalendarProtocolP10identifierAA0B0V10IdentifierOvgTj', + '_$s10Foundation17_CalendarProtocolP10identifierAA0B0V10IdentifierOvgTq', + '_$s10Foundation17_CalendarProtocolP10ordinality2of2in3forSiSgAA0B0V9ComponentO_AlA4DateVtFTj', + '_$s10Foundation17_CalendarProtocolP10ordinality2of2in3forSiSgAA0B0V9ComponentO_AlA4DateVtFTq', + '_$s10Foundation17_CalendarProtocolP12dateInterval2of3forAA04DateE0VSgAA0B0V9ComponentO_AA0H0VtFTj', + '_$s10Foundation17_CalendarProtocolP12dateInterval2of3forAA04DateE0VSgAA0B0V9ComponentO_AA0H0VtFTq', + '_$s10Foundation17_CalendarProtocolP12firstWeekdaySivgTj', + '_$s10Foundation17_CalendarProtocolP12firstWeekdaySivgTq', + '_$s10Foundation17_CalendarProtocolP12maximumRange2ofSnySiGSgAA0B0V9ComponentO_tFTj', + '_$s10Foundation17_CalendarProtocolP12maximumRange2ofSnySiGSgAA0B0V9ComponentO_tFTq', + '_$s10Foundation17_CalendarProtocolP12minimumRange2ofSnySiGSgAA0B0V9ComponentO_tFTj', + '_$s10Foundation17_CalendarProtocolP12minimumRange2ofSnySiGSgAA0B0V9ComponentO_tFTq', + '_$s10Foundation17_CalendarProtocolP14dateComponents_4from2inAA04DateE0VAA0B0V12ComponentSetV_AA0H0VAA8TimeZoneVtFTj', + '_$s10Foundation17_CalendarProtocolP14dateComponents_4from2inAA04DateE0VAA0B0V12ComponentSetV_AA0H0VAA8TimeZoneVtFTq', + '_$s10Foundation17_CalendarProtocolP14dateComponents_4from2toAA04DateE0VAA0B0V12ComponentSetV_AA0H0VANtFTj', + '_$s10Foundation17_CalendarProtocolP14dateComponents_4from2toAA04DateE0VAA0B0V12ComponentSetV_AA0H0VANtFTq', + '_$s10Foundation17_CalendarProtocolP14dateComponents_4fromAA04DateE0VAA0B0V12ComponentSetV_AA0G0VtFTj', + '_$s10Foundation17_CalendarProtocolP14dateComponents_4fromAA04DateE0VAA0B0V12ComponentSetV_AA0G0VtFTq', + '_$s10Foundation17_CalendarProtocolP14isAutoupdatingSbvgTj', + '_$s10Foundation17_CalendarProtocolP14isAutoupdatingSbvgTq', + '_$s10Foundation17_CalendarProtocolP15isDateInWeekendySbAA0E0VFTj', + '_$s10Foundation17_CalendarProtocolP15isDateInWeekendySbAA0E0VFTq', + '_$s10Foundation17_CalendarProtocolP16localeIdentifierSSvgTj', + '_$s10Foundation17_CalendarProtocolP16localeIdentifierSSvgTq', + '_$s10Foundation17_CalendarProtocolP18bridgeToNSCalendarSo0F0CyFTj', + '_$s10Foundation17_CalendarProtocolP18bridgeToNSCalendarSo0F0CyFTq', + '_$s10Foundation17_CalendarProtocolP18gregorianStartDateAA0F0VSgvgTj', + '_$s10Foundation17_CalendarProtocolP18gregorianStartDateAA0F0VSgvgTq', + '_$s10Foundation17_CalendarProtocolP21preferredFirstWeekdaySiSgvgTj', + '_$s10Foundation17_CalendarProtocolP21preferredFirstWeekdaySiSgvgTq', + '_$s10Foundation17_CalendarProtocolP22minimumDaysInFirstWeekSivgTj', + '_$s10Foundation17_CalendarProtocolP22minimumDaysInFirstWeekSivgTq', + '_$s10Foundation17_CalendarProtocolP31preferredMinimumDaysInFirstweekSiSgvgTj', + '_$s10Foundation17_CalendarProtocolP31preferredMinimumDaysInFirstweekSiSgvgTq', + '_$s10Foundation17_CalendarProtocolP4copy14changingLocale0E8TimeZone0E12FirstWeekday0e13MinimumDaysInI4WeekAaB_pAA0F0VSg_AA0gH0VSgSiSgAOtFTj', + '_$s10Foundation17_CalendarProtocolP4copy14changingLocale0E8TimeZone0E12FirstWeekday0e13MinimumDaysInI4WeekAaB_pAA0F0VSg_AA0gH0VSgSiSgAOtFTq', + '_$s10Foundation17_CalendarProtocolP4date4fromAA4DateVSgAA0F10ComponentsV_tFTj', + '_$s10Foundation17_CalendarProtocolP4date4fromAA4DateVSgAA0F10ComponentsV_tFTq', + '_$s10Foundation17_CalendarProtocolP4date8byAdding2to18wrappingComponentsAA4DateVSgAA0jI0V_AISbtFTj', + '_$s10Foundation17_CalendarProtocolP4date8byAdding2to18wrappingComponentsAA4DateVSgAA0jI0V_AISbtFTq', + '_$s10Foundation17_CalendarProtocolP4hash4intoys6HasherVz_tFTj', + '_$s10Foundation17_CalendarProtocolP4hash4intoys6HasherVz_tFTq', + '_$s10Foundation17_CalendarProtocolP5range2of2in3forSnySiGSgAA0B0V9ComponentO_AmA4DateVtFTj', + '_$s10Foundation17_CalendarProtocolP5range2of2in3forSnySiGSgAA0B0V9ComponentO_AmA4DateVtFTq', + '_$s10Foundation17_CalendarProtocolP6localeAA6LocaleVSgvgTj', + '_$s10Foundation17_CalendarProtocolP6localeAA6LocaleVSgvgTq', + '_$s10Foundation17_CalendarProtocolP8timeZoneAA04TimeE0VvgTj', + '_$s10Foundation17_CalendarProtocolP8timeZoneAA04TimeE0VvgTq', + '_$s10Foundation17_CalendarProtocolP9isBridgedSbvgTj', '_$s10Foundation17_CalendarProtocolP9isBridgedSbvgTq', + '_$s10Foundation17_CalendarProtocolPAAE14isAutoupdatingSbvg', + '_$s10Foundation17_CalendarProtocolPAAE14isAutoupdatingSbvpMV', + '_$s10Foundation17_CalendarProtocolPAAE16debugDescriptionSSvg', + '_$s10Foundation17_CalendarProtocolPAAE16debugDescriptionSSvpMV', + '_$s10Foundation17_CalendarProtocolPAAE16localeIdentifierSSvg', + '_$s10Foundation17_CalendarProtocolPAAE16localeIdentifierSSvpMV', + '_$s10Foundation17_CalendarProtocolPAAE18gregorianStartDateAA0F0VSgvg', + '_$s10Foundation17_CalendarProtocolPAAE18gregorianStartDateAA0F0VSgvpMV', + '_$s10Foundation17_CalendarProtocolPAAE21preferredFirstWeekdaySiSgvg', + '_$s10Foundation17_CalendarProtocolPAAE21preferredFirstWeekdaySiSgvpMV', + '_$s10Foundation17_CalendarProtocolPAAE31preferredMinimumDaysInFirstweekSiSgvg', + '_$s10Foundation17_CalendarProtocolPAAE31preferredMinimumDaysInFirstweekSiSgvpMV', + '_$s10Foundation17_CalendarProtocolPAAE9isBridgedSbvg', '_$s10Foundation17_CalendarProtocolPAAE9isBridgedSbvpMV', + '_$s10Foundation17_CalendarProtocolPs28CustomDebugStringConvertibleTb', + '_$s10Foundation17_CalendarProtocolTL', '_$s10Foundation17_TimeZoneProtocolMp', + '_$s10Foundation17_TimeZoneProtocolP014bridgeToNSTimeC0So0gC0CyFTj', + '_$s10Foundation17_TimeZoneProtocolP014bridgeToNSTimeC0So0gC0CyFTq', + '_$s10Foundation17_TimeZoneProtocolP014daylightSavingB6Offset3forSdAA4DateV_tFTj', + '_$s10Foundation17_TimeZoneProtocolP014daylightSavingB6Offset3forSdAA4DateV_tFTq', + '_$s10Foundation17_TimeZoneProtocolP016isDaylightSavingB03forSbAA4DateV_tFTj', + '_$s10Foundation17_TimeZoneProtocolP016isDaylightSavingB03forSbAA4DateV_tFTq', + '_$s10Foundation17_TimeZoneProtocolP018nextDaylightSavingB10Transition5afterAA4DateVSgAG_tFTj', + '_$s10Foundation17_TimeZoneProtocolP018nextDaylightSavingB10Transition5afterAA4DateVSgAG_tFTq', + '_$s10Foundation17_TimeZoneProtocolP020rawAndDaylightSavingB6Offset3for08repeatedB6Policy07skippedbL0Si0eI0_Sd08daylighthI0tAA4DateV_AA0bC0V0ghbL0OAOtFTj', + '_$s10Foundation17_TimeZoneProtocolP020rawAndDaylightSavingB6Offset3for08repeatedB6Policy07skippedbL0Si0eI0_Sd08daylighthI0tAA4DateV_AA0bC0V0ghbL0OAOtFTq', + '_$s10Foundation17_TimeZoneProtocolP10identifierSSvgTj', '_$s10Foundation17_TimeZoneProtocolP10identifierSSvgTq', + '_$s10Foundation17_TimeZoneProtocolP10identifierxSgSS_tcfCTj', + '_$s10Foundation17_TimeZoneProtocolP10identifierxSgSS_tcfCTq', + '_$s10Foundation17_TimeZoneProtocolP12abbreviation3forSSSgAA4DateV_tFTj', + '_$s10Foundation17_TimeZoneProtocolP12abbreviation3forSSSgAA4DateV_tFTq', + '_$s10Foundation17_TimeZoneProtocolP13localizedName3for6localeSSSgSo06NSTimecF5StyleV_AA6LocaleVSgtFTj', + '_$s10Foundation17_TimeZoneProtocolP13localizedName3for6localeSSSgSo06NSTimecF5StyleV_AA6LocaleVSgtFTq', + '_$s10Foundation17_TimeZoneProtocolP14isAutoupdatingSbvgTj', + '_$s10Foundation17_TimeZoneProtocolP14isAutoupdatingSbvgTq', + '_$s10Foundation17_TimeZoneProtocolP14secondsFromGMT3forSiAA4DateV_tFTj', + '_$s10Foundation17_TimeZoneProtocolP14secondsFromGMT3forSiAA4DateV_tFTq', + '_$s10Foundation17_TimeZoneProtocolP14secondsFromGMTxSgSi_tcfCTj', + '_$s10Foundation17_TimeZoneProtocolP14secondsFromGMTxSgSi_tcfCTq', + '_$s10Foundation17_TimeZoneProtocolP4dataAA4DataVSgvgTj', + '_$s10Foundation17_TimeZoneProtocolP4dataAA4DataVSgvgTq', + '_$s10Foundation17_TimeZoneProtocolP4hash4intoys6HasherVz_tFTj', + '_$s10Foundation17_TimeZoneProtocolP4hash4intoys6HasherVz_tFTq', + '_$s10Foundation17_TimeZoneProtocolPAAE014bridgeToNSTimeC0So0gC0CyF', + '_$s10Foundation17_TimeZoneProtocolPAAE14isAutoupdatingSbvg', + '_$s10Foundation17_TimeZoneProtocolPAAE14isAutoupdatingSbvpMV', + '_$s10Foundation17_TimeZoneProtocolPAAE16debugDescriptionSSvg', + '_$s10Foundation17_TimeZoneProtocolPAAE16debugDescriptionSSvpMV', + '_$s10Foundation17_TimeZoneProtocolPAAE4dataAA4DataVSgvg', + '_$s10Foundation17_TimeZoneProtocolPAAE4dataAA4DataVSgvpMV', + '_$s10Foundation17_TimeZoneProtocolPAAE4hash4intoys6HasherVz_tF', + '_$s10Foundation17_TimeZoneProtocolPs28CustomDebugStringConvertibleTb', + '_$s10Foundation17_TimeZoneProtocolTL', '_$s10Foundation18AttributeContainerV11descriptionSSvg', + '_$s10Foundation18AttributeContainerV11descriptionSSvpMV', '_$s10Foundation18AttributeContainerV13dynamicMember5ValueQzSgs7KeyPathCyAA0B13DynamicLookupOxG_tcAA016AttributedStringG0RzluiM', '_$s10Foundation18AttributeContainerV13dynamicMember5ValueQzSgs7KeyPathCyAA0B13DynamicLookupOxG_tcAA016AttributedStringG0Rzluig', '_$s10Foundation18AttributeContainerV13dynamicMember5ValueQzSgs7KeyPathCyAA0B13DynamicLookupOxG_tcAA016AttributedStringG0RzluipMV', @@ -3787,6 +4096,7 @@ exports: '_$s10Foundation18AttributeContainerV13dynamicMemberAC7BuilderVy_xGs7KeyPathCyAA0B13DynamicLookupOxG_tcAA016AttributedStringG0Rzluig', '_$s10Foundation18AttributeContainerV13dynamicMemberAC7BuilderVy_xGs7KeyPathCyAA0B13DynamicLookupOxG_tcAA016AttributedStringG0RzluigZ', '_$s10Foundation18AttributeContainerV13dynamicMemberAC7BuilderVy_xGs7KeyPathCyAA0B13DynamicLookupOxG_tcAA016AttributedStringG0RzluipMV', + '_$s10Foundation18AttributeContainerV13dynamicMemberAC7BuilderVy_xGs7KeyPathCyAA0B13DynamicLookupOxG_tcAA016AttributedStringG0RzluipZMV', '_$s10Foundation18AttributeContainerV2eeoiySbAC_ACtFZ', '_$s10Foundation18AttributeContainerV4from13configurationACs7Decoder_p_AA0B25ScopeCodableConfigurationVtKcfC', '_$s10Foundation18AttributeContainerV4hash4intoys6HasherVz_tF', '_$s10Foundation18AttributeContainerV5merge_0D6PolicyyAC_AA16AttributedStringV0b5MergeE0OtF', @@ -3900,6 +4210,7 @@ exports: '_$s10Foundation18IntegerFormatStyleV8CurrencyV6localeyAEyx_GAA6LocaleVF', '_$s10Foundation18IntegerFormatStyleV8CurrencyV7rounded4rule9incrementAEyx_Gs25FloatingPointRoundingRuleO_SiSgtF', '_$s10Foundation18IntegerFormatStyleV8CurrencyV8groupingyAEyx_GAA06NumbercD13ConfigurationO8GroupingVF', + '_$s10Foundation18IntegerFormatStyleV8CurrencyV8notationyAEyx_GAA06NumbercD13ConfigurationO8NotationVF', '_$s10Foundation18IntegerFormatStyleV8CurrencyV9consuming_10startingAt2inSS5IndexV10upperBound_x6outputtSgSS_AJSnyAJGtKF', '_$s10Foundation18IntegerFormatStyleV8CurrencyV9hashValueSivg', '_$s10Foundation18IntegerFormatStyleV8CurrencyV9hashValueSivpMV', @@ -3928,9 +4239,21 @@ exports: '_$s10Foundation18IntegerFormatStyleVyxGAA0cD0AAMc', '_$s10Foundation18IntegerFormatStyleVyxGAA0cD0AAWP', '_$s10Foundation18IntegerFormatStyleVyxGSEAAMc', '_$s10Foundation18IntegerFormatStyleVyxGSHAAMc', '_$s10Foundation18IntegerFormatStyleVyxGSQAAMc', '_$s10Foundation18IntegerFormatStyleVyxGSeAAMc', + '_$s10Foundation18NSDecimalNormalizeySo18NSCalculationErrorVSpySo0B0aG_AGSo14NSRoundingModeVtF', '_$s10Foundation18NSIndexSetIteratorV4nextSiSgyF', '_$s10Foundation18NSIndexSetIteratorVMa', '_$s10Foundation18NSIndexSetIteratorVMn', '_$s10Foundation18NSIndexSetIteratorVN', - '_$s10Foundation18NSIndexSetIteratorVStAAMc', '_$s10Foundation18PresentationIntentV0C4TypeV16debugDescriptionSSvg', + '_$s10Foundation18NSIndexSetIteratorVStAAMc', '_$s10Foundation18OptionalComparatorV2eeoiySbACyxG_AEtFZ', + '_$s10Foundation18OptionalComparatorV4hash4intoys6HasherVz_tF', + '_$s10Foundation18OptionalComparatorV5orderAA9SortOrderOvM', + '_$s10Foundation18OptionalComparatorV5orderAA9SortOrderOvg', + '_$s10Foundation18OptionalComparatorV5orderAA9SortOrderOvpMV', + '_$s10Foundation18OptionalComparatorV5orderAA9SortOrderOvs', + '_$s10Foundation18OptionalComparatorV7compareySo18NSComparisonResultV8ComparedQzSg_AItF', + '_$s10Foundation18OptionalComparatorV9hashValueSivg', '_$s10Foundation18OptionalComparatorV9hashValueSivpMV', + '_$s10Foundation18OptionalComparatorVMa', '_$s10Foundation18OptionalComparatorVMn', + '_$s10Foundation18OptionalComparatorVyACyxGxcfC', '_$s10Foundation18OptionalComparatorVyxGAA04SortC0AAMc', + '_$s10Foundation18OptionalComparatorVyxGAA04SortC0AAWP', '_$s10Foundation18OptionalComparatorVyxGSHAAMc', + '_$s10Foundation18OptionalComparatorVyxGSQAAMc', '_$s10Foundation18PresentationIntentV0C4TypeV16debugDescriptionSSvg', '_$s10Foundation18PresentationIntentV0C4TypeV16debugDescriptionSSvpMV', '_$s10Foundation18PresentationIntentV0C4TypeV2eeoiySbAE_AEtFZ', '_$s10Foundation18PresentationIntentV0C4TypeV4fromAEs7Decoder_p_tKcfC', @@ -4087,7 +4410,24 @@ exports: '_$s10Foundation19AttributedSubstringVy5ValueQzSgxmcAA0B9StringKeyRzluis', '_$s10Foundation19AttributedSubstringVyACxcSXRzAA0B6StringV5IndexV5BoundRtzluig', '_$s10Foundation19AttributedSubstringVyACxcSXRzAA0B6StringV5IndexV5BoundRtzluipMV', - '_$s10Foundation19MutableDataProtocolMp', '_$s10Foundation19MutableDataProtocolP10resetBytes2inyqd___tSXRd__5BoundQyd__5IndexRtzlFTj', + '_$s10Foundation19DiscreteFormatStyleMp', '_$s10Foundation19DiscreteFormatStyleP13discreteInput5after0cF0QzSgAG_tFTj', + '_$s10Foundation19DiscreteFormatStyleP13discreteInput5after0cF0QzSgAG_tFTq', + '_$s10Foundation19DiscreteFormatStyleP13discreteInput6before0cF0QzSgAG_tFTj', + '_$s10Foundation19DiscreteFormatStyleP13discreteInput6before0cF0QzSgAG_tFTq', + '_$s10Foundation19DiscreteFormatStyleP5input5after0C5InputQzSgAG_tFTj', + '_$s10Foundation19DiscreteFormatStyleP5input5after0C5InputQzSgAG_tFTq', + '_$s10Foundation19DiscreteFormatStyleP5input6before0C5InputQzSgAG_tFTj', + '_$s10Foundation19DiscreteFormatStyleP5input6before0C5InputQzSgAG_tFTq', + '_$s10Foundation19DiscreteFormatStylePA2A4DateV0C5InputRtzrlE5input5afterAESgAE_tF', + '_$s10Foundation19DiscreteFormatStylePA2A4DateV0C5InputRtzrlE5input6beforeAESgAE_tF', + '_$s10Foundation19DiscreteFormatStylePAA0cD0Tb', '_$s10Foundation19DiscreteFormatStylePAASF0C5InputRpzrlE5input5afterAESgAE_tF', + '_$s10Foundation19DiscreteFormatStylePAASF0C5InputRpzrlE5input6beforeAESgAE_tF', + '_$s10Foundation19DiscreteFormatStylePAAs17FixedWidthInteger0C5InputRpzrlE5input5afterAFSgAF_tF', + '_$s10Foundation19DiscreteFormatStylePAAs17FixedWidthInteger0C5InputRpzrlE5input6beforeAFSgAF_tF', + '_$s10Foundation19DiscreteFormatStylePAAs8DurationV0C5InputRtzrlE5input5afterAESgAE_tF', + '_$s10Foundation19DiscreteFormatStylePAAs8DurationV0C5InputRtzrlE5input6beforeAESgAE_tF', + '_$s10Foundation19DiscreteFormatStyleTL', '_$s10Foundation19MutableDataProtocolMp', + '_$s10Foundation19MutableDataProtocolP10resetBytes2inyqd___tSXRd__5BoundQyd__5IndexRtzlFTj', '_$s10Foundation19MutableDataProtocolP10resetBytes2inyqd___tSXRd__5BoundQyd__5IndexRtzlFTq', '_$s10Foundation19MutableDataProtocolPAA0cD0Tb', '_$s10Foundation19MutableDataProtocolPAAE10resetBytes2inyqd___tSXRd__5BoundQyd__5IndexRtzlF', '_$s10Foundation19MutableDataProtocolPSMTb', '_$s10Foundation19MutableDataProtocolPSmTb', @@ -4147,13 +4487,7 @@ exports: '_$s10Foundation19PropertyListEncoderCMn', '_$s10Foundation19PropertyListEncoderCMo', '_$s10Foundation19PropertyListEncoderCMu', '_$s10Foundation19PropertyListEncoderCN', '_$s10Foundation19PropertyListEncoderCfD', '_$s10Foundation19PropertyListEncoderCfd', - '_$s10Foundation19_ObservedChanges_v3V17makeAsyncIteratorAC0G0Vyxq__GyF', - '_$s10Foundation19_ObservedChanges_v3V8IteratorV4nextq_SgyYaF', - '_$s10Foundation19_ObservedChanges_v3V8IteratorV4nextq_SgyYaFTu', - '_$s10Foundation19_ObservedChanges_v3V8IteratorVMa', '_$s10Foundation19_ObservedChanges_v3V8IteratorVMn', - '_$s10Foundation19_ObservedChanges_v3V8IteratorVyxq__GScIAAMc', - '_$s10Foundation19_ObservedChanges_v3VMa', '_$s10Foundation19_ObservedChanges_v3VMn', - '_$s10Foundation19_ObservedChanges_v3Vyxq_GSciAAMc', '_$s10Foundation20ByteCountFormatStyleV014includesActualbC0SbvM', + '_$s10Foundation20ByteCountFormatStyleV014includesActualbC0SbvM', '_$s10Foundation20ByteCountFormatStyleV014includesActualbC0Sbvg', '_$s10Foundation20ByteCountFormatStyleV014includesActualbC0SbvpMV', '_$s10Foundation20ByteCountFormatStyleV014includesActualbC0Sbvs', @@ -4219,12 +4553,20 @@ exports: '_$s10Foundation20ByteCountFormatStyleV4fromACs7Decoder_p_tKcfC', '_$s10Foundation20ByteCountFormatStyleV4hash4intoys6HasherVz_tF', '_$s10Foundation20ByteCountFormatStyleV5UnitsV10ybOrHigherAEvgZ', - '_$s10Foundation20ByteCountFormatStyleV5UnitsV2ebAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV2gbAEvgZ', - '_$s10Foundation20ByteCountFormatStyleV5UnitsV2kbAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV2mbAEvgZ', - '_$s10Foundation20ByteCountFormatStyleV5UnitsV2pbAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV2tbAEvgZ', - '_$s10Foundation20ByteCountFormatStyleV5UnitsV2zbAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV3allAEvgZ', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV10ybOrHigherAEvpZMV', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV2ebAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV2ebAEvpZMV', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV2gbAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV2gbAEvpZMV', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV2kbAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV2kbAEvpZMV', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV2mbAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV2mbAEvpZMV', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV2pbAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV2pbAEvpZMV', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV2tbAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV2tbAEvpZMV', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV2zbAEvgZ', '_$s10Foundation20ByteCountFormatStyleV5UnitsV2zbAEvpZMV', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV3allAEvgZ', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV3allAEvpZMV', '_$s10Foundation20ByteCountFormatStyleV5UnitsV5bytesAEvgZ', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV5bytesAEvpZMV', '_$s10Foundation20ByteCountFormatStyleV5UnitsV7defaultAEvgZ', + '_$s10Foundation20ByteCountFormatStyleV5UnitsV7defaultAEvpZMV', '_$s10Foundation20ByteCountFormatStyleV5UnitsV8rawValueAESu_tcfC', '_$s10Foundation20ByteCountFormatStyleV5UnitsV8rawValueSuvM', '_$s10Foundation20ByteCountFormatStyleV5UnitsV8rawValueSuvg', @@ -4453,22 +4795,63 @@ exports: '_$s10Foundation20PersonNameComponentsVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation20PersonNameComponentsVs23CustomStringConvertibleAAMc', '_$s10Foundation20PersonNameComponentsVs28CustomDebugStringConvertibleAAMc', - '_$s10Foundation20PersonNameComponentsVyACSSKcfC', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0V4base5otherAEy_xq_Gx_q_tcfC', + '_$s10Foundation20PersonNameComponentsVyACSSKcfC', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0V11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0V11descriptionSSvpMV', + '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0V4base5otherAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0V4basexvg', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0V4basexvpMV', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0V5otherq_vg', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0V5otherq_vpMV', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0V8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0VA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0VAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0VAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0VMa', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0VMn', + '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0Vy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0Vy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0Vy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0Vy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0Vy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0Vy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0Vy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0Vy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO018CollectionContainsD0Vy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO0B5RegexV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO0B5RegexV11descriptionSSvpMV', + '_$s10Foundation20PredicateExpressionsO0B5RegexV17_StringProcessing0D9ComponentAAMc', + '_$s10Foundation20PredicateExpressionsO0B5RegexV20stringRepresentationSSvg', + '_$s10Foundation20PredicateExpressionsO0B5RegexV20stringRepresentationSSvpMV', + '_$s10Foundation20PredicateExpressionsO0B5RegexV4fromAEs7Decoder_p_tKcfC', + '_$s10Foundation20PredicateExpressionsO0B5RegexV5regex17_StringProcessing0D0VyAG03AnyD6OutputVGvg', + '_$s10Foundation20PredicateExpressionsO0B5RegexV5regex17_StringProcessing0D0VyAG03AnyD6OutputVGvpMV', + '_$s10Foundation20PredicateExpressionsO0B5RegexV6encode2toys7Encoder_p_tKF', + '_$s10Foundation20PredicateExpressionsO0B5RegexVMa', '_$s10Foundation20PredicateExpressionsO0B5RegexVMn', + '_$s10Foundation20PredicateExpressionsO0B5RegexVN', '_$s10Foundation20PredicateExpressionsO0B5RegexVSEAAMc', + '_$s10Foundation20PredicateExpressionsO0B5RegexVSeAAMc', '_$s10Foundation20PredicateExpressionsO0B5RegexVs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO0B5RegexVyAESgxc17_StringProcessing0D9ComponentRzlufC', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateV11descriptionSSvpMV', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateV5inputq_q_Qp_tvg', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateV9predicate5inputAEy_xq_q_Qp_QPGx_q_q_QptcfC', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateV9predicatexvg', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateV9predicatexvpMV', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVA2A022DebugStringConvertibleB10ExpressionRzAaFR_AA0B0Vy6OutputQy_q_Qp_QPGAIRtzrlE05debugF05stateSSAA0eF15ConversionStateVz_tF', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVAASeRzSERzSeR_SER_AA0B0Vy6OutputAA0B10ExpressionPQy_q_Qp_QPGAhJRtzrlE4fromAEy_xq_q_Qp_QPGs7Decoder_p_tKcfC', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVAASeRzSERzSeR_SER_AA0B0Vy6OutputAA0B10ExpressionPQy_q_Qp_QPGAhJRtzrlE6encode2toys7Encoder_p_tKF', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVMa', '_$s10Foundation20PredicateExpressionsO0B8EvaluateVMn', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVy_xq_q_Qp_QPGAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_AA0B0Vy6OutputQy_q_Qp_QPGAJRtzrlMc', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVy_xq_q_Qp_QPGAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_AA0B0Vy6OutputQy_q_Qp_QPGAJRtzrlWP', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVy_xq_q_Qp_QPGAA08StandardB10ExpressionA2aGRzAaGR_AA0B0Vy6OutputQy_q_Qp_QPGAJRtzrlMc', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVy_xq_q_Qp_QPGAA08StandardB10ExpressionA2aGRzAaGR_AA0B0Vy6OutputQy_q_Qp_QPGAJRtzrlWP', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVy_xq_q_Qp_QPGAA0B10ExpressionAAMc', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVy_xq_q_Qp_QPGAA0B10ExpressionAAWP', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVy_xq_q_Qp_QPGSEAASeRzSERzSeR_SER_AA0B0Vy6OutputAA0B10ExpressionPQy_q_Qp_QPGAiKRtzrlMc', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVy_xq_q_Qp_QPGSeAASeRzSERzSeR_SER_AA0B0Vy6OutputAA0B10ExpressionPQy_q_Qp_QPGAiKRtzrlMc', + '_$s10Foundation20PredicateExpressionsO0B8EvaluateVy_xq_q_Qp_QPGs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO10ArithmeticV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO10ArithmeticV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO10ArithmeticV2opAC0D8OperatorOvg', '_$s10Foundation20PredicateExpressionsO10ArithmeticV2opAC0D8OperatorOvpMV', '_$s10Foundation20PredicateExpressionsO10ArithmeticV3lhs3rhs2opAEy_xq_Gx_q_AC0D8OperatorOtcfC', @@ -4477,15 +4860,21 @@ exports: '_$s10Foundation20PredicateExpressionsO10ArithmeticV3rhsq_vg', '_$s10Foundation20PredicateExpressionsO10ArithmeticV3rhsq_vpMV', '_$s10Foundation20PredicateExpressionsO10ArithmeticV8evaluatey6OutputQzAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO10ArithmeticVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugF05stateSSAA0eF15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO10ArithmeticVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO10ArithmeticVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO10ArithmeticVMa', '_$s10Foundation20PredicateExpressionsO10ArithmeticVMn', + '_$s10Foundation20PredicateExpressionsO10ArithmeticVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO10ArithmeticVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO10ArithmeticVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO10ArithmeticVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO10ArithmeticVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO10ArithmeticVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO10ArithmeticVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO10ArithmeticVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO10ArithmeticVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO10ComparisonV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO10ComparisonV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO10ComparisonV2opAC0D8OperatorOvg', '_$s10Foundation20PredicateExpressionsO10ComparisonV2opAC0D8OperatorOvpMV', '_$s10Foundation20PredicateExpressionsO10ComparisonV3lhs3rhs2opAEy_xq_Gx_q_AC0D8OperatorOtcfC', @@ -4494,39 +4883,52 @@ exports: '_$s10Foundation20PredicateExpressionsO10ComparisonV3rhsq_vg', '_$s10Foundation20PredicateExpressionsO10ComparisonV3rhsq_vpMV', '_$s10Foundation20PredicateExpressionsO10ComparisonV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO10ComparisonVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugF05stateSSAA0eF15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO10ComparisonVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO10ComparisonVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO10ComparisonVMa', '_$s10Foundation20PredicateExpressionsO10ComparisonVMn', + '_$s10Foundation20PredicateExpressionsO10ComparisonVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO10ComparisonVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO10ComparisonVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO10ComparisonVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO10ComparisonVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO10ComparisonVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO10ComparisonVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO10ComparisonVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO10ComparisonVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO10NilLiteralV11debugString5stateSSAA05DebugG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO10NilLiteralV4fromAEy_xGs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO10NilLiteralV6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO10NilLiteralV8evaluateyxSgAA0B8BindingsVKF', '_$s10Foundation20PredicateExpressionsO10NilLiteralVAEy_xGycfC', '_$s10Foundation20PredicateExpressionsO10NilLiteralVMa', '_$s10Foundation20PredicateExpressionsO10NilLiteralVMn', + '_$s10Foundation20PredicateExpressionsO10NilLiteralVy_xGAA022DebugStringConvertibleB10ExpressionAAMc', + '_$s10Foundation20PredicateExpressionsO10NilLiteralVy_xGAA022DebugStringConvertibleB10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO10NilLiteralVy_xGAA08StandardB10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO10NilLiteralVy_xGAA08StandardB10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO10NilLiteralVy_xGAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO10NilLiteralVy_xGAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO10NilLiteralVy_xGSEAAMc', '_$s10Foundation20PredicateExpressionsO10NilLiteralVy_xGSeAAMc', + '_$s10Foundation20PredicateExpressionsO10UnaryMinusV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO10UnaryMinusV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO10UnaryMinusV7wrappedxvg', '_$s10Foundation20PredicateExpressionsO10UnaryMinusV7wrappedxvpMV', '_$s10Foundation20PredicateExpressionsO10UnaryMinusV8evaluatey6OutputQzAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO10UnaryMinusVA2A022DebugStringConvertibleB10ExpressionRzrlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVAASeRzSERzrlE4fromAEy_xGs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVAASeRzSERzrlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVMa', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVMn', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVyAEy_xGxcfC', + '_$s10Foundation20PredicateExpressionsO10UnaryMinusVy_xGAA022DebugStringConvertibleB10ExpressionA2aGRzrlMc', + '_$s10Foundation20PredicateExpressionsO10UnaryMinusVy_xGAA022DebugStringConvertibleB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVy_xGAA08StandardB10ExpressionA2aGRzrlMc', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVy_xGAA08StandardB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVy_xGAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVy_xGAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVy_xGSEAASeRzSERzrlMc', '_$s10Foundation20PredicateExpressionsO10UnaryMinusVy_xGSeAASeRzSERzrlMc', + '_$s10Foundation20PredicateExpressionsO10UnaryMinusVy_xGs23CustomStringConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO10VariableIDV2eeoiySbAE_AEtFZ', '_$s10Foundation20PredicateExpressionsO10VariableIDV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO10VariableIDV4hash4intoys6HasherVz_tF', @@ -4538,154 +4940,208 @@ exports: '_$s10Foundation20PredicateExpressionsO10VariableIDVSHAAMc', '_$s10Foundation20PredicateExpressionsO10VariableIDVSQAAMc', '_$s10Foundation20PredicateExpressionsO10VariableIDVSeAAMc', + '_$s10Foundation20PredicateExpressionsO11ClosedRangeV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO11ClosedRangeV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO11ClosedRangeV5lower5upperAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO11ClosedRangeV5lowerxvg', '_$s10Foundation20PredicateExpressionsO11ClosedRangeV5lowerxvpMV', '_$s10Foundation20PredicateExpressionsO11ClosedRangeV5upperq_vg', '_$s10Foundation20PredicateExpressionsO11ClosedRangeV5upperq_vpMV', '_$s10Foundation20PredicateExpressionsO11ClosedRangeV8evaluateySNy6OutputQzGAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO11ClosedRangeVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO11ClosedRangeVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO11ClosedRangeVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO11ClosedRangeVMa', '_$s10Foundation20PredicateExpressionsO11ClosedRangeVMn', + '_$s10Foundation20PredicateExpressionsO11ClosedRangeVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO11ClosedRangeVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO11ClosedRangeVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO11ClosedRangeVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO11ClosedRangeVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO11ClosedRangeVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO11ClosedRangeVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO11ClosedRangeVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO11ClosedRangeVy_xq_Gs23CustomStringConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO11ConditionalV10trueBranchq_vg', '_$s10Foundation20PredicateExpressionsO11ConditionalV10trueBranchq_vpMV', + '_$s10Foundation20PredicateExpressionsO11ConditionalV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO11ConditionalV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO11ConditionalV11falseBranchq0_vg', '_$s10Foundation20PredicateExpressionsO11ConditionalV11falseBranchq0_vpMV', '_$s10Foundation20PredicateExpressionsO11ConditionalV4test10trueBranch05falseG0AEy_xq_q0_Gx_q_q0_tcfC', '_$s10Foundation20PredicateExpressionsO11ConditionalV4testxvg', '_$s10Foundation20PredicateExpressionsO11ConditionalV4testxvpMV', '_$s10Foundation20PredicateExpressionsO11ConditionalV8evaluatey6OutputQy_AA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO11ConditionalVA2A022DebugStringConvertibleB10ExpressionRzAaFR_AaFR0_rlE05debugF05stateSSAA0eF15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO11ConditionalVAASeRzSERzSeR_SER_SeR0_SER0_rlE4fromAEy_xq_q0_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO11ConditionalVAASeRzSERzSeR_SER_SeR0_SER0_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO11ConditionalVMa', '_$s10Foundation20PredicateExpressionsO11ConditionalVMn', + '_$s10Foundation20PredicateExpressionsO11ConditionalVy_xq_q0_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_AaGR0_rlMc', + '_$s10Foundation20PredicateExpressionsO11ConditionalVy_xq_q0_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_AaGR0_rlWP', '_$s10Foundation20PredicateExpressionsO11ConditionalVy_xq_q0_GAA08StandardB10ExpressionA2aGRzAaGR_AaGR0_rlMc', '_$s10Foundation20PredicateExpressionsO11ConditionalVy_xq_q0_GAA08StandardB10ExpressionA2aGRzAaGR_AaGR0_rlWP', '_$s10Foundation20PredicateExpressionsO11ConditionalVy_xq_q0_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO11ConditionalVy_xq_q0_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO11ConditionalVy_xq_q0_GSEAASeRzSERzSeR_SER_SeR0_SER0_rlMc', '_$s10Foundation20PredicateExpressionsO11ConditionalVy_xq_q0_GSeAASeRzSERzSeR_SER_SeR0_SER0_rlMc', + '_$s10Foundation20PredicateExpressionsO11ConditionalVy_xq_q0_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO11ConjunctionV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO11ConjunctionV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO11ConjunctionV3lhs3rhsAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO11ConjunctionV3lhsxvg', '_$s10Foundation20PredicateExpressionsO11ConjunctionV3lhsxvpMV', '_$s10Foundation20PredicateExpressionsO11ConjunctionV3rhsq_vg', '_$s10Foundation20PredicateExpressionsO11ConjunctionV3rhsq_vpMV', '_$s10Foundation20PredicateExpressionsO11ConjunctionV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO11ConjunctionVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugF05stateSSAA0eF15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO11ConjunctionVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO11ConjunctionVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO11ConjunctionVMa', '_$s10Foundation20PredicateExpressionsO11ConjunctionVMn', + '_$s10Foundation20PredicateExpressionsO11ConjunctionVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO11ConjunctionVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO11ConjunctionVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO11ConjunctionVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO11ConjunctionVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO11ConjunctionVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO11ConjunctionVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO11ConjunctionVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO11ConjunctionVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO11DisjunctionV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO11DisjunctionV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO11DisjunctionV3lhs3rhsAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO11DisjunctionV3lhsxvg', '_$s10Foundation20PredicateExpressionsO11DisjunctionV3lhsxvpMV', '_$s10Foundation20PredicateExpressionsO11DisjunctionV3rhsq_vg', '_$s10Foundation20PredicateExpressionsO11DisjunctionV3rhsq_vpMV', '_$s10Foundation20PredicateExpressionsO11DisjunctionV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO11DisjunctionVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugF05stateSSAA0eF15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO11DisjunctionVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO11DisjunctionVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO11DisjunctionVMa', '_$s10Foundation20PredicateExpressionsO11DisjunctionVMn', + '_$s10Foundation20PredicateExpressionsO11DisjunctionVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO11DisjunctionVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO11DisjunctionVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO11DisjunctionVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO11DisjunctionVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO11DisjunctionVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO11DisjunctionVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO11DisjunctionVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO11DisjunctionVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO11IntDivisionV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO11IntDivisionV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO11IntDivisionV3lhs3rhsAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO11IntDivisionV3lhsxvg', '_$s10Foundation20PredicateExpressionsO11IntDivisionV3lhsxvpMV', '_$s10Foundation20PredicateExpressionsO11IntDivisionV3rhsq_vg', '_$s10Foundation20PredicateExpressionsO11IntDivisionV3rhsq_vpMV', '_$s10Foundation20PredicateExpressionsO11IntDivisionV8evaluatey6OutputQzAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO11IntDivisionVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO11IntDivisionVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO11IntDivisionVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO11IntDivisionVMa', '_$s10Foundation20PredicateExpressionsO11IntDivisionVMn', + '_$s10Foundation20PredicateExpressionsO11IntDivisionVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO11IntDivisionVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO11IntDivisionVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO11IntDivisionVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO11IntDivisionVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO11IntDivisionVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO11IntDivisionVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO11IntDivisionVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO11IntDivisionVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO11NilCoalesceV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO11NilCoalesceV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO11NilCoalesceV3lhs3rhsAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO11NilCoalesceV3lhsxvg', '_$s10Foundation20PredicateExpressionsO11NilCoalesceV3lhsxvpMV', '_$s10Foundation20PredicateExpressionsO11NilCoalesceV3rhsq_vg', '_$s10Foundation20PredicateExpressionsO11NilCoalesceV3rhsq_vpMV', '_$s10Foundation20PredicateExpressionsO11NilCoalesceV8evaluatey6OutputQy_AA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO11NilCoalesceVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO11NilCoalesceVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO11NilCoalesceVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO11NilCoalesceVMa', '_$s10Foundation20PredicateExpressionsO11NilCoalesceVMn', + '_$s10Foundation20PredicateExpressionsO11NilCoalesceVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO11NilCoalesceVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO11NilCoalesceVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO11NilCoalesceVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO11NilCoalesceVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO11NilCoalesceVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO11NilCoalesceVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO11NilCoalesceVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO11NilCoalesceVy_xq_Gs23CustomStringConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO11build_Equal3lhs3rhsAC0E0Vy_xq_Gx_q_tAA0B10ExpressionRzAaJR_SQ6OutputRpzAKQy_ALRSr0_lFZ', '_$s10Foundation20PredicateExpressionsO11build_Range5lower5upperAC0E0Vy_xq_Gx_q_tAA0B10ExpressionRzAaJR_SL6OutputRpzAKQy_ALRSr0_lFZ', + '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapV5innerxvg', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapV5innerxvpMV', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapV8evaluateyq_AA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVA2A022DebugStringConvertibleB10ExpressionRzrlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVAASeRzSERzrlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVAASeRzSERzrlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVMa', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVMn', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVyAEy_xq_GxcfC', + '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzrlMc', + '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVy_xq_GAA08StandardB10ExpressionA2aGRzrlMc', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVy_xq_GAA08StandardB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVy_xq_GSEAASeRzSERzrlMc', '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVy_xq_GSeAASeRzSERzrlMc', + '_$s10Foundation20PredicateExpressionsO12ForcedUnwrapVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO12IntRemainderV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO12IntRemainderV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO12IntRemainderV3lhs3rhsAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO12IntRemainderV3lhsxvg', '_$s10Foundation20PredicateExpressionsO12IntRemainderV3lhsxvpMV', '_$s10Foundation20PredicateExpressionsO12IntRemainderV3rhsq_vg', '_$s10Foundation20PredicateExpressionsO12IntRemainderV3rhsq_vpMV', '_$s10Foundation20PredicateExpressionsO12IntRemainderV8evaluatey6OutputQzAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO12IntRemainderVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO12IntRemainderVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO12IntRemainderVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO12IntRemainderVMa', '_$s10Foundation20PredicateExpressionsO12IntRemainderVMn', + '_$s10Foundation20PredicateExpressionsO12IntRemainderVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO12IntRemainderVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO12IntRemainderVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO12IntRemainderVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO12IntRemainderVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO12IntRemainderVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO12IntRemainderVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO12IntRemainderVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO12IntRemainderVy_xq_Gs23CustomStringConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO12build_filteryAC6FilterVy_xq_Gx_q_AC8VariableVy_6Output_7ElementQZGXEtAA0B10ExpressionRzAaNR_STAJRpzSbAJRt_r0_lFZ', '_$s10Foundation20PredicateExpressionsO12build_starts_4withAC18SequenceStartsWithVy_xq_Gx_q_tAA0B10ExpressionRzAaIR_ST6OutputRpzSTAJRp_SQAJ_7ElementRPzAJ_AMQY_ANRSr0_lFZ', + '_$s10Foundation20PredicateExpressionsO13FloatDivisionV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO13FloatDivisionV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO13FloatDivisionV3lhs3rhsAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO13FloatDivisionV3lhsxvg', '_$s10Foundation20PredicateExpressionsO13FloatDivisionV3lhsxvpMV', '_$s10Foundation20PredicateExpressionsO13FloatDivisionV3rhsq_vg', '_$s10Foundation20PredicateExpressionsO13FloatDivisionV3rhsq_vpMV', '_$s10Foundation20PredicateExpressionsO13FloatDivisionV8evaluatey6OutputQzAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO13FloatDivisionVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO13FloatDivisionVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO13FloatDivisionVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO13FloatDivisionVMa', '_$s10Foundation20PredicateExpressionsO13FloatDivisionVMn', + '_$s10Foundation20PredicateExpressionsO13FloatDivisionVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO13FloatDivisionVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO13FloatDivisionVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO13FloatDivisionVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO13FloatDivisionVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO13FloatDivisionVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO13FloatDivisionVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO13FloatDivisionVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO13FloatDivisionVy_xq_Gs23CustomStringConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO13build_KeyPath4root03keyF0AC0eF0Vy_xq_Gx_sAGCy6OutputQzq_GtAA0B10ExpressionRzr0_lFZ', '_$s10Foundation20PredicateExpressionsO13build_flatMapyAC012OptionalFlatF0Vy_xq0_q_q1_Gx_q_AC8VariableVy_q0_GXEtAA0B10ExpressionRzAaKR_6OutputQy_Rs1_q0_SgALRtzr2_lFZ', '_$s10Foundation20PredicateExpressionsO13build_flatMapyAC012OptionalFlatF0Vy_xq0_q_q1_Gx_q_AC8VariableVy_q0_GXEtAA0B10ExpressionRzAaKR_q0_Sg6OutputRtzq1_SgAMRt_r2_lFZ', @@ -4696,21 +5152,32 @@ exports: '_$s10Foundation20PredicateExpressionsO14build_contains_5whereAC21SequenceContainsWhereVy_xq_Gx_q_AC8VariableVy_6Output_7ElementQZGXEtAA0B10ExpressionRzAaOR_STAKRpzSbAKRt_r0_lFZ', '_$s10Foundation20PredicateExpressionsO14build_containsyAC018CollectionContainsF0Vy_xq_Gx_q_tAA0B10ExpressionRzAaHR_Sl6OutputRpzSlAIRp_SQAI_7ElementRPzAI_ALQY_AMRSr0_lFZ', '_$s10Foundation20PredicateExpressionsO14build_containsyAC16SequenceContainsVy_xq_Gx_q_tAA0B10ExpressionRzAaHR_ST6OutputRpzSQAIRp_AI_7ElementQZAKRSr0_lFZ', + '_$s10Foundation20PredicateExpressionsO14build_containsyAC19StringContainsRegexVy_xq_Gx_q_tAA0B10ExpressionRzAaHR_SK6OutputRpz01_F10Processing0H9ComponentAIRp_SsAI_11SubSequenceRTzr0_lFZ', '_$s10Foundation20PredicateExpressionsO14build_containsyAC23RangeExpressionContainsVy_xq_Gx_q_tAA0bG0RzAaHR_SX6OutputRpzAI_5BoundQZAIRt_r0_lFZ', + '_$s10Foundation20PredicateExpressionsO14build_evaluateyAC0B8EvaluateVy_xq_q_Qp_QPGx_q_q_QptRv_AA0B10ExpressionRzAaHR_AA0B0Vy6OutputQy_q_Qp_QPGAKRtzr0_lFZ', + '_$s10Foundation20PredicateExpressionsO14build_evaluateyAC18ExpressionEvaluateVy_xq_q_Qp_QPq0_Gx_q_q_QptRv_AA0bF0RzAaHR_AA0F0Vy6OutputQy_q_Qp_QPq0_GAKRtzr1_lFZ', + '_$s10Foundation20PredicateExpressionsO15ConditionalCastV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO15ConditionalCastV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO15ConditionalCastV5inputxvg', '_$s10Foundation20PredicateExpressionsO15ConditionalCastV5inputxvpMV', '_$s10Foundation20PredicateExpressionsO15ConditionalCastV8evaluateyq_SgAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO15ConditionalCastVA2A022DebugStringConvertibleB10ExpressionRzrlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVAASeRzSERzrlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVAASeRzSERzrlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVMa', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVMn', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVyAEy_xq_GxcfC', + '_$s10Foundation20PredicateExpressionsO15ConditionalCastVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzrlMc', + '_$s10Foundation20PredicateExpressionsO15ConditionalCastVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVy_xq_GAA08StandardB10ExpressionA2aGRzrlMc', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVy_xq_GAA08StandardB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVy_xq_GSEAASeRzSERzrlMc', '_$s10Foundation20PredicateExpressionsO15ConditionalCastVy_xq_GSeAASeRzSERzrlMc', + '_$s10Foundation20PredicateExpressionsO15ConditionalCastVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapV7wrappedxvg', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapV7wrappedxvpMV', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapV8evaluateyq1_SgAA0B8BindingsVKF', @@ -4718,67 +5185,89 @@ exports: '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapV8variableAC8VariableVy_q_GvpMV', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapV9transformq0_vg', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapV9transformq0_vpMV', + '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVA2A022DebugStringConvertibleB10ExpressionRzAaFR0_rlE05debugH05stateSSAA0gH15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVAASeRzSERzSeR0_SER0_rlE4fromAEy_xq_q0_q1_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVAASeRzSERzSeR0_SER0_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVMa', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVMn', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVyAEy_xq_q0_q1_Gx_q0_AC8VariableVy_q_GXEtc6OutputQy0_Rs1_rlufC', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVyAEy_xq_q0_q1_Gx_q0_AC8VariableVy_q_GXEtcq1_Sg6OutputRt0_rlufC', + '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVy_xq_q0_q1_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR0_rlMc', + '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVy_xq_q0_q1_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR0_rlWP', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVy_xq_q0_q1_GAA08StandardB10ExpressionA2aGRzAaGR0_rlMc', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVy_xq_q0_q1_GAA08StandardB10ExpressionA2aGRzAaGR0_rlWP', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVy_xq_q0_q1_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVy_xq_q0_q1_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVy_xq_q0_q1_GSEAASeRzSERzSeR0_SER0_rlMc', '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVy_xq_q0_q1_GSeAASeRzSERzSeR0_SER0_rlMc', + '_$s10Foundation20PredicateExpressionsO15OptionalFlatMapVy_xq_q0_q1_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO15SequenceMaximumV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO15SequenceMaximumV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumV8elementsAEy_xGx_tcfC', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumV8elementsxvg', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumV8elementsxvpMV', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumV8evaluatey6Output_7ElementQZSgAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVA2A022DebugStringConvertibleB10ExpressionRzrlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVAASeRzSERzrlE4fromAEy_xGs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVAASeRzSERzrlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVMa', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVMn', + '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVy_xGAA022DebugStringConvertibleB10ExpressionA2aGRzrlMc', + '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVy_xGAA022DebugStringConvertibleB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVy_xGAA08StandardB10ExpressionA2aGRzrlMc', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVy_xGAA08StandardB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVy_xGAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVy_xGAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVy_xGSEAASeRzSERzrlMc', '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVy_xGSeAASeRzSERzrlMc', + '_$s10Foundation20PredicateExpressionsO15SequenceMaximumVy_xGs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO15SequenceMinimumV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO15SequenceMinimumV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumV8elementsAEy_xGx_tcfC', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumV8elementsxvg', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumV8elementsxvpMV', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumV8evaluatey6Output_7ElementQZSgAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVA2A022DebugStringConvertibleB10ExpressionRzrlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVAASeRzSERzrlE4fromAEy_xGs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVAASeRzSERzrlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVMa', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVMn', + '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVy_xGAA022DebugStringConvertibleB10ExpressionA2aGRzrlMc', + '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVy_xGAA022DebugStringConvertibleB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVy_xGAA08StandardB10ExpressionA2aGRzrlMc', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVy_xGAA08StandardB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVy_xGAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVy_xGAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVy_xGSEAASeRzSERzrlMc', '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVy_xGSeAASeRzSERzrlMc', + '_$s10Foundation20PredicateExpressionsO15SequenceMinimumVy_xGs23CustomStringConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO15build_Remainder3lhs3rhsAC03IntE0Vy_xq_Gx_q_tAA0B10ExpressionRzAaJR_Sz6OutputRpzAKQy_ALRSr0_lFZ', '_$s10Foundation20PredicateExpressionsO15build_subscript__7defaultAC34DictionaryKeyDefaultValueSubscriptVy_xq_q0_Gx_q_q0_tAA0B10ExpressionRzAaIR_AaIR0_SDy6OutputQy_AJQy0_GAJRtzSHAKRQr1_lFZ', '_$s10Foundation20PredicateExpressionsO15build_subscriptyAC22DictionaryKeySubscriptVy_xq_q0_Gx_q_tAA0B10ExpressionRzAaHR_SDy6OutputQy_q0_GAIRtzSHAJRQr1_lFZ', '_$s10Foundation20PredicateExpressionsO15build_subscriptyAC24CollectionIndexSubscriptVy_xq_Gx_q_tAA0B10ExpressionRzAaHR_Sl6OutputRpzAI_0G0QZAIRt_r0_lFZ', '_$s10Foundation20PredicateExpressionsO15build_subscriptyAC24CollectionRangeSubscriptVy_xq_Gx_q_tAA0B10ExpressionRzAaHR_Sl6OutputRpzSnyAI_5IndexQZGAIRt_r0_lFZ', + '_$s10Foundation20PredicateExpressionsO16SequenceContainsV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO16SequenceContainsV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO16SequenceContainsV7elementq_vg', '_$s10Foundation20PredicateExpressionsO16SequenceContainsV7elementq_vpMV', '_$s10Foundation20PredicateExpressionsO16SequenceContainsV8evaluateySbAA0B8BindingsVKF', '_$s10Foundation20PredicateExpressionsO16SequenceContainsV8sequence7elementAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO16SequenceContainsV8sequencexvg', '_$s10Foundation20PredicateExpressionsO16SequenceContainsV8sequencexvpMV', + '_$s10Foundation20PredicateExpressionsO16SequenceContainsVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO16SequenceContainsVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO16SequenceContainsVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO16SequenceContainsVMa', '_$s10Foundation20PredicateExpressionsO16SequenceContainsVMn', + '_$s10Foundation20PredicateExpressionsO16SequenceContainsVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO16SequenceContainsVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO16SequenceContainsVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO16SequenceContainsVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO16SequenceContainsVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO16SequenceContainsVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO16SequenceContainsVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO16SequenceContainsVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO16SequenceContainsVy_xq_Gs23CustomStringConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO16build_Arithmetic3lhs3rhs2opAC0E0Vy_xq_Gx_q_AC0E8OperatorOtAA0B10ExpressionRzAaMR_Sj6OutputRpzANQy_AORSr0_lFZ', '_$s10Foundation20PredicateExpressionsO16build_Comparison3lhs3rhs2opAC0E0Vy_xq_Gx_q_AC0E8OperatorOtAA0B10ExpressionRzAaMR_SL6OutputRpzANQy_AORSr0_lFZ', '_$s10Foundation20PredicateExpressionsO16build_NilLiteralAC0eF0Vy_xGylFZ', @@ -4822,6 +5311,29 @@ exports: '_$s10Foundation20PredicateExpressionsO18ComparisonOperatorOSHAAMc', '_$s10Foundation20PredicateExpressionsO18ComparisonOperatorOSQAAMc', '_$s10Foundation20PredicateExpressionsO18ComparisonOperatorOSeAAMc', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateV10expression5inputAEy_xq_q_Qp_QPq0_Gx_q_q_QptcfC', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateV10expressionxvg', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateV10expressionxvpMV', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateV11descriptionSSvpMV', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateV5inputq_q_Qp_tvg', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateV8evaluateyq0_AA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVA2A022DebugStringConvertiblebD0RzAaFR_AA0D0Vy6OutputQy_q_Qp_QPq0_GAIRtzrlE05debugG05stateSSAA0fG15ConversionStateVz_tF', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVAASeRzSERzSeR_SER_AA0D0Vy6OutputAA0bD0PQy_q_Qp_QPq0_GAhJRtzrlE4fromAEy_xq_q_Qp_QPq0_Gs7Decoder_p_tKcfC', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVAASeRzSERzSeR_SER_AA0D0Vy6OutputAA0bD0PQy_q_Qp_QPq0_GAhJRtzrlE6encode2toys7Encoder_p_tKF', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVMa', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVMn', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVy_xq_q_Qp_QPq0_GAA022DebugStringConvertiblebD0A2aGRzAaGR_AA0D0Vy6OutputQy_q_Qp_QPq0_GAJRtzrlMc', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVy_xq_q_Qp_QPq0_GAA022DebugStringConvertiblebD0A2aGRzAaGR_AA0D0Vy6OutputQy_q_Qp_QPq0_GAJRtzrlWP', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVy_xq_q_Qp_QPq0_GAA08StandardbD0A2aGRzAaGR_AA0D0Vy6OutputQy_q_Qp_QPq0_GAJRtzrlMc', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVy_xq_q_Qp_QPq0_GAA08StandardbD0A2aGRzAaGR_AA0D0Vy6OutputQy_q_Qp_QPq0_GAJRtzrlWP', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVy_xq_q_Qp_QPq0_GAA0bD0AAMc', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVy_xq_q_Qp_QPq0_GAA0bD0AAWP', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVy_xq_q_Qp_QPq0_GSEAASeRzSERzSeR_SER_AA0D0Vy6OutputAA0bD0PQy_q_Qp_QPq0_GAiKRtzrlMc', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVy_xq_q_Qp_QPq0_GSeAASeRzSERzSeR_SER_AA0D0Vy6OutputAA0bD0PQy_q_Qp_QPq0_GAiKRtzrlMc', + '_$s10Foundation20PredicateExpressionsO18ExpressionEvaluateVy_xq_q_Qp_QPq0_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyV4testq_vg', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyV4testq_vpMV', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyV8evaluateySbAA0B8BindingsVKF', @@ -4829,27 +5341,34 @@ exports: '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyV8sequencexvpMV', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyV8variableAC8VariableVy_6Output_7ElementQZGvg', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyV8variableAC8VariableVy_6Output_7ElementQZGvpMV', + '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugH05stateSSAA0gH15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVMa', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVMn', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyV_7builderAEy_xq_Gx_q_AC8VariableVy_6Output_7ElementQZGXEtcfC', + '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO18SequenceAllSatisfyVy_xq_Gs23CustomStringConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithV4base6prefixAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithV4basexvg', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithV4basexvpMV', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithV6prefixq_vg', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithV6prefixq_vpMV', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugH05stateSSAA0gH15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVMa', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVMn', + '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVy_xq_GAA0B10ExpressionAAMc', @@ -4857,6 +5376,30 @@ exports: '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO18SequenceStartsWithVy_xq_GSeAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO18build_ForcedUnwrapyAC0eF0Vy_xq_GxAA0B10ExpressionRzq_Sg6OutputRtzr0_lFZ', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexV11descriptionSSvpMV', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexV5regexq_vg', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexV5regexq_vpMV', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexV7subject5regexAEy_xq_Gx_q_tcfC', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexV7subjectxvg', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexV7subjectxvpMV', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVA2A05Debugd11ConvertibleB10ExpressionRzAaFR_rlE05debugD05stateSSAA0gD15ConversionStateVz_tF', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVMa', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVMn', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVy_xq_GAA05Debugd11ConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVy_xq_GAA05Debugd11ConvertibleB10ExpressionA2aGRzAaGR_rlWP', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVy_xq_GAA0B10ExpressionAAMc', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVy_xq_GAA0B10ExpressionAAWP', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVy_xq_GSEAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO19StringContainsRegexVy_xq_Gs06CustomD11ConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereV4testq_vg', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereV4testq_vpMV', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereV8evaluateySbAA0B8BindingsVKF', @@ -4864,132 +5407,180 @@ exports: '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereV8sequencexvpMV', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereV8variableAC8VariableVy_6Output_7ElementQZGvg', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereV8variableAC8VariableVy_6Output_7ElementQZGvpMV', + '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugH05stateSSAA0gH15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVMa', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVMn', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereV_7builderAEy_xq_Gx_q_AC8VariableVy_6Output_7ElementQZGXEtcfC', + '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO21SequenceContainsWhereVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptV3keyq_vg', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptV3keyq_vpMV', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptV7wrapped3keyAEy_xq_q0_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptV7wrappedxvg', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptV7wrappedxvpMV', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptV8evaluateyq0_SgAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugH05stateSSAA0gH15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVAASeRzSERzSeR_SER_rlE4fromAEy_xq_q0_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVMa', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVMn', + '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVy_xq_q0_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVy_xq_q0_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVy_xq_q0_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVy_xq_q0_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVy_xq_q0_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVy_xq_q0_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVy_xq_q0_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVy_xq_q0_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO22DictionaryKeySubscriptVy_xq_q0_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareV4root5otherAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareV4rootxvg', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareV4rootxvpMV', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareV5otherq_vg', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareV5otherq_vpMV', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareV8evaluateySo18NSComparisonResultVAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVA2A05Debugd11ConvertibleB10ExpressionRzAaFR_rlE05debugD05stateSSAA0gD15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVMa', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVMn', + '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVy_xq_GAA05Debugd11ConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVy_xq_GAA05Debugd11ConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO22StringLocalizedCompareVy_xq_Gs06CustomD11ConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO22build_localizedCompareyAC015StringLocalizedF0Vy_xq_Gx_q_tAA0B10ExpressionRzAaHR_Sy6OutputRpzSyAIRp_r0_lFZ', + '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsV5range7elementAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsV5rangexvg', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsV5rangexvpMV', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsV7elementq_vg', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsV7elementq_vpMV', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVA2A022DebugStringConvertiblebE0RzAaFR_rlE05debugH05stateSSAA0gH15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVMa', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVMn', + '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVy_xq_GAA022DebugStringConvertiblebE0A2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVy_xq_GAA022DebugStringConvertiblebE0A2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVy_xq_GAA08StandardbE0A2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVy_xq_GAA08StandardbE0A2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVy_xq_GAA0bE0AAMc', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVy_xq_GAA0bE0AAWP', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO23RangeExpressionContainsVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptV5indexq_vg', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptV5indexq_vpMV', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptV7wrapped5indexAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptV7wrappedxvg', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptV7wrappedxvpMV', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptV8evaluatey6Output_7ElementQZAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugH05stateSSAA0gH15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVMa', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVMn', + '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO24CollectionIndexSubscriptVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptV5rangeq_vg', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptV5rangeq_vpMV', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptV7wrapped5rangeAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptV7wrappedxvg', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptV7wrappedxvpMV', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptV8evaluatey6Output_11SubSequenceQZAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugH05stateSSAA0gH15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVMa', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVMn', + '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO24CollectionRangeSubscriptVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareV4root5otherAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareV4rootxvg', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareV4rootxvpMV', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareV5otherq_vg', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareV5otherq_vpMV', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareV8evaluateySo18NSComparisonResultVAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVA2A05Debugd11ConvertibleB10ExpressionRzAaFR_rlE05debugD05stateSSAA0hD15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVMa', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVMn', + '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVy_xq_GAA05Debugd11ConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVy_xq_GAA05Debugd11ConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO28StringCaseInsensitiveCompareVy_xq_Gs06CustomD11ConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO28build_caseInsensitiveCompareyAC010StringCasefG0Vy_xq_Gx_q_tAA0B10ExpressionRzAaHR_Sy6OutputRpzSyAIRp_r0_lFZ', + '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsV4root5otherAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsV4rootxvg', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsV4rootxvpMV', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsV5otherq_vg', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsV5otherq_vpMV', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVA2A05Debugd11ConvertibleB10ExpressionRzAaFR_rlE05debugD05stateSSAA0hD15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVMa', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVMn', + '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVy_xq_GAA05Debugd11ConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVy_xq_GAA05Debugd11ConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVy_xq_GAA0fB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVy_xq_GAA0fB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO31StringLocalizedStandardContainsVy_xq_Gs06CustomD11ConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO31build_localizedStandardContainsyAC015StringLocalizedfG0Vy_xq_Gx_q_tAA0B10ExpressionRzAaHR_Sy6OutputRpzSyAIRp_r0_lFZ', + '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptV3keyq_vg', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptV3keyq_vpMV', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptV7defaultq0_vg', @@ -4998,57 +5589,81 @@ exports: '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptV7wrappedxvg', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptV7wrappedxvpMV', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptV8evaluatey6OutputQy0_AA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVA2A022DebugStringConvertibleB10ExpressionRzAaFR_AaFR0_rlE05debugJ05stateSSAA0iJ15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVAASeRzSERzSeR_SER_SeR0_SER0_rlE4fromAEy_xq_q0_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVAASeRzSERzSeR_SER_SeR0_SER0_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVMa', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVMn', + '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVy_xq_q0_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_AaGR0_rlMc', + '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVy_xq_q0_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_AaGR0_rlWP', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVy_xq_q0_GAA08StandardB10ExpressionA2aGRzAaGR_AaGR0_rlMc', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVy_xq_q0_GAA08StandardB10ExpressionA2aGRzAaGR_AaGR0_rlWP', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVy_xq_q0_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVy_xq_q0_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVy_xq_q0_GSEAASeRzSERzSeR_SER_SeR0_SER0_rlMc', '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVy_xq_q0_GSeAASeRzSERzSeR_SER_SeR0_SER0_rlMc', + '_$s10Foundation20PredicateExpressionsO34DictionaryKeyDefaultValueSubscriptVy_xq_q0_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO5EqualV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO5EqualV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO5EqualV3lhs3rhsAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO5EqualV3lhsxvg', '_$s10Foundation20PredicateExpressionsO5EqualV3lhsxvpMV', '_$s10Foundation20PredicateExpressionsO5EqualV3rhsq_vg', '_$s10Foundation20PredicateExpressionsO5EqualV3rhsq_vpMV', '_$s10Foundation20PredicateExpressionsO5EqualV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO5EqualVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugF05stateSSAA0eF15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO5EqualVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO5EqualVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO5EqualVMa', '_$s10Foundation20PredicateExpressionsO5EqualVMn', + '_$s10Foundation20PredicateExpressionsO5EqualVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO5EqualVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO5EqualVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO5EqualVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO5EqualVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO5EqualVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO5EqualVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO5EqualVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO5EqualVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO5RangeV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO5RangeV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO5RangeV5lower5upperAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO5RangeV5lowerxvg', '_$s10Foundation20PredicateExpressionsO5RangeV5lowerxvpMV', '_$s10Foundation20PredicateExpressionsO5RangeV5upperq_vg', '_$s10Foundation20PredicateExpressionsO5RangeV5upperq_vpMV', '_$s10Foundation20PredicateExpressionsO5RangeV8evaluateySny6OutputQzGAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO5RangeVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugF05stateSSAA0eF15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO5RangeVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO5RangeVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO5RangeVMa', '_$s10Foundation20PredicateExpressionsO5RangeVMn', + '_$s10Foundation20PredicateExpressionsO5RangeVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO5RangeVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO5RangeVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO5RangeVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO5RangeVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO5RangeVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO5RangeVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO5RangeVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO5RangeVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO5ValueV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO5ValueV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO5ValueV5valuexvg', '_$s10Foundation20PredicateExpressionsO5ValueV5valuexvpMV', '_$s10Foundation20PredicateExpressionsO5ValueV8evaluateyxAA0B8BindingsVF', + '_$s10Foundation20PredicateExpressionsO5ValueVAASeRzSERzlE11debugString5stateSSAA05DebugF15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO5ValueVAASeRzSERzlE4fromAEy_xGs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO5ValueVAASeRzSERzlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO5ValueVMa', '_$s10Foundation20PredicateExpressionsO5ValueVMn', '_$s10Foundation20PredicateExpressionsO5ValueVyAEy_xGxcfC', + '_$s10Foundation20PredicateExpressionsO5ValueVy_xGAA022DebugStringConvertibleB10ExpressionAASeRzSERzlMc', + '_$s10Foundation20PredicateExpressionsO5ValueVy_xGAA022DebugStringConvertibleB10ExpressionAASeRzSERzlWP', '_$s10Foundation20PredicateExpressionsO5ValueVy_xGAA08StandardB10ExpressionAASeRzSERzlMc', '_$s10Foundation20PredicateExpressionsO5ValueVy_xGAA08StandardB10ExpressionAASeRzSERzlWP', '_$s10Foundation20PredicateExpressionsO5ValueVy_xGAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO5ValueVy_xGAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO5ValueVy_xGSEAASeRzSERzlMc', '_$s10Foundation20PredicateExpressionsO5ValueVy_xGSeAASeRzSERzlMc', + '_$s10Foundation20PredicateExpressionsO5ValueVy_xGs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO6FilterV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO6FilterV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO6FilterV6filterq_vg', '_$s10Foundation20PredicateExpressionsO6FilterV6filterq_vpMV', '_$s10Foundation20PredicateExpressionsO6FilterV8evaluateySay6Output_7ElementQZGAA0B8BindingsVKF', @@ -5056,16 +5671,20 @@ exports: '_$s10Foundation20PredicateExpressionsO6FilterV8sequencexvpMV', '_$s10Foundation20PredicateExpressionsO6FilterV8variableAC8VariableVy_6Output_7ElementQZGvg', '_$s10Foundation20PredicateExpressionsO6FilterV8variableAC8VariableVy_6Output_7ElementQZGvpMV', + '_$s10Foundation20PredicateExpressionsO6FilterVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugF05stateSSAA0eF15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO6FilterVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO6FilterVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO6FilterVMa', '_$s10Foundation20PredicateExpressionsO6FilterVMn', '_$s10Foundation20PredicateExpressionsO6FilterVyAEy_xq_Gx_q_AC8VariableVy_6Output_7ElementQZGXEtcfC', + '_$s10Foundation20PredicateExpressionsO6FilterVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO6FilterVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO6FilterVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO6FilterVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO6FilterVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO6FilterVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO6FilterVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO6FilterVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO6FilterVy_xq_Gs23CustomStringConvertibleAAMc', '_$s10Foundation20PredicateExpressionsO7KeyPathV03keyE0s8Sendable_sADCy6OutputQzq_GXcvg', '_$s10Foundation20PredicateExpressionsO7KeyPathV03keyE0s8Sendable_sADCy6OutputQzq_GXcvpMV', '_$s10Foundation20PredicateExpressionsO7KeyPathV06CommondE4KindO15collectionCountyAGy_xq__GAImAA0B10ExpressionRzr0_lFWC', @@ -5080,49 +5699,70 @@ exports: '_$s10Foundation20PredicateExpressionsO7KeyPathV06CommondE4KindOMn', '_$s10Foundation20PredicateExpressionsO7KeyPathV06CommondE4KindOy_xq__GSHAAMc', '_$s10Foundation20PredicateExpressionsO7KeyPathV06CommondE4KindOy_xq__GSQAAMc', + '_$s10Foundation20PredicateExpressionsO7KeyPathV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO7KeyPathV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO7KeyPathV4kindAE06CommondE4KindOy_xq__GSgvg', '_$s10Foundation20PredicateExpressionsO7KeyPathV4kindAE06CommondE4KindOy_xq__GSgvpMV', '_$s10Foundation20PredicateExpressionsO7KeyPathV4root03keyE0AEy_xq_Gx_s8Sendable_sADCy6OutputQzq_GXctcfC', '_$s10Foundation20PredicateExpressionsO7KeyPathV4rootxvg', '_$s10Foundation20PredicateExpressionsO7KeyPathV4rootxvpMV', '_$s10Foundation20PredicateExpressionsO7KeyPathV8evaluateyq_AA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO7KeyPathVA2A022DebugStringConvertibleB10ExpressionRzrlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO7KeyPathVAASeRzSERzrlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO7KeyPathVAASeRzSERzrlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO7KeyPathVMa', '_$s10Foundation20PredicateExpressionsO7KeyPathVMn', + '_$s10Foundation20PredicateExpressionsO7KeyPathVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzrlMc', + '_$s10Foundation20PredicateExpressionsO7KeyPathVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO7KeyPathVy_xq_GAA08StandardB10ExpressionA2aGRzrlMc', '_$s10Foundation20PredicateExpressionsO7KeyPathVy_xq_GAA08StandardB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO7KeyPathVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO7KeyPathVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO7KeyPathVy_xq_GSEAASeRzSERzrlMc', '_$s10Foundation20PredicateExpressionsO7KeyPathVy_xq_GSeAASeRzSERzrlMc', + '_$s10Foundation20PredicateExpressionsO7KeyPathVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO8NegationV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO8NegationV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO8NegationV7wrappedxvg', '_$s10Foundation20PredicateExpressionsO8NegationV7wrappedxvpMV', '_$s10Foundation20PredicateExpressionsO8NegationV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO8NegationVA2A022DebugStringConvertibleB10ExpressionRzrlE05debugF05stateSSAA0eF15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO8NegationVAASeRzSERzrlE4fromAEy_xGs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO8NegationVAASeRzSERzrlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO8NegationVMa', '_$s10Foundation20PredicateExpressionsO8NegationVMn', '_$s10Foundation20PredicateExpressionsO8NegationVyAEy_xGxcfC', + '_$s10Foundation20PredicateExpressionsO8NegationVy_xGAA022DebugStringConvertibleB10ExpressionA2aGRzrlMc', + '_$s10Foundation20PredicateExpressionsO8NegationVy_xGAA022DebugStringConvertibleB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO8NegationVy_xGAA08StandardB10ExpressionA2aGRzrlMc', '_$s10Foundation20PredicateExpressionsO8NegationVy_xGAA08StandardB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO8NegationVy_xGAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO8NegationVy_xGAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO8NegationVy_xGSEAASeRzSERzrlMc', '_$s10Foundation20PredicateExpressionsO8NegationVy_xGSeAASeRzSERzrlMc', + '_$s10Foundation20PredicateExpressionsO8NegationVy_xGs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO8NotEqualV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO8NotEqualV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO8NotEqualV3lhs3rhsAEy_xq_Gx_q_tcfC', '_$s10Foundation20PredicateExpressionsO8NotEqualV3lhsxvg', '_$s10Foundation20PredicateExpressionsO8NotEqualV3lhsxvpMV', '_$s10Foundation20PredicateExpressionsO8NotEqualV3rhsq_vg', '_$s10Foundation20PredicateExpressionsO8NotEqualV3rhsq_vpMV', '_$s10Foundation20PredicateExpressionsO8NotEqualV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO8NotEqualVA2A022DebugStringConvertibleB10ExpressionRzAaFR_rlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO8NotEqualVAASeRzSERzSeR_SER_rlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO8NotEqualVAASeRzSERzSeR_SER_rlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO8NotEqualVMa', '_$s10Foundation20PredicateExpressionsO8NotEqualVMn', + '_$s10Foundation20PredicateExpressionsO8NotEqualVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlMc', + '_$s10Foundation20PredicateExpressionsO8NotEqualVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO8NotEqualVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlMc', '_$s10Foundation20PredicateExpressionsO8NotEqualVy_xq_GAA08StandardB10ExpressionA2aGRzAaGR_rlWP', '_$s10Foundation20PredicateExpressionsO8NotEqualVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO8NotEqualVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO8NotEqualVy_xq_GSEAASeRzSERzSeR_SER_rlMc', '_$s10Foundation20PredicateExpressionsO8NotEqualVy_xq_GSeAASeRzSERzSeR_SER_rlMc', + '_$s10Foundation20PredicateExpressionsO8NotEqualVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO8VariableV11debugString5stateSSAA05DebugF15ConversionStateVz_tF', + '_$s10Foundation20PredicateExpressionsO8VariableV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO8VariableV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO8VariableV3keyAC0D2IDVvg', '_$s10Foundation20PredicateExpressionsO8VariableV3keyAC0D2IDVvpMV', '_$s10Foundation20PredicateExpressionsO8VariableV4fromAEy_xGs7Decoder_p_tKcfC', @@ -5130,38 +5770,54 @@ exports: '_$s10Foundation20PredicateExpressionsO8VariableV8evaluateyxAA0B8BindingsVKF', '_$s10Foundation20PredicateExpressionsO8VariableVAEy_xGycfC', '_$s10Foundation20PredicateExpressionsO8VariableVMa', '_$s10Foundation20PredicateExpressionsO8VariableVMn', + '_$s10Foundation20PredicateExpressionsO8VariableVy_xGAA022DebugStringConvertibleB10ExpressionAAMc', + '_$s10Foundation20PredicateExpressionsO8VariableVy_xGAA022DebugStringConvertibleB10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO8VariableVy_xGAA08StandardB10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO8VariableVy_xGAA08StandardB10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO8VariableVy_xGAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO8VariableVy_xGAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO8VariableVy_xGSEAAMc', '_$s10Foundation20PredicateExpressionsO8VariableVy_xGSeAAMc', + '_$s10Foundation20PredicateExpressionsO8VariableVy_xGs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO9ForceCastV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO9ForceCastV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO9ForceCastV5inputxvg', '_$s10Foundation20PredicateExpressionsO9ForceCastV5inputxvpMV', '_$s10Foundation20PredicateExpressionsO9ForceCastV8evaluateyq_AA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO9ForceCastVA2A022DebugStringConvertibleB10ExpressionRzrlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO9ForceCastVAASeRzSERzrlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO9ForceCastVAASeRzSERzrlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO9ForceCastVMa', '_$s10Foundation20PredicateExpressionsO9ForceCastVMn', '_$s10Foundation20PredicateExpressionsO9ForceCastVyAEy_xq_GxcfC', + '_$s10Foundation20PredicateExpressionsO9ForceCastVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzrlMc', + '_$s10Foundation20PredicateExpressionsO9ForceCastVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO9ForceCastVy_xq_GAA08StandardB10ExpressionA2aGRzrlMc', '_$s10Foundation20PredicateExpressionsO9ForceCastVy_xq_GAA08StandardB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO9ForceCastVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO9ForceCastVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO9ForceCastVy_xq_GSEAASeRzSERzrlMc', '_$s10Foundation20PredicateExpressionsO9ForceCastVy_xq_GSeAASeRzSERzrlMc', + '_$s10Foundation20PredicateExpressionsO9ForceCastVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO9TypeCheckV11descriptionSSvg', + '_$s10Foundation20PredicateExpressionsO9TypeCheckV11descriptionSSvpMV', '_$s10Foundation20PredicateExpressionsO9TypeCheckV5inputxvg', '_$s10Foundation20PredicateExpressionsO9TypeCheckV5inputxvpMV', '_$s10Foundation20PredicateExpressionsO9TypeCheckV8evaluateySbAA0B8BindingsVKF', + '_$s10Foundation20PredicateExpressionsO9TypeCheckVA2A022DebugStringConvertibleB10ExpressionRzrlE05debugG05stateSSAA0fG15ConversionStateVz_tF', '_$s10Foundation20PredicateExpressionsO9TypeCheckVAASeRzSERzrlE4fromAEy_xq_Gs7Decoder_p_tKcfC', '_$s10Foundation20PredicateExpressionsO9TypeCheckVAASeRzSERzrlE6encode2toys7Encoder_p_tKF', '_$s10Foundation20PredicateExpressionsO9TypeCheckVMa', '_$s10Foundation20PredicateExpressionsO9TypeCheckVMn', '_$s10Foundation20PredicateExpressionsO9TypeCheckVyAEy_xq_GxcfC', + '_$s10Foundation20PredicateExpressionsO9TypeCheckVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzrlMc', + '_$s10Foundation20PredicateExpressionsO9TypeCheckVy_xq_GAA022DebugStringConvertibleB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO9TypeCheckVy_xq_GAA08StandardB10ExpressionA2aGRzrlMc', '_$s10Foundation20PredicateExpressionsO9TypeCheckVy_xq_GAA08StandardB10ExpressionA2aGRzrlWP', '_$s10Foundation20PredicateExpressionsO9TypeCheckVy_xq_GAA0B10ExpressionAAMc', '_$s10Foundation20PredicateExpressionsO9TypeCheckVy_xq_GAA0B10ExpressionAAWP', '_$s10Foundation20PredicateExpressionsO9TypeCheckVy_xq_GSEAASeRzSERzrlMc', '_$s10Foundation20PredicateExpressionsO9TypeCheckVy_xq_GSeAASeRzSERzrlMc', + '_$s10Foundation20PredicateExpressionsO9TypeCheckVy_xq_Gs23CustomStringConvertibleAAMc', + '_$s10Foundation20PredicateExpressionsO9build_ArgyAC5ValueVy_AC0B5RegexVGx17_StringProcessing0G9ComponentRzlFZ', '_$s10Foundation20PredicateExpressionsO9build_ArgyAC5ValueVy_xGxlFZ', '_$s10Foundation20PredicateExpressionsO9build_ArgyxxAA0B10ExpressionRzlFZ', '_$s10Foundation20PredicateExpressionsO9build_maxyAC15SequenceMaximumVy_xGxAA0B10ExpressionRzST6OutputRpzSLAI_7ElementRPzlFZ', @@ -5260,18 +5916,7 @@ exports: '_$s10Foundation23LocalizedStringResourceVs013ExpressibleByC7LiteralAAMc', '_$s10Foundation23LocalizedStringResourceVs33ExpressibleByUnicodeScalarLiteralAAMc', '_$s10Foundation23LocalizedStringResourceVs43ExpressibleByExtendedGraphemeClusterLiteralAAMc', - '_$s10Foundation23_ObservationRegistar_v3V12transactions3for9isolationAA022_ObservedTransactions_D0Vyxqd__GAA010_KeyPaths_D0VyxG_qd__tScARd__lF', - '_$s10Foundation23_ObservationRegistar_v3V12withMutation_7keyPath_qd_0_x_s03KeyH0Cyxqd__Gqd_0_yKXEtKr0_lF', - '_$s10Foundation23_ObservationRegistar_v3V6access_7keyPathyx_s03KeyG0Cyxqd__GtlF', - '_$s10Foundation23_ObservationRegistar_v3V6didSet_7keyPathyx_s03KeyH0Cyxqd__GtlF', - '_$s10Foundation23_ObservationRegistar_v3V7changes3forAA017_ObservedChanges_D0Vyxqd__Gs7KeyPathCyxqd__G_ts8SendableRd__lF', - '_$s10Foundation23_ObservationRegistar_v3V7willSet_7keyPathyx_s03KeyH0Cyxqd__GtlF', - '_$s10Foundation23_ObservationRegistar_v3VACyxGycfC', '_$s10Foundation23_ObservationRegistar_v3VMa', - '_$s10Foundation23_ObservationRegistar_v3VMn', '_$s10Foundation23_ObservationTracking_v3V04withC0_8onChangexxyXE_yyYbcyXKtlFZ', - '_$s10Foundation23_ObservationTracking_v3V08_installC0_8onChangeySV_yyYbctFZ', - '_$s10Foundation23_ObservationTracking_v3VMa', '_$s10Foundation23_ObservationTracking_v3VMn', - '_$s10Foundation23_ObservationTracking_v3VN', '_$s10Foundation24AttributedStringProtocolMp', - '_$s10Foundation24AttributedStringProtocolP10charactersAA0bC0V13CharacterViewVvgTj', + '_$s10Foundation24AttributedStringProtocolMp', '_$s10Foundation24AttributedStringProtocolP10charactersAA0bC0V13CharacterViewVvgTj', '_$s10Foundation24AttributedStringProtocolP10charactersAA0bC0V13CharacterViewVvgTq', '_$s10Foundation24AttributedStringProtocolP10startIndexAA0bC0V0F0VvgTj', '_$s10Foundation24AttributedStringProtocolP10startIndexAA0bC0V0F0VvgTq', @@ -5414,6 +6059,7 @@ exports: '_$s10Foundation24FloatingPointFormatStyleV8CurrencyV6localeyAEyx_GAA6LocaleVF', '_$s10Foundation24FloatingPointFormatStyleV8CurrencyV7rounded4rule9incrementAEyx_Gs0bC12RoundingRuleO_SdSgtF', '_$s10Foundation24FloatingPointFormatStyleV8CurrencyV8groupingyAEyx_GAA06NumberdE13ConfigurationO8GroupingVF', + '_$s10Foundation24FloatingPointFormatStyleV8CurrencyV8notationyAEyx_GAA06NumberdE13ConfigurationO8NotationVF', '_$s10Foundation24FloatingPointFormatStyleV8CurrencyV9consuming_10startingAt2inSS5IndexV10upperBound_x6outputtSgSS_AJSnyAJGtKF', '_$s10Foundation24FloatingPointFormatStyleV8CurrencyV9hashValueSivg', '_$s10Foundation24FloatingPointFormatStyleV8CurrencyV9hashValueSivpMV', @@ -5461,14 +6107,6 @@ exports: '_$s10Foundation24ScopedAttributeContainerV13dynamicMember5ValueQyd__Sgs7KeyPathCyxqd__G_tcAA016AttributedStringH0Rd__luipMV', '_$s10Foundation24ScopedAttributeContainerV13dynamicMember5ValueQyd__Sgs7KeyPathCyxqd__G_tcAA016AttributedStringH0Rd__luis', '_$s10Foundation24ScopedAttributeContainerVMa', '_$s10Foundation24ScopedAttributeContainerVMn', - '_$s10Foundation24_ObservedTransactions_v3V17makeAsyncIteratorAC0G0Vyxq__GyF', - '_$s10Foundation24_ObservedTransactions_v3V8IteratorV4nextAA010_KeyPaths_D0VyxGSgyYaF', - '_$s10Foundation24_ObservedTransactions_v3V8IteratorV4nextAA010_KeyPaths_D0VyxGSgyYaFTu', - '_$s10Foundation24_ObservedTransactions_v3V8IteratorVMa', - '_$s10Foundation24_ObservedTransactions_v3V8IteratorVMn', - '_$s10Foundation24_ObservedTransactions_v3V8IteratorVyxq__GScIAAMc', - '_$s10Foundation24_ObservedTransactions_v3VMa', '_$s10Foundation24_ObservedTransactions_v3VMn', - '_$s10Foundation24_ObservedTransactions_v3Vyxq_GSciAAMc', '_$s10Foundation24_getErrorDefaultUserInfoyyXlSgxs0C0RzlF', '_$s10Foundation25NSFastEnumerationIteratorV4nextypSgyF', '_$s10Foundation25NSFastEnumerationIteratorVMa', '_$s10Foundation25NSFastEnumerationIteratorVMn', @@ -5493,7 +6131,9 @@ exports: '_$s10Foundation26AsyncUnicodeScalarSequenceV0B8IteratorVyx_GScIAAMc', '_$s10Foundation26AsyncUnicodeScalarSequenceVMa', '_$s10Foundation26AsyncUnicodeScalarSequenceVMn', '_$s10Foundation26AsyncUnicodeScalarSequenceVyxGSciAAMc', - '_$s10Foundation26DecodableWithConfigurationMp', '_$s10Foundation26DecodableWithConfigurationP4from13configurationxs7Decoder_p_08DecodingD0QztKcfCTj', + '_$s10Foundation26DebugStringConversionStateVMa', '_$s10Foundation26DebugStringConversionStateVMn', + '_$s10Foundation26DebugStringConversionStateVN', '_$s10Foundation26DecodableWithConfigurationMp', + '_$s10Foundation26DecodableWithConfigurationP4from13configurationxs7Decoder_p_08DecodingD0QztKcfCTj', '_$s10Foundation26DecodableWithConfigurationP4from13configurationxs7Decoder_p_08DecodingD0QztKcfCTq', '_$s10Foundation26DecodableWithConfigurationTL', '_$s10Foundation26EncodableWithConfigurationMp', '_$s10Foundation26EncodableWithConfigurationP6encode2to13configurationys7Encoder_p_08EncodingD0QztKFTj', @@ -5522,28 +6162,45 @@ exports: '_$s10Foundation26FloatingPointParseStrategyVyxGSEAAMc', '_$s10Foundation26FloatingPointParseStrategyVyxGSHAAMc', '_$s10Foundation26FloatingPointParseStrategyVyxGSQAAMc', '_$s10Foundation26FloatingPointParseStrategyVyxGSeAAMc', '_$s10Foundation26MeasurementFormatUnitUsageV10asProvidedACyxGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageV10asProvidedACyxGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageV2eeoiySbACyxG_AEtFZ', '_$s10Foundation26MeasurementFormatUnitUsageV4fromACyxGs7Decoder_p_tKcfC', '_$s10Foundation26MeasurementFormatUnitUsageV4hash4intoys6HasherVz_tF', '_$s10Foundation26MeasurementFormatUnitUsageV6encode2toys7Encoder_p_tKF', '_$s10Foundation26MeasurementFormatUnitUsageV7generalACyxGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageV7generalACyxGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageV9hashValueSivg', '_$s10Foundation26MeasurementFormatUnitUsageV9hashValueSivpMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo10NSUnitMassCRszrlE12personWeightACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo10NSUnitMassCRszrlE12personWeightACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo11NSUnitSpeedCRszrlE4windACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo11NSUnitSpeedCRszrlE4windACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitEnergyCRszrlE4foodACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitEnergyCRszrlE4foodACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitEnergyCRszrlE7workoutACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitEnergyCRszrlE7workoutACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE05focalG0ACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE05focalG0ACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE10visibilityACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE10visibilityACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE12personHeightACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE12personHeightACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE4roadACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE4roadACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE6personACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE6personACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE8rainfallACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE8rainfallACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE8snowfallACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitLengthCRszrlE8snowfallACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitVolumeCRszrlE6liquidACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo12NSUnitVolumeCRszrlE6liquidACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo14NSUnitPressureCRszrlE10barometricACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo14NSUnitPressureCRszrlE10barometricACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo17NSUnitTemperatureCRszrlE6personACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo17NSUnitTemperatureCRszrlE6personACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVAASo17NSUnitTemperatureCRszrlE7weatherACyAEGvgZ', + '_$s10Foundation26MeasurementFormatUnitUsageVAASo17NSUnitTemperatureCRszrlE7weatherACyAEGvpZMV', '_$s10Foundation26MeasurementFormatUnitUsageVMa', '_$s10Foundation26MeasurementFormatUnitUsageVMn', '_$s10Foundation26MeasurementFormatUnitUsageVyxGSEAAMc', '_$s10Foundation26MeasurementFormatUnitUsageVyxGSHAAMc', '_$s10Foundation26MeasurementFormatUnitUsageVyxGSQAAMc', '_$s10Foundation26MeasurementFormatUnitUsageVyxGSeAAMc', @@ -5572,7 +6229,9 @@ exports: '_$s10Foundation28EncodableAttributedStringKeyPAA0cdE0Tb', '_$s10Foundation28EncodableAttributedStringKeyPAASE5ValueRpzrlE6encode_2toyAE_s7Encoder_ptKFZ', '_$s10Foundation28EncodableAttributedStringKeyPAASo8NSObjectC5ValueRczSo14NSSecureCodingAGRQrlE6encode_2toyAG_s7Encoder_ptKFZ', - '_$s10Foundation28EncodableAttributedStringKeyTL', '_$s10Foundation29PredicateCodableConfigurationV08standardD0ACvgZ', + '_$s10Foundation28EncodableAttributedStringKeyTL', '_$s10Foundation28NSDecimalMultiplyByPowerOf10ySo18NSCalculationErrorVSpySo0B0aG_SPyAFGs5Int16VSo14NSRoundingModeVtF', + '_$s10Foundation29PredicateCodableConfigurationV08standardD0ACvgZ', + '_$s10Foundation29PredicateCodableConfigurationV08standardD0ACvpZMV', '_$s10Foundation29PredicateCodableConfigurationV12allowKeyPath_10identifierys03AnyfG0C_SStF', '_$s10Foundation29PredicateCodableConfigurationV12disallowTypeyyypXpF', '_$s10Foundation29PredicateCodableConfigurationV15disallowKeyPathyys03AnyfG0CF', @@ -5598,9 +6257,11 @@ exports: '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyV4hash4intoys6HasherVz_tF', '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyV5neverAEvgZ', + '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyV5neverAEvpZMV', '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyV6always13includingZeroAESb_tFZ', '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyV6encode2toys7Encoder_p_tKF', '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyV9automaticAEvgZ', + '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyV9automaticAEvpZMV', '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyV9hashValueSivg', '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyV9hashValueSivpMV', '_$s10Foundation30NumberFormatStyleConfigurationO19SignDisplayStrategyVMa', @@ -5617,8 +6278,10 @@ exports: '_$s10Foundation30NumberFormatStyleConfigurationO31DecimalSeparatorDisplayStrategyV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation30NumberFormatStyleConfigurationO31DecimalSeparatorDisplayStrategyV4hash4intoys6HasherVz_tF', '_$s10Foundation30NumberFormatStyleConfigurationO31DecimalSeparatorDisplayStrategyV6alwaysAEvgZ', + '_$s10Foundation30NumberFormatStyleConfigurationO31DecimalSeparatorDisplayStrategyV6alwaysAEvpZMV', '_$s10Foundation30NumberFormatStyleConfigurationO31DecimalSeparatorDisplayStrategyV6encode2toys7Encoder_p_tKF', '_$s10Foundation30NumberFormatStyleConfigurationO31DecimalSeparatorDisplayStrategyV9automaticAEvgZ', + '_$s10Foundation30NumberFormatStyleConfigurationO31DecimalSeparatorDisplayStrategyV9automaticAEvpZMV', '_$s10Foundation30NumberFormatStyleConfigurationO31DecimalSeparatorDisplayStrategyV9hashValueSivg', '_$s10Foundation30NumberFormatStyleConfigurationO31DecimalSeparatorDisplayStrategyV9hashValueSivpMV', '_$s10Foundation30NumberFormatStyleConfigurationO31DecimalSeparatorDisplayStrategyVMa', @@ -5635,8 +6298,10 @@ exports: '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingV4hash4intoys6HasherVz_tF', '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingV5neverAEvgZ', + '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingV5neverAEvpZMV', '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingV6encode2toys7Encoder_p_tKF', '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingV9automaticAEvgZ', + '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingV9automaticAEvpZMV', '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingV9hashValueSivg', '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingV9hashValueSivpMV', '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingVMa', @@ -5648,7 +6313,9 @@ exports: '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingVSeAAMc', '_$s10Foundation30NumberFormatStyleConfigurationO8GroupingVs23CustomStringConvertibleAAMc', '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV10scientificAEvgZ', + '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV10scientificAEvpZMV', '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV11compactNameAEvgZ', + '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV11compactNameAEvpZMV', '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV11descriptionSSvg', '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV11descriptionSSvpMV', '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV2eeoiySbAE_AEtFZ', @@ -5656,6 +6323,7 @@ exports: '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV4hash4intoys6HasherVz_tF', '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV6encode2toys7Encoder_p_tKF', '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV9automaticAEvgZ', + '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV9automaticAEvpZMV', '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV9hashValueSivg', '_$s10Foundation30NumberFormatStyleConfigurationO8NotationV9hashValueSivpMV', '_$s10Foundation30NumberFormatStyleConfigurationO8NotationVMa', @@ -5693,9 +6361,13 @@ exports: '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV4hash4intoys6HasherVz_tF', '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV6encode2toys7Encoder_p_tKF', '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV6narrowAEvgZ', + '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV6narrowAEvpZMV', '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV7isoCodeAEvgZ', + '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV7isoCodeAEvpZMV', '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV8fullNameAEvgZ', + '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV8fullNameAEvpZMV', '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV8standardAEvgZ', + '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV8standardAEvpZMV', '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV9hashValueSivg', '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationV9hashValueSivpMV', '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationVMa', @@ -5706,14 +6378,17 @@ exports: '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationVSQAAMc', '_$s10Foundation32CurrencyFormatStyleConfigurationO12PresentationVSeAAMc', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV10accountingAEvgZ', + '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV10accountingAEvpZMV', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV16accountingAlways8showZeroAESb_tFZ', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV2eeoiySbAE_AEtFZ', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV4hash4intoys6HasherVz_tF', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV5neverAEvgZ', + '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV5neverAEvpZMV', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV6always8showZeroAESb_tFZ', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV6encode2toys7Encoder_p_tKF', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV9automaticAEvgZ', + '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV9automaticAEvpZMV', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV9hashValueSivg', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyV9hashValueSivpMV', '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyVMa', @@ -5725,14 +6400,19 @@ exports: '_$s10Foundation32CurrencyFormatStyleConfigurationO19SignDisplayStrategyVSeAAMc', '_$s10Foundation32CurrencyFormatStyleConfigurationOMa', '_$s10Foundation32CurrencyFormatStyleConfigurationOMn', '_$s10Foundation32CurrencyFormatStyleConfigurationON', '_$s10Foundation32FormatStyleCapitalizationContextV10standaloneACvgZ', + '_$s10Foundation32FormatStyleCapitalizationContextV10standaloneACvpZMV', '_$s10Foundation32FormatStyleCapitalizationContextV16middleOfSentenceACvgZ', + '_$s10Foundation32FormatStyleCapitalizationContextV16middleOfSentenceACvpZMV', '_$s10Foundation32FormatStyleCapitalizationContextV19beginningOfSentenceACvgZ', + '_$s10Foundation32FormatStyleCapitalizationContextV19beginningOfSentenceACvpZMV', '_$s10Foundation32FormatStyleCapitalizationContextV2eeoiySbAC_ACtFZ', '_$s10Foundation32FormatStyleCapitalizationContextV4fromACs7Decoder_p_tKcfC', '_$s10Foundation32FormatStyleCapitalizationContextV4hash4intoys6HasherVz_tF', '_$s10Foundation32FormatStyleCapitalizationContextV6encode2toys7Encoder_p_tKF', '_$s10Foundation32FormatStyleCapitalizationContextV7unknownACvgZ', + '_$s10Foundation32FormatStyleCapitalizationContextV7unknownACvpZMV', '_$s10Foundation32FormatStyleCapitalizationContextV8listItemACvgZ', + '_$s10Foundation32FormatStyleCapitalizationContextV8listItemACvpZMV', '_$s10Foundation32FormatStyleCapitalizationContextV9hashValueSivg', '_$s10Foundation32FormatStyleCapitalizationContextV9hashValueSivpMV', '_$s10Foundation32FormatStyleCapitalizationContextVMa', '_$s10Foundation32FormatStyleCapitalizationContextVMn', @@ -5764,7 +6444,9 @@ exports: '_$s10Foundation36DescriptiveNumberFormatConfigurationO12PresentationV4hash4intoys6HasherVz_tF', '_$s10Foundation36DescriptiveNumberFormatConfigurationO12PresentationV6encode2toys7Encoder_p_tKF', '_$s10Foundation36DescriptiveNumberFormatConfigurationO12PresentationV7ordinalAEvgZ', + '_$s10Foundation36DescriptiveNumberFormatConfigurationO12PresentationV7ordinalAEvpZMV', '_$s10Foundation36DescriptiveNumberFormatConfigurationO12PresentationV8spellOutAEvgZ', + '_$s10Foundation36DescriptiveNumberFormatConfigurationO12PresentationV8spellOutAEvpZMV', '_$s10Foundation36DescriptiveNumberFormatConfigurationO12PresentationV9hashValueSivg', '_$s10Foundation36DescriptiveNumberFormatConfigurationO12PresentationV9hashValueSivpMV', '_$s10Foundation36DescriptiveNumberFormatConfigurationO12PresentationVMa', @@ -5792,6 +6474,8 @@ exports: '_$s10Foundation3URLV016standardizedFileB0ACvg', '_$s10Foundation3URLV016standardizedFileB0ACvpMV', '_$s10Foundation3URLV04baseB0ACSgvg', '_$s10Foundation3URLV04baseB0ACSgvpMV', '_$s10Foundation3URLV06isFileB0Sbvg', '_$s10Foundation3URLV06isFileB0SbvpMV', + '_$s10Foundation3URLV08_System_A0E_11isDirectoryACSg0C08FilePathV_SbtcfC', + '_$s10Foundation3URLV08_System_A0EyACSg0C08FilePathVcfC', '_$s10Foundation3URLV08absoluteB0ACvg', '_$s10Foundation3URLV08absoluteB0ACvpMV', '_$s10Foundation3URLV10AsyncBytesV04makeC8IteratorAE0cF0VyF', '_$s10Foundation3URLV10AsyncBytesV0C8IteratorV4nexts5UInt8VSgyYaKF', @@ -5810,13 +6494,16 @@ exports: '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV11descriptionSSvpMV', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV11displayWhen_7matchesAgE9ComponentO_ShySSGtFZ', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV16omitIfHTTPFamilyAGvgZ', + '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV16omitIfHTTPFamilyAGvpZMV', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV22omitSpecificSubdomains_017includeMultiLevelJ04when7matchesAGShySSG_SbAE9ComponentOALtFZ', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV22omitSpecificSubdomains_017includeMultiLevelJ0AGShySSG_SbtFZ', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV2eeoiySbAG_AGtFZ', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV4fromAGs7Decoder_p_tKcfC', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV4hash4intoys6HasherVz_tF', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV5neverAGvgZ', + '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV5neverAGvpZMV', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV6alwaysAGvgZ', + '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV6alwaysAGvpZMV', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV6encode2toys7Encoder_p_tKF', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV8omitWhen_7matchesAgE9ComponentO_ShySSGtFZ', '_$s10Foundation3URLV11FormatStyleV17HostDisplayOptionV9hashValueSivg', @@ -5833,11 +6520,14 @@ exports: '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV11descriptionSSvpMV', '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV11displayWhen_7matchesAgE0E0O_ShySSGtFZ', '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV16omitIfHTTPFamilyAGvgZ', + '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV16omitIfHTTPFamilyAGvpZMV', '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV2eeoiySbAG_AGtFZ', '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV4fromAGs7Decoder_p_tKcfC', '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV4hash4intoys6HasherVz_tF', '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV5neverAGvgZ', + '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV5neverAGvpZMV', '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV6alwaysAGvgZ', + '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV6alwaysAGvpZMV', '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV6encode2toys7Encoder_p_tKF', '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV8omitWhen_7matchesAgE0E0O_ShySSGtFZ', '_$s10Foundation3URLV11FormatStyleV22ComponentDisplayOptionV9hashValueSivg', @@ -5938,38 +6628,45 @@ exports: '_$s10Foundation3URLV13ParseStrategyVN', '_$s10Foundation3URLV13ParseStrategyVSEAAMc', '_$s10Foundation3URLV13ParseStrategyVSHAAMc', '_$s10Foundation3URLV13ParseStrategyVSQAAMc', '_$s10Foundation3URLV13ParseStrategyVSeAAMc', '_$s10Foundation3URLV13homeDirectory7forUserACSgSS_tFZ', - '_$s10Foundation3URLV13homeDirectoryACvgZ', '_$s10Foundation3URLV13pathExtensionSSvg', - '_$s10Foundation3URLV13pathExtensionSSvpMV', '_$s10Foundation3URLV13resourceBytesAC05AsyncD0Vvg', - '_$s10Foundation3URLV13resourceBytesAC05AsyncD0VvpMV', '_$s10Foundation3URLV13userDirectoryACvgZ', + '_$s10Foundation3URLV13homeDirectoryACvgZ', '_$s10Foundation3URLV13homeDirectoryACvpZMV', + '_$s10Foundation3URLV13pathExtensionSSvg', '_$s10Foundation3URLV13pathExtensionSSvpMV', + '_$s10Foundation3URLV13resourceBytesAC05AsyncD0Vvg', '_$s10Foundation3URLV13resourceBytesAC05AsyncD0VvpMV', + '_$s10Foundation3URLV13userDirectoryACvgZ', '_$s10Foundation3URLV13userDirectoryACvpZMV', '_$s10Foundation3URLV14absoluteStringSSvg', '_$s10Foundation3URLV14absoluteStringSSvpMV', - '_$s10Foundation3URLV14musicDirectoryACvgZ', '_$s10Foundation3URLV14pathComponentsSaySSGvg', - '_$s10Foundation3URLV14pathComponentsSaySSGvpMV', '_$s10Foundation3URLV14relativeStringSSvg', - '_$s10Foundation3URLV14relativeStringSSvpMV', '_$s10Foundation3URLV14resourceValues7forKeys16fromBookmarkDataAA011URLResourceD0VSgShySo16NSURLResourceKeyaG_AA0I0VtFZ', + '_$s10Foundation3URLV14musicDirectoryACvgZ', '_$s10Foundation3URLV14musicDirectoryACvpZMV', + '_$s10Foundation3URLV14pathComponentsSaySSGvg', '_$s10Foundation3URLV14pathComponentsSaySSGvpMV', + '_$s10Foundation3URLV14relativeStringSSvg', '_$s10Foundation3URLV14relativeStringSSvpMV', + '_$s10Foundation3URLV14resourceValues7forKeys16fromBookmarkDataAA011URLResourceD0VSgShySo16NSURLResourceKeyaG_AA0I0VtFZ', '_$s10Foundation3URLV14resourceValues7forKeysAA011URLResourceD0VShySo16NSURLResourceKeyaG_tKF', - '_$s10Foundation3URLV14trashDirectoryACvgZ', '_$s10Foundation3URLV15cachesDirectoryACvgZ', + '_$s10Foundation3URLV14trashDirectoryACvgZ', '_$s10Foundation3URLV14trashDirectoryACvpZMV', + '_$s10Foundation3URLV15cachesDirectoryACvgZ', '_$s10Foundation3URLV15cachesDirectoryACvpZMV', '_$s10Foundation3URLV15fileURLWithPath10relativeToACSSh_ACSghtcfC', '_$s10Foundation3URLV15fileURLWithPath11isDirectory10relativeToACSSh_SbACSghtcfC', '_$s10Foundation3URLV15fileURLWithPath11isDirectoryACSSh_SbtcfC', '_$s10Foundation3URLV15fileURLWithPathACSSh_tcfC', '_$s10Foundation3URLV15moviesDirectoryACvgZ', - '_$s10Foundation3URLV16currentDirectoryACyFZ', '_$s10Foundation3URLV16debugDescriptionSSvg', - '_$s10Foundation3URLV16debugDescriptionSSvpMV', '_$s10Foundation3URLV16desktopDirectoryACvgZ', + '_$s10Foundation3URLV15moviesDirectoryACvpZMV', '_$s10Foundation3URLV16currentDirectoryACyFZ', + '_$s10Foundation3URLV16debugDescriptionSSvg', '_$s10Foundation3URLV16debugDescriptionSSvpMV', + '_$s10Foundation3URLV16desktopDirectoryACvgZ', '_$s10Foundation3URLV16desktopDirectoryACvpZMV', '_$s10Foundation3URLV16hasDirectoryPathSbvg', '_$s10Foundation3URLV16hasDirectoryPathSbvpMV', - '_$s10Foundation3URLV16libraryDirectoryACvgZ', '_$s10Foundation3URLV17lastPathComponentSSvg', - '_$s10Foundation3URLV17lastPathComponentSSvpMV', '_$s10Foundation3URLV17picturesDirectoryACvgZ', + '_$s10Foundation3URLV16libraryDirectoryACvgZ', '_$s10Foundation3URLV16libraryDirectoryACvpZMV', + '_$s10Foundation3URLV17lastPathComponentSSvg', '_$s10Foundation3URLV17lastPathComponentSSvpMV', + '_$s10Foundation3URLV17picturesDirectoryACvgZ', '_$s10Foundation3URLV17picturesDirectoryACvpZMV', '_$s10Foundation3URLV17setResourceValuesyyAA011URLResourceE0VKF', '_$s10Foundation3URLV17writeBookmarkData_2toyAA0E0V_ACtKFZ', '_$s10Foundation3URLV18dataRepresentation10relativeTo10isAbsoluteACSgAA4DataVh_AGhSbtcfC', '_$s10Foundation3URLV18dataRepresentationAA4DataVvg', '_$s10Foundation3URLV18dataRepresentationAA4DataVvpMV', - '_$s10Foundation3URLV18documentsDirectoryACvgZ', '_$s10Foundation3URLV18downloadsDirectoryACvgZ', - '_$s10Foundation3URLV18temporaryDirectoryACvgZ', '_$s10Foundation3URLV19_bridgeToObjectiveCSo5NSURLCyF', - '_$s10Foundation3URLV19appendPathComponent_11isDirectoryySS_SbtF', + '_$s10Foundation3URLV18documentsDirectoryACvgZ', '_$s10Foundation3URLV18documentsDirectoryACvpZMV', + '_$s10Foundation3URLV18downloadsDirectoryACvgZ', '_$s10Foundation3URLV18downloadsDirectoryACvpZMV', + '_$s10Foundation3URLV18temporaryDirectoryACvgZ', '_$s10Foundation3URLV18temporaryDirectoryACvpZMV', + '_$s10Foundation3URLV19_bridgeToObjectiveCSo5NSURLCyF', '_$s10Foundation3URLV19appendPathComponent_11isDirectoryySS_SbtF', '_$s10Foundation3URLV19appendPathComponentyySSF', '_$s10Foundation3URLV19appendPathExtensionyySSF', '_$s10Foundation3URLV19deletePathExtensionyyF', '_$s10Foundation3URLV20applicationDirectoryACvgZ', - '_$s10Foundation3URLV20resolvingAliasFileAt7optionsA2Ch_So30NSURLBookmarkResolutionOptionsVtKcfC', + '_$s10Foundation3URLV20applicationDirectoryACvpZMV', '_$s10Foundation3URLV20resolvingAliasFileAt7optionsA2Ch_So30NSURLBookmarkResolutionOptionsVtKcfC', '_$s10Foundation3URLV21deletingPathExtensionACyF', '_$s10Foundation3URLV21resolveSymlinksInPathyyF', '_$s10Foundation3URLV21resolvingBookmarkData7options10relativeTo08bookmarkE7IsStaleACSgAA0E0Vh_So30NSURLBookmarkResolutionOptionsVAHhSbztKcfC', '_$s10Foundation3URLV21resolvingBookmarkData7options10relativeTo08bookmarkE7IsStaleAcA0E0Vh_So30NSURLBookmarkResolutionOptionsVACSghSbztKcfC', - '_$s10Foundation3URLV21sharedPublicDirectoryACvgZ', '_$s10Foundation3URLV22appendingPathComponent_11isDirectoryACSS_SbtF', + '_$s10Foundation3URLV21sharedPublicDirectoryACvgZ', '_$s10Foundation3URLV21sharedPublicDirectoryACvpZMV', + '_$s10Foundation3URLV22appendingPathComponent_11isDirectoryACSS_SbtF', '_$s10Foundation3URLV22appendingPathComponentyACSSF', '_$s10Foundation3URLV22appendingPathExtensionyACSSF', '_$s10Foundation3URLV23deleteLastPathComponentyyF', '_$s10Foundation3URLV23resolvingSymlinksInPathACyF', '_$s10Foundation3URLV24checkResourceIsReachableSbyKF', '_$s10Foundation3URLV25customPlaygroundQuickLooks01_deF0Ovg', @@ -5979,6 +6676,7 @@ exports: '_$s10Foundation3URLV26_forceBridgeFromObjectiveC_6resultySo5NSURLC_ACSgztFZ', '_$s10Foundation3URLV26promisedItemResourceValues7forKeysAA011URLResourceF0VShySo16NSURLResourceKeyaG_tKF', '_$s10Foundation3URLV27applicationSupportDirectoryACvgZ', + '_$s10Foundation3URLV27applicationSupportDirectoryACvpZMV', '_$s10Foundation3URLV28checkPromisedItemIsReachableSbyKF', '_$s10Foundation3URLV29removeAllCachedResourceValuesyyF', '_$s10Foundation3URLV2eeoiySbAC_ACtFZ', '_$s10Foundation3URLV32fileReferenceLiteralResourceNameACSS_tcfC', @@ -6041,6 +6739,11 @@ exports: '_$s10Foundation40ObjectiveCConvertibleAttributedStringKeyPAASo8NSStringC0B6CValueRtzSY5ValueRpzSSAH_03RawI0SYRTzrlE09objectiveH03forAeI_tKFZ', '_$s10Foundation40ObjectiveCConvertibleAttributedStringKeyPAASo8NSStringC0B6CValueRtzSY5ValueRpzSSAH_03RawI0SYRTzrlE5value3forAiE_tKFZ', '_$s10Foundation40ObjectiveCConvertibleAttributedStringKeyTL', + '_$s10Foundation41DebugStringConvertiblePredicateExpressionMp', + '_$s10Foundation41DebugStringConvertiblePredicateExpressionP05debugC05stateSSAA0bC15ConversionStateVz_tFTj', + '_$s10Foundation41DebugStringConvertiblePredicateExpressionP05debugC05stateSSAA0bC15ConversionStateVz_tFTq', + '_$s10Foundation41DebugStringConvertiblePredicateExpressionPAA08StandardeF0Tb', + '_$s10Foundation41DebugStringConvertiblePredicateExpressionTL', '_$s10Foundation4DataV013base64EncodedB07optionsACSo27NSDataBase64EncodingOptionsV_tF', '_$s10Foundation4DataV06InlineB0V10resetBytes2inySnySiG_tF', '_$s10Foundation4DataV06InlineB0V10startIndexSivg', '_$s10Foundation4DataV06InlineB0V10startIndexSivpMV', @@ -6192,13 +6895,19 @@ exports: '_$s10Foundation4DataV15reserveCapacityyySiF', '_$s10Foundation4DataV15withUnsafeBytesyxxSPyq_GKXEKr0_lF', '_$s10Foundation4DataV15withUnsafeBytesyxxSWKXEKlF', '_$s10Foundation4DataV16_copyBytesHelper2to4fromySv_SnySiGtF', '_$s10Foundation4DataV16debugDescriptionSSvg', '_$s10Foundation4DataV16debugDescriptionSSvpMV', + '_$s10Foundation4DataV16xpcCodableObject3XPC010XPCCodableE0Vvg', + '_$s10Foundation4DataV16xpcCodableObject3XPC010XPCCodableE0VvpMV', '_$s10Foundation4DataV19_bridgeToObjectiveCSo6NSDataCyF', '_$s10Foundation4DataV19base64EncodedString7optionsSSSo27NSDataBase64EncodingOptionsV_tF', + '_$s10Foundation4DataV19validXPCObjectTypesShys13OpaquePointerVGvgZ', + '_$s10Foundation4DataV19validXPCObjectTypesShys13OpaquePointerVGvpZMV', '_$s10Foundation4DataV22withUnsafeMutableBytesyxxSpyq_GKXEKr0_lF', '_$s10Foundation4DataV22withUnsafeMutableBytesyxxSwKXEKlF', '_$s10Foundation4DataV26_forceBridgeFromObjectiveC_6resultySo6NSDataC_ACSgztFZ', '_$s10Foundation4DataV2eeoiySbAC_ACtFZ', '_$s10Foundation4DataV34_conditionallyBridgeFromObjectiveC_6resultSbSo6NSDataC_ACSgztFZ', '_$s10Foundation4DataV36_unconditionallyBridgeFromObjectiveCyACSo6NSDataCSgFZ', + '_$s10Foundation4DataV3XPC29XPCCodableObjectRepresentableAAMc', + '_$s10Foundation4DataV4fromACSg3XPC16XPCCodableObjectV_tcfC', '_$s10Foundation4DataV4fromACs7Decoder_p_tKcfC', '_$s10Foundation4DataV4hash4intoys6HasherVz_tF', '_$s10Foundation4DataV5bytes5countACSV_SitcfC', '_$s10Foundation4DataV5bytesACSays5UInt8VG_tcfC', '_$s10Foundation4DataV5bytesACs10ArraySliceVys5UInt8VG_tcfC', @@ -6259,34 +6968,88 @@ exports: '_$s10Foundation4DateV026timeIntervalSinceReferenceB0Sdvg', '_$s10Foundation4DateV026timeIntervalSinceReferenceB0SdvgZ', '_$s10Foundation4DateV026timeIntervalSinceReferenceB0SdvpMV', + '_$s10Foundation4DateV026timeIntervalSinceReferenceB0SdvpZMV', '_$s10Foundation4DateV035timeIntervalBetween1970AndReferenceB0SdvgZ', + '_$s10Foundation4DateV035timeIntervalBetween1970AndReferenceB0SdvpZMV', + '_$s10Foundation4DateV11FormatStyleV010attributedD0AE10AttributedVvg', + '_$s10Foundation4DateV11FormatStyleV010attributedD0AE10AttributedVvpMV', '_$s10Foundation4DateV11FormatStyleV04TimeD0V2eeoiySbAG_AGtFZ', '_$s10Foundation4DateV11FormatStyleV04TimeD0V4fromAGs7Decoder_p_tKcfC', '_$s10Foundation4DateV11FormatStyleV04TimeD0V4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV04TimeD0V6encode2toys7Encoder_p_tKF', '_$s10Foundation4DateV11FormatStyleV04TimeD0V7omittedAGvgZ', + '_$s10Foundation4DateV11FormatStyleV04TimeD0V7omittedAGvpZMV', '_$s10Foundation4DateV11FormatStyleV04TimeD0V8completeAGvgZ', + '_$s10Foundation4DateV11FormatStyleV04TimeD0V8completeAGvpZMV', '_$s10Foundation4DateV11FormatStyleV04TimeD0V8standardAGvgZ', + '_$s10Foundation4DateV11FormatStyleV04TimeD0V8standardAGvpZMV', '_$s10Foundation4DateV11FormatStyleV04TimeD0V9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV04TimeD0V9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV04TimeD0V9shortenedAGvgZ', + '_$s10Foundation4DateV11FormatStyleV04TimeD0V9shortenedAGvpZMV', '_$s10Foundation4DateV11FormatStyleV04TimeD0VMa', '_$s10Foundation4DateV11FormatStyleV04TimeD0VMn', '_$s10Foundation4DateV11FormatStyleV04TimeD0VN', '_$s10Foundation4DateV11FormatStyleV04TimeD0VSEAAMc', '_$s10Foundation4DateV11FormatStyleV04TimeD0VSHAAMc', '_$s10Foundation4DateV11FormatStyleV04TimeD0VSQAAMc', '_$s10Foundation4DateV11FormatStyleV04TimeD0VSeAAMc', '_$s10Foundation4DateV11FormatStyleV0bD0V11abbreviatedAGvgZ', + '_$s10Foundation4DateV11FormatStyleV0bD0V11abbreviatedAGvpZMV', '_$s10Foundation4DateV11FormatStyleV0bD0V2eeoiySbAG_AGtFZ', '_$s10Foundation4DateV11FormatStyleV0bD0V4fromAGs7Decoder_p_tKcfC', '_$s10Foundation4DateV11FormatStyleV0bD0V4hash4intoys6HasherVz_tF', - '_$s10Foundation4DateV11FormatStyleV0bD0V4longAGvgZ', '_$s10Foundation4DateV11FormatStyleV0bD0V6encode2toys7Encoder_p_tKF', - '_$s10Foundation4DateV11FormatStyleV0bD0V7numericAGvgZ', '_$s10Foundation4DateV11FormatStyleV0bD0V7omittedAGvgZ', + '_$s10Foundation4DateV11FormatStyleV0bD0V4longAGvgZ', '_$s10Foundation4DateV11FormatStyleV0bD0V4longAGvpZMV', + '_$s10Foundation4DateV11FormatStyleV0bD0V6encode2toys7Encoder_p_tKF', + '_$s10Foundation4DateV11FormatStyleV0bD0V7numericAGvgZ', '_$s10Foundation4DateV11FormatStyleV0bD0V7numericAGvpZMV', + '_$s10Foundation4DateV11FormatStyleV0bD0V7omittedAGvgZ', '_$s10Foundation4DateV11FormatStyleV0bD0V7omittedAGvpZMV', '_$s10Foundation4DateV11FormatStyleV0bD0V8completeAGvgZ', + '_$s10Foundation4DateV11FormatStyleV0bD0V8completeAGvpZMV', '_$s10Foundation4DateV11FormatStyleV0bD0V9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV0bD0V9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV0bD0VMa', '_$s10Foundation4DateV11FormatStyleV0bD0VMn', '_$s10Foundation4DateV11FormatStyleV0bD0VN', '_$s10Foundation4DateV11FormatStyleV0bD0VSEAAMc', '_$s10Foundation4DateV11FormatStyleV0bD0VSHAAMc', '_$s10Foundation4DateV11FormatStyleV0bD0VSQAAMc', - '_$s10Foundation4DateV11FormatStyleV0bD0VSeAAMc', '_$s10Foundation4DateV11FormatStyleV10attributedAC010AttributedD0Vvg', + '_$s10Foundation4DateV11FormatStyleV0bD0VSeAAMc', '_$s10Foundation4DateV11FormatStyleV10AttributedV13discreteInput5afterACSgAC_tF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV13discreteInput6beforeACSgAC_tF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluiM', + '_$s10Foundation4DateV11FormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluig', + '_$s10Foundation4DateV11FormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluipMV', + '_$s10Foundation4DateV11FormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluis', + '_$s10Foundation4DateV11FormatStyleV10AttributedV13dynamicMemberxs7KeyPathCyAExG_tcluig', + '_$s10Foundation4DateV11FormatStyleV10AttributedV13dynamicMemberxs7KeyPathCyAExG_tcluipMV', + '_$s10Foundation4DateV11FormatStyleV10AttributedV14secondFractionyAgE6SymbolV06SecondG0VF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV2eeoiySbAG_AGtFZ', + '_$s10Foundation4DateV11FormatStyleV10AttributedV3dayyAgE6SymbolV3DayVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV3erayAgE6SymbolV3EraVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV4fromAGs7Decoder_p_tKcfC', + '_$s10Foundation4DateV11FormatStyleV10AttributedV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV4houryAgE6SymbolV4HourVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV4weekyAgE6SymbolV4WeekVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV4yearyAgE6SymbolV4YearVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV5input5afterACSgAC_tF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV5input6beforeACSgAC_tF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV5monthyAgE6SymbolV5MonthVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV6encode2toys7Encoder_p_tKF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV6formatyAA0E6StringVACF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV6localeyAgA6LocaleVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV6minuteyAgE6SymbolV6MinuteVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV6secondyAgE6SymbolV6SecondVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV7quarteryAgE6SymbolV7QuarterVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV7weekdayyAgE6SymbolV7WeekdayVF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV8timeZoneyAgE6SymbolV04TimeG0VF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV9dayOfYearyAgE6SymbolV03DaygH0VF', + '_$s10Foundation4DateV11FormatStyleV10AttributedV9hashValueSivg', + '_$s10Foundation4DateV11FormatStyleV10AttributedV9hashValueSivpMV', + '_$s10Foundation4DateV11FormatStyleV10AttributedVAA08DiscretecD0AAMc', + '_$s10Foundation4DateV11FormatStyleV10AttributedVAA08DiscretecD0AAWP', + '_$s10Foundation4DateV11FormatStyleV10AttributedVAadAMc', + '_$s10Foundation4DateV11FormatStyleV10AttributedVAadAWP', + '_$s10Foundation4DateV11FormatStyleV10AttributedVMa', '_$s10Foundation4DateV11FormatStyleV10AttributedVMn', + '_$s10Foundation4DateV11FormatStyleV10AttributedVN', '_$s10Foundation4DateV11FormatStyleV10AttributedVSEAAMc', + '_$s10Foundation4DateV11FormatStyleV10AttributedVSHAAMc', + '_$s10Foundation4DateV11FormatStyleV10AttributedVSQAAMc', + '_$s10Foundation4DateV11FormatStyleV10AttributedVSeAAMc', + '_$s10Foundation4DateV11FormatStyleV10attributedAC010AttributedD0Vvg', '_$s10Foundation4DateV11FormatStyleV10attributedAC010AttributedD0VvpMV', + '_$s10Foundation4DateV11FormatStyleV13discreteInput5afterACSgAC_tF', + '_$s10Foundation4DateV11FormatStyleV13discreteInput6beforeACSgAC_tF', '_$s10Foundation4DateV11FormatStyleV13parseStrategyAEvg', '_$s10Foundation4DateV11FormatStyleV13parseStrategyAEvpMV', '_$s10Foundation4DateV11FormatStyleV14secondFractionyA2E6SymbolV06SecondF0VF', @@ -6304,24 +7067,35 @@ exports: '_$s10Foundation4DateV11FormatStyleV4houryA2E6SymbolV4HourVF', '_$s10Foundation4DateV11FormatStyleV4weekyA2E6SymbolV4WeekVF', '_$s10Foundation4DateV11FormatStyleV4yearyA2E6SymbolV4YearVF', + '_$s10Foundation4DateV11FormatStyleV5input5afterACSgAC_tF', + '_$s10Foundation4DateV11FormatStyleV5input6beforeACSgAC_tF', '_$s10Foundation4DateV11FormatStyleV5monthyA2E6SymbolV5MonthVF', '_$s10Foundation4DateV11FormatStyleV5parseyACSSKF', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V13defaultDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V13defaultDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V6paddedyAISiFZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0V9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0VMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0VMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0VN', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0VSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV013YearForWeekOfF0VSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV11abbreviatedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV11abbreviatedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV4wideAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV4wideAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV6narrowAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV6narrowAIvpZMV', + '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV10CyclicYearVMa', @@ -6334,9 +7108,11 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleV6encode2toys7Encoder_p_tKF', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleV8oneBasedAKvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleV8oneBasedAKvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleV9zeroBasedAKvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleV9zeroBasedAKvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV0G5CycleVN', @@ -6348,7 +7124,9 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV5ClockV010twentyFourG0AKvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV5ClockV010twentyFourG0AKvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV5ClockV06twelveG0AKvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV5ClockV06twelveG0AKvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV5ClockV2eeoiySbAK_AKtFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV5ClockV4fromAKs7Decoder_p_tKcfC', '_$s10Foundation4DateV11FormatStyleV6SymbolV12VerbatimHourV5ClockV4hash4intoys6HasherVz_tF', @@ -6374,6 +7152,8 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV14SecondFractionV12millisecondsyAISiFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV14SecondFractionV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV14SecondFractionV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV11FormatStyleV6SymbolV14SecondFractionV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV14SecondFractionV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV14SecondFractionV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV14SecondFractionV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV14SecondFractionVMa', @@ -6382,40 +7162,55 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV14SecondFractionVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV14SecondFractionVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV11abbreviatedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV11abbreviatedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV13defaultDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV13defaultDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV4wideAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV4wideAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV6narrowAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV6narrowAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV15StandaloneMonthVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV11abbreviatedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV11abbreviatedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV4wideAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV4wideAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV6narrowAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV6narrowAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV8oneDigitAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV8oneDigitAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneQuarterVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV11abbreviatedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV11abbreviatedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV4wideAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV4wideAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV5shortAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV5shortAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV6narrowAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV6narrowAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV8oneDigitAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV8oneDigitAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayVMa', @@ -6425,21 +7220,31 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV17StandaloneWeekdayVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV2eeoiySbAG_AGtFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV09ordinalOfF7InMonthAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV09ordinalOfF7InMonthAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV13defaultDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV13defaultDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV14julianModified13minimumLengthAISi_tFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV3DayVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV11abbreviatedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV11abbreviatedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV4wideAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV4wideAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV6narrowAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV6narrowAIvpZMV', + '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraVMn', @@ -6447,19 +7252,27 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV3EraVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV13defaultDigits4amPMA2I9AMPMStyleV_tFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV15twoDigitsNoAMPMAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV15twoDigitsNoAMPMAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV19defaultDigitsNoAMPMAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV19defaultDigitsNoAMPMAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV23conversationalTwoDigits4amPMA2I9AMPMStyleV_tFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV27conversationalDefaultDigits4amPMA2I9AMPMStyleV_tFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV11abbreviatedAKvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV11abbreviatedAKvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV2eeoiySbAK_AKtFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV4fromAKs7Decoder_p_tKcfC', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV4wideAKvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV4wideAKvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV6encode2toys7Encoder_p_tKF', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV6narrowAKvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV6narrowAKvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV7omittedAKvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV7omittedAKvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourV9AMPMStyleVMa', @@ -6476,81 +7289,120 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV4HourVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV11weekOfMonthAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV11weekOfMonthAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV13defaultDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV13defaultDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV4WeekVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV13defaultDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV13defaultDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV16relatedGregorian13minimumLengthAISi_tFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV6paddedyAISiFZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV8extended13minimumLengthAISi_tFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV4YearVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV11abbreviatedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV11abbreviatedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV13defaultDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV13defaultDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV4wideAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV4wideAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV6narrowAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV6narrowAIvpZMV', + '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV5MonthVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteV13defaultDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteV13defaultDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV6MinuteVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondV13defaultDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondV13defaultDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV6SecondVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV11abbreviatedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV11abbreviatedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV4wideAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV4wideAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV6narrowAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV6narrowAIvpZMV', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV8oneDigitAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV8oneDigitAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV7QuarterVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV11abbreviatedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV11abbreviatedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV4wideAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV4wideAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV5shortAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV5shortAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV6narrowAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV6narrowAIvpZMV', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV8oneDigitAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV8oneDigitAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayVN', '_$s10Foundation4DateV11FormatStyleV6SymbolV7WeekdayVSHAAMc', @@ -6560,7 +7412,9 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV12localizedGMTyA2I5WidthOFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV12specificNameyA2I5WidthOFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV15genericLocationAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV15genericLocationAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV16exemplarLocationAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV16exemplarLocationAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV5WidthO2eeoiySbAK_AKtFZ', @@ -6575,6 +7429,8 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV5WidthOSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV5WidthOSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV7iso8601yA2I5WidthOFZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneVMa', @@ -6583,12 +7439,17 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneVSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV8TimeZoneVSQAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV11threeDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV11threeDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV13defaultDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV13defaultDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV2eeoiySbAI_AItFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV9hashValueSivpMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV9twoDigitsAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearV9twoDigitsAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearVMa', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearVMn', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayOfYearVN', @@ -6609,6 +7470,8 @@ exports: '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayPeriodV5WidthON', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayPeriodV5WidthOSHAAMc', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayPeriodV5WidthOSQAAMc', + '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayPeriodV7omittedAIvgZ', + '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayPeriodV7omittedAIvpZMV', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayPeriodV7with12syA2I5WidthOFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayPeriodV8standardyA2I5WidthOFZ', '_$s10Foundation4DateV11FormatStyleV6SymbolV9DayPeriodV9hashValueSivg', @@ -6644,6 +7507,8 @@ exports: '_$s10Foundation4DateV11FormatStyleV9consuming_10startingAt2inSS5IndexV10upperBound_AC6outputtSgSS_AJSnyAJGtKF', '_$s10Foundation4DateV11FormatStyleV9dayOfYearyA2E6SymbolV03DayfG0VF', '_$s10Foundation4DateV11FormatStyleV9hashValueSivg', '_$s10Foundation4DateV11FormatStyleV9hashValueSivpMV', + '_$s10Foundation4DateV11FormatStyleVAA08DiscretecD0AAMc', + '_$s10Foundation4DateV11FormatStyleVAA08DiscretecD0AAWP', '_$s10Foundation4DateV11FormatStyleVAA09ParseablecD0AAMc', '_$s10Foundation4DateV11FormatStyleVAA09ParseablecD0AAWP', '_$s10Foundation4DateV11FormatStyleVAA13ParseStrategyAAMc', @@ -6654,7 +7519,8 @@ exports: '_$s10Foundation4DateV11FormatStyleVSHAAMc', '_$s10Foundation4DateV11FormatStyleVSQAAMc', '_$s10Foundation4DateV11FormatStyleVSeAAMc', '_$s10Foundation4DateV11description4withSSAA6LocaleVSg_tF', '_$s10Foundation4DateV11descriptionSSvg', '_$s10Foundation4DateV11descriptionSSvpMV', - '_$s10Foundation4DateV11distantPastACvgZ', '_$s10Foundation4DateV12FormatStringV0D13InterpolationV06appendE010cyclicYearyAC0C5StyleV6SymbolV06CyclicH0V_tF', + '_$s10Foundation4DateV11distantPastACvgZ', '_$s10Foundation4DateV11distantPastACvpZMV', + '_$s10Foundation4DateV12FormatStringV0D13InterpolationV06appendE010cyclicYearyAC0C5StyleV6SymbolV06CyclicH0V_tF', '_$s10Foundation4DateV12FormatStringV0D13InterpolationV06appendE014secondFractionyAC0C5StyleV6SymbolV06SecondH0V_tF', '_$s10Foundation4DateV12FormatStringV0D13InterpolationV06appendE015standaloneMonthyAC0C5StyleV6SymbolV010StandaloneH0V_tF', '_$s10Foundation4DateV12FormatStringV0D13InterpolationV06appendE017standaloneQuarteryAC0C5StyleV6SymbolV010StandaloneH0V_tF', @@ -6723,7 +7589,7 @@ exports: '_$s10Foundation4DateV13ParseStrategyVN', '_$s10Foundation4DateV13ParseStrategyVSEAAMc', '_$s10Foundation4DateV13ParseStrategyVSHAAMc', '_$s10Foundation4DateV13ParseStrategyVSQAAMc', '_$s10Foundation4DateV13ParseStrategyVSeAAMc', '_$s10Foundation4DateV13distantFutureACvgZ', - '_$s10Foundation4DateV15AttributedStyleV2eeoiySbAE_AEtFZ', + '_$s10Foundation4DateV13distantFutureACvpZMV', '_$s10Foundation4DateV15AttributedStyleV2eeoiySbAE_AEtFZ', '_$s10Foundation4DateV15AttributedStyleV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation4DateV15AttributedStyleV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV15AttributedStyleV6encode2toys7Encoder_p_tKF', @@ -6764,6 +7630,8 @@ exports: '_$s10Foundation4DateV18ISO8601FormatStyleV0B9SeparatorOSYAAMc', '_$s10Foundation4DateV18ISO8601FormatStyleV0B9SeparatorOSeAAMc', '_$s10Foundation4DateV18ISO8601FormatStyleV10weekOfYearAEyF', + '_$s10Foundation4DateV18ISO8601FormatStyleV12formatFieldsAE0G0Vvg', + '_$s10Foundation4DateV18ISO8601FormatStyleV12formatFieldsAE0G0VvpMV', '_$s10Foundation4DateV18ISO8601FormatStyleV13TimeSeparatorO5colonyA2GmFWC', '_$s10Foundation4DateV18ISO8601FormatStyleV13TimeSeparatorO7omittedyA2GmFWC', '_$s10Foundation4DateV18ISO8601FormatStyleV13TimeSeparatorO8rawValueAGSgSS_tcfC', @@ -6815,7 +7683,36 @@ exports: '_$s10Foundation4DateV18ISO8601FormatStyleV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV18ISO8601FormatStyleV4time26includingFractionalSecondsAESb_tF', '_$s10Foundation4DateV18ISO8601FormatStyleV4yearAEyF', '_$s10Foundation4DateV18ISO8601FormatStyleV5monthAEyF', + '_$s10Foundation4DateV18ISO8601FormatStyleV5parse_2inSS5IndexV_ACtSgSS_SnyAIGtF', '_$s10Foundation4DateV18ISO8601FormatStyleV5parseyACSSKF', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV10weekOfYearAGvgZ', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV10weekOfYearAGvpZMV', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV3dayAGvgZ', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV3dayAGvpZMV', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV4fromAGs7Decoder_p_tKcfC', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV4timeAGvgZ', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV4timeAGvpZMV', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV4yearAGvgZ', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV4yearAGvpZMV', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV5monthAGvgZ', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV5monthAGvpZMV', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV6encode2toys7Encoder_p_tKF', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV8rawValueAGSu_tcfC', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV8rawValueSuvM', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV8rawValueSuvg', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV8rawValueSuvpMV', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV8rawValueSuvs', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV8timeZoneAGvgZ', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsV8timeZoneAGvpZMV', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVMa', '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVMn', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVN', '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVSEAAMc', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVSHAAMc', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVSQAAMc', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVSYAAMc', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVSeAAMc', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVs10SetAlgebraAAMc', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVs25ExpressibleByArrayLiteralAAMc', + '_$s10Foundation4DateV18ISO8601FormatStyleV6FieldsVs9OptionSetAAMc', '_$s10Foundation4DateV18ISO8601FormatStyleV6encode2toys7Encoder_p_tKF', '_$s10Foundation4DateV18ISO8601FormatStyleV6formatySSACF', '_$s10Foundation4DateV18ISO8601FormatStyleV8timeZone9separatorA2E04TimeG9SeparatorO_tF', @@ -6835,6 +7732,7 @@ exports: '_$s10Foundation4DateV18ISO8601FormatStyleVN', '_$s10Foundation4DateV18ISO8601FormatStyleVSEAAMc', '_$s10Foundation4DateV18ISO8601FormatStyleVSHAAMc', '_$s10Foundation4DateV18ISO8601FormatStyleVSQAAMc', '_$s10Foundation4DateV18ISO8601FormatStyleVSeAAMc', '_$s10Foundation4DateV18addingTimeIntervalyACSdF', + '_$s10Foundation4DateV18validCalendarRangeSNyACGvgZ', '_$s10Foundation4DateV18validCalendarRangeSNyACGvpZMV', '_$s10Foundation4DateV19IntervalFormatStyleV2eeoiySbAE_AEtFZ', '_$s10Foundation4DateV19IntervalFormatStyleV3dayAEyF', '_$s10Foundation4DateV19IntervalFormatStyleV4date4time6locale8calendar0G4ZoneAeC0dE0V0bE0VSg_AL04TimeE0VSgAA6LocaleVAA8CalendarVAA0kJ0VtcfC', '_$s10Foundation4DateV19IntervalFormatStyleV4fromAEs7Decoder_p_tKcfC', @@ -6867,13 +7765,17 @@ exports: '_$s10Foundation4DateV19IntervalFormatStyleVN', '_$s10Foundation4DateV19IntervalFormatStyleVSEAAMc', '_$s10Foundation4DateV19IntervalFormatStyleVSHAAMc', '_$s10Foundation4DateV19IntervalFormatStyleVSQAAMc', '_$s10Foundation4DateV19IntervalFormatStyleVSeAAMc', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V11abbreviatedAGvgZ', + '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V11abbreviatedAGvpZMV', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V2eeoiySbAG_AGtFZ', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V4fromAGs7Decoder_p_tKcfC', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V4wideAGvgZ', + '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V4wideAGvpZMV', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V6encode2toys7Encoder_p_tKF', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V6narrowAGvgZ', + '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V6narrowAGvpZMV', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V8spellOutAGvgZ', + '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V8spellOutAGvpZMV', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V9hashValueSivg', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0V9hashValueSivpMV', '_$s10Foundation4DateV19RelativeFormatStyleV05UnitsE0VMa', @@ -6891,8 +7793,10 @@ exports: '_$s10Foundation4DateV19RelativeFormatStyleV12PresentationV4fromAGs7Decoder_p_tKcfC', '_$s10Foundation4DateV19RelativeFormatStyleV12PresentationV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV19RelativeFormatStyleV12PresentationV5namedAGvgZ', + '_$s10Foundation4DateV19RelativeFormatStyleV12PresentationV5namedAGvpZMV', '_$s10Foundation4DateV19RelativeFormatStyleV12PresentationV6encode2toys7Encoder_p_tKF', '_$s10Foundation4DateV19RelativeFormatStyleV12PresentationV7numericAGvgZ', + '_$s10Foundation4DateV19RelativeFormatStyleV12PresentationV7numericAGvpZMV', '_$s10Foundation4DateV19RelativeFormatStyleV12PresentationV9hashValueSivg', '_$s10Foundation4DateV19RelativeFormatStyleV12PresentationV9hashValueSivpMV', '_$s10Foundation4DateV19RelativeFormatStyleV12PresentationVMa', @@ -6907,6 +7811,11 @@ exports: '_$s10Foundation4DateV19RelativeFormatStyleV12presentationAE12PresentationVvg', '_$s10Foundation4DateV19RelativeFormatStyleV12presentationAE12PresentationVvpMV', '_$s10Foundation4DateV19RelativeFormatStyleV12presentationAE12PresentationVvs', + '_$s10Foundation4DateV19RelativeFormatStyleV13allowedFields12presentation05unitsE06locale8calendar21capitalizationContextAEShyAC010ComponentsdE0V5FieldVG_AE12PresentationVAE05UnitsE0VAA6LocaleVAA8CalendarVAA0de14CapitalizationM0VtcfC', + '_$s10Foundation4DateV19RelativeFormatStyleV13allowedFieldsShyAC010ComponentsdE0V5FieldVGvM', + '_$s10Foundation4DateV19RelativeFormatStyleV13allowedFieldsShyAC010ComponentsdE0V5FieldVGvg', + '_$s10Foundation4DateV19RelativeFormatStyleV13allowedFieldsShyAC010ComponentsdE0V5FieldVGvpMV', + '_$s10Foundation4DateV19RelativeFormatStyleV13allowedFieldsShyAC010ComponentsdE0V5FieldVGvs', '_$s10Foundation4DateV19RelativeFormatStyleV21capitalizationContextAA0de14CapitalizationG0VvM', '_$s10Foundation4DateV19RelativeFormatStyleV21capitalizationContextAA0de14CapitalizationG0Vvg', '_$s10Foundation4DateV19RelativeFormatStyleV21capitalizationContextAA0de14CapitalizationG0VvpMV', @@ -6931,8 +7840,41 @@ exports: '_$s10Foundation4DateV19RelativeFormatStyleVMa', '_$s10Foundation4DateV19RelativeFormatStyleVMn', '_$s10Foundation4DateV19RelativeFormatStyleVN', '_$s10Foundation4DateV19RelativeFormatStyleVSEAAMc', '_$s10Foundation4DateV19RelativeFormatStyleVSHAAMc', '_$s10Foundation4DateV19RelativeFormatStyleVSQAAMc', - '_$s10Foundation4DateV19RelativeFormatStyleVSeAAMc', '_$s10Foundation4DateV19VerbatimFormatStyleV10attributedAC010AttributedE0Vvg', + '_$s10Foundation4DateV19RelativeFormatStyleVSeAAMc', '_$s10Foundation4DateV19VerbatimFormatStyleV010attributedE0AE10AttributedVvg', + '_$s10Foundation4DateV19VerbatimFormatStyleV010attributedE0AE10AttributedVvpMV', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV13discreteInput5afterACSgAC_tF', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV13discreteInput6beforeACSgAC_tF', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluiM', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluig', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluipMV', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluis', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV13dynamicMemberxs7KeyPathCyAExG_tcluig', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV13dynamicMemberxs7KeyPathCyAExG_tcluipMV', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV2eeoiySbAG_AGtFZ', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV4fromAGs7Decoder_p_tKcfC', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV5input5afterACSgAC_tF', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV5input6beforeACSgAC_tF', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV6encode2toys7Encoder_p_tKF', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV6formatyAA0F6StringVACF', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV6localeyAgA6LocaleVF', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV9hashValueSivg', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedV9hashValueSivpMV', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVAA08DiscretedE0AAMc', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVAA08DiscretedE0AAWP', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVAA0dE0AAMc', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVAA0dE0AAWP', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVMa', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVMn', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVN', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVSEAAMc', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVSHAAMc', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVSQAAMc', + '_$s10Foundation4DateV19VerbatimFormatStyleV10AttributedVSeAAMc', + '_$s10Foundation4DateV19VerbatimFormatStyleV10attributedAC010AttributedE0Vvg', '_$s10Foundation4DateV19VerbatimFormatStyleV10attributedAC010AttributedE0VvpMV', + '_$s10Foundation4DateV19VerbatimFormatStyleV13discreteInput5afterACSgAC_tF', + '_$s10Foundation4DateV19VerbatimFormatStyleV13discreteInput6beforeACSgAC_tF', '_$s10Foundation4DateV19VerbatimFormatStyleV13parseStrategyAC05ParseG0Vvg', '_$s10Foundation4DateV19VerbatimFormatStyleV13parseStrategyAC05ParseG0VvpMV', '_$s10Foundation4DateV19VerbatimFormatStyleV17_StringProcessing14RegexComponentAAMc', @@ -6940,6 +7882,8 @@ exports: '_$s10Foundation4DateV19VerbatimFormatStyleV2eeoiySbAE_AEtFZ', '_$s10Foundation4DateV19VerbatimFormatStyleV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation4DateV19VerbatimFormatStyleV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV19VerbatimFormatStyleV5input5afterACSgAC_tF', + '_$s10Foundation4DateV19VerbatimFormatStyleV5input6beforeACSgAC_tF', '_$s10Foundation4DateV19VerbatimFormatStyleV6encode2toys7Encoder_p_tKF', '_$s10Foundation4DateV19VerbatimFormatStyleV6format6locale8timeZone8calendarAeC0D6StringV_AA6LocaleVSgAA04TimeI0VAA8CalendarVtcfC', '_$s10Foundation4DateV19VerbatimFormatStyleV6formatySSACF', @@ -6959,6 +7903,8 @@ exports: '_$s10Foundation4DateV19VerbatimFormatStyleV9consuming_10startingAt2inSS5IndexV10upperBound_AC6outputtSgSS_AJSnyAJGtKF', '_$s10Foundation4DateV19VerbatimFormatStyleV9hashValueSivg', '_$s10Foundation4DateV19VerbatimFormatStyleV9hashValueSivpMV', + '_$s10Foundation4DateV19VerbatimFormatStyleVAA08DiscretedE0AAMc', + '_$s10Foundation4DateV19VerbatimFormatStyleVAA08DiscretedE0AAWP', '_$s10Foundation4DateV19VerbatimFormatStyleVAA09ParseabledE0AAMc', '_$s10Foundation4DateV19VerbatimFormatStyleVAA09ParseabledE0AAWP', '_$s10Foundation4DateV19VerbatimFormatStyleVAA0dE0AAMc', '_$s10Foundation4DateV19VerbatimFormatStyleVAA0dE0AAWP', @@ -6970,14 +7916,19 @@ exports: '_$s10Foundation4DateV1poiyA2C_SdtFZ', '_$s10Foundation4DateV1soiyA2C_SdtFZ', '_$s10Foundation4DateV20timeIntervalSinceNowACSd_tcfC', '_$s10Foundation4DateV20timeIntervalSinceNowSdvg', '_$s10Foundation4DateV20timeIntervalSinceNowSdvpMV', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V11abbreviatedAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V11abbreviatedAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V20condensedAbbreviatedAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V20condensedAbbreviatedAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V2eeoiySbAG_AGtFZ', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V4fromAGs7Decoder_p_tKcfC', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V4wideAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V4wideAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V6encode2toys7Encoder_p_tKF', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V6narrowAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V6narrowAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V8spellOutAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V8spellOutAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V9hashValueSivg', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0V9hashValueSivpMV', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0VMa', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0VMn', @@ -6985,20 +7936,33 @@ exports: '_$s10Foundation4DateV21ComponentsFormatStyleV0E0VSHAAMc', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0VSQAAMc', '_$s10Foundation4DateV21ComponentsFormatStyleV0E0VSeAAMc', + '_$s10Foundation4DateV21ComponentsFormatStyleV10isPositiveSbvM', + '_$s10Foundation4DateV21ComponentsFormatStyleV10isPositiveSbvg', + '_$s10Foundation4DateV21ComponentsFormatStyleV10isPositiveSbvpMV', + '_$s10Foundation4DateV21ComponentsFormatStyleV10isPositiveSbvs', + '_$s10Foundation4DateV21ComponentsFormatStyleV13discreteInput5afterSnyACGSgAH_tF', + '_$s10Foundation4DateV21ComponentsFormatStyleV13discreteInput6beforeSnyACGSgAH_tF', '_$s10Foundation4DateV21ComponentsFormatStyleV2eeoiySbAE_AEtFZ', '_$s10Foundation4DateV21ComponentsFormatStyleV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation4DateV21ComponentsFormatStyleV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV2eeoiySbAG_AGtFZ', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV3dayAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV3dayAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV4fromAGs7Decoder_p_tKcfC', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV4hourAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV4hourAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV4weekAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV4weekAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV4yearAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV4yearAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV5monthAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV5monthAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV6encode2toys7Encoder_p_tKF', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV6minuteAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV6minuteAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV6secondAGvgZ', + '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV6secondAGvpZMV', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV9hashValueSivg', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldV9hashValueSivpMV', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldVMa', @@ -7007,6 +7971,8 @@ exports: '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldVSHAAMc', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldVSQAAMc', '_$s10Foundation4DateV21ComponentsFormatStyleV5FieldVSeAAMc', + '_$s10Foundation4DateV21ComponentsFormatStyleV5input5afterSnyACGSgAH_tF', + '_$s10Foundation4DateV21ComponentsFormatStyleV5input6beforeSnyACGSgAH_tF', '_$s10Foundation4DateV21ComponentsFormatStyleV5style6locale8calendar6fieldsA2E0E0V_AA6LocaleVAA8CalendarVShyAE5FieldVGSgtcfC', '_$s10Foundation4DateV21ComponentsFormatStyleV5styleAE0E0VvM', '_$s10Foundation4DateV21ComponentsFormatStyleV5styleAE0E0Vvg', @@ -7030,23 +7996,80 @@ exports: '_$s10Foundation4DateV21ComponentsFormatStyleV8calendaryAeA8CalendarVF', '_$s10Foundation4DateV21ComponentsFormatStyleV9hashValueSivg', '_$s10Foundation4DateV21ComponentsFormatStyleV9hashValueSivpMV', + '_$s10Foundation4DateV21ComponentsFormatStyleVAA08DiscretedE0AAMc', + '_$s10Foundation4DateV21ComponentsFormatStyleVAA08DiscretedE0AAWP', '_$s10Foundation4DateV21ComponentsFormatStyleVAA0dE0AAMc', '_$s10Foundation4DateV21ComponentsFormatStyleVAA0dE0AAWP', '_$s10Foundation4DateV21ComponentsFormatStyleVMa', '_$s10Foundation4DateV21ComponentsFormatStyleVMn', '_$s10Foundation4DateV21ComponentsFormatStyleVN', '_$s10Foundation4DateV21ComponentsFormatStyleVSEAAMc', '_$s10Foundation4DateV21ComponentsFormatStyleVSHAAMc', '_$s10Foundation4DateV21ComponentsFormatStyleVSQAAMc', - '_$s10Foundation4DateV21ComponentsFormatStyleVSeAAMc', '_$s10Foundation4DateV21timeIntervalSince1970ACSd_tcfC', + '_$s10Foundation4DateV21ComponentsFormatStyleVSeAAMc', '_$s10Foundation4DateV21isValidForEnumerationSbvg', + '_$s10Foundation4DateV21isValidForEnumerationSbvpMV', '_$s10Foundation4DateV21timeIntervalSince1970ACSd_tcfC', '_$s10Foundation4DateV21timeIntervalSince1970Sdvg', '_$s10Foundation4DateV21timeIntervalSince1970SdvpMV', '_$s10Foundation4DateV25customPlaygroundQuickLooks01_deF0Ovg', '_$s10Foundation4DateV25customPlaygroundQuickLooks01_deF0OvpMV', '_$s10Foundation4DateV26_forceBridgeFromObjectiveC_6resultySo6NSDateC_ACSgztFZ', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV05unitsF0AC0deF0V05UnitsF0VvM', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV05unitsF0AC0deF0V05UnitsF0Vvg', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV05unitsF0AC0deF0V05UnitsF0VvpMV', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV05unitsF0AC0deF0V05UnitsF0Vvs', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV12presentationAC0deF0V12PresentationVvM', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV12presentationAC0deF0V12PresentationVvg', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV12presentationAC0deF0V12PresentationVvpMV', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV12presentationAC0deF0V12PresentationVvs', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV13allowedFieldsShyAC010ComponentseF0V5FieldVGvM', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV13allowedFieldsShyAC010ComponentseF0V5FieldVGvg', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV13allowedFieldsShyAC010ComponentseF0V5FieldVGvpMV', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV13allowedFieldsShyAC010ComponentseF0V5FieldVGvs', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV13discreteInput5afterACSgAC_tF', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV13discreteInput6beforeACSgAC_tF', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV21capitalizationContextAA0ef14CapitalizationH0VvM', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV21capitalizationContextAA0ef14CapitalizationH0Vvg', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV21capitalizationContextAA0ef14CapitalizationH0VvpMV', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV21capitalizationContextAA0ef14CapitalizationH0Vvs', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV2eeoiySbAE_AEtFZ', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV4fromAEs7Decoder_p_tKcfC', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV5input5afterACSgAC_tF', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV5input6beforeACSgAC_tF', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6anchor12presentation05unitsF06locale8calendar21capitalizationContextAeC_AC0deF0V12PresentationVAM05UnitsF0VAA6LocaleVAA8CalendarVAA0ef14CapitalizationM0VtcfC', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6anchor13allowedFields12presentation05unitsF06locale8calendar21capitalizationContextAeC_ShyAC010ComponentseF0V5FieldVGAC0deF0V12PresentationVAS05UnitsF0VAA6LocaleVAA8CalendarVAA0ef14CapitalizationO0VtcfC', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6anchorACvM', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6anchorACvg', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6anchorACvpMV', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6anchorACvs', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6encode2toys7Encoder_p_tKF', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6formatySSACF', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6localeAA6LocaleVvM', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6localeAA6LocaleVvg', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6localeAA6LocaleVvpMV', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6localeAA6LocaleVvs', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV6localeyAeA6LocaleVF', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV8calendarAA8CalendarVvM', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV8calendarAA8CalendarVvg', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV8calendarAA8CalendarVvpMV', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV8calendarAA8CalendarVvs', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV9hashValueSivg', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleV9hashValueSivpMV', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVAA08DiscreteeF0AAMc', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVAA08DiscreteeF0AAWP', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVAA0eF0AAMc', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVAA0eF0AAWP', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVMa', '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVMn', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVN', '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVSEAAMc', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVSHAAMc', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVSQAAMc', + '_$s10Foundation4DateV27AnchoredRelativeFormatStyleVSeAAMc', '_$s10Foundation4DateV2eeoiySbAC_ACtFZ', '_$s10Foundation4DateV2peoiyyACz_SdtFZ', '_$s10Foundation4DateV2seoiyyACz_SdtFZ', '_$s10Foundation4DateV34_conditionallyBridgeFromObjectiveC_6resultSbSo6NSDateC_ACSgztFZ', '_$s10Foundation4DateV36_unconditionallyBridgeFromObjectiveCyACSo6NSDateCSgFZ', - '_$s10Foundation4DateV3nowACvgZ', '_$s10Foundation4DateV4fromACs7Decoder_p_tKcfC', - '_$s10Foundation4DateV4hash4intoys6HasherVz_tF', '_$s10Foundation4DateV6encode2toys7Encoder_p_tKF', - '_$s10Foundation4DateV7compareySo18NSComparisonResultVACF', + '_$s10Foundation4DateV3nowACvgZ', '_$s10Foundation4DateV3nowACvpZMV', + '_$s10Foundation4DateV4fromACs7Decoder_p_tKcfC', '_$s10Foundation4DateV4hash4intoys6HasherVz_tF', + '_$s10Foundation4DateV6cappedACvg', '_$s10Foundation4DateV6cappedACvpMV', + '_$s10Foundation4DateV6encode2toys7Encoder_p_tKF', '_$s10Foundation4DateV6nextUpACvg', + '_$s10Foundation4DateV6nextUpACvpMV', '_$s10Foundation4DateV7compareySo18NSComparisonResultVACF', '_$s10Foundation4DateV8advanced2byACSd_tF', '_$s10Foundation4DateV8distance2toSdAC_tF', + '_$s10Foundation4DateV8nextDownACvg', '_$s10Foundation4DateV8nextDownACvpMV', '_$s10Foundation4DateV9formatted4date4timeSSAC11FormatStyleV0bG0V_AH04TimeG0VtF', '_$s10Foundation4DateV9formattedSSyF', '_$s10Foundation4DateV9formattedy12FormatOutputQzxAA0D5StyleRzAC0D5InputRtzlF', '_$s10Foundation4DateV9hashValueSivg', '_$s10Foundation4DateV9hashValueSivpMV', @@ -7079,7 +8102,8 @@ exports: '_$s10Foundation4UUIDVSQAAMc', '_$s10Foundation4UUIDVSeAAMc', '_$s10Foundation4UUIDVs17CustomReflectableAAMc', '_$s10Foundation4UUIDVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation4UUIDVs23CustomStringConvertibleAAMc', '_$s10Foundation4UUIDVs28CustomDebugStringConvertibleAAMc', - '_$s10Foundation5NSLogyySS_s7CVarArg_pdtF', '_$s10Foundation6LocaleV07windowsB4Code14fromIdentifierSiSgSS_tFZ', + '_$s10Foundation5NSLogyySS_s7CVarArg_pdtF', '_$s10Foundation6LocaleV010_canonicalB10Identifier4fromS2S_tFZ', + '_$s10Foundation6LocaleV07windowsB4Code14fromIdentifierSiSgSS_tFZ', '_$s10Foundation6LocaleV10ComponentsV08languageC0AC8LanguageVADVvM', '_$s10Foundation6LocaleV10ComponentsV08languageC0AC8LanguageVADVvg', '_$s10Foundation6LocaleV10ComponentsV08languageC0AC8LanguageVADVvpMV', @@ -7140,6 +8164,7 @@ exports: '_$s10Foundation6LocaleV10ComponentsVSeAAMc', '_$s10Foundation6LocaleV10components14fromIdentifierSDyS2SGSS_tFZ', '_$s10Foundation6LocaleV10componentsA2C10ComponentsV_tcfC', '_$s10Foundation6LocaleV10identifier011fromWindowsB4CodeSSSgSi_tFZ', + '_$s10Foundation6LocaleV10identifier11preferencesACSS_AA0B11PreferencesVSgtcfC', '_$s10Foundation6LocaleV10identifier14fromComponentsSSSDyS2SG_tFZ', '_$s10Foundation6LocaleV10identifierACSS_tcfC', '_$s10Foundation6LocaleV10identifierSSvg', '_$s10Foundation6LocaleV10identifierSSvpMV', '_$s10Foundation6LocaleV10identifier_4fromSSAC14IdentifierTypeO_SStFZ', @@ -7148,10 +8173,22 @@ exports: '_$s10Foundation6LocaleV10scriptCodeSSSgvg', '_$s10Foundation6LocaleV10scriptCodeSSSgvpMV', '_$s10Foundation6LocaleV11SubdivisionV10identifierSSvM', '_$s10Foundation6LocaleV11SubdivisionV10identifierSSvg', '_$s10Foundation6LocaleV11SubdivisionV10identifierSSvpMV', - '_$s10Foundation6LocaleV11SubdivisionV10identifierSSvs', '_$s10Foundation6LocaleV11SubdivisionV11subdivision3forAeC6RegionV_tFZ', + '_$s10Foundation6LocaleV11SubdivisionV10identifierSSvs', '_$s10Foundation6LocaleV11SubdivisionV11_identifierSSvM', + '_$s10Foundation6LocaleV11SubdivisionV11_identifierSSvg', + '_$s10Foundation6LocaleV11SubdivisionV11_identifierSSvpMV', + '_$s10Foundation6LocaleV11SubdivisionV11_identifierSSvs', + '_$s10Foundation6LocaleV11SubdivisionV11subdivision3forAeC6RegionV_tFZ', '_$s10Foundation6LocaleV11SubdivisionV13stringLiteralAESS_tcfC', + '_$s10Foundation6LocaleV11SubdivisionV14cldrKeywordKeyAA10ICUCLDRKeyVvgZ', + '_$s10Foundation6LocaleV11SubdivisionV14cldrKeywordKeyAA10ICUCLDRKeyVvpZMV', '_$s10Foundation6LocaleV11SubdivisionV16debugDescriptionSSvg', '_$s10Foundation6LocaleV11SubdivisionV16debugDescriptionSSvpMV', + '_$s10Foundation6LocaleV11SubdivisionV16legacyKeywordKeyAA09ICULegacyF0VvgZ', + '_$s10Foundation6LocaleV11SubdivisionV16legacyKeywordKeyAA09ICULegacyF0VvpZMV', + '_$s10Foundation6LocaleV11SubdivisionV21_normalizedIdentifierSSvM', + '_$s10Foundation6LocaleV11SubdivisionV21_normalizedIdentifierSSvg', + '_$s10Foundation6LocaleV11SubdivisionV21_normalizedIdentifierSSvpMV', + '_$s10Foundation6LocaleV11SubdivisionV21_normalizedIdentifierSSvs', '_$s10Foundation6LocaleV11SubdivisionV2eeoiySbAE_AEtFZ', '_$s10Foundation6LocaleV11SubdivisionV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation6LocaleV11SubdivisionV4hash4intoys6HasherVz_tF', '_$s10Foundation6LocaleV11SubdivisionV6encode2toys7Encoder_p_tKF', @@ -7167,16 +8204,34 @@ exports: '_$s10Foundation6LocaleV11descriptionSSvpMV', '_$s10Foundation6LocaleV11subdivisionAC11SubdivisionVSgvg', '_$s10Foundation6LocaleV11subdivisionAC11SubdivisionVSgvpMV', '_$s10Foundation6LocaleV11variantCodeSSSgvg', '_$s10Foundation6LocaleV11variantCodeSSSgvpMV', + '_$s10Foundation6LocaleV12LanguageCodeV0018norwegianBokml_xibAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV008mori_qsaAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV03isoC5CodesSayAEGvgZ', + '_$s10Foundation6LocaleV12LanguageCodeV03isoC5CodesSayAEGvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV10belarusianAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV10identifierSSvM', '_$s10Foundation6LocaleV12LanguageCodeV10identifierSSvg', '_$s10Foundation6LocaleV12LanguageCodeV10identifierSSvpMV', '_$s10Foundation6LocaleV12LanguageCodeV10identifierSSvs', '_$s10Foundation6LocaleV12LanguageCodeV10identifierySSSgAE14IdentifierTypeOF', + '_$s10Foundation6LocaleV12LanguageCodeV10indonesianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV10lithuanianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV10macedonianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV10portugueseAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV10vietnameseAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV11_identifierSSvM', + '_$s10Foundation6LocaleV12LanguageCodeV11_identifierSSvg', + '_$s10Foundation6LocaleV12LanguageCodeV11_identifierSSvpMV', + '_$s10Foundation6LocaleV12LanguageCodeV11_identifierSSvs', + '_$s10Foundation6LocaleV12LanguageCodeV11azerbaijaniAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV11unavailableAEvgZ', + '_$s10Foundation6LocaleV12LanguageCodeV11unavailableAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV12unidentifiedAEvgZ', + '_$s10Foundation6LocaleV12LanguageCodeV12unidentifiedAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV13apacheWesternAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV13isISOLanguageSbvg', '_$s10Foundation6LocaleV12LanguageCodeV13isISOLanguageSbvpMV', + '_$s10Foundation6LocaleV12LanguageCodeV13kurdishSoraniAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV13stringLiteralAESS_tcfC', '_$s10Foundation6LocaleV12LanguageCodeV14IdentifierTypeO2eeoiySbAG_AGtFZ', '_$s10Foundation6LocaleV12LanguageCodeV14IdentifierTypeO4hash4intoys6HasherVz_tF', @@ -7191,12 +8246,77 @@ exports: '_$s10Foundation6LocaleV12LanguageCodeV14IdentifierTypeOSQAAMc', '_$s10Foundation6LocaleV12LanguageCodeV16debugDescriptionSSvg', '_$s10Foundation6LocaleV12LanguageCodeV16debugDescriptionSSvpMV', + '_$s10Foundation6LocaleV12LanguageCodeV16norwegianNynorskAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV21_normalizedIdentifierSSvM', + '_$s10Foundation6LocaleV12LanguageCodeV21_normalizedIdentifierSSvg', + '_$s10Foundation6LocaleV12LanguageCodeV21_normalizedIdentifierSSvpMV', + '_$s10Foundation6LocaleV12LanguageCodeV21_normalizedIdentifierSSvs', '_$s10Foundation6LocaleV12LanguageCodeV2eeoiySbAE_AEtFZ', - '_$s10Foundation6LocaleV12LanguageCodeV4fromAEs7Decoder_p_tKcfC', - '_$s10Foundation6LocaleV12LanguageCodeV4hash4intoys6HasherVz_tF', - '_$s10Foundation6LocaleV12LanguageCodeV6encode2toys7Encoder_p_tKF', - '_$s10Foundation6LocaleV12LanguageCodeV7uncodedAEvgZ', '_$s10Foundation6LocaleV12LanguageCodeV8multipleAEvgZ', + '_$s10Foundation6LocaleV12LanguageCodeV3laoAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV4ainuAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV4bodoAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV4fromAEs7Decoder_p_tKcfC', + '_$s10Foundation6LocaleV12LanguageCodeV4fulaAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV4hash4intoys6HasherVz_tF', + '_$s10Foundation6LocaleV12LanguageCodeV4igboAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV4odiaAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV4thaiAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV4urduAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV5czechAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV5dogriAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV5dutchAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV5greekAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV5hindiAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV5irishAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV5khmerAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV5malayAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV5tajikAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV5tamilAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV5uzbekAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV5welshAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV6arabicAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV6banglaAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV6danishAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV6encode2toys7Encoder_p_tKF', + '_$s10Foundation6LocaleV12LanguageCodeV6frenchAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV6germanAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV6hebrewAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV6kazakhAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV6koreanAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV6kyrgyzAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV6navajoAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV6nepaliAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV6pashtoAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV6polishAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV6samoanAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV6sindhiAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV6slovakAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV6teluguAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV6tonganAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV6uyghurAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7amharicAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7burmeseAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7catalanAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7chineseAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7dhivehiAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7englishAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7faroeseAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7finnishAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7italianAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7kannadaAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7konkaniAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7kurdishAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7latvianAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7malteseAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7marathiAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7persianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7punjabiAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7russianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7santaliAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7serbianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7sinhalaAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7spanishAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7swahiliAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7swedishAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7tagalogAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7tibetanAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7turkishAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV7turkmenAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7uncodedAEvgZ', '_$s10Foundation6LocaleV12LanguageCodeV7uncodedAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV7yiddishAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV8albanianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8armenianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8assameseAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8assyrianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8cherokeeAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8croatianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8dzongkhaAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8estonianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8georgianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8gujaratiAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8hawaiianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8japaneseAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8kashmiriAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8maithiliAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8manipuriAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8multipleAEvgZ', '_$s10Foundation6LocaleV12LanguageCodeV8multipleAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8rohingyaAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8romanianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV8sanskritAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV9bulgarianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV9cantoneseAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeV9hashValueSivg', '_$s10Foundation6LocaleV12LanguageCodeV9hashValueSivpMV', + '_$s10Foundation6LocaleV12LanguageCodeV9hungarianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV9icelandicAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV9malayalamAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV9mongolianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV9norwegianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV9slovenianAEvpZMV', + '_$s10Foundation6LocaleV12LanguageCodeV9ukrainianAEvpZMV', '_$s10Foundation6LocaleV12LanguageCodeVMa', '_$s10Foundation6LocaleV12LanguageCodeVMn', '_$s10Foundation6LocaleV12LanguageCodeVN', '_$s10Foundation6LocaleV12LanguageCodeVSEAAMc', '_$s10Foundation6LocaleV12LanguageCodeVSHAAMc', '_$s10Foundation6LocaleV12LanguageCodeVSQAAMc', @@ -7220,17 +8340,33 @@ exports: '_$s10Foundation6LocaleV14IdentifierTypeOSQAAMc', '_$s10Foundation6LocaleV14currencySymbolSSSgvg', '_$s10Foundation6LocaleV14currencySymbolSSSgvpMV', '_$s10Foundation6LocaleV14firstDayOfWeekAC7WeekdayOvg', '_$s10Foundation6LocaleV14firstDayOfWeekAC7WeekdayOvpMV', - '_$s10Foundation6LocaleV14isoRegionCodesSaySSGvgZ', '_$s10Foundation6LocaleV15NumberingSystemV09availableC7SystemsSayAEGvgZ', + '_$s10Foundation6LocaleV14forceHourCycleAC0dE0OSgvg', '_$s10Foundation6LocaleV14forceHourCycleAC0dE0OSgvpMV', + '_$s10Foundation6LocaleV14isoRegionCodesSaySSGvgZ', '_$s10Foundation6LocaleV14isoRegionCodesSaySSGvpZMV', + '_$s10Foundation6LocaleV15NumberingSystemV09availableC7SystemsSayAEGvgZ', + '_$s10Foundation6LocaleV15NumberingSystemV09availableC7SystemsSayAEGvpZMV', '_$s10Foundation6LocaleV15NumberingSystemV10identifierSSvM', '_$s10Foundation6LocaleV15NumberingSystemV10identifierSSvg', '_$s10Foundation6LocaleV15NumberingSystemV10identifierSSvpMV', '_$s10Foundation6LocaleV15NumberingSystemV10identifierSSvs', + '_$s10Foundation6LocaleV15NumberingSystemV11_identifierSSvM', + '_$s10Foundation6LocaleV15NumberingSystemV11_identifierSSvg', + '_$s10Foundation6LocaleV15NumberingSystemV11_identifierSSvpMV', + '_$s10Foundation6LocaleV15NumberingSystemV11_identifierSSvs', '_$s10Foundation6LocaleV15NumberingSystemV13stringLiteralAESS_tcfC', + '_$s10Foundation6LocaleV15NumberingSystemV14cldrKeywordKeyAA10ICUCLDRKeyVvgZ', + '_$s10Foundation6LocaleV15NumberingSystemV14cldrKeywordKeyAA10ICUCLDRKeyVvpZMV', '_$s10Foundation6LocaleV15NumberingSystemV16debugDescriptionSSvg', '_$s10Foundation6LocaleV15NumberingSystemV16debugDescriptionSSvpMV', + '_$s10Foundation6LocaleV15NumberingSystemV16legacyKeywordKeyAA09ICULegacyG0VvgZ', + '_$s10Foundation6LocaleV15NumberingSystemV16legacyKeywordKeyAA09ICULegacyG0VvpZMV', + '_$s10Foundation6LocaleV15NumberingSystemV21_normalizedIdentifierSSvM', + '_$s10Foundation6LocaleV15NumberingSystemV21_normalizedIdentifierSSvg', + '_$s10Foundation6LocaleV15NumberingSystemV21_normalizedIdentifierSSvpMV', + '_$s10Foundation6LocaleV15NumberingSystemV21_normalizedIdentifierSSvs', '_$s10Foundation6LocaleV15NumberingSystemV2eeoiySbAE_AEtFZ', '_$s10Foundation6LocaleV15NumberingSystemV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation6LocaleV15NumberingSystemV4hash4intoys6HasherVz_tF', + '_$s10Foundation6LocaleV15NumberingSystemV4latnAEvgZ', '_$s10Foundation6LocaleV15NumberingSystemV4latnAEvpZMV', '_$s10Foundation6LocaleV15NumberingSystemV6encode2toys7Encoder_p_tKF', '_$s10Foundation6LocaleV15NumberingSystemV9hashValueSivg', '_$s10Foundation6LocaleV15NumberingSystemV9hashValueSivpMV', @@ -7252,24 +8388,43 @@ exports: '_$s10Foundation6LocaleV15localizedString3forSSSgAA8CalendarV10IdentifierO_tF', '_$s10Foundation6LocaleV15numberingSystemAC09NumberingD0Vvg', '_$s10Foundation6LocaleV15numberingSystemAC09NumberingD0VvpMV', + '_$s10Foundation6LocaleV15temperatureUnitAA0B11PreferencesV011TemperatureD0Ovg', + '_$s10Foundation6LocaleV15temperatureUnitAA0B11PreferencesV011TemperatureD0OvpMV', + '_$s10Foundation6LocaleV16customDateFormatySSSgAA0D0V0E5StyleV0dF0VF', '_$s10Foundation6LocaleV16debugDescriptionSSvg', '_$s10Foundation6LocaleV16debugDescriptionSSvpMV', '_$s10Foundation6LocaleV16decimalSeparatorSSSgvg', '_$s10Foundation6LocaleV16decimalSeparatorSSSgvpMV', - '_$s10Foundation6LocaleV16isoCurrencyCodesSaySSGvgZ', '_$s10Foundation6LocaleV16isoLanguageCodesSaySSGvgZ', + '_$s10Foundation6LocaleV16isoCurrencyCodesSaySSGvgZ', '_$s10Foundation6LocaleV16isoCurrencyCodesSaySSGvpZMV', + '_$s10Foundation6LocaleV16isoLanguageCodesSaySSGvgZ', '_$s10Foundation6LocaleV16isoLanguageCodesSaySSGvpZMV', '_$s10Foundation6LocaleV16usesMetricSystemSbvg', '_$s10Foundation6LocaleV16usesMetricSystemSbvpMV', '_$s10Foundation6LocaleV17MeasurementSystemV10identifierSSvM', '_$s10Foundation6LocaleV17MeasurementSystemV10identifierSSvg', '_$s10Foundation6LocaleV17MeasurementSystemV10identifierSSvpMV', '_$s10Foundation6LocaleV17MeasurementSystemV10identifierSSvs', + '_$s10Foundation6LocaleV17MeasurementSystemV11_identifierSSvM', + '_$s10Foundation6LocaleV17MeasurementSystemV11_identifierSSvg', + '_$s10Foundation6LocaleV17MeasurementSystemV11_identifierSSvpMV', + '_$s10Foundation6LocaleV17MeasurementSystemV11_identifierSSvs', '_$s10Foundation6LocaleV17MeasurementSystemV13stringLiteralAESS_tcfC', + '_$s10Foundation6LocaleV17MeasurementSystemV14cldrKeywordKeyAA10ICUCLDRKeyVvgZ', + '_$s10Foundation6LocaleV17MeasurementSystemV14cldrKeywordKeyAA10ICUCLDRKeyVvpZMV', '_$s10Foundation6LocaleV17MeasurementSystemV16debugDescriptionSSvg', '_$s10Foundation6LocaleV17MeasurementSystemV16debugDescriptionSSvpMV', + '_$s10Foundation6LocaleV17MeasurementSystemV16legacyKeywordKeyAA09ICULegacyG0VvgZ', + '_$s10Foundation6LocaleV17MeasurementSystemV16legacyKeywordKeyAA09ICULegacyG0VvpZMV', '_$s10Foundation6LocaleV17MeasurementSystemV18measurementSystemsSayAEGvgZ', + '_$s10Foundation6LocaleV17MeasurementSystemV18measurementSystemsSayAEGvpZMV', + '_$s10Foundation6LocaleV17MeasurementSystemV21_normalizedIdentifierSSvM', + '_$s10Foundation6LocaleV17MeasurementSystemV21_normalizedIdentifierSSvg', + '_$s10Foundation6LocaleV17MeasurementSystemV21_normalizedIdentifierSSvpMV', + '_$s10Foundation6LocaleV17MeasurementSystemV21_normalizedIdentifierSSvs', '_$s10Foundation6LocaleV17MeasurementSystemV2eeoiySbAE_AEtFZ', - '_$s10Foundation6LocaleV17MeasurementSystemV2ukAEvgZ', '_$s10Foundation6LocaleV17MeasurementSystemV2usAEvgZ', + '_$s10Foundation6LocaleV17MeasurementSystemV2ukAEvgZ', '_$s10Foundation6LocaleV17MeasurementSystemV2ukAEvpZMV', + '_$s10Foundation6LocaleV17MeasurementSystemV2usAEvgZ', '_$s10Foundation6LocaleV17MeasurementSystemV2usAEvpZMV', '_$s10Foundation6LocaleV17MeasurementSystemV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation6LocaleV17MeasurementSystemV4hash4intoys6HasherVz_tF', '_$s10Foundation6LocaleV17MeasurementSystemV6encode2toys7Encoder_p_tKF', '_$s10Foundation6LocaleV17MeasurementSystemV6metricAEvgZ', + '_$s10Foundation6LocaleV17MeasurementSystemV6metricAEvpZMV', '_$s10Foundation6LocaleV17MeasurementSystemV9hashValueSivg', '_$s10Foundation6LocaleV17MeasurementSystemV9hashValueSivpMV', '_$s10Foundation6LocaleV17MeasurementSystemVMa', '_$s10Foundation6LocaleV17MeasurementSystemVMn', @@ -7279,20 +8434,32 @@ exports: '_$s10Foundation6LocaleV17MeasurementSystemVs28CustomDebugStringConvertibleAAMc', '_$s10Foundation6LocaleV17MeasurementSystemVs33ExpressibleByUnicodeScalarLiteralAAMc', '_$s10Foundation6LocaleV17MeasurementSystemVs43ExpressibleByExtendedGraphemeClusterLiteralAAMc', - '_$s10Foundation6LocaleV17MeasurementSystemVyAESScfC', '_$s10Foundation6LocaleV17groupingSeparatorSSSgvg', - '_$s10Foundation6LocaleV17groupingSeparatorSSSgvpMV', '_$s10Foundation6LocaleV17measurementSystemAC011MeasurementD0Vvg', + '_$s10Foundation6LocaleV17MeasurementSystemVyAESScfC', '_$s10Foundation6LocaleV17forceFirstWeekdayyAC0E0OSgAA8CalendarV10IdentifierOF', + '_$s10Foundation6LocaleV17groupingSeparatorSSSgvg', '_$s10Foundation6LocaleV17groupingSeparatorSSSgvpMV', + '_$s10Foundation6LocaleV17measurementSystemAC011MeasurementD0Vvg', '_$s10Foundation6LocaleV17measurementSystemAC011MeasurementD0VvpMV', '_$s10Foundation6LocaleV18characterDirection11forLanguageSo08NSLocalefD0VSS_tFZ', '_$s10Foundation6LocaleV18collatorIdentifierSSSgvg', '_$s10Foundation6LocaleV18collatorIdentifierSSSgvpMV', '_$s10Foundation6LocaleV18languageComponentsA2C8LanguageV0D0V_tcfC', - '_$s10Foundation6LocaleV18preferredLanguagesSaySSGvgZ', '_$s10Foundation6LocaleV19_bridgeToObjectiveCSo8NSLocaleCyF', - '_$s10Foundation6LocaleV19autoupdatingCurrentACvgZ', '_$s10Foundation6LocaleV19canonicalIdentifier4fromS2S_tFZ', + '_$s10Foundation6LocaleV18preferredLanguagesSaySSGvgZ', '_$s10Foundation6LocaleV18preferredLanguagesSaySSGvpZMV', + '_$s10Foundation6LocaleV19_bridgeToObjectiveCSo8NSLocaleCyF', + '_$s10Foundation6LocaleV19_calendarIdentifierAA8CalendarV0D0Ovg', + '_$s10Foundation6LocaleV19_calendarIdentifierAA8CalendarV0D0OvpMV', + '_$s10Foundation6LocaleV19autoupdatingCurrentACvgZ', '_$s10Foundation6LocaleV19autoupdatingCurrentACvpZMV', + '_$s10Foundation6LocaleV19canonicalIdentifier4fromS2S_tFZ', '_$s10Foundation6LocaleV19collationIdentifierSSSgvg', '_$s10Foundation6LocaleV19collationIdentifierSSSgvpMV', '_$s10Foundation6LocaleV20availableIdentifiersSaySSGvgZ', + '_$s10Foundation6LocaleV20availableIdentifiersSaySSGvpZMV', '_$s10Foundation6LocaleV20exemplarCharacterSetAA0dE0VSgvg', '_$s10Foundation6LocaleV20exemplarCharacterSetAA0dE0VSgvpMV', + '_$s10Foundation6LocaleV20forceTemperatureUnitAA0B11PreferencesV0dE0OSgvg', + '_$s10Foundation6LocaleV20forceTemperatureUnitAA0B11PreferencesV0dE0OSgvpMV', '_$s10Foundation6LocaleV21quotationEndDelimiterSSSgvg', '_$s10Foundation6LocaleV21quotationEndDelimiterSSSgvpMV', '_$s10Foundation6LocaleV22commonISOCurrencyCodesSaySSGvgZ', + '_$s10Foundation6LocaleV22commonISOCurrencyCodesSaySSGvpZMV', + '_$s10Foundation6LocaleV22forceMeasurementSystemAC0dE0VSgvg', + '_$s10Foundation6LocaleV22forceMeasurementSystemAC0dE0VSgvpMV', + '_$s10Foundation6LocaleV23forceMinDaysInFirstWeekySiSgAA8CalendarV10IdentifierOF', '_$s10Foundation6LocaleV23quotationBeginDelimiterSSSgvg', '_$s10Foundation6LocaleV23quotationBeginDelimiterSSSgvpMV', '_$s10Foundation6LocaleV25availableNumberingSystemsSayAC0D6SystemVGvg', @@ -7301,41 +8468,228 @@ exports: '_$s10Foundation6LocaleV27canonicalLanguageIdentifier4fromS2S_tFZ', '_$s10Foundation6LocaleV2eeoiySbAC_ACtFZ', '_$s10Foundation6LocaleV30alternateQuotationEndDelimiterSSSgvg', '_$s10Foundation6LocaleV30alternateQuotationEndDelimiterSSSgvpMV', + '_$s10Foundation6LocaleV30identifierCapturingPreferencesSSvg', + '_$s10Foundation6LocaleV30identifierCapturingPreferencesSSvpMV', '_$s10Foundation6LocaleV32alternateQuotationBeginDelimiterSSSgvg', '_$s10Foundation6LocaleV32alternateQuotationBeginDelimiterSSSgvpMV', '_$s10Foundation6LocaleV34_conditionallyBridgeFromObjectiveC_6resultSbSo8NSLocaleC_ACSgztFZ', '_$s10Foundation6LocaleV36_unconditionallyBridgeFromObjectiveCyACSo8NSLocaleCSgFZ', + '_$s10Foundation6LocaleV43identifierDoesNotRequireSpecialCaseHandlingySbSSFZ', '_$s10Foundation6LocaleV4fromACs7Decoder_p_tKcfC', '_$s10Foundation6LocaleV4hash4intoys6HasherVz_tF', + '_$s10Foundation6LocaleV5prefsAA0B11PreferencesVSgvg', '_$s10Foundation6LocaleV5prefsAA0B11PreferencesVSgvpMV', + '_$s10Foundation6LocaleV6RegionV0010curaao_zuaAEvpZMV', '_$s10Foundation6LocaleV6RegionV0010runion_bvaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV0014cteDIvoire_rbbAEvpZMV', + '_$s10Foundation6LocaleV6RegionV0015landIslands_wIaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV0018saintBarthlemy_kkbAEvpZMV', + '_$s10Foundation6LocaleV6RegionV0020soTomPrncipe_CbbCgycAEvpZMV', '_$s10Foundation6LocaleV6RegionV010containingC0AESgvg', '_$s10Foundation6LocaleV6RegionV010containingC0AESgvpMV', - '_$s10Foundation6LocaleV6RegionV10identifierSSvM', '_$s10Foundation6LocaleV6RegionV10identifierSSvg', - '_$s10Foundation6LocaleV6RegionV10identifierSSvpMV', '_$s10Foundation6LocaleV6RegionV10identifierSSvs', - '_$s10Foundation6LocaleV6RegionV10isoRegionsSayAEGvgZ', '_$s10Foundation6LocaleV6RegionV10subRegionsSayAEGvg', - '_$s10Foundation6LocaleV6RegionV10subRegionsSayAEGvpMV', '_$s10Foundation6LocaleV6RegionV11isISORegionSbvg', - '_$s10Foundation6LocaleV6RegionV11isISORegionSbvpMV', '_$s10Foundation6LocaleV6RegionV13stringLiteralAESS_tcfC', + '_$s10Foundation6LocaleV6RegionV10antarcticaAEvpZMV', '_$s10Foundation6LocaleV6RegionV10azerbaijanAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10bangladeshAEvpZMV', '_$s10Foundation6LocaleV6RegionV10elSalvadorAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10guadeloupeAEvpZMV', '_$s10Foundation6LocaleV6RegionV10identifierSSvM', + '_$s10Foundation6LocaleV6RegionV10identifierSSvg', '_$s10Foundation6LocaleV6RegionV10identifierSSvpMV', + '_$s10Foundation6LocaleV6RegionV10identifierSSvs', '_$s10Foundation6LocaleV6RegionV10isoRegionsSayAEGvgZ', + '_$s10Foundation6LocaleV6RegionV10isoRegionsSayAEGvpZMV', + '_$s10Foundation6LocaleV6RegionV10kazakhstanAEvpZMV', '_$s10Foundation6LocaleV6RegionV10kyrgyzstanAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10luxembourgAEvpZMV', '_$s10Foundation6LocaleV6RegionV10madagascarAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10martiniqueAEvpZMV', '_$s10Foundation6LocaleV6RegionV10mauritaniaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10micronesiaAEvpZMV', '_$s10Foundation6LocaleV6RegionV10montenegroAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10montserratAEvpZMV', '_$s10Foundation6LocaleV6RegionV10mozambiqueAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10newZealandAEvpZMV', '_$s10Foundation6LocaleV6RegionV10puertoRicoAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10saintLuciaAEvpZMV', '_$s10Foundation6LocaleV6RegionV10seychellesAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10southKoreaAEvpZMV', '_$s10Foundation6LocaleV6RegionV10southSudanAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10subRegionsSayAEGvg', '_$s10Foundation6LocaleV6RegionV10subRegionsSayAEGvpMV', + '_$s10Foundation6LocaleV6RegionV10tajikistanAEvpZMV', '_$s10Foundation6LocaleV6RegionV10timorLesteAEvpZMV', + '_$s10Foundation6LocaleV6RegionV10uzbekistanAEvpZMV', '_$s10Foundation6LocaleV6RegionV11_identifierSSvM', + '_$s10Foundation6LocaleV6RegionV11_identifierSSvg', '_$s10Foundation6LocaleV6RegionV11_identifierSSvpMV', + '_$s10Foundation6LocaleV6RegionV11_identifierSSvs', '_$s10Foundation6LocaleV6RegionV11afghanistanAEvpZMV', + '_$s10Foundation6LocaleV6RegionV11burkinaFasoAEvpZMV', '_$s10Foundation6LocaleV6RegionV11cookIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV11diegoGarciaAEvpZMV', '_$s10Foundation6LocaleV6RegionV11isISORegionSbvg', + '_$s10Foundation6LocaleV6RegionV11isISORegionSbvpMV', '_$s10Foundation6LocaleV6RegionV11netherlandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV11philippinesAEvpZMV', '_$s10Foundation6LocaleV6RegionV11saintHelenaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV11saintMartinAEvpZMV', '_$s10Foundation6LocaleV6RegionV11saudiArabiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV11sierraLeoneAEvpZMV', '_$s10Foundation6LocaleV6RegionV11sintMaartenAEvpZMV', + '_$s10Foundation6LocaleV6RegionV11southAfricaAEvpZMV', '_$s10Foundation6LocaleV6RegionV11switzerlandAEvpZMV', + '_$s10Foundation6LocaleV6RegionV11vaticanCityAEvpZMV', '_$s10Foundation6LocaleV6RegionV12bouvetIslandAEvpZMV', + '_$s10Foundation6LocaleV6RegionV12ceutaMelillaAEvpZMV', '_$s10Foundation6LocaleV6RegionV12cocosIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV12faroeIslandsAEvpZMV', '_$s10Foundation6LocaleV6RegionV12frenchGuianaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV12guineaBissauAEvpZMV', '_$s10Foundation6LocaleV6RegionV12latinAmericaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV12newCaledoniaAEvpZMV', '_$s10Foundation6LocaleV6RegionV12turkmenistanAEvpZMV', + '_$s10Foundation6LocaleV6RegionV12unitedStatesAEvpZMV', '_$s10Foundation6LocaleV6RegionV12wallisFutunaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV13americanSamoaAEvpZMV', '_$s10Foundation6LocaleV6RegionV13canaryIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV13caymanIslandsAEvpZMV', '_$s10Foundation6LocaleV6RegionV13chinaMainlandAEvpZMV', + '_$s10Foundation6LocaleV6RegionV13congoKinshasaAEvpZMV', '_$s10Foundation6LocaleV6RegionV13liechtensteinAEvpZMV', + '_$s10Foundation6LocaleV6RegionV13norfolkIslandAEvpZMV', '_$s10Foundation6LocaleV6RegionV13stringLiteralAESS_tcfC', + '_$s10Foundation6LocaleV6RegionV13unitedKingdomAEvpZMV', '_$s10Foundation6LocaleV6RegionV13westernSaharaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV14antiguaBarbudaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV14cldrKeywordKeyAA10ICUCLDRKeyVvgZ', + '_$s10Foundation6LocaleV6RegionV14cldrKeywordKeyAA10ICUCLDRKeyVvpZMV', + '_$s10Foundation6LocaleV6RegionV14northMacedoniaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV14papuaNewGuineaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV14solomonIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV14trinidadTobagoAEvpZMV', + '_$s10Foundation6LocaleV6RegionV14tristanDaCunhaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV15ascensionIslandAEvpZMV', + '_$s10Foundation6LocaleV6RegionV15christmasIslandAEvpZMV', + '_$s10Foundation6LocaleV6RegionV15falklandIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV15frenchPolynesiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV15marshallIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV15pitcairnIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV15saintKittsNevisAEvpZMV', + '_$s10Foundation6LocaleV6RegionV16clippertonIslandAEvpZMV', + '_$s10Foundation6LocaleV6RegionV16congoBrazzavilleAEvpZMV', '_$s10Foundation6LocaleV6RegionV16debugDescriptionSSvg', '_$s10Foundation6LocaleV6RegionV16debugDescriptionSSvpMV', - '_$s10Foundation6LocaleV6RegionV2eeoiySbAE_AEtFZ', '_$s10Foundation6LocaleV6RegionV4fromAEs7Decoder_p_tKcfC', - '_$s10Foundation6LocaleV6RegionV4hash4intoys6HasherVz_tF', - '_$s10Foundation6LocaleV6RegionV6encode2toys7Encoder_p_tKF', - '_$s10Foundation6LocaleV6RegionV7unknownAEvgZ', '_$s10Foundation6LocaleV6RegionV9continentAESgvg', - '_$s10Foundation6LocaleV6RegionV9continentAESgvpMV', '_$s10Foundation6LocaleV6RegionV9hashValueSivg', - '_$s10Foundation6LocaleV6RegionV9hashValueSivpMV', '_$s10Foundation6LocaleV6RegionVMa', - '_$s10Foundation6LocaleV6RegionVMn', '_$s10Foundation6LocaleV6RegionVN', - '_$s10Foundation6LocaleV6RegionVSEAAMc', '_$s10Foundation6LocaleV6RegionVSHAAMc', - '_$s10Foundation6LocaleV6RegionVSQAAMc', '_$s10Foundation6LocaleV6RegionVSeAAMc', - '_$s10Foundation6LocaleV6RegionVs26ExpressibleByStringLiteralAAMc', + '_$s10Foundation6LocaleV6RegionV16equatorialGuineaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV16legacyKeywordKeyAA09ICULegacyF0VvgZ', + '_$s10Foundation6LocaleV6RegionV16legacyKeywordKeyAA09ICULegacyF0VvpZMV', + '_$s10Foundation6LocaleV6RegionV16svalbardJanMayenAEvpZMV', + '_$s10Foundation6LocaleV6RegionV17bosniaHerzegovinaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV17chagosArchipelagoAEvpZMV', + '_$s10Foundation6LocaleV6RegionV17dominicanRepublicAEvpZMV', + '_$s10Foundation6LocaleV6RegionV18turksCaicosIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV18unitedArabEmiratesAEvpZMV', + '_$s10Foundation6LocaleV6RegionV19saintPierreMiquelonAEvpZMV', + '_$s10Foundation6LocaleV6RegionV20britishVirginIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV20caribbeanNetherlandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV20heardMcdonaldIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV21_normalizedIdentifierSSvM', + '_$s10Foundation6LocaleV6RegionV21_normalizedIdentifierSSvg', + '_$s10Foundation6LocaleV6RegionV21_normalizedIdentifierSSvpMV', + '_$s10Foundation6LocaleV6RegionV21_normalizedIdentifierSSvs', + '_$s10Foundation6LocaleV6RegionV22centralAfricanRepublicAEvpZMV', + '_$s10Foundation6LocaleV6RegionV22northernMarianaIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV22palestinianTerritoriesAEvpZMV', + '_$s10Foundation6LocaleV6RegionV22saintVincentGrenadinesAEvpZMV', + '_$s10Foundation6LocaleV6RegionV25frenchSouthernTerritoriesAEvpZMV', + '_$s10Foundation6LocaleV6RegionV25unitedStatesVirginIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV27unitedStatesOutlyingIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV2eeoiySbAE_AEtFZ', '_$s10Foundation6LocaleV6RegionV32southGeorgiaSouthSandwichIslandsAEvpZMV', + '_$s10Foundation6LocaleV6RegionV4chadAEvpZMV', '_$s10Foundation6LocaleV6RegionV4cubaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV4fijiAEvpZMV', '_$s10Foundation6LocaleV6RegionV4fromAEs7Decoder_p_tKcfC', + '_$s10Foundation6LocaleV6RegionV4guamAEvpZMV', '_$s10Foundation6LocaleV6RegionV4hash4intoys6HasherVz_tF', + '_$s10Foundation6LocaleV6RegionV4iranAEvpZMV', '_$s10Foundation6LocaleV6RegionV4iraqAEvpZMV', + '_$s10Foundation6LocaleV6RegionV4laosAEvpZMV', '_$s10Foundation6LocaleV6RegionV4maliAEvpZMV', + '_$s10Foundation6LocaleV6RegionV4niueAEvpZMV', '_$s10Foundation6LocaleV6RegionV4omanAEvpZMV', + '_$s10Foundation6LocaleV6RegionV4peruAEvpZMV', '_$s10Foundation6LocaleV6RegionV4togoAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5arubaAEvpZMV', '_$s10Foundation6LocaleV6RegionV5beninAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5chileAEvpZMV', '_$s10Foundation6LocaleV6RegionV5egyptAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5gabonAEvpZMV', '_$s10Foundation6LocaleV6RegionV5ghanaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5haitiAEvpZMV', '_$s10Foundation6LocaleV6RegionV5indiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5italyAEvpZMV', '_$s10Foundation6LocaleV6RegionV5japanAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5kenyaAEvpZMV', '_$s10Foundation6LocaleV6RegionV5libyaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5macaoAEvpZMV', '_$s10Foundation6LocaleV6RegionV5maltaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5nauruAEvpZMV', '_$s10Foundation6LocaleV6RegionV5nepalAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5nigerAEvpZMV', '_$s10Foundation6LocaleV6RegionV5palauAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5qatarAEvpZMV', '_$s10Foundation6LocaleV6RegionV5samoaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5spainAEvpZMV', '_$s10Foundation6LocaleV6RegionV5tongaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV5worldAEvpZMV', '_$s10Foundation6LocaleV6RegionV5yemenAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6angolaAEvpZMV', '_$s10Foundation6LocaleV6RegionV6belizeAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6bhutanAEvpZMV', '_$s10Foundation6LocaleV6RegionV6brazilAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6bruneiAEvpZMV', '_$s10Foundation6LocaleV6RegionV6canadaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6cyprusAEvpZMV', '_$s10Foundation6LocaleV6RegionV6encode2toys7Encoder_p_tKF', + '_$s10Foundation6LocaleV6RegionV6franceAEvpZMV', '_$s10Foundation6LocaleV6RegionV6gambiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6greeceAEvpZMV', '_$s10Foundation6LocaleV6RegionV6guineaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6guyanaAEvpZMV', '_$s10Foundation6LocaleV6RegionV6israelAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6jerseyAEvpZMV', '_$s10Foundation6LocaleV6RegionV6jordanAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6kosovoAEvpZMV', '_$s10Foundation6LocaleV6RegionV6kuwaitAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6latviaAEvpZMV', '_$s10Foundation6LocaleV6RegionV6malawiAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6mexicoAEvpZMV', '_$s10Foundation6LocaleV6RegionV6monacoAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6norwayAEvpZMV', '_$s10Foundation6LocaleV6RegionV6panamaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6polandAEvpZMV', '_$s10Foundation6LocaleV6RegionV6russiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6rwandaAEvpZMV', '_$s10Foundation6LocaleV6RegionV6serbiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6swedenAEvpZMV', '_$s10Foundation6LocaleV6RegionV6taiwanAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6turkeyAEvpZMV', '_$s10Foundation6LocaleV6RegionV6tuvaluAEvpZMV', + '_$s10Foundation6LocaleV6RegionV6ugandaAEvpZMV', '_$s10Foundation6LocaleV6RegionV6zambiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7albaniaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7algeriaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7andorraAEvpZMV', '_$s10Foundation6LocaleV6RegionV7armeniaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7austriaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7bahamasAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7bahrainAEvpZMV', '_$s10Foundation6LocaleV6RegionV7belarusAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7belgiumAEvpZMV', '_$s10Foundation6LocaleV6RegionV7bermudaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7boliviaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7burundiAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7comorosAEvpZMV', '_$s10Foundation6LocaleV6RegionV7croatiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7czechiaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7denmarkAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7ecuadorAEvpZMV', '_$s10Foundation6LocaleV6RegionV7eritreaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7estoniaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7finlandAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7georgiaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7germanyAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7grenadaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7hungaryAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7icelandAEvpZMV', '_$s10Foundation6LocaleV6RegionV7irelandAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7jamaicaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7lebanonAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7lesothoAEvpZMV', '_$s10Foundation6LocaleV6RegionV7liberiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7mayotteAEvpZMV', '_$s10Foundation6LocaleV6RegionV7moldovaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7moroccoAEvpZMV', '_$s10Foundation6LocaleV6RegionV7myanmarAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7namibiaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7nigeriaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7romaniaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7senegalAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7somaliaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7tokelauAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7tunisiaAEvpZMV', '_$s10Foundation6LocaleV6RegionV7ukraineAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7unknownAEvgZ', '_$s10Foundation6LocaleV6RegionV7unknownAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7uruguayAEvpZMV', '_$s10Foundation6LocaleV6RegionV7vanuatuAEvpZMV', + '_$s10Foundation6LocaleV6RegionV7vietnamAEvpZMV', '_$s10Foundation6LocaleV6RegionV8anguillaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8barbadosAEvpZMV', '_$s10Foundation6LocaleV6RegionV8botswanaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8bulgariaAEvpZMV', '_$s10Foundation6LocaleV6RegionV8cambodiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8cameroonAEvpZMV', '_$s10Foundation6LocaleV6RegionV8colombiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8djiboutiAEvpZMV', '_$s10Foundation6LocaleV6RegionV8dominicaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8eswatiniAEvpZMV', '_$s10Foundation6LocaleV6RegionV8ethiopiaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8guernseyAEvpZMV', '_$s10Foundation6LocaleV6RegionV8hondurasAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8hongKongAEvpZMV', '_$s10Foundation6LocaleV6RegionV8kiribatiAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8malaysiaAEvpZMV', '_$s10Foundation6LocaleV6RegionV8maldivesAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8mongoliaAEvpZMV', '_$s10Foundation6LocaleV6RegionV8pakistanAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8paraguayAEvpZMV', '_$s10Foundation6LocaleV6RegionV8portugalAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8slovakiaAEvpZMV', '_$s10Foundation6LocaleV6RegionV8sloveniaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8sriLankaAEvpZMV', '_$s10Foundation6LocaleV6RegionV8surinameAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8tanzaniaAEvpZMV', '_$s10Foundation6LocaleV6RegionV8thailandAEvpZMV', + '_$s10Foundation6LocaleV6RegionV8zimbabweAEvpZMV', '_$s10Foundation6LocaleV6RegionV9argentinaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV9australiaAEvpZMV', '_$s10Foundation6LocaleV6RegionV9capeVerdeAEvpZMV', + '_$s10Foundation6LocaleV6RegionV9continentAESgvg', '_$s10Foundation6LocaleV6RegionV9continentAESgvpMV', + '_$s10Foundation6LocaleV6RegionV9costaRicaAEvpZMV', '_$s10Foundation6LocaleV6RegionV9gibraltarAEvpZMV', + '_$s10Foundation6LocaleV6RegionV9greenlandAEvpZMV', '_$s10Foundation6LocaleV6RegionV9guatemalaAEvpZMV', + '_$s10Foundation6LocaleV6RegionV9hashValueSivg', '_$s10Foundation6LocaleV6RegionV9hashValueSivpMV', + '_$s10Foundation6LocaleV6RegionV9indonesiaAEvpZMV', '_$s10Foundation6LocaleV6RegionV9isleOfManAEvpZMV', + '_$s10Foundation6LocaleV6RegionV9lithuaniaAEvpZMV', '_$s10Foundation6LocaleV6RegionV9mauritiusAEvpZMV', + '_$s10Foundation6LocaleV6RegionV9nicaraguaAEvpZMV', '_$s10Foundation6LocaleV6RegionV9sanMarinoAEvpZMV', + '_$s10Foundation6LocaleV6RegionV9singaporeAEvpZMV', '_$s10Foundation6LocaleV6RegionV9venezuelaAEvpZMV', + '_$s10Foundation6LocaleV6RegionVMa', '_$s10Foundation6LocaleV6RegionVMn', + '_$s10Foundation6LocaleV6RegionVN', '_$s10Foundation6LocaleV6RegionVSEAAMc', + '_$s10Foundation6LocaleV6RegionVSHAAMc', '_$s10Foundation6LocaleV6RegionVSQAAMc', + '_$s10Foundation6LocaleV6RegionVSeAAMc', '_$s10Foundation6LocaleV6RegionVs26ExpressibleByStringLiteralAAMc', '_$s10Foundation6LocaleV6RegionVs28CustomDebugStringConvertibleAAMc', '_$s10Foundation6LocaleV6RegionVs33ExpressibleByUnicodeScalarLiteralAAMc', '_$s10Foundation6LocaleV6RegionVs43ExpressibleByExtendedGraphemeClusterLiteralAAMc', - '_$s10Foundation6LocaleV6RegionVyAESScfC', '_$s10Foundation6LocaleV6ScriptV10identifierSSvM', - '_$s10Foundation6LocaleV6ScriptV10identifierSSvg', '_$s10Foundation6LocaleV6ScriptV10identifierSSvpMV', - '_$s10Foundation6LocaleV6ScriptV10identifierSSvs', '_$s10Foundation6LocaleV6ScriptV11isISOScriptSbvg', - '_$s10Foundation6LocaleV6ScriptV11isISOScriptSbvpMV', '_$s10Foundation6LocaleV6ScriptV13stringLiteralAESS_tcfC', + '_$s10Foundation6LocaleV6RegionVyAESScfC', '_$s10Foundation6LocaleV6ScriptV10devanagariAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV10identifierSSvM', '_$s10Foundation6LocaleV6ScriptV10identifierSSvg', + '_$s10Foundation6LocaleV6ScriptV10identifierSSvpMV', '_$s10Foundation6LocaleV6ScriptV10identifierSSvs', + '_$s10Foundation6LocaleV6ScriptV11_identifierSSvM', '_$s10Foundation6LocaleV6ScriptV11_identifierSSvg', + '_$s10Foundation6LocaleV6ScriptV11_identifierSSvpMV', '_$s10Foundation6LocaleV6ScriptV11_identifierSSvs', + '_$s10Foundation6LocaleV6ScriptV11isISOScriptSbvg', '_$s10Foundation6LocaleV6ScriptV11isISOScriptSbvpMV', + '_$s10Foundation6LocaleV6ScriptV11meiteiMayekAEvpZMV', '_$s10Foundation6LocaleV6ScriptV13hanSimplifiedAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV13stringLiteralAESS_tcfC', + '_$s10Foundation6LocaleV6ScriptV14arabicNastaliqAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV14hanTraditionalAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV14hanifiRohingyaAEvpZMV', '_$s10Foundation6LocaleV6ScriptV16debugDescriptionSSvg', '_$s10Foundation6LocaleV6ScriptV16debugDescriptionSSvpMV', - '_$s10Foundation6LocaleV6ScriptV2eeoiySbAE_AEtFZ', '_$s10Foundation6LocaleV6ScriptV4fromAEs7Decoder_p_tKcfC', + '_$s10Foundation6LocaleV6ScriptV21_normalizedIdentifierSSvM', + '_$s10Foundation6LocaleV6ScriptV21_normalizedIdentifierSSvg', + '_$s10Foundation6LocaleV6ScriptV21_normalizedIdentifierSSvpMV', + '_$s10Foundation6LocaleV6ScriptV21_normalizedIdentifierSSvs', + '_$s10Foundation6LocaleV6ScriptV2eeoiySbAE_AEtFZ', '_$s10Foundation6LocaleV6ScriptV3laoAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation6LocaleV6ScriptV4hash4intoys6HasherVz_tF', - '_$s10Foundation6LocaleV6ScriptV6encode2toys7Encoder_p_tKF', - '_$s10Foundation6LocaleV6ScriptV7unknownAEvgZ', '_$s10Foundation6LocaleV6ScriptV9hashValueSivg', - '_$s10Foundation6LocaleV6ScriptV9hashValueSivpMV', '_$s10Foundation6LocaleV6ScriptVMa', + '_$s10Foundation6LocaleV6ScriptV4odiaAEvpZMV', '_$s10Foundation6LocaleV6ScriptV4thaiAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV5adlamAEvpZMV', '_$s10Foundation6LocaleV6ScriptV5greekAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV5khmerAEvpZMV', '_$s10Foundation6LocaleV6ScriptV5latinAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV5tamilAEvpZMV', '_$s10Foundation6LocaleV6ScriptV6arabicAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV6banglaAEvpZMV', '_$s10Foundation6LocaleV6ScriptV6encode2toys7Encoder_p_tKF', + '_$s10Foundation6LocaleV6ScriptV6hebrewAEvpZMV', '_$s10Foundation6LocaleV6ScriptV6koreanAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV6syriacAEvpZMV', '_$s10Foundation6LocaleV6ScriptV6teluguAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV6thaanaAEvpZMV', '_$s10Foundation6LocaleV6ScriptV7kannadaAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV7myanmarAEvpZMV', '_$s10Foundation6LocaleV6ScriptV7olChikiAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV7sinhalaAEvpZMV', '_$s10Foundation6LocaleV6ScriptV7tibetanAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV7unknownAEvgZ', '_$s10Foundation6LocaleV6ScriptV7unknownAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV8armenianAEvpZMV', '_$s10Foundation6LocaleV6ScriptV8cherokeeAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV8cyrillicAEvpZMV', '_$s10Foundation6LocaleV6ScriptV8ethiopicAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV8georgianAEvpZMV', '_$s10Foundation6LocaleV6ScriptV8gujaratiAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV8gurmukhiAEvpZMV', '_$s10Foundation6LocaleV6ScriptV8hiraganaAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV8japaneseAEvpZMV', '_$s10Foundation6LocaleV6ScriptV8katakanaAEvpZMV', + '_$s10Foundation6LocaleV6ScriptV9hashValueSivg', '_$s10Foundation6LocaleV6ScriptV9hashValueSivpMV', + '_$s10Foundation6LocaleV6ScriptV9malayalamAEvpZMV', '_$s10Foundation6LocaleV6ScriptVMa', '_$s10Foundation6LocaleV6ScriptVMn', '_$s10Foundation6LocaleV6ScriptVN', '_$s10Foundation6LocaleV6ScriptVSEAAMc', '_$s10Foundation6LocaleV6ScriptVSHAAMc', '_$s10Foundation6LocaleV6ScriptVSQAAMc', '_$s10Foundation6LocaleV6ScriptVSeAAMc', @@ -7347,12 +8701,23 @@ exports: '_$s10Foundation6LocaleV6regionAC6RegionVSgvg', '_$s10Foundation6LocaleV6regionAC6RegionVSgvpMV', '_$s10Foundation6LocaleV7VariantV10identifierSSvM', '_$s10Foundation6LocaleV7VariantV10identifierSSvg', '_$s10Foundation6LocaleV7VariantV10identifierSSvpMV', '_$s10Foundation6LocaleV7VariantV10identifierSSvs', + '_$s10Foundation6LocaleV7VariantV11_identifierSSvM', '_$s10Foundation6LocaleV7VariantV11_identifierSSvg', + '_$s10Foundation6LocaleV7VariantV11_identifierSSvpMV', '_$s10Foundation6LocaleV7VariantV11_identifierSSvs', '_$s10Foundation6LocaleV7VariantV13stringLiteralAESS_tcfC', + '_$s10Foundation6LocaleV7VariantV14cldrKeywordKeyAA10ICUCLDRKeyVvgZ', + '_$s10Foundation6LocaleV7VariantV14cldrKeywordKeyAA10ICUCLDRKeyVvpZMV', '_$s10Foundation6LocaleV7VariantV16debugDescriptionSSvg', '_$s10Foundation6LocaleV7VariantV16debugDescriptionSSvpMV', + '_$s10Foundation6LocaleV7VariantV16legacyKeywordKeyAA09ICULegacyF0VvgZ', + '_$s10Foundation6LocaleV7VariantV16legacyKeywordKeyAA09ICULegacyF0VvpZMV', + '_$s10Foundation6LocaleV7VariantV21_normalizedIdentifierSSvM', + '_$s10Foundation6LocaleV7VariantV21_normalizedIdentifierSSvg', + '_$s10Foundation6LocaleV7VariantV21_normalizedIdentifierSSvpMV', + '_$s10Foundation6LocaleV7VariantV21_normalizedIdentifierSSvs', '_$s10Foundation6LocaleV7VariantV2eeoiySbAE_AEtFZ', '_$s10Foundation6LocaleV7VariantV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation6LocaleV7VariantV4hash4intoys6HasherVz_tF', - '_$s10Foundation6LocaleV7VariantV5posixAEvgZ', '_$s10Foundation6LocaleV7VariantV6encode2toys7Encoder_p_tKF', + '_$s10Foundation6LocaleV7VariantV5posixAEvgZ', '_$s10Foundation6LocaleV7VariantV5posixAEvpZMV', + '_$s10Foundation6LocaleV7VariantV6encode2toys7Encoder_p_tKF', '_$s10Foundation6LocaleV7VariantV9hashValueSivg', '_$s10Foundation6LocaleV7VariantV9hashValueSivpMV', '_$s10Foundation6LocaleV7VariantVMa', '_$s10Foundation6LocaleV7VariantVMn', '_$s10Foundation6LocaleV7VariantVN', '_$s10Foundation6LocaleV7VariantVSEAAMc', @@ -7361,37 +8726,57 @@ exports: '_$s10Foundation6LocaleV7VariantVs28CustomDebugStringConvertibleAAMc', '_$s10Foundation6LocaleV7VariantVs33ExpressibleByUnicodeScalarLiteralAAMc', '_$s10Foundation6LocaleV7VariantVs43ExpressibleByExtendedGraphemeClusterLiteralAAMc', - '_$s10Foundation6LocaleV7VariantVyAESScfC', '_$s10Foundation6LocaleV7WeekdayO6fridayyA2EmFWC', - '_$s10Foundation6LocaleV7WeekdayO6mondayyA2EmFWC', '_$s10Foundation6LocaleV7WeekdayO6sundayyA2EmFWC', - '_$s10Foundation6LocaleV7WeekdayO7tuesdayyA2EmFWC', '_$s10Foundation6LocaleV7WeekdayO8rawValueAESgSS_tcfC', - '_$s10Foundation6LocaleV7WeekdayO8rawValueSSvg', '_$s10Foundation6LocaleV7WeekdayO8rawValueSSvpMV', - '_$s10Foundation6LocaleV7WeekdayO8saturdayyA2EmFWC', '_$s10Foundation6LocaleV7WeekdayO8thursdayyA2EmFWC', - '_$s10Foundation6LocaleV7WeekdayO9wednesdayyA2EmFWC', '_$s10Foundation6LocaleV7WeekdayOMa', - '_$s10Foundation6LocaleV7WeekdayOMn', '_$s10Foundation6LocaleV7WeekdayON', - '_$s10Foundation6LocaleV7WeekdayOSEAAMc', '_$s10Foundation6LocaleV7WeekdayOSHAAMc', - '_$s10Foundation6LocaleV7WeekdayOSQAAMc', '_$s10Foundation6LocaleV7WeekdayOSYAAMc', - '_$s10Foundation6LocaleV7WeekdayOSeAAMc', '_$s10Foundation6LocaleV7currentACvgZ', + '_$s10Foundation6LocaleV7VariantVyAESScfC', '_$s10Foundation6LocaleV7WeekdayO14cldrKeywordKeyAA10ICUCLDRKeyVvgZ', + '_$s10Foundation6LocaleV7WeekdayO14cldrKeywordKeyAA10ICUCLDRKeyVvpZMV', + '_$s10Foundation6LocaleV7WeekdayO16legacyKeywordKeyAA09ICULegacyF0VvgZ', + '_$s10Foundation6LocaleV7WeekdayO16legacyKeywordKeyAA09ICULegacyF0VvpZMV', + '_$s10Foundation6LocaleV7WeekdayO6fridayyA2EmFWC', '_$s10Foundation6LocaleV7WeekdayO6mondayyA2EmFWC', + '_$s10Foundation6LocaleV7WeekdayO6sundayyA2EmFWC', '_$s10Foundation6LocaleV7WeekdayO7tuesdayyA2EmFWC', + '_$s10Foundation6LocaleV7WeekdayO8icuIndexSivg', '_$s10Foundation6LocaleV7WeekdayO8icuIndexSivpMV', + '_$s10Foundation6LocaleV7WeekdayO8rawValueAESgSS_tcfC', '_$s10Foundation6LocaleV7WeekdayO8rawValueSSvg', + '_$s10Foundation6LocaleV7WeekdayO8rawValueSSvpMV', '_$s10Foundation6LocaleV7WeekdayO8saturdayyA2EmFWC', + '_$s10Foundation6LocaleV7WeekdayO8thursdayyA2EmFWC', '_$s10Foundation6LocaleV7WeekdayO8weekdaysSayAEGvgZ', + '_$s10Foundation6LocaleV7WeekdayO8weekdaysSayAEGvpZMV', '_$s10Foundation6LocaleV7WeekdayO9wednesdayyA2EmFWC', + '_$s10Foundation6LocaleV7WeekdayOMa', '_$s10Foundation6LocaleV7WeekdayOMn', + '_$s10Foundation6LocaleV7WeekdayON', '_$s10Foundation6LocaleV7WeekdayOSEAAMc', + '_$s10Foundation6LocaleV7WeekdayOSHAAMc', '_$s10Foundation6LocaleV7WeekdayOSQAAMc', + '_$s10Foundation6LocaleV7WeekdayOSYAAMc', '_$s10Foundation6LocaleV7WeekdayOSeAAMc', + '_$s10Foundation6LocaleV7WeekdayOyAESgSicfC', '_$s10Foundation6LocaleV7WeekdayOyAESgs5Int32VcfC', + '_$s10Foundation6LocaleV7currentACvgZ', '_$s10Foundation6LocaleV7currentACvpZMV', '_$s10Foundation6LocaleV7variantAC7VariantVSgvg', '_$s10Foundation6LocaleV7variantAC7VariantVSgvpMV', '_$s10Foundation6LocaleV8CurrencyV10identifierSSvM', '_$s10Foundation6LocaleV8CurrencyV10identifierSSvg', '_$s10Foundation6LocaleV8CurrencyV10identifierSSvpMV', '_$s10Foundation6LocaleV8CurrencyV10identifierSSvs', + '_$s10Foundation6LocaleV8CurrencyV11_identifierSSvM', '_$s10Foundation6LocaleV8CurrencyV11_identifierSSvg', + '_$s10Foundation6LocaleV8CurrencyV11_identifierSSvpMV', '_$s10Foundation6LocaleV8CurrencyV11_identifierSSvs', '_$s10Foundation6LocaleV8CurrencyV13isISOCurrencySbvg', '_$s10Foundation6LocaleV8CurrencyV13isISOCurrencySbvpMV', '_$s10Foundation6LocaleV8CurrencyV13isoCurrenciesSayAEGvgZ', + '_$s10Foundation6LocaleV8CurrencyV13isoCurrenciesSayAEGvpZMV', '_$s10Foundation6LocaleV8CurrencyV13stringLiteralAESS_tcfC', + '_$s10Foundation6LocaleV8CurrencyV14cldrKeywordKeyAA10ICUCLDRKeyVvgZ', + '_$s10Foundation6LocaleV8CurrencyV14cldrKeywordKeyAA10ICUCLDRKeyVvpZMV', '_$s10Foundation6LocaleV8CurrencyV16debugDescriptionSSvg', '_$s10Foundation6LocaleV8CurrencyV16debugDescriptionSSvpMV', + '_$s10Foundation6LocaleV8CurrencyV16legacyKeywordKeyAA09ICULegacyF0VvgZ', + '_$s10Foundation6LocaleV8CurrencyV16legacyKeywordKeyAA09ICULegacyF0VvpZMV', + '_$s10Foundation6LocaleV8CurrencyV21_normalizedIdentifierSSvM', + '_$s10Foundation6LocaleV8CurrencyV21_normalizedIdentifierSSvg', + '_$s10Foundation6LocaleV8CurrencyV21_normalizedIdentifierSSvpMV', + '_$s10Foundation6LocaleV8CurrencyV21_normalizedIdentifierSSvs', '_$s10Foundation6LocaleV8CurrencyV2eeoiySbAE_AEtFZ', '_$s10Foundation6LocaleV8CurrencyV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation6LocaleV8CurrencyV4hash4intoys6HasherVz_tF', '_$s10Foundation6LocaleV8CurrencyV6encode2toys7Encoder_p_tKF', - '_$s10Foundation6LocaleV8CurrencyV7unknownAEvgZ', '_$s10Foundation6LocaleV8CurrencyV9hashValueSivg', - '_$s10Foundation6LocaleV8CurrencyV9hashValueSivpMV', '_$s10Foundation6LocaleV8CurrencyVMa', - '_$s10Foundation6LocaleV8CurrencyVMn', '_$s10Foundation6LocaleV8CurrencyVN', - '_$s10Foundation6LocaleV8CurrencyVSEAAMc', '_$s10Foundation6LocaleV8CurrencyVSHAAMc', - '_$s10Foundation6LocaleV8CurrencyVSQAAMc', '_$s10Foundation6LocaleV8CurrencyVSeAAMc', - '_$s10Foundation6LocaleV8CurrencyVs26ExpressibleByStringLiteralAAMc', + '_$s10Foundation6LocaleV8CurrencyV7unknownAEvgZ', '_$s10Foundation6LocaleV8CurrencyV7unknownAEvpZMV', + '_$s10Foundation6LocaleV8CurrencyV9hashValueSivg', '_$s10Foundation6LocaleV8CurrencyV9hashValueSivpMV', + '_$s10Foundation6LocaleV8CurrencyVMa', '_$s10Foundation6LocaleV8CurrencyVMn', + '_$s10Foundation6LocaleV8CurrencyVN', '_$s10Foundation6LocaleV8CurrencyVSEAAMc', + '_$s10Foundation6LocaleV8CurrencyVSHAAMc', '_$s10Foundation6LocaleV8CurrencyVSQAAMc', + '_$s10Foundation6LocaleV8CurrencyVSeAAMc', '_$s10Foundation6LocaleV8CurrencyVs26ExpressibleByStringLiteralAAMc', '_$s10Foundation6LocaleV8CurrencyVs28CustomDebugStringConvertibleAAMc', '_$s10Foundation6LocaleV8CurrencyVs33ExpressibleByUnicodeScalarLiteralAAMc', '_$s10Foundation6LocaleV8CurrencyVs43ExpressibleByExtendedGraphemeClusterLiteralAAMc', '_$s10Foundation6LocaleV8CurrencyVyAESScfC', '_$s10Foundation6LocaleV8LanguageV10ComponentsV10identifierAGSS_tcfC', + '_$s10Foundation6LocaleV8LanguageV10ComponentsV10identifierSSvg', + '_$s10Foundation6LocaleV8LanguageV10ComponentsV10identifierSSvpMV', '_$s10Foundation6LocaleV8LanguageV10ComponentsV12languageCode6script6regionAgC0cF0VSg_AC6ScriptVSgAC6RegionVSgtcfC', '_$s10Foundation6LocaleV8LanguageV10ComponentsV12languageCodeAC0cF0VSgvM', '_$s10Foundation6LocaleV8LanguageV10ComponentsV12languageCodeAC0cF0VSgvg', @@ -7416,6 +8801,10 @@ exports: '_$s10Foundation6LocaleV8LanguageV10ComponentsVN', '_$s10Foundation6LocaleV8LanguageV10ComponentsVSEAAMc', '_$s10Foundation6LocaleV8LanguageV10ComponentsVSHAAMc', '_$s10Foundation6LocaleV8LanguageV10ComponentsVSQAAMc', '_$s10Foundation6LocaleV8LanguageV10ComponentsVSeAAMc', '_$s10Foundation6LocaleV8LanguageV10componentsA2E10ComponentsV_tcfC', + '_$s10Foundation6LocaleV8LanguageV10componentsAE10ComponentsVvM', + '_$s10Foundation6LocaleV8LanguageV10componentsAE10ComponentsVvg', + '_$s10Foundation6LocaleV8LanguageV10componentsAE10ComponentsVvpMV', + '_$s10Foundation6LocaleV8LanguageV10componentsAE10ComponentsVvs', '_$s10Foundation6LocaleV8LanguageV10identifierAESS_tcfC', '_$s10Foundation6LocaleV8LanguageV12isEquivalent2toSbAE_tF', '_$s10Foundation6LocaleV8LanguageV12languageCode6script6regionAeC0cE0VSg_AC6ScriptVSgAC6RegionVSgtcfC', @@ -7423,6 +8812,7 @@ exports: '_$s10Foundation6LocaleV8LanguageV12languageCodeAC0cE0VSgvpMV', '_$s10Foundation6LocaleV8LanguageV15hasCommonParent4withSbAE_tF', '_$s10Foundation6LocaleV8LanguageV15systemLanguagesSayAEGvgZ', + '_$s10Foundation6LocaleV8LanguageV15systemLanguagesSayAEGvpZMV', '_$s10Foundation6LocaleV8LanguageV17maximalIdentifierSSvg', '_$s10Foundation6LocaleV8LanguageV17maximalIdentifierSSvpMV', '_$s10Foundation6LocaleV8LanguageV17minimalIdentifierSSvg', @@ -7449,27 +8839,43 @@ exports: '_$s10Foundation6LocaleV8languageAC8LanguageVvpMV', '_$s10Foundation6LocaleV8timeZoneAA04TimeD0VSgvg', '_$s10Foundation6LocaleV8timeZoneAA04TimeD0VSgvpMV', '_$s10Foundation6LocaleV9CollationV10identifierSSvM', '_$s10Foundation6LocaleV9CollationV10identifierSSvg', '_$s10Foundation6LocaleV9CollationV10identifierSSvpMV', - '_$s10Foundation6LocaleV9CollationV10identifierSSvs', '_$s10Foundation6LocaleV9CollationV11searchRulesAEvgZ', + '_$s10Foundation6LocaleV9CollationV10identifierSSvs', '_$s10Foundation6LocaleV9CollationV11_identifierSSvM', + '_$s10Foundation6LocaleV9CollationV11_identifierSSvg', '_$s10Foundation6LocaleV9CollationV11_identifierSSvpMV', + '_$s10Foundation6LocaleV9CollationV11_identifierSSvs', '_$s10Foundation6LocaleV9CollationV11searchRulesAEvgZ', + '_$s10Foundation6LocaleV9CollationV11searchRulesAEvpZMV', '_$s10Foundation6LocaleV9CollationV13stringLiteralAESS_tcfC', + '_$s10Foundation6LocaleV9CollationV14cldrKeywordKeyAA10ICUCLDRKeyVvgZ', + '_$s10Foundation6LocaleV9CollationV14cldrKeywordKeyAA10ICUCLDRKeyVvpZMV', '_$s10Foundation6LocaleV9CollationV16debugDescriptionSSvg', '_$s10Foundation6LocaleV9CollationV16debugDescriptionSSvpMV', + '_$s10Foundation6LocaleV9CollationV16legacyKeywordKeyAA09ICULegacyF0VvgZ', + '_$s10Foundation6LocaleV9CollationV16legacyKeywordKeyAA09ICULegacyF0VvpZMV', '_$s10Foundation6LocaleV9CollationV19availableCollations3forSayAEGAC8LanguageV_tFZ', '_$s10Foundation6LocaleV9CollationV19availableCollationsSayAEGvgZ', + '_$s10Foundation6LocaleV9CollationV19availableCollationsSayAEGvpZMV', + '_$s10Foundation6LocaleV9CollationV21_normalizedIdentifierSSvM', + '_$s10Foundation6LocaleV9CollationV21_normalizedIdentifierSSvg', + '_$s10Foundation6LocaleV9CollationV21_normalizedIdentifierSSvpMV', + '_$s10Foundation6LocaleV9CollationV21_normalizedIdentifierSSvs', '_$s10Foundation6LocaleV9CollationV2eeoiySbAE_AEtFZ', '_$s10Foundation6LocaleV9CollationV4fromAEs7Decoder_p_tKcfC', '_$s10Foundation6LocaleV9CollationV4hash4intoys6HasherVz_tF', '_$s10Foundation6LocaleV9CollationV6encode2toys7Encoder_p_tKF', - '_$s10Foundation6LocaleV9CollationV8standardAEvgZ', '_$s10Foundation6LocaleV9CollationV9hashValueSivg', - '_$s10Foundation6LocaleV9CollationV9hashValueSivpMV', '_$s10Foundation6LocaleV9CollationVMa', - '_$s10Foundation6LocaleV9CollationVMn', '_$s10Foundation6LocaleV9CollationVN', - '_$s10Foundation6LocaleV9CollationVSEAAMc', '_$s10Foundation6LocaleV9CollationVSHAAMc', - '_$s10Foundation6LocaleV9CollationVSQAAMc', '_$s10Foundation6LocaleV9CollationVSeAAMc', - '_$s10Foundation6LocaleV9CollationVs26ExpressibleByStringLiteralAAMc', + '_$s10Foundation6LocaleV9CollationV8standardAEvgZ', '_$s10Foundation6LocaleV9CollationV8standardAEvpZMV', + '_$s10Foundation6LocaleV9CollationV9hashValueSivg', '_$s10Foundation6LocaleV9CollationV9hashValueSivpMV', + '_$s10Foundation6LocaleV9CollationVMa', '_$s10Foundation6LocaleV9CollationVMn', + '_$s10Foundation6LocaleV9CollationVN', '_$s10Foundation6LocaleV9CollationVSEAAMc', + '_$s10Foundation6LocaleV9CollationVSHAAMc', '_$s10Foundation6LocaleV9CollationVSQAAMc', + '_$s10Foundation6LocaleV9CollationVSeAAMc', '_$s10Foundation6LocaleV9CollationVs26ExpressibleByStringLiteralAAMc', '_$s10Foundation6LocaleV9CollationVs28CustomDebugStringConvertibleAAMc', '_$s10Foundation6LocaleV9CollationVs33ExpressibleByUnicodeScalarLiteralAAMc', '_$s10Foundation6LocaleV9CollationVs43ExpressibleByExtendedGraphemeClusterLiteralAAMc', '_$s10Foundation6LocaleV9CollationVyAESScfC', '_$s10Foundation6LocaleV9HourCycleO11oneToTwelveyA2EmFWC', '_$s10Foundation6LocaleV9HourCycleO12zeroToElevenyA2EmFWC', + '_$s10Foundation6LocaleV9HourCycleO14cldrKeywordKeyAA10ICUCLDRKeyVvgZ', + '_$s10Foundation6LocaleV9HourCycleO14cldrKeywordKeyAA10ICUCLDRKeyVvpZMV', '_$s10Foundation6LocaleV9HourCycleO15oneToTwentyFouryA2EmFWC', + '_$s10Foundation6LocaleV9HourCycleO16legacyKeywordKeyAA09ICULegacyG0VvgZ', + '_$s10Foundation6LocaleV9HourCycleO16legacyKeywordKeyAA09ICULegacyG0VvpZMV', '_$s10Foundation6LocaleV9HourCycleO17zeroToTwentyThreeyA2EmFWC', '_$s10Foundation6LocaleV9HourCycleO8rawValueAESgSS_tcfC', '_$s10Foundation6LocaleV9HourCycleO8rawValueSSvg', '_$s10Foundation6LocaleV9HourCycleO8rawValueSSvpMV', @@ -7487,12 +8893,19 @@ exports: '_$s10Foundation6LocaleVSeAAMc', '_$s10Foundation6LocaleVs17CustomReflectableAAMc', '_$s10Foundation6LocaleVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation6LocaleVs23CustomStringConvertibleAAMc', '_$s10Foundation6LocaleVs28CustomDebugStringConvertibleAAMc', + '_$s10Foundation8CalendarV10IdentifierO02cfbC0SSvg', '_$s10Foundation8CalendarV10IdentifierO02cfbC0SSvpMV', + '_$s10Foundation8CalendarV10IdentifierO04cldrC0SSvg', '_$s10Foundation8CalendarV10IdentifierO04cldrC0SSvpMV', '_$s10Foundation8CalendarV10IdentifierO12islamicCivilyA2EmFWC', + '_$s10Foundation8CalendarV10IdentifierO14cldrKeywordKeySSvgZ', + '_$s10Foundation8CalendarV10IdentifierO14cldrKeywordKeySSvpZMV', '_$s10Foundation8CalendarV10IdentifierO14islamicTabularyA2EmFWC', '_$s10Foundation8CalendarV10IdentifierO15republicOfChinayA2EmFWC', '_$s10Foundation8CalendarV10IdentifierO16debugDescriptionSSvg', '_$s10Foundation8CalendarV10IdentifierO16debugDescriptionSSvpMV', + '_$s10Foundation8CalendarV10IdentifierO16identifierStringAESgSS_tcfC', '_$s10Foundation8CalendarV10IdentifierO16islamicUmmAlQurayA2EmFWC', + '_$s10Foundation8CalendarV10IdentifierO16legacyKeywordKeyAA09ICULegacyF0VvgZ', + '_$s10Foundation8CalendarV10IdentifierO16legacyKeywordKeyAA09ICULegacyF0VvpZMV', '_$s10Foundation8CalendarV10IdentifierO17ethiopicAmeteAlemyA2EmFWC', '_$s10Foundation8CalendarV10IdentifierO19ethiopicAmeteMihretyA2EmFWC', '_$s10Foundation8CalendarV10IdentifierO2eeoiySbAE_AEtFZ', @@ -7521,6 +8934,48 @@ exports: '_$s10Foundation8CalendarV11descriptionSSvg', '_$s10Foundation8CalendarV11descriptionSSvpMV', '_$s10Foundation8CalendarV11nextWeekend13startingAfter5start8interval9directionSbAA4DateV_AJzSdzAC15SearchDirectionOtF', '_$s10Foundation8CalendarV11nextWeekend13startingAfter9directionAA12DateIntervalVSgAA0H0V_AC15SearchDirectionOtF', + '_$s10Foundation8CalendarV12ComponentSetV07highestD4UnitAC0C0OSgvg', + '_$s10Foundation8CalendarV12ComponentSetV07highestD4UnitAC0C0OSgvpMV', + '_$s10Foundation8CalendarV12ComponentSetV10nanosecondAEvgZ', + '_$s10Foundation8CalendarV12ComponentSetV10nanosecondAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV10weekOfYearAEvgZ', + '_$s10Foundation8CalendarV12ComponentSetV10weekOfYearAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV11isLeapMonthAEvgZ', + '_$s10Foundation8CalendarV12ComponentSetV11isLeapMonthAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV11weekOfMonthAEvgZ', + '_$s10Foundation8CalendarV12ComponentSetV11weekOfMonthAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV14weekdayOrdinalAEvgZ', + '_$s10Foundation8CalendarV12ComponentSetV14weekdayOrdinalAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV17yearForWeekOfYearAEvgZ', + '_$s10Foundation8CalendarV12ComponentSetV17yearForWeekOfYearAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV3dayAEvgZ', '_$s10Foundation8CalendarV12ComponentSetV3dayAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV3eraAEvgZ', '_$s10Foundation8CalendarV12ComponentSetV3eraAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV3setShyAC0C0OGvg', + '_$s10Foundation8CalendarV12ComponentSetV3setShyAC0C0OGvpMV', + '_$s10Foundation8CalendarV12ComponentSetV4hourAEvgZ', '_$s10Foundation8CalendarV12ComponentSetV4hourAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV4yearAEvgZ', '_$s10Foundation8CalendarV12ComponentSetV4yearAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV5countSivg', '_$s10Foundation8CalendarV12ComponentSetV5countSivpMV', + '_$s10Foundation8CalendarV12ComponentSetV5monthAEvgZ', '_$s10Foundation8CalendarV12ComponentSetV5monthAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV6minuteAEvgZ', '_$s10Foundation8CalendarV12ComponentSetV6minuteAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV6secondAEvgZ', '_$s10Foundation8CalendarV12ComponentSetV6secondAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV6singleAeC0C0O_tcfC', + '_$s10Foundation8CalendarV12ComponentSetV7quarterAEvgZ', '_$s10Foundation8CalendarV12ComponentSetV7quarterAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV7weekdayAEvgZ', '_$s10Foundation8CalendarV12ComponentSetV7weekdayAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV8calendarAEvgZ', + '_$s10Foundation8CalendarV12ComponentSetV8calendarAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV8rawValueAESu_tcfC', + '_$s10Foundation8CalendarV12ComponentSetV8rawValueSuvg', '_$s10Foundation8CalendarV12ComponentSetV8rawValueSuvpMV', + '_$s10Foundation8CalendarV12ComponentSetV8timeZoneAEvgZ', + '_$s10Foundation8CalendarV12ComponentSetV8timeZoneAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetV9dayOfYearAEvgZ', + '_$s10Foundation8CalendarV12ComponentSetV9dayOfYearAEvpZMV', + '_$s10Foundation8CalendarV12ComponentSetVMa', '_$s10Foundation8CalendarV12ComponentSetVMn', + '_$s10Foundation8CalendarV12ComponentSetVN', '_$s10Foundation8CalendarV12ComponentSetVSQAAMc', + '_$s10Foundation8CalendarV12ComponentSetVSYAAMc', '_$s10Foundation8CalendarV12ComponentSetVs06OptionD0AAMc', + '_$s10Foundation8CalendarV12ComponentSetVs0D7AlgebraAAMc', + '_$s10Foundation8CalendarV12ComponentSetVs25ExpressibleByArrayLiteralAAMc', + '_$s10Foundation8CalendarV12ComponentSetVyAEShyAC0C0OGcfC', + '_$s10Foundation8CalendarV12ComponentSetVyAeC0C0Od_tcfC', '_$s10Foundation8CalendarV12customMirrors0D0Vvg', '_$s10Foundation8CalendarV12customMirrors0D0VvpMV', '_$s10Foundation8CalendarV12dateInterval2of3forAA04DateD0VSgAC9ComponentO_AA0G0VtF', '_$s10Foundation8CalendarV12dateInterval2of5start8interval3forSbAC9ComponentO_AA4DateVzSdzALtF', @@ -7532,14 +8987,167 @@ exports: '_$s10Foundation8CalendarV13isDateInTodayySbAA0D0VF', '_$s10Foundation8CalendarV14MatchingPolicyO2eeoiySbAE_AEtFZ', '_$s10Foundation8CalendarV14MatchingPolicyO35nextTimePreservingSmallerComponentsyA2EmFWC', '_$s10Foundation8CalendarV14MatchingPolicyO39previousTimePreservingSmallerComponentsyA2EmFWC', + '_$s10Foundation8CalendarV14MatchingPolicyO4fromAEs7Decoder_p_tKcfC', '_$s10Foundation8CalendarV14MatchingPolicyO4hash4intoys6HasherVz_tF', + '_$s10Foundation8CalendarV14MatchingPolicyO6encode2toys7Encoder_p_tKF', '_$s10Foundation8CalendarV14MatchingPolicyO6strictyA2EmFWC', '_$s10Foundation8CalendarV14MatchingPolicyO8nextTimeyA2EmFWC', '_$s10Foundation8CalendarV14MatchingPolicyO9hashValueSivg', '_$s10Foundation8CalendarV14MatchingPolicyO9hashValueSivpMV', '_$s10Foundation8CalendarV14MatchingPolicyOMa', '_$s10Foundation8CalendarV14MatchingPolicyOMn', - '_$s10Foundation8CalendarV14MatchingPolicyON', '_$s10Foundation8CalendarV14MatchingPolicyOSHAAMc', - '_$s10Foundation8CalendarV14MatchingPolicyOSQAAMc', '_$s10Foundation8CalendarV14dateComponents2in4fromAA04DateD0VAA8TimeZoneV_AA0G0VtF', + '_$s10Foundation8CalendarV14MatchingPolicyON', '_$s10Foundation8CalendarV14MatchingPolicyOSEAAMc', + '_$s10Foundation8CalendarV14MatchingPolicyOSHAAMc', '_$s10Foundation8CalendarV14MatchingPolicyOSQAAMc', + '_$s10Foundation8CalendarV14MatchingPolicyOSeAAMc', '_$s10Foundation8CalendarV14RecurrenceRuleV11recurrences2of2inQrAA4DateV_SnyAJGSgtF', + '_$s10Foundation8CalendarV14RecurrenceRuleV11recurrences2of2inQrAA4DateV_SnyAJGSgtFQOMQ', + '_$s10Foundation8CalendarV14RecurrenceRuleV12setPositionsSaySiGvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV12setPositionsSaySiGvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV12setPositionsSaySiGvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV12setPositionsSaySiGvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV13daysOfTheYearSaySiGvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV13daysOfTheYearSaySiGvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV13daysOfTheYearSaySiGvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV13daysOfTheYearSaySiGvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV14daysOfTheMonthSaySiGvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV14daysOfTheMonthSaySiGvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV14daysOfTheMonthSaySiGvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV14daysOfTheMonthSaySiGvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV14matchingPolicyAC08MatchingF0OvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV14matchingPolicyAC08MatchingF0Ovg', + '_$s10Foundation8CalendarV14RecurrenceRuleV14matchingPolicyAC08MatchingF0OvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV14matchingPolicyAC08MatchingF0Ovs', + '_$s10Foundation8CalendarV14RecurrenceRuleV18repeatedTimePolicyAC08RepeatedfG0OvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV18repeatedTimePolicyAC08RepeatedfG0Ovg', + '_$s10Foundation8CalendarV14RecurrenceRuleV18repeatedTimePolicyAC08RepeatedfG0OvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV18repeatedTimePolicyAC08RepeatedfG0Ovs', + '_$s10Foundation8CalendarV14RecurrenceRuleV2eeoiySbAE_AEtFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV11descriptionSSvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV11descriptionSSvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV11occurrencesSiSgvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV11occurrencesSiSgvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV16afterOccurrencesyAGSiFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV2eeoiySbAG_AGtFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV4dateAA4DateVSgvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV4dateAA4DateVSgvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV4fromAGs7Decoder_p_tKcfC', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV4hash4intoys6HasherVz_tF', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV5neverAGvgZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV5neverAGvpZMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV6encode2toys7Encoder_p_tKF', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV9afterDateyAgA0G0VFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV9hashValueSivg', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndV9hashValueSivpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndVMa', '_$s10Foundation8CalendarV14RecurrenceRuleV3EndVMn', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndVN', '_$s10Foundation8CalendarV14RecurrenceRuleV3EndVSEAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndVSHAAMc', '_$s10Foundation8CalendarV14RecurrenceRuleV3EndVSQAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV3EndVSeAAMc', '_$s10Foundation8CalendarV14RecurrenceRuleV3EndVs23CustomStringConvertibleAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV3endAE3EndVvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV3endAE3EndVvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV3endAE3EndVvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV3endAE3EndVvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV4fromAEs7Decoder_p_tKcfC', + '_$s10Foundation8CalendarV14RecurrenceRuleV4hash4intoys6HasherVz_tF', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV14integerLiteralAGSi_tcfC', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV2eeoiySbAG_AGtFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV4fromAGs7Decoder_p_tKcfC', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV4hash4intoys6HasherVz_tF', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV5indexSivM', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV5indexSivg', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV5indexSivpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV5indexSivs', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV6encode2toys7Encoder_p_tKF', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV6isLeapSbvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV6isLeapSbvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV6isLeapSbvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV6isLeapSbvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV9hashValueSivg', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV9hashValueSivpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthVMa', '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthVMn', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthVN', '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthVSEAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthVSHAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthVSQAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthVSeAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthV_6isLeapAGSi_SbtcfC', + '_$s10Foundation8CalendarV14RecurrenceRuleV5MonthVs27ExpressibleByIntegerLiteralAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV5daily8calendar8interval3end14matchingPolicy012repeatedTimeJ06months14daysOfTheMonth8weekdays5hours7minutes7seconds12setPositionsAeC_SiAE3EndVAC08MatchingJ0OAC08RepeatedlJ0OSayAE0Q0VGSaySiGSayAE7WeekdayOGA0_A0_A0_A0_tFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV5hoursSaySiGvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV5hoursSaySiGvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV5hoursSaySiGvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV5hoursSaySiGvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV5weeksSaySiGvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV5weeksSaySiGvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV5weeksSaySiGvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV5weeksSaySiGvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV6encode2toys7Encoder_p_tKF', + '_$s10Foundation8CalendarV14RecurrenceRuleV6hourly8calendar8interval3end14matchingPolicy012repeatedTimeJ06months13daysOfTheYear0noP5Month8weekdays5hours7minutes7seconds12setPositionsAeC_SiAE3EndVAC08MatchingJ0OAC08RepeatedlJ0OSayAE0R0VGSaySiGA1_SayAE7WeekdayOGA1_A1_A1_A1_tFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV6monthsSayAE5MonthVGvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV6monthsSayAE5MonthVGvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV6monthsSayAE5MonthVGvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV6monthsSayAE5MonthVGvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV6weekly8calendar8interval3end14matchingPolicy012repeatedTimeJ06months8weekdays5hours7minutes7seconds12setPositionsAeC_SiAE3EndVAC08MatchingJ0OAC08RepeatedlJ0OSayAE5MonthVGSayAE7WeekdayOGSaySiGA2_A2_A2_tFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV6yearly8calendar8interval3end14matchingPolicy012repeatedTimeJ06months13daysOfTheYear0noP5Month5weeks8weekdays5hours7minutes7seconds12setPositionsAeC_SiAE3EndVAC08MatchingJ0OAC08RepeatedlJ0OSayAE0R0VGSaySiGA2_A2_SayAE7WeekdayOGA2_A2_A2_A2_tFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayO2eeoiySbAG_AGtFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayO3nthyAGSi_AA6LocaleVAFOtcAGmFWC', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayO4fromAGs7Decoder_p_tKcfC', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayO4hash4intoys6HasherVz_tF', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayO5everyyAgA6LocaleVAFOcAGmFWC', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayO6encode2toys7Encoder_p_tKF', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayO9hashValueSivg', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayO9hashValueSivpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayOMa', '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayOMn', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayON', '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayOSEAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayOSHAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayOSQAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV7WeekdayOSeAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV7minutesSaySiGvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV7minutesSaySiGvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV7minutesSaySiGvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV7minutesSaySiGvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV7monthly8calendar8interval3end14matchingPolicy012repeatedTimeJ06months14daysOfTheMonth8weekdays5hours7minutes7seconds12setPositionsAeC_SiAE3EndVAC08MatchingJ0OAC08RepeatedlJ0OSayAE0Q0VGSaySiGSayAE7WeekdayOGA0_A0_A0_A0_tFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV7secondsSaySiGvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV7secondsSaySiGvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV7secondsSaySiGvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV7secondsSaySiGvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV8calendar9frequency8interval3end14matchingPolicy012repeatedTimeJ06months13daysOfTheYear0noP5Month5weeks8weekdays5hours7minutes7seconds12setPositionsAeC_AE9FrequencyOSiAE3EndVAC08MatchingJ0OAC08RepeatedlJ0OSayAE0R0VGSaySiGA4_A4_SayAE7WeekdayOGA4_A4_A4_A4_tcfC', + '_$s10Foundation8CalendarV14RecurrenceRuleV8calendarACvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV8calendarACvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV8calendarACvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV8calendarACvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV8intervalSivM', + '_$s10Foundation8CalendarV14RecurrenceRuleV8intervalSivg', + '_$s10Foundation8CalendarV14RecurrenceRuleV8intervalSivpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV8intervalSivs', + '_$s10Foundation8CalendarV14RecurrenceRuleV8minutely8calendar8interval3end14matchingPolicy012repeatedTimeJ06months13daysOfTheYear0noP5Month8weekdays5hours7minutes7seconds12setPositionsAeC_SiAE3EndVAC08MatchingJ0OAC08RepeatedlJ0OSayAE0R0VGSaySiGA1_SayAE7WeekdayOGA1_A1_A1_A1_tFZ', + '_$s10Foundation8CalendarV14RecurrenceRuleV8weekdaysSayAE7WeekdayOGvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV8weekdaysSayAE7WeekdayOGvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV8weekdaysSayAE7WeekdayOGvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV8weekdaysSayAE7WeekdayOGvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyO5dailyyA2GmFWC', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyO6hourlyyA2GmFWC', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyO6weeklyyA2GmFWC', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyO6yearlyyA2GmFWC', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyO7monthlyyA2GmFWC', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyO8minutelyyA2GmFWC', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyO8rawValueAGSgSi_tcfC', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyO8rawValueSivg', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyO8rawValueSivpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyOMa', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyOMn', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyON', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyOSEAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyOSHAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyOSQAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyOSYAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV9FrequencyOSeAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleV9frequencyAE9FrequencyOvM', + '_$s10Foundation8CalendarV14RecurrenceRuleV9frequencyAE9FrequencyOvg', + '_$s10Foundation8CalendarV14RecurrenceRuleV9frequencyAE9FrequencyOvpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleV9frequencyAE9FrequencyOvs', + '_$s10Foundation8CalendarV14RecurrenceRuleV9hashValueSivg', + '_$s10Foundation8CalendarV14RecurrenceRuleV9hashValueSivpMV', + '_$s10Foundation8CalendarV14RecurrenceRuleVMa', '_$s10Foundation8CalendarV14RecurrenceRuleVMn', + '_$s10Foundation8CalendarV14RecurrenceRuleVN', '_$s10Foundation8CalendarV14RecurrenceRuleVSEAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleVSHAAMc', '_$s10Foundation8CalendarV14RecurrenceRuleVSQAAMc', + '_$s10Foundation8CalendarV14RecurrenceRuleVSeAAMc', '_$s10Foundation8CalendarV14dateComponents2in4fromAA04DateD0VAA8TimeZoneV_AA0G0VtF', '_$s10Foundation8CalendarV14dateComponents_4from2toAA04DateD0VShyAC9ComponentOG_A2HtF', '_$s10Foundation8CalendarV14dateComponents_4from2toAA04DateD0VShyAC9ComponentOG_AA0G0VAMtF', '_$s10Foundation8CalendarV14dateComponents_4fromAA04DateD0VShyAC9ComponentOG_AA0F0VtF', @@ -7560,15 +9168,19 @@ exports: '_$s10Foundation8CalendarV16isDateInTomorrowySbAA0D0VF', '_$s10Foundation8CalendarV17isDateInYesterdayySbAA0D0VF', '_$s10Foundation8CalendarV17shortMonthSymbolsSaySSGvg', '_$s10Foundation8CalendarV17shortMonthSymbolsSaySSGvpMV', '_$s10Foundation8CalendarV18RepeatedTimePolicyO2eeoiySbAE_AEtFZ', + '_$s10Foundation8CalendarV18RepeatedTimePolicyO4fromAEs7Decoder_p_tKcfC', '_$s10Foundation8CalendarV18RepeatedTimePolicyO4hash4intoys6HasherVz_tF', '_$s10Foundation8CalendarV18RepeatedTimePolicyO4lastyA2EmFWC', '_$s10Foundation8CalendarV18RepeatedTimePolicyO5firstyA2EmFWC', + '_$s10Foundation8CalendarV18RepeatedTimePolicyO6encode2toys7Encoder_p_tKF', '_$s10Foundation8CalendarV18RepeatedTimePolicyO9hashValueSivg', '_$s10Foundation8CalendarV18RepeatedTimePolicyO9hashValueSivpMV', '_$s10Foundation8CalendarV18RepeatedTimePolicyOMa', '_$s10Foundation8CalendarV18RepeatedTimePolicyOMn', - '_$s10Foundation8CalendarV18RepeatedTimePolicyON', '_$s10Foundation8CalendarV18RepeatedTimePolicyOSHAAMc', - '_$s10Foundation8CalendarV18RepeatedTimePolicyOSQAAMc', '_$s10Foundation8CalendarV19_bridgeToObjectiveCSo10NSCalendarCyF', - '_$s10Foundation8CalendarV19autoupdatingCurrentACvgZ', '_$s10Foundation8CalendarV19shortQuarterSymbolsSaySSGvg', + '_$s10Foundation8CalendarV18RepeatedTimePolicyON', '_$s10Foundation8CalendarV18RepeatedTimePolicyOSEAAMc', + '_$s10Foundation8CalendarV18RepeatedTimePolicyOSHAAMc', '_$s10Foundation8CalendarV18RepeatedTimePolicyOSQAAMc', + '_$s10Foundation8CalendarV18RepeatedTimePolicyOSeAAMc', '_$s10Foundation8CalendarV19_bridgeToObjectiveCSo10NSCalendarCyF', + '_$s10Foundation8CalendarV19autoupdatingCurrentACvgZ', '_$s10Foundation8CalendarV19autoupdatingCurrentACvpZMV', + '_$s10Foundation8CalendarV19shortQuarterSymbolsSaySSGvg', '_$s10Foundation8CalendarV19shortQuarterSymbolsSaySSGvpMV', '_$s10Foundation8CalendarV19shortWeekdaySymbolsSaySSGvg', '_$s10Foundation8CalendarV19shortWeekdaySymbolsSaySSGvpMV', @@ -7606,14 +9218,21 @@ exports: '_$s10Foundation8CalendarV4date9bySetting5value2ofAA4DateVSgAC9ComponentO_SiAItF', '_$s10Foundation8CalendarV4date_17matchesComponentsSbAA4DateV_AA0fE0VtF', '_$s10Foundation8CalendarV4fromACs7Decoder_p_tKcfC', '_$s10Foundation8CalendarV4hash4intoys6HasherVz_tF', + '_$s10Foundation8CalendarV5dates10byMatching10startingAt2in14matchingPolicy012repeatedTimeJ09directionQrAA14DateComponentsV_AA0N0VSnyANGSgAC0eJ0OAC08RepeatedlJ0OAC15SearchDirectionOtF', + '_$s10Foundation8CalendarV5dates10byMatching10startingAt2in14matchingPolicy012repeatedTimeJ09directionQrAA14DateComponentsV_AA0N0VSnyANGSgAC0eJ0OAC08RepeatedlJ0OAC15SearchDirectionOtFQOMQ', + '_$s10Foundation8CalendarV5dates8byAdding10startingAt2in18wrappingComponentsQrAA04DateJ0V_AA0K0VSnyALGSgSbtF', + '_$s10Foundation8CalendarV5dates8byAdding10startingAt2in18wrappingComponentsQrAA04DateJ0V_AA0K0VSnyALGSgSbtFQOMQ', + '_$s10Foundation8CalendarV5dates8byAdding5value10startingAt2in18wrappingComponentsQrAC9ComponentO_SiAA4DateVSnyAMGSgSbtF', + '_$s10Foundation8CalendarV5dates8byAdding5value10startingAt2in18wrappingComponentsQrAC9ComponentO_SiAA4DateVSnyAMGSgSbtFQOMQ', '_$s10Foundation8CalendarV5range2of2in3forSnySiGSgAC9ComponentO_AkA4DateVtF', '_$s10Foundation8CalendarV6encode2toys7Encoder_p_tKF', '_$s10Foundation8CalendarV6isDate_11inSameDayAsSbAA0D0V_AGtF', '_$s10Foundation8CalendarV6isDate_7equalTo13toGranularitySbAA0D0V_AhC9ComponentOtF', '_$s10Foundation8CalendarV6localeAA6LocaleVSgvM', '_$s10Foundation8CalendarV6localeAA6LocaleVSgvg', '_$s10Foundation8CalendarV6localeAA6LocaleVSgvpMV', '_$s10Foundation8CalendarV6localeAA6LocaleVSgvs', '_$s10Foundation8CalendarV7compare_2to0D11GranularitySo18NSComparisonResultVAA4DateV_AjC9ComponentOtF', - '_$s10Foundation8CalendarV7currentACvgZ', '_$s10Foundation8CalendarV8amSymbolSSvg', - '_$s10Foundation8CalendarV8amSymbolSSvpMV', '_$s10Foundation8CalendarV8nextDate5after8matching0F6Policy012repeatedTimeG09directionAA0D0VSgAK_AA0D10ComponentsVAC08MatchingG0OAC08RepeatediG0OAC15SearchDirectionOtF', + '_$s10Foundation8CalendarV7currentACvgZ', '_$s10Foundation8CalendarV7currentACvpZMV', + '_$s10Foundation8CalendarV8amSymbolSSvg', '_$s10Foundation8CalendarV8amSymbolSSvpMV', + '_$s10Foundation8CalendarV8nextDate5after8matching0F6Policy012repeatedTimeG09directionAA0D0VSgAK_AA0D10ComponentsVAC08MatchingG0OAC08RepeatediG0OAC15SearchDirectionOtF', '_$s10Foundation8CalendarV8pmSymbolSSvg', '_$s10Foundation8CalendarV8pmSymbolSSvpMV', '_$s10Foundation8CalendarV8timeZoneAA04TimeD0VvM', '_$s10Foundation8CalendarV8timeZoneAA04TimeD0Vvg', '_$s10Foundation8CalendarV8timeZoneAA04TimeD0VvpMV', '_$s10Foundation8CalendarV8timeZoneAA04TimeD0Vvs', @@ -7621,6 +9240,8 @@ exports: '_$s10Foundation8CalendarV9ComponentO10weekOfYearyA2EmFWC', '_$s10Foundation8CalendarV9ComponentO11isLeapMonthyA2EmFWC', '_$s10Foundation8CalendarV9ComponentO11weekOfMonthyA2EmFWC', + '_$s10Foundation8CalendarV9ComponentO14nextHigherUnitAESgvg', + '_$s10Foundation8CalendarV9ComponentO14nextHigherUnitAESgvpMV', '_$s10Foundation8CalendarV9ComponentO14weekdayOrdinalyA2EmFWC', '_$s10Foundation8CalendarV9ComponentO17yearForWeekOfYearyA2EmFWC', '_$s10Foundation8CalendarV9ComponentO2eeoiySbAE_AEtFZ', '_$s10Foundation8CalendarV9ComponentO3dayyA2EmFWC', @@ -7629,11 +9250,11 @@ exports: '_$s10Foundation8CalendarV9ComponentO5monthyA2EmFWC', '_$s10Foundation8CalendarV9ComponentO6minuteyA2EmFWC', '_$s10Foundation8CalendarV9ComponentO6secondyA2EmFWC', '_$s10Foundation8CalendarV9ComponentO7quarteryA2EmFWC', '_$s10Foundation8CalendarV9ComponentO7weekdayyA2EmFWC', '_$s10Foundation8CalendarV9ComponentO8calendaryA2EmFWC', - '_$s10Foundation8CalendarV9ComponentO8timeZoneyA2EmFWC', '_$s10Foundation8CalendarV9ComponentO9hashValueSivg', - '_$s10Foundation8CalendarV9ComponentO9hashValueSivpMV', '_$s10Foundation8CalendarV9ComponentOMa', - '_$s10Foundation8CalendarV9ComponentOMn', '_$s10Foundation8CalendarV9ComponentON', - '_$s10Foundation8CalendarV9ComponentOSHAAMc', '_$s10Foundation8CalendarV9ComponentOSQAAMc', - '_$s10Foundation8CalendarV9component_4fromSiAC9ComponentO_AA4DateVtF', + '_$s10Foundation8CalendarV9ComponentO8timeZoneyA2EmFWC', '_$s10Foundation8CalendarV9ComponentO9dayOfYearyA2EmFWC', + '_$s10Foundation8CalendarV9ComponentO9hashValueSivg', '_$s10Foundation8CalendarV9ComponentO9hashValueSivpMV', + '_$s10Foundation8CalendarV9ComponentOMa', '_$s10Foundation8CalendarV9ComponentOMn', + '_$s10Foundation8CalendarV9ComponentON', '_$s10Foundation8CalendarV9ComponentOSHAAMc', + '_$s10Foundation8CalendarV9ComponentOSQAAMc', '_$s10Foundation8CalendarV9component_4fromSiAC9ComponentO_AA4DateVtF', '_$s10Foundation8CalendarV9hashValueSivg', '_$s10Foundation8CalendarV9hashValueSivpMV', '_$s10Foundation8CalendarVAA20ReferenceConvertibleAAMc', '_$s10Foundation8CalendarVAA20ReferenceConvertibleAAWP', '_$s10Foundation8CalendarVMa', '_$s10Foundation8CalendarVMn', @@ -7657,6 +9278,7 @@ exports: '_$s10Foundation8IndexSetV0B0Vs23CustomStringConvertibleAAMc', '_$s10Foundation8IndexSetV10indexRange2inSnyAC0B0VGSnySiG_tF', '_$s10Foundation8IndexSetV10indexRange2inSnyAC0B0VGx_tSXRzSi5BoundRtzlF', + '_$s10Foundation8IndexSetV10integersInACSgs05RangeC0VySiG_tcfC', '_$s10Foundation8IndexSetV10integersInACSnySiG_tcfC', '_$s10Foundation8IndexSetV10integersInACx_tcSXRzSi5BoundRtzlufC', '_$s10Foundation8IndexSetV10intersects10integersInSbSnySiG_tF', '_$s10Foundation8IndexSetV10intersects10integersInSbx_tSXRzSi5BoundRtzlF', @@ -7719,28 +9341,52 @@ exports: '_$s10Foundation8IndexSetVs28CustomDebugStringConvertibleAAMc', '_$s10Foundation8IndexSetVySiAC0B0Vcig', '_$s10Foundation8IndexSetVySiAC0B0VcipMV', '_$s10Foundation8IndexSetVys5SliceVyACGSnyAC0B0VGcig', '_$s10Foundation8IndexSetVys5SliceVyACGSnyAC0B0VGcipMV', + '_$s10Foundation8PlatformV11copyCString3dst3src4sizeSiSpys4Int8VG_SPyAIGSitFZ', + '_$s10Foundation8PlatformVMa', '_$s10Foundation8PlatformVMn', + '_$s10Foundation8PlatformVN', '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyO2eeoiySbAE_AEtFZ', + '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyO4hash4intoys6HasherVz_tF', + '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyO6formeryA2EmFWC', + '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyO6latteryA2EmFWC', + '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyO9hashValueSivg', + '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyO9hashValueSivpMV', + '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyOMa', '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyOMn', + '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyON', '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyOSHAAMc', + '_$s10Foundation8TimeZoneV014DaylightSavingB6PolicyOSQAAMc', '_$s10Foundation8TimeZoneV014daylightSavingB6Offset3forSdAA4DateV_tF', '_$s10Foundation8TimeZoneV016isDaylightSavingB03forSbAA4DateV_tF', '_$s10Foundation8TimeZoneV018nextDaylightSavingB10Transition5afterAA4DateVSgAG_tF', '_$s10Foundation8TimeZoneV018nextDaylightSavingB10TransitionAA4DateVSgvg', '_$s10Foundation8TimeZoneV018nextDaylightSavingB10TransitionAA4DateVSgvpMV', - '_$s10Foundation8TimeZoneV04timeC11DataVersionSSvgZ', '_$s10Foundation8TimeZoneV05knownbC11IdentifiersSaySSGvgZ', + '_$s10Foundation8TimeZoneV04timeC11DataVersionSSvgZ', '_$s10Foundation8TimeZoneV04timeC11DataVersionSSvpZMV', + '_$s10Foundation8TimeZoneV05knownbC11IdentifiersSaySSGvgZ', + '_$s10Foundation8TimeZoneV05knownbC11IdentifiersSaySSGvpZMV', '_$s10Foundation8TimeZoneV10identifierACSgSSh_tcfC', '_$s10Foundation8TimeZoneV10identifierSSvg', '_$s10Foundation8TimeZoneV10identifierSSvpMV', '_$s10Foundation8TimeZoneV11descriptionSSvg', '_$s10Foundation8TimeZoneV11descriptionSSvpMV', '_$s10Foundation8TimeZoneV12abbreviation3forSSSgAA4DateV_tF', '_$s10Foundation8TimeZoneV12abbreviationACSgSSh_tcfC', '_$s10Foundation8TimeZoneV12customMirrors0E0Vvg', '_$s10Foundation8TimeZoneV12customMirrors0E0VvpMV', '_$s10Foundation8TimeZoneV13localizedName3for6localeSSSgSo06NSTimecE5StyleV_AA6LocaleVSgtF', + '_$s10Foundation8TimeZoneV14cldrKeywordKeyAA10ICUCLDRKeyVvgZ', + '_$s10Foundation8TimeZoneV14cldrKeywordKeyAA10ICUCLDRKeyVvpZMV', '_$s10Foundation8TimeZoneV14secondsFromGMT3forSiAA4DateV_tF', - '_$s10Foundation8TimeZoneV14secondsFromGMTACSgSi_tcfC', '_$s10Foundation8TimeZoneV16debugDescriptionSSvg', - '_$s10Foundation8TimeZoneV16debugDescriptionSSvpMV', '_$s10Foundation8TimeZoneV19_bridgeToObjectiveCSo06NSTimeC0CyF', - '_$s10Foundation8TimeZoneV19autoupdatingCurrentACvgZ', '_$s10Foundation8TimeZoneV22abbreviationDictionarySDyS2SGvMZ', + '_$s10Foundation8TimeZoneV14secondsFromGMTACSgSi_tcfC', '_$s10Foundation8TimeZoneV15tryParseGMTNameySiSgSSFZ', + '_$s10Foundation8TimeZoneV16debugDescriptionSSvg', '_$s10Foundation8TimeZoneV16debugDescriptionSSvpMV', + '_$s10Foundation8TimeZoneV16legacyKeywordKeyAA09ICULegacyF0VvgZ', + '_$s10Foundation8TimeZoneV16legacyKeywordKeyAA09ICULegacyF0VvpZMV', + '_$s10Foundation8TimeZoneV19_bridgeToObjectiveCSo06NSTimeC0CyF', + '_$s10Foundation8TimeZoneV19autoupdatingCurrentACvgZ', '_$s10Foundation8TimeZoneV19autoupdatingCurrentACvpZMV', + '_$s10Foundation8TimeZoneV21nameForSecondsFromGMTySSSgSiFZ', + '_$s10Foundation8TimeZoneV22abbreviationDictionarySDyS2SGvMZ', '_$s10Foundation8TimeZoneV22abbreviationDictionarySDyS2SGvgZ', + '_$s10Foundation8TimeZoneV22abbreviationDictionarySDyS2SGvpZMV', '_$s10Foundation8TimeZoneV22abbreviationDictionarySDyS2SGvsZ', '_$s10Foundation8TimeZoneV26_forceBridgeFromObjectiveC_6resultySo06NSTimeC0C_ACSgztFZ', '_$s10Foundation8TimeZoneV2eeoiySbAC_ACtFZ', '_$s10Foundation8TimeZoneV34_conditionallyBridgeFromObjectiveC_6resultSbSo06NSTimeC0C_ACSgztFZ', '_$s10Foundation8TimeZoneV36_unconditionallyBridgeFromObjectiveCyACSo06NSTimeC0CSgFZ', - '_$s10Foundation8TimeZoneV4fromACs7Decoder_p_tKcfC', '_$s10Foundation8TimeZoneV4hash4intoys6HasherVz_tF', - '_$s10Foundation8TimeZoneV6encode2toys7Encoder_p_tKF', '_$s10Foundation8TimeZoneV7currentACvgZ', + '_$s10Foundation8TimeZoneV3gmtACvpZMV', '_$s10Foundation8TimeZoneV4fromACs7Decoder_p_tKcfC', + '_$s10Foundation8TimeZoneV4hash4intoys6HasherVz_tF', '_$s10Foundation8TimeZoneV6encode2toys7Encoder_p_tKF', + '_$s10Foundation8TimeZoneV7currentACvgZ', '_$s10Foundation8TimeZoneV7currentACvpZMV', + '_$s10Foundation8TimeZoneV7defaultACSgvMZ', '_$s10Foundation8TimeZoneV7defaultACSgvgZ', + '_$s10Foundation8TimeZoneV7defaultACSgvpZMV', '_$s10Foundation8TimeZoneV7defaultACSgvsZ', '_$s10Foundation8TimeZoneV9hashValueSivg', '_$s10Foundation8TimeZoneV9hashValueSivpMV', '_$s10Foundation8TimeZoneVAA20ReferenceConvertibleAAMc', '_$s10Foundation8TimeZoneVAA20ReferenceConvertibleAAWP', '_$s10Foundation8TimeZoneVMa', '_$s10Foundation8TimeZoneVMn', @@ -7750,36 +9396,59 @@ exports: '_$s10Foundation8TimeZoneVs21_ObjectiveCBridgeableAAMc', '_$s10Foundation8TimeZoneVs23CustomStringConvertibleAAMc', '_$s10Foundation8TimeZoneVs28CustomDebugStringConvertibleAAMc', '_$s10Foundation8URLErrorV10failingURLAA0D0VSgvg', '_$s10Foundation8URLErrorV10failingURLAA0D0VSgvpMV', - '_$s10Foundation8URLErrorV11errorDomainSSvgZ', '_$s10Foundation8URLErrorV12callIsActiveAC4CodeVvgZ', - '_$s10Foundation8URLErrorV14cannotFindHostAC4CodeVvgZ', '_$s10Foundation8URLErrorV14cannotMoveFileAC4CodeVvgZ', - '_$s10Foundation8URLErrorV14cannotOpenFileAC4CodeVvgZ', '_$s10Foundation8URLErrorV14dataNotAllowedAC4CodeVvgZ', - '_$s10Foundation8URLErrorV14unsupportedURLAC4CodeVvgZ', '_$s10Foundation8URLErrorV15cannotCloseFileAC4CodeVvgZ', - '_$s10Foundation8URLErrorV15dnsLookupFailedAC4CodeVvgZ', '_$s10Foundation8URLErrorV15fileIsDirectoryAC4CodeVvgZ', + '_$s10Foundation8URLErrorV11errorDomainSSvgZ', '_$s10Foundation8URLErrorV11errorDomainSSvpZMV', + '_$s10Foundation8URLErrorV12callIsActiveAC4CodeVvgZ', '_$s10Foundation8URLErrorV12callIsActiveAC4CodeVvpZMV', + '_$s10Foundation8URLErrorV14cannotFindHostAC4CodeVvgZ', '_$s10Foundation8URLErrorV14cannotFindHostAC4CodeVvpZMV', + '_$s10Foundation8URLErrorV14cannotMoveFileAC4CodeVvgZ', '_$s10Foundation8URLErrorV14cannotMoveFileAC4CodeVvpZMV', + '_$s10Foundation8URLErrorV14cannotOpenFileAC4CodeVvgZ', '_$s10Foundation8URLErrorV14cannotOpenFileAC4CodeVvpZMV', + '_$s10Foundation8URLErrorV14dataNotAllowedAC4CodeVvgZ', '_$s10Foundation8URLErrorV14dataNotAllowedAC4CodeVvpZMV', + '_$s10Foundation8URLErrorV14unsupportedURLAC4CodeVvgZ', '_$s10Foundation8URLErrorV14unsupportedURLAC4CodeVvpZMV', + '_$s10Foundation8URLErrorV15cannotCloseFileAC4CodeVvgZ', '_$s10Foundation8URLErrorV15cannotCloseFileAC4CodeVvpZMV', + '_$s10Foundation8URLErrorV15dnsLookupFailedAC4CodeVvgZ', '_$s10Foundation8URLErrorV15dnsLookupFailedAC4CodeVvpZMV', + '_$s10Foundation8URLErrorV15fileIsDirectoryAC4CodeVvgZ', '_$s10Foundation8URLErrorV15fileIsDirectoryAC4CodeVvpZMV', '_$s10Foundation8URLErrorV16cannotCreateFileAC4CodeVvgZ', + '_$s10Foundation8URLErrorV16cannotCreateFileAC4CodeVvpZMV', '_$s10Foundation8URLErrorV16cannotRemoveFileAC4CodeVvgZ', + '_$s10Foundation8URLErrorV16cannotRemoveFileAC4CodeVvpZMV', '_$s10Foundation8URLErrorV16failureURLStringSSSgvg', '_$s10Foundation8URLErrorV16failureURLStringSSSgvpMV', '_$s10Foundation8URLErrorV16fileDoesNotExistAC4CodeVvgZ', + '_$s10Foundation8URLErrorV16fileDoesNotExistAC4CodeVvpZMV', '_$s10Foundation8URLErrorV16zeroByteResourceAC4CodeVvgZ', + '_$s10Foundation8URLErrorV16zeroByteResourceAC4CodeVvpZMV', '_$s10Foundation8URLErrorV17badServerResponseAC4CodeVvgZ', + '_$s10Foundation8URLErrorV17badServerResponseAC4CodeVvpZMV', '_$s10Foundation8URLErrorV17cannotWriteToFileAC4CodeVvgZ', + '_$s10Foundation8URLErrorV17cannotWriteToFileAC4CodeVvpZMV', '_$s10Foundation8URLErrorV19cannotConnectToHostAC4CodeVvgZ', + '_$s10Foundation8URLErrorV19cannotConnectToHostAC4CodeVvpZMV', '_$s10Foundation8URLErrorV19cannotDecodeRawDataAC4CodeVvgZ', + '_$s10Foundation8URLErrorV19cannotDecodeRawDataAC4CodeVvpZMV', '_$s10Foundation8URLErrorV19cannotParseResponseAC4CodeVvgZ', + '_$s10Foundation8URLErrorV19cannotParseResponseAC4CodeVvpZMV', '_$s10Foundation8URLErrorV19failureURLPeerTrustSo03SecE3RefaSgvg', '_$s10Foundation8URLErrorV19failureURLPeerTrustSo03SecE3RefaSgvpMV', '_$s10Foundation8URLErrorV19resourceUnavailableAC4CodeVvgZ', + '_$s10Foundation8URLErrorV19resourceUnavailableAC4CodeVvpZMV', '_$s10Foundation8URLErrorV20httpTooManyRedirectsAC4CodeVvgZ', + '_$s10Foundation8URLErrorV20httpTooManyRedirectsAC4CodeVvpZMV', '_$s10Foundation8URLErrorV20uploadTaskResumeDataAA0F0VSgvg', '_$s10Foundation8URLErrorV20uploadTaskResumeDataAA0F0VSgvpMV', '_$s10Foundation8URLErrorV21cannotLoadFromNetworkAC4CodeVvgZ', + '_$s10Foundation8URLErrorV21cannotLoadFromNetworkAC4CodeVvpZMV', '_$s10Foundation8URLErrorV21networkConnectionLostAC4CodeVvgZ', + '_$s10Foundation8URLErrorV21networkConnectionLostAC4CodeVvpZMV', '_$s10Foundation8URLErrorV22downloadTaskResumeDataAA0F0VSgvg', '_$s10Foundation8URLErrorV22downloadTaskResumeDataAA0F0VSgvpMV', '_$s10Foundation8URLErrorV22notConnectedToInternetAC4CodeVvgZ', + '_$s10Foundation8URLErrorV22notConnectedToInternetAC4CodeVvpZMV', '_$s10Foundation8URLErrorV22secureConnectionFailedAC4CodeVvgZ', + '_$s10Foundation8URLErrorV22secureConnectionFailedAC4CodeVvpZMV', '_$s10Foundation8URLErrorV23cannotDecodeContentDataAC4CodeVvgZ', + '_$s10Foundation8URLErrorV23cannotDecodeContentDataAC4CodeVvpZMV', '_$s10Foundation8URLErrorV23internationalRoamingOffAC4CodeVvgZ', + '_$s10Foundation8URLErrorV23internationalRoamingOffAC4CodeVvpZMV', '_$s10Foundation8URLErrorV23noPermissionsToReadFileAC4CodeVvgZ', + '_$s10Foundation8URLErrorV23noPermissionsToReadFileAC4CodeVvpZMV', '_$s10Foundation8URLErrorV24NetworkUnavailableReasonO11constrainedyA2EmFWC', '_$s10Foundation8URLErrorV24NetworkUnavailableReasonO8cellularyA2EmFWC', '_$s10Foundation8URLErrorV24NetworkUnavailableReasonO8rawValueAESgSi_tcfC', @@ -7792,16 +9461,25 @@ exports: '_$s10Foundation8URLErrorV24NetworkUnavailableReasonOSQAAMc', '_$s10Foundation8URLErrorV24NetworkUnavailableReasonOSYAAMc', '_$s10Foundation8URLErrorV24dataLengthExceedsMaximumAC4CodeVvgZ', + '_$s10Foundation8URLErrorV24dataLengthExceedsMaximumAC4CodeVvpZMV', '_$s10Foundation8URLErrorV24networkUnavailableReasonAC07NetworkdE0OSgvg', '_$s10Foundation8URLErrorV24networkUnavailableReasonAC07NetworkdE0OSgvpMV', '_$s10Foundation8URLErrorV25clientCertificateRejectedAC4CodeVvgZ', + '_$s10Foundation8URLErrorV25clientCertificateRejectedAC4CodeVvpZMV', '_$s10Foundation8URLErrorV25clientCertificateRequiredAC4CodeVvgZ', + '_$s10Foundation8URLErrorV25clientCertificateRequiredAC4CodeVvpZMV', '_$s10Foundation8URLErrorV26requestBodyStreamExhaustedAC4CodeVvgZ', + '_$s10Foundation8URLErrorV26requestBodyStreamExhaustedAC4CodeVvpZMV', '_$s10Foundation8URLErrorV26serverCertificateUntrustedAC4CodeVvgZ', + '_$s10Foundation8URLErrorV26serverCertificateUntrustedAC4CodeVvpZMV', '_$s10Foundation8URLErrorV26userAuthenticationRequiredAC4CodeVvgZ', + '_$s10Foundation8URLErrorV26userAuthenticationRequiredAC4CodeVvpZMV', '_$s10Foundation8URLErrorV27serverCertificateHasBadDateAC4CodeVvgZ', + '_$s10Foundation8URLErrorV27serverCertificateHasBadDateAC4CodeVvpZMV', '_$s10Foundation8URLErrorV27userCancelledAuthenticationAC4CodeVvgZ', + '_$s10Foundation8URLErrorV27userCancelledAuthenticationAC4CodeVvpZMV', '_$s10Foundation8URLErrorV28serverCertificateNotYetValidAC4CodeVvgZ', + '_$s10Foundation8URLErrorV28serverCertificateNotYetValidAC4CodeVvpZMV', '_$s10Foundation8URLErrorV29BackgroundTaskCancelledReasonO24userForceQuitApplicationyA2EmFWC', '_$s10Foundation8URLErrorV29BackgroundTaskCancelledReasonO25backgroundUpdatesDisabledyA2EmFWC', '_$s10Foundation8URLErrorV29BackgroundTaskCancelledReasonO27insufficientSystemResourcesyA2EmFWC', @@ -7817,64 +9495,116 @@ exports: '_$s10Foundation8URLErrorV29backgroundTaskCancelledReasonAC010BackgrounddeF0OSgvg', '_$s10Foundation8URLErrorV29backgroundTaskCancelledReasonAC010BackgrounddeF0OSgvpMV', '_$s10Foundation8URLErrorV29redirectToNonExistentLocationAC4CodeVvgZ', + '_$s10Foundation8URLErrorV29redirectToNonExistentLocationAC4CodeVvpZMV', '_$s10Foundation8URLErrorV31downloadDecodingFailedMidStreamAC4CodeVvgZ', + '_$s10Foundation8URLErrorV31downloadDecodingFailedMidStreamAC4CodeVvpZMV', '_$s10Foundation8URLErrorV31serverCertificateHasUnknownRootAC4CodeVvgZ', + '_$s10Foundation8URLErrorV31serverCertificateHasUnknownRootAC4CodeVvpZMV', '_$s10Foundation8URLErrorV32backgroundSessionWasDisconnectedAC4CodeVvgZ', + '_$s10Foundation8URLErrorV32backgroundSessionWasDisconnectedAC4CodeVvpZMV', '_$s10Foundation8URLErrorV32downloadDecodingFailedToCompleteAC4CodeVvgZ', + '_$s10Foundation8URLErrorV32downloadDecodingFailedToCompleteAC4CodeVvpZMV', '_$s10Foundation8URLErrorV38backgroundSessionInUseByAnotherProcessAC4CodeVvgZ', + '_$s10Foundation8URLErrorV38backgroundSessionInUseByAnotherProcessAC4CodeVvpZMV', '_$s10Foundation8URLErrorV40backgroundSessionRequiresSharedContainerAC4CodeVvgZ', + '_$s10Foundation8URLErrorV40backgroundSessionRequiresSharedContainerAC4CodeVvpZMV', '_$s10Foundation8URLErrorV44appTransportSecurityRequiresSecureConnectionAC4CodeVvgZ', - '_$s10Foundation8URLErrorV4CodeV12callIsActiveAEvgZ', '_$s10Foundation8URLErrorV4CodeV14cannotFindHostAEvgZ', - '_$s10Foundation8URLErrorV4CodeV14cannotMoveFileAEvgZ', '_$s10Foundation8URLErrorV4CodeV14cannotOpenFileAEvgZ', - '_$s10Foundation8URLErrorV4CodeV14dataNotAllowedAEvgZ', '_$s10Foundation8URLErrorV4CodeV14unsupportedURLAEvgZ', - '_$s10Foundation8URLErrorV4CodeV15cannotCloseFileAEvgZ', '_$s10Foundation8URLErrorV4CodeV15dnsLookupFailedAEvgZ', - '_$s10Foundation8URLErrorV4CodeV15fileIsDirectoryAEvgZ', '_$s10Foundation8URLErrorV4CodeV16cannotCreateFileAEvgZ', + '_$s10Foundation8URLErrorV44appTransportSecurityRequiresSecureConnectionAC4CodeVvpZMV', + '_$s10Foundation8URLErrorV4CodeV12callIsActiveAEvgZ', '_$s10Foundation8URLErrorV4CodeV12callIsActiveAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV14cannotFindHostAEvgZ', '_$s10Foundation8URLErrorV4CodeV14cannotFindHostAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV14cannotMoveFileAEvgZ', '_$s10Foundation8URLErrorV4CodeV14cannotMoveFileAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV14cannotOpenFileAEvgZ', '_$s10Foundation8URLErrorV4CodeV14cannotOpenFileAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV14dataNotAllowedAEvgZ', '_$s10Foundation8URLErrorV4CodeV14dataNotAllowedAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV14unsupportedURLAEvgZ', '_$s10Foundation8URLErrorV4CodeV14unsupportedURLAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV15cannotCloseFileAEvgZ', '_$s10Foundation8URLErrorV4CodeV15cannotCloseFileAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV15dnsLookupFailedAEvgZ', '_$s10Foundation8URLErrorV4CodeV15dnsLookupFailedAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV15fileIsDirectoryAEvgZ', '_$s10Foundation8URLErrorV4CodeV15fileIsDirectoryAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV16cannotCreateFileAEvgZ', + '_$s10Foundation8URLErrorV4CodeV16cannotCreateFileAEvpZMV', '_$s10Foundation8URLErrorV4CodeV16cannotRemoveFileAEvgZ', + '_$s10Foundation8URLErrorV4CodeV16cannotRemoveFileAEvpZMV', '_$s10Foundation8URLErrorV4CodeV16fileDoesNotExistAEvgZ', + '_$s10Foundation8URLErrorV4CodeV16fileDoesNotExistAEvpZMV', '_$s10Foundation8URLErrorV4CodeV16zeroByteResourceAEvgZ', + '_$s10Foundation8URLErrorV4CodeV16zeroByteResourceAEvpZMV', '_$s10Foundation8URLErrorV4CodeV17badServerResponseAEvgZ', + '_$s10Foundation8URLErrorV4CodeV17badServerResponseAEvpZMV', '_$s10Foundation8URLErrorV4CodeV17cannotWriteToFileAEvgZ', + '_$s10Foundation8URLErrorV4CodeV17cannotWriteToFileAEvpZMV', '_$s10Foundation8URLErrorV4CodeV19cannotConnectToHostAEvgZ', + '_$s10Foundation8URLErrorV4CodeV19cannotConnectToHostAEvpZMV', '_$s10Foundation8URLErrorV4CodeV19cannotDecodeRawDataAEvgZ', + '_$s10Foundation8URLErrorV4CodeV19cannotDecodeRawDataAEvpZMV', '_$s10Foundation8URLErrorV4CodeV19cannotParseResponseAEvgZ', + '_$s10Foundation8URLErrorV4CodeV19cannotParseResponseAEvpZMV', '_$s10Foundation8URLErrorV4CodeV19resourceUnavailableAEvgZ', + '_$s10Foundation8URLErrorV4CodeV19resourceUnavailableAEvpZMV', '_$s10Foundation8URLErrorV4CodeV20httpTooManyRedirectsAEvgZ', + '_$s10Foundation8URLErrorV4CodeV20httpTooManyRedirectsAEvpZMV', '_$s10Foundation8URLErrorV4CodeV21cannotLoadFromNetworkAEvgZ', + '_$s10Foundation8URLErrorV4CodeV21cannotLoadFromNetworkAEvpZMV', '_$s10Foundation8URLErrorV4CodeV21networkConnectionLostAEvgZ', + '_$s10Foundation8URLErrorV4CodeV21networkConnectionLostAEvpZMV', '_$s10Foundation8URLErrorV4CodeV22notConnectedToInternetAEvgZ', + '_$s10Foundation8URLErrorV4CodeV22notConnectedToInternetAEvpZMV', '_$s10Foundation8URLErrorV4CodeV22secureConnectionFailedAEvgZ', + '_$s10Foundation8URLErrorV4CodeV22secureConnectionFailedAEvpZMV', '_$s10Foundation8URLErrorV4CodeV23cannotDecodeContentDataAEvgZ', + '_$s10Foundation8URLErrorV4CodeV23cannotDecodeContentDataAEvpZMV', '_$s10Foundation8URLErrorV4CodeV23internationalRoamingOffAEvgZ', + '_$s10Foundation8URLErrorV4CodeV23internationalRoamingOffAEvpZMV', '_$s10Foundation8URLErrorV4CodeV23noPermissionsToReadFileAEvgZ', + '_$s10Foundation8URLErrorV4CodeV23noPermissionsToReadFileAEvpZMV', '_$s10Foundation8URLErrorV4CodeV24dataLengthExceedsMaximumAEvgZ', + '_$s10Foundation8URLErrorV4CodeV24dataLengthExceedsMaximumAEvpZMV', '_$s10Foundation8URLErrorV4CodeV25clientCertificateRejectedAEvgZ', + '_$s10Foundation8URLErrorV4CodeV25clientCertificateRejectedAEvpZMV', '_$s10Foundation8URLErrorV4CodeV25clientCertificateRequiredAEvgZ', + '_$s10Foundation8URLErrorV4CodeV25clientCertificateRequiredAEvpZMV', '_$s10Foundation8URLErrorV4CodeV26requestBodyStreamExhaustedAEvgZ', + '_$s10Foundation8URLErrorV4CodeV26requestBodyStreamExhaustedAEvpZMV', '_$s10Foundation8URLErrorV4CodeV26serverCertificateUntrustedAEvgZ', + '_$s10Foundation8URLErrorV4CodeV26serverCertificateUntrustedAEvpZMV', '_$s10Foundation8URLErrorV4CodeV26userAuthenticationRequiredAEvgZ', + '_$s10Foundation8URLErrorV4CodeV26userAuthenticationRequiredAEvpZMV', '_$s10Foundation8URLErrorV4CodeV27serverCertificateHasBadDateAEvgZ', + '_$s10Foundation8URLErrorV4CodeV27serverCertificateHasBadDateAEvpZMV', '_$s10Foundation8URLErrorV4CodeV27userCancelledAuthenticationAEvgZ', + '_$s10Foundation8URLErrorV4CodeV27userCancelledAuthenticationAEvpZMV', '_$s10Foundation8URLErrorV4CodeV28serverCertificateNotYetValidAEvgZ', + '_$s10Foundation8URLErrorV4CodeV28serverCertificateNotYetValidAEvpZMV', '_$s10Foundation8URLErrorV4CodeV29redirectToNonExistentLocationAEvgZ', + '_$s10Foundation8URLErrorV4CodeV29redirectToNonExistentLocationAEvpZMV', '_$s10Foundation8URLErrorV4CodeV31downloadDecodingFailedMidStreamAEvgZ', + '_$s10Foundation8URLErrorV4CodeV31downloadDecodingFailedMidStreamAEvpZMV', '_$s10Foundation8URLErrorV4CodeV31serverCertificateHasUnknownRootAEvgZ', + '_$s10Foundation8URLErrorV4CodeV31serverCertificateHasUnknownRootAEvpZMV', '_$s10Foundation8URLErrorV4CodeV32backgroundSessionWasDisconnectedAEvgZ', + '_$s10Foundation8URLErrorV4CodeV32backgroundSessionWasDisconnectedAEvpZMV', '_$s10Foundation8URLErrorV4CodeV32downloadDecodingFailedToCompleteAEvgZ', + '_$s10Foundation8URLErrorV4CodeV32downloadDecodingFailedToCompleteAEvpZMV', '_$s10Foundation8URLErrorV4CodeV38backgroundSessionInUseByAnotherProcessAEvgZ', + '_$s10Foundation8URLErrorV4CodeV38backgroundSessionInUseByAnotherProcessAEvpZMV', '_$s10Foundation8URLErrorV4CodeV40backgroundSessionRequiresSharedContainerAEvgZ', + '_$s10Foundation8URLErrorV4CodeV40backgroundSessionRequiresSharedContainerAEvpZMV', '_$s10Foundation8URLErrorV4CodeV44appTransportSecurityRequiresSecureConnectionAEvgZ', - '_$s10Foundation8URLErrorV4CodeV6badURLAEvgZ', '_$s10Foundation8URLErrorV4CodeV7unknownAEvgZ', + '_$s10Foundation8URLErrorV4CodeV44appTransportSecurityRequiresSecureConnectionAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV6badURLAEvgZ', '_$s10Foundation8URLErrorV4CodeV6badURLAEvpZMV', + '_$s10Foundation8URLErrorV4CodeV7unknownAEvgZ', '_$s10Foundation8URLErrorV4CodeV7unknownAEvpZMV', '_$s10Foundation8URLErrorV4CodeV8rawValueAESi_tcfC', '_$s10Foundation8URLErrorV4CodeV8rawValueSivg', '_$s10Foundation8URLErrorV4CodeV8rawValueSivpMV', '_$s10Foundation8URLErrorV4CodeV8timedOutAEvgZ', - '_$s10Foundation8URLErrorV4CodeV9cancelledAEvgZ', '_$s10Foundation8URLErrorV4CodeVAA06_ErrorC8ProtocolAAMc', + '_$s10Foundation8URLErrorV4CodeV8timedOutAEvpZMV', '_$s10Foundation8URLErrorV4CodeV9cancelledAEvgZ', + '_$s10Foundation8URLErrorV4CodeV9cancelledAEvpZMV', '_$s10Foundation8URLErrorV4CodeVAA06_ErrorC8ProtocolAAMc', '_$s10Foundation8URLErrorV4CodeVAA06_ErrorC8ProtocolAAWP', '_$s10Foundation8URLErrorV4CodeVMa', '_$s10Foundation8URLErrorV4CodeVMn', '_$s10Foundation8URLErrorV4CodeVN', '_$s10Foundation8URLErrorV4CodeVSHAAMc', '_$s10Foundation8URLErrorV4CodeVSQAAMc', '_$s10Foundation8URLErrorV4CodeVSYAAMc', - '_$s10Foundation8URLErrorV6badURLAC4CodeVvgZ', '_$s10Foundation8URLErrorV7unknownAC4CodeVvgZ', + '_$s10Foundation8URLErrorV6badURLAC4CodeVvgZ', '_$s10Foundation8URLErrorV6badURLAC4CodeVvpZMV', + '_$s10Foundation8URLErrorV7unknownAC4CodeVvgZ', '_$s10Foundation8URLErrorV7unknownAC4CodeVvpZMV', '_$s10Foundation8URLErrorV8_nsErrorACSo7NSErrorC_tcfC', '_$s10Foundation8URLErrorV8_nsErrorSo7NSErrorCvg', '_$s10Foundation8URLErrorV8_nsErrorSo7NSErrorCvpMV', '_$s10Foundation8URLErrorV8timedOutAC4CodeVvgZ', - '_$s10Foundation8URLErrorV9cancelledAC4CodeVvgZ', '_$s10Foundation8URLErrorV9hashValueSivg', + '_$s10Foundation8URLErrorV8timedOutAC4CodeVvpZMV', '_$s10Foundation8URLErrorV9cancelledAC4CodeVvgZ', + '_$s10Foundation8URLErrorV9cancelledAC4CodeVvpZMV', '_$s10Foundation8URLErrorV9hashValueSivg', '_$s10Foundation8URLErrorV9hashValueSivpMV', '_$s10Foundation8URLErrorVAA13CustomNSErrorAAMc', '_$s10Foundation8URLErrorVAA13CustomNSErrorAAWP', '_$s10Foundation8URLErrorVAA21_BridgedStoredNSErrorAAMc', '_$s10Foundation8URLErrorVAA21_BridgedStoredNSErrorAAWP', @@ -7925,56 +9655,107 @@ exports: '_$s10Foundation9IndexPathVyS2icipMV', '_$s10Foundation9IndexPathVyS2icis', '_$s10Foundation9MachErrorV03_nsC0ACSo7NSErrorC_tcfC', '_$s10Foundation9MachErrorV03_nsC0So7NSErrorCvg', '_$s10Foundation9MachErrorV03_nsC0So7NSErrorCvpMV', '_$s10Foundation9MachErrorV06memoryC06Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV06memoryC06Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV08codesignC06Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV08codesignC06Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV10defaultSet6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV10defaultSet6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV10nameExists6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV10nameExists6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV10notWaiting6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV10notWaiting6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV10terminated6Darwin0bC4CodeOvgZ', - '_$s10Foundation9MachErrorV11errorDomainSSvgZ', '_$s10Foundation9MachErrorV11invalidHost6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV10terminated6Darwin0bC4CodeOvpZMV', + '_$s10Foundation9MachErrorV11errorDomainSSvgZ', '_$s10Foundation9MachErrorV11errorDomainSSvpZMV', + '_$s10Foundation9MachErrorV11invalidHost6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV11invalidHost6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV11invalidName6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV11invalidName6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV11invalidTask6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV11invalidTask6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV11notReceiver6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV11notReceiver6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV11policyLimit6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV11policyLimit6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV11rightExists6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV11rightExists6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV12alreadyInSet6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV12alreadyInSet6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV12invalidRight6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV12invalidRight6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV12invalidValue6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV12invalidValue6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV12lockUnstable6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV12lockUnstable6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV12notDepressed6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV12notDepressed6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV12notSupported6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV12notSupported6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV12policyStatic6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV12policyStatic6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV13invalidLedger6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV13invalidLedger6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV13invalidObject6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV13invalidObject6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV13invalidPolicy6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV13invalidPolicy6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV13lockOwnedSelf6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV13lockOwnedSelf6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV13memoryFailure6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV13memoryFailure6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV13memoryPresent6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV13memoryPresent6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV14alreadyWaiting6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV14alreadyWaiting6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV14invalidAddress6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV14invalidAddress6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV15invalidArgument6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV15invalidArgument6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV15invalidSecurity6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV15invalidSecurity6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV15memoryDataMoved6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV15memoryDataMoved6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV16lockSetDestroyed6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV16lockSetDestroyed6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV16resourceShortage6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV16resourceShortage6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV17invalidCapability6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV17invalidCapability6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV17memoryRestartCopy6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV17memoryRestartCopy6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV17operationTimedOut6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV17operationTimedOut6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV17protectionFailure6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV17protectionFailure6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV17rpcContinueOrphan6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV17rpcContinueOrphan6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV18exceptionProtected6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV18exceptionProtected6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV18rpcTerminateOrphan6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV18rpcTerminateOrphan6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV18semaphoreDestroyed6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV18semaphoreDestroyed6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV19invalidProcessorSet6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV19invalidProcessorSet6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV19rpcServerTerminated6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV19rpcServerTerminated6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV20invalidMemoryControl6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV20invalidMemoryControl6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV22userReferencesOverflow6Darwin0bC4CodeOvgZ', - '_$s10Foundation9MachErrorV7aborted6Darwin0bC4CodeOvgZ', '_$s10Foundation9MachErrorV7failure6Darwin0bC4CodeOvgZ', - '_$s10Foundation9MachErrorV7noSpace6Darwin0bC4CodeOvgZ', '_$s10Foundation9MachErrorV7success6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV22userReferencesOverflow6Darwin0bC4CodeOvpZMV', + '_$s10Foundation9MachErrorV7aborted6Darwin0bC4CodeOvgZ', '_$s10Foundation9MachErrorV7aborted6Darwin0bC4CodeOvpZMV', + '_$s10Foundation9MachErrorV7failure6Darwin0bC4CodeOvgZ', '_$s10Foundation9MachErrorV7failure6Darwin0bC4CodeOvpZMV', + '_$s10Foundation9MachErrorV7noSpace6Darwin0bC4CodeOvgZ', '_$s10Foundation9MachErrorV7noSpace6Darwin0bC4CodeOvpZMV', + '_$s10Foundation9MachErrorV7success6Darwin0bC4CodeOvgZ', '_$s10Foundation9MachErrorV7success6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV8noAccess6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV8noAccess6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV8nodeDown6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV8nodeDown6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV8notInSet6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV8notInSet6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorV9hashValueSivg', '_$s10Foundation9MachErrorV9hashValueSivpMV', '_$s10Foundation9MachErrorV9lockOwned6Darwin0bC4CodeOvgZ', + '_$s10Foundation9MachErrorV9lockOwned6Darwin0bC4CodeOvpZMV', '_$s10Foundation9MachErrorVAA021_ObjectiveCBridgeableC0AAMc', '_$s10Foundation9MachErrorVAA021_ObjectiveCBridgeableC0AAWP', '_$s10Foundation9MachErrorVAA13CustomNSErrorAAMc', '_$s10Foundation9MachErrorVAA13CustomNSErrorAAWP', @@ -7985,27 +9766,34 @@ exports: '_$s10Foundation9MachErrorVSQAAMc', '_$s10Foundation9MachErrorVs0C0AAMc', '_$s10Foundation9PredicateV10expressionAA08StandardB10Expression_pSb6OutputAA0bE0PRts_XPvg', '_$s10Foundation9PredicateV10expressionAA08StandardB10Expression_pSb6OutputAA0bE0PRts_XPvpMV', + '_$s10Foundation9PredicateV11descriptionSSvg', '_$s10Foundation9PredicateV11descriptionSSvpMV', + '_$s10Foundation9PredicateV16debugDescriptionSSvg', '_$s10Foundation9PredicateV16debugDescriptionSSvpMV', '_$s10Foundation9PredicateV4from13configurationACyxxQp_QPGs7Decoder_p_AA0B20CodableConfigurationVtKcfC', '_$s10Foundation9PredicateV4fromACyxxQp_QPGs7Decoder_p_tKcfC', - '_$s10Foundation9PredicateV4trueACyxxQp_QPGvgZ', '_$s10Foundation9PredicateV5falseACyxxQp_QPGvgZ', + '_$s10Foundation9PredicateV4trueACyxxQp_QPGvgZ', '_$s10Foundation9PredicateV4trueACyxxQp_QPGvpZMV', + '_$s10Foundation9PredicateV5falseACyxxQp_QPGvgZ', '_$s10Foundation9PredicateV5falseACyxxQp_QPGvpZMV', '_$s10Foundation9PredicateV6encode2to13configurationys7Encoder_p_AA0B20CodableConfigurationVtKF', '_$s10Foundation9PredicateV6encode2toys7Encoder_p_tKF', '_$s10Foundation9PredicateV8evaluateySbxxQpKF', '_$s10Foundation9PredicateV8variableAA0B11ExpressionsO8VariableVy_xGxQp_tvg', '_$s10Foundation9PredicateVMa', '_$s10Foundation9PredicateVMn', '_$s10Foundation9PredicateVyACyxxQp_QPGAA08StandardB10Expression_pSb6OutputAA0bD0PRts_XPAA0B11ExpressionsO8VariableVy_xGxQpXEcfC', - '_$s10Foundation9PredicateVyACyxxQp_QPGqd__AA0B11ExpressionsO8VariableVy_xGxQpXEcAA08StandardB10ExpressionRd__Sb6OutputRtd__lufC', '_$s10Foundation9PredicateVyxxQp_QPGAA26DecodableWithConfigurationAAMc', '_$s10Foundation9PredicateVyxxQp_QPGAA26DecodableWithConfigurationAAWP', '_$s10Foundation9PredicateVyxxQp_QPGAA26EncodableWithConfigurationAAMc', '_$s10Foundation9PredicateVyxxQp_QPGAA26EncodableWithConfigurationAAWP', '_$s10Foundation9PredicateVyxxQp_QPGSEAAMc', '_$s10Foundation9PredicateVyxxQp_QPGSeAAMc', + '_$s10Foundation9PredicateVyxxQp_QPGs23CustomStringConvertibleAAMc', + '_$s10Foundation9PredicateVyxxQp_QPGs28CustomDebugStringConvertibleAAMc', '_$s10Foundation9SortOrderO2eeoiySbAC_ACtFZ', '_$s10Foundation9SortOrderO4fromACs7Decoder_p_tKcfC', '_$s10Foundation9SortOrderO4hash4intoys6HasherVz_tF', '_$s10Foundation9SortOrderO6encode2toys7Encoder_p_tKF', '_$s10Foundation9SortOrderO9hashValueSivg', '_$s10Foundation9SortOrderO9hashValueSivpMV', '_$s10Foundation9SortOrderOMa', '_$s10Foundation9SortOrderOMn', '_$s10Foundation9SortOrderON', '_$s10Foundation9SortOrderOSEAAMc', '_$s10Foundation9SortOrderOSHAAMc', '_$s10Foundation9SortOrderOSQAAMc', - '_$s10Foundation9SortOrderOSeAAMc', '_$s10ParseInput10Foundation0A8StrategyPTl', + '_$s10Foundation9SortOrderOSeAAMc', '_$s10Foundation9UIDNAHookMp', + '_$s10Foundation9UIDNAHookP6decodeySSSgqd__SyRd__lFZTj', '_$s10Foundation9UIDNAHookP6decodeySSSgqd__SyRd__lFZTq', + '_$s10Foundation9UIDNAHookP6encodeySSSgqd__SyRd__lFZTj', '_$s10Foundation9UIDNAHookP6encodeySSSgqd__SyRd__lFZTq', + '_$s10Foundation9UIDNAHookTL', '_$s10ParseInput10Foundation0A8StrategyPTl', '_$s10_ErrorType10Foundation01_A12CodeProtocolPTl', '_$s11FormatInput10Foundation0A5StylePTl', '_$s11ParseOutput10Foundation0A8StrategyPTl', '_$s12CoreGraphics7CGFloatV10Foundation18_FormatSpecifiableADMc', '_$s12CoreGraphics7CGFloatV10Foundation18_FormatSpecifiableADWP', @@ -8044,9 +9832,10 @@ exports: '_$s6Darwin13MachErrorCodeO10Foundation01_cD8ProtocolADWP', '_$s6Darwin14POSIXErrorCodeO10Foundation06_ErrorC8ProtocolADMc', '_$s6Darwin14POSIXErrorCodeO10Foundation06_ErrorC8ProtocolADWP', - '_$s6Output10Foundation19PredicateExpressionPTl', '_$s7Regions10Foundation12DataProtocolPTl', - '_$s8Compared10Foundation14SortComparatorPTl', '_$s8Dispatch0A4DataV10Foundation0B8ProtocolADMc', - '_$s8Dispatch0A4DataV10Foundation0B8ProtocolADWP', '_$s8Dispatch0A4DataV10FoundationE6RegionV10startIndexSivg', + '_$s6Output10Foundation19PredicateExpressionPTl', '_$s6System8FilePathV01_A11_FoundationEyACSg0D03URLVcfC', + '_$s7Regions10Foundation12DataProtocolPTl', '_$s8Compared10Foundation14SortComparatorPTl', + '_$s8Dispatch0A4DataV10Foundation0B8ProtocolADMc', '_$s8Dispatch0A4DataV10Foundation0B8ProtocolADWP', + '_$s8Dispatch0A4DataV10FoundationE6RegionV10startIndexSivg', '_$s8Dispatch0A4DataV10FoundationE6RegionV10startIndexSivpMV', '_$s8Dispatch0A4DataV10FoundationE6RegionV15withUnsafeBytesyxxSWKXEKlF', '_$s8Dispatch0A4DataV10FoundationE6RegionV7regionss15CollectionOfOneVyAFGvg', @@ -8076,12 +9865,11 @@ exports: '_$sSD10FoundationE26_forceBridgeFromObjectiveC_6resultySo12NSDictionaryC_SDyxq_GSgztFZ', '_$sSD10FoundationE34_conditionallyBridgeFromObjectiveC_6resultSbSo12NSDictionaryC_SDyxq_GSgztFZ', '_$sSD10FoundationE36_unconditionallyBridgeFromObjectiveCySDyxq_GSo12NSDictionaryCSgFZ', - '_$sSD10FoundationSo21NSAttributedStringKeyaRszypRs_rlE_13includingOnlySDyACypGAA18AttributeContainerV_qd__mtKcAA0G5ScopeRd__lufC', - '_$sSD10FoundationSo21NSAttributedStringKeyaRszypRs_rlE_13includingOnlySDyACypGAA18AttributeContainerV_s0D4PathCyAA0G6ScopesOqd__mGtKcAA0G5ScopeRd__lufC', '_$sSD10FoundationSo21NSAttributedStringKeyaRszypRs_rlE_9includingSDyACypGAA18AttributeContainerV_qd__mtKcAA0F5ScopeRd__lufC', '_$sSD10FoundationSo21NSAttributedStringKeyaRszypRs_rlE_9includingSDyACypGAA18AttributeContainerV_s0D4PathCyAA0F6ScopesOqd__mGtKcAA0F5ScopeRd__lufC', '_$sSD10FoundationSo21NSAttributedStringKeyaRszypRs_rlEySDyACypGAA18AttributeContainerVcfC', '_$sSDyxq_Gs21_ObjectiveCBridgeable10FoundationMc', '_$sSDyxq_Gs7CVarArg10FoundationMc', + '_$sSK10FoundationE6_range2of8anchored9backwardsSny5IndexQzGSgqd___S2btSKRd__SQ7ElementRpzAJQyd__AKRSlF', '_$sSM10FoundationSkRzrlE4sort5usingyqd___tAA14SortComparatorRd__8ComparedQyd__7ElementSTRtzlF', '_$sSM10FoundationSkRzrlE4sort5usingyqd___tSTRd__AA14SortComparatorRd_0_7ElementQyd__Rsd_0_8ComparedQyd_0_AESTRtzr0_lF', '_$sSR10Foundations5UInt8VRszlE15withUnsafeBytesyqd__qd__SWKXEKlF', @@ -8174,6 +9962,7 @@ exports: '_$sSS10FoundationE17LocalizationValueVs33ExpressibleByUnicodeScalarLiteralAAMc', '_$sSS10FoundationE17LocalizationValueVs43ExpressibleByExtendedGraphemeClusterLiteralAAMc', '_$sSS10FoundationE17LocalizationValueVyACSScfC', '_$sSS10FoundationE18StandardComparatorV09localizedB0ACvgZ', + '_$sSS10FoundationE18StandardComparatorV09localizedB0ACvpZMV', '_$sSS10FoundationE18StandardComparatorV2eeoiySbAC_ACtFZ', '_$sSS10FoundationE18StandardComparatorV4fromACs7Decoder_p_tKcfC', '_$sSS10FoundationE18StandardComparatorV4hash4intoys6HasherVz_tF', @@ -8183,9 +9972,10 @@ exports: '_$sSS10FoundationE18StandardComparatorV5orderAA9SortOrderOvs', '_$sSS10FoundationE18StandardComparatorV6encode2toys7Encoder_p_tKF', '_$sSS10FoundationE18StandardComparatorV7compareySo18NSComparisonResultVSS_SStF', - '_$sSS10FoundationE18StandardComparatorV7lexicalACvgZ', '_$sSS10FoundationE18StandardComparatorV9hashValueSivg', - '_$sSS10FoundationE18StandardComparatorV9hashValueSivpMV', + '_$sSS10FoundationE18StandardComparatorV7lexicalACvgZ', '_$sSS10FoundationE18StandardComparatorV7lexicalACvpZMV', + '_$sSS10FoundationE18StandardComparatorV9hashValueSivg', '_$sSS10FoundationE18StandardComparatorV9hashValueSivpMV', '_$sSS10FoundationE18StandardComparatorV9localizedACvgZ', + '_$sSS10FoundationE18StandardComparatorV9localizedACvpZMV', '_$sSS10FoundationE18StandardComparatorVAA04SortC0AAMc', '_$sSS10FoundationE18StandardComparatorVAA04SortC0AAWP', '_$sSS10FoundationE18StandardComparatorVMa', '_$sSS10FoundationE18StandardComparatorVMn', '_$sSS10FoundationE18StandardComparatorVN', '_$sSS10FoundationE18StandardComparatorVSEAAMc', @@ -8220,39 +10010,59 @@ exports: '_$sSS10FoundationE19LocalizationOptionsV20_pluralizationNumberAC014_PluralizationE0OSgvs', '_$sSS10FoundationE19LocalizationOptionsVACycfC', '_$sSS10FoundationE19LocalizationOptionsVMa', '_$sSS10FoundationE19LocalizationOptionsVMn', '_$sSS10FoundationE19LocalizationOptionsVN', - '_$sSS10FoundationE19_bridgeToObjectiveCSo8NSStringCyF', '_$sSS10FoundationE20utf16CodeUnitsNoCopy5count12freeWhenDoneSSSPys6UInt16VG_SiSbtcfC', + '_$sSS10FoundationE19_bridgeToObjectiveCSo8NSStringCyF', '_$sSS10FoundationE19_trimmingWhitespaceSSyF', + '_$sSS10FoundationE20utf16CodeUnitsNoCopy5count12freeWhenDoneSSSPys6UInt16VG_SiSbtcfC', '_$sSS10FoundationE22defaultCStringEncodingSSAAE0D0VvgZ', + '_$sSS10FoundationE22defaultCStringEncodingSSAAE0D0VvpZMV', '_$sSS10FoundationE24availableStringEncodingsSaySSAAE8EncodingVGvgZ', + '_$sSS10FoundationE24availableStringEncodingsSaySSAAE8EncodingVGvpZMV', '_$sSS10FoundationE25localizedStringWithFormatyS2S_s7CVarArg_pdtFZ', '_$sSS10FoundationE26_forceBridgeFromObjectiveC_6resultySo8NSStringC_SSSgztFZ', + '_$sSS10FoundationE28withFileSystemRepresentationyxxSPys4Int8VGSgKXEKlF', '_$sSS10FoundationE34_conditionallyBridgeFromObjectiveC_6resultSbSo8NSStringC_SSSgztFZ', + '_$sSS10FoundationE35withMutableFileSystemRepresentationyxxSpys4Int8VGSgKXEKlF', '_$sSS10FoundationE36_unconditionallyBridgeFromObjectiveCySSSo8NSStringCSgFZ', + '_$sSS10FoundationE4data5using20allowLossyConversionAA4DataVSgSSAAE8EncodingV_SbtF', '_$sSS10FoundationE4data8encodingSSSgAA4DataVh_SSAAE8EncodingVtcfC', '_$sSS10FoundationE5bytes8encodingSSSgxh_SSAAE8EncodingVtcSTRzs5UInt8V7ElementRtzlufC', - '_$sSS10FoundationE6format6locale9argumentsS2Sh_AA6LocaleVSghSays7CVarArg_pGhtcfC', + '_$sSS10FoundationE6_utf165countSSSgSPys6UInt16VG_SitcfC', + '_$sSS10FoundationE6_utf165countSSSgSrys6UInt16VG_SitcfC', + '_$sSS10FoundationE6_utf16SSSgSRys6UInt16VG_tcfC', '_$sSS10FoundationE6format6locale9argumentsS2Sh_AA6LocaleVSghSays7CVarArg_pGhtcfC', '_$sSS10FoundationE6format6locale_S2Sh_AA6LocaleVSghs7CVarArg_pdtcfC', '_$sSS10FoundationE6format9argumentsS2Sh_Says7CVarArg_pGhtcfC', '_$sSS10FoundationE6format_S2Sh_s7CVarArg_pdtcfC', '_$sSS10FoundationE7cString8encodingSSSgSPys4Int8VG_SSAAE8EncodingVtcfC', - '_$sSS10FoundationE8EncodingV10macOSRomanACvgZ', '_$sSS10FoundationE8EncodingV11descriptionSSvg', - '_$sSS10FoundationE8EncodingV11descriptionSSvpMV', '_$sSS10FoundationE8EncodingV11japaneseEUCACvgZ', - '_$sSS10FoundationE8EncodingV13nonLossyASCIIACvgZ', '_$sSS10FoundationE8EncodingV13windowsCP1250ACvgZ', - '_$sSS10FoundationE8EncodingV13windowsCP1251ACvgZ', '_$sSS10FoundationE8EncodingV13windowsCP1252ACvgZ', - '_$sSS10FoundationE8EncodingV13windowsCP1253ACvgZ', '_$sSS10FoundationE8EncodingV13windowsCP1254ACvgZ', - '_$sSS10FoundationE8EncodingV14utf16BigEndianACvgZ', '_$sSS10FoundationE8EncodingV14utf32BigEndianACvgZ', - '_$sSS10FoundationE8EncodingV17utf16LittleEndianACvgZ', '_$sSS10FoundationE8EncodingV17utf32LittleEndianACvgZ', + '_$sSS10FoundationE8EncodingV10macOSRomanACvgZ', '_$sSS10FoundationE8EncodingV10macOSRomanACvpZMV', + '_$sSS10FoundationE8EncodingV11descriptionSSvg', '_$sSS10FoundationE8EncodingV11descriptionSSvpMV', + '_$sSS10FoundationE8EncodingV11japaneseEUCACvgZ', '_$sSS10FoundationE8EncodingV11japaneseEUCACvpZMV', + '_$sSS10FoundationE8EncodingV13nonLossyASCIIACvgZ', '_$sSS10FoundationE8EncodingV13nonLossyASCIIACvpZMV', + '_$sSS10FoundationE8EncodingV13windowsCP1250ACvgZ', '_$sSS10FoundationE8EncodingV13windowsCP1250ACvpZMV', + '_$sSS10FoundationE8EncodingV13windowsCP1251ACvgZ', '_$sSS10FoundationE8EncodingV13windowsCP1251ACvpZMV', + '_$sSS10FoundationE8EncodingV13windowsCP1252ACvgZ', '_$sSS10FoundationE8EncodingV13windowsCP1252ACvpZMV', + '_$sSS10FoundationE8EncodingV13windowsCP1253ACvgZ', '_$sSS10FoundationE8EncodingV13windowsCP1253ACvpZMV', + '_$sSS10FoundationE8EncodingV13windowsCP1254ACvgZ', '_$sSS10FoundationE8EncodingV13windowsCP1254ACvpZMV', + '_$sSS10FoundationE8EncodingV14utf16BigEndianACvgZ', '_$sSS10FoundationE8EncodingV14utf16BigEndianACvpZMV', + '_$sSS10FoundationE8EncodingV14utf32BigEndianACvgZ', '_$sSS10FoundationE8EncodingV14utf32BigEndianACvpZMV', + '_$sSS10FoundationE8EncodingV17utf16LittleEndianACvgZ', '_$sSS10FoundationE8EncodingV17utf16LittleEndianACvpZMV', + '_$sSS10FoundationE8EncodingV17utf32LittleEndianACvgZ', '_$sSS10FoundationE8EncodingV17utf32LittleEndianACvpZMV', '_$sSS10FoundationE8EncodingV2eeoiySbAC_ACtFZ', '_$sSS10FoundationE8EncodingV4utf8ACvgZ', - '_$sSS10FoundationE8EncodingV5asciiACvgZ', '_$sSS10FoundationE8EncodingV5utf16ACvgZ', - '_$sSS10FoundationE8EncodingV5utf32ACvgZ', '_$sSS10FoundationE8EncodingV6symbolACvgZ', - '_$sSS10FoundationE8EncodingV7unicodeACvgZ', '_$sSS10FoundationE8EncodingV8nextstepACvgZ', - '_$sSS10FoundationE8EncodingV8rawValueACSu_tcfC', '_$sSS10FoundationE8EncodingV8rawValueSuvM', - '_$sSS10FoundationE8EncodingV8rawValueSuvg', '_$sSS10FoundationE8EncodingV8rawValueSuvpMV', - '_$sSS10FoundationE8EncodingV8rawValueSuvs', '_$sSS10FoundationE8EncodingV8shiftJISACvgZ', + '_$sSS10FoundationE8EncodingV4utf8ACvpZMV', '_$sSS10FoundationE8EncodingV5asciiACvgZ', + '_$sSS10FoundationE8EncodingV5asciiACvpZMV', '_$sSS10FoundationE8EncodingV5utf16ACvgZ', + '_$sSS10FoundationE8EncodingV5utf16ACvpZMV', '_$sSS10FoundationE8EncodingV5utf32ACvgZ', + '_$sSS10FoundationE8EncodingV5utf32ACvpZMV', '_$sSS10FoundationE8EncodingV6symbolACvgZ', + '_$sSS10FoundationE8EncodingV6symbolACvpZMV', '_$sSS10FoundationE8EncodingV7unicodeACvgZ', + '_$sSS10FoundationE8EncodingV7unicodeACvpZMV', '_$sSS10FoundationE8EncodingV8nextstepACvgZ', + '_$sSS10FoundationE8EncodingV8nextstepACvpZMV', '_$sSS10FoundationE8EncodingV8rawValueACSu_tcfC', + '_$sSS10FoundationE8EncodingV8rawValueSuvM', '_$sSS10FoundationE8EncodingV8rawValueSuvg', + '_$sSS10FoundationE8EncodingV8rawValueSuvpMV', '_$sSS10FoundationE8EncodingV8rawValueSuvs', + '_$sSS10FoundationE8EncodingV8shiftJISACvgZ', '_$sSS10FoundationE8EncodingV8shiftJISACvpZMV', '_$sSS10FoundationE8EncodingV9hashValueSivg', '_$sSS10FoundationE8EncodingV9hashValueSivpMV', - '_$sSS10FoundationE8EncodingV9iso2022JPACvgZ', '_$sSS10FoundationE8EncodingV9isoLatin1ACvgZ', - '_$sSS10FoundationE8EncodingV9isoLatin2ACvgZ', '_$sSS10FoundationE8EncodingVMa', - '_$sSS10FoundationE8EncodingVMn', '_$sSS10FoundationE8EncodingVN', - '_$sSS10FoundationE8EncodingVSHAAMc', '_$sSS10FoundationE8EncodingVSQAAMc', - '_$sSS10FoundationE8EncodingVSYAAMc', '_$sSS10FoundationE8EncodingVs23CustomStringConvertibleAAMc', + '_$sSS10FoundationE8EncodingV9iso2022JPACvgZ', '_$sSS10FoundationE8EncodingV9iso2022JPACvpZMV', + '_$sSS10FoundationE8EncodingV9isoLatin1ACvgZ', '_$sSS10FoundationE8EncodingV9isoLatin1ACvpZMV', + '_$sSS10FoundationE8EncodingV9isoLatin2ACvgZ', '_$sSS10FoundationE8EncodingV9isoLatin2ACvpZMV', + '_$sSS10FoundationE8EncodingVMa', '_$sSS10FoundationE8EncodingVMn', + '_$sSS10FoundationE8EncodingVN', '_$sSS10FoundationE8EncodingVSHAAMc', + '_$sSS10FoundationE8EncodingVSQAAMc', '_$sSS10FoundationE8EncodingVSYAAMc', + '_$sSS10FoundationE8EncodingVs23CustomStringConvertibleAAMc', '_$sSS10FoundationE9localized12defaultValue5table6bundle6locale7commentSSs12StaticStringV_SSAAE012LocalizationD0VSSSgSo8NSBundleCSgAA6LocaleVAISgtcfC', '_$sSS10FoundationE9localized12defaultValue7options5table6bundle6locale7commentSSs12StaticStringV_SSAAE012LocalizationD0VSSAAE0L7OptionsVSSSgSo8NSBundleCSgAA6LocaleVAJSgtcfC', '_$sSS10FoundationE9localized5table6bundle12localization6locale7commentS2SAAE17LocalizationValueV_SSSgSo8NSBundleCSgAjA6LocaleVs12StaticStringVSgtcfC', @@ -8401,6 +10211,8 @@ exports: '_$sSo12NSExpressionC10FoundationE10forKeyPathABs0dE0Cyxq_G_tcr0_lufc', '_$sSo12NSExpressionC10FoundationE6format_ABSSh_s7CVarArg_pdtcfC', '_$sSo12NSExpressionC10FoundationE6format_ABSSh_s7CVarArg_pdtcfc', + '_$sSo12NSExpressionC10FoundationEyABSgAC10ExpressionVyx_QPq_GcSo8NSObjectCRbzr0_lufC', + '_$sSo12NSExpressionC10FoundationEyABSgAC10ExpressionVyx_QPq_GcSo8NSObjectCRbzr0_lufc', '_$sSo12NSFileHandleC10FoundationE10AsyncBytesV04makeD8IteratorAE0G0VyF', '_$sSo12NSFileHandleC10FoundationE10AsyncBytesV8IteratorV4nexts5UInt8VSgyYaKF', '_$sSo12NSFileHandleC10FoundationE10AsyncBytesV8IteratorV4nexts5UInt8VSgyYaKFTu', @@ -8503,8 +10315,7 @@ exports: '_$sSo15NSMutableStringC10FoundationE12appendFormatyySo8NSStringC_s7CVarArg_pdtF', '_$sSo15NSURLComponentsC10FoundationE20_toCustomAnyHashables0eF0VSgyF', '_$sSo15NSURLComponentsCs35_HasCustomAnyHashableRepresentation10FoundationMc', - '_$sSo15UATimeUnitStyleVSE10FoundationMc', '_$sSo15UATimeUnitStyleVSH10FoundationMc', - '_$sSo15UATimeUnitStyleVSe10FoundationMc', '_$sSo16NSDateComponentsC10FoundationE20_toCustomAnyHashables0fG0VSgyF', + '_$sSo16NSDateComponentsC10FoundationE20_toCustomAnyHashables0fG0VSgyF', '_$sSo16NSDateComponentsCs35_HasCustomAnyHashableRepresentation10FoundationMc', '_$sSo16NSOperationQueueC10FoundationE16SchedulerOptionsVMa', '_$sSo16NSOperationQueueC10FoundationE16SchedulerOptionsVMn', @@ -8611,10 +10422,6 @@ exports: '_$sSo18NSAttributedStringC10FoundationE8markdown7options7baseURLABSS_AC010AttributedB0V22MarkdownParsingOptionsVAC0G0VSgtKcfc', '_$sSo18NSAttributedStringC10FoundationE8markdown7options7baseURLAbC4DataV_AC010AttributedB0V22MarkdownParsingOptionsVAC0G0VSgtKcfC', '_$sSo18NSAttributedStringC10FoundationE8markdown7options7baseURLAbC4DataV_AC010AttributedB0V22MarkdownParsingOptionsVAC0G0VSgtKcfc', - '_$sSo18NSAttributedStringC10FoundationE_13includingOnlyAbC010AttributedB0V_s7KeyPathCyAC15AttributeScopesOxmGtKcAC0I5ScopeRzlufC', - '_$sSo18NSAttributedStringC10FoundationE_13includingOnlyAbC010AttributedB0V_s7KeyPathCyAC15AttributeScopesOxmGtKcAC0I5ScopeRzlufc', - '_$sSo18NSAttributedStringC10FoundationE_13includingOnlyAbC010AttributedB0V_xmtKcAC14AttributeScopeRzlufC', - '_$sSo18NSAttributedStringC10FoundationE_13includingOnlyAbC010AttributedB0V_xmtKcAC14AttributeScopeRzlufc', '_$sSo18NSAttributedStringC10FoundationE_9includingAbC010AttributedB0V_s7KeyPathCyAC15AttributeScopesOxmGtKcAC0H5ScopeRzlufC', '_$sSo18NSAttributedStringC10FoundationE_9includingAbC010AttributedB0V_s7KeyPathCyAC15AttributeScopesOxmGtKcAC0H5ScopeRzlufc', '_$sSo18NSAttributedStringC10FoundationE_9includingAbC010AttributedB0V_xmtKcAC14AttributeScopeRzlufC', @@ -8623,11 +10430,15 @@ exports: '_$sSo18NSAttributedStringC10FoundationEyAbC010AttributedB0Vcfc', '_$sSo18NSComparisonResultV10FoundationE4fromABs7Decoder_p_tKcfC', '_$sSo18NSComparisonResultV10FoundationE6encode2toys7Encoder_p_tKF', + '_$sSo18NSComparisonResultV10FoundationE9withOrderyAbC04SortE0OF', '_$sSo18NSComparisonResultVSE10FoundationMc', '_$sSo18NSComparisonResultVSe10FoundationMc', '_$sSo18NSTextCheckingTypeV10FoundationE14allCustomTypesABvgZ', + '_$sSo18NSTextCheckingTypeV10FoundationE14allCustomTypesABvpZMV', '_$sSo18NSTextCheckingTypeV10FoundationE14allSystemTypesABvgZ', - '_$sSo18NSTextCheckingTypeV10FoundationE8allTypesABvgZ', '_$sSo19NSMutableDictionaryC10FoundationEyypSgypcig', - '_$sSo19NSMutableDictionaryC10FoundationEyypSgypcis', '_$sSo20NSNotificationCenterC10FoundationE13NotificationsC17makeAsyncIteratorAE0G0VyF', + '_$sSo18NSTextCheckingTypeV10FoundationE14allSystemTypesABvpZMV', + '_$sSo18NSTextCheckingTypeV10FoundationE8allTypesABvgZ', '_$sSo18NSTextCheckingTypeV10FoundationE8allTypesABvpZMV', + '_$sSo19NSMutableDictionaryC10FoundationEyypSgypcig', '_$sSo19NSMutableDictionaryC10FoundationEyypSgypcis', + '_$sSo20NSNotificationCenterC10FoundationE13NotificationsC17makeAsyncIteratorAE0G0VyF', '_$sSo20NSNotificationCenterC10FoundationE13NotificationsC8IteratorV4nextAC12NotificationVSgyYaF', '_$sSo20NSNotificationCenterC10FoundationE13NotificationsC8IteratorV4nextAC12NotificationVSgyYaFTu', '_$sSo20NSNotificationCenterC10FoundationE13NotificationsC8IteratorVMa', @@ -8668,9 +10479,8 @@ exports: '_$sSo25NSURLSessionWebSocketTaskC10FoundationE7MessageOMn', '_$sSo25NSURLSessionWebSocketTaskC10FoundationE7MessageON', '_$sSo25NSURLSessionWebSocketTaskC10FoundationE7receive17completionHandleryys6ResultOyAbCE7MessageOs5Error_pGc_tF', - '_$sSo26NSISO8601DateFormatOptionsVSH10FoundationMc', '_$sSo26NSInlinePresentationIntentVSE10FoundationMc', - '_$sSo26NSInlinePresentationIntentVSH10FoundationMc', '_$sSo26NSInlinePresentationIntentVSe10FoundationMc', - '_$sSo34NSURLSessionTaskTransactionMetricsC10FoundationE10remotePortSiSgvg', + '_$sSo26NSInlinePresentationIntentVSE10FoundationMc', '_$sSo26NSInlinePresentationIntentVSH10FoundationMc', + '_$sSo26NSInlinePresentationIntentVSe10FoundationMc', '_$sSo34NSURLSessionTaskTransactionMetricsC10FoundationE10remotePortSiSgvg', '_$sSo34NSURLSessionTaskTransactionMetricsC10FoundationE10remotePortSiSgvpMV', '_$sSo34NSURLSessionTaskTransactionMetricsC10FoundationE24negotiatedTLSCipherSuiteSo17tls_ciphersuite_tVSgvg', '_$sSo34NSURLSessionTaskTransactionMetricsC10FoundationE24negotiatedTLSCipherSuiteSo17tls_ciphersuite_tVSgvpMV', @@ -8774,7 +10584,8 @@ exports: '_$sSo8CGVectorV10FoundationE26_forceBridgeFromObjectiveC_6resultySo7NSValueC_ABSgztFZ', '_$sSo8CGVectorV10FoundationE34_conditionallyBridgeFromObjectiveC_6resultSbSo7NSValueC_ABSgztFZ', '_$sSo8CGVectorV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ', - '_$sSo8CGVectorVs21_ObjectiveCBridgeable10FoundationMc', '_$sSo8NSLocaleC10FoundationE20_toCustomAnyHashables0eF0VSgyF', + '_$sSo8CGVectorVs21_ObjectiveCBridgeable10FoundationMc', '_$sSo8NSBundleC10FoundationE15localizedString6forKey5value5table13localizationsS2S_SSSgAISayAC6LocaleV8LanguageVGtF', + '_$sSo8NSLocaleC10FoundationE20_toCustomAnyHashables0eF0VSgyF', '_$sSo8NSLocaleCs35_HasCustomAnyHashableRepresentation10FoundationMc', '_$sSo8NSNumberC10FoundationE12floatLiteralABSd_tcfC', '_$sSo8NSNumberC10FoundationE12floatLiteralABSd_tcfc', '_$sSo8NSNumberC10FoundationE14booleanLiteralABSb_tcfC', '_$sSo8NSNumberC10FoundationE14booleanLiteralABSb_tcfc', @@ -8964,6 +10775,7 @@ exports: '_$sSo9NSDecimala10FoundationE11FormatStyleV8CurrencyV6localeyAgC6LocaleVF', '_$sSo9NSDecimala10FoundationE11FormatStyleV8CurrencyV7rounded4rule9incrementAGs25FloatingPointRoundingRuleO_SiSgtF', '_$sSo9NSDecimala10FoundationE11FormatStyleV8CurrencyV8groupingyAgC06NumbercD13ConfigurationO8GroupingVF', + '_$sSo9NSDecimala10FoundationE11FormatStyleV8CurrencyV8notationyAgC06NumbercD13ConfigurationO8NotationVF', '_$sSo9NSDecimala10FoundationE11FormatStyleV8CurrencyV9consuming_10startingAt2inSS5IndexV10upperBound_AB6outputtSgSS_ALSnyALGtKF', '_$sSo9NSDecimala10FoundationE11FormatStyleV8CurrencyV9hashValueSivg', '_$sSo9NSDecimala10FoundationE11FormatStyleV8CurrencyV9hashValueSivpMV', @@ -8997,8 +10809,9 @@ exports: '_$sSo9NSDecimala10FoundationE11isSignMinusSbvpMV', '_$sSo9NSDecimala10FoundationE11isSignalingSbvg', '_$sSo9NSDecimala10FoundationE11isSignalingSbvpMV', '_$sSo9NSDecimala10FoundationE11isSubnormalSbvg', '_$sSo9NSDecimala10FoundationE11isSubnormalSbvpMV', '_$sSo9NSDecimala10FoundationE11significandABvg', - '_$sSo9NSDecimala10FoundationE11significandABvpMV', '_$sSo9NSDecimala10FoundationE12floatLiteralABSd_tcfC', - '_$sSo9NSDecimala10FoundationE12signalingNaNABvgZ', '_$sSo9NSDecimala10FoundationE13ParseStrategyV11formatStylexvM', + '_$sSo9NSDecimala10FoundationE11significandABvpMV', '_$sSo9NSDecimala10FoundationE12__zeroForABIABvpZMV', + '_$sSo9NSDecimala10FoundationE12floatLiteralABSd_tcfC', '_$sSo9NSDecimala10FoundationE12signalingNaNABvgZ', + '_$sSo9NSDecimala10FoundationE12signalingNaNABvpZMV', '_$sSo9NSDecimala10FoundationE13ParseStrategyV11formatStylexvM', '_$sSo9NSDecimala10FoundationE13ParseStrategyV11formatStylexvg', '_$sSo9NSDecimala10FoundationE13ParseStrategyV11formatStylexvpMV', '_$sSo9NSDecimala10FoundationE13ParseStrategyV11formatStylexvs', @@ -9033,24 +10846,29 @@ exports: '_$sSo9NSDecimala10FoundationE1doiyA2B_ABtFZ', '_$sSo9NSDecimala10FoundationE1loiySbAB_ABtFZ', '_$sSo9NSDecimala10FoundationE1moiyA2B_ABtFZ', '_$sSo9NSDecimala10FoundationE1poiyA2B_ABtFZ', '_$sSo9NSDecimala10FoundationE1soiyA2B_ABtFZ', '_$sSo9NSDecimala10FoundationE20leastFiniteMagnitudeABvgZ', + '_$sSo9NSDecimala10FoundationE20leastFiniteMagnitudeABvpZMV', '_$sSo9NSDecimala10FoundationE20leastNormalMagnitudeABvgZ', + '_$sSo9NSDecimala10FoundationE20leastNormalMagnitudeABvpZMV', '_$sSo9NSDecimala10FoundationE21leastNonzeroMagnitudeABvgZ', + '_$sSo9NSDecimala10FoundationE21leastNonzeroMagnitudeABvpZMV', '_$sSo9NSDecimala10FoundationE23formTruncatingRemainder10dividingByyAB_tF', '_$sSo9NSDecimala10FoundationE23greatestFiniteMagnitudeABvgZ', + '_$sSo9NSDecimala10FoundationE23greatestFiniteMagnitudeABvpZMV', '_$sSo9NSDecimala10FoundationE26_forceBridgeFromObjectiveC_6resultySo0A6NumberC_ABSgztFZ', '_$sSo9NSDecimala10FoundationE2deoiyyABz_ABtFZ', '_$sSo9NSDecimala10FoundationE2eeoiySbAB_ABtFZ', '_$sSo9NSDecimala10FoundationE2meoiyyABz_ABtFZ', '_$sSo9NSDecimala10FoundationE2peoiyyABz_ABtFZ', - '_$sSo9NSDecimala10FoundationE2piABvgZ', '_$sSo9NSDecimala10FoundationE2seoiyyABz_ABtFZ', - '_$sSo9NSDecimala10FoundationE34_conditionallyBridgeFromObjectiveC_6resultSbSo0A6NumberC_ABSgztFZ', + '_$sSo9NSDecimala10FoundationE2piABvgZ', '_$sSo9NSDecimala10FoundationE2piABvpZMV', + '_$sSo9NSDecimala10FoundationE2seoiyyABz_ABtFZ', '_$sSo9NSDecimala10FoundationE34_conditionallyBridgeFromObjectiveC_6resultSbSo0A6NumberC_ABSgztFZ', '_$sSo9NSDecimala10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo0A6NumberCSgFZ', '_$sSo9NSDecimala10FoundationE3addyyABF', '_$sSo9NSDecimala10FoundationE3nanABvgZ', - '_$sSo9NSDecimala10FoundationE3ulpABvg', '_$sSo9NSDecimala10FoundationE3ulpABvpMV', - '_$sSo9NSDecimala10FoundationE4fromABs7Decoder_p_tKcfC', '_$sSo9NSDecimala10FoundationE4hash4intoys6HasherVz_tF', - '_$sSo9NSDecimala10FoundationE4sign8exponent11significandABs17FloatingPointSignO_SiABtcfC', + '_$sSo9NSDecimala10FoundationE3nanABvpZMV', '_$sSo9NSDecimala10FoundationE3ulpABvg', + '_$sSo9NSDecimala10FoundationE3ulpABvpMV', '_$sSo9NSDecimala10FoundationE4fromABs7Decoder_p_tKcfC', + '_$sSo9NSDecimala10FoundationE4hash4intoys6HasherVz_tF', '_$sSo9NSDecimala10FoundationE4sign8exponent11significandABs17FloatingPointSignO_SiABtcfC', '_$sSo9NSDecimala10FoundationE4signs17FloatingPointSignOvg', '_$sSo9NSDecimala10FoundationE4signs17FloatingPointSignOvpMV', - '_$sSo9NSDecimala10FoundationE5isNaNSbvg', '_$sSo9NSDecimala10FoundationE5isNaNSbvpMV', - '_$sSo9NSDecimala10FoundationE5radixSivgZ', '_$sSo9NSDecimala10FoundationE6divide2byyAB_tF', + '_$sSo9NSDecimala10FoundationE4zeroABvgZ', '_$sSo9NSDecimala10FoundationE5isNaNSbvg', + '_$sSo9NSDecimala10FoundationE5isNaNSbvpMV', '_$sSo9NSDecimala10FoundationE5radixSivgZ', + '_$sSo9NSDecimala10FoundationE5radixSivpZMV', '_$sSo9NSDecimala10FoundationE6divide2byyAB_tF', '_$sSo9NSDecimala10FoundationE6encode2toys7Encoder_p_tKF', '_$sSo9NSDecimala10FoundationE6isLess4thanSbAB_tF', '_$sSo9NSDecimala10FoundationE6isZeroSbvg', '_$sSo9NSDecimala10FoundationE6isZeroSbvpMV', '_$sSo9NSDecimala10FoundationE6negateyyF', @@ -9060,11 +10878,12 @@ exports: '_$sSo9NSDecimala10FoundationE7exactlyABSgx_tcSzRzlufC', '_$sSo9NSDecimala10FoundationE7isEqual2toSbAB_tF', '_$sSo9NSDecimala10FoundationE8advanced2byA2B_tF', '_$sSo9NSDecimala10FoundationE8distance2toA2B_tF', '_$sSo9NSDecimala10FoundationE8exponentSivg', '_$sSo9NSDecimala10FoundationE8exponentSivpMV', - '_$sSo9NSDecimala10FoundationE8infinityABvgZ', '_$sSo9NSDecimala10FoundationE8isFiniteSbvg', - '_$sSo9NSDecimala10FoundationE8isFiniteSbvpMV', '_$sSo9NSDecimala10FoundationE8isNormalSbvg', - '_$sSo9NSDecimala10FoundationE8isNormalSbvpMV', '_$sSo9NSDecimala10FoundationE8multiply2byyAB_tF', - '_$sSo9NSDecimala10FoundationE8nextDownABvg', '_$sSo9NSDecimala10FoundationE8nextDownABvpMV', - '_$sSo9NSDecimala10FoundationE8quietNaNABvgZ', '_$sSo9NSDecimala10FoundationE8subtractyyABF', + '_$sSo9NSDecimala10FoundationE8infinityABvgZ', '_$sSo9NSDecimala10FoundationE8infinityABvpZMV', + '_$sSo9NSDecimala10FoundationE8isFiniteSbvg', '_$sSo9NSDecimala10FoundationE8isFiniteSbvpMV', + '_$sSo9NSDecimala10FoundationE8isNormalSbvg', '_$sSo9NSDecimala10FoundationE8isNormalSbvpMV', + '_$sSo9NSDecimala10FoundationE8multiply2byyAB_tF', '_$sSo9NSDecimala10FoundationE8nextDownABvg', + '_$sSo9NSDecimala10FoundationE8nextDownABvpMV', '_$sSo9NSDecimala10FoundationE8quietNaNABvgZ', + '_$sSo9NSDecimala10FoundationE8quietNaNABvpZMV', '_$sSo9NSDecimala10FoundationE8subtractyyABF', '_$sSo9NSDecimala10FoundationE9formattedSSyF', '_$sSo9NSDecimala10FoundationE9formattedy12FormatOutputQzxAC0D5StyleRzAB0D5InputRtzlF', '_$sSo9NSDecimala10FoundationE9hashValueSivg', '_$sSo9NSDecimala10FoundationE9hashValueSivpMV', '_$sSo9NSDecimala10FoundationE9magnitudeABvg', '_$sSo9NSDecimala10FoundationE9magnitudeABvpMV', @@ -9176,7 +10995,8 @@ exports: '_$sSq10FoundationAA26EncodableWithConfigurationRzlE6encode2to13configurationys7Encoder_p_08EncodingD0QztKF', '_$sSr10Foundations5UInt8VRszlE15withUnsafeBytesyqd__qd__SWKXEKlF', '_$sSryxG10Foundation15ContiguousBytesABs5UInt8VRszlMc', '_$sSryxG10Foundation15ContiguousBytesABs5UInt8VRszlWP', - '_$sSs10FoundationE19_bridgeToObjectiveCSo8NSStringCyF', '_$sSs10FoundationE26_forceBridgeFromObjectiveC_6resultySo8NSStringC_SsSgztFZ', + '_$sSs10FoundationE19_bridgeToObjectiveCSo8NSStringCyF', '_$sSs10FoundationE20_enumerateComponents11separatedBy7options9withBlockySs_So22NSStringCompareOptionsVySs_SbtXEtKF', + '_$sSs10FoundationE26_forceBridgeFromObjectiveC_6resultySo8NSStringC_SsSgztFZ', '_$sSs10FoundationE34_conditionallyBridgeFromObjectiveC_6resultSbSo8NSStringC_SsSgztFZ', '_$sSs10FoundationE36_unconditionallyBridgeFromObjectiveCySsSo8NSStringCSgFZ', '_$sSss21_ObjectiveCBridgeable10FoundationMc', '_$sSu10Foundation18_FormatSpecifiableAAMc', @@ -9251,7 +11071,8 @@ exports: '_$sSy10FoundationE8containsySbqd__SyRd__lF', '_$sSy10FoundationE8getBytes_9maxLength04usedE08encoding7options5range9remainingSbSays5UInt8VGz_SiSpySiGSSAAE8EncodingVSo08NSStringL17ConversionOptionsVqd__SpySnySS5IndexVGGtSXRd__AR5BoundRtd__lF', '_$sSy10FoundationE9appendingySSqd__SyRd__lF', '_$sSy10FoundationE9lineRange3forSnySS5IndexVGqd___tSXRd__AE5BoundRtd__lF', '_$sSy10FoundationE9substring2toS2S5IndexV_tF', '_$sSy10FoundationE9substring4fromS2S5IndexV_tF', - '_$sSy10FoundationE9substring4withSSSnySS5IndexVG_tF', '_$sSz10FoundationE9formattedSSyF', + '_$sSy10FoundationE9substring4withSSSnySS5IndexVG_tF', '_$sSz10FoundationE27numericStringRepresentationSSvg', + '_$sSz10FoundationE27numericStringRepresentationSSvpMV', '_$sSz10FoundationE9formattedSSyF', '_$sSz10FoundationE9formattedy12FormatOutputQyd__qd__0C5InputQyd__RszAA0C5StyleRd__lF', '_$sSz10FoundationE9formattedy12FormatOutputQyd__qd__AA0C5StyleRd__Sz0C5InputRpd__lF', '_$sSz10FoundationE_6format7lenientxSS_AA18IntegerFormatStyleV7PercentVyx_GSbtKcfC', @@ -9259,6 +11080,8 @@ exports: '_$sSz10FoundationE_6format7lenientxSS_AA18IntegerFormatStyleVyxGSbtKcfC', '_$sSz10FoundationE_8strategyx10ParseInputQyd___qd__tKc0C6OutputQyd__RszAA0C8StrategyRd__lufC', '_$sSz10FoundationE_8strategyx10ParseInputQyd___qd__tKcAA0C8StrategyRd__Sz0C6OutputRpd__lufC', + '_$ss10AnyKeyPathC10FoundationE021_unsafeAssumeSendableabC0s0G0_ABXcvg', + '_$ss10AnyKeyPathC10FoundationE021_unsafeAssumeSendableabC0s0G0_ABXcvpMV', '_$ss10ArraySliceV10Foundations5UInt8VRszlE7regionss15CollectionOfOneVyAByAEGGvg', '_$ss10ArraySliceV10Foundations5UInt8VRszlE7regionss15CollectionOfOneVyAByAEGGvpMV', '_$ss10ArraySliceVyxG10Foundation12DataProtocolADs5UInt8VRszlMc', @@ -9307,25 +11130,33 @@ exports: '_$ss22KeyedDecodingContainerV10FoundationE15decodeIfPresent_6forKey13configurationqd__Sgqd__m_x0B13ConfigurationQyd__tKAC013DecodableWithK0Rd__lF', '_$ss22KeyedDecodingContainerV10FoundationE15decodeIfPresent_6forKey13configurationqd__Sgqd__m_xqd_0_mtKAC26DecodableWithConfigurationRd__AC0bM9ProvidingRd_0_0bM0Qyd_0_AJRtd__r0_lF', '_$ss22KeyedDecodingContainerV10FoundationE25decodePredicateExpression6forKey5input22predicateConfigurationAC0fG0_pSb6OutputRts_XP10expression_AC0F11ExpressionsO8VariableVy_qd__Gqd__Qp_t8variabletx_qd__mqd__QpAC0f7CodableL0VtKRvd__lF', + '_$ss22KeyedDecodingContainerV10FoundationE25decodePredicateExpression6forKey5input6output22predicateConfigurationAC0fG0_pqd_0_6OutputRts_XP10expression_AC0F11ExpressionsO8VariableVy_qd__Gqd__Qp_t8variabletx_qd__mqd__Qpqd_0_mAC0f7CodableM0VtKRvd__r0_lF', '_$ss22KeyedDecodingContainerV10FoundationE34decodePredicateExpressionIfPresent6forKey5input22predicateConfigurationAC0fG0_pSb6OutputRts_XP10expression_AC0F11ExpressionsO8VariableVy_qd__Gqd__Qp_t8variabletSgx_qd__mqd__QpAC0f7CodableN0VtKRvd__lF', + '_$ss22KeyedDecodingContainerV10FoundationE34decodePredicateExpressionIfPresent6forKey5input6output22predicateConfigurationAC0fG0_pqd_0_6OutputRts_XP10expression_AC0F11ExpressionsO8VariableVy_qd__Gqd__Qp_t8variabletSgx_qd__mqd__Qpqd_0_mAC0f7CodableO0VtKRvd__r0_lF', '_$ss22KeyedDecodingContainerV10FoundationE6decode_6forKey13configurationqd__qd__m_x0B13ConfigurationQyd__tKAC013DecodableWithI0Rd__lF', '_$ss22KeyedDecodingContainerV10FoundationE6decode_6forKey13configurationqd__qd__m_xqd_0_mtKAC26DecodableWithConfigurationRd__AC0bK9ProvidingRd_0_0bK0Qyd_0_AIRtd__r0_lF', '_$ss22KeyedDecodingContainerV10FoundationE6decode_6forKeyAC20CodableConfigurationVyqd__Sgqd_0_GAIm_xtKAC013DecodableWithI0Rd__AC09EncodablekI0Rd__AC0bI9ProvidingRd_0_AC08EncodingiM0Rd_0_0bI0AcLPQyd_0_AncJPRtd__0nI0AcMPQyd_0_AscKPRtd__r0_lF', '_$ss22KeyedEncodingContainerV10FoundationE15encodeIfPresent_6forKey13configurationyqd__Sg_x0B13ConfigurationQyd__tKAC013EncodableWithK0Rd__lF', '_$ss22KeyedEncodingContainerV10FoundationE15encodeIfPresent_6forKey13configurationyqd__Sg_xqd_0_mtKAC26EncodableWithConfigurationRd__AC0bM9ProvidingRd_0_0bM0Qyd_0_AJRtd__r0_lF', '_$ss22KeyedEncodingContainerV10FoundationE25encodePredicateExpression_6forKey8variable22predicateConfigurationyqd___xAC0F11ExpressionsO8VariableVy_qd_0_Gqd_0_QpAC0f7CodableL0VtKRvd_0_AC0fG0Rd__SERd__Sb6OutputAcOPRtd__r0_lF', + '_$ss22KeyedEncodingContainerV10FoundationE25encodePredicateExpression_6forKey8variable22predicateConfigurationyqd___xAC0F11ExpressionsO8VariableVy_qd_0_Gqd_0_QpAC0f7CodableL0VtKRvd_0_AC0fG0Rd__SERd__r0_lF', '_$ss22KeyedEncodingContainerV10FoundationE34encodePredicateExpressionIfPresent_6forKey8variable22predicateConfigurationyqd__Sg_xAC0F11ExpressionsO8VariableVy_qd_0_Gqd_0_QpAC0f7CodableN0VtKRvd_0_AC0fG0Rd__SERd__Sb6OutputAcPPRtd__r0_lF', + '_$ss22KeyedEncodingContainerV10FoundationE34encodePredicateExpressionIfPresent_6forKey8variable22predicateConfigurationyqd__Sg_xAC0F11ExpressionsO8VariableVy_qd_0_Gqd_0_QpAC0f7CodableN0VtKRvd_0_AC0fG0Rd__SERd__r0_lF', '_$ss22KeyedEncodingContainerV10FoundationE6encode_6forKey13configurationyqd___x0B13ConfigurationQyd__tKAC013EncodableWithI0Rd__lF', '_$ss22KeyedEncodingContainerV10FoundationE6encode_6forKey13configurationyqd___xqd_0_mtKAC26EncodableWithConfigurationRd__AC0bK9ProvidingRd_0_0bK0Qyd_0_AIRtd__r0_lF', '_$ss22KeyedEncodingContainerV10FoundationE6encode_6forKeyyAC20CodableConfigurationVyqd__Sgqd_0_G_xtKAC013DecodableWithI0Rd__AC09EncodablekI0Rd__AC08DecodingI9ProvidingRd_0_AC0biN0Rd_0_0mI0AcLPQyd_0_AncJPRtd__0bI0AcMPQyd_0_AscKPRtd__r0_lF', '_$ss24UnkeyedDecodingContainerP10FoundationE15decodeIfPresent_13configurationqd__Sgqd__m_0B13ConfigurationQyd__tKAC013DecodableWithI0Rd__lF', '_$ss24UnkeyedDecodingContainerP10FoundationE15decodeIfPresent_13configurationqd__Sgqd__m_qd_0_mtKAC26DecodableWithConfigurationRd__AC0bK9ProvidingRd_0_0bK0Qyd_0_AIRtd__r0_lF', '_$ss24UnkeyedDecodingContainerP10FoundationE25decodePredicateExpression5input22predicateConfigurationAC0fG0_pSb6OutputRts_XP10expression_AC0F11ExpressionsO8VariableVy_qd__Gqd__Qp_t8variabletqd__mqd__Qp_AC0f7CodableJ0VtKRvd__lF', + '_$ss24UnkeyedDecodingContainerP10FoundationE25decodePredicateExpression5input6output22predicateConfigurationAC0fG0_pqd_0_6OutputRts_XP10expression_AC0F11ExpressionsO8VariableVy_qd__Gqd__Qp_t8variabletqd__mqd__Qp_qd_0_mAC0f7CodableK0VtKRvd__r0_lF', '_$ss24UnkeyedDecodingContainerP10FoundationE34decodePredicateExpressionIfPresent5input22predicateConfigurationAC0fG0_pSb6OutputRts_XP10expression_AC0F11ExpressionsO8VariableVy_qd__Gqd__Qp_t8variabletSgqd__mqd__Qp_AC0f7CodableL0VtKRvd__lF', + '_$ss24UnkeyedDecodingContainerP10FoundationE34decodePredicateExpressionIfPresent5input6output22predicateConfigurationAC0fG0_pqd_0_6OutputRts_XP10expression_AC0F11ExpressionsO8VariableVy_qd__Gqd__Qp_t8variabletSgqd__mqd__Qp_qd_0_mAC0f7CodableM0VtKRvd__r0_lF', '_$ss24UnkeyedDecodingContainerP10FoundationE6decode_13configurationqd__qd__m_0B13ConfigurationQyd__tKAC013DecodableWithG0Rd__lF', '_$ss24UnkeyedDecodingContainerP10FoundationE6decode_13configurationqd__qd__m_qd_0_mtKAC26DecodableWithConfigurationRd__AC0bI9ProvidingRd_0_0bI0Qyd_0_AHRtd__r0_lF', '_$ss24UnkeyedEncodingContainerP10FoundationE25encodePredicateExpression_8variable22predicateConfigurationyqd___AC0F11ExpressionsO8VariableVy_qd_0_Gqd_0_QpAC0f7CodableJ0VtKRvd_0_AC0fG0Rd__SERd__Sb6OutputAcNPRtd__r0_lF', + '_$ss24UnkeyedEncodingContainerP10FoundationE25encodePredicateExpression_8variable22predicateConfigurationyqd___AC0F11ExpressionsO8VariableVy_qd_0_Gqd_0_QpAC0f7CodableJ0VtKRvd_0_AC0fG0Rd__SERd__r0_lF', '_$ss24UnkeyedEncodingContainerP10FoundationE34encodePredicateExpressionIfPresent_8variable22predicateConfigurationyqd__Sg_AC0F11ExpressionsO8VariableVy_qd_0_Gqd_0_QpAC0f7CodableL0VtKRvd_0_AC0fG0Rd__SERd__Sb6OutputAcOPRtd__r0_lF', + '_$ss24UnkeyedEncodingContainerP10FoundationE34encodePredicateExpressionIfPresent_8variable22predicateConfigurationyqd__Sg_AC0F11ExpressionsO8VariableVy_qd_0_Gqd_0_QpAC0f7CodableL0VtKRvd_0_AC0fG0Rd__SERd__r0_lF', '_$ss24UnkeyedEncodingContainerP10FoundationE6encode_13configurationyqd___0B13ConfigurationQyd__tKAC013EncodableWithG0Rd__lF', '_$ss24UnkeyedEncodingContainerP10FoundationE6encode_13configurationyqd___qd_0_mtKAC26EncodableWithConfigurationRd__AC0bI9ProvidingRd_0_0bI0Qyd_0_AHRtd__r0_lF', '_$ss25FloatingPointRoundingRuleO10FoundationE4fromABs7Decoder_p_tKcfC', @@ -9384,12 +11215,17 @@ exports: '_$ss5SliceVyxG10Foundation15ContiguousBytesA2dERzrlMc', '_$ss5SliceVyxG10Foundation15ContiguousBytesA2dERzrlWP', '_$ss5UInt8V10Foundation18_FormatSpecifiableACMc', '_$ss5UInt8V10Foundation18_FormatSpecifiableACWP', '_$ss5UInt8V10FoundationE10truncatingABSo8NSNumberCh_tcfC', + '_$ss5UInt8V10FoundationE11_lowercasedABvg', '_$ss5UInt8V10FoundationE11_lowercasedABvpMV', + '_$ss5UInt8V10FoundationE11_uppercasedABvg', '_$ss5UInt8V10FoundationE11_uppercasedABvpMV', + '_$ss5UInt8V10FoundationE13_numericValueSiSgvg', '_$ss5UInt8V10FoundationE13_numericValueSiSgvpMV', + '_$ss5UInt8V10FoundationE14carriageReturnABvgZ', '_$ss5UInt8V10FoundationE14carriageReturnABvpZMV', '_$ss5UInt8V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF', '_$ss5UInt8V10FoundationE26_forceBridgeFromObjectiveC_6resultySo8NSNumberC_ABSgztFZ', '_$ss5UInt8V10FoundationE34_conditionallyBridgeFromObjectiveC_6resultSbSo8NSNumberC_ABSgztFZ', '_$ss5UInt8V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ', '_$ss5UInt8V10FoundationE4_args6UInt32Vvg', '_$ss5UInt8V10FoundationE4_args6UInt32VvpMV', '_$ss5UInt8V10FoundationE7exactlyABSgSo8NSNumberCh_tcfC', + '_$ss5UInt8V10FoundationE7newlineABvgZ', '_$ss5UInt8V10FoundationE7newlineABvpZMV', '_$ss5UInt8V10FoundationEyABSo8NSNumberChcfC', '_$ss5UInt8Vs21_ObjectiveCBridgeable10FoundationMc', '_$ss6UInt16V10Foundation18_FormatSpecifiableACMc', '_$ss6UInt16V10Foundation18_FormatSpecifiableACWP', '_$ss6UInt16V10FoundationE10truncatingABSo8NSNumberCh_tcfC', @@ -9420,14 +11256,27 @@ exports: '_$ss6UInt64V10FoundationEyABSo8NSNumberChcfC', '_$ss6UInt64Vs21_ObjectiveCBridgeable10FoundationMc', '_$ss7CVarArgP10Foundations21_ObjectiveCBridgeableRzrlE05_cVarB8EncodingSaySiGvg', '_$ss7CVarArgP10Foundations21_ObjectiveCBridgeableRzrlE05_cVarB8EncodingSaySiGvpMV', + '_$ss7KeyPathC10FoundationE21_unsafeAssumeSendables0F0_AByxq_GXcvg', + '_$ss7KeyPathC10FoundationE21_unsafeAssumeSendables0F0_AByxq_GXcvpMV', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV13discreteInput5afterABSgAB_tF', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV13discreteInput6beforeABSgAB_tF', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluiM', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluig', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluipMV', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluis', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV13dynamicMemberxs7KeyPathCyAExG_tcluig', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV13dynamicMemberxs7KeyPathCyAExG_tcluipMV', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV2eeoiySbAG_AGtFZ', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV4fromAGs7Decoder_p_tKcfC', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV4hash4intoys6HasherVz_tF', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV6encode2toys7Encoder_p_tKF', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV6formatyAC0F6StringVABF', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV6localeyAgC6LocaleVF', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV8groupingyAgC06NumberdE13ConfigurationO8GroupingVF', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV9hashValueSivg', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedV9hashValueSivpMV', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedVAC08DiscretedE0ACMc', + '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedVAC08DiscretedE0ACWP', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedVAC0dE0ACMc', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedVAC0dE0ACWP', '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedVMa', @@ -9439,6 +11288,8 @@ exports: '_$ss8DurationV10FoundationE15TimeFormatStyleV10AttributedVSeACMc', '_$ss8DurationV10FoundationE15TimeFormatStyleV10attributedAE10AttributedVvg', '_$ss8DurationV10FoundationE15TimeFormatStyleV10attributedAE10AttributedVvpMV', + '_$ss8DurationV10FoundationE15TimeFormatStyleV13discreteInput5afterABSgAB_tF', + '_$ss8DurationV10FoundationE15TimeFormatStyleV13discreteInput6beforeABSgAB_tF', '_$ss8DurationV10FoundationE15TimeFormatStyleV2eeoiySbAE_AEtFZ', '_$ss8DurationV10FoundationE15TimeFormatStyleV4fromAEs7Decoder_p_tKcfC', '_$ss8DurationV10FoundationE15TimeFormatStyleV4hash4intoys6HasherVz_tF', @@ -9451,10 +11302,13 @@ exports: '_$ss8DurationV10FoundationE15TimeFormatStyleV6localeyAeC6LocaleVF', '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV10hourMinute15padHourToLength12roundSecondsAGSi_s25FloatingPointRoundingRuleOtFZ', '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV10hourMinuteAGvgZ', + '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV10hourMinuteAGvpZMV', '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV12minuteSecond17padMinuteToLength017fractionalSecondsL0015roundFractionalN0AGSi_Sis25FloatingPointRoundingRuleOtFZ', '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV12minuteSecondAGvgZ', + '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV12minuteSecondAGvpZMV', '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV16hourMinuteSecond15padHourToLength017fractionalSecondsM0015roundFractionalO0AGSi_Sis25FloatingPointRoundingRuleOtFZ', '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV16hourMinuteSecondAGvgZ', + '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV16hourMinuteSecondAGvpZMV', '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV2eeoiySbAG_AGtFZ', '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV4fromAGs7Decoder_p_tKcfC', '_$ss8DurationV10FoundationE15TimeFormatStyleV7PatternV4hash4intoys6HasherVz_tF', @@ -9473,8 +11327,15 @@ exports: '_$ss8DurationV10FoundationE15TimeFormatStyleV7patternAE7PatternVvg', '_$ss8DurationV10FoundationE15TimeFormatStyleV7patternAE7PatternVvpMV', '_$ss8DurationV10FoundationE15TimeFormatStyleV7patternAE7PatternVvs', + '_$ss8DurationV10FoundationE15TimeFormatStyleV8groupingAC06NumberdE13ConfigurationO8GroupingVvM', + '_$ss8DurationV10FoundationE15TimeFormatStyleV8groupingAC06NumberdE13ConfigurationO8GroupingVvg', + '_$ss8DurationV10FoundationE15TimeFormatStyleV8groupingAC06NumberdE13ConfigurationO8GroupingVvpMV', + '_$ss8DurationV10FoundationE15TimeFormatStyleV8groupingAC06NumberdE13ConfigurationO8GroupingVvs', + '_$ss8DurationV10FoundationE15TimeFormatStyleV8groupingyAeC06NumberdE13ConfigurationO8GroupingVF', '_$ss8DurationV10FoundationE15TimeFormatStyleV9hashValueSivg', '_$ss8DurationV10FoundationE15TimeFormatStyleV9hashValueSivpMV', + '_$ss8DurationV10FoundationE15TimeFormatStyleVAC08DiscretedE0ACMc', + '_$ss8DurationV10FoundationE15TimeFormatStyleVAC08DiscretedE0ACWP', '_$ss8DurationV10FoundationE15TimeFormatStyleVAC0dE0ACMc', '_$ss8DurationV10FoundationE15TimeFormatStyleVAC0dE0ACWP', '_$ss8DurationV10FoundationE15TimeFormatStyleVMa', '_$ss8DurationV10FoundationE15TimeFormatStyleVMn', @@ -9492,6 +11353,7 @@ exports: '_$ss8DurationV10FoundationE16UnitsFormatStyleV09ZeroValueC15DisplayStrategyV4fromAGs7Decoder_p_tKcfC', '_$ss8DurationV10FoundationE16UnitsFormatStyleV09ZeroValueC15DisplayStrategyV4hash4intoys6HasherVz_tF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV09ZeroValueC15DisplayStrategyV4hideAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV09ZeroValueC15DisplayStrategyV4hideAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV09ZeroValueC15DisplayStrategyV4show6lengthAGSi_tFZ', '_$ss8DurationV10FoundationE16UnitsFormatStyleV09ZeroValueC15DisplayStrategyV6encode2toys7Encoder_p_tKF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV09ZeroValueC15DisplayStrategyVMa', @@ -9505,6 +11367,14 @@ exports: '_$ss8DurationV10FoundationE16UnitsFormatStyleV09zeroValueC7DisplayAE04ZerogcH8StrategyVvg', '_$ss8DurationV10FoundationE16UnitsFormatStyleV09zeroValueC7DisplayAE04ZerogcH8StrategyVvpMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV09zeroValueC7DisplayAE04ZerogcH8StrategyVvs', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV13discreteInput5afterABSgAB_tF', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV13discreteInput6beforeABSgAB_tF', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluiM', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluig', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluipMV', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV13dynamicMemberxs15WritableKeyPathCyAExG_tcluis', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV13dynamicMemberxs7KeyPathCyAExG_tcluig', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV13dynamicMemberxs7KeyPathCyAExG_tcluipMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV2eeoiySbAG_AGtFZ', '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV4fromAGs7Decoder_p_tKcfC', '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV4hash4intoys6HasherVz_tF', @@ -9513,6 +11383,8 @@ exports: '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV6localeyAgC6LocaleVF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV9hashValueSivg', '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedV9hashValueSivpMV', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedVAC08DiscretedE0ACMc', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedVAC08DiscretedE0ACWP', '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedVAC0dE0ACMc', '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedVAC0dE0ACWP', '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedVMa', @@ -9524,6 +11396,8 @@ exports: '_$ss8DurationV10FoundationE16UnitsFormatStyleV10AttributedVSeACMc', '_$ss8DurationV10FoundationE16UnitsFormatStyleV10attributedAE10AttributedVvg', '_$ss8DurationV10FoundationE16UnitsFormatStyleV10attributedAE10AttributedVvpMV', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV13discreteInput5afterABSgAB_tF', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV13discreteInput6beforeABSgAB_tF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV16maximumUnitCountSiSgvM', '_$ss8DurationV10FoundationE16UnitsFormatStyleV16maximumUnitCountSiSgvg', '_$ss8DurationV10FoundationE16UnitsFormatStyleV16maximumUnitCountSiSgvpMV', @@ -9558,6 +11432,7 @@ exports: '_$ss8DurationV10FoundationE16UnitsFormatStyleV29FractionalPartDisplayStrategyV4hash4intoys6HasherVz_tF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV29FractionalPartDisplayStrategyV4hide7roundedAGs25FloatingPointRoundingRuleO_tFZ', '_$ss8DurationV10FoundationE16UnitsFormatStyleV29FractionalPartDisplayStrategyV4hideAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV29FractionalPartDisplayStrategyV4hideAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV29FractionalPartDisplayStrategyV4show6length7rounded9incrementAGSi_s25FloatingPointRoundingRuleOSdSgtFZ', '_$ss8DurationV10FoundationE16UnitsFormatStyleV29FractionalPartDisplayStrategyV6encode2toys7Encoder_p_tKF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV29FractionalPartDisplayStrategyV9hashValueSivg', @@ -9571,17 +11446,25 @@ exports: '_$ss8DurationV10FoundationE16UnitsFormatStyleV29FractionalPartDisplayStrategyVSeACMc', '_$ss8DurationV10FoundationE16UnitsFormatStyleV2eeoiySbAE_AEtFZ', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV11nanosecondsAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV11nanosecondsAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV12microsecondsAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV12microsecondsAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV12millisecondsAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV12millisecondsAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV2eeoiySbAG_AGtFZ', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV4daysAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV4daysAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV4fromAGs7Decoder_p_tKcfC', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV4hash4intoys6HasherVz_tF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV5hoursAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV5hoursAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV5weeksAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV5weeksAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV6encode2toys7Encoder_p_tKF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV7minutesAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV7minutesAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV7secondsAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV7secondsAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV9hashValueSivg', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitV9hashValueSivpMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV4UnitVMa', @@ -9600,13 +11483,17 @@ exports: '_$ss8DurationV10FoundationE16UnitsFormatStyleV6localeAC6LocaleVvs', '_$ss8DurationV10FoundationE16UnitsFormatStyleV6localeyAeC6LocaleVF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV11abbreviatedAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV11abbreviatedAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV20condensedAbbreviatedAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV20condensedAbbreviatedAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV2eeoiySbAG_AGtFZ', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV4fromAGs7Decoder_p_tKcfC', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV4hash4intoys6HasherVz_tF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV4wideAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV4wideAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV6encode2toys7Encoder_p_tKF', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV6narrowAGvgZ', + '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV6narrowAGvpZMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV9hashValueSivg', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthV9hashValueSivpMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9UnitWidthVMa', @@ -9622,13 +11509,18 @@ exports: '_$ss8DurationV10FoundationE16UnitsFormatStyleV9unitWidthAE04UnitG0Vvg', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9unitWidthAE04UnitG0VvpMV', '_$ss8DurationV10FoundationE16UnitsFormatStyleV9unitWidthAE04UnitG0Vvs', + '_$ss8DurationV10FoundationE16UnitsFormatStyleVAC08DiscretedE0ACMc', + '_$ss8DurationV10FoundationE16UnitsFormatStyleVAC08DiscretedE0ACWP', '_$ss8DurationV10FoundationE16UnitsFormatStyleVAC0dE0ACMc', '_$ss8DurationV10FoundationE16UnitsFormatStyleVAC0dE0ACWP', '_$ss8DurationV10FoundationE16UnitsFormatStyleVMa', '_$ss8DurationV10FoundationE16UnitsFormatStyleVMn', '_$ss8DurationV10FoundationE16UnitsFormatStyleVN', '_$ss8DurationV10FoundationE16UnitsFormatStyleVSEACMc', '_$ss8DurationV10FoundationE16UnitsFormatStyleVSHACMc', '_$ss8DurationV10FoundationE16UnitsFormatStyleVSQACMc', - '_$ss8DurationV10FoundationE16UnitsFormatStyleVSeACMc', '_$ss8DurationV10FoundationE9formattedSSyF', + '_$ss8DurationV10FoundationE16UnitsFormatStyleVSeACMc', '_$ss8DurationV10FoundationE6nextUpABvg', + '_$ss8DurationV10FoundationE6nextUpABvpMV', '_$ss8DurationV10FoundationE8nextDownABvg', + '_$ss8DurationV10FoundationE8nextDownABvpMV', '_$ss8DurationV10FoundationE9formattedSSyF', '_$ss8DurationV10FoundationE9formattedy12FormatOutputQzxAC0D5StyleRzAB0D5InputRtzlF', + '_$ss8RangeSetV10FoundationSiRszrlEyABySiGAC05IndexB0VcfC', '_$ss8RepeatedV10Foundations5UInt8VRszlE7regionsAByAC4DataVGvg', '_$ss8RepeatedV10Foundations5UInt8VRszlE7regionsAByAC4DataVGvpMV', '_$ss8RepeatedVyxG10Foundation12DataProtocolADs5UInt8VRszlMc', @@ -9637,7 +11529,503 @@ exports: '_$sxSg10Foundation26DecodableWithConfigurationA2bCRzlWP', '_$sxSg10Foundation26EncodableWithConfigurationA2bCRzlMc', '_$sxSg10Foundation26EncodableWithConfigurationA2bCRzlWP', - _NSAMPMDesignation, _NSAllocateCollectable, _NSAppleScriptErrorAppName, + _NSAffineTransformStructIdentity, _NSAllHashTableObjects, + _NSAllMapTableKeys, _NSAllMapTableValues, _NSAllocateMemoryPages, + _NSAllocateObject, _NSAllocateObjectArray, _NSAllocateScannedUncollectable, + _NSAlternateDescriptionAttributeName, _NSAppleEventManagerWillProcessFirstEventNotification, + _NSAppleEventTimeOutDefault, _NSAppleEventTimeOutNone, _NSArgumentDomain, + _NSAssertionHandlerKey, _NSAutoreleaseObject, _NSAutoreleasePoolCount, + _NSAverageKeyValueOperator, _NSBOOLFromString, _NSBundleDidLoadNotification, + _NSBundleDisableCodeLoading, _NSBundleResourceRequestLoadingPriorityUrgent, + _NSBundleResourceRequestLowDiskSpaceNotification, _NSBurstTrieCreate, + _NSBurstTrieCreateFromFile, _NSBurstTrieCreateFromMappedFile, + _NSBurstTrieFind, _NSBurstTrieFindCharacters, _NSBurstTrieFindUTF8String, + _NSBurstTrieGetCount, _NSBurstTrieInsert, _NSBurstTrieInsertCharacters, + _NSBurstTrieMappedSerialize, _NSBurstTriePrint, _NSBurstTrieRelease, + _NSBurstTrieRetain, _NSBurstTrieSerialize, _NSBurstTrieTraverse, + _NSCharacterConversionException, _NSClassDescriptionNeededForClassNotification, + _NSClassFromObject, _NSClassFromString, _NSCocoaErrorDomain, + _NSCollectedScannedZone, _NSCollectedUnscannedZone, _NSCompareCString, + _NSCompareCharacters, _NSCompareHashTables, _NSCompareMapTables, + _NSConnectionDidDieNotification, _NSConnectionDidInitializeNotification, + _NSConnectionReplyMode, _NSContainsRect, _NSCopyHashTableWithZone, + _NSCopyMapTableWithZone, _NSCopyMemoryPages, _NSCopyObject, + _NSCountFrames, _NSCountHashTable, _NSCountKeyValueOperator, + _NSCountMapTable, _NSCreateHashTable, _NSCreateHashTableWithZone, + _NSCreateMapTable, _NSCreateMapTableWithZone, _NSCreateZone, + _NSDataDeallocatorFree, _NSDataDeallocatorNone, _NSDataDeallocatorUnmap, + _NSDataDeallocatorVM, _NSDeallocateMemoryPages, _NSDeallocateObject, + _NSDeallocateZombies, _NSDebugDescriptionErrorKey, _NSDebugEnabled, + _NSDebugRecordObjectAndStack, _NSDecimalAdd, _NSDecimalCompact, + _NSDecimalCompare, _NSDecimalCopy, _NSDecimalDivide, _NSDecimalMultiply, + _NSDecimalMultiplyByPowerOf10, _NSDecimalNormalize, _NSDecimalNumberDivideByZeroException, + _NSDecimalNumberExactnessException, _NSDecimalNumberOverflowException, + _NSDecimalNumberUnderflowException, _NSDecimalPower, _NSDecimalRound, + _NSDecimalString, _NSDecimalSubtract, _NSDecrementExtraRefCountWasZero, + _NSDefaultMallocZone, _NSDescriptionErrorKey, _NSDestinationFilePathErrorKey, + _NSDestinationInvalidException, _NSDetailedErrorsKey, _NSDidBecomeSingleThreadedNotification, + _NSDistinctUnionOfArraysKeyValueOperator, _NSDistinctUnionOfObjectsKeyValueOperator, + _NSDistinctUnionOfSetsKeyValueOperator, _NSDivideRect, _NSEdgeInsetsEqual, + _NSEdgeInsetsZero, _NSEndHashTableEnumeration, _NSEndMapTableEnumeration, + _NSEnumerateHashTable, _NSEnumerateMapTable, _NSEqualPoints, + _NSEqualRects, _NSEqualSizes, _NSErrorFailingURLStringKey, + _NSExtensionAdditionalServiceName, _NSExtensionContainingAppName, + _NSExtensionErrorDomain, _NSExtensionHostDidBecomeActiveNotification, + _NSExtensionHostDidEnterBackgroundNotification, _NSExtensionHostWillEnterForegroundNotification, + _NSExtensionHostWillResignActiveNotification, _NSExtensionIdentifierName, + _NSExtensionInternalErrorException, _NSExtensionIsPredicateSafeToExecuteWithObject, + _NSExtensionIsSafeKeyPathForObject, _NSExtensionItemAttachmentsKey, + _NSExtensionItemAttributedContentTextKey, _NSExtensionItemAttributedTitleKey, + _NSExtensionItemsAndErrorsKey, _NSExtensionJavaScriptPreprocessingResultsKey, + _NSExtensionMain, _NSExtensionPointName, _NSExtensionPointUIServices, + _NSExtensionSubsystemOptionsUIHostContextUIKitKey, _NSExtensionUUIDName, + _NSExtensionVersionName, _NSExtraRefCount, _NSFailedAuthenticationException, + _NSFileAppendOnly, _NSFileBusy, _NSFileCreationDate, _NSFileDeviceIdentifier, + _NSFileExtendedAttributes, _NSFileExtensionHidden, _NSFileGroupOwnerAccountID, + _NSFileGroupOwnerAccountName, _NSFileHFSCreatorCode, _NSFileHFSTypeCode, + _NSFileHandleConnectionAcceptedNotification, _NSFileHandleDataAvailableNotification, + _NSFileHandleNotificationDataItem, _NSFileHandleNotificationFileHandleItem, + _NSFileHandleNotificationMonitorModes, _NSFileHandleOperationException, + _NSFileHandleReadCompletionNotification, _NSFileHandleReadToEndOfFileCompletionNotification, + _NSFileImmutable, _NSFileModificationDate, _NSFileOwnerAccountID, + _NSFileOwnerAccountName, _NSFilePathErrorKey, _NSFilePosixPermissions, + _NSFileProtectionComplete, _NSFileProtectionCompleteUnlessOpen, + _NSFileProtectionCompleteUntilFirstUserAuthentication, _NSFileProtectionCompleteUntilUserAuthentication, + _NSFileProtectionKey, _NSFileProtectionNone, _NSFileProtectionWriteOnly, + _NSFileReferenceCount, _NSFileSize, _NSFileSystemFileNumber, + _NSFileSystemFreeNodes, _NSFileSystemFreeSize, _NSFileSystemNodes, + _NSFileSystemNumber, _NSFileSystemSize, _NSFileType, _NSFileTypeBlockSpecial, + _NSFileTypeCharacterSpecial, _NSFileTypeDirectory, _NSFileTypeForHFSTypeCode, + _NSFileTypeRegular, _NSFileTypeSocket, _NSFileTypeSymbolicLink, + _NSFileTypeUnknown, _NSFontSymbolicTraitsAttributeName, _NSFoundationVersionNumber, + _NSFoundationVersionString, _NSFrameAddress, _NSFreeHashTable, + _NSFreeMapTable, _NSFreeObjectArray, _NSFullUserName, _NSGetUncaughtExceptionHandler, + _NSGlobalDomain, _NSHFSTypeCodeFromFileType, _NSHFSTypeOfFile, + _NSHTTPCookieComment, _NSHTTPCookieCommentURL, _NSHTTPCookieDiscard, + _NSHTTPCookieDomain, _NSHTTPCookieExpires, _NSHTTPCookieManagerAcceptPolicyChangedNotification, + _NSHTTPCookieManagerCookiesChangedNotification, _NSHTTPCookieMaximumAge, + _NSHTTPCookieName, _NSHTTPCookieOriginURL, _NSHTTPCookiePath, + _NSHTTPCookiePort, _NSHTTPCookieSameSiteLax, _NSHTTPCookieSameSitePolicy, + _NSHTTPCookieSameSiteStrict, _NSHTTPCookieSecure, _NSHTTPCookieSetByJavaScript, + _NSHTTPCookieValue, _NSHTTPCookieVersion, _NSHangOnUncaughtException, + _NSHashCString, _NSHashCStringAsIs, _NSHashCharacters, _NSHashGet, + _NSHashInsert, _NSHashInsertIfAbsent, _NSHashInsertKnownAbsent, + _NSHashRemove, _NSHashString, _NSHelpAnchorErrorKey, _NSHomeDirectory, + _NSHomeDirectoryForUser, _NSISEpsilon, _NSImageURLAttributeName, + _NSInconsistentArchiveException, _NSIncrementExtraRefCount, + _NSInflectionAgreementArgumentAttributeName, _NSInflectionAgreementConceptAttributeName, + _NSInflectionAlternativeAttributeName, _NSInflectionConceptsKey, + _NSInflectionReferentConceptAttributeName, _NSInflectionRuleAttributeName, + _NSInlinePresentationIntentAttributeName, _NSInsetRect, _NSIntHashCallBacks, + _NSIntMapKeyCallBacks, _NSIntMapValueCallBacks, _NSIntegerHashCallBacks, + _NSIntegerMapKeyCallBacks, _NSIntegerMapValueCallBacks, _NSIntegralRect, + _NSIntegralRectFlipOptions, _NSIntegralRectWithOptions, _NSIntersectionRange, + _NSIntersectionRect, _NSIntersectsRange, _NSIntersectsRect, + _NSInvalidArchiveOperationException, _NSInvalidReceivePortException, + _NSInvalidSendPortException, _NSInvalidUnarchiveOperationException, + _NSInvalidValueErrorKey, _NSInvocationOperationCancelledException, + _NSInvocationOperationVoidResultException, _NSIsEmptyRect, + _NSIsFreedObject, _NSIsNilTransformerName, _NSIsNotNilTransformerName, + _NSItemProviderErrorDomain, _NSItemProviderOptionsDispatchModeAsynchronous, + _NSItemProviderOptionsDispatchModeKey, _NSItemProviderOptionsIssueSandboxExtensionKey, + _NSItemProviderPreferredImageSizeKey, _NSKeepAllocationStatistics, + _NSKeyValueChangeIndexesKey, _NSKeyValueChangeKindKey, _NSKeyValueChangeNewKey, + _NSKeyValueChangeNotificationIsPriorKey, _NSKeyValueChangeOldKey, + _NSKeyedArchiveRootObjectKey, _NSKeyedUnarchiveFromDataTransformerName, + _NSLanguageIdentifierAttributeName, _NSLayoutConstraintParserSpace, + _NSLinguisticTagAdjective, _NSLinguisticTagAdverb, _NSLinguisticTagClassifier, + _NSLinguisticTagCloseParenthesis, _NSLinguisticTagCloseQuote, + _NSLinguisticTagConjunction, _NSLinguisticTagDash, _NSLinguisticTagDeterminer, + _NSLinguisticTagIdiom, _NSLinguisticTagInterjection, _NSLinguisticTagNoun, + _NSLinguisticTagNumber, _NSLinguisticTagOpenParenthesis, _NSLinguisticTagOpenQuote, + _NSLinguisticTagOrganizationName, _NSLinguisticTagOther, _NSLinguisticTagOtherPunctuation, + _NSLinguisticTagOtherWhitespace, _NSLinguisticTagOtherWord, + _NSLinguisticTagParagraphBreak, _NSLinguisticTagParticle, + _NSLinguisticTagPersonalName, _NSLinguisticTagPlaceName, _NSLinguisticTagPreposition, + _NSLinguisticTagPronoun, _NSLinguisticTagPunctuation, _NSLinguisticTagSchemeLanguage, + _NSLinguisticTagSchemeLemma, _NSLinguisticTagSchemeLexicalClass, + _NSLinguisticTagSchemeNameType, _NSLinguisticTagSchemeNameTypeOrLexicalClass, + _NSLinguisticTagSchemeScript, _NSLinguisticTagSchemeTokenType, + _NSLinguisticTagSentenceTerminator, _NSLinguisticTagVerb, + _NSLinguisticTagWhitespace, _NSLinguisticTagWord, _NSLinguisticTagWordJoiner, + _NSLoadedClasses, _NSLocalNotificationCenterType, _NSLocaleLanguageConfidenceHigh, + _NSLocaleLanguageConfidenceLow, _NSLocaleLanguageConfidenceMedium, + _NSLocalizedDescriptionKey, _NSLocalizedFailureErrorKey, _NSLocalizedFailureReasonErrorKey, + _NSLocalizedFileSizeDescription, _NSLocalizedNumberFormatAttributeName, + _NSLocalizedPropertyNameForInvalidValueErrorKey, _NSLocalizedRecoveryOptionsErrorKey, + _NSLocalizedRecoverySuggestionErrorKey, _NSLog, _NSLogPageSize, + _NSLogv, _NSMachErrorDomain, _NSMallocZone, _NSMapGet, _NSMapInsert, + _NSMapInsertIfAbsent, _NSMapInsertKnownAbsent, _NSMapMember, + _NSMapRemove, _NSMarkdownSourcePositionAttributeName, _NSMaximumKeyValueOperator, + _NSMaximumValidValueErrorKey, _NSMetadataItemContainerIdentifierKey, + _NSMetadataItemContentTypeKey, _NSMetadataItemContentTypeTreeKey, + _NSMetadataItemDisplayNameKey, _NSMetadataItemFSContentChangeDateKey, + _NSMetadataItemFSCreationDateKey, _NSMetadataItemFSNameKey, + _NSMetadataItemFSSizeKey, _NSMetadataItemIsUbiquitousKey, + _NSMetadataItemPathKey, _NSMetadataItemURLKey, _NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope, + _NSMetadataQueryDidFinishGatheringNotification, _NSMetadataQueryDidStartGatheringNotification, + _NSMetadataQueryDidUpdateNotification, _NSMetadataQueryExternalDocumentsScope, + _NSMetadataQueryGatheringProgressNotification, _NSMetadataQueryLocalDocumentsScope, + _NSMetadataQueryPerAppExternalDocumentsScope, _NSMetadataQueryResultContentRelevanceAttribute, + _NSMetadataQueryUbiquitousDataScope, _NSMetadataQueryUbiquitousDocumentsScope, + _NSMetadataQueryUpdateAddedItemsKey, _NSMetadataQueryUpdateChangedItemsKey, + _NSMetadataQueryUpdateRemovedItemsKey, _NSMetadataUbiquitousItemContainerDisplayNameKey, + _NSMetadataUbiquitousItemDownloadRequestedKey, _NSMetadataUbiquitousItemDownloadingErrorKey, + _NSMetadataUbiquitousItemDownloadingStatusCurrent, _NSMetadataUbiquitousItemDownloadingStatusDownloaded, + _NSMetadataUbiquitousItemDownloadingStatusKey, _NSMetadataUbiquitousItemDownloadingStatusNotDownloaded, + _NSMetadataUbiquitousItemHasUnresolvedConflictsKey, _NSMetadataUbiquitousItemIsDownloadedKey, + _NSMetadataUbiquitousItemIsDownloadingKey, _NSMetadataUbiquitousItemIsExternalDocumentKey, + _NSMetadataUbiquitousItemIsSharedKey, _NSMetadataUbiquitousItemIsUploadedKey, + _NSMetadataUbiquitousItemIsUploadingKey, _NSMetadataUbiquitousItemPercentDownloadedKey, + _NSMetadataUbiquitousItemPercentUploadedKey, _NSMetadataUbiquitousItemURLInLocalContainerKey, + _NSMetadataUbiquitousItemUploadingErrorKey, _NSMetadataUbiquitousSharedItemCurrentUserPermissionsKey, + _NSMetadataUbiquitousSharedItemCurrentUserRoleKey, _NSMetadataUbiquitousSharedItemMostRecentEditorNameComponentsKey, + _NSMetadataUbiquitousSharedItemOwnerNameComponentsKey, _NSMetadataUbiquitousSharedItemOwnerNameKey, + _NSMetadataUbiquitousSharedItemPermissionsKey, _NSMetadataUbiquitousSharedItemPermissionsReadOnly, + _NSMetadataUbiquitousSharedItemPermissionsReadWrite, _NSMetadataUbiquitousSharedItemReadOnlyPermissions, + _NSMetadataUbiquitousSharedItemReadWritePermissions, _NSMetadataUbiquitousSharedItemRoleKey, + _NSMetadataUbiquitousSharedItemRoleOwner, _NSMetadataUbiquitousSharedItemRoleParticipant, + _NSMinimumKeyValueOperator, _NSMinimumValidValueErrorKey, + _NSMorphologyAttributeName, _NSMouseInRect, _NSMultipleUnderlyingErrorsKey, + _NSNeXTRootDirectory, _NSNegateBooleanTransformerName, _NSNetServicesErrorCode, + _NSNetServicesErrorDomain, _NSNextHashEnumeratorItem, _NSNextMapEnumeratorPair, + _NSNonOwnedPointerHashCallBacks, _NSNonOwnedPointerMapKeyCallBacks, + _NSNonOwnedPointerMapValueCallBacks, _NSNonOwnedPointerOrNullMapKeyCallBacks, + _NSNonRetainedObjectHashCallBacks, _NSNonRetainedObjectMapKeyCallBacks, + _NSNonRetainedObjectMapValueCallBacks, _NSNotFoundRange, _NSOSStatusErrorDomain, + _NSObjectHashCallBacks, _NSObjectInaccessibleException, _NSObjectMapKeyCallBacks, + _NSObjectMapValueCallBacks, _NSObjectNotAvailableException, + _NSOffsetRect, _NSOldStyleException, _NSOpenStepDirectoryForUser, + _NSOpenStepRootDirectory, _NSOperationNotSupportedForKeyException, + _NSOrthographyAllLanguagesForFlags, _NSOrthographyAllScriptsForFlags, + _NSOrthographyDominantLanguageForFlags, _NSOrthographyDominantLanguageForFlagsAndScript, + _NSOrthographyDominantScriptForFlags, _NSOrthographyFlagsForDominantScriptAndLanguageMap, + _NSOrthographyFlagsForScriptAndOrthographyIndexes, _NSOrthographyGetScriptAndOrthographyIndexesForFlags, + _NSOrthographyLanguageMapForFlags, _NSOrthographyScriptIndexForCharacters, + _NSOwnedObjectIdentityHashCallBacks, _NSOwnedPointerHashCallBacks, + _NSOwnedPointerMapKeyCallBacks, _NSOwnedPointerMapValueCallBacks, + _NSPOSIXErrorDomain, _NSPageSize, _NSParseErrorException, + _NSPersonNameComponentDelimiter, _NSPersonNameComponentFamilyName, + _NSPersonNameComponentGivenName, _NSPersonNameComponentKey, + _NSPersonNameComponentMiddleName, _NSPersonNameComponentNickname, + _NSPersonNameComponentPhoneticRepresentation, _NSPersonNameComponentPrefix, + _NSPersonNameComponentSuffix, _NSPersonNameDefaultDisplayNameOrderDefault, + _NSPersonNameDefaultShortNameEnabledDefault, _NSPersonNameDefaultShortNameFormatDefault, + _NSPersonNameDefaultShouldPreferNicknamesPreference, _NSPersonNameLocalizedDefaultAbbreviatedNameStyleKey, + _NSPersonNameLocalizedDefaultInitialsCreatorKey, _NSPersonNameLocalizedDefaultLocaleInfoKey, + _NSPersonNameLocalizedDefaultNameOrderForNonNativeScriptsKey, + _NSPersonNameLocalizedDefaultNameOrderKey, _NSPersonNameLocalizedDefaultScriptInfoKey, + _NSPersonNameLocalizedDefaultShortNameStyleKey, _NSPersonNameLocalizedDefaultShortStyleRestrictionsKey, + _NSPersonNameLocalizedDefaultStyleRestrictionsKey, _NSPointFromString, + _NSPointInRect, _NSPointerToStructHashCallBacks, _NSPopAutoreleasePool, + _NSPortDidBecomeInvalidNotification, _NSPortReceiveException, + _NSPortSendException, _NSPortTimeoutException, _NSPresentationIntentAttributeName, + _NSProcessInfoPowerStateDidChangeNotification, _NSProcessInfoThermalStateDidChangeNotification, + _NSProgressByteCompletedCountKey, _NSProgressByteTotalCountKey, + _NSProgressCategoryKey, _NSProgressEstimatedTimeKey, _NSProgressEstimatedTimeRemainingKey, + _NSProgressFileAnimationImageKey, _NSProgressFileAnimationImageOriginalRectKey, + _NSProgressFileCompletedCountKey, _NSProgressFileDisplayNameKey, + _NSProgressFileDownloadingSourceURLKey, _NSProgressFileIconKey, + _NSProgressFileIconOriginalRectKey, _NSProgressFileLocationCanChangeKey, + _NSProgressFileOperationKindAirDropping, _NSProgressFileOperationKindArchiving, + _NSProgressFileOperationKindCompressing, _NSProgressFileOperationKindCopying, + _NSProgressFileOperationKindDecompressing, _NSProgressFileOperationKindDecompressingAfterDownloading, + _NSProgressFileOperationKindDownloading, _NSProgressFileOperationKindDuplicating, + _NSProgressFileOperationKindKey, _NSProgressFileOperationKindReceiving, + _NSProgressFileOperationKindUnarchiving, _NSProgressFileOperationKindUploading, + _NSProgressFileTotalCountKey, _NSProgressFileURLKey, _NSProgressKindFile, + _NSProgressLocalizedDescriptionFileCountFormatterKey, _NSProgressLocalizedDescriptionFileSizeFormatterOptionsKey, + _NSProgressLocalizedDescriptionPercentCompleteFormatterKey, + _NSProgressLocalizedDescriptionTimeRemainingFormatterKey, + _NSProgressLocalizedDescriptionUnitCountFormatterKey, _NSProgressPhysicalFileURLKey, + _NSProgressSuppressUnitCountInAdditionalDescriptionKey, _NSProgressThroughputKey, + _NSProgressUseItemDescriptionKey, _NSProtocolFromString, _NSPushAutoreleasePool, + _NSRangeFromString, _NSRealMemoryAvailable, _NSReallocateObjectArray, + _NSReallocateScannedUncollectable, _NSRecordAllocationEvent, + _NSRecoveryAttempterErrorKey, _NSRectFromString, _NSRecycleZone, + _NSRegistrationDomain, _NSReplacementIndexAttributeName, _NSRequestConcreteImplementation, + _NSResetHashTable, _NSResetMapTable, _NSReturnAddress, _NSRoundDownToMultipleOfPageSize, + _NSRoundUpToMultipleOfPageSize, _NSScannedZone, _NSSearchPathForDirectoriesInDomains, + _NSSecureUnarchiveFromDataTransformerName, _NSSelectorFromString, + _NSSetUncaughtExceptionHandler, _NSSetZoneName, _NSShouldRetainWithZone, + _NSSizeFromString, _NSSourceFilePathErrorKey, _NSStreamNetworkServiceType, + _NSStreamNetworkServiceTypeBackground, _NSStreamNetworkServiceTypeCallSignaling, + _NSStreamNetworkServiceTypeVideo, _NSStreamNetworkServiceTypeVoIP, + _NSStreamNetworkServiceTypeVoice, _NSStreamSOCKSErrorDomain, + _NSStreamSocketSSLErrorDomain, _NSStringEncodingDetectionAllowLossyKey, + _NSStringEncodingDetectionDisallowedEncodingsKey, _NSStringEncodingDetectionFromWindowsKey, + _NSStringEncodingDetectionLikelyLanguageKey, _NSStringEncodingDetectionLossySubstitutionKey, + _NSStringEncodingDetectionSuggestedEncodingsKey, _NSStringEncodingDetectionUseOnlySuggestedEncodingsKey, + _NSStringEncodingErrorKey, _NSStringFromBOOL, _NSStringFromClass, + _NSStringFromHashTable, _NSStringFromMapTable, _NSStringFromPoint, + _NSStringFromProtocol, _NSStringFromRange, _NSStringFromRect, + _NSStringFromSelector, _NSStringFromSize, _NSSubtractRange, + _NSSumKeyValueOperator, _NSTargetObjectUserInfoKey, _NSTaskDidTerminateNotification, + _NSTemporaryDirectory, _NSTextCheckingAirlineKey, _NSTextCheckingCityKey, + _NSTextCheckingCountryKey, _NSTextCheckingFlightKey, _NSTextCheckingJobTitleKey, + _NSTextCheckingNameKey, _NSTextCheckingOrganizationKey, _NSTextCheckingPhoneKey, + _NSTextCheckingStateKey, _NSTextCheckingStreetKey, _NSTextCheckingZIPKey, + _NSThreadWillExitNotification, _NSTypeIdentifierAddressText, + _NSTypeIdentifierDateText, _NSTypeIdentifierPhoneNumberText, + _NSTypeIdentifierTransitInformationText, _NSURLAuthenticationMethodClientCertificate, + _NSURLAuthenticationMethodDefault, _NSURLAuthenticationMethodHTMLForm, + _NSURLAuthenticationMethodHTTPBasic, _NSURLAuthenticationMethodHTTPDigest, + _NSURLAuthenticationMethodNTLM, _NSURLAuthenticationMethodNegotiate, + _NSURLAuthenticationMethodOAuth, _NSURLAuthenticationMethodServerTrust, + _NSURLAuthenticationMethodXMobileMeAuthToken, _NSURLCredentialStorageChangedNotification, + _NSURLCredentialStorageRemoveSynchronizableCredentials, _NSURLErrorBackgroundTaskCancelledReasonKey, + _NSURLErrorDomain, _NSURLErrorFailingURLErrorKey, _NSURLErrorFailingURLPeerTrustErrorKey, + _NSURLErrorFailingURLStringErrorKey, _NSURLErrorKey, _NSURLErrorNetworkUnavailableReasonKey, + _NSURLFileScheme, _NSURLLocalizedString, _NSURLLog, _NSURLProtectionSpaceFTP, + _NSURLProtectionSpaceFTPProxy, _NSURLProtectionSpaceHTTP, + _NSURLProtectionSpaceHTTPProxy, _NSURLProtectionSpaceHTTPS, + _NSURLProtectionSpaceHTTPSProxy, _NSURLProtectionSpaceSOCKSProxy, + _NSURLReportArgumentAssertionFailure, _NSURLReportAssertionFailure, + _NSURLReportAssertionFailureWithMessage, _NSURLReportError, + _NSURLReportFatalError, _NSURLSessionDownloadTaskResumeData, + _NSURLSessionTaskPriorityDefault, _NSURLSessionTaskPriorityHigh, + _NSURLSessionTaskPriorityLow, _NSURLSessionTransferSizeUnknown, + _NSURLSessionUploadTaskResumeData, _NSUbiquitousKeyValueStoreChangeReasonKey, + _NSUbiquitousKeyValueStoreChangedKeysKey, _NSUbiquitousKeyValueStoreDidChangeExternallyNotification, + _NSUbiquitousUserDefaultsCompletedInitialSyncNotification, + _NSUbiquitousUserDefaultsDidChangeAccountsNotification, _NSUbiquitousUserDefaultsNoCloudAccountNotification, + _NSUbiquityIdentityDidChangeNotification, _NSUnarchiveFromDataTransformerName, + _NSUndefinedKeyException, _NSUnderlyingErrorKey, _NSUndoManagerCheckpointNotification, + _NSUndoManagerDidCloseUndoGroupNotification, _NSUndoManagerDidOpenUndoGroupNotification, + _NSUndoManagerDidRedoChangeNotification, _NSUndoManagerDidUndoChangeNotification, + _NSUndoManagerGroupIsDiscardableKey, _NSUndoManagerWillCloseUndoGroupNotification, + _NSUndoManagerWillRedoChangeNotification, _NSUndoManagerWillUndoChangeNotification, + _NSUnimplemented_, _NSUnionOfArraysKeyValueOperator, _NSUnionOfObjectsKeyValueOperator, + _NSUnionOfSetsKeyValueOperator, _NSUnionRange, _NSUnionRect, + _NSUnknownKeyException, _NSUnknownUserInfoKey, _NSUnscannedZone, + _NSUserActivityContentUserActionCall, _NSUserActivityContentUserActionFacetime, + _NSUserActivityContentUserActionMessage, _NSUserActivityContentUserActionNavigate, + _NSUserActivityContentUserActionPlay, _NSUserActivityContentUserActionRecord, + _NSUserActivityContentUserActionSchedule, _NSUserActivityTypeBrowsingWeb, + _NSUserDefaultsDidChangeNotification, _NSUserDefaultsSizeLimitExceededNotification, + _NSUserName, _NSUserStringVariantErrorKey, _NSWillBecomeMultiThreadedNotification, + _NSXMLParserErrorColumnKey, _NSXMLParserErrorDomain, _NSXMLParserErrorFileNameKey, + _NSXMLParserErrorLineNumberKey, _NSXMLParserErrorMessageKey, + _NSZeroPoint, _NSZeroRange, _NSZeroRect, _NSZeroSize, _NSZombieEnabled, + _NSZoneCalloc, _NSZoneFree, _NSZoneFromPointer, _NSZoneMalloc, + _NSZoneName, _NSZoneRealloc, _NSZoneReallyFree, __NSAEDescriptorByConvertingObjectOfTypeInSuite, + __NSAddAltHandler2, __NSAddExceptionHandlerForLock, __NSAlternateDescriptionAttributeName, + __NSAssertFile, __NSAssertLine, __NSAssumedFallbackInflectionAttributeName, + __NSAttributedStringFromMarkdownWithCreator, __NSAutoreleasePoolGetRubyToken, + __NSAutoreleasePoolSetRubyToken, __NSBundleResourceRequestAssetPackNotificationAssetPackIDKey, + __NSBundleResourceRequestAssetPackPinnedNotification, __NSBundleResourceRequestAssetPackUnpinnedNotification, + __NSBundleResourceRequestClientInterface, __NSBundleResourceRequestErrorDomain, + __NSBundleResourceRequestServerBusyTimeIntervalKey, __NSBundleResourceRequestServerInterface, + __NSCStringCharToUnichar, __NSCStringEncoding, __NSCodeAndEnumerationFlagForTypeInSuite, + __NSCoderIsAppleSigningIdentifier, __NSConvertToASCIIorUnicode, + __NSConvertToASCIIorUnicode2, __NSDateFormatterNoInit, __NSDefaultCStringEncoding, + __NSDefaultFileSystemEncoding, __NSDefaultMallocZoneClaimedAddress, + __NSDefaultStringEncoding, __NSDescriptionWithLocaleFunc, + __NSDescriptionWithStringProxyFunc, __NSEncodingFromDataForExtendedAttribute, + __NSEncodingToNewDataForExtendedAttribute, __NSErrnoMessage, + __NSErrorWithCloudSharingError, __NSErrorWithFilePath, __NSErrorWithFilePathAndEncoding, + __NSErrorWithFilePathAndErrno, __NSErrorWithFilePathErrnoAndVariant, + __NSErrorWithFilePathErrnoVariantAndExtraUserInfo, __NSExceptionHandlerCount, + __NSExceptionRaiser, __NSFCClaimsLog, __NSFCFSEventsLog, __NSFCIP, + __NSFCIPPB, __NSFCLog, __NSFCPresenterLog, __NSFCProcessMonitorLog, + __NSFCProviderLog, __NSFCShouldLog, __NSFCShouldLogForNewClaim, + __NSFaultInObject, __NSFaultInObjectWithCleanup, __NSFoundationBundle, + __NSFoundationResourceDirectory, __NSFullMethodName, __NSGetUsingKeyValueGetter, + __NSGetVoidValueWithMethod, __NSGrammarAttributeName, __NSIPCloneToTemporaryDir, + __NSIPItemQueue, __NSImageURLAttributeName, __NSIndentSpace, + __NSInflectableAttributeName, __NSInflectionAlternativeAttributeName, + __NSInlinePresentationIntentAttributeName, __NSIsLocalizedString, + __NSKeyValueCreateImplicitObservationInfo, __NSKeyValueCreatePendingChangeNotificationArray, + __NSKeyValueGetterForClassAndKey, __NSKeyValueInvalidateAllCachesForContainerAndKey, + __NSKeyValueMutableSetGetterForClassAndKey, __NSKeyValueObserverRegistrationEnableLockingAssertions, + __NSKeyValuePrimitiveGetterForClassAndKey, __NSKeyValuePrimitiveSetterForClassAndKey, + __NSKeyValueRemoveObservationInfoForObject, __NSKeyValueSetterForClassAndKey, + __NSLanguageAttributeName, __NSLinguisticTagSchemeInternalClass, + __NSLinguisticTagSchemePossibleClasses, __NSLocalizedFileSizeDescription, + __NSLogCStringFunction, __NSMethodExceptionProem, __NSNewInlineCString, + __NSNewStringByAppendingStrings, __NSNewStringFromCString, + __NSODRSandboxExtensionKey, __NSODRSandboxRootPathKey, __NSODRURLKey, + __NSObjectByConvertingAEDescriptorToTypeInSuite, __NSPNCSettings, + __NSPerformInflectionsWithObserverAndInflectionRule, __NSPersonNameComponentPhoneticFamilyNameKeyPath, + __NSPersonNameComponentPhoneticGivenNameKeyPath, __NSPersonNameComponentPhoneticMiddleNameKeyPath, + __NSPersonNameComponentPhoneticNicknameKeyPath, __NSPersonNameComponentPhoneticPrefixKeyPath, + __NSPersonNameComponentPhoneticSuffixKeyPath, __NSPrintForDebugger, + __NSProgressRemoteLocalizedAdditionalDescriptionKey, __NSProgressRemoteLocalizedDescriptionKey, + __NSRaiseError, __NSReadExtendedAttributesFromFileDescriptor, + __NSRemoveAltHandler2, __NSRemoveExceptionHandlerForLock, + __NSReplacementIndexAttributeName, __NSRequestConcreteObject, + __NSSetExceptionRaiser, __NSSetLogCStringFunction, __NSSetUsingKeyValueSetter, + __NSSetupLibXML, __NSSoftLinkingGetFrameworkFunction, __NSSoftLinkingLoadFramework, + __NSUserDefaults_Log_Nonsensical_Suites, __NSWriteExtendedAttributesToFileDescriptor, + __NSXMLCreateStringFromContentsOfHTML, __NSXPCConnectionInvocationReplyToSelectorKey, + __NSXPCConnectionInvocationReplyUserInfoKey, __NS_os_log_callback, + __NXAccessFile, __NXCurrentWorkingDir, __NXMakeDirs, __NXRenameFile, + __NXStatFile, ___NSCoderInvalidState, ___NSCreateBPlistMappedDataFromURL, + ___NSCreateBPlistMappedString, ___NSDefaultStringEncodingFullyInited, + ___NSDescribeDelayedPerformCallout, ___NSDescribeNSMachPortCallout, + ___NSDescribeTimerCallout, ___NSFireDelayedPerform, ___NSFireMachPort, + ___NSFireTimer, ___NSPropertyListClasses_ForArchival_ErrorAndException, + '__swift_FORCE_LOAD_$_Foundation', '__swift_FORCE_LOAD_$_swiftFoundation', + _getStackObservedValueClassAndBoxSize ] + objc-classes: [ NSAEDescriptorTranslator, NSAddressCheckingResult, NSAffineTransform, + NSAlignmentLayoutRule, NSAppleEventDescriptor, NSAppleEventManager, + NSAppleScript, NSArchiver, NSArrayChange, NSArrayChanges, + NSAssertionHandler, NSAttributedString, NSAttributedStringMarkdownParsingOptions, + NSAttributedStringMarkdownSourcePosition, NSAutoreleasePool, + NSAutoresizingMaskLayoutConstraint, NSBackgroundActivityScheduler, + NSBigMutableString, NSBlockOperation, NSBlockPredicate, NSBoundKeyPath, + NSBundle, NSBundleResourceRequest, NSByteCountFormatter, NSCachedURLResponse, + NSCalendarDate, NSCharacterSet, NSCheapMutableString, NSClassDescription, + NSCloneCommand, NSCloseCommand, NSCoder, NSComparisonPredicate, + NSComparisonPredicateOperator, NSCompletionCheckingResult, + NSComplexOrthography, NSComplexRegularExpressionCheckingResult, + NSCompoundPredicate, NSCompoundPredicateOperator, NSConcreteAttributedString, + NSConcreteMutableAttributedString, NSConcreteValue, NSCondition, + NSConditionLock, NSConnection, NSConstantDoubleNumber, NSConstantFloatNumber, + NSConstantIntegerNumber, NSConstantString, NSConstantValueExpression, + NSContentSizeLayoutConstraint, NSCorrectionCheckingResult, + NSCountCommand, NSCountedSet, NSCreateCommand, NSDashCheckingResult, + NSDataDetector, NSDateCheckingResult, NSDateComponentsFormatter, + NSDateFormatter, NSDateInterval, NSDateIntervalFormatter, + NSDecimalNumber, NSDecimalNumberHandler, NSDeleteCommand, + NSDeserializer, NSDimension, NSDirectoryEnumerator, NSDistantObject, + NSDistantObjectRequest, NSDistributedLock, NSDistributedNotificationCenter, + NSEmojiCheckingResult, NSEnergyFormatter, NSEqualityPredicateOperator, + NSError, NSExistsCommand, NSExpression, NSExtendedRegularExpressionCheckingResult, + NSExtension, NSExtensionContext, NSExtensionItem, NSFalsePredicate, + NSFileAccessArbiter, NSFileAccessIntent, NSFileCoordinator, + NSFileHandle, NSFileManager, NSFileProviderKernelFileMaterializationInfo, + NSFileProviderKernelMaterializationInfo, NSFileProviderKernelPartialFolderMaterializationInfo, + NSFileProviderMessageInterface, NSFileProviderMessenger, NSFileProviderMovingInfo, + NSFileProviderMovingResponse, NSFileProviderPresenterInfo, + NSFileProviderService, NSFileProvidingInfo, NSFileProvidingResponse, + NSFileVersion, NSFileWrapper, NSFilterObservationTransformer, + NSFormatter, NSFunctionExpression, NSGZipDecoder, NSGetCommand, + NSGrammarCheckingResult, NSHTTPCookie, NSHTTPCookieStorage, + NSHTTPURLResponse, NSHashTable, NSHost, NSIBPrototypingLayoutConstraint, + NSISO8601DateFormatter, NSInPredicateOperator, NSIndexPath, + NSIndexSet, NSIndexSpecifier, NSInflectionRule, NSInflectionRuleExplicit, + NSInvocationOperation, NSItemProvider, NSItemProviderRepresentation, + NSItemRepresentationLoadResult, NSJSONSerialization, NSKeyBinding, + NSKeyGetBinding, NSKeyPathExpression, NSKeyPathSpecifierExpression, + NSKeySetBinding, NSKeyValueAccessor, NSKeyValueGetter, NSKeyValueSetter, + NSKeyValueSharedObservers, NSKeyValueSharedObserversSnapshot, + NSKeyedArchiver, NSKeyedUnarchiver, NSLanguageContext, NSLayoutAnchor, + NSLayoutAnchorRule, NSLayoutConstraint, NSLayoutConstraintExplainer, + NSLayoutDimension, NSLayoutPoint, NSLayoutPointRule, NSLayoutRect, + NSLayoutRectRule, NSLayoutXAxisAnchor, NSLayoutYAxisAnchor, + NSLengthFormatter, NSLinguisticTagger, NSLinkCheckingResult, + NSListFormatter, NSLocalizableString, NSLocalizedNumberFormatRule, + NSLock, NSLogicalTest, NSLookupMatch, NSMachBootstrapServer, + NSMapTable, NSMassFormatter, NSMeasurement, NSMeasurementFormatter, + NSMessagePort, NSMessagePortNameServer, NSMetadataItem, NSMetadataQuery, + NSMetadataQueryAttributeValueTuple, NSMetadataQueryResultGroup, + NSMiddleSpecifier, NSMorphology, NSMorphologyCustomPronoun, + NSMorphologyPronoun, NSMoveCommand, NSMultiReadUniWriteLock, + NSMutableAttributedString, NSMutableCharacterSet, NSMutableIndexSet, + NSMutableRLEArray, NSMutableString, NSMutableStringProxyForMutableAttributedString, + NSMutableURLRequest, NSNameSpecifier, NSNetService, NSNetServiceBrowser, + NSNotification, NSNotificationCenter, NSNotificationObservable, + NSNotificationQueue, NSNumber, NSNumberFormatter, NSObservableKeyPath, + NSObservation, NSObservationBuffer, NSObservationSink, NSObservationSource, + NSObservationTransformer, NSObserverKeyPath, NSOldValueObservationTransformer, + NSOperation, NSOperationQueue, NSOrderedCollectionChange, + NSOrderedCollectionDifference, NSOrderedSetChange, NSOrderedSetChanges, + NSOrthography, NSOrthographyCheckingResult, NSPersonNameComponents, + NSPersonNameComponentsFormatter, NSPhoneNumberCheckingResult, + NSPinyinString, NSPipe, NSPlaceholderMutableString, NSPlaceholderString, + NSPointerArray, NSPointerFunctions, NSPortCoder, NSPortMessage, + NSPortNameServer, NSPositionalSpecifier, NSPredicate, NSPredicateOperator, + NSPresentationIntent, NSProcessInfo, NSProgress, NSPropertyListSerialization, + NSPropertySpecifier, NSProtocolChecker, NSProxy, NSPurgeableData, + NSQuitCommand, NSQuoteCheckingResult, NSRLEArray, NSRTFD, + NSRandomSpecifier, NSRangeSpecifier, NSRecursiveLock, NSReduceObservationTransformer, + NSRegularExpression, NSRegularExpressionCheckingResult, NSRelativeDateTimeFormatter, + NSRelativeSpecifier, NSReplacementCheckingResult, NSScanner, + NSScriptArgumentDescription, NSScriptAttributeDescription, + NSScriptClassDescription, NSScriptCoercionHandler, NSScriptCommand, + NSScriptCommandDescription, NSScriptDeclaredRecordTypeDescription, + NSScriptEnumerationDescription, NSScriptEnumeratorDescription, + NSScriptExecutionContext, NSScriptObjectSpecifier, NSScriptPropertyDescription, + NSScriptRecordFieldDescription, NSScriptRecordTypeDescription, + NSScriptSuiteDescription, NSScriptSuiteRegistry, NSScriptTypeDescription, + NSScriptValueTypeDescription, NSScriptWhoseTest, NSScriptingAppleEventHandler, + NSSecureUnarchiveFromDataTransformer, NSSecurityScopedURLWrapper, + NSSelfExpression, NSSerializer, NSSetChange, NSSetChanges, + NSSetCommand, NSSetExpression, NSSimpleCString, NSSimpleOrthography, + NSSimpleRegularExpressionCheckingResult, NSSmartPunctuationController, + NSSmartQuoteOptions, NSSortDescriptor, NSSpecifierTest, NSSpellCheckingResult, + NSSpellServer, NSStackInContainerRule, NSStackLayoutRule, + NSString, NSStringPredicateOperator, NSSubqueryExpression, + NSSubstitutionCheckingResult, NSSubstringPredicateOperator, + NSTask, NSTermOfAddress, NSTernaryExpression, NSTextCheckingKeyEvent, + NSTextCheckingResult, NSThread, NSTransitInformationCheckingResult, + NSTruePredicate, NSURLAuthenticationChallenge, NSURLCache, + NSURLComponents, NSURLConnection, NSURLCredential, NSURLCredentialStorage, + NSURLDownload, NSURLError, NSURLFileTypeMappings, NSURLHandle, + NSURLProtectionSpace, NSURLProtocol, NSURLQueryItem, NSURLRequest, + NSURLResponse, NSURLSession, NSURLSessionConfiguration, NSURLSessionDataTask, + NSURLSessionDownloadTask, NSURLSessionStreamTask, NSURLSessionTask, + NSURLSessionTaskMetrics, NSURLSessionTaskTransactionMetrics, + NSURLSessionUploadTask, NSURLSessionWebSocketMessage, NSURLSessionWebSocketTask, + NSUUID, NSUbiquitousKeyValueStore, NSUnarchiver, NSUndoManager, + NSUniqueIDSpecifier, NSUnit, NSUnitAcceleration, NSUnitAngle, + NSUnitArea, NSUnitConcentrationMass, NSUnitConverter, NSUnitConverterLinear, + NSUnitDispersion, NSUnitDuration, NSUnitElectricCharge, NSUnitElectricCurrent, + NSUnitElectricPotentialDifference, NSUnitElectricResistance, + NSUnitEnergy, NSUnitFrequency, NSUnitFuelEfficiency, NSUnitIlluminance, + NSUnitInformationStorage, NSUnitLength, NSUnitMass, NSUnitPower, + NSUnitPressure, NSUnitSpeed, NSUnitTemperature, NSUnitVolume, + NSUserActivity, NSValue, NSValueTransformer, NSVariableExpression, + NSVisualFormatLayoutRule, NSWhoseSpecifier, NSXMLAttributeDeclaration, + NSXMLDTD, NSXMLDTDNode, NSXMLDocument, NSXMLElement, NSXMLElementDeclarationContent, + NSXMLNode, NSXMLParser, NSXPCCoder, NSXPCConnection, NSXPCDecoder, + NSXPCEncoder, NSXPCInterface, NSXPCListener, NSXPCListenerEndpoint, + NSZipFileArchive, _NSAttributedStringGrammar, _NSAttributedStringGrammarInflection, + _NSBundleODRTag, _NSCloudSharingDescriptor, _NSExtensionContextVendor, + _NSKVOCompatibility, _NSKeyValueObservation, _NSLocalizedStringResource, + _NSSharedValueTransformer, _NSStringFormattingOptions ] + objc-ivars: [ NSBlockPredicate._block, NSComplexOrthography._dominantScript, + NSComplexOrthography._languageMap, NSComplexOrthography._orthographyFlags, + NSConcreteValue._specialFlags, NSConcreteValue.typeInfo, NSConstantDoubleNumber._value, + NSConstantFloatNumber._value, NSConstantIntegerNumber._encoding, + NSConstantIntegerNumber._value, NSDataDetector._types, NSDimension._converter, + NSFilterObservationTransformer._predicate, NSInPredicateOperator._flags, + NSInPredicateOperator._stringVersion, NSIndexSet._indexSetFlags, + NSIndexSet._internal, NSKeyBinding._class, NSKeyBinding._funcP, + NSKeyBinding._key, NSLocalizableString._developmentLanguageString, + NSLocalizableString._stringsFileKey, NSOldValueObservationTransformer._lastValue, + NSPinyinString._deletionCount, NSPinyinString._firstModificationIndex, + NSPinyinString._insertionCount, NSPinyinString._lastSyllableIsPartial, + NSPinyinString._rangeCount, NSPinyinString._ranges, NSPinyinString._replacementCount, + NSPinyinString._score, NSPinyinString._string, NSPinyinString._syllableCount, + NSPinyinString._transpositionCount, NSPredicate._predicateFlags, + NSPredicate.reserved, NSProxy.isa, NSRegularExpression._checkout, + NSRegularExpression._internal, NSRegularExpression._options, + NSRegularExpression._pattern, NSSimpleOrthography._orthographyFlags, + NSSmartPunctuationController._client, NSSmartPunctuationController._options, + NSSmartPunctuationController._types, NSSmartQuoteOptions._apostrophe, + NSSmartQuoteOptions._leftDoubleQuote, NSSmartQuoteOptions._leftSingleQuote, + NSSmartQuoteOptions._rightDoubleQuote, NSSmartQuoteOptions._rightSingleQuote, + NSURLHandle._clients, NSURLHandle._data, NSURLHandle._reserved, + NSURLHandle._status, NSUserScriptTask._connection, NSUserScriptTask._hasExeced, + NSUserScriptTask._hasTerminated, NSUserScriptTask._scriptURL, + NSUserScriptTask._stderr, NSUserScriptTask._stdin, NSUserScriptTask._stdout, + NSVariableExpression._variable, NSXMLDTDNode._DTDKind, NSXMLDTDNode._name, + NSXMLDTDNode._notationName, NSXMLDTDNode._publicID, NSXMLDTDNode._systemID, + NSXMLDocument._URI, NSXMLDocument._children, NSXMLDocument._childrenHaveMutated, + NSXMLDocument._contentKind, NSXMLDocument._docType, NSXMLDocument._encoding, + NSXMLDocument._extraIvars, NSXMLDocument._fidelityMask, NSXMLDocument._rootElement, + NSXMLDocument._standalone, NSXMLDocument._version, NSXMLDocument.padding, + NSXMLElement._URI, NSXMLElement._attributes, NSXMLElement._children, + NSXMLElement._childrenHaveMutated, NSXMLElement._name, NSXMLElement._namespaces, + NSXMLElement._padding, NSXMLElement._prefixIndex, NSXMLElement._zeroOrOneAttributes, + NSXMLElement._zeroOrOneNamespaces, NSXMLNode._index, NSXMLNode._kind, + NSXMLNode._objectValue, NSXMLNode._parent, _NSCloudSharingDescriptor._invitationsSentViaThirdPartyService, + _NSCloudSharingDescriptor._numberOfInvitations, _NSCloudSharingDescriptor._operation, + _NSCloudSharingDescriptor._publicShare, _NSCloudSharingDescriptor._sharedContentType ] + - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] + symbols: [ _NSAMPMDesignation, _NSAllocateCollectable, _NSAppleScriptErrorAppName, _NSAppleScriptErrorBriefMessage, _NSAppleScriptErrorMessage, _NSAppleScriptErrorNumber, _NSAppleScriptErrorRange, _NSCurrencySymbol, _NSDateFormatString, _NSDateTimeOrdering, _NSDecimalDigits, @@ -9745,7 +12133,7 @@ exports: objc-classes: [ NSGarbageCollector, NSSocketPort, NSSocketPortNameServer, NSURLConnectionDelegateProxy, NSUserAppleScriptTask, NSUserAutomatorTask, NSUserNotification, NSUserNotificationAction, NSUserNotificationCenter, - NSUserScriptTask, NSUserUnixTask, _NSKeyValueObservation ] + NSUserScriptTask, NSUserUnixTask ] - targets: [ x86_64-maccatalyst, arm64-maccatalyst, arm64e-maccatalyst ] symbols: [ _NSExtensionJavaScriptFinalizeArgumentKey, _NSFileProtectionCompleteWhenUserInactive ] ... diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/Foundation.h b/Frameworks/Foundation.framework/Versions/C/Headers/Foundation.h index 706fde39..05c7b592 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/Foundation.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/Foundation.h @@ -24,7 +24,6 @@ #import #import #import -#import #import #import #import @@ -49,6 +48,7 @@ #import #import #import +#import #import #import #import @@ -60,6 +60,7 @@ #import #import #import +#import #import #import #import diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSAttributedString.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSAttributedString.h index 552d8e74..bf4711ea 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSAttributedString.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSAttributedString.h @@ -337,6 +337,10 @@ FOUNDATION_EXPORT NSAttributedStringKey const NSInflectionAlternativeAttributeNa NS_SWIFT_NAME(inflectionAlternative) API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)); +FOUNDATION_EXPORT NSAttributedStringKey const NSLocalizedNumberFormatAttributeName + NS_SWIFT_NAME(localizedNumberFormat) + API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + FOUNDATION_EXTERN const NSAttributedStringKey NSPresentationIntentAttributeName API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)); diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSBundle.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSBundle.h index c621919c..3b260c2c 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSBundle.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSBundle.h @@ -53,7 +53,11 @@ NS_SWIFT_SENDABLE @property (nullable, readonly, copy) NSURL *sharedSupportURL API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); @property (nullable, readonly, copy) NSURL *builtInPlugInsURL API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); +#if defined(__swift__) // Deprecated for Swift only +@property (nullable, readonly, copy) NSURL *appStoreReceiptURL API_DEPRECATED("Use AppTransaction.shared and Transaction.all from StoreKit.framework instead", macosx(10.7,15.0), ios(7.0,18.0), watchos(2.0,11.0), tvos(9.0,18.0)); +#else @property (nullable, readonly, copy) NSURL *appStoreReceiptURL API_AVAILABLE(macos(10.7), ios(7.0), watchos(2.0), tvos(9.0)); +#endif @property (readonly, copy) NSString *bundlePath; @property (nullable, readonly, copy) NSString *resourcePath; @@ -93,6 +97,15 @@ NS_SWIFT_SENDABLE - (NSAttributedString *)localizedAttributedStringForKey:(NSString *)key value:(nullable NSString *)value table:(nullable NSString *)tableName NS_FORMAT_ARGUMENT(1) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)); #endif +/// Look up a localized string given a list of available localizations. +/// - Parameters: +/// - key: The key for the localized string to retrieve. +/// - value: A default value to return if a localized string for ``key`` cannot be found. +/// - tableName: The name of the strings file to search. If `nil`, the method uses tables in `Localizable.strings`. +/// - localizations: An array of BCP 47 language codes corresponding to available localizations. Bundle compares the array against its available localizations, and uses the best result to retrieve the localized string. If empty, we treat it as no localization is available, and may return a fallback. +/// - Returns: A localized version of the string designated by ``key`` in table ``tableName``. +- (NSString *)localizedStringForKey:(NSString *)key value:(nullable NSString *)value table:(nullable NSString *)tableName localizations:(NSArray*)localizations NS_FORMAT_ARGUMENT(1) API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4), visionos(2.4)) NS_REFINED_FOR_SWIFT; + /* Methods for obtaining various information about a bundle. */ @property (nullable, readonly, copy) NSString *bundleIdentifier; @property (nullable, readonly, copy) NSDictionary *infoDictionary; @@ -168,7 +181,7 @@ FOUNDATION_EXPORT NSString * const NSLoadedClasses; // notification key API_AVAILABLE(ios(9.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos) @interface NSBundleResourceRequest : NSObject -- (instancetype)init API_UNAVAILABLE(macos, ios, watchos, tvos); +- (instancetype)init NS_UNAVAILABLE; /* A tag and bundle are required arguments to the init methods. The tag argument is required and it must exist in the manifest of the specified bundle. The bundle argument describes an existing bundle which was built with on demand resources support. Any resources downloaded can be found using the standard NSBundle resource lookup API once the request is completed. If no bundle is specified then the main bundle is used. diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSCalendar.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSCalendar.h index 27237d52..1fbda7e1 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSCalendar.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSCalendar.h @@ -61,25 +61,27 @@ typedef NS_OPTIONS(NSUInteger, NSCalendarUnit) { NSCalendarUnitWeekOfYear API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = kCFCalendarUnitWeekOfYear, NSCalendarUnitYearForWeekOfYear API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = kCFCalendarUnitYearForWeekOfYear, NSCalendarUnitNanosecond API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = (1 << 15), + NSCalendarUnitDayOfYear API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)) = kCFCalendarUnitDayOfYear, NSCalendarUnitCalendar API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)) = (1 << 20), NSCalendarUnitTimeZone API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)) = (1 << 21), - - NSEraCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitEra", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitEra, - NSYearCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitYear", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitYear, - NSMonthCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitMonth", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitMonth, - NSDayCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitDay", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitDay, - NSHourCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitHour", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitHour, - NSMinuteCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitMinute", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitMinute, - NSSecondCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitSecond", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitSecond, - NSWeekCalendarUnit API_DEPRECATED("NSCalendarUnitWeekOfMonth or NSCalendarUnitWeekOfYear, depending on which you mean", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = kCFCalendarUnitWeek, - NSWeekdayCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitWeekday", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitWeekday, - NSWeekdayOrdinalCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitWeekdayOrdinal", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitWeekdayOrdinal, - NSQuarterCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitQuarter", macos(10.6, 10.10), ios(4.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitQuarter, - NSWeekOfMonthCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitWeekOfMonth", macos(10.7, 10.10), ios(5.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitWeekOfMonth, - NSWeekOfYearCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitWeekOfYear", macos(10.7, 10.10), ios(5.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitWeekOfYear, - NSYearForWeekOfYearCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitYearForWeekOfYear", macos(10.7, 10.10), ios(5.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitYearForWeekOfYear, - NSCalendarCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitCalendar", macos(10.7, 10.10), ios(4.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitCalendar, - NSTimeZoneCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitTimeZone", macos(10.7, 10.10), ios(4.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitTimeZone, + #if !0 + NSEraCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitEra", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitEra, + NSYearCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitYear", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitYear, + NSMonthCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitMonth", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitMonth, + NSDayCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitDay", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitDay, + NSHourCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitHour", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitHour, + NSMinuteCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitMinute", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitMinute, + NSSecondCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitSecond", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitSecond, + NSWeekCalendarUnit API_DEPRECATED("NSCalendarUnitWeekOfMonth or NSCalendarUnitWeekOfYear, depending on which you mean", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = kCFCalendarUnitWeek, + NSWeekdayCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitWeekday", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitWeekday, + NSWeekdayOrdinalCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitWeekdayOrdinal", macos(10.4, 10.10), ios(2.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitWeekdayOrdinal, + NSQuarterCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitQuarter", macos(10.6, 10.10), ios(4.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitQuarter, + NSWeekOfMonthCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitWeekOfMonth", macos(10.7, 10.10), ios(5.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitWeekOfMonth, + NSWeekOfYearCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitWeekOfYear", macos(10.7, 10.10), ios(5.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitWeekOfYear, + NSYearForWeekOfYearCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitYearForWeekOfYear", macos(10.7, 10.10), ios(5.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitYearForWeekOfYear, + NSCalendarCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitCalendar", macos(10.7, 10.10), ios(4.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitCalendar, + NSTimeZoneCalendarUnit API_DEPRECATED_WITH_REPLACEMENT("NSCalendarUnitTimeZone", macos(10.7, 10.10), ios(4.0, 8.0), watchos(2.0, 2.0), tvos(9.0, 9.0)) = NSCalendarUnitTimeZone, + #endif }; typedef NS_OPTIONS(NSUInteger, NSCalendarOptions) { @@ -111,7 +113,7 @@ enum { */ + (nullable NSCalendar *)calendarWithIdentifier:(NSCalendarIdentifier)calendarIdentifierConstant API_AVAILABLE(macos(10.9), ios(8.0), watchos(2.0), tvos(9.0)); -- (instancetype)init API_UNAVAILABLE(macos, ios, watchos, tvos); +- (instancetype)init NS_UNAVAILABLE; - (nullable id)initWithCalendarIdentifier:(NSCalendarIdentifier)ident NS_DESIGNATED_INITIALIZER; @@ -431,6 +433,7 @@ NS_ENUM(NSInteger) { @property NSInteger weekOfMonth API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); @property NSInteger weekOfYear API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); @property NSInteger yearForWeekOfYear API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); +@property NSInteger dayOfYear API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); @property (getter=isLeapMonth) BOOL leapMonth API_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0)); @property (nullable, readonly, copy) NSDate *date API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)); @@ -446,7 +449,7 @@ NS_ENUM(NSInteger) { /* This API allows one to get the value of a specific component of NSDateComponents, by enum constant value rather than property name. - The calendar and timeZone and isLeapMonth property values cannot be gotten by this method. + The calendar and timeZone and isLeapMonth property values cannot be retrieved by this method. */ - (NSInteger)valueForComponent:(NSCalendarUnit)unit API_AVAILABLE(macos(10.9), ios(8.0), watchos(2.0), tvos(9.0)); diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSCoder.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSCoder.h index 30134771..6a1d1db6 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSCoder.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSCoder.h @@ -77,6 +77,14 @@ typedef NS_ENUM(NSInteger, NSDecodingFailurePolicy) { - (double)decodeDoubleForKey:(NSString *)key; - (nullable const uint8_t *)decodeBytesForKey:(NSString *)key returnedLength:(nullable NSUInteger *)lengthp NS_RETURNS_INNER_POINTER; // returned bytes immutable! +/// Decode bytes from the decoder. The length of the bytes must be greater than or equal to the `length` parameter. +/// If the result exists, but is of insufficient length, then the decoder uses `failWithError` to fail the entire decode operation. The result of that is configurable on a per-NSCoder basis using `NSDecodingFailurePolicy`. +- (nullable void *)decodeBytesWithMinimumLength:(NSUInteger)length API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4), visionos(2.4)) NS_RETURNS_INNER_POINTER; + +/// Decode bytes from the decoder for a given key. The length of the bytes must be greater than or equal to the `length` parameter. +/// If the result exists, but is of insufficient length, then the decoder uses `failWithError` to fail the entire decode operation. The result of that is configurable on a per-NSCoder basis using `NSDecodingFailurePolicy`. +- (nullable const uint8_t *)decodeBytesForKey:(NSString *)key minimumLength:(NSUInteger)length API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4), visionos(2.4)) NS_RETURNS_INNER_POINTER; + - (void)encodeInteger:(NSInteger)value forKey:(NSString *)key API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); - (NSInteger)decodeIntegerForKey:(NSString *)key API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSDecimal.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSDecimal.h index 74d45ad8..535eb036 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSDecimal.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSDecimal.h @@ -58,28 +58,28 @@ FOUNDATION_EXPORT void NSDecimalCopy(NSDecimal *destination, const NSDecimal *so FOUNDATION_EXPORT void NSDecimalCompact(NSDecimal *number); FOUNDATION_EXPORT NSComparisonResult NSDecimalCompare(const NSDecimal *leftOperand, const NSDecimal *rightOperand); - // NSDecimalCompare:Compares leftOperand and rightOperand. +// NSDecimalCompare:Compares leftOperand and rightOperand. FOUNDATION_EXPORT void NSDecimalRound(NSDecimal *result, const NSDecimal *number, NSInteger scale, NSRoundingMode roundingMode); - // Rounds num to the given scale using the given mode. - // result may be a pointer to same space as num. - // scale indicates number of significant digits after the decimal point +// Rounds num to the given scale using the given mode. +// result may be a pointer to same space as num. +// scale indicates number of significant digits after the decimal point FOUNDATION_EXPORT NSCalculationError NSDecimalNormalize(NSDecimal *number1, NSDecimal *number2, NSRoundingMode roundingMode); FOUNDATION_EXPORT NSCalculationError NSDecimalAdd(NSDecimal *result, const NSDecimal *leftOperand, const NSDecimal *rightOperand, NSRoundingMode roundingMode); - // Exact operations. result may be a pointer to same space as leftOperand or rightOperand +// Exact operations. result may be a pointer to same space as leftOperand or rightOperand FOUNDATION_EXPORT NSCalculationError NSDecimalSubtract(NSDecimal *result, const NSDecimal *leftOperand, const NSDecimal *rightOperand, NSRoundingMode roundingMode); - // Exact operations. result may be a pointer to same space as leftOperand or rightOperand +// Exact operations. result may be a pointer to same space as leftOperand or rightOperand FOUNDATION_EXPORT NSCalculationError NSDecimalMultiply(NSDecimal *result, const NSDecimal *leftOperand, const NSDecimal *rightOperand, NSRoundingMode roundingMode); - // Exact operations. result may be a pointer to same space as leftOperand or rightOperand +// Exact operations. result may be a pointer to same space as leftOperand or rightOperand FOUNDATION_EXPORT NSCalculationError NSDecimalDivide(NSDecimal *result, const NSDecimal *leftOperand, const NSDecimal *rightOperand, NSRoundingMode roundingMode); - // Division could be silently inexact; - // Exact operations. result may be a pointer to same space as leftOperand or rightOperand - +// Division could be silently inexact; +// Exact operations. result may be a pointer to same space as leftOperand or rightOperand + FOUNDATION_EXPORT NSCalculationError NSDecimalPower(NSDecimal *result, const NSDecimal *number, NSUInteger power, NSRoundingMode roundingMode); FOUNDATION_EXPORT NSCalculationError NSDecimalMultiplyByPowerOf10(NSDecimal *result, const NSDecimal *number, short power, NSRoundingMode roundingMode); diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSDecimalNumber.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSDecimalNumber.h index 18c7940a..72058310 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSDecimalNumber.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSDecimalNumber.h @@ -44,9 +44,7 @@ NS_SWIFT_SENDABLE // Immutable with no mutable subclasses unsigned int _reserved:1; unsigned int _hasExternalRefCount:1; unsigned int _refs:16; - - unsigned short _mantissa[0]; /* GCC */ - + unsigned short _mantissa[]; } - (instancetype)initWithMantissa:(unsigned long long)mantissa exponent:(short)exponent isNegative:(BOOL)flag; diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSDistributedLock.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSDistributedLock.h index 3e76f3b6..cfdb7051 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSDistributedLock.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSDistributedLock.h @@ -13,7 +13,7 @@ NS_SWIFT_SENDABLE // Locks are inherently Sendable by definition + (nullable NSDistributedLock *)lockWithPath:(NSString *)path; -- (instancetype)init API_UNAVAILABLE(macos, ios, watchos, tvos); +- (instancetype)init NS_UNAVAILABLE; - (nullable instancetype)initWithPath:(NSString *)path NS_DESIGNATED_INITIALIZER; - (BOOL)tryLock; diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSError.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSError.h index 54d11ab1..ff3c3683 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSError.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSError.h @@ -42,13 +42,7 @@ FOUNDATION_EXPORT NSErrorUserInfoKey const NSURLErrorKey; // NSURL FOUNDATION_EXPORT NSErrorUserInfoKey const NSFilePathErrorKey; // NSString NS_SWIFT_SENDABLE // Immutable, and NSError must be Sendable because it conforms to Error in Swift -@interface NSError : NSObject { - @private - void *_reserved; - NSInteger _code; - NSString *_domain; - NSDictionary *_userInfo; -} +@interface NSError : NSObject /* Domain cannot be nil; dict may be nil if no userInfo desired. */ diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSFilePresenter.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSFilePresenter.h index aa454aee..354fcc24 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSFilePresenter.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSFilePresenter.h @@ -67,6 +67,12 @@ The file coordination mechanism does not always send -relinquishPresentedItemToR */ - (void)accommodatePresentedItemDeletionWithCompletionHandler:(void (NS_SWIFT_SENDABLE ^)(NSError * _Nullable errorOrNil))completionHandler; +/* Given that something in the system is waiting to evict the presented file or directory, do whatever it takes to ensure that the eviction will succeed and that the receiver's application will behave properly when the eviction has happened, and then invoke the completion handler. This must include calling `+[NSFileCoordinator removeFilePresenter:]`. If successful, pass nil to the completion handler. If not successful, or to prevent the eviction of the file, throw an error that encapsulates the reason. Implementations of this method must always invoke the completion handler because other parts of the system will wait until it is invoked or until the user loses patience and cancels the waiting. + +If this method is not implemented, eviction will fail. +*/ +- (void)accommodatePresentedItemEvictionWithCompletionHandler:(void (NS_SWIFT_SENDABLE ^)(NSError * _Nullable errorOrNil))completionHandler API_AVAILABLE(macos(14.4), ios(17.4)) API_UNAVAILABLE(watchos, tvos); + /* Be notified that the file or directory has been moved or renamed, or a directory containing it has been moved or renamed. A typical implementation of this method will cause subsequent invocations of -presentedItemURL to return the new URL. The new URL may have a different file name extension than the current value of the presentedItemURL property. diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSFormatter.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSFormatter.h index 82783dc0..8f9f5bbb 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSFormatter.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSFormatter.h @@ -45,6 +45,9 @@ typedef NS_ENUM(NSInteger, NSFormattingUnitStyle) { NSFormattingUnitStyleLong, } API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); +// NSFormatter does not specify if it is Sendable. Subclasses should annotate themselves. +// This allows subclasses to declare sendable conformances without requiring that all subclasses must be sendable +NS_HEADER_AUDIT_END(sendability) @interface NSFormatter : NSObject - (nullable NSString *)stringForObjectValue:(nullable id)obj; @@ -61,5 +64,6 @@ typedef NS_ENUM(NSInteger, NSFormattingUnitStyle) { - (BOOL)isPartialStringValid:(NSString * _Nonnull * _Nonnull)partialStringPtr proposedSelectedRange:(nullable NSRangePointer)proposedSelRangePtr originalString:(NSString *)origString originalSelectedRange:(NSRange)origSelRange errorDescription:(NSString * _Nullable * _Nullable)error; @end +NS_HEADER_AUDIT_BEGIN(sendability) NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSHTTPCookie.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSHTTPCookie.h index 910a26c9..e36e4021 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSHTTPCookie.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSHTTPCookie.h @@ -97,6 +97,12 @@ FOUNDATION_EXPORT NSHTTPCookiePropertyKey const NSHTTPCookieMaximumAge API_AVAIL */ FOUNDATION_EXPORT NSHTTPCookiePropertyKey const NSHTTPCookiePort API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)); +/*! + @const NSHTTPCookieSetByJavaScript + @discussion An NSString object indicating that the cookie is set via JavaScript. + */ + FOUNDATION_EXPORT NSHTTPCookiePropertyKey const NSHTTPCookieSetByJavaScript API_AVAILABLE(macos(15.2), ios(18.2), watchos(11.2), tvos(18.2), visionos(2.2)); + /*! @const NSHTTPCookieSameSitePolicy @discussion Key for cookie same site @@ -250,6 +256,13 @@ API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) Specifies the version of the cookie. Must be either "0" or "1". Default is "0". + + NSHTTPCookieSetByJavaScript + NSNumber + NO + @YES if the cookie is set via JavaScript. @NO if the cookie + is not set via JavaScript +

All other keys are ignored. diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSKeyValueSharedObservers.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSKeyValueSharedObservers.h new file mode 100644 index 00000000..8f8eaf24 --- /dev/null +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSKeyValueSharedObservers.h @@ -0,0 +1,77 @@ +// +// NSKeyValueSharedObservers.h +// Foundation +// +// Copyright (c) 2024, Apple Inc. +// All rights reserved. +// + +#import + +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// A collection of key-value observations which may be registered with multiple +/// observable objects. Create using ``-[NSKeyValueSharedObservers snapshot]`` +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)) +@interface NSKeyValueSharedObserversSnapshot: NSObject +- (id)init NS_UNAVAILABLE; ++ (id)new NS_UNAVAILABLE; +@end + +/// A collection of key-value observations which may be registered with multiple +/// observable objects +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)) +@interface NSKeyValueSharedObservers: NSObject +/// A new collection of observables for an observable object of the given class +- (id)initWithObservableClass:(Class)observableClass; +- (id)init NS_UNAVAILABLE; ++ (id)new NS_UNAVAILABLE; + +/// Add a new observer to the collection. +/// +/// This method works like `-[NSObject addObserver: forKey: options: context:]`, +/// but observations on nested and computed properties are disallowed. Observers +/// are not registered until `setSharedObservers` is called on the observable. +/// +/// - Parameter observer: The observer object to register for KVO notifications. +/// The observer must implement the key-value observing method ``observeValue: +/// forKeyPath: of: change: context:`` +/// - Parameter key: key of the property being observed. This cannot be a nested +/// key path or a computed property +/// - Parameter options: A combination of NSKeyValueObservingOptions values that +/// specify what is included in observation notifications. For possible values +/// see NSKeyValueObservingOptions. +/// - Parameter context: Arbitrary data which is passed to the observer object +- (void)addSharedObserver:(NSObject *)observer + forKey:(NSString *)key + options:(NSKeyValueObservingOptions)options + context:(nullable void *)context; + +- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context NS_UNAVAILABLE; + +/// A momentary snapshot of all observers added to the collection thus far, that +/// can be assigned to an observable using ``-[NSObject setSharedObservers:]`` +- (NSKeyValueSharedObserversSnapshot *)snapshot; +@end + +@interface NSObject(NSKeyValueSharedObserverRegistration) +/// Register shared observations. +/// +/// A shared observation collection might be shared between multiple observables +/// to minimise registration work. Shared observers remain registered throughout +/// the object's lifetime and do not need to be removed using `removeObserver:`. +/// +/// An observable may only have one set of shared observations. Subsequent calls +/// to this method will replace existing shared observations. +/// +/// - Parameter sharedObservers: shared observer collection that was initialized +/// with the class of this object +/// - Invariant: `sharedObserers` was initialized with the class of this object +/// - Throws: Exception if the class of the receiving observable object does not +/// match the class with which `sharedObserers` was initialized. +- (void)setSharedObservers:(NSKeyValueSharedObserversSnapshot * _Nullable)sharedObservers API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); + + +@end + +NS_HEADER_AUDIT_END(nullability, sendability) diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSLocale.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSLocale.h index 07315b80..bb8154cc 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSLocale.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSLocale.h @@ -94,7 +94,7 @@ NS_SWIFT_SENDABLE // Immutable with no mutable subclasses + (instancetype)localeWithLocaleIdentifier:(NSString *)ident API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); -- (instancetype)init API_UNAVAILABLE(macos, ios, watchos, tvos); /* do not invoke; not a valid initializer for this class */ +- (instancetype)init NS_UNAVAILABLE; /* do not invoke; not a valid initializer for this class */ @end diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSLocalizedNumberFormatRule.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSLocalizedNumberFormatRule.h new file mode 100644 index 00000000..d4d7fbb5 --- /dev/null +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSLocalizedNumberFormatRule.h @@ -0,0 +1,25 @@ +// +// NSLocalizedNumberFormatRule.h +// Foundation +// +// Copyright (c) 2024, Apple Inc. +// All rights reserved. +// + +#import + +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + +API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)) +NS_REFINED_FOR_SWIFT +@interface NSLocalizedNumberFormatRule : NSObject + ++ (id)new NS_UNAVAILABLE; +- (id)init NS_UNAVAILABLE; + ++ (NSLocalizedNumberFormatRule *)automatic; + +@end + +NS_HEADER_AUDIT_END(nullability, sendability) + diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSMeasurement.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSMeasurement.h index d773ecd8..81e4936e 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSMeasurement.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSMeasurement.h @@ -19,7 +19,7 @@ API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0), tvos(10.0)) @property (readonly, copy) UnitType unit; @property (readonly) double doubleValue; -- (instancetype)init API_UNAVAILABLE(macos, ios, watchos, tvos); +- (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithDoubleValue:(double)doubleValue unit:(UnitType)unit NS_DESIGNATED_INITIALIZER; /* diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSNumberFormatter.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSNumberFormatter.h index dfe30964..d437ad95 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSNumberFormatter.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSNumberFormatter.h @@ -54,6 +54,8 @@ typedef NS_ENUM(NSUInteger, NSNumberFormatterStyle) { + (NSNumberFormatterBehavior)defaultFormatterBehavior; + (void)setDefaultFormatterBehavior:(NSNumberFormatterBehavior)behavior; +// See `kCFNumberFormatterMinGroupingDigits` in `CFNumberFormatter` for an explanation on how minimum grouping digits is used. +@property NSInteger minimumGroupingDigits API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)); @property NSNumberFormatterStyle numberStyle; @property (null_resettable, copy) NSLocale *locale; @property BOOL generatesDecimalNumbers; diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSObjCRuntime.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSObjCRuntime.h index c302a360..2b82417d 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSObjCRuntime.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSObjCRuntime.h @@ -269,6 +269,12 @@ #define __NS_HEADER_AUDIT_BEGIN_nullability _Pragma("clang assume_nonnull begin") #define __NS_HEADER_AUDIT_END_nullability _Pragma("clang assume_nonnull end") +#if __has_attribute(__swift_attr__) && __SWIFT_ATTR_SUPPORTS_SENDING +# define NS_SWIFT_SENDING __attribute__((swift_attr("sending"))) +#else +# define NS_SWIFT_SENDING +#endif + #if __SWIFT_ATTR_SUPPORTS_SENDABLE_DECLS // Indicates that the thing it is applied to should be imported as 'Sendable' in Swift: // * Type declarations are imported into Swift with a 'Sendable' conformance. @@ -283,7 +289,12 @@ // Indicates that a specific member of an 'NS_SWIFT_UI_ACTOR'-isolated type is "threadsafe" and should be callable from outside the main actor. # define NS_SWIFT_NONISOLATED __attribute__((swift_attr("nonisolated"))) -# define __NS_HEADER_AUDIT_BEGIN_sendability _Pragma("clang attribute NS_HEADER_AUDIT_sendability.push (__attribute__((swift_attr(\"@_nonSendable(_assumed)\"))), apply_to = any(objc_interface, record, enum))") +# define __NS_HEADER_AUDIT_BEGIN_sendability \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wpragma-clang-attribute\"") \ + _Pragma("clang attribute NS_HEADER_AUDIT_sendability.push (__attribute__((swift_attr(\"@_nonSendable(_assumed)\"))), apply_to = any(objc_interface, record, enum))") \ + _Pragma("clang diagnostic pop") + # define __NS_HEADER_AUDIT_END_sendability _Pragma("clang attribute NS_HEADER_AUDIT_sendability.pop") #else # define NS_SWIFT_SENDABLE diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSOrderedCollectionChange.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSOrderedCollectionChange.h index d97ea0f1..64c3dcc9 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSOrderedCollectionChange.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSOrderedCollectionChange.h @@ -48,7 +48,7 @@ API_AVAILABLE(macosx(10.15), ios(13.0), watchos(6.0), tvos(13.0)) // change representing a move operation may store different objects. @property (readonly) NSUInteger associatedIndex; -- (id)init API_UNAVAILABLE(macos, ios, watchos, tvos); +- (id)init NS_UNAVAILABLE; - (instancetype)initWithObject:(nullable ObjectType)anObject type:(NSCollectionChangeType)type diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSPointerFunctions.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSPointerFunctions.h index 2b3fbf52..958dee72 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSPointerFunctions.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSPointerFunctions.h @@ -40,7 +40,7 @@ typedef NS_OPTIONS(NSUInteger, NSPointerFunctionsOptions) { NSPointerFunctionsMachVirtualMemory API_AVAILABLE(macos(10.5), ios(6.0), watchos(2.0), tvos(9.0)) = (4UL << 0), #endif NSPointerFunctionsWeakMemory API_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0)) = (5UL << 0), // uses weak read and write barriers appropriate for ARC - + // Personalities are mutually exclusive // default is object. As a special case, 'strong' memory used for Objects will do retain/release under non-GC NSPointerFunctionsObjectPersonality API_AVAILABLE(macos(10.5), ios(6.0), watchos(2.0), tvos(9.0)) = (0UL << 8), // use -hash and -isEqual, object description diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSProcessInfo.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSProcessInfo.h index 2897d4f4..f6f9ff6a 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSProcessInfo.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSProcessInfo.h @@ -26,6 +26,7 @@ typedef struct NS_SWIFT_SENDABLE { @class NSArray, NSString, NSDictionary; +NS_SWIFT_SENDABLE @interface NSProcessInfo : NSObject { @private NSDictionary *environment; diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSScriptCommandDescription.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSScriptCommandDescription.h index ed3ee42f..adbfe3fa 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSScriptCommandDescription.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSScriptCommandDescription.h @@ -21,7 +21,7 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) id _moreVars; } -- (id)init API_UNAVAILABLE(macos, ios, watchos, tvos); +- (id)init NS_UNAVAILABLE; /* Initialize, given a scripting suite name, command name, and command declaration dictionary of the sort that is valid in .scriptSuite property list files. */ diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSScriptWhoseTests.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSScriptWhoseTests.h index 7b800f4c..fca580a2 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSScriptWhoseTests.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSScriptWhoseTests.h @@ -54,7 +54,7 @@ typedef NS_ENUM(NSUInteger, NSTestComparisonOperation) { NSScriptObjectSpecifier *_object1; id _object2; } -- (instancetype)init API_UNAVAILABLE(macos, ios, watchos, tvos); +- (instancetype)init NS_UNAVAILABLE; - (nullable instancetype)initWithCoder:(NSCoder *)inCoder NS_DESIGNATED_INITIALIZER; - (instancetype)initWithObjectSpecifier:(nullable NSScriptObjectSpecifier *)obj1 comparisonOperator:(NSTestComparisonOperation)compOp testObject:(nullable id)obj2 NS_DESIGNATED_INITIALIZER; diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSStream.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSStream.h index 70aadab3..f55782ae 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSStream.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSStream.h @@ -38,7 +38,7 @@ typedef NS_OPTIONS(NSUInteger, NSStreamEvent) { - (void)open; - (void)close; -@property (nullable, assign) id delegate; +@property (nullable, assign /* actually weak */) id delegate; // By default, a stream is its own delegate, and subclassers of NSInputStream and NSOutputStream must maintain this contract. [someStream setDelegate:nil] must restore this behavior. As usual, delegates are not retained. - (nullable id)propertyForKey:(NSStreamPropertyKey)key; diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSString.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSString.h index 4789bda8..bfc69b1f 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSString.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSString.h @@ -140,14 +140,12 @@ typedef NS_OPTIONS(NSUInteger, NSStringEncodingConversionOptions) { - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare; - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare locale:(nullable id)locale; // locale arg used to be a dictionary pre-Leopard. We now accept NSLocale. Assumes the current locale if non-nil and non-NSLocale. nil continues to mean canonical compare, which doesn't depend on user's locale choice. - (NSComparisonResult)caseInsensitiveCompare:(NSString *)string; -#if !0 - (NSComparisonResult)localizedCompare:(NSString *)string; - (NSComparisonResult)localizedCaseInsensitiveCompare:(NSString *)string; /* localizedStandardCompare:, added in 10.6, should be used whenever file names or other strings are presented in lists and tables where Finder-like sorting is appropriate. The exact behavior of this method may be tweaked in future releases, and will be different under different localizations, so clients should not depend on the exact sorting order of the strings. */ - (NSComparisonResult)localizedStandardCompare:(NSString *)string API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); -#endif - (BOOL)isEqualToString:(NSString *)aString; @@ -502,9 +500,7 @@ FOUNDATION_EXPORT NSStringEncodingDetectionOptionsKey const NSStringEncodingDete FOUNDATION_EXPORT NSExceptionName const NSCharacterConversionException; -#if !0 FOUNDATION_EXPORT NSExceptionName const NSParseErrorException; // raised by -propertyList -#endif #define NSMaximumStringLength (INT_MAX-1) #pragma mark *** Deprecated/discouraged APIs *** diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSTask.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSTask.h index 0840c9e1..14228f88 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSTask.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSTask.h @@ -31,6 +31,7 @@ NS_SWIFT_SENDABLE @property (nullable, copy) NSArray *arguments; @property (nullable, copy) NSDictionary *environment; // if not set, use current @property (nullable, copy) NSURL *currentDirectoryURL API_AVAILABLE(macos(10.13)) API_UNAVAILABLE(ios, watchos, tvos); +@property (nullable, copy) NSData *launchRequirementData API_AVAILABLE(macos(14.4)) API_UNAVAILABLE(ios, watchos, tvos, visionos); // standard I/O channels; could be either an NSFileHandle or an NSPipe @property (nullable, retain) id standardInput; diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSTermOfAddress.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSTermOfAddress.h index 9e28bcd4..8db41b26 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSTermOfAddress.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSTermOfAddress.h @@ -36,6 +36,13 @@ NS_REFINED_FOR_SWIFT */ + (instancetype)masculine; +/** + * The term of address that should be used for addressing the user + * + * This term of address will only compare equal to another `+[NSTermOfAddress currentUser]` + */ ++ (instancetype)currentUser API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); + /** * A term of address restricted to a given language * @param language ISO language code identifier for the language diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSURL.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSURL.h index 24692ab6..3a67a97c 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSURL.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSURL.h @@ -1,5 +1,5 @@ /* NSURL.h - Copyright (c) 1997-2019, Apple Inc. All rights reserved. + Copyright (c) 1997-2023, Apple Inc. All rights reserved. */ #import @@ -505,11 +505,7 @@ typedef NSUInteger NSURLBookmarkFileCreationOptions; NS_SWIFT_SENDABLE // Immutable with no mutable subclasses API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)) // NSURLQueryItem encapsulates a single query name-value pair. The name and value strings of a query name-value pair are not percent encoded. For use with the NSURLComponents queryItems property. -@interface NSURLQueryItem : NSObject { -@private - NSString *_name; - NSString *_value; -} +@interface NSURLQueryItem : NSObject - (instancetype)initWithName:(NSString *)name value:(nullable NSString *)value NS_DESIGNATED_INITIALIZER; + (instancetype)queryItemWithName:(NSString *)name value:(nullable NSString *)value; @property (readonly) NSString *name; @@ -643,13 +639,11 @@ API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)) @interface NSString (NSURLUtilities) -#if !0 // Returns a new string made from the receiver by replacing all characters not in the allowedCharacters set with percent encoded characters. UTF-8 encoding is used to determine the correct percent encoded characters. Entire URL strings cannot be percent-encoded. This method is intended to percent-encode a URL component or subcomponent string, NOT the entire URL string. Any characters in allowedCharacters outside of the 7-bit ASCII range are ignored. - (nullable NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)); // Returns a new string made from the receiver by replacing all percent encoded sequences with the matching UTF-8 characters. @property (nullable, readonly, copy) NSString *stringByRemovingPercentEncoding API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)); -#endif - (nullable NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc API_DEPRECATED("Use -stringByAddingPercentEncodingWithAllowedCharacters: instead, which always uses the recommended UTF-8 encoding, and which encodes for a specific URL component or subcomponent since each URL component or subcomponent has different rules for what characters are valid.", macos(10.0,10.11), ios(2.0,9.0), watchos(2.0,2.0), tvos(9.0,9.0)); diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSURLError.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSURLError.h index a5912ce8..4c0ab834 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSURLError.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSURLError.h @@ -39,14 +39,14 @@ FOUNDATION_EXPORT NSString * const NSURLErrorFailingURLErrorKey API_AVAILABLE(ma @abstract The NSError userInfo dictionary key used to store and retrieve the NSString object for the URL which caused a load to fail. @discussion This constant supersedes NSErrorFailingURLStringKey, which was deprecated in Mac OS X 10.6. Both constants refer to the same value for backward-compatibility, but this symbol name has a better prefix. */ -FOUNDATION_EXPORT NSString * const NSURLErrorFailingURLStringErrorKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); +FOUNDATION_EXPORT NSString * const NSURLErrorFailingURLStringErrorKey API_DEPRECATED("Use NSURLErrorFailingURLErrorKey instead", macos(10.6,15.4), ios(4.0,18.4), watchos(2.0,11.4), tvos(9.0,18.4), visionos(1.0,2.4)); /*! @const NSErrorFailingURLStringKey @abstract The NSError userInfo dictionary key used to store and retrieve the NSString object for the URL which caused a load to fail. @discussion This constant is deprecated in Mac OS X 10.6, and is superseded by NSURLErrorFailingURLStringErrorKey. Both constants refer to the same value for backward-compatibility, but the new symbol name has a better prefix. */ -FOUNDATION_EXPORT NSString * const NSErrorFailingURLStringKey API_DEPRECATED("Use NSURLErrorFailingURLStringErrorKey instead", macos(10.0,10.6), ios(2.0,4.0), watchos(2.0,2.0), tvos(9.0,9.0)); +FOUNDATION_EXPORT NSString * const NSErrorFailingURLStringKey API_DEPRECATED("Use NSURLErrorFailingURLErrorKey instead", macos(10.0,10.6), ios(2.0,4.0), watchos(2.0,2.0), tvos(9.0,9.0)); /*! @const NSURLErrorFailingURLPeerTrustErrorKey diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSURLProtectionSpace.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSURLProtectionSpace.h index 40ff5c09..d6fc0598 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSURLProtectionSpace.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSURLProtectionSpace.h @@ -30,7 +30,7 @@ FOUNDATION_EXPORT NSString * const NSURLProtectionSpaceHTTPS API_AVAILABLE(macos @const NSURLProtectionSpaceFTP @abstract The protocol for FTP */ -FOUNDATION_EXPORT NSString * const NSURLProtectionSpaceFTP API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); +FOUNDATION_EXPORT NSString * const NSURLProtectionSpaceFTP API_DEPRECATED("FTP is deprecated and only supported in the classic loading mode", macos(10.5,15.4), ios(2.0,18.4), watchos(2.0,11.4), tvos(9.0,18.4), visionos(1.0,2.4)); /*! @const NSURLProtectionSpaceHTTPProxy @@ -48,7 +48,7 @@ FOUNDATION_EXPORT NSString * const NSURLProtectionSpaceHTTPSProxy API_AVAILABLE( @const NSURLProtectionSpaceFTPProxy @abstract The proxy type for ftp proxies */ -FOUNDATION_EXPORT NSString * const NSURLProtectionSpaceFTPProxy API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)); +FOUNDATION_EXPORT NSString * const NSURLProtectionSpaceFTPProxy API_DEPRECATED("FTP is deprecated and only supported in the classic loading mode", macos(10.2,15.4), ios(2.0,18.4), watchos(2.0,11.4), tvos(9.0,18.4), visionos(1.0,2.4)); /*! @const NSURLProtectionSpaceSOCKSProxy diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSURLProtocol.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSURLProtocol.h index b9482da5..1dc7373f 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSURLProtocol.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSURLProtocol.h @@ -62,6 +62,7 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) loading system that is intended for use by NSURLProtocol implementors. */ +NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) @protocol NSURLProtocolClient diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSURLRequest.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSURLRequest.h index 4f65af1e..7f3b554b 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSURLRequest.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSURLRequest.h @@ -203,103 +203,103 @@ typedef NS_ENUM(NSUInteger, NSURLRequestAttribution) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) @interface NSURLRequest : NSObject { - @private +@private NSURLRequestInternal *_internal; } -/*! - @method requestWithURL: - @abstract Allocates and initializes an NSURLRequest with the given - URL. - @discussion Default values are used for cache policy - (NSURLRequestUseProtocolCachePolicy) and timeout interval (60 - seconds). - @param URL The URL for the request. - @result A newly-created and autoreleased NSURLRequest instance. -*/ +/*! + @method requestWithURL: + @abstract Allocates and initializes an NSURLRequest with the given + URL. + @discussion Default values are used for cache policy + (NSURLRequestUseProtocolCachePolicy) and timeout interval (60 + seconds). + @param URL The URL for the request. + @result A newly-created and autoreleased NSURLRequest instance. + */ + (instancetype)requestWithURL:(NSURL *)URL; /*! - @property supportsSecureCoding - @abstract Indicates that NSURLRequest implements the NSSecureCoding protocol. - @result A BOOL value set to YES. -*/ + @property supportsSecureCoding + @abstract Indicates that NSURLRequest implements the NSSecureCoding protocol. + @result A BOOL value set to YES. + */ @property (class, readonly) BOOL supportsSecureCoding; /*! - @method requestWithURL:cachePolicy:timeoutInterval: - @abstract Allocates and initializes a NSURLRequest with the given - URL and cache policy. - @param URL The URL for the request. - @param cachePolicy The cache policy for the request. - @param timeoutInterval The timeout interval for the request. See the - commentary for the timeoutInterval for more information on - timeout intervals. - @result A newly-created and autoreleased NSURLRequest instance. -*/ + @method requestWithURL:cachePolicy:timeoutInterval: + @abstract Allocates and initializes a NSURLRequest with the given + URL and cache policy. + @param URL The URL for the request. + @param cachePolicy The cache policy for the request. + @param timeoutInterval The timeout interval for the request. See the + commentary for the timeoutInterval for more information on + timeout intervals. + @result A newly-created and autoreleased NSURLRequest instance. + */ + (instancetype)requestWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval; -/*! - @method initWithURL: - @abstract Initializes an NSURLRequest with the given URL. - @discussion Default values are used for cache policy - (NSURLRequestUseProtocolCachePolicy) and timeout interval (60 - seconds). - @param URL The URL for the request. - @result An initialized NSURLRequest. -*/ +/*! + @method initWithURL: + @abstract Initializes an NSURLRequest with the given URL. + @discussion Default values are used for cache policy + (NSURLRequestUseProtocolCachePolicy) and timeout interval (60 + seconds). + @param URL The URL for the request. + @result An initialized NSURLRequest. + */ - (instancetype)initWithURL:(NSURL *)URL; -/*! - @method initWithURL: - @abstract Initializes an NSURLRequest with the given URL and - cache policy. - @discussion This is the designated initializer for the - NSURLRequest class. - @param URL The URL for the request. - @param cachePolicy The cache policy for the request. - @param timeoutInterval The timeout interval for the request. See the - commentary for the timeoutInterval for more information on - timeout intervals. - @result An initialized NSURLRequest. -*/ +/*! + @method initWithURL: + @abstract Initializes an NSURLRequest with the given URL and + cache policy. + @discussion This is the designated initializer for the + NSURLRequest class. + @param URL The URL for the request. + @param cachePolicy The cache policy for the request. + @param timeoutInterval The timeout interval for the request. See the + commentary for the timeoutInterval for more information on + timeout intervals. + @result An initialized NSURLRequest. + */ - (instancetype)initWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval NS_DESIGNATED_INITIALIZER; -/*! - @abstract Returns the URL of the receiver. - @result The URL of the receiver. -*/ +/*! + @abstract Returns the URL of the receiver. + @result The URL of the receiver. + */ @property (nullable, readonly, copy) NSURL *URL; -/*! - @abstract Returns the cache policy of the receiver. - @result The cache policy of the receiver. -*/ +/*! + @abstract Returns the cache policy of the receiver. + @result The cache policy of the receiver. + */ @property (readonly) NSURLRequestCachePolicy cachePolicy; -/*! - @abstract Returns the timeout interval of the receiver. - @discussion The timeout interval specifies the limit on the idle - interval allotted to a request in the process of loading. The "idle - interval" is defined as the period of time that has passed since the - last instance of load activity occurred for a request that is in the - process of loading. Hence, when an instance of load activity occurs - (e.g. bytes are received from the network for a request), the idle - interval for a request is reset to 0. If the idle interval ever - becomes greater than or equal to the timeout interval, the request - is considered to have timed out. This timeout interval is measured - in seconds. - @result The timeout interval of the receiver. -*/ +/*! + @abstract Returns the timeout interval of the receiver. + @discussion The timeout interval specifies the limit on the idle + interval allotted to a request in the process of loading. The "idle + interval" is defined as the period of time that has passed since the + last instance of load activity occurred for a request that is in the + process of loading. Hence, when an instance of load activity occurs + (e.g. bytes are received from the network for a request), the idle + interval for a request is reset to 0. If the idle interval ever + becomes greater than or equal to the timeout interval, the request + is considered to have timed out. This timeout interval is measured + in seconds. + @result The timeout interval of the receiver. + */ @property (readonly) NSTimeInterval timeoutInterval; /*! - @abstract The main document URL associated with this load. - @discussion This URL is used for the cookie "same domain as main - document" policy, and attributing the request as a sub-resource - of a user-specified URL. There may also be other future uses. - See setMainDocumentURL: - @result The main document URL. -*/ + @abstract The main document URL associated with this load. + @discussion This URL is used for the cookie "same domain as main + document" policy, and attributing the request as a sub-resource + of a user-specified URL. There may also be other future uses. + See setMainDocumentURL: + @result The main document URL. + */ @property (nullable, readonly, copy) NSURL *mainDocumentURL; /*! @@ -357,6 +357,20 @@ API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) */ @property (readonly) BOOL requiresDNSSECValidation API_AVAILABLE(macos(13.0), ios(16.1), watchos(9.1), tvos(16.1)); +/*! + @abstract Allows storing and usage of DNS answers, potentially beyond TTL expiry, + in a persistent per-process cache. This should only be set for hostnames whose resolutions + are not expected to change across networks. + @discussion YES, if the DNS lookup for this request is allowed to use a persistent per-process cache, + NO otherwise. Defaults to NO. + */ +@property (readonly) BOOL allowsPersistentDNS API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)); + +/* + * Cookie partition identifier used for cookie storage and retrieval. + */ +@property (nullable, readonly, copy) NSString *cookiePartitionIdentifier API_AVAILABLE(macos(15.2), ios(18.2), watchos(11.2), tvos(18.2), visionos(2.2)); + @end @@ -483,6 +497,20 @@ API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) */ @property BOOL requiresDNSSECValidation API_AVAILABLE(macos(13.0), ios(16.1), watchos(9.1), tvos(16.1)); +/*! + @abstract Allows storing and usage of DNS answers, potentially beyond TTL expiry, + in a persistent per-process cache. This should only be set for hostnames whose resolutions + are not expected to change across networks. + @discussion YES, if the DNS lookup for this request is allowed to use a persistent per-process cache, + NO otherwise. Defaults to NO. + */ +@property BOOL allowsPersistentDNS API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)); + +/* +* Cookie partition identifier used for cookie storage and retrieval. +*/ +@property (nullable, copy) NSString *cookiePartitionIdentifier API_AVAILABLE(macos(15.2), ios(18.2), watchos(11.2), tvos(18.2), visionos(2.2)); + @end @@ -557,7 +585,7 @@ API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) is received. NO if the receiver should wait for the previous response before transmitting. */ -@property (readonly) BOOL HTTPShouldUsePipelining API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)); +@property (readonly) BOOL HTTPShouldUsePipelining API_DEPRECATED("Only supported in the classic loader, please adopt HTTP/2 and HTTP/3 instead", macos(10.7,15.4), ios(4.0,18.4), watchos(2.0,11.4), tvos(9.0,18.4), visionos(1.0,2.4)); @end @@ -659,7 +687,7 @@ API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) pipelining (disconnecting, sending resources misordered, omitting part of a resource, etc.). */ -@property BOOL HTTPShouldUsePipelining API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)); +@property BOOL HTTPShouldUsePipelining API_DEPRECATED("Only supported in the classic loader, please adopt HTTP/2 and HTTP/3 instead", macos(10.7,15.4), ios(4.0,18.4), watchos(2.0,11.4), tvos(9.0,18.4), visionos(1.0,2.4)); @end diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSURLSession.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSURLSession.h index a8ae4d80..8e1fee57 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSURLSession.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSURLSession.h @@ -152,7 +152,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)) * has been issued. * * -finishTasksAndInvalidate and -invalidateAndCancel do not - * have any effect on the shared session singleton. + * have any effect on the shared session instance. * * When invalidating a background session, it is not safe to create another background * session with the same identifier until URLSession:didBecomeInvalidWithError: has @@ -716,8 +716,8 @@ typedef NS_ENUM(NSInteger, NSURLSessionMultipathServiceType) * created, a copy of the configuration object is made - you cannot * modify the configuration of a session after it has been created. * - * The shared session uses the global singleton credential, cache - * and cookie storage objects. + * The shared session uses the global credential, cache and cookie + * storage objects. * * An ephemeral session has no persistent disk storage for cookies, * cache or credentials. @@ -811,7 +811,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)) @property tls_protocol_version_t TLSMaximumSupportedProtocolVersion API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); /* Allow the use of HTTP pipelining */ -@property BOOL HTTPShouldUsePipelining; +@property BOOL HTTPShouldUsePipelining API_DEPRECATED("Only supported in the classic loader, please adopt HTTP/2 and HTTP/3 instead", macos(10.9,15.4), ios(7.0,18.4), watchos(2.0,11.4), tvos(9.0,18.4), visionos(1.0,2.4)); /* Allow the session to set cookies on requests */ @property BOOL HTTPShouldSetCookies; @@ -835,10 +835,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)) /* The URL resource cache, or nil to indicate that no caching is to be performed */ @property (nullable, retain) NSURLCache *URLCache; -/* Enable extended background idle mode for any tcp sockets created. Enabling this mode asks the system to keep the socket open - * and delay reclaiming it when the process moves to the background (see https://developer.apple.com/library/ios/technotes/tn2277/_index.html) - */ -@property BOOL shouldUseExtendedBackgroundIdleMode API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); +@property BOOL shouldUseExtendedBackgroundIdleMode API_DEPRECATED("Not supported", macos(10.11,15.4), ios(9.0,18.4), watchos(2.0,11.4), tvos(9.0,18.4), visionos(1.0,2.4)); /* An optional array of Class objects which subclass NSURLProtocol. The Class will be sent +canInitWithRequest: when determining if @@ -854,6 +851,15 @@ API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)) /* multipath service type to use for connections. The default is NSURLSessionMultipathServiceTypeNone */ @property NSURLSessionMultipathServiceType multipathServiceType API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(macos, watchos, tvos); +/* + * Uses the classic network loader. + * + * NOTE: FTP and HTTP/1 pipelining are only supported in the classic loading mode. + * + * Defaults to YES. The default may be NO in a future OS update. + */ +@property BOOL usesClassicLoadingMode API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4), visionos(2.4)); + - (instancetype)init API_DEPRECATED("Please use NSURLSessionConfiguration.defaultSessionConfiguration or other class methods to create instances", macos(10.9,10.15), ios(7.0,13.0), watchos(2.0,6.0), tvos(9.0,13.0)); + (instancetype)new API_DEPRECATED("Please use NSURLSessionConfiguration.defaultSessionConfiguration or other class methods to create instances", macos(10.9,10.15), ios(7.0,13.0), watchos(2.0,6.0), tvos(9.0,13.0)); @@ -1220,7 +1226,7 @@ FOUNDATION_EXPORT NSString * const NSURLSessionUploadTaskResumeData API_AVAILABL typedef NS_ENUM(NSInteger, NSURLSessionTaskMetricsResourceFetchType) { NSURLSessionTaskMetricsResourceFetchTypeUnknown, NSURLSessionTaskMetricsResourceFetchTypeNetworkLoad, /* The resource was loaded over the network. */ - NSURLSessionTaskMetricsResourceFetchTypeServerPush, /* The resource was pushed by the server to the client. */ + NSURLSessionTaskMetricsResourceFetchTypeServerPush API_DEPRECATED("Server push is no longer supported as of iOS 17 and aligned releases", macos(10.12,15.4), ios(10.0,18.4), watchos(3.0,11.4), tvos(10.0,18.4), visionos(1.0,2.4)), /* The resource was pushed by the server to the client. */ NSURLSessionTaskMetricsResourceFetchTypeLocalCache, /* The resource was retrieved from the local storage. */ } API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSUndoManager.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSUndoManager.h index 4f9b7d27..e7a354c5 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSUndoManager.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSUndoManager.h @@ -2,7 +2,6 @@ Copyright (c) 1995-2019, Apple Inc. All rights reserved. */ - // // NSUndoManager is a general-purpose undo stack where clients can register // callbacks to be invoked should an undo be requested. @@ -21,127 +20,240 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) // used with NSRunLoop's performSelector:target:argument:order:modes: static const NSUInteger NSUndoCloseGroupingRunLoopOrdering = 350000; +/// A key used to set and get user info for undo and redo actions +typedef NSString * NSUndoManagerUserInfoKey NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(UndoManager.UserInfoKey) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + API_AVAILABLE(macos(10.0), ios(3.0), watchos(2.0), tvos(9.0)) @interface NSUndoManager : NSObject - /* Begin/End Grouping */ - +/// Marks the beginning of an undo group. +/// +/// All individual undo operations before a subsequent ``endUndoGrouping`` message are grouped together and reversed by a later ``undo`` message. By default undo groups are begun automatically at the start of the event loop, but you can begin your own undo groups with this method, and nest them within other groups. +/// +/// This method posts an ``NSUndoManagerCheckpointNotification`` unless a top-level undo is in progress. It posts an ``NSUndoManagerDidOpenUndoGroupNotification`` if a new group was successfully created. - (void)beginUndoGrouping; + +/// Marks the end of an undo group. +/// +/// All individual undo operations back to the matching ``beginUndoGrouping`` message are grouped together and reversed by a later ``undo`` or ``undoNestedGroup`` message. Undo groups can be nested, thus providing functionality similar to nested transactions. Raises an ``NSInternalInconsistencyException`` if there’s no ``beginUndoGrouping`` message in effect. +/// +/// This method posts an ``NSUndoManagerCheckpointNotification`` and an ``NSUndoManagerDidCloseUndoGroupNotification`` just before the group is closed. - (void)endUndoGrouping; - // These nest. +/// The number of nested undo groups (or redo groups, if Redo was invoked last) in the current event loop. +/// +/// An integer indicating the number of nested groups. If `0` is returned, there is no open undo or redo group. @property (readonly) NSInteger groupingLevel; - // Zero means no open group. - - /* Enable/Disable registration */ +/// Disables the recording of undo operations, whether by ``registerUndoWithTarget:selector:object:`` or by invocation-based undo. +/// +/// This method can be invoked multiple times by multiple clients. The ``enableUndoRegistration`` method must be invoked an equal number of times to re-enable undo registration. - (void)disableUndoRegistration; + +/// Enables the recording of undo operations. +/// +/// Because undo registration is enabled by default, this is used to balance a prior ``disableUndoRegistration``. Undo registration isn’t actually re-enabled until an enable message balances the last disable message in effect. +/// Raises an NSInternalInconsistencyException if invoked while no disableUndoRegistration() message is in effect. - (void)enableUndoRegistration; -@property (readonly, getter=isUndoRegistrationEnabled) BOOL undoRegistrationEnabled; - /* Groups By Event */ +/// Whether the recording of undo operations is enabled. +@property (readonly, getter=isUndoRegistrationEnabled) BOOL undoRegistrationEnabled; +/// A Boolean value that indicates whether the receiver automatically creates undo groups around each pass of the run loop. +/// +/// If `true`, the receiver automatically creates undo groups around each pass of the run loop. +/// The default is `true`. If you turn automatic grouping off, you must close groups explicitly before invoking either ``undo`` or ``undoNestedGroup``. @property BOOL groupsByEvent; - // If groupsByEvent is enabled, the undoManager automatically groups - // all undos registered during a single NSRunLoop event together in - // a single top-level group. This featured is enabled by default. - /* Undo levels */ +/// The maximum number of top-level undo groups the receiver holds. +/// +/// An integer specifying the number of undo groups. A limit of 0 indicates no limit, so old undo groups are never dropped. +/// When ending an undo group results in the number of groups exceeding this limit, the oldest groups are dropped from the stack. The default is 0. +/// If you change the limit to a level below the prior limit, old undo groups are immediately dropped. @property NSUInteger levelsOfUndo; - // Sets the number of complete groups (not operations) that should - // be kept my the manager. When limit is reached, oldest undos are - // thrown away. 0 means no limit ! - - /* Run Loop Modes */ +/// The modes governing the types of input handled during a cycle of the run loop. +/// +/// An array of string constants specifying the current run-loop modes. +/// By default, the sole run-loop mode is ``NSDefaultRunLoopMode`` (which excludes data from ``NSConnection`` objects). Some examples of other uses are to limit the input to data received during a mouse-tracking session by setting the mode to ``NSEventTrackingRunLoopMode``, or limit it to data received from a modal panel with ``NSModalPanelRunLoopMode``. @property (copy) NSArray *runLoopModes; - /* Undo/Redo */ - +/// Closes the top-level undo group if necessary and invokes ``undoNestedGroup``. +/// +/// This method also invokes ``endUndoGrouping`` if the nesting level is 1. Raises an ``NSInternalInconsistencyException`` if more than one undo group is open (that is, if the last group isn’t at the top level). +/// This method posts an ``NSUndoManagerCheckpointNotification``. - (void)undo; - // Undo until a matching begin. It terminates a top level undo if - // necesary. Useful for undoing when groupByEvents is on (default is - // on) + +/// Performs the operations in the last group on the redo stack, if there are any, recording them on the undo stack as a single group. +/// +/// Raises an ``NSInternalInconsistencyException`` if the method is invoked during an undo operation. +/// This method posts an ``NSUndoManagerCheckpointNotification`` and ``NSUndoManagerWillRedoChangeNotification`` before it performs the redo operation, and it posts the ``NSUndoManagerDidRedoChangeNotification`` after it performs the redo operation. - (void)redo; - // Will redo last top-level undo. +/// Performs the undo operations in the last undo group (whether top-level or nested), recording the operations on the redo stack as a single group. +/// +/// Raises an ``NSInternalInconsistencyException`` if any undo operations have been registered since the last ``enableUndoRegistration`` message. +/// This method posts an ``NSUndoManagerCheckpointNotification`` and ``NSUndoManagerWillUndoChangeNotification`` before it performs the undo operation, and it posts an ``NSUndoManagerDidUndoChangeNotification`` after it performs the undo operation. - (void)undoNestedGroup; - // Undoes a nested grouping without first trying to close a top level - // undo group. +/// Whether the receiver has any actions to undo. +/// +/// The return value does not mean you can safely invoke ``undo`` or ``undoNestedGroup`` — you may have to close open undo groups first. @property (readonly) BOOL canUndo; + +/// Whether the receiver has any actions to redo. +/// +/// Because any undo operation registered clears the redo stack, this method posts an NSUndoManagerCheckpointNotification to allow clients to apply their pending operations before testing the redo stack. @property (readonly) BOOL canRedo; - // returns whether or not the UndoManager has anything to undo or redo +/// How many times `undo` can be invoked before there are no more actions left to +/// be undone +@property (readonly) NSUInteger undoCount API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), watchos(10.4)); +/// How many times `redo` can be invoked before there are no more actions left to +/// be redone +@property (readonly) NSUInteger redoCount API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), watchos(10.4)); + +/// Whether the receiver is in the process of performing its ``undo`` or ``undoNestedGroup`` method. @property (readonly, getter=isUndoing) BOOL undoing; -@property (readonly, getter=isRedoing) BOOL redoing; - // returns whether or not the undo manager is currently in the process - // of invoking undo or redo operations. - /* remove */ +/// Whether the receiver is in the process of performing its ``redo`` method. +@property (readonly, getter=isRedoing) BOOL redoing; +/// Clears the undo and redo stacks and re-enables the receiver. - (void)removeAllActions; +/// Clears the undo and redo stacks of all operations involving the specified target as the recipient of the undo message. +/// +/// Doesn't re-enable the receiver if it's disabled. +/// +/// - Parameter target: The recepient of the undo mesages to be removed. - (void)removeAllActionsWithTarget:(id)target; - /* Object based Undo */ - -- (void)registerUndoWithTarget:(id)target selector:(SEL)selector object:(nullable id)anObject; - - /* Invocation based undo */ - +/// Registers the selector of the specified target to implement a single undo operation that the target receives. +/// +/// - Parameter target: The target of the undo operation. The undo manager maintains an unowned reference to `target` to prevent retain cycles. +/// - Parameter selector: The selector for the undo operation. +/// - Parameter object: The argument sent with the selector. The undo manager maintains a strong reference to `object` +- (void)registerUndoWithTarget:(id)target selector:(SEL)selector object:(nullable id)object; + +/// Prepares the undo manager for invocation-based undo with the given target as the subject of the next undo operation. +/// +/// For example, when called as: +/// +/// [[undoManager prepareWithInvocationTarget:target] setFont:oldFont color:oldColor] +/// +/// When undo is called, the specified target will be called with +/// +/// [target setFont:oldFont color:oldColor] +/// +/// - Parameter target: The target of the undo operation. The undo manager maintains a weak reference to `target`. +/// - Returns: A proxy object that forwards messages to the undo manager for recording as undo actions. - (id)prepareWithInvocationTarget:(id)target; - // called as: - // [[undoManager prepareWithInvocationTarget:self] setFont:oldFont color:oldColor] - // When undo is called, the specified target will be called with - // [target setFont:oldFont color:oldColor] - -/*! @abstract records single undo operation for the specified target - @param target non-nil target of the undo operation - @param undoHandler non-nil block to be executed for the undo operation - @discussion - As with other undo operations, this does not strongly retain target. Care should be taken to avoid introducing retain cycles by other references captured by the block. - */ + +/// Records a single undo operation for a given target so that when an undo is performed, it executes the specified block. +/// +/// As with other undo operations, this does not strongly retain target. Care should be taken to avoid introducing retain cycles by other references captured by the block. +/// +/// - Parameter target: The target of the undo operation. +/// - Parameter undoHandler: The block to be executed when an operation is undone. The block takes a single argument, the target of the undo operation. - (void)registerUndoWithTarget:(id)target handler:(void (NS_SWIFT_SENDABLE ^)(id target))undoHandler API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) NS_REFINED_FOR_SWIFT; +/// Sets whether the next undo or redo action is discardable. +/// +/// Specifies that the latest undo action may be safely discarded when a document can not be saved for any reason. +/// An example might be an undo action that changes the viewable area of a document. +/// To find out if an undo group contains only discardable actions, look for the ``NSUndoManagerGroupIsDiscardableKey`` in the `userInfo` dictionary of the ``NSUndoManagerWillCloseUndoGroupNotification``. +/// +/// - Parameter discardable: Specifies if the action is discardable. YES if the next undo or redo action can be discarded; NO otherwise. - (void)setActionIsDiscardable:(BOOL)discardable API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); - // Set the latest undo action to discardable if it may be safely discarded when a document can not be saved for any reason. An example might be an undo action that changes the viewable area of a document. To find out if an undo group contains only discardable actions, look for the NSUndoManagerGroupIsDiscardableKey in the userInfo dictionary of the NSUndoManagerDidCloseUndoGroupNotification. // This key is set on the user info dictionary of the NSUndoManagerDidCloseUndoGroupNotification, with a NSNumber boolean value of YES, if the undo group as a whole is discardable. FOUNDATION_EXPORT NSString * const NSUndoManagerGroupIsDiscardableKey API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); +/// Whether the next undo action is discardable. +/// +/// Specifies that the latest undo action may be safely discarded when a document can not be saved for any reason. These are typically actions that don’t affect persistent state. +/// An example might be an undo action that changes the viewable area of a document. @property (readonly) BOOL undoActionIsDiscardable API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); -@property (readonly) BOOL redoActionIsDiscardable API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); - // Call to see if the next undo or redo action is discardable. - /* Undo/Redo action name */ +/// Whether the next redo action is discardable. +/// +/// Specifies that the latest redo action may be safely discarded when a document can not be saved for any reason. These are typically actions that don’t affect persistent state. +/// An example might be an redo action that changes the viewable area of a document. +@property (readonly) BOOL redoActionIsDiscardable API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); +/// The name identifying the undo action. +/// +/// The undo action name. Returns an empty string if no action name has been assigned or if there is nothing to undo. +/// For example, if the menu title is “Undo Delete,†the string returned is “Delete.†@property (readonly, copy) NSString *undoActionName; + +/// The name identifying the redo action. +/// +/// The redo action name. Returns an empty string if no action name has been assigned or if there is nothing to redo. +/// For example, if the menu title is “Redo Delete,†the string returned is “Delete.†@property (readonly, copy) NSString *redoActionName; - // Call undoActionName or redoActionName to get the name of the next action to be undone or redone. - // Returns @"" if there is nothing to undo/redo or no action names were registered. +/// Sets the name of the action associated with the Undo or Redo command. +/// +/// If actionName is an empty string, the action name currently associated with the menu command is removed. There is no effect if actionName is nil. +/// +/// - Parameter actionName: The name of the action. - (void)setActionName:(NSString *)actionName; - // Call setActionName: to set the name of an action. - // The actionName parameter can not be nil - - /* Undo/Redo menu item title */ +/// Get a value from the undo action's user info +/// +/// - Parameter key: Which value should be retrieved +-(id _Nullable)undoActionUserInfoValueForKey:(NSUndoManagerUserInfoKey)key API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + +/// Get a value from the redo action's user info +/// +/// - Parameter key: Which value should be retrieved +-(id _Nullable)redoActionUserInfoValueForKey:(NSUndoManagerUserInfoKey)key API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + +/// Set user info for the Undo or Redo command. +/// - Parameter info: Value to be saved in the user info +/// - Parameter key: Key at which the object should be saved +-(void)setActionUserInfoValue:(id _Nullable)info forKey:(NSUndoManagerUserInfoKey)key API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0)); + +// Call undoMenuItemTitle or redoMenuItemTitle to get the string for the undo or redo menu item. +// In English they will return "Undo "/"Redo " or "Undo"/"Redo" if there is +// nothing to undo/redo or no action names were set. +// + +/// The complete title of the Undo menu command, for example, “Undo Paste.†+/// +/// Returns “Undo†if no action name has been assigned or nil if there is nothing to undo. @property (readonly, copy) NSString *undoMenuItemTitle; + +/// The complete title of the Redo menu command, for example, “Redo Paste.†+/// +/// Returns “Redo†if no action name has been assigned or nil if there is nothing to redo. @property (readonly, copy) NSString *redoMenuItemTitle; - // Call undoMenuItemTitle or redoMenuItemTitle to get the string for the undo or redo menu item. - // In English they will return "Undo "/"Redo " or "Undo"/"Redo" if there is - // nothing to undo/redo or no action names were set. - /* localization hooks */ +// MARK: Localization hooks + +// The localization of the pattern is usually done by localizing the string patterns in +// undo.strings. But undo/redoMenuTitleForUndoActionName can also be overridden if +// localizing the pattern happens to not be sufficient. + +/// Returns the complete, localized title of the Undo menu command for the action identified by the given name. +/// +/// Override this method if you want to customize the localization behaviour. This method is invoked by ``undoMenuItemTitle``. +/// +/// - Parameter actionName: The name of the undo action. +/// - Returns: The localized title of the undo menu item. - (NSString *)undoMenuTitleForUndoActionName:(NSString *)actionName; -- (NSString *)redoMenuTitleForUndoActionName:(NSString *)actionName; - // The localization of the pattern is usually done by localizing the string patterns in - // undo.strings. But undo/redoMenuTitleForUndoActionName can also be overridden if - // localizing the pattern happens to not be sufficient. +/// Returns the complete, localized title of the Redo menu command for the action identified by the given name. +/// +/// Override this method if you want to customize the localization behaviour. This method is invoked by ``redoMenuItemTitle``. +/// +/// - Parameter actionName: The name of the redo action. +/// - Returns: The localized title of the redo menu item. +- (NSString *)redoMenuTitleForUndoActionName:(NSString *)actionName; @end FOUNDATION_EXPORT NSNotificationName const NSUndoManagerCheckpointNotification API_AVAILABLE(macos(10.0), ios(3.0), watchos(2.0), tvos(9.0)); diff --git a/Frameworks/Foundation.framework/Versions/C/Headers/NSUnit.h b/Frameworks/Foundation.framework/Versions/C/Headers/NSUnit.h index 103244b2..d9ef1ca6 100644 --- a/Frameworks/Foundation.framework/Versions/C/Headers/NSUnit.h +++ b/Frameworks/Foundation.framework/Versions/C/Headers/NSUnit.h @@ -85,6 +85,7 @@ API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) /* NSUnit is the base class for all unit types (dimensional and dimensionless). */ +NS_SWIFT_SENDABLE API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) @interface NSUnit : NSObject { @private @@ -93,7 +94,7 @@ API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) @property (readonly, copy) NSString *symbol; -- (instancetype)init API_UNAVAILABLE(macos, ios, watchos, tvos); +- (instancetype)init NS_UNAVAILABLE; + (instancetype)new API_UNAVAILABLE(macos, ios, watchos, tvos); - (instancetype)initWithSymbol:(NSString *)symbol NS_DESIGNATED_INITIALIZER; @@ -103,6 +104,7 @@ API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) #pragma mark Dimensions +NS_SWIFT_SENDABLE API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) @interface NSDimension : NSUnit { @private diff --git a/Frameworks/GameController.framework/Versions/A/GameController.tbd b/Frameworks/GameController.framework/Versions/A/GameController.tbd index b76002b3..53cf9ad6 100644 --- a/Frameworks/GameController.framework/Versions/A/GameController.tbd +++ b/Frameworks/GameController.framework/Versions/A/GameController.tbd @@ -2,11 +2,12 @@ tbd-version: 4 targets: [ x86_64-macos, arm64-macos, arm64e-macos ] install-name: '/System/Library/Frameworks/GameController.framework/Versions/A/GameController' -current-version: 11.2.3 +current-version: 12.4.12 swift-abi-version: 7 exports: - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] symbols: [ '_$s14GameController17GCAxisElementNameV13steeringWheelACvgZ', + '_$s14GameController17GCAxisElementNameV13steeringWheelACvpZMV', '_$s14GameController17GCAxisElementNameV8rawValueACSS_tcfC', '_$s14GameController17GCAxisElementNameV8rawValueSSvg', '_$s14GameController17GCAxisElementNameV8rawValueSSvpMV', '_$s14GameController17GCAxisElementNameVAA015GCPhysicalInputd5TypedE0AAMc', @@ -14,22 +15,44 @@ exports: '_$s14GameController17GCAxisElementNameVMa', '_$s14GameController17GCAxisElementNameVMn', '_$s14GameController17GCAxisElementNameVN', '_$s14GameController17GCAxisElementNameVSHAAMc', '_$s14GameController17GCAxisElementNameVSQAAMc', '_$s14GameController17GCAxisElementNameVSYAAMc', + '_$s14GameController19GCButtonElementNameV10leftBumperACvgZ', + '_$s14GameController19GCButtonElementNameV10leftBumperACvpZMV', '_$s14GameController19GCButtonElementNameV10leftPaddleACvgZ', + '_$s14GameController19GCButtonElementNameV10leftPaddleACvpZMV', '_$s14GameController19GCButtonElementNameV10pedalBrakeACvgZ', + '_$s14GameController19GCButtonElementNameV10pedalBrakeACvpZMV', '_$s14GameController19GCButtonElementNameV11leftTriggerACvgZ', + '_$s14GameController19GCButtonElementNameV11leftTriggerACvpZMV', '_$s14GameController19GCButtonElementNameV11pedalClutchACvgZ', + '_$s14GameController19GCButtonElementNameV11pedalClutchACvpZMV', + '_$s14GameController19GCButtonElementNameV11rightBumperACvgZ', + '_$s14GameController19GCButtonElementNameV11rightBumperACvpZMV', '_$s14GameController19GCButtonElementNameV11rightPaddleACvgZ', + '_$s14GameController19GCButtonElementNameV11rightPaddleACvpZMV', '_$s14GameController19GCButtonElementNameV12arcadeButton3row6columnACSi_SitFZ', '_$s14GameController19GCButtonElementNameV12leftShoulderACvgZ', + '_$s14GameController19GCButtonElementNameV12leftShoulderACvpZMV', '_$s14GameController19GCButtonElementNameV12rightTriggerACvgZ', + '_$s14GameController19GCButtonElementNameV12rightTriggerACvpZMV', '_$s14GameController19GCButtonElementNameV13rightShoulderACvgZ', + '_$s14GameController19GCButtonElementNameV13rightShoulderACvpZMV', + '_$s14GameController19GCButtonElementNameV14backLeftButton8positionACSi_tFZ', + '_$s14GameController19GCButtonElementNameV15backRightButton8positionACSi_tFZ', '_$s14GameController19GCButtonElementNameV16pedalAcceleratorACvgZ', - '_$s14GameController19GCButtonElementNameV1aACvgZ', '_$s14GameController19GCButtonElementNameV1bACvgZ', - '_$s14GameController19GCButtonElementNameV1xACvgZ', '_$s14GameController19GCButtonElementNameV1yACvgZ', + '_$s14GameController19GCButtonElementNameV16pedalAcceleratorACvpZMV', + '_$s14GameController19GCButtonElementNameV1aACvgZ', '_$s14GameController19GCButtonElementNameV1aACvpZMV', + '_$s14GameController19GCButtonElementNameV1bACvgZ', '_$s14GameController19GCButtonElementNameV1bACvpZMV', + '_$s14GameController19GCButtonElementNameV1xACvgZ', '_$s14GameController19GCButtonElementNameV1xACvpZMV', + '_$s14GameController19GCButtonElementNameV1yACvgZ', '_$s14GameController19GCButtonElementNameV1yACvpZMV', '_$s14GameController19GCButtonElementNameV20leftThumbstickButtonACvgZ', + '_$s14GameController19GCButtonElementNameV20leftThumbstickButtonACvpZMV', '_$s14GameController19GCButtonElementNameV21rightThumbstickButtonACvgZ', - '_$s14GameController19GCButtonElementNameV4homeACvgZ', '_$s14GameController19GCButtonElementNameV4menuACvgZ', - '_$s14GameController19GCButtonElementNameV5shareACvgZ', '_$s14GameController19GCButtonElementNameV7optionsACvgZ', + '_$s14GameController19GCButtonElementNameV21rightThumbstickButtonACvpZMV', + '_$s14GameController19GCButtonElementNameV4homeACvgZ', '_$s14GameController19GCButtonElementNameV4homeACvpZMV', + '_$s14GameController19GCButtonElementNameV4menuACvgZ', '_$s14GameController19GCButtonElementNameV4menuACvpZMV', + '_$s14GameController19GCButtonElementNameV5shareACvgZ', '_$s14GameController19GCButtonElementNameV5shareACvpZMV', + '_$s14GameController19GCButtonElementNameV7optionsACvgZ', + '_$s14GameController19GCButtonElementNameV7optionsACvpZMV', '_$s14GameController19GCButtonElementNameV8rawValueACSS_tcfC', '_$s14GameController19GCButtonElementNameV8rawValueSSvg', '_$s14GameController19GCButtonElementNameV8rawValueSSvpMV', @@ -47,8 +70,11 @@ exports: '_$s14GameController19GCSwitchElementNameVN', '_$s14GameController19GCSwitchElementNameVSHAAMc', '_$s14GameController19GCSwitchElementNameVSQAAMc', '_$s14GameController19GCSwitchElementNameVSYAAMc', '_$s14GameController25GCDirectionPadElementNameV09directionD0ACvgZ', + '_$s14GameController25GCDirectionPadElementNameV09directionD0ACvpZMV', '_$s14GameController25GCDirectionPadElementNameV14leftThumbstickACvgZ', + '_$s14GameController25GCDirectionPadElementNameV14leftThumbstickACvpZMV', '_$s14GameController25GCDirectionPadElementNameV15rightThumbstickACvgZ', + '_$s14GameController25GCDirectionPadElementNameV15rightThumbstickACvpZMV', '_$s14GameController25GCDirectionPadElementNameV8rawValueACSS_tcfC', '_$s14GameController25GCDirectionPadElementNameV8rawValueSSvg', '_$s14GameController25GCDirectionPadElementNameV8rawValueSSvpMV', @@ -58,6 +84,7 @@ exports: '_$s14GameController25GCDirectionPadElementNameVN', '_$s14GameController25GCDirectionPadElementNameVSHAAMc', '_$s14GameController25GCDirectionPadElementNameVSQAAMc', '_$s14GameController25GCDirectionPadElementNameVSYAAMc', '_$s14GameController26GCPhysicalInputElementNameV7shifterACvgZ', + '_$s14GameController26GCPhysicalInputElementNameV7shifterACvpZMV', '_$s14GameController26GCPhysicalInputElementNameV8rawValueACSS_tcfC', '_$s14GameController26GCPhysicalInputElementNameV8rawValueSSvg', '_$s14GameController26GCPhysicalInputElementNameV8rawValueSSvpMV', @@ -118,44 +145,45 @@ exports: '_$sSo30GCDevicePhysicalInputStateDiffP14GameControllerE15changedElementsQrSgyF', '_$sSo30GCDevicePhysicalInputStateDiffP14GameControllerE15changedElementsQrSgyFQOMQ', '_$sSo30GCDevicePhysicalInputStateDiffP14GameControllerE15changedElementsSo12NSEnumeratorCSgyF', - _ControllerClassForInterface, _ControllerClassForService, - _GCAgentClientInterface, _GCAgentServerInterface, _GCAppClientInterface, - _GCAppServerInterface, _GCApplicationIsAlmond, _GCApplicationIsMacCatalyst, - _GCBundleWithPID, _GCBypassMFiAuthentication, _GCControllerButtonInputPressedThreshold, + _ControllerClassForService, _GCAgentClientInterface, _GCAgentServerInterface, + _GCAppClientInterface, _GCAppServerInterface, _GCApplicationIsAlmond, + _GCApplicationIsMacCatalyst, _GCBundleWithPID, _GCBypassMFiAuthentication, + _GCCallerAddressIsGameControllerFramework, _GCControllerButtonInputPressedThreshold, _GCControllerComponent_Classes, _GCControllerDidBecomeCurrentNotification, _GCControllerDidConnectNotification, _GCControllerDidDisconnectNotification, - _GCControllerDidStopBeingCurrentNotification, _GCControllerManagerEnsureXPCRemote, - _GCControllerManagerInit, _GCControllerManagerInitXPC, _GCControllerUserCustomizationsDidChangeNotification, + _GCControllerDidStopBeingCurrentNotification, _GCControllerUserCustomizationsDidChangeNotification, _GCCurrentExtendedGamepadSnapshotDataVersion, _GCCurrentMicroGamepadSnapshotDataVersion, _GCCurrentProcessLinkedOnAfter, _GCExecutablePathWithPID, _GCExtendedGamepadDidBecomeCurrentNotification, _GCExtendedGamepadDidStopBeingCurrentNotification, - _GCExtendedGamepadInitInfoMake, _GCExtendedGamepadInitInfoPopulateNames, - _GCExtendedGamepadSnapShotDataV100FromNSData, _GCExtendedGamepadSnapshotDataFromNSData, - _GCFrameworkBundle, _GCFrameworkInitializationReasonToString, - _GCFrameworkStaticInitializer, _GCGamepadSnapShotDataV100FromNSData, - _GCHandSkeletonAny, _GCHandSkeletonLeft, _GCHandSkeletonRight, - _GCHapticDurationInfinite, _GCHapticsLocalityAll, _GCHapticsLocalityDefault, - _GCHapticsLocalityHandles, _GCHapticsLocalityLeftHandle, _GCHapticsLocalityLeftTrigger, + _GCExtendedGamepadInitInfoMake, _GCExtendedGamepadSnapShotDataV100FromNSData, + _GCExtendedGamepadSnapshotDataFromNSData, _GCFrameworkBundle, + _GCGamepadSnapShotDataV100FromNSData, _GCHandSkeletonAny, + _GCHandSkeletonLeft, _GCHandSkeletonRight, _GCHapticDurationInfinite, + _GCHapticsLocalityAll, _GCHapticsLocalityDefault, _GCHapticsLocalityHandles, + _GCHapticsLocalityLeftHandle, _GCHapticsLocalityLeftTrigger, _GCHapticsLocalityRightHandle, _GCHapticsLocalityRightTrigger, _GCHapticsLocalityTriggers, _GCIPCObjectIdentifier_Classes, _GCInputArcadeButtonName, _GCInputAuxiliaryMouseButtonName, + _GCInputBackLeftButton, _GCInputBackLeftPrimaryButton, _GCInputBackLeftSecondaryButton, + _GCInputBackRightButton, _GCInputBackRightPrimaryButton, _GCInputBackRightSecondaryButton, _GCInputButtonA, _GCInputButtonB, _GCInputButtonHome, _GCInputButtonMenu, _GCInputButtonOptions, _GCInputButtonShare, _GCInputButtonX, _GCInputButtonY, _GCInputDirectionPad, _GCInputDirectionalCardinalDpad, _GCInputDirectionalCenterButton, _GCInputDirectionalDpad, _GCInputDirectionalTouchSurfaceButton, _GCInputDualShockTouchpadButton, _GCInputDualShockTouchpadOne, _GCInputDualShockTouchpadTwo, - _GCInputLeftPaddle, _GCInputLeftShoulder, _GCInputLeftThumbstick, - _GCInputLeftThumbstickButton, _GCInputLeftTrigger, _GCInputMicroGamepadButtonA, - _GCInputMicroGamepadButtonMenu, _GCInputMicroGamepadButtonX, - _GCInputMicroGamepadDpad, _GCInputMouseCursor, _GCInputMouseScrollWheel, - _GCInputPedalAccelerator, _GCInputPedalBrake, _GCInputPedalClutch, - _GCInputPrimaryMouseButton, _GCInputRightPaddle, _GCInputRightShoulder, - _GCInputRightThumbstick, _GCInputRightThumbstickButton, _GCInputRightTrigger, - _GCInputSecondaryMouseButton, _GCInputShifter, _GCInputSteeringWheel, - _GCInputThirdMouseButton, _GCInputXboxPaddleFour, _GCInputXboxPaddleOne, - _GCInputXboxPaddleThree, _GCInputXboxPaddleTwo, _GCKeyA, _GCKeyApplication, - _GCKeyB, _GCKeyBackslash, _GCKeyC, _GCKeyCapsLock, _GCKeyCloseBracket, + _GCInputLeftBumper, _GCInputLeftPaddle, _GCInputLeftShoulder, + _GCInputLeftThumbstick, _GCInputLeftThumbstickButton, _GCInputLeftTrigger, + _GCInputMicroGamepadButtonA, _GCInputMicroGamepadButtonMenu, + _GCInputMicroGamepadButtonX, _GCInputMicroGamepadDpad, _GCInputMouseCursor, + _GCInputMouseScrollWheel, _GCInputPedalAccelerator, _GCInputPedalBrake, + _GCInputPedalClutch, _GCInputPrimaryMouseButton, _GCInputRightBumper, + _GCInputRightPaddle, _GCInputRightShoulder, _GCInputRightThumbstick, + _GCInputRightThumbstickButton, _GCInputRightTrigger, _GCInputSecondaryMouseButton, + _GCInputShifter, _GCInputSteeringWheel, _GCInputThirdMouseButton, + _GCInputXboxPaddleFour, _GCInputXboxPaddleOne, _GCInputXboxPaddleThree, + _GCInputXboxPaddleTwo, _GCKeyA, _GCKeyApplication, _GCKeyB, + _GCKeyBackslash, _GCKeyC, _GCKeyCapsLock, _GCKeyCloseBracket, _GCKeyCodeApplication, _GCKeyCodeBackslash, _GCKeyCodeCapsLock, _GCKeyCodeCloseBracket, _GCKeyCodeComma, _GCKeyCodeDeleteForward, _GCKeyCodeDeleteOrBackspace, _GCKeyCodeDownArrow, _GCKeyCodeEight, @@ -229,7 +257,7 @@ exports: _GCMouseDidConnectNotification, _GCMouseDidDisconnectNotification, _GCMouseDidStopBeingCurrentNotification, _GCOverrideCurrentProcessLinkedOn, _GCPhysicalDeviceWasRegisteredNotification, _GCPhysicalDeviceWasUnregisteredNotification, - _GCProductCategoryArcadeStick, _GCProductCategoryCoalescedRemote, + _GCPoint2Zero, _GCProductCategoryArcadeStick, _GCProductCategoryCoalescedRemote, _GCProductCategoryControlCenterRemote, _GCProductCategoryDualSense, _GCProductCategoryDualShock4, _GCProductCategoryHID, _GCProductCategoryKeyboard, _GCProductCategoryMFi, _GCProductCategoryMouse, _GCProductCategorySiriRemote1stGen, @@ -239,37 +267,35 @@ exports: _GCSystemGestureModeToString, _GCXRPropertyButtonFingerIndex, _GCXRPropertyButtonFingerMiddle, _GCXRPropertyButtonFingerPinky, _GCXRPropertyButtonFingerRing, _GCXRPropertyButtonFingerThumb, - _HIDControllerClassForVendorAndProduct, _NSDataFromGCExtendedGamepadSnapShotDataV100, - _NSDataFromGCExtendedGamepadSnapshotData, _NSDataFromGCGamepadSnapShotDataV100, - _NSDataFromGCMicroGamepadSnapShotDataV100, _NSDataFromGCMicroGamepadSnapshotData, - _USBControllerClassForVendorAndProduct, _VendorNameForATVProfile, - __GCControllerComponentDescription_Classes, __GCGamepadEventSourceDescription_Classes, - __GCHIDEventSourceDescription_Classes, __GCKeyboardEventSourceDescription_Classes, - __GCMotionEventSourceDescription_Classes, __publishCustomController, - __unpublishCustomController, _allCodes, _batchInputData, _clamp, - _convertToDict, _currentProcessBundleIdentifier, _currentProcessHasEntitlement, - _currentProcessIsGameControllerDaemon, _dataFromController, - _deviceMatchesUsageAndUsagePage, _doesDescriptorConformToSpec, + _NSDataFromGCExtendedGamepadSnapShotDataV100, _NSDataFromGCExtendedGamepadSnapshotData, + _NSDataFromGCGamepadSnapShotDataV100, _NSDataFromGCMicroGamepadSnapShotDataV100, + _NSDataFromGCMicroGamepadSnapshotData, _NSStringFromGCPoint2, + _VendorNameForATVProfile, __GCControllerComponentDescription_Classes, + __GCGamepadEventSourceDescription_Classes, __GCHIDEventSourceDescription_Classes, + __GCKeyboardEventSourceDescription_Classes, __GCMotionEventSourceDescription_Classes, + __publishCustomController, __unpublishCustomController, _allCodes, + _batchInputData, _clamp, _convertToDict, _currentProcessBundleIdentifier, + _currentProcessHasEntitlement, _currentProcessIsGameControllerDaemon, + _dataFromController, _deviceMatchesUsageAndUsagePage, _doesDescriptorConformToSpec, _dqAdd, _dqConjugate, _dqDLB, _dqGetMatrix, _dqGetRotation, _dqGetTranslation, _dqIdentity, _dqMakeDualQuaternion, _dqMul, _dqMulConst, _dqNormalize, _dqScLERP, _elementRangesMatch, - _getElementCapability, _getElementTimePressed, _getInterfaceNumberForDevice, - _hexStringFromByteArray, _isDeviceAppleControlCenterRemote, - _isDeviceAppleDirectionalRemote, _isDeviceAppleEmbeddedBluetoothButtons, - _isDeviceAppleMultiPointDigitizer, _isDeviceAppleSiriRemote, - _isDeviceAppleTouchpad, _isDeviceDualSense, _isDeviceDualSenseEdge, - _isDeviceDualShock4, _isDeviceKeyboard, _isDeviceLuna, _isDeviceMFiAuthenticated, - _isDeviceMFiGamepadCompliantForDeviceRef, _isDeviceMFiGamepadCompliantForServiceClientRef, - _isDeviceMotionLite, _isDeviceMouse, _isDeviceParentAuthenticated, - _isDeviceSwitchJoyCon, _isDeviceSwitchN64Controller, _isDeviceSwitchProController, + _getElementCapability, _getElementTimePressed, _hexStringFromByteArray, + _isDeviceAppleControlCenterRemote, _isDeviceAppleDirectionalRemote, + _isDeviceAppleEmbeddedBluetoothButtons, _isDeviceAppleMultiPointDigitizer, + _isDeviceAppleSiriRemote, _isDeviceAppleTouchpad, _isDeviceDualSense, + _isDeviceDualSenseEdge, _isDeviceDualShock4, _isDeviceKeyboard, + _isDeviceLuna, _isDeviceMFiGamepadCompliantForDeviceRef, _isDeviceMotionLite, + _isDeviceMouse, _isDeviceParentAuthenticated, _isDeviceSwitchJoyCon, + _isDeviceSwitchN64Controller, _isDeviceSwitchProController, _isDeviceSwitchSuperFamicomController, _isDeviceXbox, _isPartnerSupportEnabled, _kGCControllerSettingsMetaSettingsExistKey, _kGCSettingsCustomizedElementsKey, _kGCSettingsDefaultBundleIdentifier, _kGCSettingsElementInvertHorizontallyKey, _kGCSettingsElementInvertSwapAxesKey, _kGCSettingsElementInvertVerticallyKey, _kGCSettingsElementMappingKeyKey, _kGCSettingsMetaSettingsExistKey, _kGCSettingsMetaSuiteSuffix, _loadNSDictionaryFromJSON, _mapToAnalytics, - _nameForKeyCode, _numberFromInt, _serviceMatchesUsageAndUsagePage, - _stringFromState, _threadRunLoopSourceCallback ] + _mappingKeyForElement, _nameForKeyCode, _numberFromInt, _serviceMatchesUsageAndUsagePage, + _stringFromState ] objc-classes: [ GCAnalytics, GCApplicationStateMonitor, GCColor, GCController, GCControllerAxisInput, GCControllerButtonInput, GCControllerDirectionPad, GCControllerElement, GCControllerElementSettings, GCControllerInputState, @@ -277,17 +303,17 @@ exports: GCCursorElement, GCDeviceAdaptiveTriggersPayload, GCDeviceAdaptiveTriggersStatusPayload, GCDeviceBattery, GCDeviceButtonInputDescription, GCDeviceCursor, GCDeviceDirectionPadDescription, GCDeviceElementDescription, - GCDeviceHaptics, GCDeviceLight, GCDirectionalGamepad, GCDualSenseAdaptiveTrigger, + GCDeviceHaptics, GCDeviceLight, GCDeviceSession, GCDeviceSessionConfiguration, + GCDeviceSessionEvent, GCDirectionalGamepad, GCDualSenseAdaptiveTrigger, GCDualSenseGamepad, GCDualShockGamepad, GCEAAccessoryManagerWrapper, GCEventViewController, GCExtendedGamepad, GCExtendedGamepadSnapshot, GCFrontmostApplicationObserver, GCGameIntentSettings, GCGamepad, GCGamepadSnapshot, GCGearShifterElement, GCHIDInformation, - GCHapticActuator, GCHapticCapabilities, GCHapticCapabilityGraph, - GCHapticCapabilityGraphNode, GCKeyboard, GCKeyboardAndMouseEmulatedController, - GCKeyboardAndMouseEventObserver, GCKeyboardAndMouseManager, - GCKeyboardEventObserver, GCKeyboardInput, GCLocalPlayerIndicator, - GCLogicalDeviceAnalytics, GCMicroGamepad, GCMicroGamepadSnapshot, - GCMotion, GCMouse, GCMouseEventObserver, GCMouseInput, GCMouseInputState, + GCHIDInformationDescription, GCHapticActuator, GCHapticCapabilities, + GCHapticCapabilityGraph, GCHapticCapabilityGraphNode, GCKeyboard, + GCKeyboardAndMouseManager, GCKeyboardButtonElement, GCKeyboardInput, + GCLocalPlayerIndicator, GCLogicalDeviceAnalytics, GCMicroGamepad, + GCMicroGamepadSnapshot, GCMotion, GCMouse, GCMouseInput, GCMouseInputState, GCMouseLiveInput, GCNotificationManager, GCNotificationOptions, GCPhysicalInputElementCollection, GCPhysicalInputProfile, GCProductInformation, GCRacingWheel, GCRacingWheelInput, GCRacingWheelInputState, @@ -295,15 +321,21 @@ exports: GCSteeringWheelElement, GCSyntheticDeviceManager, GCSystemGesturesState, GCXboxGamepad, _GCAgentClientConnection, _GCAgentClientProxy, _GCAgentServerConnection, _GCAppAgentConnection, _GCAppClientConnection, - _GCAppClientProxy, _GCAppServerConnection, _GCCControllerHIDServiceInfoDescription, - _GCCControllerManagerDescription, _GCController, _GCControllerComponentDescription, - _GCControllerDescription, _GCControllerGestureAwareButtonInput, - _GCControllerManager, _GCControllerManagerAppClient, _GCControllerManagerServer, - _GCDefaultLogicalDevice, _GCDeviceExtendedGamepadComponentDescription, + _GCAppClientProxy, _GCAppServerConnection, _GCButtonEventImpl, + _GCCControllerHIDServiceInfoDescription, _GCCControllerManagerDescription, + _GCController, _GCControllerComponentDescription, _GCControllerGestureAwareButtonInput, + _GCControllerManagerServer, _GCCurrentApplicationForegroundMonitor, + _GCDefaultLogicalDevice, _GCDefaultPhysicalDevice, _GCDeviceExtendedGamepadComponentDescription, _GCDeviceGamepadComponentDescription, _GCDevicePhysicalInputComponentDescription, - _GCDriverClientConnection, _GCGamepadEventGamepadHIDAdapterDescription, - _GCGamepadEventImpl, _GCHIDEventSubject, _GCHandSkeleton, - _GCHapticEvent, _GCHapticServerManager, _GCIPCRemoteProcess, - _GCImplicitIPCObjectDescription, _GCKeyboardEventImpl, _GCObservation, - _GCXRComponent ] + _GCDigitizerEventImpl, _GCDriverClientConnection, _GCGamepadEventFusion, + _GCGamepadEventFusionConfig, _GCGamepadEventFusionDescription, + _GCGamepadEventGamepadHIDAdapter, _GCGamepadEventGamepadHIDAdapterDescription, + _GCGamepadEventImpl, _GCGamepadEventKeyboardEventAdapter, + _GCGamepadEventKeyboardEventAdapterConfig, _GCGamepadEventKeyboardEventAdapterDescription, + _GCHIDEventIOKitClient, _GCHIDEventSubject, _GCHandSkeleton, + _GCHapticEvent, _GCHapticServerManager, _GCIPCRemoteIncomingConnection, + _GCIPCRemoteProcess, _GCImplicitIPCObjectDescription, _GCKeyboardEventFusion, + _GCKeyboardEventHIDAdapter, _GCKeyboardEventHIDAdapterDescription, + _GCKeyboardEventImpl, _GCObservation, _GCPointerEventImpl, + _GCScrollEventImpl, _GCXRComponent ] ... diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCAxis2DInput.h b/Frameworks/GameController.framework/Versions/A/Headers/GCAxis2DInput.h new file mode 100644 index 00000000..066a3757 --- /dev/null +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCAxis2DInput.h @@ -0,0 +1,89 @@ +// +// GCAxis2DInput.h +// GameController +// +// Copyright © 2021 Apple Inc. All rights reserved. +// + +#import +#import + +@protocol GCPhysicalInputElement; +@protocol GCPhysicalInputSource; + +NS_ASSUME_NONNULL_BEGIN + +/** + An object conforming to \c GCAxis2DInput represents an input that produces a + pair of normalized values - between [-1, 1] - along two axes with fixed origin. + The origin - a value of 0 - corresponds the neutral state of the input. + */ +API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1)) +@protocol GCAxis2DInput + +/** + Set this block to be notified when the value of the axis input changes. + + @param element the element that has been modified. + @param input the input that has been modified. + @param value the value the axis was set to at the time the valueChangedHandler fired. + */ +@property (atomic, copy, nullable) void (^valueDidChangeHandler)(__kindof id element, id input, GCPoint2 value); + +/** + A pair of x,y normalized values for the axis input, each between -1 and 1 + (inclusive). The values are deadzoned and saturated before they are returned + so there is no value outside the range. Deadzoning does not remove values + from the range; the full 0 to 1 magnitude of values are possible from the input. + + As an axis is often used in a digital sense, you can rely on a value of 0 + meaning the axis is inside the deadzone. Any value greater than or less than + zero is not in the deadzone. + */ +@property (readonly) GCPoint2 value; + +/** + Check if the axis can support more than just digital values. + + Defaults to \c YES for most axis inputs. + */ +@property (readonly, getter = isAnalog) BOOL analog; + +/** + Check if the axis input value "rolls over" when reaching either the extreme + high or low value. For example, some dials can be rotated past the position + that represents their maximum value causing the reported value to roll over. + + Defaults to \c NO for most axis elements. + */ +@property (readonly) BOOL canWrap; + +/** + The timestamp of the last value. + + This time interval is not relative to any specific point in time. You can + subtract a previous timestamp from the current timestamp to determine the time + (in seconds) between changes to the value. + */ +@property (readonly) NSTimeInterval lastValueTimestamp; + +/** + The interval (in seconds) between the timestamp of the last event and the + current time. + + This should be treated as a lower bound of the event latency. It may not + include (wired or wireless) transmission latency, or latency accrued on + the device before the event was transmitted to the host. + */ +@property (readonly) NSTimeInterval lastValueLatency; + +/** + An object describing the physical action(s) the user performs to manipulate + this input. + */ +@property (copy, readonly) NSSet> *sources; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCController.h b/Frameworks/GameController.framework/Versions/A/Headers/GCController.h index 244d3ad1..2ab87c1f 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCController.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCController.h @@ -49,8 +49,8 @@ NS_ASSUME_NONNULL_BEGIN @see NSNotificationCenter @see GCController.controllers */ -GAMECONTROLLER_EXTERN NSString *const GCControllerDidConnectNotification API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)); -GAMECONTROLLER_EXTERN NSString *const GCControllerDidDisconnectNotification API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)); +GAMECONTROLLER_EXPORT NSString *const GCControllerDidConnectNotification API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); +GAMECONTROLLER_EXPORT NSString *const GCControllerDidDisconnectNotification API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); /** Use these constants with NSNotificationCenter to listen to a controller becoming the most recently used controller. @@ -70,8 +70,8 @@ GCController *controller = note.object; @see NSNotificationCenter @see GCController.controllers */ -GAMECONTROLLER_EXTERN NSString *const GCControllerDidBecomeCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN NSString *const GCControllerDidStopBeingCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT NSString *const GCControllerDidBecomeCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT NSString *const GCControllerDidStopBeingCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /** Use this constant with NSNotificationCenter to listen to controller user customization events. @@ -93,7 +93,7 @@ GAMECONTROLLER_EXTERN NSString *const GCControllerDidStopBeingCurrentNotificatio @see NSNotificationCenter @see GCController.controllers */ -GAMECONTROLLER_EXTERN NSString *const GCControllerUserCustomizationsDidChangeNotification API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)); +GAMECONTROLLER_EXPORT NSString *const GCControllerUserCustomizationsDidChangeNotification API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)); /** This is the player index that a connected controller will have if it has never been assigned a player index on the current system. @@ -101,12 +101,12 @@ GAMECONTROLLER_EXTERN NSString *const GCControllerUserCustomizationsDidChangeNot controller set it back to this value. */ typedef NS_ENUM(NSInteger, GCControllerPlayerIndex) { - GCControllerPlayerIndexUnset = -1, - GCControllerPlayerIndex1 = 0, - GCControllerPlayerIndex2, - GCControllerPlayerIndex3, - GCControllerPlayerIndex4, -}; + GCControllerPlayerIndexUnset API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) = -1, + GCControllerPlayerIndex1 API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)) = 0, + GCControllerPlayerIndex2 API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)), + GCControllerPlayerIndex3 API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)), + GCControllerPlayerIndex4 API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)), +} API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); /** @@ -120,8 +120,28 @@ typedef NS_ENUM(NSInteger, GCControllerPlayerIndex) { supported before using a controller in your application. Ignore a controller that doesn't support a profile that suits your application, as the user will expect their controller to either be fully supported or not supported at all. */ -API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) -@interface GCController : NSObject +API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) +@interface GCController : NSObject + +/** + * Get a list of controllers currently attached to the system. + * + * @see GCControllerDidConnectNotification + * @see GCControllerDidDisconnectNotification + */ ++ (NSArray *)controllers API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); + +/** + * The most recently used game controller. If a user actuates a game controller + * input, that controller will become the current one. + * + * @note + * This is useful for single player games where you only care about whether an + * input is pressed, and not where it came from. You will still need to + * register for changes to GCController.current so that your UI can remain + * up-to-date with the current controller. + */ +@property (class, atomic, strong, readonly, nullable) GCController *current API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /** Set this block to be notified when a user intends to suspend or resume the current game state. A controller will have a button @@ -136,16 +156,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) @see microGamepad @see extendedGamepad */ -@property (nonatomic, copy, nullable) void (^controllerPausedHandler)(GCController *controller) API_DEPRECATED("controllerPausedHandler has been deprecated. Use the Menu button found on the controller's profile, if it exists.", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)); - - -/** - The most recently used game controller. If a user actuates a game controller input, that controller will become the current one. - - @note This is useful for single player games where you only care about whether an input is pressed, and not where it came from. You - will still need to register for changes to GCController.current so that your UI can remain up-to-date with the current controller. - */ -@property (class, atomic, strong, readonly, nullable) GCController *current API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +@property (nonatomic, copy, nullable) void (^controllerPausedHandler)(GCController *controller) API_DEPRECATED("Use the Menu button found on the controller's input profile, if it exists.", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)); /** Whether the current application should monitor and respond to game controller events when it is not the frontmost application. @@ -158,24 +169,12 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) */ @property (class, nonatomic, readwrite) BOOL shouldMonitorBackgroundEvents API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5)); - /** A controller may be form fitting or otherwise closely attached to the device. This closeness to other inputs on the device may suggest that interaction with the device may use other inputs easily. This is presented to developers to allow them to make informed decisions about UI and interactions to choose for their game in this situation. */ -@property (nonatomic, readonly, getter = isAttachedToDevice) BOOL attachedToDevice; - -/** - A controller may represent a real device managed by the operating system, or a virtual snapshot created by the developer. - If a controller is directly created by the developer, it is considered to be a snapshot, allowing direct writes to any - GCControllerElement of its profiles. If the controller is not snapshot, the system will reject any write requests to GCControllerElement. - - @see controllerWithMicroGamepad - @see controllerWithExtendedGamepad - @see capture - */ -@property (atomic, readonly, getter = isSnapshot) BOOL snapshot API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); +@property (nonatomic, readonly, getter = isAttachedToDevice) BOOL attachedToDevice API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); /** A player index for the controller, defaults to GCControllerPlayerIndexUnset. @@ -188,7 +187,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) Negative values less than GCControllerPlayerIndexUnset will just map back to GCControllerPlayerIndexUnset when read back. */ -@property (nonatomic) GCControllerPlayerIndex playerIndex; +@property (nonatomic) GCControllerPlayerIndex playerIndex API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); /** Gets the input profile for the controller. @@ -229,9 +228,8 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) @see motion */ @property (nonatomic, strong, readonly, nullable) GCGamepad *gamepad API_DEPRECATED_WITH_REPLACEMENT("extendedGamepad", macos(10.9, 10.12), ios(7.0, 10.0), tvos(7.0, 10.0)); -@property (nonatomic, strong, readonly, nullable) GCMicroGamepad *microGamepad; -@property (nonatomic, strong, readonly, nullable) GCExtendedGamepad *extendedGamepad; - +@property (nonatomic, strong, readonly, nullable) GCMicroGamepad *microGamepad API_AVAILABLE(macos(10.12), ios(10.0), tvos(9.0)); +@property (nonatomic, strong, readonly, nullable) GCExtendedGamepad *extendedGamepad API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); /** Gets the motion input profile. This profile is optional and may be available if the controller is attached to a device that supports motion. @@ -239,7 +237,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) @see gamepad @see extendedGamepad */ -@property (nonatomic, strong, readonly, nullable) GCMotion *motion API_AVAILABLE(macos(10.10), ios(8.0), tvos(8.0)); +@property (nonatomic, strong, readonly, nullable) GCMotion *motion API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)); /** Gets the light for the controller, if one exists. @@ -258,26 +256,72 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) */ @property (nonatomic, retain, readonly, nullable) GCDeviceHaptics *haptics API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +/** + * Returns YES if the given HID device is supported by the Game Controller + * framework, and will have an associated GCController instance. + * + * @note This is not cheap, be sure to cache the result + */ ++ (BOOL)supportsHIDDevice:(IOHIDDeviceRef)device API_AVAILABLE(macos(11.0)) API_UNAVAILABLE(ios, tvos); + +@end + + + +@interface GCController (Snapshot) /** - Polls the state vector of the controller and saves it to a new and writable instance of GCController. - - If your application is heavily multithreaded this may also be useful to guarantee atomicity of input handling as - a snapshot will not change based on user input once it is taken. - - @see snapshot - @return A new controller with the duplicated state vector of the current controller + * A controller may represent a real device managed by the operating system, + * or a virtual snapshot created by the developer. If a controller is created + * by the developer, it is considered to be a snapshot, allowing direct writes + * to any GCControllerElement of its profiles. If the controller is not + * snapshot, the system will reject any write requests to GCControllerElement. + * + * @see controllerWithMicroGamepad + * @see controllerWithExtendedGamepad + * @see capture + */ +@property (readonly, getter=isSnapshot) BOOL snapshot API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); + +/** + * Polls the state vector of the controller and saves it to a new and writable + * instance of GCController. + * + * If your application is heavily multithreaded this may also be useful to + * guarantee atomicity of input handling as a snapshot will not change based + * on user input once it is taken. + * + * @see snapshot + * @return A new controller with the duplicated state vector of the current + * controller. */ - (GCController *)capture API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); /** - Get a list of controllers currently attached to the system. + * Creates a controller with a micro gamepad profile. + * + * This controller will be considered a snapshot, allowing developers to write + * to any GCControllerElement of its profiles. + * + * @see snapshot + * @return A new controller with a micro gamepad profile + */ ++ (GCController *)controllerWithMicroGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); + +/** + Creates a controller with an extended gamepad profile. + + This controller will be considered a snapshot, allowing developers to write to any GCControllerElement of its profiles. - @see GCControllerDidConnectNotification - @see GCControllerDidDisconnectNotification + @see snapshot + @return A new controller with an extended gamepad profile */ -+ (NSArray *)controllers; ++ (GCController *)controllerWithExtendedGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); +@end + + +@interface GCController (Discovery) /** Start discovery of new wireless controllers that are discoverable. This is an asynchronous and the supplied completionHandler @@ -303,7 +347,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) @see stopWirelessControllerDiscovery @see controllers */ -+ (void)startWirelessControllerDiscoveryWithCompletionHandler:(nullable void (^)(void))completionHandler; ++ (void)startWirelessControllerDiscoveryWithCompletionHandler:(nullable void (^)(void))completionHandler API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); /** If no more controllers are needed, depending on game state or number of controllers supported by a game, the discovery @@ -313,34 +357,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) @see startWirelessControllerDiscoveryWithCompletionHandler: */ -+ (void)stopWirelessControllerDiscovery; - -/** - Creates a controller with a micro gamepad profile. - - This controller will be considered a snapshot, allowing developers to write to any GCControllerElement of its profiles. - - @see snapshot - @return A new controller with a micro gamepad profile - */ -+ (GCController *)controllerWithMicroGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); - -/** - Creates a controller with an extended gamepad profile. - - This controller will be considered a snapshot, allowing developers to write to any GCControllerElement of its profiles. - - @see snapshot - @return A new controller with an extended gamepad profile - */ -+ (GCController *)controllerWithExtendedGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); - -/** - Returns YES if the given HID device is supported by the Game Controller framework, and will have an associated GCController instance. - - @note This is not cheap, be sure to cache the result - */ -+ (BOOL)supportsHIDDevice:(IOHIDDeviceRef)device API_AVAILABLE(macos(11.0)) API_UNAVAILABLE(ios, tvos); ++ (void)stopWirelessControllerDiscovery API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); @end diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCControllerAxisInput.h b/Frameworks/GameController.framework/Versions/A/Headers/GCControllerAxisInput.h index 748563a1..1d70a17a 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCControllerAxisInput.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCControllerAxisInput.h @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN -API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) +API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) @interface GCControllerAxisInput : GCControllerElement /** @@ -18,7 +18,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) @param axis the element that has been modified. @param value the value the axis was set to at the time the valueChangedHandler fired. */ -typedef void (^GCControllerAxisValueChangedHandler)(GCControllerAxisInput *axis, float value); +typedef void (^GCControllerAxisValueChangedHandler)(GCControllerAxisInput *axis, float value) API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); @property (nonatomic, copy, nullable) GCControllerAxisValueChangedHandler valueChangedHandler; /** diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCControllerButtonInput.h b/Frameworks/GameController.framework/Versions/A/Headers/GCControllerButtonInput.h index ac93ca73..5adb36ab 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCControllerButtonInput.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCControllerButtonInput.h @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN -API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) +API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) @interface GCControllerButtonInput : GCControllerElement /** @@ -21,7 +21,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) @see value @see pressed */ -typedef void (^GCControllerButtonValueChangedHandler)(GCControllerButtonInput *button, float value, BOOL pressed); +typedef void (^GCControllerButtonValueChangedHandler)(GCControllerButtonInput *button, float value, BOOL pressed) API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); @property (nonatomic, copy, nullable) GCControllerButtonValueChangedHandler valueChangedHandler; /** @@ -29,7 +29,7 @@ typedef void (^GCControllerButtonValueChangedHandler)(GCControllerButtonInput *b will get called less often than the valueChangedHandler with the additional feature of the pressed state being different to the last time it was called. */ -@property (nonatomic, copy, nullable) GCControllerButtonValueChangedHandler pressedChangedHandler API_AVAILABLE(macos(10.10), ios(8.0), tvos(8.0)); +@property (nonatomic, copy, nullable) GCControllerButtonValueChangedHandler pressedChangedHandler API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)); /** Set this block if you want to be notified when the touched state on this button changes. @@ -41,7 +41,7 @@ typedef void (^GCControllerButtonValueChangedHandler)(GCControllerButtonInput *b @see value @see pressed */ -typedef void (^GCControllerButtonTouchedChangedHandler)(GCControllerButtonInput *button, float value, BOOL pressed, BOOL touched); +typedef void (^GCControllerButtonTouchedChangedHandler)(GCControllerButtonInput *button, float value, BOOL pressed, BOOL touched) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); @property (nonatomic, copy, nullable) GCControllerButtonTouchedChangedHandler touchedChangedHandler API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /** diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCControllerDirectionPad.h b/Frameworks/GameController.framework/Versions/A/Headers/GCControllerDirectionPad.h index 42c55d16..834a2cbc 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCControllerDirectionPad.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCControllerDirectionPad.h @@ -16,7 +16,7 @@ NS_ASSUME_NONNULL_BEGIN A direction pad is a common grouping of 2 axis inputs where the input can also be interpreted as 2 sets of mutually exclusive button pairs. Only one button in each pair, {up, down} and {left, right}, can be pressed at any one time. */ -API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) +API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) @interface GCControllerDirectionPad : GCControllerElement /** @@ -26,7 +26,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) @param xValue the value the x axis was set to at the time the valueChangedHandler fired. @param yValue the value the y axis was set to at the time the valueChangedHandler fired. */ -typedef void (^GCControllerDirectionPadValueChangedHandler)(GCControllerDirectionPad *dpad, float xValue, float yValue); +typedef void (^GCControllerDirectionPadValueChangedHandler)(GCControllerDirectionPad *dpad, float xValue, float yValue) API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); @property (nonatomic, copy, nullable) GCControllerDirectionPadValueChangedHandler valueChangedHandler; @property (nonatomic, readonly) GCControllerAxisInput *xAxis; diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCControllerElement.h b/Frameworks/GameController.framework/Versions/A/Headers/GCControllerElement.h index 14ed4927..2d98feb3 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCControllerElement.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCControllerElement.h @@ -29,7 +29,6 @@ NS_ASSUME_NONNULL_BEGIN @see GCControllerElement.boundToSystemGesture @see GCControllerElement.preferredSystemGestureState */ -API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) typedef NS_ENUM(NSInteger, GCSystemGestureState) { /** System gesture recognizers will run before input is sent to app, this is the default state */ GCSystemGestureStateEnabled = 0, @@ -37,12 +36,12 @@ typedef NS_ENUM(NSInteger, GCSystemGestureState) { GCSystemGestureStateAlwaysReceive, /** System gesture recognizers will not run at all. Input is passed directly to app */ GCSystemGestureStateDisabled -} NS_SWIFT_NAME(GCControllerElement.SystemGestureState); +} NS_SWIFT_NAME(GCControllerElement.SystemGestureState) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /** Every controller element knows which collection it belongs to and whether its input value is analog or digital. */ -API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) +API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) @interface GCControllerElement : NSObject /** @@ -109,7 +108,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) A set of aliases that can be used to access this element with keyed subscript notation. */ -@property (nonatomic, readonly) NSSet *aliases API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +@property (nonatomic, copy, readonly) NSSet *aliases API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); @end diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCControllerTouchpad.h b/Frameworks/GameController.framework/Versions/A/Headers/GCControllerTouchpad.h index b178aa35..cb47047c 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCControllerTouchpad.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCControllerTouchpad.h @@ -19,14 +19,14 @@ typedef NS_ENUM(NSInteger, GCTouchState) { GCTouchStateUp, GCTouchStateDown, GCTouchStateMoving -} NS_SWIFT_NAME(GCControllerTouchpad.TouchState); +} NS_SWIFT_NAME(GCControllerTouchpad.TouchState) API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); /** A touchpad is a touch-based two axis input with a notion of "touch state". It keeps track of whether the touchpad is actively being touched, and generates events based on a change in touch state. */ -API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) +API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) @interface GCControllerTouchpad : GCControllerElement /** @@ -44,7 +44,7 @@ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) @param buttonValue the value of the touch surface button at the time the handler fired. @param buttonPressed the pressed state of the touch surface button at the time the handler fired. */ -typedef void (^GCControllerTouchpadHandler)(GCControllerTouchpad *touchpad, float xValue, float yValue, float buttonValue, BOOL buttonPressed); +typedef void (^GCControllerTouchpadHandler)(GCControllerTouchpad *touchpad, float xValue, float yValue, float buttonValue, BOOL buttonPressed) API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); /** Called when a touch event begins on the touchpad. diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCDevice.h b/Frameworks/GameController.framework/Versions/A/Headers/GCDevice.h index 3e72bb45..cc0dc896 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCDevice.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCDevice.h @@ -26,13 +26,13 @@ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) @see GCControllerDirectionPad.valueChangedHandler @see GCMotion.valueChangedHandler */ -@property (nonatomic, strong) dispatch_queue_t handlerQueue API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)); +@property (nonatomic, strong) dispatch_queue_t handlerQueue API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)); /** A vendor supplied name. May be nil, and is not guaranteed to be unique. This should not be used as a key in a dictionary, but simply as a way to present some basic information about the device in testing or to the user. */ -@property (nonatomic, readonly, copy, nullable) NSString *vendorName API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)); +@property (nonatomic, readonly, copy, nullable) NSString *vendorName API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); /** The product category the device belongs to. This is useful for setting appropriate UI elements based on what type of device is connected. diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCDeviceBattery.h b/Frameworks/GameController.framework/Versions/A/Headers/GCDeviceBattery.h index 551a44da..835d73a6 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCDeviceBattery.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCDeviceBattery.h @@ -22,7 +22,7 @@ typedef NS_ENUM(NSInteger, GCDeviceBatteryState) { GCDeviceBatteryStateDischarging, GCDeviceBatteryStateCharging, GCDeviceBatteryStateFull -} NS_SWIFT_NAME(GCDeviceBattery.State); +} NS_SWIFT_NAME(GCDeviceBattery.State) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /** A controller battery is an abstract representation of the battery level and battery status of a GCController instance. @@ -30,6 +30,8 @@ typedef NS_ENUM(NSInteger, GCDeviceBatteryState) { API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) @interface GCDeviceBattery : NSObject +- (instancetype)init NS_UNAVAILABLE; + /** This is the battery level for controller. Battery level ranges from 0.0 (fully discharged) to 1.0 (100% charged) and defaults to 0 @@ -43,9 +45,6 @@ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) */ @property(nonatomic, readonly) GCDeviceBatteryState batteryState; - -- (instancetype)init NS_UNAVAILABLE; - @end NS_ASSUME_NONNULL_END diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCDeviceHaptics.h b/Frameworks/GameController.framework/Versions/A/Headers/GCDeviceHaptics.h index 17f37d92..d1818ff1 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCDeviceHaptics.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCDeviceHaptics.h @@ -23,16 +23,16 @@ NS_ASSUME_NONNULL_BEGIN @see GCDeviceHaptics */ typedef NSString* GCHapticsLocality NS_TYPED_ENUM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityDefault API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); // guaranteed to be supported -GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityAll API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); // guaranteed to be supported -GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityHandles API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityLeftHandle API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityRightHandle API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityTriggers API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityLeftTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityRightTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityDefault API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); // guaranteed to be supported +GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityAll API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); // guaranteed to be supported +GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityHandles API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityLeftHandle API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityRightHandle API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityTriggers API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityLeftTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityRightTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN const float GCHapticDurationInfinite API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT const float GCHapticDurationInfinite API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) @interface GCDeviceHaptics : NSObject diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCDevicePhysicalInputStateDiff.h b/Frameworks/GameController.framework/Versions/A/Headers/GCDevicePhysicalInputStateDiff.h index 06760131..87290e72 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCDevicePhysicalInputStateDiff.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCDevicePhysicalInputStateDiff.h @@ -20,7 +20,7 @@ typedef NS_ENUM(NSInteger, GCDevicePhysicalInputElementChange) { GCDevicePhysicalInputElementNoChange = 0, /** Indicates that a value of the element changed. */ GCDevicePhysicalInputElementChanged = 1, -}; +} API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)); /** diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCDirectionPadElement.h b/Frameworks/GameController.framework/Versions/A/Headers/GCDirectionPadElement.h index 6fd3be0b..e7acd389 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCDirectionPadElement.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCDirectionPadElement.h @@ -8,6 +8,7 @@ #import #import #import +#import #import NS_ASSUME_NONNULL_BEGIN @@ -24,6 +25,9 @@ NS_ASSUME_NONNULL_BEGIN API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)) @protocol GCDirectionPadElement +/** The x,y position of the dpad input. */ +@property (readonly) id xyAxes API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1)); + /** The horizontal/x-component of the dpad input. */ @property (readonly) id xAxis; /** The vertical/y-component of the dpad input. */ diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCDirectionalGamepad.h b/Frameworks/GameController.framework/Versions/A/Headers/GCDirectionalGamepad.h index ef93fb1a..cd963a21 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCDirectionalGamepad.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCDirectionalGamepad.h @@ -16,7 +16,7 @@ NS_ASSUME_NONNULL_BEGIN @note For the 2021 2nd generation Siri Remote, this represents touching anywhere on the entire touch surface - including the inner and outer rings. */ -GAMECONTROLLER_EXTERN NSString *const GCInputDirectionalDpad API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5)); +GAMECONTROLLER_EXPORT NSString *const GCInputDirectionalDpad API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5)); /** The button corresponding to pressing anywhere on the primary directional input surface for the directional gamepad @@ -25,21 +25,21 @@ GAMECONTROLLER_EXTERN NSString *const GCInputDirectionalDpad API_AVAILABLE(macos @note For the 2021 2nd generation Siri Remote, this represents pressing anywhere the entire touch surface - including the inner and outer rings. */ -GAMECONTROLLER_EXTERN NSString *const GCInputDirectionalTouchSurfaceButton API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCInputDirectionalTouchSurfaceButton API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /** An optional secondary directional input surface for the directional gamepad. This input is guaranteed to be an 8-way digital dpad with physical Up, Down, Left, Right butttons. @note For the 2021 2nd generation Siri Remote, this represents pressing on the outer ring of the touch surface. */ -GAMECONTROLLER_EXTERN NSString *const GCInputDirectionalCardinalDpad API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5)); +GAMECONTROLLER_EXPORT NSString *const GCInputDirectionalCardinalDpad API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5)); /** An optional button for the directional gamepad. This input represents the center button of the cardinal dpad. @note For the 2021 2nd generation Siri Remote, this represents pressing anywhere on the inner ring of the touch surface. */ -GAMECONTROLLER_EXTERN NSString *const GCInputDirectionalCenterButton API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCInputDirectionalCenterButton API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /** Directional Gamepad profile. diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCDualSenseAdaptiveTrigger.h b/Frameworks/GameController.framework/Versions/A/Headers/GCDualSenseAdaptiveTrigger.h index c7f137d8..79d7cd46 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCDualSenseAdaptiveTrigger.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCDualSenseAdaptiveTrigger.h @@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN enum { /** The number of discrete control positions supported by the DualSense adaptive triggers. Each of these positions can be configured separately in multi-position feedback and multi-position vibration modes. */ - GCDualSenseAdaptiveTriggerDiscretePositionCount NS_SWIFT_NAME(GCDualSenseAdaptiveTrigger.discretePositionCount) = 10, + GCDualSenseAdaptiveTriggerDiscretePositionCount NS_SWIFT_NAME(GCDualSenseAdaptiveTrigger.discretePositionCount) API_AVAILABLE(macos(12.3), ios(15.4), tvos(15.4)) = 10, }; typedef NS_ENUM(NSInteger, GCDualSenseAdaptiveTriggerMode) { diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCEventViewController.h b/Frameworks/GameController.framework/Versions/A/Headers/GCEventViewController.h index 168aa2da..b754b53f 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCEventViewController.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCEventViewController.h @@ -5,8 +5,6 @@ // Copyright © 2018 Apple Inc. All rights reserved. // -#import - #import #import diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCExtendedGamepad.h b/Frameworks/GameController.framework/Versions/A/Headers/GCExtendedGamepad.h index d967a985..4ff7487c 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCExtendedGamepad.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCExtendedGamepad.h @@ -23,7 +23,7 @@ NS_ASSUME_NONNULL_BEGIN A profile maps the hardware notion of a controller into a logical controller. One that a developer can design for and depend on, no matter the underlying hardware. */ -API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) +API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunguarded-availability" @interface GCExtendedGamepad : GCPhysicalInputProfile @@ -32,11 +32,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) /** A profile keeps a reference to the controller that this profile is mapping input from. */ -#if !__has_feature(objc_arc) -@property (nonatomic, readonly, assign) GCController *controller; -#else @property (nonatomic, readonly, weak) GCController *controller; -#endif /** Set this block if you want to be notified when a value on a element changed. If multiple elements have changed this block will be called @@ -46,7 +42,7 @@ API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0)) @param gamepad this gamepad that is being used to map the raw input data into logical values on controller elements such as the dpad or the buttons. @param element the element that has been modified. */ -typedef void (^GCExtendedGamepadValueChangedHandler)(GCExtendedGamepad *gamepad, GCControllerElement *element); +typedef void (^GCExtendedGamepadValueChangedHandler)(GCExtendedGamepad *gamepad, GCControllerElement *element) API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); @property (nonatomic, copy, nullable) GCExtendedGamepadValueChangedHandler valueChangedHandler; /** @@ -57,7 +53,7 @@ typedef void (^GCExtendedGamepadValueChangedHandler)(GCExtendedGamepad *gamepad, If your application is heavily multithreaded this may also be useful to guarantee atomicity of input handling as a snapshot will not change based on user input once it is taken. */ -- (GCExtendedGamepadSnapshot *)saveSnapshot API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController capture] instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0)); +- (GCExtendedGamepadSnapshot *)saveSnapshot API_DEPRECATED("Use the -[GCController capture] method instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)); /** Required to be analog in the Extended profile. All the elements of this directional input are thus analog. @@ -132,7 +128,7 @@ typedef void (^GCExtendedGamepadValueChangedHandler)(GCExtendedGamepad *gamepad, @note If the controller's snapshot flag is set to NO, this method has no effect. @see GCController.snapshot */ -- (void) setStateFromExtendedGamepad:(GCExtendedGamepad *)extendedGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); +- (void)setStateFromExtendedGamepad:(GCExtendedGamepad *)extendedGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); @end diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCExtendedGamepadSnapshot.h b/Frameworks/GameController.framework/Versions/A/Headers/GCExtendedGamepadSnapshot.h index 2fae1bff..16c13430 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCExtendedGamepadSnapshot.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCExtendedGamepadSnapshot.h @@ -20,8 +20,9 @@ NS_ASSUME_NONNULL_BEGIN @see -[GCExtendedGamepad saveSnapshot] */ -API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)) +API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)) @interface GCExtendedGamepadSnapshot : GCExtendedGamepad + @property (atomic, copy) NSData *snapshotData; - (instancetype)initWithSnapshotData:(NSData *)data; @@ -29,12 +30,13 @@ API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController @end + typedef NS_ENUM(NSInteger, GCExtendedGamepadSnapshotDataVersion) { GCExtendedGamepadSnapshotDataVersion1 = 0x0100, GCExtendedGamepadSnapshotDataVersion2 = 0x0101 -} API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +} API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0)); -extern const GCExtendedGamepadSnapshotDataVersion GCCurrentExtendedGamepadSnapshotDataVersion API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +extern const GCExtendedGamepadSnapshotDataVersion GCCurrentExtendedGamepadSnapshotDataVersion API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); #pragma pack(push, 1) typedef struct { @@ -74,21 +76,21 @@ typedef struct { BOOL leftThumbstickButton API_AVAILABLE(macos(10.14.1), ios(12.1), tvos(12.1)); BOOL rightThumbstickButton API_AVAILABLE(macos(10.14.1), ios(12.1), tvos(12.1)); -} GCExtendedGamepadSnapshotData API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +} GCExtendedGamepadSnapshotData API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0)); #pragma pack(pop) /**Fills out a snapshot from any compatible NSData source @return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases. */ -BOOL GCExtendedGamepadSnapshotDataFromNSData(GCExtendedGamepadSnapshotData *__nullable snapshotData, NSData *__nullable data) API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +BOOL GCExtendedGamepadSnapshotDataFromNSData(GCExtendedGamepadSnapshotData * _Nullable snapshotData, NSData * _Nullable data) API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0)); /**Creates an NSData object from a snapshot. If the version and size is not set in the snapshot the data will automatically have the version GCCurrentExtendedGamepadSnapshotDataVersion and sizeof(GCExtendedGamepadSnapshotData) set as the values implicitly. @return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCExtendedGamepadSnapshot.snapshotData */ -NSData *__nullable NSDataFromGCExtendedGamepadSnapshotData(GCExtendedGamepadSnapshotData *__nullable snapshotData) API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +NSData * _Nullable NSDataFromGCExtendedGamepadSnapshotData(GCExtendedGamepadSnapshotData * _Nullable snapshotData) API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0)); #pragma mark - Deprecated Versioning System @@ -122,19 +124,20 @@ typedef struct { float leftTrigger; float rightTrigger; -} GCExtendedGamepadSnapShotDataV100 API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +} GCExtendedGamepadSnapShotDataV100 API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)); #pragma pack(pop) /**Fills out a v100 snapshot from any compatible NSData source @return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases. */ -BOOL GCExtendedGamepadSnapShotDataV100FromNSData(GCExtendedGamepadSnapShotDataV100 *__nullable snapshotData, NSData *__nullable data) API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +BOOL GCExtendedGamepadSnapShotDataV100FromNSData(GCExtendedGamepadSnapShotDataV100 * _Nullable snapshotData, NSData * _Nullable data) API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)); /**Creates an NSData object from a v100 snapshot. If the version and size is not set in the snapshot the data will automatically have version 0x100 and sizeof(GCExtendedGamepadSnapShotDataV100) set as the values implicitly. @return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCExtendedGamepadSnapshot.snapshotData */ -NSData *__nullable NSDataFromGCExtendedGamepadSnapShotDataV100(GCExtendedGamepadSnapShotDataV100 *__nullable snapshotData) API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +NSData * _Nullable NSDataFromGCExtendedGamepadSnapShotDataV100(GCExtendedGamepadSnapShotDataV100 * _Nullable snapshotData) API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)); + NS_ASSUME_NONNULL_END diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCExtern.h b/Frameworks/GameController.framework/Versions/A/Headers/GCExtern.h index b863c4d8..1431d798 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCExtern.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCExtern.h @@ -5,8 +5,17 @@ // Copyright (c) 2017 Apple Inc. All rights reserved. // -#ifdef __cplusplus -#define GAMECONTROLLER_EXTERN extern "C" __attribute__((visibility ("default"))) -#else -#define GAMECONTROLLER_EXTERN extern __attribute__((visibility ("default"))) +#if !defined(GAMECONTROLLER_EXTERN) +# if defined(__cplusplus) +# define GAMECONTROLLER_EXTERN extern "C" +# else +# define GAMECONTROLLER_EXTERN extern +# endif #endif + +#if !defined(GAMECONTROLLER_EXPORT) +# define GAMECONTROLLER_EXPORT __attribute__((visibility("default"))) GAMECONTROLLER_EXTERN +#endif + + + diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCGamepad.h b/Frameworks/GameController.framework/Versions/A/Headers/GCGamepad.h index efd398e6..e62b56ad 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCGamepad.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCGamepad.h @@ -21,7 +21,7 @@ NS_ASSUME_NONNULL_BEGIN and depend on, no matter the underlying hardware. */ -API_DEPRECATED_WITH_REPLACEMENT("GCExtendedGamepad", macos(10.9, 10.12), ios(7.0, 10.0), tvos(7.0, 10.0)) +API_DEPRECATED_WITH_REPLACEMENT("GCExtendedGamepad", macos(10.9, 10.12), ios(7.0, 10.0), tvos(9.0, 10.0)) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunguarded-availability" @interface GCGamepad : GCPhysicalInputProfile @@ -30,11 +30,7 @@ API_DEPRECATED_WITH_REPLACEMENT("GCExtendedGamepad", macos(10.9, 10.12), ios(7.0 /** A profile keeps a reference to the controller that this profile is mapping input from. */ -#if !__has_feature(objc_arc) -@property (nonatomic, readonly, assign) GCController *controller; -#else @property (nonatomic, readonly, weak) GCController *controller; -#endif /** Set this block if you want to be notified when a value on a element changed. If multiple elements have changed this block will be called @@ -44,8 +40,7 @@ API_DEPRECATED_WITH_REPLACEMENT("GCExtendedGamepad", macos(10.9, 10.12), ios(7.0 @param gamepad this gamepad that is being used to map the raw input data into logical values on controller elements such as the dpad or the buttons. @param element the element that has been modified. */ -API_DEPRECATED("GCGamepad has been deprecated", macos(10.9, 10.12), ios(7.0, 10.0), tvos(7.0, 10.0)) -typedef void (^GCGamepadValueChangedHandler)(GCGamepad *gamepad, GCControllerElement *element); +typedef void (^GCGamepadValueChangedHandler)(GCGamepad *gamepad, GCControllerElement *element) API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)); @property (nonatomic, copy, nullable) GCGamepadValueChangedHandler valueChangedHandler; /** diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCGamepadSnapshot.h b/Frameworks/GameController.framework/Versions/A/Headers/GCGamepadSnapshot.h index 6c197a1f..1f3ff1a8 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCGamepadSnapshot.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCGamepadSnapshot.h @@ -21,7 +21,7 @@ NS_ASSUME_NONNULL_BEGIN @see -[GCGamepad saveSnapshot] */ -API_DEPRECATED("GCGamepad has been deprecated, use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0)) +API_DEPRECATED("Use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)) @interface GCGamepadSnapshot : GCGamepad @property (atomic, copy) NSData *snapshotData; @@ -49,20 +49,20 @@ typedef struct { float leftShoulder; float rightShoulder; -} GCGamepadSnapShotDataV100 API_DEPRECATED("GCGamepad has been deprecated, use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0)); +} GCGamepadSnapShotDataV100 API_DEPRECATED("Use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)); #pragma pack(pop) /**Fills out a v100 snapshot from any compatible NSData source @return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases. */ -BOOL GCGamepadSnapShotDataV100FromNSData(GCGamepadSnapShotDataV100 *__nullable snapshotData, NSData *__nullable data) API_DEPRECATED("GCGamepad has been deprecated, use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0)); +BOOL GCGamepadSnapShotDataV100FromNSData(GCGamepadSnapShotDataV100 * _Nullable snapshotData, NSData * _Nullable data) API_DEPRECATED("Use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)); /**Creates an NSData object from a v100 snapshot. If the version and size is not set in the snapshot the data will automatically have version 0x100 and sizeof(GCGamepadSnapShotDataV100) set as the values implicitly. @return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCGamepadSnapshot.snapshotData */ -NSData *__nullable NSDataFromGCGamepadSnapShotDataV100(GCGamepadSnapShotDataV100 *__nullable snapshotData) API_DEPRECATED("GCGamepad has been deprecated, use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0)); +NSData * _Nullable NSDataFromGCGamepadSnapShotDataV100(GCGamepadSnapShotDataV100 * _Nullable snapshotData) API_DEPRECATED("Use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0)); NS_ASSUME_NONNULL_END diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCInputNames.h b/Frameworks/GameController.framework/Versions/A/Headers/GCInputNames.h index 9793b192..9d83d63e 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCInputNames.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCInputNames.h @@ -8,22 +8,27 @@ #import #import +API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT @protocol GCPhysicalInputElementName @end +API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT @protocol GCButtonElementName @end +API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT @protocol GCAxisElementName @end +API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT @protocol GCSwitchElementName @end +API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT @protocol GCDirectionPadElementName @end @@ -45,26 +50,69 @@ A set of commonly used strings that can be used to access controller buttons @see GCPhysicalInputProfile.h */ -GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(a); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(b); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(x); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(y); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(a); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(b); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(x); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(y); -GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputDirectionPad API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(directionPad); -GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputLeftThumbstick API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputRightThumbstick API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputDirectionPadName GCInputDirectionPad API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(directionPad); +GAMECONTROLLER_EXPORT GCInputDirectionPadName GCInputLeftThumbstick API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputDirectionPadName GCInputRightThumbstick API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftShoulder API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightShoulder API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftThumbstickButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightThumbstickButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputLeftThumbstickButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputRightThumbstickButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonMenu API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonOptions API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonShare API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +/* + * Shoulder Buttons + */ + +GAMECONTROLLER_EXPORT GCInputButtonName GCInputLeftShoulder API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputRightShoulder API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); + +/** + * Identifies the button element located at the top-left/right of a gamepad, + * between the left/right shoulder button and the gamepad's horizontal center. + */ +GAMECONTROLLER_EXPORT GCInputButtonName GCInputLeftBumper API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputRightBumper API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1)); + +GAMECONTROLLER_EXPORT GCInputButtonName GCInputLeftTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputRightTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); + +/* + * Back Buttons + * + * Some gamepads include additional buttons or triggers on their underside. + * Because the number and layout of bottom buttons can vary by controller, the + * Game Controller framework identifies them by their ease of operation. The + * back left and right buttons at the first position are located nearest the + * natural rest position of the user's fingers and are suitable for actions + * requiring repeated inputs. The buttons at the 'second' position may require + * the user to move their fingers to press and should be used for less frequent + * actions. + * + * Example view looking at the underside of a gamepad with four back buttons + * arranged horizontally: + * + * +---------------------------------------------------------------+ + * | Controller top | + * +---------------------------------------------------------------+ + * | | + * R | [(R) 0] [(R) 1] [(L) 1] [(L) 0] | L + * | | + * +---------------------------------------------------------------| + * | Controller bottom (nearest the user) | + * +---------------------------------------------------------------+ + */ + +/* Note: The `position` argument begins at index 0. */ +GAMECONTROLLER_EXPORT GCInputButtonName GCInputBackLeftButton(NSInteger position) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputBackRightButton(NSInteger position) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1)); + +GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonMenu API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonOptions API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonShare API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /** A set of strings commonly used to access Xbox buttons @@ -74,10 +122,10 @@ A set of strings commonly used to access Xbox buttons @see GCController.h @see GCPhysicalInputProfile.h */ -GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputXboxPaddleOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputXboxPaddleTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputXboxPaddleThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputXboxPaddleFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /** A set of strings commonly used to access DualShock buttons @@ -87,20 +135,20 @@ A set of strings commonly used to access DualShock buttons @see GCController.h @see GCPhysicalInputProfile.h */ -GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputDualShockTouchpadOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputDualShockTouchpadTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputDualShockTouchpadButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputDirectionPadName GCInputDualShockTouchpadOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputDirectionPadName GCInputDualShockTouchpadTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputDualShockTouchpadButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /** A set of strings commonly used by racing wheels. */ -GAMECONTROLLER_EXTERN GCInputAxisName GCInputSteeringWheel API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); -GAMECONTROLLER_EXTERN GCInputElementName GCInputShifter API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputPedalAccelerator API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputPedalBrake API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputPedalClutch API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftPaddle API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); -GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightPaddle API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); +GAMECONTROLLER_EXPORT GCInputAxisName GCInputSteeringWheel API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); +GAMECONTROLLER_EXPORT GCInputElementName GCInputShifter API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputPedalAccelerator API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputPedalBrake API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputPedalClutch API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputLeftPaddle API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputRightPaddle API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); /// Gets the name of an arcade button at a certain position. -GAMECONTROLLER_EXTERN GCInputButtonName GCInputArcadeButtonName(NSInteger row, NSInteger column) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)); +GAMECONTROLLER_EXPORT GCInputButtonName GCInputArcadeButtonName(NSInteger row, NSInteger column) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)); diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCKeyCodes.h b/Frameworks/GameController.framework/Versions/A/Headers/GCKeyCodes.h index a0d9b26b..c3c7d10c 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCKeyCodes.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCKeyCodes.h @@ -5,10 +5,11 @@ // Copyright © 2020 Apple Inc. All rights reserved. // -#import #import +#import NS_ASSUME_NONNULL_BEGIN + /** A set of low level key codes that can be used to access keyboard buttons @@ -19,161 +20,161 @@ NS_ASSUME_NONNULL_BEGIN typedef CFIndex GCKeyCode NS_TYPED_ENUM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* a or A */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* b or B */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyC API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* c or C */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyD API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* d or D */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyE API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* e or E */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyF API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* f or F */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyG API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* g or G */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyH API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* h or H */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* i or I */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyJ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* j or J */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyK API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* k or K */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyL API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* l or L */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* m or M */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyN API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* n or N */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyO API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* o or O */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyP API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* p or P */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyQ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* q or Q */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyR API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* r or R */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyS API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* s or S */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* t or T */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyU API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* u or U */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyV API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* v or V */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyW API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* w or W */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* x or X */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* y or Y */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyZ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* z or Z */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 1 or ! */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 2 or @ */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 3 or # */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 4 or $ */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeFive API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 5 or % */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeSix API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 6 or ^ */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeSeven API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 7 or & */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeEight API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 8 or * */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeNine API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 9 or ( */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeZero API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 0 or ) */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeReturnOrEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Return (Enter) */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeEscape API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Escape */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeDeleteOrBackspace API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Delete (Backspace) */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeTab API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Tab */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeSpacebar API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Spacebar */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* - or _ */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* = or + */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeOpenBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* [ or { */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeCloseBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ] or } */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* \ or | */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeNonUSPound API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Non-US # or _ */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeSemicolon API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ; or : */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeQuote API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ' or " */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeGraveAccentAndTilde API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Grave Accent and Tilde */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeComma API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* , or < */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* . or > */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* / or ? */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeCapsLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Caps Lock */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* a or A */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* b or B */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyC API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* c or C */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyD API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* d or D */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyE API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* e or E */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyF API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* f or F */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyG API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* g or G */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyH API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* h or H */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* i or I */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyJ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* j or J */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyK API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* k or K */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyL API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* l or L */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* m or M */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyN API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* n or N */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyO API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* o or O */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyP API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* p or P */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyQ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* q or Q */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyR API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* r or R */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyS API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* s or S */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* t or T */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyU API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* u or U */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyV API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* v or V */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyW API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* w or W */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* x or X */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* y or Y */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyZ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* z or Z */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 1 or ! */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 2 or @ */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 3 or # */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 4 or $ */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeFive API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 5 or % */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeSix API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 6 or ^ */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeSeven API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 7 or & */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeEight API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 8 or * */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeNine API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 9 or ( */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeZero API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 0 or ) */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeReturnOrEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Return (Enter) */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeEscape API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Escape */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeDeleteOrBackspace API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Delete (Backspace) */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeTab API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Tab */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeSpacebar API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Spacebar */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* - or _ */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* = or + */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeOpenBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* [ or { */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeCloseBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ] or } */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* \ or | */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeNonUSPound API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Non-US # or _ */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeSemicolon API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ; or : */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeQuote API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ' or " */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeGraveAccentAndTilde API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Grave Accent and Tilde */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeComma API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* , or < */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* . or > */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* / or ? */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeCapsLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Caps Lock */ /* Function keys */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F1 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F2 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F3 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F4 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F5 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F6 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F7 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F8 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F9 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF10 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F10 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF11 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F11 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF12 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F12 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF13 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F13 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF14 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F14 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF15 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F15 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF16 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F16 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF17 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F17 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF18 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F18 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF19 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F19 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF20 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F20 */ - -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePrintScreen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Print Screen */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeScrollLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Scroll Lock */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePause API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Pause */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInsert API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Insert */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Home */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePageUp API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Page Up */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeDeleteForward API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Delete Forward */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeEnd API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* End */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePageDown API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Page Down */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeRightArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Arrow */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLeftArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Arrow */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeDownArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Down Arrow */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeUpArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Up Arrow */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F1 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F2 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F3 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F4 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F5 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F6 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F7 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F8 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F9 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF10 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F10 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF11 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F11 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF12 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F12 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF13 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F13 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF14 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F14 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF15 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F15 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF16 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F16 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF17 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F17 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF18 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F18 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF19 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F19 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF20 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F20 */ + +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePrintScreen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Print Screen */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeScrollLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Scroll Lock */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePause API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Pause */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInsert API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Insert */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Home */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePageUp API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Page Up */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeDeleteForward API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Delete Forward */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeEnd API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* End */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePageDown API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Page Down */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeRightArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Arrow */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLeftArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Arrow */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeDownArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Down Arrow */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeUpArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Up Arrow */ /* Keypad (numpad) keys */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadNumLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad NumLock or Clear */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad / */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadAsterisk API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad * */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad - */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadPlus API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad + */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad Enter */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 1 or End */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 2 or Down Arrow */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 3 or Page Down */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 4 or Left Arrow */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 5 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 6 or Right Arrow */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 7 or Home */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 8 or Up Arrow */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 9 or Page Up */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad0 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 0 or Insert */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad . or Delete */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad = */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeNonUSBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Non-US \ or | */ - -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeApplication API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Application */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePower API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Power */ - -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International1 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International2 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International3 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International4 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International5 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International6 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International7 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International8 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International9 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadNumLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad NumLock or Clear */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad / */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadAsterisk API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad * */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad - */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadPlus API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad + */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad Enter */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 1 or End */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 2 or Down Arrow */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 3 or Page Down */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 4 or Left Arrow */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 5 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 6 or Right Arrow */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 7 or Home */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 8 or Up Arrow */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 9 or Page Up */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad0 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 0 or Insert */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad . or Delete */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad = */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeNonUSBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Non-US \ or | */ + +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeApplication API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Application */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePower API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Power */ + +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International1 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International2 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International3 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International4 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International5 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International6 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International7 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International8 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International9 */ /* LANG1: On Apple keyboard for Japanese, this is the kana switch (ã‹ãª) key */ /* On Korean keyboards, this is the Hangul/English toggle key. */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG1 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG1 */ /* LANG2: On Apple keyboards for Japanese, this is the alphanumeric (英数) key */ /* On Korean keyboards, this is the Hanja conversion key. */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG2 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG2 */ /* LANG3: Defines the Katakana key for Japanese USB word-processing keyboards. */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG3 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG3 */ /* LANG4: Defines the Hiragana key for Japanese USB word-processing keyboards. */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG4 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG4 */ /* LANG5: Defines the Zenkaku/Hankaku key for Japanese USB word-processing keyboards. */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG5 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG5 */ /* LANG6-9: Reserved for language-specific functions, such as Front End Processors and Input Method Editors. */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG6 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG7 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG8 */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG9 */ - -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLeftControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Control */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLeftShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Shift */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLeftAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Alt */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLeftGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left GUI */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeRightControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Control */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeRightShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Shift */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeRightAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Alt */ -GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeRightGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right GUI */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG6 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG7 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG8 */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG9 */ + +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLeftControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Control */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLeftShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Shift */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLeftAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Alt */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLeftGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left GUI */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeRightControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Control */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeRightShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Shift */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeRightAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Alt */ +GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeRightGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right GUI */ NS_ASSUME_NONNULL_END diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCKeyNames.h b/Frameworks/GameController.framework/Versions/A/Headers/GCKeyNames.h index 547c0c59..f8accf4d 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCKeyNames.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCKeyNames.h @@ -4,8 +4,9 @@ // // Copyright © 2020 Apple Inc. All rights reserved. // -#import + #import +#import NS_ASSUME_NONNULL_BEGIN @@ -18,160 +19,160 @@ A set of strings that can be used to access keyboard buttons @see GCPhysicalInputProfile.h */ -GAMECONTROLLER_EXTERN NSString *const GCKeyA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* a or A */ -GAMECONTROLLER_EXTERN NSString *const GCKeyB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* b or B */ -GAMECONTROLLER_EXTERN NSString *const GCKeyC API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* c or C */ -GAMECONTROLLER_EXTERN NSString *const GCKeyD API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* d or D */ -GAMECONTROLLER_EXTERN NSString *const GCKeyE API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* e or E */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* f or F */ -GAMECONTROLLER_EXTERN NSString *const GCKeyG API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* g or G */ -GAMECONTROLLER_EXTERN NSString *const GCKeyH API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* h or H */ -GAMECONTROLLER_EXTERN NSString *const GCKeyI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* i or I */ -GAMECONTROLLER_EXTERN NSString *const GCKeyJ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* j or J */ -GAMECONTROLLER_EXTERN NSString *const GCKeyK API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* k or K */ -GAMECONTROLLER_EXTERN NSString *const GCKeyL API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* l or L */ -GAMECONTROLLER_EXTERN NSString *const GCKeyM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* m or M */ -GAMECONTROLLER_EXTERN NSString *const GCKeyN API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* n or N */ -GAMECONTROLLER_EXTERN NSString *const GCKeyO API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* o or O */ -GAMECONTROLLER_EXTERN NSString *const GCKeyP API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* p or P */ -GAMECONTROLLER_EXTERN NSString *const GCKeyQ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* q or Q */ -GAMECONTROLLER_EXTERN NSString *const GCKeyR API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* r or R */ -GAMECONTROLLER_EXTERN NSString *const GCKeyS API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* s or S */ -GAMECONTROLLER_EXTERN NSString *const GCKeyT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* t or T */ -GAMECONTROLLER_EXTERN NSString *const GCKeyU API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* u or U */ -GAMECONTROLLER_EXTERN NSString *const GCKeyV API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* v or V */ -GAMECONTROLLER_EXTERN NSString *const GCKeyW API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* w or W */ -GAMECONTROLLER_EXTERN NSString *const GCKeyX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* x or X */ -GAMECONTROLLER_EXTERN NSString *const GCKeyY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* y or Y */ -GAMECONTROLLER_EXTERN NSString *const GCKeyZ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* z or Z */ -GAMECONTROLLER_EXTERN NSString *const GCKeyOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 1 or ! */ -GAMECONTROLLER_EXTERN NSString *const GCKeyTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 2 or @ */ -GAMECONTROLLER_EXTERN NSString *const GCKeyThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 3 or # */ -GAMECONTROLLER_EXTERN NSString *const GCKeyFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 4 or $ */ -GAMECONTROLLER_EXTERN NSString *const GCKeyFive API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 5 or % */ -GAMECONTROLLER_EXTERN NSString *const GCKeySix API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 6 or ^ */ -GAMECONTROLLER_EXTERN NSString *const GCKeySeven API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 7 or & */ -GAMECONTROLLER_EXTERN NSString *const GCKeyEight API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 8 or * */ -GAMECONTROLLER_EXTERN NSString *const GCKeyNine API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 9 or ( */ -GAMECONTROLLER_EXTERN NSString *const GCKeyZero API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 0 or ) */ -GAMECONTROLLER_EXTERN NSString *const GCKeyReturnOrEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Return (Enter) */ -GAMECONTROLLER_EXTERN NSString *const GCKeyEscape API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Escape */ -GAMECONTROLLER_EXTERN NSString *const GCKeyDeleteOrBackspace API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Delete (Backspace) */ -GAMECONTROLLER_EXTERN NSString *const GCKeyTab API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Tab */ -GAMECONTROLLER_EXTERN NSString *const GCKeySpacebar API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Spacebar */ -GAMECONTROLLER_EXTERN NSString *const GCKeyHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* - or _ */ -GAMECONTROLLER_EXTERN NSString *const GCKeyEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* = or + */ -GAMECONTROLLER_EXTERN NSString *const GCKeyOpenBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* [ or { */ -GAMECONTROLLER_EXTERN NSString *const GCKeyCloseBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ] or } */ -GAMECONTROLLER_EXTERN NSString *const GCKeyBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* \ or | */ -GAMECONTROLLER_EXTERN NSString *const GCKeyNonUSPound API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Non-US # or _ */ -GAMECONTROLLER_EXTERN NSString *const GCKeySemicolon API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ; or : */ -GAMECONTROLLER_EXTERN NSString *const GCKeyQuote API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ' or " */ -GAMECONTROLLER_EXTERN NSString *const GCKeyGraveAccentAndTilde API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Grave Accent and Tilde */ -GAMECONTROLLER_EXTERN NSString *const GCKeyComma API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* , or < */ -GAMECONTROLLER_EXTERN NSString *const GCKeyPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* . or > */ -GAMECONTROLLER_EXTERN NSString *const GCKeySlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* / or ? */ -GAMECONTROLLER_EXTERN NSString *const GCKeyCapsLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Caps Lock */ +GAMECONTROLLER_EXPORT NSString *const GCKeyA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* a or A */ +GAMECONTROLLER_EXPORT NSString *const GCKeyB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* b or B */ +GAMECONTROLLER_EXPORT NSString *const GCKeyC API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* c or C */ +GAMECONTROLLER_EXPORT NSString *const GCKeyD API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* d or D */ +GAMECONTROLLER_EXPORT NSString *const GCKeyE API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* e or E */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* f or F */ +GAMECONTROLLER_EXPORT NSString *const GCKeyG API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* g or G */ +GAMECONTROLLER_EXPORT NSString *const GCKeyH API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* h or H */ +GAMECONTROLLER_EXPORT NSString *const GCKeyI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* i or I */ +GAMECONTROLLER_EXPORT NSString *const GCKeyJ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* j or J */ +GAMECONTROLLER_EXPORT NSString *const GCKeyK API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* k or K */ +GAMECONTROLLER_EXPORT NSString *const GCKeyL API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* l or L */ +GAMECONTROLLER_EXPORT NSString *const GCKeyM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* m or M */ +GAMECONTROLLER_EXPORT NSString *const GCKeyN API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* n or N */ +GAMECONTROLLER_EXPORT NSString *const GCKeyO API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* o or O */ +GAMECONTROLLER_EXPORT NSString *const GCKeyP API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* p or P */ +GAMECONTROLLER_EXPORT NSString *const GCKeyQ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* q or Q */ +GAMECONTROLLER_EXPORT NSString *const GCKeyR API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* r or R */ +GAMECONTROLLER_EXPORT NSString *const GCKeyS API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* s or S */ +GAMECONTROLLER_EXPORT NSString *const GCKeyT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* t or T */ +GAMECONTROLLER_EXPORT NSString *const GCKeyU API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* u or U */ +GAMECONTROLLER_EXPORT NSString *const GCKeyV API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* v or V */ +GAMECONTROLLER_EXPORT NSString *const GCKeyW API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* w or W */ +GAMECONTROLLER_EXPORT NSString *const GCKeyX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* x or X */ +GAMECONTROLLER_EXPORT NSString *const GCKeyY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* y or Y */ +GAMECONTROLLER_EXPORT NSString *const GCKeyZ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* z or Z */ +GAMECONTROLLER_EXPORT NSString *const GCKeyOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 1 or ! */ +GAMECONTROLLER_EXPORT NSString *const GCKeyTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 2 or @ */ +GAMECONTROLLER_EXPORT NSString *const GCKeyThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 3 or # */ +GAMECONTROLLER_EXPORT NSString *const GCKeyFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 4 or $ */ +GAMECONTROLLER_EXPORT NSString *const GCKeyFive API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 5 or % */ +GAMECONTROLLER_EXPORT NSString *const GCKeySix API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 6 or ^ */ +GAMECONTROLLER_EXPORT NSString *const GCKeySeven API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 7 or & */ +GAMECONTROLLER_EXPORT NSString *const GCKeyEight API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 8 or * */ +GAMECONTROLLER_EXPORT NSString *const GCKeyNine API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 9 or ( */ +GAMECONTROLLER_EXPORT NSString *const GCKeyZero API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* 0 or ) */ +GAMECONTROLLER_EXPORT NSString *const GCKeyReturnOrEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Return (Enter) */ +GAMECONTROLLER_EXPORT NSString *const GCKeyEscape API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Escape */ +GAMECONTROLLER_EXPORT NSString *const GCKeyDeleteOrBackspace API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Delete (Backspace) */ +GAMECONTROLLER_EXPORT NSString *const GCKeyTab API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Tab */ +GAMECONTROLLER_EXPORT NSString *const GCKeySpacebar API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Spacebar */ +GAMECONTROLLER_EXPORT NSString *const GCKeyHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* - or _ */ +GAMECONTROLLER_EXPORT NSString *const GCKeyEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* = or + */ +GAMECONTROLLER_EXPORT NSString *const GCKeyOpenBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* [ or { */ +GAMECONTROLLER_EXPORT NSString *const GCKeyCloseBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ] or } */ +GAMECONTROLLER_EXPORT NSString *const GCKeyBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* \ or | */ +GAMECONTROLLER_EXPORT NSString *const GCKeyNonUSPound API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Non-US # or _ */ +GAMECONTROLLER_EXPORT NSString *const GCKeySemicolon API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ; or : */ +GAMECONTROLLER_EXPORT NSString *const GCKeyQuote API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* ' or " */ +GAMECONTROLLER_EXPORT NSString *const GCKeyGraveAccentAndTilde API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Grave Accent and Tilde */ +GAMECONTROLLER_EXPORT NSString *const GCKeyComma API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* , or < */ +GAMECONTROLLER_EXPORT NSString *const GCKeyPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* . or > */ +GAMECONTROLLER_EXPORT NSString *const GCKeySlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* / or ? */ +GAMECONTROLLER_EXPORT NSString *const GCKeyCapsLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Caps Lock */ /* Function keys */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F1 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F2 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F3 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F4 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F5 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F6 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F7 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F8 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F9 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF10 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F10 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF11 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F11 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF12 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F12 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF13 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F13 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF14 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F14 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF15 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F15 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF16 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F16 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF17 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F17 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF18 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F18 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF19 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F19 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyF20 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F20 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyPrintScreen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Print Screen */ -GAMECONTROLLER_EXTERN NSString *const GCKeyScrollLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Scroll Lock */ -GAMECONTROLLER_EXTERN NSString *const GCKeyPause API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Pause */ -GAMECONTROLLER_EXTERN NSString *const GCKeyInsert API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Insert */ -GAMECONTROLLER_EXTERN NSString *const GCKeyHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Home */ -GAMECONTROLLER_EXTERN NSString *const GCKeyPageUp API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Page Up */ -GAMECONTROLLER_EXTERN NSString *const GCKeyDeleteForward API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Delete Forward */ -GAMECONTROLLER_EXTERN NSString *const GCKeyEnd API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* End */ -GAMECONTROLLER_EXTERN NSString *const GCKeyPageDown API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Page Down */ -GAMECONTROLLER_EXTERN NSString *const GCKeyRightArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Arrow */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLeftArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Arrow */ -GAMECONTROLLER_EXTERN NSString *const GCKeyDownArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Down Arrow */ -GAMECONTROLLER_EXTERN NSString *const GCKeyUpArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Up Arrow */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F1 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F2 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F3 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F4 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F5 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F6 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F7 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F8 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F9 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF10 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F10 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF11 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F11 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF12 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* F12 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF13 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F13 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF14 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F14 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF15 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F15 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF16 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F16 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF17 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F17 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF18 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F18 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF19 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F19 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyF20 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /* F20 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyPrintScreen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Print Screen */ +GAMECONTROLLER_EXPORT NSString *const GCKeyScrollLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Scroll Lock */ +GAMECONTROLLER_EXPORT NSString *const GCKeyPause API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Pause */ +GAMECONTROLLER_EXPORT NSString *const GCKeyInsert API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Insert */ +GAMECONTROLLER_EXPORT NSString *const GCKeyHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Home */ +GAMECONTROLLER_EXPORT NSString *const GCKeyPageUp API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Page Up */ +GAMECONTROLLER_EXPORT NSString *const GCKeyDeleteForward API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Delete Forward */ +GAMECONTROLLER_EXPORT NSString *const GCKeyEnd API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* End */ +GAMECONTROLLER_EXPORT NSString *const GCKeyPageDown API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Page Down */ +GAMECONTROLLER_EXPORT NSString *const GCKeyRightArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Arrow */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLeftArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Arrow */ +GAMECONTROLLER_EXPORT NSString *const GCKeyDownArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Down Arrow */ +GAMECONTROLLER_EXPORT NSString *const GCKeyUpArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Up Arrow */ /* Keypad (numpad) keys */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadNumLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad NumLock or Clear */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad / */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadAsterisk API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad * */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad - */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadPlus API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad + */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad Enter */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 1 or End */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 2 or Down Arrow */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 3 or Page Down */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 4 or Left Arrow */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 5 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 6 or Right Arrow */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 7 or Home */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 8 or Up Arrow */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 9 or Page Up */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad0 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 0 or Insert */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad . or Delete */ -GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad = */ -GAMECONTROLLER_EXTERN NSString *const GCKeyNonUSBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Non-US \ or | */ - -GAMECONTROLLER_EXTERN NSString *const GCKeyApplication API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Application */ -GAMECONTROLLER_EXTERN NSString *const GCKeyPower API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Power */ - -GAMECONTROLLER_EXTERN NSString *const GCKeyInternational1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International1 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyInternational2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International2 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyInternational3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International3 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyInternational4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International4 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyInternational5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International5 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyInternational6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International6 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyInternational7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International7 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyInternational8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International8 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyInternational9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International9 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadNumLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad NumLock or Clear */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad / */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadAsterisk API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad * */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad - */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadPlus API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad + */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad Enter */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 1 or End */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 2 or Down Arrow */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 3 or Page Down */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 4 or Left Arrow */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 5 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 6 or Right Arrow */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 7 or Home */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 8 or Up Arrow */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 9 or Page Up */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad0 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad 0 or Insert */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad . or Delete */ +GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Keypad = */ +GAMECONTROLLER_EXPORT NSString *const GCKeyNonUSBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Non-US \ or | */ + +GAMECONTROLLER_EXPORT NSString *const GCKeyApplication API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Application */ +GAMECONTROLLER_EXPORT NSString *const GCKeyPower API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Power */ + +GAMECONTROLLER_EXPORT NSString *const GCKeyInternational1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International1 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyInternational2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International2 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyInternational3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International3 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyInternational4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International4 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyInternational5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International5 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyInternational6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International6 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyInternational7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International7 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyInternational8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International8 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyInternational9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* International9 */ /* LANG1: On Apple keyboard for Japanese, this is the kana switch (ã‹ãª) key */ /* On Korean keyboards, this is the Hangul/English toggle key. */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLANG1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG1 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLANG1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG1 */ /* LANG2: On Apple keyboards for Japanese, this is the alphanumeric (英数) key */ /* On Korean keyboards, this is the Hanja conversion key. */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLANG2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG2 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLANG2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG2 */ /* LANG3: Defines the Katakana key for Japanese USB word-processing keyboards. */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLANG3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG3 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLANG3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG3 */ /* LANG4: Defines the Hiragana key for Japanese USB word-processing keyboards. */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLANG4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG4 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLANG4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG4 */ /* LANG5: Defines the Zenkaku/Hankaku key for Japanese USB word-processing keyboards. */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLANG5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG5 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLANG5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG5 */ /* LANG6-9: Reserved for language-specific functions, such as Front End Processors and Input Method Editors. */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLANG6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG6 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLANG7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG7 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLANG8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG8 */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLANG9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG9 */ - -GAMECONTROLLER_EXTERN NSString *const GCKeyLeftControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Control */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLeftShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Shift */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLeftAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Alt */ -GAMECONTROLLER_EXTERN NSString *const GCKeyLeftGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left GUI */ -GAMECONTROLLER_EXTERN NSString *const GCKeyRightControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Control */ -GAMECONTROLLER_EXTERN NSString *const GCKeyRightShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Shift */ -GAMECONTROLLER_EXTERN NSString *const GCKeyRightAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Alt */ -GAMECONTROLLER_EXTERN NSString *const GCKeyRightGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right GUI */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLANG6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG6 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLANG7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG7 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLANG8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG8 */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLANG9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* LANG9 */ + +GAMECONTROLLER_EXPORT NSString *const GCKeyLeftControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Control */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLeftShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Shift */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLeftAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left Alt */ +GAMECONTROLLER_EXPORT NSString *const GCKeyLeftGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Left GUI */ +GAMECONTROLLER_EXPORT NSString *const GCKeyRightControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Control */ +GAMECONTROLLER_EXPORT NSString *const GCKeyRightShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Shift */ +GAMECONTROLLER_EXPORT NSString *const GCKeyRightAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right Alt */ +GAMECONTROLLER_EXPORT NSString *const GCKeyRightGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /* Right GUI */ NS_ASSUME_NONNULL_END diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCKeyboard.h b/Frameworks/GameController.framework/Versions/A/Headers/GCKeyboard.h index caf1677b..29773115 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCKeyboard.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCKeyboard.h @@ -5,10 +5,13 @@ // Copyright © 2020 Apple Inc. All rights reserved. // -#import +#import + #import +#import -#import +@class GCKeyboard; +@class GCKeyboardInput; NS_ASSUME_NONNULL_BEGIN @@ -23,8 +26,8 @@ NS_ASSUME_NONNULL_BEGIN @see NSNotificationCetner @note All connected keyboards are coalesced into one keyboard object, so notification about connection/disconnection will only be delivered once until last keyboard disconnects. */ -GAMECONTROLLER_EXTERN NSString *const GCKeyboardDidConnectNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); -GAMECONTROLLER_EXTERN NSString *const GCKeyboardDidDisconnectNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT NSString *const GCKeyboardDidConnectNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); +GAMECONTROLLER_EXPORT NSString *const GCKeyboardDidDisconnectNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); /** GCKeyboard is available to an application that links to GameController.framework @@ -35,7 +38,7 @@ GAMECONTROLLER_EXTERN NSString *const GCKeyboardDidDisconnectNotification API_AV @note All connected keyboards are coalesced into one keyboard object, so notification about connection/disconnection will only be delivered once. */ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) -@interface GCKeyboard : NSObject +@interface GCKeyboard : NSObject /** Unlike GCController GCKeyboard only has one input profile. diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCKeyboardInput.h b/Frameworks/GameController.framework/Versions/A/Headers/GCKeyboardInput.h index 85d677a6..276e7480 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCKeyboardInput.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCKeyboardInput.h @@ -5,9 +5,9 @@ // Copyright © 2020 Apple Inc. All rights reserved. // +#import #import #import -#import NS_ASSUME_NONNULL_BEGIN @@ -27,7 +27,7 @@ cd for each key that changed. @param key the key that has been modified @param pressed the state of the key at the moment of block calling */ -typedef void (^GCKeyboardValueChangedHandler)(GCKeyboardInput *keyboard, GCDeviceButtonInput *key, GCKeyCode keyCode, BOOL pressed); +typedef void (^GCKeyboardValueChangedHandler)(GCKeyboardInput *keyboard, GCDeviceButtonInput *key, GCKeyCode keyCode, BOOL pressed) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); @property (nonatomic, copy, nullable) GCKeyboardValueChangedHandler keyChangedHandler; /** diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCMicroGamepad.h b/Frameworks/GameController.framework/Versions/A/Headers/GCMicroGamepad.h index b738f5dd..e0269bf3 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCMicroGamepad.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCMicroGamepad.h @@ -19,14 +19,14 @@ NS_ASSUME_NONNULL_BEGIN @note For the 1st generation and 2nd generation Siri Remotes, this represents touching anywhere on the entire touch surface. */ -GAMECONTROLLER_EXTERN NSString *const GCInputMicroGamepadDpad API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCInputMicroGamepadDpad API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /** The primary button for the microgamepad @note For the 1st generation and 2nd generation Siri Remotes, this represents pressing anywhere on the touch surface. */ -GAMECONTROLLER_EXTERN NSString *const GCInputMicroGamepadButtonA API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCInputMicroGamepadButtonA API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /** The secondary button for the microgamepad @@ -35,7 +35,7 @@ GAMECONTROLLER_EXTERN NSString *const GCInputMicroGamepadButtonA API_AVAILABLE(m @note For the 1st and 2nd generation Siri Remotes, this represents pressing the play/pause button. */ -GAMECONTROLLER_EXTERN NSString *const GCInputMicroGamepadButtonX API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCInputMicroGamepadButtonX API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /** The primary menu button for the microgamepad @@ -47,7 +47,7 @@ GAMECONTROLLER_EXTERN NSString *const GCInputMicroGamepadButtonX API_AVAILABLE(m @note You should avoid polling this button every frame. tvOS will run a gesture recognizer on events before forwarding them to your application that can reduce the window to poll button changes. Instead, register a pressedChangedHandler or a valueChangedHandler. */ -GAMECONTROLLER_EXTERN NSString *const GCInputMicroGamepadButtonMenu API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCInputMicroGamepadButtonMenu API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /** Micro Gamepad profile. @@ -66,11 +66,7 @@ API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)) /** A profile keeps a reference to the controller that this profile is mapping input from. */ -#if !__has_feature(objc_arc) -@property (nonatomic, readonly, assign) GCController *controller; -#else @property (nonatomic, readonly, weak) GCController *controller; -#endif /** Set this block if you want to be notified when a value on a element changed. If multiple elements have changed this block will be called @@ -80,7 +76,7 @@ API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)) @param gamepad this gamepad that is being used to map the raw input data into logical values on controller elements such as the dpad or the buttons. @param element the element that has been modified. */ -typedef void (^GCMicroGamepadValueChangedHandler)(GCMicroGamepad *gamepad, GCControllerElement *element); +typedef void (^GCMicroGamepadValueChangedHandler)(GCMicroGamepad *gamepad, GCControllerElement *element) API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)); @property (nonatomic, copy, nullable) GCMicroGamepadValueChangedHandler valueChangedHandler; /** @@ -93,7 +89,7 @@ typedef void (^GCMicroGamepadValueChangedHandler)(GCMicroGamepad *gamepad, GCCon @see GCMicroGamepadSnapshot */ -- (GCMicroGamepadSnapshot *)saveSnapshot API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController capture] instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0)); +- (GCMicroGamepadSnapshot *)saveSnapshot API_DEPRECATED("Use the -[GCController capture] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); /** Optionally analog in the Micro profile. All the elements of this directional input are either analog or digital. @@ -146,7 +142,7 @@ typedef void (^GCMicroGamepadValueChangedHandler)(GCMicroGamepad *gamepad, GCCon @note If the controller's snapshot flag is set to NO, this method has no effect. @see GCController.snapshot */ -- (void) setStateFromMicroGamepad:(GCMicroGamepad *)microGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); +- (void)setStateFromMicroGamepad:(GCMicroGamepad *)microGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)); @end diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCMicroGamepadSnapshot.h b/Frameworks/GameController.framework/Versions/A/Headers/GCMicroGamepadSnapshot.h index 6defce77..d83d46c4 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCMicroGamepadSnapshot.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCMicroGamepadSnapshot.h @@ -21,8 +21,9 @@ NS_ASSUME_NONNULL_BEGIN @see -[GCMicroGamepad saveSnapshot] */ -API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)) +API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)) @interface GCMicroGamepadSnapshot : GCMicroGamepad + @property (atomic, copy) NSData *snapshotData; - (instancetype)initWithSnapshotData:(NSData *)data; @@ -30,11 +31,12 @@ API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController co @end + typedef NS_ENUM(NSInteger, GCMicroGamepadSnapshotDataVersion) { GCMicroGamepadSnapshotDataVersion1 = 0x0100 -} API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +} API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0)); -extern const GCMicroGamepadSnapshotDataVersion GCCurrentMicroGamepadSnapshotDataVersion API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +extern const GCMicroGamepadSnapshotDataVersion GCCurrentMicroGamepadSnapshotDataVersion API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0)); #pragma pack(push, 1) typedef struct { @@ -52,21 +54,21 @@ typedef struct { float buttonA; float buttonX; -} GCMicroGamepadSnapshotData API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +} GCMicroGamepadSnapshotData API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0)); #pragma pack(pop) /**Fills out a snapshot from any compatible NSData source @return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases. */ -BOOL GCMicroGamepadSnapshotDataFromNSData(GCMicroGamepadSnapshotData *__nullable snapshotData, NSData *__nullable data) API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +BOOL GCMicroGamepadSnapshotDataFromNSData(GCMicroGamepadSnapshotData * _Nullable snapshotData, NSData * _Nullable data) API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0)); /**Creates an NSData object from a snapshot. If the version and size is not set in the snapshot the data will automatically have version GCCurrentMicroGamepadSnapshotDataVersion and sizeof(GCMicroGamepadSnapshotData) set as the values implicitly. @return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCGamepadSnapshot.snapshotData */ -NSData *__nullable NSDataFromGCMicroGamepadSnapshotData(GCMicroGamepadSnapshotData *__nullable snapshotData) API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +NSData * _Nullable NSDataFromGCMicroGamepadSnapshotData(GCMicroGamepadSnapshotData * _Nullable snapshotData) API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0)); @@ -87,20 +89,20 @@ typedef struct { float buttonA; float buttonX; -} GCMicroGamepadSnapShotDataV100 API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +} GCMicroGamepadSnapShotDataV100 API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); #pragma pack(pop) /**Fills out a v100 snapshot from any compatible NSData source @return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases. */ -BOOL GCMicroGamepadSnapShotDataV100FromNSData(GCMicroGamepadSnapShotDataV100 *__nullable snapshotData, NSData *__nullable data) API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +BOOL GCMicroGamepadSnapShotDataV100FromNSData(GCMicroGamepadSnapShotDataV100 * _Nullable snapshotData, NSData * _Nullable data) API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); /**Creates an NSData object from a v100 snapshot. If the version and size is not set in the snapshot the data will automatically have version 0x100 and sizeof(GCMicroGamepadSnapShotDataV100) set as the values implicitly. @return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCGamepadSnapshot.snapshotData */ -NSData *__nullable NSDataFromGCMicroGamepadSnapShotDataV100(GCMicroGamepadSnapShotDataV100 *__nullable snapshotData) API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); +NSData * _Nullable NSDataFromGCMicroGamepadSnapShotDataV100(GCMicroGamepadSnapShotDataV100 * _Nullable snapshotData) API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0)); NS_ASSUME_NONNULL_END diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCMotion.h b/Frameworks/GameController.framework/Versions/A/Headers/GCMotion.h index 36702b9b..dfa53c8e 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCMotion.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCMotion.h @@ -23,7 +23,7 @@ NS_ASSUME_NONNULL_BEGIN */ typedef struct { double x, y, z; -} GCAcceleration; +} GCAcceleration API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)); /** A structure containing 3-axis rotation rate data. @@ -46,7 +46,7 @@ typedef struct { */ typedef struct { double x, y, z; -} GCRotationRate; +} GCRotationRate API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)); /** @@ -70,7 +70,7 @@ typedef struct { */ typedef struct { double pitch, yaw, roll; -} GCEulerAngles; +} GCEulerAngles API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)); /** Represents a quaternion (one way of parameterizing attitude). @@ -81,7 +81,7 @@ typedef struct { */ typedef struct GCQuaternion { double x, y, z, w; -} GCQuaternion; +} GCQuaternion API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)); /** @@ -94,7 +94,7 @@ typedef struct GCQuaternion { @see GCController.motion */ -API_AVAILABLE(macos(10.10), ios(8.0), tvos(8.0)) +API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) @interface GCMotion : NSObject /** @@ -102,16 +102,12 @@ API_AVAILABLE(macos(10.10), ios(8.0), tvos(8.0)) @see GCController */ -#if !__has_feature(objc_arc) @property (nonatomic, readonly, weak) GCController *controller; -#else -@property (nonatomic, readonly, weak) GCController *controller; -#endif /** Called whenever a motion value changed. */ -typedef void (^GCMotionValueChangedHandler)(GCMotion *motion); +typedef void (^GCMotionValueChangedHandler)(GCMotion *motion) API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)); @property (nonatomic, copy, nullable) GCMotionValueChangedHandler valueChangedHandler; /** @@ -176,7 +172,7 @@ typedef void (^GCMotionValueChangedHandler)(GCMotion *motion); /** The controller generating the motion data has sensors that can accurately determine the current attitude and rotation rate. If this is enabled the motion data for attitude and rotation rate are usable for inputs. */ -@property (nonatomic, readonly) BOOL hasAttitudeAndRotationRate API_DEPRECATED("hasAttitudeAndRotationRate has been deprecated, use -hasAttitude and -hasRotationRate instead", macos(10.13, 11.0), ios(11.0, 14.0), tvos(11.0, 14.0)); +@property (nonatomic, readonly) BOOL hasAttitudeAndRotationRate API_DEPRECATED("Use -hasAttitude and -hasRotationRate methods instead", macos(10.13, 11.0), ios(11.0, 14.0), tvos(11.0, 14.0)); /** The controller generating the motion data has sensors that can accurately determine the current attitude. If this is enabled the motion data for attitude is usable for inputs. @@ -195,7 +191,7 @@ typedef void (^GCMotionValueChangedHandler)(GCMotion *motion); @see hasAttitude @see GCMicroGamepad */ -@property (nonatomic, readonly) GCQuaternion attitude API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0)); +@property (nonatomic, readonly) GCQuaternion attitude; /** The current rotation rate of the controller. @@ -204,7 +200,7 @@ typedef void (^GCMotionValueChangedHandler)(GCMotion *motion); @see hasRotationRate @see GCMicroGamepad */ -@property (nonatomic, readonly) GCRotationRate rotationRate API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0)); +@property (nonatomic, readonly) GCRotationRate rotationRate; /** Sets the gravity vector expressed in the controller's reference frame. diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCMouse.h b/Frameworks/GameController.framework/Versions/A/Headers/GCMouse.h index 919cb1b1..5eb6a463 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCMouse.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCMouse.h @@ -34,8 +34,8 @@ NS_ASSUME_NONNULL_BEGIN @see NSNotificationCenter @see GCMouse.mice */ -GAMECONTROLLER_EXTERN NSString *const GCMouseDidConnectNotification API_AVAILABLE(macos(11.0), ios(14.0)); -GAMECONTROLLER_EXTERN NSString *const GCMouseDidDisconnectNotification API_AVAILABLE(macos(11.0), ios(14.0)); +GAMECONTROLLER_EXPORT NSString *const GCMouseDidConnectNotification API_AVAILABLE(macos(11.0), ios(14.0)); +GAMECONTROLLER_EXPORT NSString *const GCMouseDidDisconnectNotification API_AVAILABLE(macos(11.0), ios(14.0)); /** Use these constants with NSNotificationCenter to listen to a controller becoming the most recently used mouse. @@ -56,8 +56,8 @@ GCMouse *mouse = note.object; @see GCMouse.mice @see GCMouse.current */ -GAMECONTROLLER_EXTERN NSString *const GCMouseDidBecomeCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0)); -GAMECONTROLLER_EXTERN NSString *const GCMouseDidStopBeingCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0)); +GAMECONTROLLER_EXPORT NSString *const GCMouseDidBecomeCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0)); +GAMECONTROLLER_EXPORT NSString *const GCMouseDidStopBeingCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0)); /** Mice are available to an application that links to GameController.framework. There are 2 ways to access mice diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCMouseInput.h b/Frameworks/GameController.framework/Versions/A/Headers/GCMouseInput.h index 3f8d9fad..30902003 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCMouseInput.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCMouseInput.h @@ -5,11 +5,11 @@ // Copyright © 2020 Apple Inc. All rights reserved. // +#import #import #import @class GCDeviceCursor; -#import NS_ASSUME_NONNULL_BEGIN @@ -29,7 +29,7 @@ API_AVAILABLE(macos(11.0), ios(14.0)) @param deltaX the value of raw mouse delta along x axis. Not affected by mouse sensitivity settings @param deltaY the value of raw mouse delta along y axis. Not affected by mouse sensitivity settings */ -typedef void (^GCMouseMoved)(GCMouseInput* mouse, float deltaX, float deltaY); +typedef void (^GCMouseMoved)(GCMouseInput* mouse, float deltaX, float deltaY) API_AVAILABLE(macos(11.0), ios(14.0)); @property (nonatomic, copy, nullable) GCMouseMoved mouseMovedHandler; /** diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCPhysicalInputSource.h b/Frameworks/GameController.framework/Versions/A/Headers/GCPhysicalInputSource.h index d451664a..aa3b7139 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCPhysicalInputSource.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCPhysicalInputSource.h @@ -19,7 +19,7 @@ typedef NS_OPTIONS(NSUInteger, GCPhysicalInputSourceDirection) { GCPhysicalInputSourceDirectionRight = (1<<1UL), GCPhysicalInputSourceDirectionDown = (1<<2UL), GCPhysicalInputSourceDirectionLeft = (1<<3UL), -}; +} API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)); /** diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCProductCategories.h b/Frameworks/GameController.framework/Versions/A/Headers/GCProductCategories.h index 3125354e..2baff210 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCProductCategories.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCProductCategories.h @@ -18,29 +18,30 @@ /// Game Controller Product Categories -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryDualSense API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryDualShock4 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryMFi API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryXboxOne API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryHID API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryDualSense API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryDualShock4 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryMFi API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryXboxOne API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryHID API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)); -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryArcadeStick API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)); + +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryArcadeStick API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)); /// Remote Product Categories /// The Siri Remote (1st generation), or Apple TV Remote (1st generation), was first introduced in 2015. It features a Touch surface for touch navigation, and supports device motion. -GAMECONTROLLER_EXTERN NSString *const GCProductCategorySiriRemote1stGen API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategorySiriRemote1stGen API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /// The Siri Remote (2nd generation), or Apple TV Remote (2nd generation), was first introduced in 2021. It features a touch-enabled clickpad for navigation. -GAMECONTROLLER_EXTERN NSString *const GCProductCategorySiriRemote2ndGen API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategorySiriRemote2ndGen API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /// Users can use Apple TV Remote controls in Control Center on an iOS or iPadOS device. -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryControlCenterRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryControlCenterRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /// The Universal Electronics remote is an infrared and Bluetooth Low Energy remote designed to work with the Apple TV. -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryUniversalElectronicsRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryUniversalElectronicsRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /** If multiple remotes have been combined into one, the device will have the GCProductCategoryCoalescedRemote product category. @@ -49,11 +50,11 @@ GAMECONTROLLER_EXTERN NSString *const GCProductCategoryUniversalElectronicsRemot virtual Control Center remote and treat them as a single GCDevice instance. By setting GCSupportsMultipleMicroGamepads in your app's plist to true, you can disable this behavior. */ -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryCoalescedRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryCoalescedRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); /// Keyboards and Mice Product Categories -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryMouse API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); -GAMECONTROLLER_EXTERN NSString *const GCProductCategoryKeyboard API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryMouse API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); +GAMECONTROLLER_EXPORT NSString *const GCProductCategoryKeyboard API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)); diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCRacingWheel.h b/Frameworks/GameController.framework/Versions/A/Headers/GCRacingWheel.h index 8ea5e29e..e68e5a60 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GCRacingWheel.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCRacingWheel.h @@ -32,8 +32,8 @@ NS_ASSUME_NONNULL_BEGIN @see NSNotificationCenter @see GCRacingWheel.connectedRacingWheels */ -GAMECONTROLLER_EXTERN NSString *const GCRacingWheelDidConnectNotification API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); -GAMECONTROLLER_EXTERN NSString *const GCRacingWheelDidDisconnectNotification API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); +GAMECONTROLLER_EXPORT NSString *const GCRacingWheelDidConnectNotification API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); +GAMECONTROLLER_EXPORT NSString *const GCRacingWheelDidDisconnectNotification API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos); API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos) diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GCTypes.h b/Frameworks/GameController.framework/Versions/A/Headers/GCTypes.h new file mode 100644 index 00000000..9fbdf982 --- /dev/null +++ b/Frameworks/GameController.framework/Versions/A/Headers/GCTypes.h @@ -0,0 +1,45 @@ +// +// GCTypes.h +// GameController +// +// Copyright © 2020 Apple Inc. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +struct GCPoint2 { + float x; + float y; +} API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1)); +typedef struct CF_BOXABLE GCPoint2 GCPoint2; + +/* The "zero" point -- equivalent to GCPoint2Make(0, 0). */ +GAMECONTROLLER_EXPORT const GCPoint2 GCPoint2Zero API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1)); + +API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1)) +CF_INLINE GCPoint2 +GCPoint2Make(float x, float y) { + GCPoint2 p; p.x = x; p.y = y; return p; +} + +API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1)) +CF_INLINE bool +GCPoint2Equal(GCPoint2 point1, GCPoint2 point2) { + return point1.x == point2.x && point1.y == point2.y; +} + +GAMECONTROLLER_EXPORT NSString* NSStringFromGCPoint2(GCPoint2 point) API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1)); + + +@interface NSValue (GCTypes) + ++ (instancetype)valueWithGCPoint2:(GCPoint2)point API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1)); + +@property(nonatomic, readonly) GCPoint2 GCPoint2Value API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/GameController.framework/Versions/A/Headers/GameController.h b/Frameworks/GameController.framework/Versions/A/Headers/GameController.h index 24750c41..dc35c654 100644 --- a/Frameworks/GameController.framework/Versions/A/Headers/GameController.h +++ b/Frameworks/GameController.framework/Versions/A/Headers/GameController.h @@ -9,8 +9,11 @@ #import #import +#import #import +#import + #import #import @@ -18,6 +21,7 @@ #import #import #import +#import #import #import #import @@ -62,11 +66,9 @@ #import #import -#import #import #import #import -#import #import #import @@ -76,4 +78,14 @@ #import +#import +#if __has_include() +#import +#import +#import +#endif +#if __has_include() +#import +#endif + #import diff --git a/Frameworks/IOKit.framework/Versions/A/Headers/IOKitKeys.h b/Frameworks/IOKit.framework/Versions/A/Headers/IOKitKeys.h index 7a801a9b..07073483 100644 --- a/Frameworks/IOKit.framework/Versions/A/Headers/IOKitKeys.h +++ b/Frameworks/IOKit.framework/Versions/A/Headers/IOKitKeys.h @@ -263,6 +263,7 @@ #define kIONVRAMSyncNowPropertyKey "IONVRAM-SYNCNOW-PROPERTY" #define kIONVRAMActivateCSRConfigPropertyKey "IONVRAM-ARMCSR-PROPERTY" #define kIODTNVRAMPanicInfoKey "aapl,panic-info" +#define kIONVRAMDeletePropertyKeyWRet "IONVRAM-DELETEWRET-PROPERTY" // keys for complex boot information #define kIOBootDeviceKey "IOBootDevice" // dict | array of dicts @@ -288,8 +289,17 @@ #define kIOSystemStateSleepDescriptionReasonKey "com.apple.iokit.pm.sleepreason" #define kIOSystemStateSleepDescriptionHibernateStateKey "com.apple.iokit.pm.hibernatestate" +// Must match IOHibernatePrivate.h! +enum { + kIOSystemStateSleepDescriptionHibernateStateInactive = 0, + kIOSystemStateSleepDescriptionHibernateStateHibernating = 1,/* writing image */ + kIOSystemStateSleepDescriptionHibernateStateWakingFromHibernate = 2 /* booted and restored image */ +}; + #define kIOSystemStateWakeDescriptionKey "com.apple.iokit.pm.wakedescription" #define kIOSystemStateWakeDescriptionWakeReasonKey "com.apple.iokit.pm.wakereason" +#define kIOSystemStateWakeDescriptionContinuousTimeOffsetKey "com.apple.iokit.pm.wakedescription.continuous-time-offset" + #define kIOSystemStateHaltDescriptionKey "com.apple.iokit.pm.haltdescription" #define kIOSystemStateHaltDescriptionHaltStateKey "com.apple.iokit.pm.haltstate" diff --git a/Frameworks/IOKit.framework/Versions/A/Headers/IORPC.h b/Frameworks/IOKit.framework/Versions/A/Headers/IORPC.h index 6b948399..b5af9b4a 100644 --- a/Frameworks/IOKit.framework/Versions/A/Headers/IORPC.h +++ b/Frameworks/IOKit.framework/Versions/A/Headers/IORPC.h @@ -84,6 +84,7 @@ struct IORPCMessage { #pragma pack(pop) typedef struct IORPCMessage IORPCMessage; + #if defined(__cplusplus) extern "C" #else @@ -92,6 +93,7 @@ extern IORPCMessage * IORPCMessageFromMach(IORPCMessageMach * msg, bool reply); + struct IORPCMessageErrorReturnContent { IORPCMessage hdr; kern_return_t result; diff --git a/Frameworks/IOKit.framework/Versions/A/Headers/IOTypes.h b/Frameworks/IOKit.framework/Versions/A/Headers/IOTypes.h index 9fbd2d4a..d04225db 100644 --- a/Frameworks/IOKit.framework/Versions/A/Headers/IOTypes.h +++ b/Frameworks/IOKit.framework/Versions/A/Headers/IOTypes.h @@ -45,7 +45,18 @@ extern "C" { #endif #ifndef NULL -#if defined (__cplusplus) + +#if defined(__has_feature) && __has_feature(modules) +#define USE_CLANG_TYPES 1 +#else +#define USE_CLANG_TYPES 0 +#endif + +#if USE_CLANG_TYPES +#define __need_NULL +#include +#undef __need_NULL +#elif defined (__cplusplus) #if __cplusplus >= 201103L && (defined(__arm__) || defined(__arm64__)) #define NULL nullptr #else @@ -54,6 +65,9 @@ extern "C" { #else #define NULL ((void *)0) #endif + +#undef USE_CLANG_TYPES + #endif /* diff --git a/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDDeviceKeys.h b/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDDeviceKeys.h index 77030c42..93725c53 100644 --- a/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDDeviceKeys.h +++ b/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDDeviceKeys.h @@ -225,4 +225,13 @@ */ #define kIOHIDPhysicalDeviceUniqueIDKey "PhysicalDeviceUniqueID" +/*! + * @defined kIOHIDDeviceAccessEntitlementKey + * @abstract + * Defines a string or array of entitlements + * If the property defines a string, that entitlement is required + * If the property defines an array, only one entitlement from that array is required + */ +#define kIOHIDDeviceAccessEntitlementKey "HIDDeviceAccessEntitlement" + #endif /* IOHIDDeviceKeys_h */ diff --git a/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDDeviceTypes.h b/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDDeviceTypes.h index de9e54f3..614af052 100644 --- a/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDDeviceTypes.h +++ b/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDDeviceTypes.h @@ -77,11 +77,7 @@ typedef enum { * @abstract * Abstract data type used as a unique identifier for an element. */ -#if TARGET_OS_DRIVERKIT || defined(__LP64__) typedef uint32_t IOHIDElementCookie; -#else -typedef void * IOHIDElementCookie; -#endif /*! * @typedef IOHIDElementType diff --git a/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDElement.h b/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDElement.h index 1ef0d259..fb4bd6b4 100644 --- a/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDElement.h +++ b/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDElement.h @@ -337,7 +337,7 @@ AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; /*! @function IOHIDElementGetUnitExponent - @abstract Returns the unit exponenet in base 10 for the element. + @abstract Returns the code associated with the unit exponent as outlined in the HID spec @discussion The unit exponent property is described in more detail in Section 6.2.2.7 of the "Device Class Definition for Human Interface Devices(HID)" Specification, Version 1.11. @param element The element to be queried. If this parameter is not a valid IOHIDElementRef, the behavior is undefined. diff --git a/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDKeys.h b/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDKeys.h index d4266fa9..8e94ee16 100644 --- a/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDKeys.h +++ b/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDKeys.h @@ -490,6 +490,22 @@ typedef uint8_t IOHIDAccelerationAlgorithmType; */ #define kIOHIDPointerAccelerationMinimumKey "HIDPointerAccelerationMinimum" +/*! + * @define kIOHIDPrimaryTrackpadCanBeDisabledKey + * @abstract + * Data property that determines whether primary trackpad can be disabled. + */ +#define kIOHIDPrimaryTrackpadCanBeDisabledKey "PrimaryTrackpadCanBeDisabled" + +/*! + @defined kIOHIDKeyboardFunctionKeyCountKey + @abstract Property which provides the number of available function keys + @discussion For keyboards with a function key row, the number of available function keys will likely need to be + published within the system for consumers to enable functionality that is dependent on the + number of available keys. + */ +#define kIOHIDKeyboardFunctionKeyCountKey "HIDKeyboardFunctionKeyCount" + __END_DECLS #endif /* !_IOKIT_HID_IOHIDKEYS_H_ */ diff --git a/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDUsageTables.h b/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDUsageTables.h index 80339971..eb0cb669 100644 --- a/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDUsageTables.h +++ b/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDUsageTables.h @@ -54,7 +54,9 @@ enum kHIDPage_AlphanumericDisplay = 0x14, /* Reserved 0x15 - 0x1F */ kHIDPage_Sensor = 0x20, - /* Reserved 0x21 - 0x7f */ + /* Reserved 0x21 - 0x40 */ + kHIDPage_BrailleDisplay = 0x41, + /* Reserved 0x42 - 0x7F */ kHIDPage_Monitor = 0x80, kHIDPage_MonitorEnumerated = 0x81, kHIDPage_MonitorVirtual = 0x82, @@ -147,7 +149,8 @@ enum kHIDUsage_GD_SystemMenuLeft = 0x8B, /* Re-Trigger Control */ kHIDUsage_GD_SystemMenuUp = 0x8C, /* Re-Trigger Control */ kHIDUsage_GD_SystemMenuDown = 0x8D, /* Re-Trigger Control */ - /* 0x8E - 0x8F Reserved */ + kHIDUsage_GD_SystemColdRestart = 0x8E, /* One-Shot Control */ + kHIDUsage_GD_SystemWarmRestart = 0x8F, /* One-Shot Control */ kHIDUsage_GD_DPadUp = 0x90, /* On/Off Control */ kHIDUsage_GD_DPadDown = 0x91, /* On/Off Control */ kHIDUsage_GD_DPadRight = 0x92, /* On/Off Control */ @@ -160,7 +163,52 @@ enum kHIDUsage_GD_SFShiftLockIndicator = 0x99, /* Dynamic Value */ kHIDUsage_GD_SystemDismissNotification = 0x9A, /* One-Shot Control */ kHIDUsage_GD_DoNotDisturb = 0x9B, /* On/Off Control */ - /* 0x9C - 0xFFFF Reserved */ + /* 0x9C - 0x9F Reserved */ + kHIDUsage_GD_SystemDock = 0xA0, /* One-Shot Control */ + kHIDUsage_GD_SystemUndock = 0xA1, /* One-Shot Control */ + kHIDUsage_GD_SystemSetup = 0xA2, /* One-Shot Control */ + kHIDUsage_GD_SystemBreak = 0xA3, /* One-Shot Control */ + kHIDUsage_GD_SystemDebuggerBreak = 0xA4, /* One-Shot Control */ + kHIDUsage_GD_ApplicationBreak = 0xA5, /* One-Shot Control */ + kHIDUsage_GD_ApplicationDebuggerBreak = 0xA6, /* One-Shot Control */ + kHIDUsage_GD_SystemSpeakerMute = 0xA7, /* One-Shot Control */ + kHIDUsage_GD_SystemHibernate = 0xA8, /* One-Shot Control */ + kHIDUsage_GD_SystemMicrophoneMute = 0xA9, /* On/Off Control */ + /* 0xAA - 0xAF Reserved */ + kHIDUsage_GD_SystemDisplayInvert = 0xB0, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayInternal = 0xB1, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayExternal = 0xB2, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayBoth = 0xB3, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayDual = 0xB4, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayToggleMode = 0xB5, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplaySwap = 0xB6, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayToggleLCDAutoscale = 0xB7, /* One-Shot Control */ + /* 0xB8 - 0xBF Reserved */ + kHIDUsage_GD_SensorZone = 0xC0, /* Logical Collection */ + kHIDUsage_GD_RPM = 0xC1, /* Dynamic Value */ + kHIDUsage_GD_CoolantLevel = 0xC2, /* Dynamic Value */ + kHIDUsage_GD_CoolantCriticalLevel = 0xC3, /* Static Value */ + kHIDUsage_GD_CoolantPump = 0xC4, /* Usage Switch */ + kHIDUsage_GD_ChassisEnclosure = 0xC5, /* Logical Collection */ + kHIDUsage_GD_WirelessRadioButton = 0xC6, /* On/Off Control */ + kHIDUsage_GD_WirelessRadioLED = 0xC7, /* On/Off Control */ + kHIDUsage_GD_WirelessRadioSliderSwitch = 0xC8, /* On/Off Control */ + kHIDUsage_GD_SystemDisplayRotationLockButton = 0xC9, /* On/Off Control */ + kHIDUsage_GD_SystemDisplayRotationLockSliderSwitch = 0xCA, /* On/Off Control */ + kHIDUsage_GD_ControlEnable = 0xCB, /* Dynamic Flag */ + /* 0xCC - 0xCF Reserved */ + kHIDUsage_GD_DockableDeviceUniqueID = 0xD0, /* Dynamic Value */ + kHIDUsage_GD_DockableDeviceVendorID = 0xD1, /* Dynamic Value */ + kHIDUsage_GD_DockableDevicePrimaryUsagePage = 0xD2, /* Dynamic Value */ + kHIDUsage_GD_DockableDevicePrimaryUsageID = 0xD3, /* Dynamic Value */ + kHIDUsage_GD_DockableDeviceDockingState = 0xD4, /* Dynamic Flag */ + kHIDUsage_GD_DockableDeviceDisplayOcclusion = 0xD5, /* Logical Collection */ + kHIDUsage_GD_DockableDeviceObjectType = 0xD6, /* Dynamic Value */ + /* 0xD7 - 0xDF Reserved */ + kHIDUsage_GD_CallActiveLED = 0xE0, /* On/Off Control */ + kHIDUsage_GD_CallMuteToggle = 0xE1, /* One-Shot Control */ + kHIDUsage_GD_CallMuteLED = 0xE2, /* On/Off Control */ + /* 0xE3 - 0xFFFF Reserved */ kHIDUsage_GD_Reserved = 0xFFFF }; @@ -1445,7 +1493,8 @@ enum kHIDUsage_Dig_MultiplePointDigitizer = 0x0C, /* Application Collection */ kHIDUsage_Dig_FreeSpaceWand = 0x0D, /* Application Collection */ kHIDUsage_Dig_DeviceConfiguration = 0x0E, /* Application Collection */ - /* 0x0F - 0x1F Reserved */ + kHIDUsage_Dig_CapacitiveHeatMapDigitizer = 0x0F, /* Application Collection */ + /* 0x10 - 0x1F Reserved */ kHIDUsage_Dig_Stylus = 0x20, /* Logical Collection */ kHIDUsage_Dig_Puck = 0x21, /* Logical Collection */ kHIDUsage_Dig_Finger = 0x22, /* Logical Collection */ @@ -1498,6 +1547,9 @@ enum kHIDUsage_Dig_GestureCharacterEncodingUTF16BE = 0x67, /* Selector */ kHIDUsage_Dig_GestureCharacterEncodingUTF32LE = 0x68, /* Selector */ kHIDUsage_Dig_GestureCharacterEncodingUTF32BE = 0x69, /* Selector */ + kHIDUsage_Dig_CapacitiveHeatMapProtocolVendorID = 0x6A, /* Static Value */ + kHIDUsage_Dig_CapacitiveHeatMapProtocolVersion = 0x6B, /* Static Value */ + kHIDUsage_Dig_CapacitiveHeatMapFrameData = 0x6C, /* Dynamic Value */ kHIDUsage_Dig_ReportRate = 0xA1, /* Dynamic Value */ @@ -2169,6 +2221,60 @@ enum /* 0x054A - 0x055F Reserved */ }; +/* Braille Display Page (0x20) */ +/* The Braille Display page is intended for use by devices that allow visually impaired computer users to read out text using raised pins. These devices also have support for controls that help navigate the computer screen. Typically, braille displays interface with software known as a screen reader in order to perform this navigation. */ +enum +{ + kHIDUsage_BD_Undefined = 0x00, + kHIDUsage_BD_BrailleDisplay = 0x01, /* Application Collection */ + kHIDUsage_BD_BrailleRow = 0x02, /* Named Array */ + kHIDUsage_BD_8DotBrailleCell = 0x03, /* Dynamic Value */ + kHIDUsage_BD_6DotBrailleCell = 0x04, /* Dynamic Value */ + kHIDUsage_BD_NumberOfBrailleCells = 0x05, /* Dynamic Value */ + kHIDUsage_BD_ScreenReaderControl = 0x06, /* Named Array */ + kHIDUsage_BD_ScreenReaderIdentifier = 0x07, /* Dynamic Value */ + /* 0x08 - 0xF9 Reserved */ + kHIDUsage_BD_RouterSet1 = 0xFA, /* Named Array */ + kHIDUsage_BD_RouterSet2 = 0xFB, /* Named Array */ + kHIDUsage_BD_RouterSet3 = 0xFC, /* Named Array */ + /* 0xFD - 0xFF Reserved */ + kHIDUsage_BD_RouterKey = 0x100, /* Selector */ + kHIDUsage_BD_RowRouterKey = 0x101, /* Selector */ + /* 0x102 - 0x1FF Reserved */ + kHIDUsage_BD_BrailleButtons = 0x200, /* Named Array */ + kHIDUsage_BD_BrailleKeyboardDot1 = 0x201, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot2 = 0x202, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot3 = 0x203, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot4 = 0x204, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot5 = 0x205, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot6 = 0x206, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot7 = 0x207, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot8 = 0x208, /* Selector */ + kHIDUsage_BD_BrailleKeyboardSpace = 0x209, /* Selector */ + kHIDUsage_BD_BrailleKeyboardLeftSpace = 0x20A, /* Selector */ + kHIDUsage_BD_BrailleKeyboardRightSpace = 0x20B, /* Selector */ + kHIDUsage_BD_BrailleFaceControls = 0x20C, /* Named Array */ + kHIDUsage_BD_BrailleLeftControls = 0x20D, /* Named Array */ + kHIDUsage_BD_BrailleRightControls = 0x20E, /* Named Array */ + kHIDUsage_BD_BrailleTopControls = 0x20F, /* Named Array */ + kHIDUsage_BD_BrailleJoystickCenter = 0x210, /* Selector */ + kHIDUsage_BD_BrailleJoystickUp = 0x211, /* Selector */ + kHIDUsage_BD_BrailleJoystickDown = 0x212, /* Selector */ + kHIDUsage_BD_BrailleJoystickLeft = 0x213, /* Selector */ + kHIDUsage_BD_BrailleJoystickRight = 0x214, /* Selector */ + kHIDUsage_BD_BrailleDPadCenter = 0x215, /* Selector */ + kHIDUsage_BD_BrailleDPadUp = 0x216, /* Selector */ + kHIDUsage_BD_BrailleDPadDown = 0x217, /* Selector */ + kHIDUsage_BD_BrailleDPadLeft = 0x218, /* Selector */ + kHIDUsage_BD_BrailleDPadRight = 0x219, /* Selector */ + kHIDUsage_BD_BraillePanLeft = 0x21A, /* Selector */ + kHIDUsage_BD_BraillePanRight = 0x21B, /* Selector */ + kHIDUsage_BD_BrailleRockerUp = 0x21C, /* Selector */ + kHIDUsage_BD_BrailleRockerDown = 0x21D, /* Selector */ + kHIDUsage_BD_BrailleRockerPress = 0x21E, /* Selector */ + /* Reserved 0x21F - 0xFFFF */ +}; + /* Power Device Page (0x84) */ /* This section provides detailed descriptions of the usages employed by Power Devices. */ enum @@ -2537,8 +2643,8 @@ enum kHIDUsage_BCS_CheckDigitDisable = 0xD7, /* SEL - Check Digit Disable */ kHIDUsage_BCS_CheckDigitEnableInterleaved2of5OPCC = 0xD8, /* SEL - Check Digit Enable Interleaved 2 of 5 OPCC */ kHIDUsage_BCS_CheckDigitEnableInterleaved2of5USS = 0xD9, /* SEL - Check Digit Enable Interleaved 2 of 5 USS */ - kHIDUsage_BCS_CheckDigitEnableStandard2of5OPCC = 0xD8, /* SEL - Check Digit Enable Standard 2 of 5 OPCC */ - kHIDUsage_BCS_CheckDigitEnableStandard2of5USS = 0xD9, /* SEL - Check Digit Enable Standard 2 of 5 USS */ + kHIDUsage_BCS_CheckDigitEnableStandard2of5OPCC = 0xDA, /* SEL - Check Digit Enable Standard 2 of 5 OPCC */ + kHIDUsage_BCS_CheckDigitEnableStandard2of5USS = 0xDB, /* SEL - Check Digit Enable Standard 2 of 5 USS */ kHIDUsage_BCS_CheckDigitEnableOneMSIPlessey = 0xDC, /* SEL - Check Digit Enable One MSI Plessey */ kHIDUsage_BCS_CheckDigitEnableTwoMSIPlessey = 0xDD, /* SEL - Check Digit Enable Two MSI Plessey */ kHIDUsage_BCS_CheckDigitCodabarEnable = 0xDE, /* SEL - Check Digit Codabar Enable */ @@ -2557,7 +2663,7 @@ enum kHIDUsage_BCS_ScannerDataAccuracy = 0x101, /* DV - Scanner Data Accuracy */ kHIDUsage_BCS_RawDataPolarity = 0x102, /* NArry - Raw Data Polarity */ kHIDUsage_BCS_PolarityInvertedBarCode = 0x103, /* SEL - Polarity Inverted Bar Code */ - kHIDUsage_BCS_PolarityNormalBarCode = 0x103, /* SEL - Polarity Normal Bar Code */ + kHIDUsage_BCS_PolarityNormalBarCode = 0x104, /* SEL - Polarity Normal Bar Code */ /* Reserved 0x105 */ kHIDUsage_BCS_MinimumLengthToDecode = 0x106, /* DV - Minimum Length to Decode */ kHIDUsage_BCS_MaximumLengthToDecode = 0x107, /* DV - Maximum Length to Decode */ diff --git a/Frameworks/IOKit.framework/Versions/A/Headers/hidsystem/IOHIDLib.h b/Frameworks/IOKit.framework/Versions/A/Headers/hidsystem/IOHIDLib.h index 078d315d..89d31b4f 100644 --- a/Frameworks/IOKit.framework/Versions/A/Headers/hidsystem/IOHIDLib.h +++ b/Frameworks/IOKit.framework/Versions/A/Headers/hidsystem/IOHIDLib.h @@ -213,6 +213,23 @@ __OSX_AVAILABLE(10.15) __IOS_AVAILABLE(13.0) __TVOS_AVAILABLE(13.0) __WATCHOS_AV bool IOHIDRequestAccess(IOHIDRequestType requestType) __OSX_AVAILABLE(10.15) __IOS_AVAILABLE(13.0) __TVOS_AVAILABLE(13.0) __WATCHOS_AVAILABLE(6.0); +/*! + * @function IOHIDAccessCheckAuditToken + * + * @abstract + * Checks access for a specific IOHIDRequestType for a specific client, identified by the audit token + * + * @param requestType + * The request type defined in the IOHIDRequestType enumerator. + * @param token + * The audit token associated with the client we are checking access for + * + * @result + * Returns true if the specified client has TCC access for the specified service. + */ +bool IOHIDAccessCheckAuditToken(IOHIDRequestType requestType, audit_token_t token) +__OSX_AVAILABLE(10.15) __IOS_AVAILABLE(13.0) __TVOS_AVAILABLE(13.0) __WATCHOS_AVAILABLE(6.0); + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ __END_DECLS diff --git a/Frameworks/IOKit.framework/Versions/A/IOKit.tbd b/Frameworks/IOKit.framework/Versions/A/IOKit.tbd index 40327013..5082fde4 100644 --- a/Frameworks/IOKit.framework/Versions/A/IOKit.tbd +++ b/Frameworks/IOKit.framework/Versions/A/IOKit.tbd @@ -37,12 +37,13 @@ exports: _IOAVControllerCopyProperties, _IOAVControllerCopyProperty, _IOAVControllerCreate, _IOAVControllerCreateWithLocation, _IOAVControllerCreateWithService, _IOAVControllerForceHotPlugDetect, - _IOAVControllerGetLocation, _IOAVControllerGetPower, _IOAVControllerGetTypeID, - _IOAVControllerSetEventLogCommandMask, _IOAVControllerSetEventLogEventMask, - _IOAVControllerSetEventLogSize, _IOAVControllerSetLogLevel, - _IOAVControllerSetLogLevelMask, _IOAVControllerSetPower, _IOAVControllerSetProperty, - _IOAVControllerSetProtectionType, _IOAVControllerSetVirtualDeviceMode, - _IOAVControllerSleepDisplay, _IOAVControllerWakeDisplay, _IOAVCreateDiagnosticsReference, + _IOAVControllerGetCRCData, _IOAVControllerGetLocation, _IOAVControllerGetPower, + _IOAVControllerGetTypeID, _IOAVControllerSetEventLogCommandMask, + _IOAVControllerSetEventLogEventMask, _IOAVControllerSetEventLogSize, + _IOAVControllerSetLogLevel, _IOAVControllerSetLogLevelMask, + _IOAVControllerSetPower, _IOAVControllerSetProperty, _IOAVControllerSetProtectionType, + _IOAVControllerSetVirtualDeviceMode, _IOAVControllerSleepDisplay, + _IOAVControllerWakeDisplay, _IOAVCreateDiagnosticsReference, _IOAVCreateDiagnosticsReferenceWithLocation, _IOAVCreateDiagnosticsString, _IOAVCreateDiagnosticsStringWithLocation, _IOAVCreateStringWithAudioChannelLayoutData, _IOAVCreateStringWithAudioLinkData, _IOAVCreateStringWithData, @@ -63,13 +64,16 @@ exports: _IOAVServiceCopyProperties, _IOAVServiceCopyProperty, _IOAVServiceCreate, _IOAVServiceCreateWithLocation, _IOAVServiceCreateWithService, _IOAVServiceGetChosenContentProtection, _IOAVServiceGetContentProtectionCapabilities, - _IOAVServiceGetDevice, _IOAVServiceGetEncryptionStatus, _IOAVServiceGetHDCPAuthenticatedContentType, - _IOAVServiceGetLinkData, _IOAVServiceGetLinkDataWithSource, - _IOAVServiceGetLocation, _IOAVServiceGetPower, _IOAVServiceGetProtectionStatus, - _IOAVServiceGetTypeID, _IOAVServiceReadI2C, _IOAVServiceSetContentProtectionCapabilities, + _IOAVServiceGetDevice, _IOAVServiceGetEncryptionStatus, _IOAVServiceGetFRLCharacterErrorCounts, + _IOAVServiceGetFRLLinkData, _IOAVServiceGetFRLMaxRate, _IOAVServiceGetFRLMinRate, + _IOAVServiceGetHDCPAuthenticatedContentType, _IOAVServiceGetLinkData, + _IOAVServiceGetLinkDataWithSource, _IOAVServiceGetLocation, + _IOAVServiceGetPower, _IOAVServiceGetProtectionStatus, _IOAVServiceGetTypeID, + _IOAVServiceReadI2C, _IOAVServiceRetrainFRL, _IOAVServiceSetContentProtectionCapabilities, _IOAVServiceSetContentProtectionPolicyOptions, _IOAVServiceSetContentProtectionSupportEnabled, _IOAVServiceSetEventLogCommandMask, _IOAVServiceSetEventLogEventMask, - _IOAVServiceSetEventLogSize, _IOAVServiceSetHDRStaticMetadata, + _IOAVServiceSetEventLogSize, _IOAVServiceSetFRLMaxRate, _IOAVServiceSetFRLMinRate, + _IOAVServiceSetFRLRecovery, _IOAVServiceSetHDRStaticMetadata, _IOAVServiceSetLogLevel, _IOAVServiceSetLogLevelMask, _IOAVServiceSetProperty, _IOAVServiceSetVirtualEDIDMode, _IOAVServiceStartInfoFrame, _IOAVServiceStartInfoFrameWithSource, _IOAVServiceStartLink, @@ -122,9 +126,10 @@ exports: _IODPControllerSetLaneCount, _IODPControllerSetLinkRate, _IODPControllerSetMaxLaneCount, _IODPControllerSetMaxLinkRate, _IODPControllerSetMinLaneCount, _IODPControllerSetMinLinkRate, _IODPControllerSetQualityPattern, - _IODPControllerSetScramblingInhibited, _IODPControllerSetSupportsDownspread, - _IODPControllerSetSupportsEnhancedMode, _IODPCreateStringWithLinkTrainingData, - _IODPDeviceCreate, _IODPDeviceCreateWithLocation, _IODPDeviceCreateWithService, + _IODPControllerSetScramblingInhibited, _IODPControllerSetSecureAuxFilter, + _IODPControllerSetSupportsDownspread, _IODPControllerSetSupportsEnhancedMode, + _IODPCreateStringWithLinkTrainingData, _IODPDeviceCreate, + _IODPDeviceCreateWithLocation, _IODPDeviceCreateWithService, _IODPDeviceGetAVDevice, _IODPDeviceGetController, _IODPDeviceGetLinkTrainingData, _IODPDeviceGetMaxLaneCount, _IODPDeviceGetMaxLinkRate, _IODPDeviceGetRevisionMajor, _IODPDeviceGetRevisionMinor, _IODPDeviceGetSupportsDownspread, @@ -152,9 +157,9 @@ exports: _IOEthernetControllerSetLinkStatus, _IOEthernetControllerSetPowerSavings, _IOEthernetControllerUnscheduleFromRunLoop, _IOEthernetControllerWritePacket, _IOFBCopyI2CInterfaceForBus, _IOFBGetI2CInterfaceCount, _IOFramebufferOpen, - _IOGetSystemLoadAdvisory, _IOHIDAnalyticsEventActivate, _IOHIDAnalyticsEventAddField, - _IOHIDAnalyticsEventAddHistogramField, _IOHIDAnalyticsEventCancel, - _IOHIDAnalyticsEventCreate, _IOHIDAnalyticsEventSetIntegerValueForField, + _IOGetSystemLoadAdvisory, _IOHIDAccessCheckAuditToken, _IOHIDAnalyticsEventActivate, + _IOHIDAnalyticsEventAddField, _IOHIDAnalyticsEventAddHistogramField, + _IOHIDAnalyticsEventCancel, _IOHIDAnalyticsEventCreate, _IOHIDAnalyticsEventSetIntegerValueForField, _IOHIDAnalyticsEventSetStringValueForField, _IOHIDAnalyticsHistogramEventCreate, _IOHIDAnalyticsHistogramEventSetIntegerValue, _IOHIDCheckAccess, _IOHIDConnectionFilterActivate, _IOHIDConnectionFilterCancel, @@ -197,32 +202,35 @@ exports: _IOHIDEventCreateButtonEvent, _IOHIDEventCreateButtonEventWithPressure, _IOHIDEventCreateCollectionEvent, _IOHIDEventCreateCompassEvent, _IOHIDEventCreateCompassEventWithType, _IOHIDEventCreateCopy, - _IOHIDEventCreateData, _IOHIDEventCreateDeviceOrientationEventWithUsage, + _IOHIDEventCreateData, _IOHIDEventCreateDataInternal, _IOHIDEventCreateDeviceOrientationEventWithUsage, _IOHIDEventCreateDigitizerEvent, _IOHIDEventCreateDigitizerFingerEvent, _IOHIDEventCreateDigitizerFingerEventWithQuality, _IOHIDEventCreateDigitizerStylusEvent, _IOHIDEventCreateDigitizerStylusEventWithPolarOrientation, _IOHIDEventCreateDockSwipeEvent, _IOHIDEventCreateFluidTouchGestureEvent, - _IOHIDEventCreateForceEvent, _IOHIDEventCreateGameControllerEvent, - _IOHIDEventCreateGenericGestureEvent, _IOHIDEventCreateGyroEvent, - _IOHIDEventCreateGyroEventWithType, _IOHIDEventCreateKeyboardEvent, - _IOHIDEventCreateLEDEvent, _IOHIDEventCreateMotionActivtyEvent, - _IOHIDEventCreateMotionGestureEvent, _IOHIDEventCreateMouseEvent, - _IOHIDEventCreateNavigationSwipeEvent, _IOHIDEventCreateOrientationEvent, - _IOHIDEventCreatePolarOrientationEvent, _IOHIDEventCreateProgressEvent, - _IOHIDEventCreateProximtyEvent, _IOHIDEventCreateProximtyLevelEvent, - _IOHIDEventCreateProximtyProbabilityEvent, _IOHIDEventCreateQuaternionOrientationEvent, - _IOHIDEventCreateRelativePointerEvent, _IOHIDEventCreateRotationEvent, - _IOHIDEventCreateScaleEvent, _IOHIDEventCreateScrollEvent, - _IOHIDEventCreateSwipeEvent, _IOHIDEventCreateSymbolicHotKeyEvent, - _IOHIDEventCreateTranslationEvent, _IOHIDEventCreateUnicodeEvent, - _IOHIDEventCreateUnicodeEventWithQuality, _IOHIDEventCreateVelocityEvent, - _IOHIDEventCreateVendorDefinedEvent, _IOHIDEventCreateWithBytes, - _IOHIDEventCreateWithData, _IOHIDEventCreateZoomToggleEvent, - _IOHIDEventGetAttributeData, _IOHIDEventGetAttributeDataLength, - _IOHIDEventGetAttributeDataPtr, _IOHIDEventGetChildren, _IOHIDEventGetDataLength, - _IOHIDEventGetDataValue, _IOHIDEventGetDataValueWithOptions, - _IOHIDEventGetDoubleValue, _IOHIDEventGetDoubleValueWithOptions, - _IOHIDEventGetEvent, _IOHIDEventGetEventFlags, _IOHIDEventGetEventWithOptions, + _IOHIDEventCreateForceEvent, _IOHIDEventCreateForceStageEvent, + _IOHIDEventCreateGameControllerEvent, _IOHIDEventCreateGenericGestureEvent, + _IOHIDEventCreateGyroEvent, _IOHIDEventCreateGyroEventWithType, + _IOHIDEventCreateKeyboardEvent, _IOHIDEventCreateLEDEvent, + _IOHIDEventCreateMotionActivtyEvent, _IOHIDEventCreateMotionGestureEvent, + _IOHIDEventCreateMouseEvent, _IOHIDEventCreateNavigationSwipeEvent, + _IOHIDEventCreateOrientationEvent, _IOHIDEventCreatePolarOrientationEvent, + _IOHIDEventCreateProgressEvent, _IOHIDEventCreateProximtyEvent, + _IOHIDEventCreateProximtyLevelEvent, _IOHIDEventCreateProximtyProbabilityEvent, + _IOHIDEventCreateQuaternionOrientationEvent, _IOHIDEventCreateRelativePointerEvent, + _IOHIDEventCreateRotationEvent, _IOHIDEventCreateScaleEvent, + _IOHIDEventCreateScrollEvent, _IOHIDEventCreateSwipeEvent, + _IOHIDEventCreateSymbolicHotKeyEvent, _IOHIDEventCreateTouchSensitiveButtonEvent, + _IOHIDEventCreateTouchSensitiveButtonEventWithRadius, _IOHIDEventCreateTranslationEvent, + _IOHIDEventCreateUnicodeEvent, _IOHIDEventCreateUnicodeEventWithQuality, + _IOHIDEventCreateVelocityEvent, _IOHIDEventCreateVendorDefinedEvent, + _IOHIDEventCreateWithBytes, _IOHIDEventCreateWithBytesInternal, + _IOHIDEventCreateWithData, _IOHIDEventCreateWithDataInternal, + _IOHIDEventCreateZoomToggleEvent, _IOHIDEventGetAttributeData, + _IOHIDEventGetAttributeDataLength, _IOHIDEventGetAttributeDataPtr, + _IOHIDEventGetChildren, _IOHIDEventGetDataLength, _IOHIDEventGetDataValue, + _IOHIDEventGetDataValueWithOptions, _IOHIDEventGetDoubleValue, + _IOHIDEventGetDoubleValueWithOptions, _IOHIDEventGetEvent, + _IOHIDEventGetEventFlags, _IOHIDEventGetEventWithOptions, _IOHIDEventGetFloatMultiple, _IOHIDEventGetFloatMultipleWithOptions, _IOHIDEventGetFloatValue, _IOHIDEventGetFloatValueWithOptions, _IOHIDEventGetIntegerMultiple, _IOHIDEventGetIntegerMultipleWithOptions, @@ -241,28 +249,29 @@ exports: _IOHIDEventQueueIsActive, _IOHIDEventQueueNotify, _IOHIDEventQueueResume, _IOHIDEventQueueSetNotificationPort, _IOHIDEventQueueStart, _IOHIDEventQueueStop, _IOHIDEventQueueSuspend, _IOHIDEventReadBytes, - _IOHIDEventRemoveEvent, _IOHIDEventServerCreate, _IOHIDEventServerGetTypeID, - _IOHIDEventServerScheduleWithDispatchQueue, _IOHIDEventServerUnscheduleFromDispatchQueue, - _IOHIDEventSetAttributeData, _IOHIDEventSetDoubleMultiple, - _IOHIDEventSetDoubleMultipleWithOptions, _IOHIDEventSetDoubleValue, - _IOHIDEventSetDoubleValueWithOptions, _IOHIDEventSetEventFlags, - _IOHIDEventSetFloatMultiple, _IOHIDEventSetFloatMultipleWithOptions, + _IOHIDEventReadBytesInternal, _IOHIDEventRemoveEvent, _IOHIDEventServerCreate, + _IOHIDEventServerGetTypeID, _IOHIDEventServerScheduleWithDispatchQueue, + _IOHIDEventServerUnscheduleFromDispatchQueue, _IOHIDEventSetAttributeData, + _IOHIDEventSetDoubleMultiple, _IOHIDEventSetDoubleMultipleWithOptions, + _IOHIDEventSetDoubleValue, _IOHIDEventSetDoubleValueWithOptions, + _IOHIDEventSetEventFlags, _IOHIDEventSetFloatMultiple, _IOHIDEventSetFloatMultipleWithOptions, _IOHIDEventSetFloatValue, _IOHIDEventSetFloatValueWithOptions, - _IOHIDEventSetInt64Value, _IOHIDEventSetIntegerMultiple, _IOHIDEventSetIntegerMultipleWithOptions, + _IOHIDEventSetIntegerMultiple, _IOHIDEventSetIntegerMultipleWithOptions, _IOHIDEventSetIntegerValue, _IOHIDEventSetIntegerValueWithOptions, _IOHIDEventSetPhase, _IOHIDEventSetPosition, _IOHIDEventSetPositionWithOptions, _IOHIDEventSetRepeat, _IOHIDEventSetScrollMomentum, _IOHIDEventSetSenderID, _IOHIDEventSetTimeStamp, _IOHIDEventSetTimeStampOfType, _IOHIDEventSetUInt64Multiple, - _IOHIDEventSetUInt64MultipleWithOptions, _IOHIDEventSetUInt64ValueWithOptions, - _IOHIDEventSystemClient, _IOHIDEventSystemClientActivate, - _IOHIDEventSystemClientCancel, _IOHIDEventSystemClientCopyProperty, - _IOHIDEventSystemClientCopyServiceForRegistryID, _IOHIDEventSystemClientCopyServices, - _IOHIDEventSystemClientCreate, _IOHIDEventSystemClientCreateSimpleClient, - _IOHIDEventSystemClientCreateWithType, _IOHIDEventSystemClientDispatchEvent, - _IOHIDEventSystemClientGetTypeID, _IOHIDEventSystemClientGetTypeString, - _IOHIDEventSystemClientRegisterDeviceMatchingBlock, _IOHIDEventSystemClientRegisterDeviceMatchingCallback, - _IOHIDEventSystemClientRegisterEventBlock, _IOHIDEventSystemClientRegisterEventCallback, - _IOHIDEventSystemClientRegisterEventFilterBlock, _IOHIDEventSystemClientRegisterEventFilterBlockWithPriority, + _IOHIDEventSetUInt64MultipleWithOptions, _IOHIDEventSetUInt64Value, + _IOHIDEventSetUInt64ValueWithOptions, _IOHIDEventSystemClient, + _IOHIDEventSystemClientActivate, _IOHIDEventSystemClientCancel, + _IOHIDEventSystemClientCopyProperty, _IOHIDEventSystemClientCopyServiceForRegistryID, + _IOHIDEventSystemClientCopyServices, _IOHIDEventSystemClientCreate, + _IOHIDEventSystemClientCreateSimpleClient, _IOHIDEventSystemClientCreateWithType, + _IOHIDEventSystemClientDispatchEvent, _IOHIDEventSystemClientGetTypeID, + _IOHIDEventSystemClientGetTypeString, _IOHIDEventSystemClientRegisterDeviceMatchingBlock, + _IOHIDEventSystemClientRegisterDeviceMatchingCallback, _IOHIDEventSystemClientRegisterEventBlock, + _IOHIDEventSystemClientRegisterEventCallback, _IOHIDEventSystemClientRegisterEventFilterBlock, + _IOHIDEventSystemClientRegisterEventFilterBlockWithPriority, _IOHIDEventSystemClientRegisterEventFilterCallback, _IOHIDEventSystemClientRegisterEventFilterCallbackWithPriority, _IOHIDEventSystemClientRegisterPropertyChangedCallback, _IOHIDEventSystemClientRegisterResetCallback, _IOHIDEventSystemClientRegistryIDConformsTo, _IOHIDEventSystemClientScheduleWithDispatchQueue, @@ -286,37 +295,38 @@ exports: _IOHIDEventSystemCopyServices, _IOHIDEventSystemCreate, _IOHIDEventSystemGetProperty, _IOHIDEventSystemGetTypeID, _IOHIDEventSystemOpen, _IOHIDEventSystemRegisterConnectionAdditionCallback, _IOHIDEventSystemRegisterConnectionRemovalCallback, _IOHIDEventSystemRegisterPropertyChangedNotification, - _IOHIDEventSystemRegisterServicesCallback, _IOHIDEventSystemSetCallback, - _IOHIDEventSystemSetProperty, _IOHIDEventSystemUnregisterConnectionAdditionCallback, - _IOHIDEventSystemUnregisterConnectionRemovalCallback, _IOHIDEventSystemUnregisterPropertyChangedNotification, - _IOHIDEventSystemUnregisterServicesCallback, _IOHIDEventTypeGetName, - _IOHIDGetAccelerationWithKey, _IOHIDGetActivityState, _IOHIDGetButtonEventNum, - _IOHIDGetModifierLockState, _IOHIDGetMouseAcceleration, _IOHIDGetMouseButtonMode, - _IOHIDGetParameter, _IOHIDGetScrollAcceleration, _IOHIDGetStateForSelector, - _IOHIDManagerActivate, _IOHIDManagerCancel, _IOHIDManagerClose, - _IOHIDManagerCopyDevices, _IOHIDManagerCreate, _IOHIDManagerGetProperty, - _IOHIDManagerGetTypeID, _IOHIDManagerOpen, _IOHIDManagerRegisterDeviceMatchingCallback, - _IOHIDManagerRegisterDeviceRemovalCallback, _IOHIDManagerRegisterInputReportCallback, - _IOHIDManagerRegisterInputReportWithTimeStampCallback, _IOHIDManagerRegisterInputValueCallback, - _IOHIDManagerSaveToPropertyDomain, _IOHIDManagerScheduleWithRunLoop, - _IOHIDManagerSetCancelHandler, _IOHIDManagerSetDeviceMatching, - _IOHIDManagerSetDeviceMatchingMultiple, _IOHIDManagerSetDispatchQueue, - _IOHIDManagerSetInputValueMatching, _IOHIDManagerSetInputValueMatchingMultiple, - _IOHIDManagerSetProperty, _IOHIDManagerUnscheduleFromRunLoop, - _IOHIDNotificationCreate, _IOHIDNotificationGetClientCallback, - _IOHIDNotificationGetClientRefcon, _IOHIDNotificationGetClientTarget, - _IOHIDNotificationGetOwnerCallback, _IOHIDNotificationGetOwnerRefcon, - _IOHIDNotificationGetOwnerTarget, _IOHIDNotificationGetTypeID, - _IOHIDNotificationInvalidate, _IOHIDNotificationSignalWithBlock, - _IOHIDPostEvent, _IOHIDPreferencesCopy, _IOHIDPreferencesCopyDomain, - _IOHIDPreferencesCopyDomainForInstance, _IOHIDPreferencesCopyForInstance, - _IOHIDPreferencesCopyMultiple, _IOHIDPreferencesCopyMultipleForInstance, - _IOHIDPreferencesCreateInstance, _IOHIDPreferencesSet, _IOHIDPreferencesSetDomain, - _IOHIDPreferencesSetDomainForInstance, _IOHIDPreferencesSetForInstance, - _IOHIDPreferencesSetMultiple, _IOHIDPreferencesSetMultipleForInstance, - _IOHIDPreferencesSynchronize, _IOHIDPreferencesSynchronizeForInstance, - _IOHIDQueueActivate, _IOHIDQueueAddElement, _IOHIDQueueCancel, - _IOHIDQueueContainsElement, _IOHIDQueueCopyNextValue, _IOHIDQueueCopyNextValueWithTimeout, + _IOHIDEventSystemRegisterServicesCallback, _IOHIDEventSystemRematchServices, + _IOHIDEventSystemSetCallback, _IOHIDEventSystemSetProperty, + _IOHIDEventSystemUnregisterConnectionAdditionCallback, _IOHIDEventSystemUnregisterConnectionRemovalCallback, + _IOHIDEventSystemUnregisterPropertyChangedNotification, _IOHIDEventSystemUnregisterServicesCallback, + _IOHIDEventTypeGetName, _IOHIDGetAccelerationWithKey, _IOHIDGetActivityState, + _IOHIDGetButtonEventNum, _IOHIDGetModifierLockState, _IOHIDGetMouseAcceleration, + _IOHIDGetMouseButtonMode, _IOHIDGetParameter, _IOHIDGetScrollAcceleration, + _IOHIDGetStateForSelector, _IOHIDManagerActivate, _IOHIDManagerCancel, + _IOHIDManagerClose, _IOHIDManagerCopyDevices, _IOHIDManagerCreate, + _IOHIDManagerGetProperty, _IOHIDManagerGetTypeID, _IOHIDManagerOpen, + _IOHIDManagerRegisterDeviceMatchingCallback, _IOHIDManagerRegisterDeviceRemovalCallback, + _IOHIDManagerRegisterInputReportCallback, _IOHIDManagerRegisterInputReportWithTimeStampCallback, + _IOHIDManagerRegisterInputValueCallback, _IOHIDManagerSaveToPropertyDomain, + _IOHIDManagerScheduleWithRunLoop, _IOHIDManagerSetCancelHandler, + _IOHIDManagerSetDeviceMatching, _IOHIDManagerSetDeviceMatchingMultiple, + _IOHIDManagerSetDispatchQueue, _IOHIDManagerSetInputValueMatching, + _IOHIDManagerSetInputValueMatchingMultiple, _IOHIDManagerSetProperty, + _IOHIDManagerUnscheduleFromRunLoop, _IOHIDNotificationCreate, + _IOHIDNotificationGetClientCallback, _IOHIDNotificationGetClientRefcon, + _IOHIDNotificationGetClientTarget, _IOHIDNotificationGetOwnerCallback, + _IOHIDNotificationGetOwnerRefcon, _IOHIDNotificationGetOwnerTarget, + _IOHIDNotificationGetTypeID, _IOHIDNotificationInvalidate, + _IOHIDNotificationSignalWithBlock, _IOHIDPostEvent, _IOHIDPreferencesCopy, + _IOHIDPreferencesCopyDomain, _IOHIDPreferencesCopyDomainForInstance, + _IOHIDPreferencesCopyForInstance, _IOHIDPreferencesCopyMultiple, + _IOHIDPreferencesCopyMultipleForInstance, _IOHIDPreferencesCreateInstance, + _IOHIDPreferencesSet, _IOHIDPreferencesSetDomain, _IOHIDPreferencesSetDomainForInstance, + _IOHIDPreferencesSetForInstance, _IOHIDPreferencesSetMultiple, + _IOHIDPreferencesSetMultipleForInstance, _IOHIDPreferencesSynchronize, + _IOHIDPreferencesSynchronizeForInstance, _IOHIDQueueActivate, + _IOHIDQueueAddElement, _IOHIDQueueCancel, _IOHIDQueueContainsElement, + _IOHIDQueueCopyNextValue, _IOHIDQueueCopyNextValueWithTimeout, _IOHIDQueueCreate, _IOHIDQueueGetDepth, _IOHIDQueueGetDevice, _IOHIDQueueGetTypeID, _IOHIDQueueRegisterValueAvailableCallback, _IOHIDQueueRemoveElement, _IOHIDQueueScheduleWithRunLoop, @@ -339,8 +349,9 @@ exports: _IOHIDServiceConnectionCacheSetValueForKey, _IOHIDServiceCopyDescription, _IOHIDServiceCopyEvent, _IOHIDServiceCopyEventForClient, _IOHIDServiceCopyMatchingEvent, _IOHIDServiceCopyProperty, _IOHIDServiceCreatePropertyChangedNotification, - _IOHIDServiceCreateRemovalNotification, _IOHIDServiceFilterClientNotification, - _IOHIDServiceFilterClose, _IOHIDServiceFilterCompare, _IOHIDServiceFilterCopyPropertyForClient, + _IOHIDServiceCreateRemovalNotification, _IOHIDServiceCreateRequestTerminationNotification, + _IOHIDServiceFilterClientNotification, _IOHIDServiceFilterClose, + _IOHIDServiceFilterCompare, _IOHIDServiceFilterCopyPropertyForClient, _IOHIDServiceFilterCreate, _IOHIDServiceFilterCreateWithClass, _IOHIDServiceFilterFilterCopyEvent, _IOHIDServiceFilterFilterCopyMatchingEvent, _IOHIDServiceFilterFilterEvent, _IOHIDServiceFilterGetMatchScore, @@ -350,7 +361,8 @@ exports: _IOHIDServiceFilterSetEventCallback, _IOHIDServiceFilterSetOutputEvent, _IOHIDServiceFilterSetPropertyForClient, _IOHIDServiceFilterUnschedule, _IOHIDServiceGetProperty, _IOHIDServiceGetRegistryID, _IOHIDServiceGetService, - _IOHIDServiceGetTypeID, _IOHIDServiceMatchPropertyTable, _IOHIDServiceSetElementValue, + _IOHIDServiceGetTypeID, _IOHIDServiceMatchPropertyTable, _IOHIDServiceRegister, + _IOHIDServiceRequestTerminate, _IOHIDServiceSetElementValue, _IOHIDServiceSetOutputEvent, _IOHIDServiceSetProperty, _IOHIDSessionAddService, _IOHIDSessionClose, _IOHIDSessionCopyEvent, _IOHIDSessionCreate, _IOHIDSessionFilterClose, _IOHIDSessionFilterCopyEvent, _IOHIDSessionFilterCreate, @@ -360,14 +372,15 @@ exports: _IOHIDSessionFilterGetTypeID, _IOHIDSessionFilterOpen, _IOHIDSessionFilterRegisterService, _IOHIDSessionFilterScheduleWithDispatchQueue, _IOHIDSessionFilterSetPropertyForClient, _IOHIDSessionFilterUnregisterService, _IOHIDSessionFilterUnscheduleFromDispatchQueue, - _IOHIDSessionGetFilters, _IOHIDSessionGetProperty, _IOHIDSessionGetTypeID, - _IOHIDSessionOpen, _IOHIDSessionRemoveService, _IOHIDSessionSetProperty, - _IOHIDSetAccelerationWithKey, _IOHIDSetCFTypeParameter, _IOHIDSetCursorBounds, - _IOHIDSetCursorEnable, _IOHIDSetEventsEnable, _IOHIDSetFixedMouseLocation, - _IOHIDSetFixedMouseLocationWithTimeStamp, _IOHIDSetHIDParameterToEventSystem, - _IOHIDSetModifierLockState, _IOHIDSetMouseAcceleration, _IOHIDSetMouseButtonMode, - _IOHIDSetMouseLocation, _IOHIDSetOnScreenCursorBounds, _IOHIDSetParameter, - _IOHIDSetScrollAcceleration, _IOHIDSetStateForSelector, _IOHIDSetVirtualDisplayBounds, + _IOHIDSessionGetEventSystem, _IOHIDSessionGetFilters, _IOHIDSessionGetProperty, + _IOHIDSessionGetTypeID, _IOHIDSessionOpen, _IOHIDSessionRemoveService, + _IOHIDSessionSetProperty, _IOHIDSetAccelerationWithKey, _IOHIDSetCFTypeParameter, + _IOHIDSetCursorBounds, _IOHIDSetCursorEnable, _IOHIDSetEventsEnable, + _IOHIDSetFixedMouseLocation, _IOHIDSetFixedMouseLocationWithTimeStamp, + _IOHIDSetHIDParameterToEventSystem, _IOHIDSetModifierLockState, + _IOHIDSetMouseAcceleration, _IOHIDSetMouseButtonMode, _IOHIDSetMouseLocation, + _IOHIDSetOnScreenCursorBounds, _IOHIDSetParameter, _IOHIDSetScrollAcceleration, + _IOHIDSetStateForSelector, _IOHIDSetVirtualDisplayBounds, _IOHIDTransactionAddElement, _IOHIDTransactionClear, _IOHIDTransactionCommit, _IOHIDTransactionCommitWithCallback, _IOHIDTransactionContainsElement, _IOHIDTransactionCreate, _IOHIDTransactionGetDevice, _IOHIDTransactionGetDirection, @@ -464,34 +477,35 @@ exports: _IOPMSetAssertionActivityAggregate, _IOPMSetAssertionActivityLog, _IOPMSetAssertionExceptionLimits, _IOPMSetBTWakeInterval, _IOPMSetDWLingerInterval, _IOPMSetDebugFlags, _IOPMSetDesktopMode, - _IOPMSetDesktopModeWithOptions, _IOPMSetPMPreference, _IOPMSetPMPreferences, - _IOPMSetReservePowerMode, _IOPMSetSleepServicesWakeTimeCap, - _IOPMSetSystemAssertionTimeout, _IOPMSetSystemPowerSetting, - _IOPMSetUPSShutdownLevels, _IOPMSetUserActivityIdleTimeout, + _IOPMSetDesktopModeWithOptions, _IOPMSetEnergyModePreference, + _IOPMSetPMPreference, _IOPMSetPMPreferences, _IOPMSetReservePowerMode, + _IOPMSetSleepServicesWakeTimeCap, _IOPMSetSystemAssertionTimeout, + _IOPMSetSystemPowerSetting, _IOPMSetUPSShutdownLevels, _IOPMSetUserActivityIdleTimeout, _IOPMSetValueInt, _IOPMSkylightCheckIn, _IOPMSkylightCheckInWithCapability, _IOPMSleepEnabled, _IOPMSleepSystem, _IOPMSleepSystemWithOptions, _IOPMSleepWakeCopyUUID, _IOPMSleepWakeSetUUID, _IOPMUnregisterExceptionNotification, _IOPMUnregisterNotification, _IOPMUnregisterPrefsChangeNotification, - _IOPMUpdateDominoState, _IOPMUserIsActive, _IOPMUsingDefaultPreferences, - _IOPMWriteToPrefs, _IOPSAccCreateAttachNotification, _IOPSAccCreateLimitedPowerNotification, - _IOPSAccNotificationCreateRunLoopSource, _IOPSCopyBatteryLevelLimits, - _IOPSCopyExternalPowerAdapterDetails, _IOPSCopyInternalBatteriesArray, - _IOPSCopyPowerSourcesByType, _IOPSCopyPowerSourcesByTypePrecise, - _IOPSCopyPowerSourcesInfo, _IOPSCopyPowerSourcesInfoPrecise, - _IOPSCopyPowerSourcesList, _IOPSCopyUPSArray, _IOPSCreateLimitedPowerNotification, - _IOPSCreatePowerSource, _IOPSDrawingUnlimitedPower, _IOPSGetActiveBattery, - _IOPSGetActiveUPS, _IOPSGetBatteryHealthState, _IOPSGetBatteryWarningLevel, - _IOPSGetPercentRemaining, _IOPSGetPowerSourceDescription, + _IOPMUpdateDominoState, _IOPMUpdateOnenessState, _IOPMUserIsActive, + _IOPMUsingDefaultPreferences, _IOPMWriteToPrefs, _IOPSAccCreateAttachNotification, + _IOPSAccCreateLimitedPowerNotification, _IOPSAccNotificationCreateRunLoopSource, + _IOPSCopyBatteryLevelLimits, _IOPSCopyExternalPowerAdapterDetails, + _IOPSCopyInternalBatteriesArray, _IOPSCopyPowerSourcesByType, + _IOPSCopyPowerSourcesByTypePrecise, _IOPSCopyPowerSourcesInfo, + _IOPSCopyPowerSourcesInfoPrecise, _IOPSCopyPowerSourcesList, + _IOPSCopyUPSArray, _IOPSCreateLimitedPowerNotification, _IOPSCreatePowerSource, + _IOPSDrawingUnlimitedPower, _IOPSGaugingMitigationGetState, + _IOPSGetActiveBattery, _IOPSGetActiveUPS, _IOPSGetBatteryHealthState, + _IOPSGetBatteryWarningLevel, _IOPSGetPercentRemaining, _IOPSGetPowerSourceDescription, _IOPSGetProvidingPowerSourceType, _IOPSGetSupportedPowerSources, - _IOPSGetTimeRemainingEstimate, _IOPSLimitBatteryLevel, _IOPSLimitBatteryLevelCancel, - _IOPSLimitBatteryLevelRegister, _IOPSNotificationCreateRunLoopSource, - _IOPSPowerSourceSupported, _IOPSReleasePowerSource, _IOPSRequestBatteryUpdate, - _IOPSSetBatteryDateOfFirstUse, _IOPSSetPowerSourceDetails, - _IOPlatformCopyFeatureActive, _IOPlatformCopyFeatureDefault, - _IOPlatformGetDeviceColor, _IORegisterApp, _IORegisterClient, - _IORegisterForSystemPower, _IORegistryCreateEnumerator, _IORegistryCreateIterator, - _IORegistryDisposeEnumerator, _IORegistryEntryCopyFromPath, - _IORegistryEntryCopyPath, _IORegistryEntryCreateCFProperties, + _IOPSGetTimeRemainingEstimate, _IOPSGetYearAndWeekOfManufactureFromBatterySerial, + _IOPSLimitBatteryLevel, _IOPSLimitBatteryLevelCancel, _IOPSLimitBatteryLevelRegister, + _IOPSNotificationCreateRunLoopSource, _IOPSPowerSourceSupported, + _IOPSReleasePowerSource, _IOPSRequestBatteryUpdate, _IOPSSetBatteryDateOfFirstUse, + _IOPSSetPowerSourceDetails, _IOPlatformCopyFeatureActive, + _IOPlatformCopyFeatureDefault, _IOPlatformGetDeviceColor, + _IORegisterApp, _IORegisterClient, _IORegisterForSystemPower, + _IORegistryCreateEnumerator, _IORegistryCreateIterator, _IORegistryDisposeEnumerator, + _IORegistryEntryCopyFromPath, _IORegistryEntryCopyPath, _IORegistryEntryCreateCFProperties, _IORegistryEntryCreateCFProperty, _IORegistryEntryCreateIterator, _IORegistryEntryFromPath, _IORegistryEntryGetChildEntry, _IORegistryEntryGetChildIterator, _IORegistryEntryGetLocationInPlane, _IORegistryEntryGetName, @@ -590,13 +604,14 @@ exports: __IOHIDElementGetFlags, __IOHIDElementGetLength, __IOHIDElementGetValue, __IOHIDElementReleasePrivate, __IOHIDElementSetDevice, __IOHIDElementSetDeviceInterface, __IOHIDElementSetValue, __IOHIDEventCopyAttachment, __IOHIDEventCreate, - __IOHIDEventEqual, __IOHIDEventGetContext, __IOHIDEventQueueSerializeState, - __IOHIDEventRemoveAttachment, __IOHIDEventSetAttachment, __IOHIDEventSetContext, - __IOHIDEventSystemAddConnection, __IOHIDEventSystemAddService, - __IOHIDEventSystemAddServiceForConnection, __IOHIDEventSystemClientCopyEventForService, - __IOHIDEventSystemClientCopyMatchingEventForService, __IOHIDEventSystemClientCopyPropertiesForService, - __IOHIDEventSystemClientCopyPropertyForService, __IOHIDEventSystemClientDispatchEventFilter, - __IOHIDEventSystemClientDispatchPropertiesChanged, __IOHIDEventSystemClientRegisterClientRecordsChangedBlock, + __IOHIDEventDebugInfo, __IOHIDEventEqual, __IOHIDEventGetContext, + __IOHIDEventQueueSerializeState, __IOHIDEventRemoveAttachment, + __IOHIDEventSetAttachment, __IOHIDEventSetContext, __IOHIDEventSystemAddConnection, + __IOHIDEventSystemAddService, __IOHIDEventSystemAddServiceForConnection, + __IOHIDEventSystemClientCopyEventForService, __IOHIDEventSystemClientCopyMatchingEventForService, + __IOHIDEventSystemClientCopyPropertiesForService, __IOHIDEventSystemClientCopyPropertyForService, + __IOHIDEventSystemClientDispatchEventFilter, __IOHIDEventSystemClientDispatchPropertiesChanged, + __IOHIDEventSystemClientRegisterClientRecordsChangedBlock, __IOHIDEventSystemClientRegisterClientRecordsChangedCallback, __IOHIDEventSystemClientRegisterServiceRecordsChangedBlock, __IOHIDEventSystemClientRegisterServiceRecordsChangedCallback, @@ -642,14 +657,15 @@ exports: __IOHIDEventSystemRemoveServicesForConnection, __IOHIDEventSystemSetPropertyForConnection, __IOHIDEventSystemUnregisterEventFilter, __IOHIDEventSystemUnregisterRecordClientChanged, __IOHIDEventSystemUnregisterRecordServiceChanged, __IOHIDGetMonotonicTime, - __IOHIDGetTimestampDelta, __IOHIDIsSerializable, __IOHIDLoadBundles, - __IOHIDLoadConnectionPluginBundles, __IOHIDLoadServiceFilterBundles, - __IOHIDLoadServicePluginBundles, __IOHIDLoadSessionFilterBundles, - __IOHIDLog, __IOHIDLogCategory, __IOHIDObjectCreateInstance, - __IOHIDObjectExtRetainCount, __IOHIDObjectIntRetainCount, - __IOHIDObjectInternalRelease, __IOHIDObjectInternalReleaseCallback, - __IOHIDObjectInternalRetain, __IOHIDObjectInternalRetainCallback, - __IOHIDObjectRetainCount, __IOHIDPlugInInstanceCacheAdd, __IOHIDPlugInInstanceCacheClear, + __IOHIDGetTimestampDelta, __IOHIDIsAlphaNumericKey, __IOHIDIsRestrictedRemappingProperty, + __IOHIDIsSerializable, __IOHIDLoadBundles, __IOHIDLoadConnectionPluginBundles, + __IOHIDLoadServiceFilterBundles, __IOHIDLoadServicePluginBundles, + __IOHIDLoadSessionFilterBundles, __IOHIDLog, __IOHIDLogCategory, + __IOHIDObjectCreateInstance, __IOHIDObjectExtRetainCount, + __IOHIDObjectIntRetainCount, __IOHIDObjectInternalRelease, + __IOHIDObjectInternalReleaseCallback, __IOHIDObjectInternalRetain, + __IOHIDObjectInternalRetainCallback, __IOHIDObjectRetainCount, + __IOHIDPlugInInstanceCacheAdd, __IOHIDPlugInInstanceCacheClear, __IOHIDPlugInInstanceCacheIsEmpty, __IOHIDQueueCopyElements, __IOHIDSerialize, __IOHIDServiceAddConnection, __IOHIDServiceClientCacheProperties, __IOHIDServiceClientCopyUsageProp, __IOHIDServiceClientCreate, @@ -707,7 +723,9 @@ exports: ___IOHIDApplyPropertyToDeviceSet, ___IOHIDDeviceGetRootKey, ___IOHIDDeviceGetUUIDKey, ___IOHIDDeviceGetUUIDString, ___IOHIDDeviceLoadProperties, ___IOHIDDeviceSaveProperties, ___IOHIDElementGetRootKey, ___IOHIDElementLoadProperties, - ___IOHIDElementSaveProperties, ___IOHIDEventRegister, ___IOHIDEventSystemClientFinalizeStateHandler, + ___IOHIDElementSaveProperties, ___IOHIDEventDataAppendFromLegacyEvent, + ___IOHIDEventHasLegacyEventData, ___IOHIDEventPopulateCurrentEventData, + ___IOHIDEventRegister, ___IOHIDEventSystemClientFinalizeStateHandler, ___IOHIDEventSystemClientInitReplyPort, ___IOHIDEventSystemClientRefreshServiceCallback, ___IOHIDEventSystemClientServiceRefreshRemovedServiceCallback, ___IOHIDEventSystemClientServiceReplaceCallback, ___IOHIDEventSystemConnectionActivityNotification, @@ -723,10 +741,11 @@ exports: ___IOHIDServiceCreateAndCopyConnectionCache, ___IOHIDServiceCreateVirtualNoInit, ___IOHIDServiceHandleCancelTimerTimeout, ___IOHIDServiceOpenedByEventSystem, ___IOHIDServicePassiveMatchToFilterPlugin, ___IOHIDServicePickBatchInterval, - ___IOHIDSessionActivityNotificationRelease, ___IOHIDSystemEnumerationQueueDidExecute, - ___IOHIDSystemEnumerationQueueWillExecute, ___IOHIDTransactionRegister, - ___IOHIDUserDeviceFinalizeStateHandler, ___IOHIDUserDeviceSerializeState, - ___IOHIDUserDeviceStateHandler, ___IOHIDValueRegister, ___KextManagerSendLoadKextRequest, + ___IOHIDServiceRequestTerminaitonNotificationRelease, ___IOHIDSessionActivityNotificationRelease, + ___IOHIDSystemEnumerationQueueDidExecute, ___IOHIDSystemEnumerationQueueWillExecute, + ___IOHIDTransactionRegister, ___IOHIDUserDeviceFinalizeStateHandler, + ___IOHIDUserDeviceSerializeState, ___IOHIDUserDeviceStateHandler, + ___IOHIDValueRegister, ___KextManagerSendLoadKextRequest, ___NotificationApplier, ___OSKextBundleIDCompare, ___OSKextCacheNeedsUpdate, ___OSKextCheckURL, ___OSKextClearHasAllDependenciesOnKext, ___OSKextCompareIdentifiers, ___OSKextCopyExecutableRelativePath, @@ -844,6 +863,7 @@ exports: _kIOHIDServiceCapsLockLEDKey_Inhibit, _kIOHIDServiceCapsLockLEDKey_Off, _kIOHIDServiceCapsLockLEDKey_On, _kIOHIDServiceCapsLockLEDOnKey, _kIOHIDServiceHiddenKey, _kIOHIDServiceInterruptWorkloop, + _kIOHIDServiceRequestTerminateKey, _kIOHIDServiceUnregisteredKey, _kIOMainPortDefault, _kIOMasterPortDefault, _kIOUserEthernetInterfaceMergeProperties, _kIOUserEthernetInterfaceRole, _kOSKextDependencyCircularReference, _kOSKextDependencyCompatibleVersionUndeclared, _kOSKextDependencyInauthentic, @@ -900,7 +920,7 @@ exports: _roundPageCrossSafeFixedWidth, _sendAsyncAssertionMsg, _sendAsyncReleaseMsg, _sendUserActivityMsg, _setAsyncAssertionProperties, _setCrossLinkPageSize, _setDispatchQueue, _setPreferencesForSrc, _setupLogging, _shimmingEnabled, - _showPList_new, _smcSupportsSilentRunning ] + _showPList_new, _smcSupportsHPM, _smcSupportsSilentRunning ] objc-classes: [ HIDConnection, HIDDevice, HIDElement, HIDEvent, HIDEventService, HIDServiceClient, HIDSession ] objc-ivars: [ HIDConnection._connection, HIDDevice._device, HIDElement._element, @@ -949,21 +969,21 @@ exports: _IODPCompareLinkTrainingData, _IODPConstrainDriveSettings, _IODPConstrainedDriveSettings, _IODPDeviceTypeString, _IODPDriveSettingsAreValid, _IODPDriveSettingsEqual, _IODPEventLogEventTypeString, _IODPInfoFrameSDP, - _IODPLinkBandwidth, _IODPLinkBitRateForLinkSymbolClock, _IODPLinkRateEnum, - _IODPLinkRateIsStandard, _IODPLinkRateRequiredForVideoBandwidth, - _IODPLinkRateScalar, _IODPLinkSymbolClockForLinkBitRate, _IODPLinkSymbolRate, - _IODPQualityPatternName, _IODPStreamClockHz, _IODPTrainingPatternLength, - _IODPTrainingPatternName, _IODPUnifiedDriveSettings, _IODPVideoBandwidth, - _IODPVideoLinkMainStreamAttributeData, _IODPVideoLinkVideoStreamConfigurationSDP, - _IOUSBDevicDeviceDescriptionGetTypeID, _IOUSBDeviceControllerCreate, - _IOUSBDeviceControllerCreateDefaultDescription, _IOUSBDeviceControllerCreateWithService, - _IOUSBDeviceControllerForceOffBus, _IOUSBDeviceControllerGetService, - _IOUSBDeviceControllerGetTypeID, _IOUSBDeviceControllerGoOffAndOnBus, - _IOUSBDeviceControllerRegisterArrivalCallback, _IOUSBDeviceControllerRemoveArrivalCallback, - _IOUSBDeviceControllerSendCommand, _IOUSBDeviceControllerSetDescription, - _IOUSBDeviceControllerSetPreferredConfiguration, _IOUSBDeviceDataCreate, - _IOUSBDeviceDataGetBytePtr, _IOUSBDeviceDataGetCapacity, _IOUSBDeviceDataGetMapToken, - _IOUSBDeviceDataGetTypeID, _IOUSBDeviceDescriptionAppendConfiguration, + _IODPLinkBandwidth, _IODPLinkBitRateForLinkSymbolClock, _IODPLinkBitRateIsUHBR, + _IODPLinkRateEnum, _IODPLinkRateIsStandard, _IODPLinkRateIsUHBR, + _IODPLinkRateRequiredForVideoBandwidth, _IODPLinkRateScalar, + _IODPLinkSymbolClockForLinkBitRate, _IODPLinkSymbolRate, _IODPQualityPatternName, + _IODPStreamClockHz, _IODPTrainingPatternLength, _IODPTrainingPatternName, + _IODPUnifiedDriveSettings, _IODPVideoBandwidth, _IODPVideoLinkMainStreamAttributeData, + _IODPVideoLinkVideoStreamConfigurationSDP, _IOUSBDevicDeviceDescriptionGetTypeID, + _IOUSBDeviceControllerCreate, _IOUSBDeviceControllerCreateDefaultDescription, + _IOUSBDeviceControllerCreateWithService, _IOUSBDeviceControllerForceOffBus, + _IOUSBDeviceControllerGetService, _IOUSBDeviceControllerGetTypeID, + _IOUSBDeviceControllerGoOffAndOnBus, _IOUSBDeviceControllerRegisterArrivalCallback, + _IOUSBDeviceControllerRemoveArrivalCallback, _IOUSBDeviceControllerSendCommand, + _IOUSBDeviceControllerSetDescription, _IOUSBDeviceControllerSetPreferredConfiguration, + _IOUSBDeviceDataCreate, _IOUSBDeviceDataGetBytePtr, _IOUSBDeviceDataGetCapacity, + _IOUSBDeviceDataGetMapToken, _IOUSBDeviceDataGetTypeID, _IOUSBDeviceDescriptionAppendConfiguration, _IOUSBDeviceDescriptionAppendConfigurationWithInterface, _IOUSBDeviceDescriptionAppendConfigurationWithInterfaces, _IOUSBDeviceDescriptionAppendConfigurationWithoutAttributes, _IOUSBDeviceDescriptionAppendInterfaceToConfiguration, _IOUSBDeviceDescriptionAppendInterfacesToConfiguration, diff --git a/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceBase.h b/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceBase.h index a9444a68..8c8775d3 100644 --- a/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceBase.h +++ b/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceBase.h @@ -33,6 +33,7 @@ #endif #include +#include #include #if TARGET_OS_OSX #include diff --git a/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceObjC.h b/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceObjC.h index 6798714a..cd27f333 100644 --- a/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceObjC.h +++ b/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceObjC.h @@ -151,6 +151,7 @@ API_AVAILABLE(macos(10.12), ios(11.0), watchos(4.0), tvos(11.0)) @property (readonly) NSInteger bytesPerElement; @property (readonly) NSInteger elementWidth; @property (readonly) NSInteger elementHeight; +@property (readonly) uint32_t surfaceID API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); /* This will return the current seed value of the buffer and is a cheap property to read to see if the contents of the buffer have changed since the last lock/unlock. */ diff --git a/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceRef.h b/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceRef.h index a1fdf2bb..fa93109c 100644 --- a/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceRef.h +++ b/Frameworks/IOSurface.framework/Versions/A/Headers/IOSurfaceRef.h @@ -307,6 +307,10 @@ extern const CFStringRef kIOSurfaceColorSpace API_AVAILABLE(macos(10.6), ios(11. /* CFData representation of the ICC Profile, generally via CGColorSpaceCopyICCData */ extern const CFStringRef kIOSurfaceICCProfile API_AVAILABLE(macos(10.6), ios(11.0), watchos(4.0), tvos(11.0)); +/* CFNumber representation of the content headroom, which is defined as the ratio of nominal peak luminance + ("peak white") to nominal diffuse luminance ("reference white" or "diffuse white"). */ +extern const CFStringRef kIOSurfaceContentHeadroom API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + /* These calls let you attach CF property list types to a IOSurface buffer. These calls are expensive (they essentially must serialize the data into the kernel) and thus should be avoided whenever possible. Note: These functions can not be used to change the underlying surface properties. */ @@ -444,6 +448,24 @@ Boolean IOSurfaceAllowsPixelSizeCasting(IOSurfaceRef buffer) kern_return_t IOSurfaceSetPurgeable(IOSurfaceRef buffer, uint32_t newState, uint32_t * __nullable oldState) API_AVAILABLE(macos(10.12), ios(11.0), watchos(4.0), tvos(11.0)); +// Memory ledger tags. +typedef CF_ENUM(int, IOSurfaceMemoryLedgerTags) { + kIOSurfaceMemoryLedgerTagDefault = 0x00000001, + kIOSurfaceMemoryLedgerTagNetwork = 0x00000002, + kIOSurfaceMemoryLedgerTagMedia = 0x00000003, + kIOSurfaceMemoryLedgerTagGraphics = 0x00000004, + kIOSurfaceMemoryLedgerTagNeural = 0x00000005, +}; + +// Memory ledger flags. +typedef CF_OPTIONS(uint32_t, IOSurfaceMemoryLedgerFlags) { + kIOSurfaceMemoryLedgerFlagNoFootprint = (1 << 0), +}; + + +kern_return_t IOSurfaceSetOwnershipIdentity(IOSurfaceRef buffer, task_id_token_t task_id_token, int newLedgerTag, uint32_t newLedgerOptions) API_AVAILABLE(ios(17.4), watchos(10.4), tvos(17.4), macos(14.4)); + + __END_DECLS CF_ASSUME_NONNULL_END diff --git a/Frameworks/IOSurface.framework/Versions/A/IOSurface.tbd b/Frameworks/IOSurface.framework/Versions/A/IOSurface.tbd index 9785be26..a91cd4b3 100644 --- a/Frameworks/IOSurface.framework/Versions/A/IOSurface.tbd +++ b/Frameworks/IOSurface.framework/Versions/A/IOSurface.tbd @@ -12,8 +12,9 @@ exports: _IOSurfaceCreate, _IOSurfaceCreateMachPort, _IOSurfaceCreateMachPortWithOptions, _IOSurfaceCreateWiringAssertion, _IOSurfaceCreateXPCObject, _IOSurfaceDecrementUseCount, _IOSurfaceDecrementUseCountForCategory, - _IOSurfaceFlushProcessorCaches, _IOSurfaceGetAddressFormatOfPlane, - _IOSurfaceGetAllocSize, _IOSurfaceGetBaseAddress, _IOSurfaceGetBaseAddressOfCompressedTileDataRegionOfPlane, + _IOSurfaceDisallowForever, _IOSurfaceFlushProcessorCaches, + _IOSurfaceGetAddressFormatOfPlane, _IOSurfaceGetAllocSize, + _IOSurfaceGetBaseAddress, _IOSurfaceGetBaseAddressOfCompressedTileDataRegionOfPlane, _IOSurfaceGetBaseAddressOfCompressedTileDataRegionOfSliceAndPlane, _IOSurfaceGetBaseAddressOfCompressedTileHeaderRegionOfPlane, _IOSurfaceGetBaseAddressOfCompressedTileHeaderRegionOfSliceAndPlane, @@ -44,13 +45,14 @@ exports: _IOSurfaceGetTraceID, _IOSurfaceGetTypeID, _IOSurfaceGetTypeOfComponentOfPlane, _IOSurfaceGetUseCount, _IOSurfaceGetVerticalPixelOffsetWithinCompressedTileArrayOfPlane, _IOSurfaceGetWidth, _IOSurfaceGetWidthInCompressedTilesOfPlane, - _IOSurfaceGetWidthOfPlane, _IOSurfaceGetYCbCrMatrix, _IOSurfaceIncrementUseCount, + _IOSurfaceGetWidthOfPlane, _IOSurfaceGetWiringAssertionCount, + _IOSurfaceGetYCbCrMatrix, _IOSurfaceHasDataProperty, _IOSurfaceIncrementUseCount, _IOSurfaceIncrementUseCountForCategory, _IOSurfaceInitDetachModeCode, _IOSurfaceIsDisplayable, _IOSurfaceIsInUse, _IOSurfaceIsInUseForAnyOtherCategory, - _IOSurfaceIsInUseForCategory, _IOSurfaceIsSysMemOnly, _IOSurfaceIsTiled, - _IOSurfaceLock, _IOSurfaceLockPlane, _IOSurfaceLog, _IOSurfaceLookup, - _IOSurfaceLookupFromMachPort, _IOSurfaceLookupFromXPCObject, - _IOSurfaceNeedsBindAccel, _IOSurfaceNeedsBindAccelOnPlane, + _IOSurfaceIsInUseForCategory, _IOSurfaceIsMetalSharedTexture, + _IOSurfaceIsSysMemOnly, _IOSurfaceIsTiled, _IOSurfaceLock, + _IOSurfaceLockPlane, _IOSurfaceLog, _IOSurfaceLookup, _IOSurfaceLookupFromMachPort, + _IOSurfaceLookupFromXPCObject, _IOSurfaceNeedsBindAccel, _IOSurfaceNeedsBindAccelOnPlane, _IOSurfaceNotifierCreate, _IOSurfaceNotifierGetTypeID, _IOSurfaceNotifierInvalidate, _IOSurfaceNotifierSetDispatchQueue, _IOSurfacePrefetchPages, _IOSurfacePropertyAllocSizeKey, _IOSurfacePropertyKeyAllocSize, @@ -66,9 +68,10 @@ exports: _IOSurfacePropertyKeyPlaneWidth, _IOSurfacePropertyKeyProtectionOptions, _IOSurfacePropertyKeyWidth, _IOSurfaceRemoteServerOptionDebugLogBlock, _IOSurfaceRemoteServerOptionDebugLogQueue, _IOSurfaceRemoveAllValues, - _IOSurfaceRemoveValue, _IOSurfaceSetBulkAttachments, _IOSurfaceSetBulkAttachments2, - _IOSurfaceSetCompressedTileDataRegionMemoryUsedOfPlane, _IOSurfaceSetDataProperty, - _IOSurfaceSetDetachModeCode, _IOSurfaceSetIndexedTimestamp, + _IOSurfaceRemoveCoreVideoBridgedValues, _IOSurfaceRemoveValue, + _IOSurfaceSetBulkAttachments, _IOSurfaceSetBulkAttachments2, + _IOSurfaceSetCompressedTileDataRegionMemoryUsedOfPlane, _IOSurfaceSetCoreVideoBridgedKeys, + _IOSurfaceSetDataProperty, _IOSurfaceSetDetachModeCode, _IOSurfaceSetIndexedTimestamp, _IOSurfaceSetOwnership, _IOSurfaceSetOwnershipIdentity, _IOSurfaceSetPurgeable, _IOSurfaceSetTiled, _IOSurfaceSetTimestamp, _IOSurfaceSetValue, _IOSurfaceSetValues, _IOSurfaceSetYCbCrMatrix, _IOSurfaceSharedEventAddEventListener, @@ -79,7 +82,9 @@ exports: _IOSurfaceUnlock, _IOSurfaceUnlockPlane, _IOSurfaceWiringAssertionGetTypeID, _IOSurfaceWrapClientImage, _IOSurfaceWrapClientMemory, __iosCreateDictionaryAddingMissingProperties, _kIOFenceAllowTearing, _kIOSurfaceAddressFormat, _kIOSurfaceAllocSize, - _kIOSurfaceAllocateFromSuperbuffer, _kIOSurfaceBufferTileFormat, + _kIOSurfaceAllocateFromSuperbuffer, _kIOSurfaceAlphaChannelIsOpaque, + _kIOSurfaceAlphaChannelMode, _kIOSurfaceAlphaChannelMode_PremultipliedAlpha, + _kIOSurfaceAlphaChannelMode_StraightAlpha, _kIOSurfaceBufferTileFormat, _kIOSurfaceBufferTileMode, _kIOSurfaceBytesPerElement, _kIOSurfaceBytesPerRow, _kIOSurfaceCacheMode, _kIOSurfaceChromaLocationBottomField, _kIOSurfaceChromaLocationTopField, _kIOSurfaceChromaLocation_Bottom, @@ -96,7 +101,8 @@ exports: _kIOSurfaceColorPrimaries_EBU_3213, _kIOSurfaceColorPrimaries_ITU_R_2020, _kIOSurfaceColorPrimaries_ITU_R_709_2, _kIOSurfaceColorPrimaries_JEDEC_P22, _kIOSurfaceColorPrimaries_P3_D65, _kIOSurfaceColorPrimaries_SMPTE_C, - _kIOSurfaceColorSpace, _kIOSurfaceCoreSurfaceLegacy, _kIOSurfaceCreationProperties, + _kIOSurfaceColorSpace, _kIOSurfaceColorSpaceID, _kIOSurfaceContentHeadroom, + _kIOSurfaceContentLightLevelInfo, _kIOSurfaceCreationProperties, _kIOSurfaceDecoderTimes, _kIOSurfaceDefaultAttachments, _kIOSurfaceDefaultBulkAttachments, _kIOSurfaceDisplayDitherCbThresholds, _kIOSurfaceDisplayDitherCrThresholds, _kIOSurfaceDisplayDitherThresholds, _kIOSurfaceDisplayDitherYThresholds, @@ -105,18 +111,19 @@ exports: _kIOSurfaceEncoderTimes, _kIOSurfaceFieldCount, _kIOSurfaceFieldDetail, _kIOSurfaceFieldDetail_SpatialFirstLineEarly, _kIOSurfaceFieldDetail_SpatialFirstLineLate, _kIOSurfaceFieldDetail_TemporalBottomFirst, _kIOSurfaceFieldDetail_TemporalTopFirst, - _kIOSurfaceGPUTimes, _kIOSurfaceGammaLevel, _kIOSurfaceHDRImageStatisticsInfoFiltered, - _kIOSurfaceHDRImageStatisticsInfoRaw, _kIOSurfaceHDRImageStatisticsInfoTransferFunction, - _kIOSurfaceHDRImageStatisticsInfo_Average, _kIOSurfaceHDRImageStatisticsInfo_Maximum, - _kIOSurfaceHDRImageStatisticsInfo_Minimum, _kIOSurfaceHeight, - _kIOSurfaceICCProfile, _kIOSurfaceIsDisplayable, _kIOSurfaceIsGlobal, - _kIOSurfaceIsPrivate, _kIOSurfaceMapCacheAttribute, _kIOSurfaceMemoryPoolCacheModeSwitchEnabled, - _kIOSurfaceMemoryPoolEntitlement, _kIOSurfaceMemoryPoolSize, - _kIOSurfaceMemoryPoolZeroFillEnabled, _kIOSurfaceMemoryRegion, - _kIOSurfaceName, _kIOSurfaceNonPurgeable, _kIOSurfaceOffset, - _kIOSurfacePixelAspectRatio, _kIOSurfacePixelAspectRatioHorizontalSpacing, - _kIOSurfacePixelAspectRatioVerticalSpacing, _kIOSurfacePixelCastingAllowed, - _kIOSurfacePixelFormat, _kIOSurfacePixelSizeCastingAllowed, + _kIOSurfaceGPUGlobalRO, _kIOSurfaceGPUTimes, _kIOSurfaceGammaLevel, + _kIOSurfaceHDRImageStatisticsInfoFiltered, _kIOSurfaceHDRImageStatisticsInfoRaw, + _kIOSurfaceHDRImageStatisticsInfoTransferFunction, _kIOSurfaceHDRImageStatisticsInfo_Average, + _kIOSurfaceHDRImageStatisticsInfo_Maximum, _kIOSurfaceHDRImageStatisticsInfo_Minimum, + _kIOSurfaceHeight, _kIOSurfaceHostOnly, _kIOSurfaceICCProfile, + _kIOSurfaceIsDisplayable, _kIOSurfaceIsGlobal, _kIOSurfaceIsPrivate, + _kIOSurfaceMapCacheAttribute, _kIOSurfaceMasteringDisplayColorVolume, + _kIOSurfaceMemoryPoolCacheModeSwitchEnabled, _kIOSurfaceMemoryPoolEntitlement, + _kIOSurfaceMemoryPoolSize, _kIOSurfaceMemoryPoolZeroFillEnabled, + _kIOSurfaceMemoryRegion, _kIOSurfaceMetalSharedTexture, _kIOSurfaceName, + _kIOSurfaceNonPurgeable, _kIOSurfaceOffset, _kIOSurfacePixelAspectRatio, + _kIOSurfacePixelAspectRatioHorizontalSpacing, _kIOSurfacePixelAspectRatioVerticalSpacing, + _kIOSurfacePixelCastingAllowed, _kIOSurfacePixelFormat, _kIOSurfacePixelSizeCastingAllowed, _kIOSurfacePlaneBase, _kIOSurfacePlaneBitsPerElement, _kIOSurfacePlaneBytesPerCompressedTileHeader, _kIOSurfacePlaneBytesPerElement, _kIOSurfacePlaneBytesPerRow, _kIOSurfacePlaneBytesPerRowOfCompressedTileHeaderGroups, _kIOSurfacePlaneBytesPerRowOfTileData, @@ -141,19 +148,20 @@ exports: _kIOSurfacePrefixForUnrecognizedYCbCrMatrixCodePoint, _kIOSurfaceProhibitUseCount, _kIOSurfaceProtectionOptions, _kIOSurfacePurgeWhenNotInUse, _kIOSurfaceRemoteServiceName, _kIOSurfaceResetDefaultAttachmentsWhenNotInUse, - _kIOSurfaceScalerTimes, _kIOSurfaceSliceCount, _kIOSurfaceSubsampling, - _kIOSurfaceSuperbuffer, _kIOSurfaceSysMemOnly, _kIOSurfaceTimingInfo, - _kIOSurfaceTouchEventTimes, _kIOSurfaceTransferFunction, _kIOSurfaceTransferFunction_ARIB_STD_B67_HLG, - _kIOSurfaceTransferFunction_ITU_R_2020, _kIOSurfaceTransferFunction_ITU_R_2100_HLG, - _kIOSurfaceTransferFunction_ITU_R_709_2, _kIOSurfaceTransferFunction_Linear, - _kIOSurfaceTransferFunction_SMPTE_240M_1995, _kIOSurfaceTransferFunction_SMPTE_ST_2084_PQ, - _kIOSurfaceTransferFunction_SMPTE_ST_428_1, _kIOSurfaceTransferFunction_UseGamma, - _kIOSurfaceTransferFunction_aYCC, _kIOSurfaceTransferFunction_sRGB, - _kIOSurfaceType, _kIOSurfaceUseReserve, _kIOSurfaceWidth, + _kIOSurfaceScalerTimes, _kIOSurfaceSceneIllumination, _kIOSurfaceSliceCount, + _kIOSurfaceSubsampling, _kIOSurfaceSuperbuffer, _kIOSurfaceSysMemOnly, + _kIOSurfaceTimingInfo, _kIOSurfaceTouchEventTimes, _kIOSurfaceTransferFunction, + _kIOSurfaceTransferFunction_ARIB_STD_B67_HLG, _kIOSurfaceTransferFunction_ITU_R_2020, + _kIOSurfaceTransferFunction_ITU_R_2100_HLG, _kIOSurfaceTransferFunction_ITU_R_709_2, + _kIOSurfaceTransferFunction_Linear, _kIOSurfaceTransferFunction_SMPTE_240M_1995, + _kIOSurfaceTransferFunction_SMPTE_ST_2084_PQ, _kIOSurfaceTransferFunction_SMPTE_ST_428_1, + _kIOSurfaceTransferFunction_UseGamma, _kIOSurfaceTransferFunction_aYCC, + _kIOSurfaceTransferFunction_sRGB, _kIOSurfaceType, _kIOSurfaceUseReserve, + _kIOSurfaceVersatileSenselArrayPattern, _kIOSurfaceWidth, _kIOSurfaceYCbCrMatrix, _kIOSurfaceYCbCrMatrix_IPT_String, _kIOSurfaceYCbCrMatrix_ITU_R_2020_String, _kIOSurfaceYCbCrMatrix_ITU_R_2100_ICtCp_String, _kIOSurfaceYCbCrMatrix_ITU_R_601_4_String, _kIOSurfaceYCbCrMatrix_ITU_R_709_2_String, - _kIOSurfaceYCbCrMatrix_SMPTE_240M_1995_String ] + _kIOSurfaceYCbCrMatrix_Identity_String, _kIOSurfaceYCbCrMatrix_SMPTE_240M_1995_String ] objc-classes: [ IOSurface, IOSurfaceDebugDescription, IOSurfaceMemoryPool, IOSurfaceRemoteServer, IOSurfaceSharedEvent, IOSurfaceSharedEventListener, IOSurfaceWiringAssertion ] diff --git a/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageDestination.h b/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageDestination.h index 4e9c6f43..022e2f9f 100644 --- a/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageDestination.h +++ b/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageDestination.h @@ -211,6 +211,22 @@ IMAGEIO_EXTERN bool CGImageDestinationCopyImageSource(CGImageDestinationRef _iio */ IMAGEIO_EXTERN void CGImageDestinationAddAuxiliaryDataInfo(CGImageDestinationRef _iio_Nonnull idst, CFStringRef _iio_Nonnull auxiliaryImageDataType, CFDictionaryRef _iio_Nonnull auxiliaryDataInfoDictionary ) IMAGEIO_AVAILABLE_STARTING(10.13, 11.0); + +/* HDR-support */ + +IMAGEIO_EXTERN const CFStringRef kCGImageDestinationEncodeRequest IMAGEIO_AVAILABLE_STARTING(15, 18.0, 18.0, 11.0); + +IMAGEIO_EXTERN const CFStringRef kCGImageDestinationEncodeToSDR IMAGEIO_AVAILABLE_STARTING(15, 18.0, 18.0, 11.0); +IMAGEIO_EXTERN const CFStringRef kCGImageDestinationEncodeToISOHDR IMAGEIO_AVAILABLE_STARTING(15, 18.0, 18.0, 11.0); +IMAGEIO_EXTERN const CFStringRef kCGImageDestinationEncodeToISOGainmap IMAGEIO_AVAILABLE_STARTING(15, 18.0, 18.0, 11.0); + +/* kCGImageSourceEncodeRequestOptions - CFDictionaryRef to specify additional options + */ +IMAGEIO_EXTERN const CFStringRef kCGImageDestinationEncodeRequestOptions IMAGEIO_AVAILABLE_STARTING(15, 18.0, 18.0, 11.0); +IMAGEIO_EXTERN const CFStringRef kCGImageDestinationEncodeBaseIsSDR IMAGEIO_AVAILABLE_STARTING(15, 18.0, 18.0, 11.0); +IMAGEIO_EXTERN const CFStringRef kCGImageDestinationEncodeTonemapMode IMAGEIO_AVAILABLE_STARTING(15, 18.0, 18.0, 11.0); + + CF_ASSUME_NONNULL_END CF_IMPLICIT_BRIDGING_DISABLED diff --git a/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageProperties.h b/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageProperties.h index ed7733b7..b55e316e 100644 --- a/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageProperties.h +++ b/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageProperties.h @@ -139,6 +139,8 @@ IMAGEIO_EXTERN const CFStringRef kCGImagePropertyTIFFModel IMAGEIO_AVAILABLE_ST IMAGEIO_EXTERN const CFStringRef kCGImagePropertyTIFFOrientation IMAGEIO_AVAILABLE_STARTING(10.4, 4.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyTIFFXResolution IMAGEIO_AVAILABLE_STARTING(10.4, 4.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyTIFFYResolution IMAGEIO_AVAILABLE_STARTING(10.4, 4.0); +IMAGEIO_EXTERN const CFStringRef kCGImagePropertyTIFFXPosition IMAGEIO_AVAILABLE_STARTING(14.4, 17.4); +IMAGEIO_EXTERN const CFStringRef kCGImagePropertyTIFFYPosition IMAGEIO_AVAILABLE_STARTING(14.4, 17.4); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyTIFFResolutionUnit IMAGEIO_AVAILABLE_STARTING(10.4, 4.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyTIFFSoftware IMAGEIO_AVAILABLE_STARTING(10.4, 4.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyTIFFTransferFunction IMAGEIO_AVAILABLE_STARTING(10.4, 4.0); @@ -815,6 +817,7 @@ IMAGEIO_EXTERN const CFStringRef kCGImageAuxiliaryDataTypeSemanticSegmentationTe IMAGEIO_EXTERN const CFStringRef kCGImageAuxiliaryDataTypeSemanticSegmentationGlassesMatte IMAGEIO_AVAILABLE_STARTING(11.0, 14.1); IMAGEIO_EXTERN const CFStringRef kCGImageAuxiliaryDataTypeSemanticSegmentationSkyMatte IMAGEIO_AVAILABLE_STARTING(11.0, 14.1); IMAGEIO_EXTERN const CFStringRef kCGImageAuxiliaryDataTypeHDRGainMap IMAGEIO_AVAILABLE_STARTING(11.0, 14.1); +IMAGEIO_EXTERN const CFStringRef kCGImageAuxiliaryDataTypeISOGainMap IMAGEIO_AVAILABLE_STARTING(15.0, 18); /* Depth/Disparity data support for JPEG, HEIF, and DNG images: @@ -822,11 +825,12 @@ IMAGEIO_EXTERN const CFStringRef kCGImageAuxiliaryDataTypeHDRGainMap IMAGEIO_A * kCGImageAuxiliaryDataInfoData - the depth data (CFDataRef) * kCGImageAuxiliaryDataInfoDataDescription - the depth data description (CFDictionary) * kCGImageAuxiliaryDataInfoMetadata - metadata (CGImageMetadataRef) + * kCGImageAuxiliaryDataInfoColorSpace - the color space associated with the aux image (CGColorSpaceRef) */ IMAGEIO_EXTERN const CFStringRef kCGImageAuxiliaryDataInfoData IMAGEIO_AVAILABLE_STARTING(10.13, 11.0); IMAGEIO_EXTERN const CFStringRef kCGImageAuxiliaryDataInfoDataDescription IMAGEIO_AVAILABLE_STARTING(10.13, 11.0); IMAGEIO_EXTERN const CFStringRef kCGImageAuxiliaryDataInfoMetadata IMAGEIO_AVAILABLE_STARTING(10.13, 11.0); - +IMAGEIO_EXTERN const CFStringRef kCGImageAuxiliaryDataInfoColorSpace IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyImageCount IMAGEIO_AVAILABLE_STARTING(10.13, 11.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyWidth IMAGEIO_AVAILABLE_STARTING(10.13, 11.0); @@ -847,11 +851,24 @@ IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupTypeAlternate IMAGEIO_AVAI IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImagesAlternate IMAGEIO_AVAILABLE_STARTING(12.0, 15.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImageIndexLeft IMAGEIO_AVAILABLE_STARTING(12.0, 15.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImageIndexRight IMAGEIO_AVAILABLE_STARTING(12.0, 15.0); +IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImageIndexMonoscopic IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImageIsLeftImage IMAGEIO_AVAILABLE_STARTING(12.0, 15.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImageIsRightImage IMAGEIO_AVAILABLE_STARTING(12.0, 15.0); +IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImageIsMonoscopicImage IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImageIsAlternateImage IMAGEIO_AVAILABLE_STARTING(12.0, 15.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImageBaseline IMAGEIO_AVAILABLE_STARTING(13.0, 16.0); IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImageDisparityAdjustment IMAGEIO_AVAILABLE_STARTING(13.0, 16.0); +IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupImageStereoAggressors IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); + +IMAGEIO_EXTERN const CFStringRef kIIOStereoAggressors_Type IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); +IMAGEIO_EXTERN const CFStringRef kIIOStereoAggressors_SubTypeURI IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); +IMAGEIO_EXTERN const CFStringRef kIIOStereoAggressors_Severity IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); + +IMAGEIO_EXTERN const CFStringRef kCGImagePropertyGroupMonoscopicImageLocation IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); +IMAGEIO_EXTERN const CFStringRef kIIOMonoscopicImageLocation_Unspecified IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); +IMAGEIO_EXTERN const CFStringRef kIIOMonoscopicImageLocation_Left IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); +IMAGEIO_EXTERN const CFStringRef kIIOMonoscopicImageLocation_Right IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); +IMAGEIO_EXTERN const CFStringRef kIIOMonoscopicImageLocation_Center IMAGEIO_AVAILABLE_STARTING(15.0, 18.0); IMAGEIO_EXTERN const CFStringRef kIIOMetadata_CameraExtrinsicsKey IMAGEIO_AVAILABLE_STARTING(13.0, 16.0); IMAGEIO_EXTERN const CFStringRef kIIOCameraExtrinsics_CoordinateSystemID IMAGEIO_AVAILABLE_STARTING(13.0, 16.0); diff --git a/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageSource.h b/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageSource.h index 0df400d7..8c807e5b 100644 --- a/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageSource.h +++ b/Frameworks/ImageIO.framework/Versions/A/Headers/CGImageSource.h @@ -230,6 +230,7 @@ IMAGEIO_EXTERN size_t CGImageSourceGetPrimaryImageIndex(CGImageSourceRef _iio_No * - the depth data (CFDataRef) - (kCGImageAuxiliaryDataInfoData), * - the depth data description (CFDictionary) - (kCGImageAuxiliaryDataInfoDataDescription) * - metadata (CGImageMetadataRef) - (kCGImageAuxiliaryDataInfoMetadata) + * - optional color space (CGColorSpaceRef) - (kCGImageAuxiliaryDataInfoColorSpace) * CGImageSourceCopyAuxiliaryDataInfoAtIndex returns nil if the image did not contain ‘auxiliaryImageDataType’ data. */ IMAGEIO_EXTERN CFDictionaryRef _iio_Nullable CGImageSourceCopyAuxiliaryDataInfoAtIndex(CGImageSourceRef _iio_Nonnull isrc, size_t index, CFStringRef _iio_Nonnull auxiliaryImageDataType ) IMAGEIO_AVAILABLE_STARTING(10.13, 11.0); @@ -244,11 +245,22 @@ IMAGEIO_EXTERN const CFStringRef kCGImageSourceDecodeRequest IMAGEIO_AVAILABL IMAGEIO_EXTERN const CFStringRef kCGImageSourceDecodeToHDR IMAGEIO_AVAILABLE_STARTING(14.0, 17.0, 17.0, 10.0); IMAGEIO_EXTERN const CFStringRef kCGImageSourceDecodeToSDR IMAGEIO_AVAILABLE_STARTING(14.0, 17.0, 17.0, 10.0); +/* kCGImageSourceGenerateImageSpecificLumaScaling - generate a global tone mapping function based on the gain map. Dafault value is "YES" (kCFBooleanTrue) + */ +IMAGEIO_EXTERN const CFStringRef kCGImageSourceGenerateImageSpecificLumaScaling IMAGEIO_AVAILABLE_STARTING(15.0, 18.0, 18.0, 11.0); + /* kCGImageSourceDecodeRequestOptions - CFDictionaryRef to specify additional options */ IMAGEIO_EXTERN const CFStringRef kCGImageSourceDecodeRequestOptions IMAGEIO_AVAILABLE_STARTING(14.0, 17.0, 17.0, 10.0); +/* To limit the image formats that ImageIO can decode, you can call 'CGImageSourceSetAllowableTypes' with + * an array of type identifiers. + * The 'allowableTypes' array should contain valid type identifiers. + * CGImageSourceSetAllowableTypes can only be called once. + */ +IMAGEIO_EXTERN OSStatus CGImageSourceSetAllowableTypes(CFArrayRef allowableTypes) IMAGEIO_AVAILABLE_STARTING(14.2, 17.2, 17.2, 10.2); + CF_ASSUME_NONNULL_END CF_IMPLICIT_BRIDGING_DISABLED diff --git a/Frameworks/ImageIO.framework/Versions/A/ImageIO.tbd b/Frameworks/ImageIO.framework/Versions/A/ImageIO.tbd index 1bfdecb6..bb895190 100644 --- a/Frameworks/ImageIO.framework/Versions/A/ImageIO.tbd +++ b/Frameworks/ImageIO.framework/Versions/A/ImageIO.tbd @@ -8,17 +8,19 @@ exports: arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] symbols: [ _CGAnimateImageAtURLWithBlock, _CGAnimateImageDataWithBlock, _CGCopyBasicPropertiesOfImageAtPath, _CGCreatePNGDataFromSVGData, - _CGGetImageIOVersion, _CGImageApplyHDRGainMap, _CGImageConvertHDRPixelBufferToSDR, - _CGImageCopyFileWithGPSInformation, _CGImageCopyFileWithParameters, - _CGImageCopyJPEGData, _CGImageCopyJPEGDataAndColorSpace, _CGImageCopySourceData, - _CGImageCreateByMatchingToColorSpace, _CGImageCreateByScaling, - _CGImageCreateColorSpaceFromDataArray, _CGImageCreateColorSpaceFromExifOrData, - _CGImageCreateCopyWithAlphaInfo, _CGImageCreateCopyWithParameters, - _CGImageCreateDataFromMetadata, _CGImageCreateEXIFDataFromProperties, - _CGImageCreateEXIFJPEGData, _CGImageCreateFromIOSurface, _CGImageCreateHDRGainMap, - _CGImageCreateMetadataFromData, _CGImageCreateMetadataFromDataArray, - _CGImageCreatePixelBufferAttributesForHDRTarget, _CGImageCreateThumb, - _CGImageCreateWithWBMPData, _CGImageDestinationAddAuxiliaryDataInfo, + _CGGetImageIOVersion, _CGImageApplyHDRGainMap, _CGImageConvertHDRGainMap, + _CGImageConvertHDRPixelBufferToSDR, _CGImageCopyFileWithGPSInformation, + _CGImageCopyFileWithParameters, _CGImageCopyJPEGData, _CGImageCopyJPEGDataAndColorSpace, + _CGImageCopySourceData, _CGImageCreateByMatchingToColorSpace, + _CGImageCreateByScaling, _CGImageCreateColorSpaceFromDataArray, + _CGImageCreateColorSpaceFromExifOrData, _CGImageCreateCopyWithAlphaInfo, + _CGImageCreateCopyWithParameters, _CGImageCreateDataFromMetadata, + _CGImageCreateEXIFDataFromProperties, _CGImageCreateEXIFJPEGData, + _CGImageCreateFlexGTCInfo, _CGImageCreateFlexRangeDictionary, + _CGImageCreateFlexRangeMetadata, _CGImageCreateFromIOSurface, + _CGImageCreateHDRGainMap, _CGImageCreateMetadataFromData, + _CGImageCreateMetadataFromDataArray, _CGImageCreatePixelBufferAttributesForHDRTarget, + _CGImageCreateThumb, _CGImageCreateWithWBMPData, _CGImageDestinationAddAuxiliaryDataInfo, _CGImageDestinationAddImage, _CGImageDestinationAddImageAndMetadata, _CGImageDestinationAddImageFromSource, _CGImageDestinationAddImageFromSourceWithMetadata, _CGImageDestinationAddImageWithMetadata, _CGImageDestinationCopyImageFormats, @@ -26,6 +28,7 @@ exports: _CGImageDestinationCreateWithData, _CGImageDestinationCreateWithDataConsumer, _CGImageDestinationCreateWithURL, _CGImageDestinationFinalize, _CGImageDestinationGetTypeID, _CGImageDestinationSetProperties, + _CGImageGetHDRGainMapHeadroom, _CGImageGetHDRPixelBufferHeadroom, _CGImageGetHash, _CGImageGetImageSource, _CGImageIOCreateXMPDataFromMetaData, _CGImageIsDecodable, _CGImageIsInsideSRGB, _CGImageMetadataCopyStringValueWithPath, _CGImageMetadataCopyTagMatchingImageProperty, _CGImageMetadataCopyTagWithPath, @@ -64,34 +67,48 @@ exports: _CGImageReadSessionGetTypeID, _CGImageReadSessionIsFinal, _CGImageReadSessionReleaseBytePointer, _CGImageReadSessionReleaseCachedImageBlockData, _CGImageSourceAddProperty, _CGImageSourceCanAnimate, _CGImageSourceCopyAuxiliaryDataInfoAtIndex, - _CGImageSourceCopyMetadataAtIndex, _CGImageSourceCopyMetadataPropertiesAtIndex, - _CGImageSourceCopyProperties, _CGImageSourceCopyPropertiesAtIndex, - _CGImageSourceCopyTypeExtensions, _CGImageSourceCopyTypeIdentifiers, - _CGImageSourceCreateIOSurfaceAtIndex, _CGImageSourceCreateImageAtIndex, - _CGImageSourceCreateIncremental, _CGImageSourceCreateThumbnailAtIndex, + _CGImageSourceCopyAuxiliaryDataInfoAtIndexWithOptions, _CGImageSourceCopyMetadataAtIndex, + _CGImageSourceCopyMetadataPropertiesAtIndex, _CGImageSourceCopyProperties, + _CGImageSourceCopyPropertiesAtIndex, _CGImageSourceCopyTypeExtensions, + _CGImageSourceCopyTypeIdentifiers, _CGImageSourceCreateIOSurfaceAtIndex, + _CGImageSourceCreateImageAtIndex, _CGImageSourceCreateIncremental, + _CGImageSourceCreateProxyData, _CGImageSourceCreateThumbnailAtIndex, _CGImageSourceCreateWithData, _CGImageSourceCreateWithDataProvider, - _CGImageSourceCreateWithFile, _CGImageSourceCreateWithURL, - _CGImageSourceDisableCaching, _CGImageSourceDisableHardwareDecoding, - _CGImageSourceDisableMetadataParsing, _CGImageSourceDisableRAWDecoding, - _CGImageSourceEnableRestrictedDecoding, _CGImageSourceGetCount, - _CGImageSourceGetImageCacheAtIndex, _CGImageSourceGetPrimaryImageIndex, - _CGImageSourceGetStatus, _CGImageSourceGetStatusAtIndex, _CGImageSourceGetType, - _CGImageSourceGetTypeID, _CGImageSourceGetTypeWithData, _CGImageSourceGetTypeWithDataProvider, + _CGImageSourceCreateWithFile, _CGImageSourceCreateWithProxyData, + _CGImageSourceCreateWithURL, _CGImageSourceDisableCaching, + _CGImageSourceDisableHardwareDecoding, _CGImageSourceDisableMetadataParsing, + _CGImageSourceDisableRAWDecoding, _CGImageSourceEnableRestrictedDecoding, + _CGImageSourceGetCount, _CGImageSourceGetImageCacheAtIndex, + _CGImageSourceGetPrimaryImageIndex, _CGImageSourceGetStatus, + _CGImageSourceGetStatusAtIndex, _CGImageSourceGetType, _CGImageSourceGetTypeID, + _CGImageSourceGetTypeWithData, _CGImageSourceGetTypeWithDataProvider, _CGImageSourceGetTypeWithExtension, _CGImageSourceGetTypeWithURL, _CGImageSourceIsCloudTranscodable, _CGImageSourceIsColorOptimizedForSharing, - _CGImageSourceRemoveCacheAtIndex, _CGImageSourceSetAllowableTypes, + _CGImageSourceIsProxy, _CGImageSourceRemoveCacheAtIndex, _CGImageSourceSetAllowableTypes, _CGImageSourceUpdateData, _CGImageSourceUpdateDataProvider, _CGImageWasCreatedWithIOSurface, _CGImageWriteEXIFJPEGToPath, - _CGImageWriteEXIFJPEGWithMetadata, _CopyMetadataFromFileAtPath, - _CopyMetadataFromSequentialDataProviderCallbacks, _GetMetadataPropertyMatchingSchemaAndPropertyName, - _ImageIODebug, _ImageIOSetLoggingProc, _OFDCreatePDFDataFromURL, + _CGImageWriteEXIFJPEGWithMetadata, _CGInitializeImageIO, _CopyMetadataFromCFData, + _CopyMetadataFromFileAtPath, _CopyMetadataFromSequentialDataProviderCallbacks, + _GetMetadataPropertyMatchingSchemaAndPropertyName, _IIOInitDebugFlags, + _IIOIsOOPEnabled, _IIOProcessEvent, _IIO_XPCServer, _ImageIODebug, + _ImageIOSetLoggingProc, _OFDCreatePDFDataFromURL, _UpdateRunningInXPCService, _gReadMakerNoteProps, _kCFErrorDomainCGImageMetadata, _kCGDataFromMetadataAddExifApp1Marker, - _kCGDataFromMetadataStripExifFromXMP, _kCGFallbackHDRGain, - _kCGImageAlphaInfo, _kCGImageAnimationDelayTime, _kCGImageAnimationLoopCount, - _kCGImageAnimationStartIndex, _kCGImageAuxiliaryDataInfoData, - _kCGImageAuxiliaryDataInfoDataDescription, _kCGImageAuxiliaryDataInfoMetadata, - _kCGImageAuxiliaryDataTypeAlpha, _kCGImageAuxiliaryDataTypeDepth, - _kCGImageAuxiliaryDataTypeDisparity, _kCGImageAuxiliaryDataTypeHDRGainMap, + _kCGDataFromMetadataStripExifFromXMP, _kCGDisableMetal, _kCGFallbackHDRGain, + _kCGFlexGTCInfo, _kCGFlexRangeAlternateColorSpace, _kCGFlexRangeBaseIsHDR, + _kCGFlexRangeEpsilon, _kCGFlexRangeGamma, _kCGFlexRangeMax, + _kCGFlexRangeMin, _kCGFlexRangeOptions, _kCGFlexRangeSubsample, + _kCGFlexRangeUseAlternateColor, _kCGGenerateFlexGTC, _kCGImageAlphaInfo, + _kCGImageAnimationDelayTime, _kCGImageAnimationLoopCount, + _kCGImageAnimationStartIndex, _kCGImageAuxiliaryDataIncludeMeteorPlusMetadata, + _kCGImageAuxiliaryDataInfoColorSpace, _kCGImageAuxiliaryDataInfoData, + _kCGImageAuxiliaryDataInfoDataDescription, _kCGImageAuxiliaryDataInfoIOSurface, + _kCGImageAuxiliaryDataInfoImage, _kCGImageAuxiliaryDataInfoMetadata, + _kCGImageAuxiliaryDataInfoMeteorPlusMetadata, _kCGImageAuxiliaryDataInfoPixelBuffer, + _kCGImageAuxiliaryDataRepresentation, _kCGImageAuxiliaryDataRepresentationData, + _kCGImageAuxiliaryDataRepresentationIOSurface, _kCGImageAuxiliaryDataRepresentationImage, + _kCGImageAuxiliaryDataRepresentationPixelBuffer, _kCGImageAuxiliaryDataTypeAlpha, + _kCGImageAuxiliaryDataTypeDepth, _kCGImageAuxiliaryDataTypeDisparity, + _kCGImageAuxiliaryDataTypeHDRGainMap, _kCGImageAuxiliaryDataTypeISOGainMap, _kCGImageAuxiliaryDataTypePortraitEffectsMatte, _kCGImageAuxiliaryDataTypeSemanticSegmentationGlassesMatte, _kCGImageAuxiliaryDataTypeSemanticSegmentationHairMatte, _kCGImageAuxiliaryDataTypeSemanticSegmentationSkinMatte, _kCGImageAuxiliaryDataTypeSemanticSegmentationSkyMatte, _kCGImageAuxiliaryDataTypeSemanticSegmentationTeethMatte, @@ -102,33 +119,38 @@ exports: _kCGImageDestinationCreateHDRGainMap, _kCGImageDestinationCreateHDRGainMapOptions, _kCGImageDestinationDateTime, _kCGImageDestinationEmbedThumbnail, _kCGImageDestinationEnableRGBToYUVDithering, _kCGImageDestinationEnableRestrictedEncoding, - _kCGImageDestinationICCProfile, _kCGImageDestinationImageMaxPixelSize, - _kCGImageDestinationLossyCompressionQuality, _kCGImageDestinationMergeMetadata, - _kCGImageDestinationMetadata, _kCGImageDestinationOptimizeColorForSharing, - _kCGImageDestinationOptimizeForSize, _kCGImageDestinationOrientation, + _kCGImageDestinationEncodeBaseIsSDR, _kCGImageDestinationEncodeRequest, + _kCGImageDestinationEncodeRequestOptions, _kCGImageDestinationEncodeToISOGainmap, + _kCGImageDestinationEncodeToISOHDR, _kCGImageDestinationEncodeToSDR, + _kCGImageDestinationEncodeTonemapMode, _kCGImageDestinationICCProfile, + _kCGImageDestinationImageMaxPixelSize, _kCGImageDestinationLossyCompressionQuality, + _kCGImageDestinationMergeMetadata, _kCGImageDestinationMetadata, + _kCGImageDestinationOptimizeColorForSharing, _kCGImageDestinationOptimizeForSize, + _kCGImageDestinationOrientation, _kCGImageDestinationPreferSoftwareEncoder, _kCGImageDestinationPreserveGainMap, _kCGImageDestinationRequestedFileSize, - _kCGImageDestinationUseHardwareAcceleration, _kCGImageEXIFDataAddMissingTags, - _kCGImageEXIFDataIncludeEXIFHeader, _kCGImageMetadataEnumerateRecursively, - _kCGImageMetadataNamespaceDublinCore, _kCGImageMetadataNamespaceExif, - _kCGImageMetadataNamespaceExifAux, _kCGImageMetadataNamespaceExifEX, - _kCGImageMetadataNamespaceIPTCCore, _kCGImageMetadataNamespaceIPTCExtension, - _kCGImageMetadataNamespacePhotoshop, _kCGImageMetadataNamespaceTIFF, - _kCGImageMetadataNamespaceXMPBasic, _kCGImageMetadataNamespaceXMPRights, - _kCGImageMetadataPrefixDublinCore, _kCGImageMetadataPrefixExif, - _kCGImageMetadataPrefixExifAux, _kCGImageMetadataPrefixExifEX, - _kCGImageMetadataPrefixIPTCCore, _kCGImageMetadataPrefixIPTCExtension, - _kCGImageMetadataPrefixPhotoshop, _kCGImageMetadataPrefixTIFF, - _kCGImageMetadataPrefixXMPBasic, _kCGImageMetadataPrefixXMPRights, - _kCGImageMetadataShouldExcludeGPS, _kCGImageMetadataShouldExcludeICC, - _kCGImageMetadataShouldExcludeXMP, _kCGImagePreferGPUForColorConversion, - _kCGImagePreferredColorConversionMode, _kCGImageProperty420fEncoder, - _kCGImageProperty420fUseLZFSE, _kCGImageProperty8BIMDictionary, - _kCGImageProperty8BIMLayerNames, _kCGImageProperty8BIMVersion, - _kCGImagePropertyAPNGCanvasPixelHeight, _kCGImagePropertyAPNGCanvasPixelWidth, - _kCGImagePropertyAPNGDelayTime, _kCGImagePropertyAPNGFrameInfoArray, - _kCGImagePropertyAPNGLoopCount, _kCGImagePropertyAPNGUnclampedDelayTime, - _kCGImagePropertyASTCBlockSize, _kCGImagePropertyASTCEncoder, - _kCGImagePropertyASTCFlipVertically, _kCGImagePropertyASTCPreTwiddle, + _kCGImageDestinationToneMapExtendedRangeToSDR, _kCGImageDestinationUseHardwareAcceleration, + _kCGImageEXIFDataAddMissingTags, _kCGImageEXIFDataIncludeEXIFHeader, + _kCGImageMetadataEnumerateRecursively, _kCGImageMetadataNamespaceDublinCore, + _kCGImageMetadataNamespaceExif, _kCGImageMetadataNamespaceExifAux, + _kCGImageMetadataNamespaceExifEX, _kCGImageMetadataNamespaceIPTCCore, + _kCGImageMetadataNamespaceIPTCExtension, _kCGImageMetadataNamespacePhotoshop, + _kCGImageMetadataNamespaceTIFF, _kCGImageMetadataNamespaceXMPBasic, + _kCGImageMetadataNamespaceXMPRights, _kCGImageMetadataPrefixDublinCore, + _kCGImageMetadataPrefixExif, _kCGImageMetadataPrefixExifAux, + _kCGImageMetadataPrefixExifEX, _kCGImageMetadataPrefixIPTCCore, + _kCGImageMetadataPrefixIPTCExtension, _kCGImageMetadataPrefixPhotoshop, + _kCGImageMetadataPrefixTIFF, _kCGImageMetadataPrefixXMPBasic, + _kCGImageMetadataPrefixXMPRights, _kCGImageMetadataShouldExcludeGPS, + _kCGImageMetadataShouldExcludeICC, _kCGImageMetadataShouldExcludeXMP, + _kCGImagePreferGPUForColorConversion, _kCGImagePreferredColorConversionMode, + _kCGImageProperty420fEncoder, _kCGImageProperty420fUseLZFSE, + _kCGImageProperty8BIMDictionary, _kCGImageProperty8BIMLayerNames, + _kCGImageProperty8BIMVersion, _kCGImagePropertyAPNGCanvasPixelHeight, + _kCGImagePropertyAPNGCanvasPixelWidth, _kCGImagePropertyAPNGDelayTime, + _kCGImagePropertyAPNGFrameInfoArray, _kCGImagePropertyAPNGLoopCount, + _kCGImagePropertyAPNGUnclampedDelayTime, _kCGImagePropertyASTCBlockSize, + _kCGImagePropertyASTCEncoder, _kCGImagePropertyASTCFlipVertically, + _kCGImagePropertyASTCPreTwiddle, _kCGImagePropertyASTCUseHDR, _kCGImagePropertyASTCUseLZFSE, _kCGImagePropertyASTCWeightChannelsEqually, _kCGImagePropertyAVISDictionary, _kCGImagePropertyAuxiliaryData, _kCGImagePropertyAuxiliaryDataType, _kCGImagePropertyBCEncoder, @@ -276,20 +298,24 @@ exports: _kCGImagePropertyGPSTimeStamp, _kCGImagePropertyGPSTrack, _kCGImagePropertyGPSTrackRef, _kCGImagePropertyGPSVersion, _kCGImagePropertyGroupImageBaseline, _kCGImagePropertyGroupImageDisparityAdjustment, - _kCGImagePropertyGroupImageIndexLeft, _kCGImagePropertyGroupImageIndexRight, - _kCGImagePropertyGroupImageIsAlternateImage, _kCGImagePropertyGroupImageIsLeftImage, - _kCGImagePropertyGroupImageIsRightImage, _kCGImagePropertyGroupImagesAlternate, - _kCGImagePropertyGroupIndex, _kCGImagePropertyGroupType, _kCGImagePropertyGroupTypeAlternate, - _kCGImagePropertyGroupTypeStereoPair, _kCGImagePropertyGroups, - _kCGImagePropertyHEICSCanvasPixelHeight, _kCGImagePropertyHEICSCanvasPixelWidth, - _kCGImagePropertyHEICSDelayTime, _kCGImagePropertyHEICSDictionary, - _kCGImagePropertyHEICSFrameInfoArray, _kCGImagePropertyHEICSLoopCount, - _kCGImagePropertyHEICSUnclampedDelayTime, _kCGImagePropertyHEIFCanAnimate, + _kCGImagePropertyGroupImageIndexLeft, _kCGImagePropertyGroupImageIndexMonoscopic, + _kCGImagePropertyGroupImageIndexRight, _kCGImagePropertyGroupImageIsAlternateImage, + _kCGImagePropertyGroupImageIsLeftImage, _kCGImagePropertyGroupImageIsMonoscopicImage, + _kCGImagePropertyGroupImageIsRightImage, _kCGImagePropertyGroupImageStereoAggressors, + _kCGImagePropertyGroupImagesAlternate, _kCGImagePropertyGroupIndex, + _kCGImagePropertyGroupMonoscopicImageLocation, _kCGImagePropertyGroupType, + _kCGImagePropertyGroupTypeAlternate, _kCGImagePropertyGroupTypeStereoPair, + _kCGImagePropertyGroups, _kCGImagePropertyHEICSCanvasPixelHeight, + _kCGImagePropertyHEICSCanvasPixelWidth, _kCGImagePropertyHEICSDelayTime, + _kCGImagePropertyHEICSDictionary, _kCGImagePropertyHEICSFrameInfoArray, + _kCGImagePropertyHEICSLoopCount, _kCGImagePropertyHEICSUnclampedDelayTime, + _kCGImagePropertyHEIFCanAnimate, _kCGImagePropertyHEIFContainerItemID, _kCGImagePropertyHEIFDictionary, _kCGImagePropertyHasAlpha, - _kCGImagePropertyHeight, _kCGImagePropertyIPTCActionAdvised, - _kCGImagePropertyIPTCByline, _kCGImagePropertyIPTCBylineTitle, - _kCGImagePropertyIPTCCaptionAbstract, _kCGImagePropertyIPTCCategory, - _kCGImagePropertyIPTCCity, _kCGImagePropertyIPTCContact, _kCGImagePropertyIPTCContactInfoAddress, + _kCGImagePropertyHeight, _kCGImagePropertyIOSCustom, _kCGImagePropertyIOSDebug, + _kCGImagePropertyIPTCActionAdvised, _kCGImagePropertyIPTCByline, + _kCGImagePropertyIPTCBylineTitle, _kCGImagePropertyIPTCCaptionAbstract, + _kCGImagePropertyIPTCCategory, _kCGImagePropertyIPTCCity, + _kCGImagePropertyIPTCContact, _kCGImagePropertyIPTCContactInfoAddress, _kCGImagePropertyIPTCContactInfoCity, _kCGImagePropertyIPTCContactInfoCountry, _kCGImagePropertyIPTCContactInfoEmails, _kCGImagePropertyIPTCContactInfoPhones, _kCGImagePropertyIPTCContactInfoPostalCode, _kCGImagePropertyIPTCContactInfoStateProvince, @@ -459,32 +485,35 @@ exports: _kCGImagePropertyTIFFResolutionUnit, _kCGImagePropertyTIFFSoftware, _kCGImagePropertyTIFFTileLength, _kCGImagePropertyTIFFTileWidth, _kCGImagePropertyTIFFTransferFunction, _kCGImagePropertyTIFFWhitePoint, - _kCGImagePropertyTIFFXResolution, _kCGImagePropertyTIFFYResolution, + _kCGImagePropertyTIFFXPosition, _kCGImagePropertyTIFFXResolution, + _kCGImagePropertyTIFFYPosition, _kCGImagePropertyTIFFYResolution, _kCGImagePropertyThreshold, _kCGImagePropertyThumbnailImages, _kCGImagePropertyWebPCanvasPixelHeight, _kCGImagePropertyWebPCanvasPixelWidth, _kCGImagePropertyWebPDelayTime, _kCGImagePropertyWebPDictionary, _kCGImagePropertyWebPFrameInfoArray, _kCGImagePropertyWebPLoopCount, _kCGImagePropertyWebPUnclampedDelayTime, _kCGImagePropertyWidth, - _kCGImageSkipCIF10SRGBCheck, _kCGImageSourceAddJPEGQualityInformation, - _kCGImageSourceAddPencilKitPrivateData, _kCGImageSourceAddRenderingInformation, - _kCGImageSourceAddThumbnailInformation, _kCGImageSourceApplyHDRGainMap, - _kCGImageSourceBlackDespeckleEnabled, _kCGImageSourceBoostAmount, - _kCGImageSourceCACorrectionBlueScale, _kCGImageSourceCACorrectionEnabled, - _kCGImageSourceCACorrectionPower, _kCGImageSourceCACorrectionRedScale, - _kCGImageSourceChromaBlurEnabled, _kCGImageSourceChromaBlurMoireAmount, - _kCGImageSourceChromaBlurMoireSize, _kCGImageSourceChromaBlurRadius, - _kCGImageSourceColorTransform, _kCGImageSourceColorTransformAdobeRGBTosRGB, - _kCGImageSourceColorTransformOption, _kCGImageSourceColorTransformSpace, - _kCGImageSourceCreateThumbnailFromImageAlways, _kCGImageSourceCreateThumbnailFromImageIfAbsent, - _kCGImageSourceCreateThumbnailFromImageProxy, _kCGImageSourceCreateThumbnailWithTransform, - _kCGImageSourceCreateUnpremultipliedPNG, _kCGImageSourceDecodeRequest, + _kCGImageSkipCIF10SRGBCheck, _kCGImageSourceAddHEIFContainerItemID, + _kCGImageSourceAddJPEGQualityInformation, _kCGImageSourceAddPencilKitPrivateData, + _kCGImageSourceAddRenderingInformation, _kCGImageSourceAddThumbnailInformation, + _kCGImageSourceApplyHDRGainMap, _kCGImageSourceBlackDespeckleEnabled, + _kCGImageSourceBoostAmount, _kCGImageSourceCACorrectionBlueScale, + _kCGImageSourceCACorrectionEnabled, _kCGImageSourceCACorrectionPower, + _kCGImageSourceCACorrectionRedScale, _kCGImageSourceChromaBlurEnabled, + _kCGImageSourceChromaBlurMoireAmount, _kCGImageSourceChromaBlurMoireSize, + _kCGImageSourceChromaBlurRadius, _kCGImageSourceColorTransform, + _kCGImageSourceColorTransformAdobeRGBTosRGB, _kCGImageSourceColorTransformOption, + _kCGImageSourceColorTransformSpace, _kCGImageSourceCreateThumbnailFromImageAlways, + _kCGImageSourceCreateThumbnailFromImageIfAbsent, _kCGImageSourceCreateThumbnailFromImageProxy, + _kCGImageSourceCreateThumbnailWithTransform, _kCGImageSourceCreateUnpremultipliedPNG, + _kCGImageSourceDecodeFormatAllowlist, _kCGImageSourceDecodeRequest, _kCGImageSourceDecodeRequestOptions, _kCGImageSourceDecodeToHDR, _kCGImageSourceDecodeToSDR, _kCGImageSourceDisableParallelDecode, _kCGImageSourceDrawAnnotations, _kCGImageSourceEnableMosquitoNoiseFiltering, _kCGImageSourceEnableRestrictedDecoding, _kCGImageSourceFailForDataNotMatchingHint, - _kCGImageSourceForCoreImage, _kCGImageSourceIgnoreJPEGAuxImages, - _kCGImageSourceJPEGInterchangeFormat, _kCGImageSourceJPEGInterchangeFormatLength, - _kCGImageSourceMemoryMapAsShared, _kCGImageSourceMethodCurrentVersion, + _kCGImageSourceForCoreImage, _kCGImageSourceGenerateImageSpecificLumaScaling, + _kCGImageSourceIgnoreJPEGAuxImages, _kCGImageSourceJPEGInterchangeFormat, + _kCGImageSourceJPEGInterchangeFormatLength, _kCGImageSourceMemoryMapAsShared, + _kCGImageSourceMethodCurrentVersion, _kCGImageSourceMipmapLevel, _kCGImageSourceNeutralX, _kCGImageSourceNeutralY, _kCGImageSourceNoiseTransitionEnabled, _kCGImageSourcePreferHEIFCollection, _kCGImageSourcePreferredThreadCount, _kCGImageSourceRasterizationDPI, _kCGImageSourceRawReconstructionDefaults, @@ -499,33 +528,39 @@ exports: _kCGImageSourceSkipAlpha, _kCGImageSourceSkipMetaData, _kCGImageSourceSkipMetadata, _kCGImageSourceSkipXMPMetadata, _kCGImageSourceSubsampleFactor, _kCGImageSourceThumbnailInterpolationQuality, _kCGImageSourceThumbnailMaxPixelSize, - _kCGImageSourceTypeIdentifierHint, _kCGImageSourceUseCoreImage, - _kCGImageSourceUseHardwareAcceleration, _kCGImageSourceUsePDFBackgroundBlack, - _kCGImageSourceUsePDFBackgroundWhite, _kCGImageSourceXMPSidecar, - _kCGImageSurfaceBytesPerRowAlignmentRequest, _kCGImageSurfaceFormatRequest, - _kCGImageWriteExtendedAPP0, _kCGTargetColorSpace, _kCGTargetGainMapSubsampleFactor, - _kCGTargetHeadroom, _kCGTargetPixelFormat, _kIIOCameraExtrinsics_CoordinateSystemID, - _kIIOCameraExtrinsics_Position, _kIIOCameraExtrinsics_Rotation, - _kIIOCameraModelType_GenericPinhole, _kIIOCameraModelType_SimplifiedPinhole, - _kIIOCameraModel_Intrinsics, _kIIOCameraModel_ModelType, _kIIOMetadata_CameraExtrinsicsKey, - _kIIOMetadata_CameraModelKey, _kIIOPluginAddSourcePropsProc, + _kCGImageSourceTiledDownsamplingMode, _kCGImageSourceTypeIdentifierHint, + _kCGImageSourceUseCoreImage, _kCGImageSourceUseHardwareAcceleration, + _kCGImageSourceUsePDFBackgroundBlack, _kCGImageSourceUsePDFBackgroundWhite, + _kCGImageSourceXMPSidecar, _kCGImageSurfaceBytesPerRowAlignmentRequest, + _kCGImageSurfaceFormatRequest, _kCGImageWriteExtendedAPP0, + _kCGTargetColorSpace, _kCGTargetGainMapSubsampleFactor, _kCGTargetHeadroom, + _kCGTargetPixelFormat, _kCGTargetYCCMatrix, _kCGToneMappingMode, + _kIIOCameraExtrinsics_CoordinateSystemID, _kIIOCameraExtrinsics_Position, + _kIIOCameraExtrinsics_Rotation, _kIIOCameraModelType_GenericPinhole, + _kIIOCameraModelType_SimplifiedPinhole, _kIIOCameraModel_Intrinsics, + _kIIOCameraModel_ModelType, _kIIOMetadata_CameraExtrinsicsKey, + _kIIOMetadata_CameraModelKey, _kIIOMonoscopicImageLocation_Center, + _kIIOMonoscopicImageLocation_Left, _kIIOMonoscopicImageLocation_Right, + _kIIOMonoscopicImageLocation_Unspecified, _kIIOPluginAddSourcePropsProc, _kIIOPluginCompareOptsProc, _kIIOPluginCopyAuxiliaryDataProc, _kIIOPluginExtensions, _kIIOPluginImageCountProc, _kIIOPluginInitImageProc, _kIIOPluginInitThumbnailProc, _kIIOPluginIsPreTiff, _kIIOPluginMinimumFileSize, _kIIOPluginTestHeaderProc, _kIIOPluginTestHeaderSize, _kIIOPluginUTType, - _kImageIOInfoHeader_alphaInfo, _kImageIOInfoHeader_bitsPerComponent, - _kImageIOInfoHeader_bitsPerPixel, _kImageIOInfoHeader_cacheImageBlocks, - _kImageIOInfoHeader_colorTransformInfo, _kImageIOInfoHeader_colorspaceModel, - _kImageIOInfoHeader_createImage, _kImageIOInfoHeader_createImageProviderWithBitmapInfo, - _kImageIOInfoHeader_createMask, _kImageIOInfoHeader_imageHeight, - _kImageIOInfoHeader_imageIndex, _kImageIOInfoHeader_imageWidth, - _kImageIOInfoHeader_isFloat, _kImageIOInfoHeader_isLittleEndian, - _kImageIOInfoHeader_originalIndexedColorMap, _kImageIOInfoHeader_originalIsIndexed, - _kImageIOInfoHeader_pixelFormat, _kImageIOInfoHeader_plugin, - _kImageIOInfoHeader_pluginHandlesReMapping, _kImageIOInfoHeader_rowBytes, - _kImageIOInfoHeader_session, _kImageIOInfoHeader_skipLabFixup, - _kImageIOInfoHeader_supportsMultipleResolutions, _kImageIOInfoHeader_usesImageAndMask, - _kIsAdobeRGB, _kIsNotICC, _kIsSRGB, _kIsUnknownICC ] + _kIIOStereoAggressors_Severity, _kIIOStereoAggressors_SubTypeURI, + _kIIOStereoAggressors_Type, _kImageIOInfoHeader_alphaInfo, + _kImageIOInfoHeader_bitsPerComponent, _kImageIOInfoHeader_bitsPerPixel, + _kImageIOInfoHeader_cacheImageBlocks, _kImageIOInfoHeader_colorTransformInfo, + _kImageIOInfoHeader_colorspaceModel, _kImageIOInfoHeader_createImage, + _kImageIOInfoHeader_createImageProviderWithBitmapInfo, _kImageIOInfoHeader_createMask, + _kImageIOInfoHeader_imageHeight, _kImageIOInfoHeader_imageIndex, + _kImageIOInfoHeader_imageWidth, _kImageIOInfoHeader_isFloat, + _kImageIOInfoHeader_isLittleEndian, _kImageIOInfoHeader_originalIndexedColorMap, + _kImageIOInfoHeader_originalIsIndexed, _kImageIOInfoHeader_pixelFormat, + _kImageIOInfoHeader_plugin, _kImageIOInfoHeader_pluginHandlesReMapping, + _kImageIOInfoHeader_rowBytes, _kImageIOInfoHeader_session, + _kImageIOInfoHeader_skipLabFixup, _kImageIOInfoHeader_supportsMultipleResolutions, + _kImageIOInfoHeader_usesImageAndMask, _kIsAdobeRGB, _kIsNotICC, + _kIsSRGB, _kIsUnknownICC, _logEventType ] - targets: [ x86_64-macos, x86_64h-macos ] symbols: [ _CGImageCreateByMatchingToDisplay ] - targets: [ x86_64-macos, x86_64h-macos, arm64-macos, arm64e-macos ] diff --git a/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.tbd b/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.tbd index 70792e23..4736f5a5 100644 --- a/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.tbd +++ b/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib' -current-version: 2488.4.15 +current-version: 2661.4.9 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] diff --git a/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.tbd b/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.tbd index d02a715b..2de457df 100644 --- a/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.tbd +++ b/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib' -current-version: 2488.4.15 +current-version: 2661.4.9 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] diff --git a/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.tbd b/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.tbd index c0f5c7ac..cd3589ec 100644 --- a/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.tbd +++ b/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib' -current-version: 2488.4.15 +current-version: 2661.4.9 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] diff --git a/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.tbd b/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.tbd index ba7945c5..baaadec8 100644 --- a/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.tbd +++ b/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib' -current-version: 2488.4.15 +current-version: 2661.4.9 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -40,9 +40,10 @@ exports: __cg_png_set_read_user_transform_fn, __cg_png_set_row_number, __cg_png_set_sRGB, __cg_png_set_scale_16, __cg_png_set_swap, __cg_png_set_tRNS, __cg_png_set_tRNS_to_alpha, __cg_png_set_text, - __cg_png_set_write_fn, __cg_png_set_zstream_owner, __cg_png_write_chunk, - __cg_png_write_chunk_data, __cg_png_write_chunk_end, __cg_png_write_chunk_header, - __cg_png_write_complete_chunk, __cg_png_write_end, __cg_png_write_flush, - __cg_png_write_frame_head, __cg_png_write_frame_tail, __cg_png_write_info, - __cg_png_write_row, __cg_png_write_row_sized, __cg_png_write_start_row ] + __cg_png_set_unknown_chunks, __cg_png_set_write_fn, __cg_png_set_zstream_owner, + __cg_png_write_chunk, __cg_png_write_chunk_data, __cg_png_write_chunk_end, + __cg_png_write_chunk_header, __cg_png_write_complete_chunk, + __cg_png_write_end, __cg_png_write_flush, __cg_png_write_frame_head, + __cg_png_write_frame_tail, __cg_png_write_info, __cg_png_write_row, + __cg_png_write_row_sized, __cg_png_write_start_row ] ... diff --git a/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.tbd b/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.tbd index d81198f6..b03a2cfd 100644 --- a/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.tbd +++ b/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib' -current-version: 2488.4.15 +current-version: 2661.4.9 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] diff --git a/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.tbd b/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.tbd index 706d330d..545129e7 100644 --- a/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.tbd +++ b/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib' -current-version: 2488.4.15 +current-version: 2661.4.9 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] diff --git a/Frameworks/Kernel.framework/Contents/Headers/AppleVirtualPCI.h b/Frameworks/Kernel.framework/Contents/Headers/AppleVirtualPCI.h index 3edd78b9..db534e44 100644 --- a/Frameworks/Kernel.framework/Contents/Headers/AppleVirtualPCI.h +++ b/Frameworks/Kernel.framework/Contents/Headers/AppleVirtualPCI.h @@ -22,7 +22,7 @@ enum VirtualPCIRequest { kVirtualPCIRequestCount }; -enum VirtualPCITargetMemory { +enum VirtualPCITargetMemory : uint32_t { kVirtualPCIBar0, kVirtualPCIBar1, kVirtualPCIBar2, diff --git a/Frameworks/Kernel.framework/Contents/Headers/family/smbfs_iokit.h b/Frameworks/Kernel.framework/Contents/Headers/family/smbfs_iokit.h new file mode 100644 index 00000000..becc3236 --- /dev/null +++ b/Frameworks/Kernel.framework/Contents/Headers/family/smbfs_iokit.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2024 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef smbfs_iokit_h +#define smbfs_iokit_h + +#ifdef __cplusplus +#define EXTERNC extern "C" +#else +#define EXTERNC +#endif + +EXTERNC int smbfs_is_task_entitled_to(task_t task, const char *entitlement); + +#endif /* smbfs_iokit_hpp */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKEndpointInterface.h b/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKEndpointInterface.h deleted file mode 100644 index 7bdc29fc..00000000 --- a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKEndpointInterface.h +++ /dev/null @@ -1,494 +0,0 @@ -/* iig(DriverKit-324.60.3) generated from AFKEndpointInterface.iig */ - -/* AFKEndpointInterface.iig:1-24 */ -/* - * Copyright (c) 2021 Apple Inc. All rights reserved. - * - * This document is the property of Apple Inc. - * It is considered confidential and proprietary. - * - * This document may not be reproduced or transmitted in any form, - * in whole or in part, without the express written permission of - * Apple Inc. - */ - -#if !__IIG -#if KERNEL -#include -#endif -#endif - -#ifndef _AFKDriverKit_AFKEndpointInterface_h -#define _AFKDriverKit_AFKEndpointInterface_h - -#include /* .iig include */ -#include /* .iig include */ -#include /* .iig include */ - -/* source class AFKEndpointInterface AFKEndpointInterface.iig:25-185 */ - -#if __DOCUMENTATION__ -#define KERNEL IIG_KERNEL - -/*! @class AFKEndpointInterface - * @brief Interface for interacting with an AFKEndpoint. - * @classdesign Match this class as a client and open it to begin - * communication with AFKEndpoints. - */ -class KERNEL AFKEndpointInterface : public IOService -{ - using super = IOService; - -public: - // Overridden functions, see IOService documentation for usage - virtual bool init() override; - virtual void free() override; - - /*! - * @function open - * @abstract Open the interface, call before using the interface. - * @param forClient The IOService based client of the interface. - * @param options Options to specify the request. Currently the only - * supported option is kOpenOptions_Multi_Client, to indicate - * if exclusive access is requested. - * @result bool indicating if the open was successful. - */ - virtual bool open(IOService * forClient, - uint32_t options) LOCALONLY; - - /*! - * @function close - * @abstract Close the interface. - * This will need to be called, and the provided handler block - * will need to be invoked before it is safe to release the interface. - * @param forClient The IOService based client of the interface. - * @param handler The interface has asynchronous tasks that need - * to be completed after close. This handler will be invoked - * when those tasks are complete and it is safe to release - * the interface. The handler will always be invoked. - * @param options Options to specify the request. Currently there - * are no supported options. - * @result bool indicating if the close was successful. - */ - virtual bool close(IOService * forClient, - OSActionAbortedHandler handler, - uint32_t options) LOCALONLY; - - /*! - * @function allocateBuffer - * @abstract Create a memory descriptor object and prepare it for use. - Prefer to use this method rather than creating a descriptor - * manually. - * @param options Options to specify the request. Currently no options - * are supported, pass 0 for this parameter. - * @param capacity The desired size of the buffer. - * @result The successfully created and initialized memory buffer - * or NULL if an issue was encountered. - */ - virtual AFKUserMemoryDescriptor * allocateBuffer(buffer_options options, - uint64_t capacity) LOCALONLY; - - /*! - * @function setReportHandler - * @abstract Set the callback invoked when a report is received. - * Callbacks can only be set when the device is not open. - * @param reportHandler The callback. - */ - virtual void setReportHandler(ReportBlock reportHandler) LOCALONLY; - - /*! - * @function setCommandHandler - * @abstract Set the callback invoked when a command is received. - * Callbacks can only be set when the device is not open. - * @param commandHandler The callback. - */ - virtual void setCommandHandler(CommandBlock commandHandler) LOCALONLY; - - /*! - * @function setResponseHandler - * @abstract Set the callback invoked when a response is received. - * Callbacks can only be set when the device is not open. - * @param responseHandler The callback. - */ - virtual void setResponseHandler(ResponseBlock responseHandler) LOCALONLY; - - /*! @function enqueueReport - * @abstract Send a report via the endpoint interface. - * This method will send a report packet over the endpoint interface. - * A report is a message that does not require an acknowledgement. - * The packet will either be sent immediately (blocking), or it will - * be enqueued and sent asynchronously depending on the endpoint - * implementation. - * @param packetType The type of packet, implementation specific. - * Values less than kIOPPacketTypePrivate are reserved for internal - * AFK use. See AFKPacket.h. - * @param timestamp Timestamp for this enqueue action. Units and domain - * are implementation specific. - * @param reportBuffer The report to send. Can be specified as an - * IOBufferMemoryDescriptor or a raw buffer and size. - * @param options See endpoint_options for available options. - * @result kIOReturnSuccess if the enqueue was successful, - * an error code otherwise. - */ - virtual IOReturn enqueueReport(unsigned packetType, - uint64_t timestamp, - PayloadBuffer reportBuffer, - endpoint_options options = 0) LOCALONLY; - - /*! @function enqueueCommand - * @abstract Send a command via the endpoint interface. - * This method will send a command packet over the endpoint - * interface. A command is a message that requires an - * acknowledgement. The packet will either be sent immediately - * (blocking), or it will be enqueued and sent asynchronously - * depending on the endpoint implementation. - * @param context Caller defined context, passed to the response - * handler when a response is received for this command. - * @param packetType The type of packet, implementation specific. - * Values less than kIOPPacketTypePrivate are reserved for - * internal AFK use. See AFKPacket.h. - * @param timestamp Timestamp for this enqueue action. Units and - * domain are implementation-specific. - * @param commandBuffer The command to send. Can be specified - * as an IOBufferMemoryDescriptor or a raw buffer and size. - * @param responseBuffer The size field should contain the expected - * (maximum) response size, other fields are not used. - * @param options See endpoint_options for available options. - * @param forClient Reference to the calling IOSerivce, required if - * the interface has been opened with kOpenOptions_Multi_Client. - * @result kIOReturnSuccess if the enqueue was successful, - * an error code otherwise. - */ - virtual IOReturn enqueueCommand(void * context, - unsigned packetType, - uint64_t timestamp, - PayloadBuffer commandBuffer, - PayloadBuffer responseBuffer, - endpoint_options options = 0, - IOService * forClient = nullptr) LOCALONLY; - - /*! @function enqueueResponse - * @abstract Send a response via the endpoint interface. - * This method will send a response packet over the endpoint - * interface. A response is a message sent in response to a - * command received via the command handler. The packet - * will either be sent immediately (blocking), or it will be - * enqueued and sent asynchronously depending on the - * endpoint implementation. - * @param id CommandID that was previously passed - * to the command handler. - * @param result Result of the associated command. - * @param timestamp Timestamp for this enqueue action. Units and - * domain are implementation-specific. - * @param responseBuffer The response to send. Can be specified as an - * IOBufferMemoryDescriptor or a raw buffer and size. - * @param options See endpoint_options for available options. - * @return kIOReturnSuccess if the enqueue was successful, - * an error code otherwise. - */ - virtual IOReturn enqueueResponse(CommandID id, - IOReturn result, - uint64_t timestamp, - PayloadBuffer responseBuffer, - endpoint_options options = 0) LOCALONLY; -}; - -#undef KERNEL -#else /* __DOCUMENTATION__ */ - -/* generated class AFKEndpointInterface AFKEndpointInterface.iig:25-185 */ - -#define AFKEndpointInterface_Close_ID 0x8b3103b608452ec4ULL -#define AFKEndpointInterface_Open_ID 0xabcd77e378998de1ULL - -#define AFKEndpointInterface_Close_Args \ - IOService * forClient, \ - uint32_t options - -#define AFKEndpointInterface_Open_Args \ - IOService * forClient, \ - AFKUserDataPipe ** pipe, \ - uint32_t options - -#define AFKEndpointInterface_Methods \ -\ -public:\ -\ - virtual kern_return_t\ - Dispatch(const IORPC rpc) APPLE_KEXT_OVERRIDE;\ -\ - static kern_return_t\ - _Dispatch(AFKEndpointInterface * self, const IORPC rpc);\ -\ - kern_return_t\ - Close(\ - IOService * forClient,\ - uint32_t options,\ - OSDispatchMethod supermethod = NULL);\ -\ - kern_return_t\ - Open(\ - IOService * forClient,\ - AFKUserDataPipe ** pipe,\ - uint32_t options,\ - OSDispatchMethod supermethod = NULL);\ -\ -\ -protected:\ - /* _Impl methods */\ -\ -\ -public:\ - /* _Invoke methods */\ -\ - typedef kern_return_t (*Close_Handler)(OSMetaClassBase * target, AFKEndpointInterface_Close_Args);\ - static kern_return_t\ - Close_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - Close_Handler func);\ -\ - typedef kern_return_t (*Open_Handler)(OSMetaClassBase * target, AFKEndpointInterface_Open_Args);\ - static kern_return_t\ - Open_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - Open_Handler func);\ -\ - - -#define AFKEndpointInterface_KernelMethods \ -\ -protected:\ - /* _Impl methods */\ -\ - kern_return_t\ - Close_Impl(AFKEndpointInterface_Close_Args);\ -\ - kern_return_t\ - Open_Impl(AFKEndpointInterface_Open_Args);\ -\ - - -#define AFKEndpointInterface_VirtualMethods \ -\ -public:\ -\ - virtual bool\ - init(\ -) APPLE_KEXT_OVERRIDE;\ -\ - virtual void\ - free(\ -) APPLE_KEXT_OVERRIDE;\ -\ - virtual bool\ - open(\ - IOService * forClient,\ - uint32_t options) APPLE_KEXT_OVERRIDE;\ -\ - virtual bool\ - close(\ - IOService * forClient,\ - OSActionAbortedHandler handler,\ - uint32_t options) APPLE_KEXT_OVERRIDE;\ -\ - virtual AFKUserMemoryDescriptor *\ - allocateBuffer(\ - unsigned char * options,\ - uint64_t capacity) APPLE_KEXT_OVERRIDE;\ -\ - virtual void\ - setReportHandler(\ - ReportBlock reportHandler) APPLE_KEXT_OVERRIDE;\ -\ - virtual void\ - setCommandHandler(\ - CommandBlock commandHandler) APPLE_KEXT_OVERRIDE;\ -\ - virtual void\ - setResponseHandler(\ - ResponseBlock responseHandler) APPLE_KEXT_OVERRIDE;\ -\ - virtual IOReturn\ - enqueueReport(\ - unsigned int packetType,\ - uint64_t timestamp,\ - PayloadBuffer reportBuffer,\ - unsigned char * options = 0) APPLE_KEXT_OVERRIDE;\ -\ - virtual IOReturn\ - enqueueCommand(\ - void * context,\ - unsigned int packetType,\ - uint64_t timestamp,\ - PayloadBuffer commandBuffer,\ - PayloadBuffer responseBuffer,\ - unsigned char * options = 0,\ - IOService * forClient = nullptr) APPLE_KEXT_OVERRIDE;\ -\ - virtual IOReturn\ - enqueueResponse(\ - CommandID id,\ - IOReturn result,\ - uint64_t timestamp,\ - PayloadBuffer responseBuffer,\ - unsigned char * options = 0) APPLE_KEXT_OVERRIDE;\ -\ - - -#if !KERNEL - -extern OSMetaClass * gAFKEndpointInterfaceMetaClass; -extern const OSClassLoadInformation AFKEndpointInterface_Class; - -class AFKEndpointInterfaceMetaClass : public OSMetaClass -{ -public: - virtual kern_return_t - New(OSObject * instance) override; - virtual kern_return_t - Dispatch(const IORPC rpc) override; -}; - -#endif /* !KERNEL */ - -#if !KERNEL - -class AFKEndpointInterfaceInterface : public OSInterface -{ -public: - virtual bool - open(IOService * forClient, - uint32_t options) = 0; - - virtual bool - close(IOService * forClient, - OSActionAbortedHandler handler, - uint32_t options) = 0; - - virtual AFKUserMemoryDescriptor * - allocateBuffer(unsigned char * options, - uint64_t capacity) = 0; - - virtual void - setReportHandler(ReportBlock reportHandler) = 0; - - virtual void - setCommandHandler(CommandBlock commandHandler) = 0; - - virtual void - setResponseHandler(ResponseBlock responseHandler) = 0; - - virtual IOReturn - enqueueReport(unsigned int packetType, - uint64_t timestamp, - PayloadBuffer reportBuffer, - unsigned char * options) = 0; - - virtual IOReturn - enqueueCommand(void * context, - unsigned int packetType, - uint64_t timestamp, - PayloadBuffer commandBuffer, - PayloadBuffer responseBuffer, - unsigned char * options, - IOService * forClient) = 0; - - virtual IOReturn - enqueueResponse(CommandID id, - IOReturn result, - uint64_t timestamp, - PayloadBuffer responseBuffer, - unsigned char * options) = 0; - - bool - open_Call(IOService * forClient, - uint32_t options) { return open(forClient, options); };\ - - bool - close_Call(IOService * forClient, - OSActionAbortedHandler handler, - uint32_t options) { return close(forClient, handler, options); };\ - - AFKUserMemoryDescriptor * - allocateBuffer_Call(unsigned char * options, - uint64_t capacity) { return allocateBuffer(options, capacity); };\ - - void - setReportHandler_Call(ReportBlock reportHandler) { return setReportHandler(reportHandler); };\ - - void - setCommandHandler_Call(CommandBlock commandHandler) { return setCommandHandler(commandHandler); };\ - - void - setResponseHandler_Call(ResponseBlock responseHandler) { return setResponseHandler(responseHandler); };\ - - IOReturn - enqueueReport_Call(unsigned int packetType, - uint64_t timestamp, - PayloadBuffer reportBuffer, - unsigned char * options) { return enqueueReport(packetType, timestamp, reportBuffer, options); };\ - - IOReturn - enqueueCommand_Call(void * context, - unsigned int packetType, - uint64_t timestamp, - PayloadBuffer commandBuffer, - PayloadBuffer responseBuffer, - unsigned char * options, - IOService * forClient) { return enqueueCommand(context, packetType, timestamp, commandBuffer, responseBuffer, options, forClient); };\ - - IOReturn - enqueueResponse_Call(CommandID id, - IOReturn result, - uint64_t timestamp, - PayloadBuffer responseBuffer, - unsigned char * options) { return enqueueResponse(id, result, timestamp, responseBuffer, options); };\ - -}; - -struct AFKEndpointInterface_IVars; -struct AFKEndpointInterface_LocalIVars; - -class AFKEndpointInterface : public IOService, public AFKEndpointInterfaceInterface -{ -#if !KERNEL - friend class AFKEndpointInterfaceMetaClass; -#endif /* !KERNEL */ - -#if !KERNEL -public: -#ifdef AFKEndpointInterface_DECLARE_IVARS -AFKEndpointInterface_DECLARE_IVARS -#else /* AFKEndpointInterface_DECLARE_IVARS */ - union - { - AFKEndpointInterface_IVars * ivars; - AFKEndpointInterface_LocalIVars * lvars; - }; -#endif /* AFKEndpointInterface_DECLARE_IVARS */ -#endif /* !KERNEL */ - -#if !KERNEL - static OSMetaClass * - sGetMetaClass() { return gAFKEndpointInterfaceMetaClass; }; -#endif /* KERNEL */ - - using super = IOService; - -#if !KERNEL - AFKEndpointInterface_Methods - AFKEndpointInterface_VirtualMethods -#endif /* !KERNEL */ - -}; -#endif /* !KERNEL */ - - -#endif /* !__DOCUMENTATION__ */ - -/* AFKEndpointInterface.iig:187-188 */ - -// Internally used private functions -/* AFKEndpointInterface.iig:198- */ - -#endif /* _AFKDriverKit_AFKEndpointInterface_h */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKEndpointInterface.iig b/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKEndpointInterface.iig deleted file mode 100644 index 779f63e7..00000000 --- a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKEndpointInterface.iig +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (c) 2021 Apple Inc. All rights reserved. - * - * This document is the property of Apple Inc. - * It is considered confidential and proprietary. - * - * This document may not be reproduced or transmitted in any form, - * in whole or in part, without the express written permission of - * Apple Inc. - */ - -#if !__IIG -#if KERNEL -#include -#endif -#endif - -#ifndef _AFKDriverKit_AFKEndpointInterface_h -#define _AFKDriverKit_AFKEndpointInterface_h - -#include -#include -#include - -/*! @class AFKEndpointInterface - * @brief Interface for interacting with an AFKEndpoint. - * @classdesign Match this class as a client and open it to begin - * communication with AFKEndpoints. - */ -class KERNEL AFKEndpointInterface : public IOService -{ - using super = IOService; - -public: - // Overridden functions, see IOService documentation for usage - virtual bool init() override; - virtual void free() override; - - /*! - * @function open - * @abstract Open the interface, call before using the interface. - * @param forClient The IOService based client of the interface. - * @param options Options to specify the request. Currently the only - * supported option is kOpenOptions_Multi_Client, to indicate - * if exclusive access is requested. - * @result bool indicating if the open was successful. - */ - virtual bool open(IOService * forClient, - uint32_t options) LOCALONLY; - - /*! - * @function close - * @abstract Close the interface. - * This will need to be called, and the provided handler block - * will need to be invoked before it is safe to release the interface. - * @param forClient The IOService based client of the interface. - * @param handler The interface has asynchronous tasks that need - * to be completed after close. This handler will be invoked - * when those tasks are complete and it is safe to release - * the interface. The handler will always be invoked. - * @param options Options to specify the request. Currently there - * are no supported options. - * @result bool indicating if the close was successful. - */ - virtual bool close(IOService * forClient, - OSActionAbortedHandler handler, - uint32_t options) LOCALONLY; - - /*! - * @function allocateBuffer - * @abstract Create a memory descriptor object and prepare it for use. - Prefer to use this method rather than creating a descriptor - * manually. - * @param options Options to specify the request. Currently no options - * are supported, pass 0 for this parameter. - * @param capacity The desired size of the buffer. - * @result The successfully created and initialized memory buffer - * or NULL if an issue was encountered. - */ - virtual AFKUserMemoryDescriptor * allocateBuffer(buffer_options options, - uint64_t capacity) LOCALONLY; - - /*! - * @function setReportHandler - * @abstract Set the callback invoked when a report is received. - * Callbacks can only be set when the device is not open. - * @param reportHandler The callback. - */ - virtual void setReportHandler(ReportBlock reportHandler) LOCALONLY; - - /*! - * @function setCommandHandler - * @abstract Set the callback invoked when a command is received. - * Callbacks can only be set when the device is not open. - * @param commandHandler The callback. - */ - virtual void setCommandHandler(CommandBlock commandHandler) LOCALONLY; - - /*! - * @function setResponseHandler - * @abstract Set the callback invoked when a response is received. - * Callbacks can only be set when the device is not open. - * @param responseHandler The callback. - */ - virtual void setResponseHandler(ResponseBlock responseHandler) LOCALONLY; - - /*! @function enqueueReport - * @abstract Send a report via the endpoint interface. - * This method will send a report packet over the endpoint interface. - * A report is a message that does not require an acknowledgement. - * The packet will either be sent immediately (blocking), or it will - * be enqueued and sent asynchronously depending on the endpoint - * implementation. - * @param packetType The type of packet, implementation specific. - * Values less than kIOPPacketTypePrivate are reserved for internal - * AFK use. See AFKPacket.h. - * @param timestamp Timestamp for this enqueue action. Units and domain - * are implementation specific. - * @param reportBuffer The report to send. Can be specified as an - * IOBufferMemoryDescriptor or a raw buffer and size. - * @param options See endpoint_options for available options. - * @result kIOReturnSuccess if the enqueue was successful, - * an error code otherwise. - */ - virtual IOReturn enqueueReport(unsigned packetType, - uint64_t timestamp, - PayloadBuffer reportBuffer, - endpoint_options options = 0) LOCALONLY; - - /*! @function enqueueCommand - * @abstract Send a command via the endpoint interface. - * This method will send a command packet over the endpoint - * interface. A command is a message that requires an - * acknowledgement. The packet will either be sent immediately - * (blocking), or it will be enqueued and sent asynchronously - * depending on the endpoint implementation. - * @param context Caller defined context, passed to the response - * handler when a response is received for this command. - * @param packetType The type of packet, implementation specific. - * Values less than kIOPPacketTypePrivate are reserved for - * internal AFK use. See AFKPacket.h. - * @param timestamp Timestamp for this enqueue action. Units and - * domain are implementation-specific. - * @param commandBuffer The command to send. Can be specified - * as an IOBufferMemoryDescriptor or a raw buffer and size. - * @param responseBuffer The size field should contain the expected - * (maximum) response size, other fields are not used. - * @param options See endpoint_options for available options. - * @param forClient Reference to the calling IOSerivce, required if - * the interface has been opened with kOpenOptions_Multi_Client. - * @result kIOReturnSuccess if the enqueue was successful, - * an error code otherwise. - */ - virtual IOReturn enqueueCommand(void * context, - unsigned packetType, - uint64_t timestamp, - PayloadBuffer commandBuffer, - PayloadBuffer responseBuffer, - endpoint_options options = 0, - IOService * forClient = nullptr) LOCALONLY; - - /*! @function enqueueResponse - * @abstract Send a response via the endpoint interface. - * This method will send a response packet over the endpoint - * interface. A response is a message sent in response to a - * command received via the command handler. The packet - * will either be sent immediately (blocking), or it will be - * enqueued and sent asynchronously depending on the - * endpoint implementation. - * @param id CommandID that was previously passed - * to the command handler. - * @param result Result of the associated command. - * @param timestamp Timestamp for this enqueue action. Units and - * domain are implementation-specific. - * @param responseBuffer The response to send. Can be specified as an - * IOBufferMemoryDescriptor or a raw buffer and size. - * @param options See endpoint_options for available options. - * @return kIOReturnSuccess if the enqueue was successful, - * an error code otherwise. - */ - virtual IOReturn enqueueResponse(CommandID id, - IOReturn result, - uint64_t timestamp, - PayloadBuffer responseBuffer, - endpoint_options options = 0) LOCALONLY; -}; - -// Internally used private functions -class EXTENDS (AFKEndpointInterface) AFKEndpointInterfacePrivate -{ - virtual kern_return_t Open(IOService * forClient, - AFKUserDataPipe ** pipe, - uint32_t options) KERNEL; - - virtual kern_return_t Close(IOService * forClient, - uint32_t options) KERNEL; -}; - -#endif /* _AFKDriverKit_AFKEndpointInterface_h */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserDataPipe.h b/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserDataPipe.h deleted file mode 100644 index 492644ea..00000000 --- a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserDataPipe.h +++ /dev/null @@ -1,897 +0,0 @@ -/* iig(DriverKit-324.60.3) generated from AFKUserDataPipe.iig */ - -/* AFKUserDataPipe.iig:1-38 */ -/* - * Copyright (c) 2021 Apple Inc. All rights reserved. - * - * This document is the property of Apple Inc. - * It is considered confidential and proprietary. - * - * This document may not be reproduced or transmitted in any form, - * in whole or in part, without the express written permission of - * Apple Inc. - */ - -#if !__IIG -#if KERNEL -#include -#endif -#endif - -#ifndef _AFKDriverKit_AFKUserDataPipe_h -#define _AFKDriverKit_AFKUserDataPipe_h - -#include -#include /* .iig include */ -#include /* .iig include */ -#include /* .iig include */ -#include /* .iig include */ - -/*! @define AFKUserDataPipe - * @abstract An internal class that should not be used. - * This class is internal only, and will be subject - * to constant change. - */ - -#if AFKDKUser -uint32_t _enqueue_report_opts(endpoint_options options); -uint32_t _enqueue_command_opts(endpoint_options options); -uint32_t _enqueue_response_opts(endpoint_options options); -#endif /* AFKDKUser */ - -/* source class AFKUserDataPipe AFKUserDataPipe.iig:39-77 */ - -#if __DOCUMENTATION__ -#define KERNEL IIG_KERNEL - -class KERNEL AFKUserDataPipe : public OSObject -{ - using super = OSObject; - - virtual AFKUserMemoryDescriptor * prepareBuffer(PayloadBuffer data) LOCALONLY; - -public: - virtual bool init() override; - - virtual void free() override; - - virtual bool open() LOCALONLY; - - virtual void close(OSActionAbortedHandler handler) LOCALONLY; - - virtual void setReportHandler(ReportBlock reportHandler) LOCALONLY; - - virtual void setCommandHandler(CommandBlock commandHandler) LOCALONLY; - - virtual void setResponseHandler(ResponseBlock responseHandler) LOCALONLY; - - virtual IOReturn enqueueReport(unsigned packetType, - uint64_t timestamp, - PayloadBuffer reportBuffer, - endpoint_options options = 0) LOCALONLY; - - virtual IOReturn enqueueCommand(void * context, - unsigned packetType, - uint64_t timestamp, - PayloadBuffer commandBuffer, - PayloadBuffer responseBuffer, - endpoint_options options = 0, - IOService * forClient = nullptr) LOCALONLY; - - virtual IOReturn enqueueResponse(CommandID id, - IOReturn result, - uint64_t timestamp, - PayloadBuffer responseBuffer, - endpoint_options options = 0) LOCALONLY; -}; - -#undef KERNEL -#else /* __DOCUMENTATION__ */ - -/* generated class AFKUserDataPipe AFKUserDataPipe.iig:39-77 */ - -#define AFKUserDataPipe_EnqueueResponse_ID 0xc10141ce29d0a683ULL -#define AFKUserDataPipe_EnqueueCommand_ID 0x8ee8626f4b3f3021ULL -#define AFKUserDataPipe_EnqueueReport_ID 0xb49910bb998957cdULL -#define AFKUserDataPipe_SendHandleResponseAction_ID 0xb4d82ea5d3b827b7ULL -#define AFKUserDataPipe__HandleResponse_ID 0xdfa384c702f44f1fULL -#define AFKUserDataPipe_HandleResponse_ID 0xc92d5ba3b04310deULL -#define AFKUserDataPipe_SendHandleCommandAction_ID 0xd448141067d9ef46ULL -#define AFKUserDataPipe_CompleteHandleCommand_ID 0xbf61bb4c9a1471b8ULL -#define AFKUserDataPipe__HandleCommand_ID 0xafd924d4d6ea7e6eULL -#define AFKUserDataPipe_HandleCommand_ID 0xcfc1ddbce436d302ULL -#define AFKUserDataPipe_SendHandleReportAction_ID 0x9d480c65b28d49c9ULL -#define AFKUserDataPipe__HandleReport_ID 0xa085980707a86a8dULL -#define AFKUserDataPipe_HandleReport_ID 0xc5b95e2452c9d0a9ULL - -#define AFKUserDataPipe_EnqueueResponse_Args \ - uint64_t context, \ - IOReturn result, \ - uint64_t timestamp, \ - AFKUserMemoryDescriptor * payload, \ - uint32_t options - -#define AFKUserDataPipe_EnqueueCommand_Args \ - uint64_t context, \ - unsigned int packetType, \ - uint64_t timestamp, \ - AFKUserMemoryDescriptor * payload, \ - size_t outputPayloadSize, \ - uint32_t options, \ - IOService * forClient - -#define AFKUserDataPipe_EnqueueReport_Args \ - unsigned int packetType, \ - uint64_t timestamp, \ - AFKUserMemoryDescriptor * payload, \ - uint32_t options - -#define AFKUserDataPipe_SendHandleResponseAction_Args \ - OSAction * action - -#define AFKUserDataPipe__HandleResponse_Args \ - uint64_t context, \ - IOReturn result, \ - uint64_t timestamp, \ - AFKUserMemoryDescriptor * payload, \ - OSAction * action - -#define AFKUserDataPipe_HandleResponse_Args \ - uint64_t context, \ - IOReturn result, \ - uint64_t timestamp, \ - AFKUserMemoryDescriptor * payload, \ - OSAction * action - -#define AFKUserDataPipe_SendHandleCommandAction_Args \ - OSAction * action - -#define AFKUserDataPipe_CompleteHandleCommand_Args \ - uint64_t context, \ - IOReturn result, \ - OSAction * action - -#define AFKUserDataPipe__HandleCommand_Args \ - uint64_t context, \ - uint32_t packetType, \ - uint64_t timestamp, \ - AFKUserMemoryDescriptor * payload, \ - uint32_t options, \ - OSAction * action - -#define AFKUserDataPipe_HandleCommand_Args \ - uint64_t context, \ - uint32_t packetType, \ - uint64_t timestamp, \ - AFKUserMemoryDescriptor * payload, \ - uint32_t options, \ - OSAction * action - -#define AFKUserDataPipe_SendHandleReportAction_Args \ - OSAction * action - -#define AFKUserDataPipe__HandleReport_Args \ - uint32_t packetType, \ - uint64_t timestamp, \ - AFKUserMemoryDescriptor * payload, \ - uint32_t options, \ - OSAction * action - -#define AFKUserDataPipe_HandleReport_Args \ - uint32_t packetType, \ - uint64_t timestamp, \ - AFKUserMemoryDescriptor * payload, \ - uint32_t options, \ - OSAction * action - -#define AFKUserDataPipe_Methods \ -\ -public:\ -\ - virtual kern_return_t\ - Dispatch(const IORPC rpc) APPLE_KEXT_OVERRIDE;\ -\ - static kern_return_t\ - _Dispatch(AFKUserDataPipe * self, const IORPC rpc);\ -\ - IOReturn\ - EnqueueResponse(\ - uint64_t context,\ - IOReturn result,\ - uint64_t timestamp,\ - AFKUserMemoryDescriptor * payload,\ - uint32_t options,\ - OSDispatchMethod supermethod = NULL);\ -\ - IOReturn\ - EnqueueCommand(\ - uint64_t context,\ - unsigned int packetType,\ - uint64_t timestamp,\ - AFKUserMemoryDescriptor * payload,\ - size_t outputPayloadSize,\ - uint32_t options,\ - IOService * forClient,\ - OSDispatchMethod supermethod = NULL);\ -\ - IOReturn\ - EnqueueReport(\ - unsigned int packetType,\ - uint64_t timestamp,\ - AFKUserMemoryDescriptor * payload,\ - uint32_t options,\ - OSDispatchMethod supermethod = NULL);\ -\ - IOReturn\ - SendHandleResponseAction(\ - OSAction * action,\ - OSDispatchMethod supermethod = NULL);\ -\ - kern_return_t\ - CreateAction_HandleResponse(size_t referenceSize, OSAction ** action);\ -\ - void\ - HandleResponse(\ - uint64_t context,\ - IOReturn result,\ - uint64_t timestamp,\ - AFKUserMemoryDescriptor * payload,\ - OSAction * action,\ - OSDispatchMethod supermethod = NULL);\ -\ - IOReturn\ - SendHandleCommandAction(\ - OSAction * action,\ - OSDispatchMethod supermethod = NULL);\ -\ - IOReturn\ - CompleteHandleCommand(\ - uint64_t context,\ - IOReturn result,\ - OSAction * action,\ - OSDispatchMethod supermethod = NULL);\ -\ - kern_return_t\ - CreateAction_HandleCommand(size_t referenceSize, OSAction ** action);\ -\ - void\ - HandleCommand(\ - uint64_t context,\ - uint32_t packetType,\ - uint64_t timestamp,\ - AFKUserMemoryDescriptor * payload,\ - uint32_t options,\ - OSAction * action,\ - OSDispatchMethod supermethod = NULL);\ -\ - IOReturn\ - SendHandleReportAction(\ - OSAction * action,\ - OSDispatchMethod supermethod = NULL);\ -\ - kern_return_t\ - CreateAction_HandleReport(size_t referenceSize, OSAction ** action);\ -\ - void\ - HandleReport(\ - uint32_t packetType,\ - uint64_t timestamp,\ - AFKUserMemoryDescriptor * payload,\ - uint32_t options,\ - OSAction * action,\ - OSDispatchMethod supermethod = NULL);\ -\ -\ -protected:\ - /* _Impl methods */\ -\ - void\ - _HandleResponse_Impl(AFKUserDataPipe__HandleResponse_Args);\ -\ - void\ - _HandleCommand_Impl(AFKUserDataPipe__HandleCommand_Args);\ -\ - void\ - _HandleReport_Impl(AFKUserDataPipe__HandleReport_Args);\ -\ -\ -public:\ - /* _Invoke methods */\ -\ - typedef IOReturn (*EnqueueResponse_Handler)(OSMetaClassBase * target, AFKUserDataPipe_EnqueueResponse_Args);\ - static kern_return_t\ - EnqueueResponse_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - EnqueueResponse_Handler func);\ -\ - typedef IOReturn (*EnqueueCommand_Handler)(OSMetaClassBase * target, AFKUserDataPipe_EnqueueCommand_Args);\ - static kern_return_t\ - EnqueueCommand_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - EnqueueCommand_Handler func);\ -\ - typedef IOReturn (*EnqueueReport_Handler)(OSMetaClassBase * target, AFKUserDataPipe_EnqueueReport_Args);\ - static kern_return_t\ - EnqueueReport_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - EnqueueReport_Handler func);\ -\ - typedef IOReturn (*SendHandleResponseAction_Handler)(OSMetaClassBase * target, AFKUserDataPipe_SendHandleResponseAction_Args);\ - static kern_return_t\ - SendHandleResponseAction_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - SendHandleResponseAction_Handler func);\ -\ - typedef void (*HandleResponse_Handler)(OSMetaClassBase * target, AFKUserDataPipe_HandleResponse_Args);\ - static kern_return_t\ - HandleResponse_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - HandleResponse_Handler func,\ - const OSMetaClass * targetActionClass);\ -\ - static kern_return_t\ - HandleResponse_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - HandleResponse_Handler func);\ -\ - typedef IOReturn (*SendHandleCommandAction_Handler)(OSMetaClassBase * target, AFKUserDataPipe_SendHandleCommandAction_Args);\ - static kern_return_t\ - SendHandleCommandAction_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - SendHandleCommandAction_Handler func);\ -\ - typedef IOReturn (*CompleteHandleCommand_Handler)(OSMetaClassBase * target, AFKUserDataPipe_CompleteHandleCommand_Args);\ - static kern_return_t\ - CompleteHandleCommand_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - CompleteHandleCommand_Handler func);\ -\ - typedef void (*HandleCommand_Handler)(OSMetaClassBase * target, AFKUserDataPipe_HandleCommand_Args);\ - static kern_return_t\ - HandleCommand_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - HandleCommand_Handler func,\ - const OSMetaClass * targetActionClass);\ -\ - static kern_return_t\ - HandleCommand_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - HandleCommand_Handler func);\ -\ - typedef IOReturn (*SendHandleReportAction_Handler)(OSMetaClassBase * target, AFKUserDataPipe_SendHandleReportAction_Args);\ - static kern_return_t\ - SendHandleReportAction_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - SendHandleReportAction_Handler func);\ -\ - typedef void (*HandleReport_Handler)(OSMetaClassBase * target, AFKUserDataPipe_HandleReport_Args);\ - static kern_return_t\ - HandleReport_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - HandleReport_Handler func,\ - const OSMetaClass * targetActionClass);\ -\ - static kern_return_t\ - HandleReport_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - HandleReport_Handler func);\ -\ - - -#define AFKUserDataPipe_KernelMethods \ -\ -protected:\ - /* _Impl methods */\ -\ - IOReturn\ - EnqueueResponse_Impl(AFKUserDataPipe_EnqueueResponse_Args);\ -\ - IOReturn\ - EnqueueCommand_Impl(AFKUserDataPipe_EnqueueCommand_Args);\ -\ - IOReturn\ - EnqueueReport_Impl(AFKUserDataPipe_EnqueueReport_Args);\ -\ - IOReturn\ - SendHandleResponseAction_Impl(AFKUserDataPipe_SendHandleResponseAction_Args);\ -\ - IOReturn\ - SendHandleCommandAction_Impl(AFKUserDataPipe_SendHandleCommandAction_Args);\ -\ - IOReturn\ - CompleteHandleCommand_Impl(AFKUserDataPipe_CompleteHandleCommand_Args);\ -\ - IOReturn\ - SendHandleReportAction_Impl(AFKUserDataPipe_SendHandleReportAction_Args);\ -\ - - -#define AFKUserDataPipe_VirtualMethods \ -\ -public:\ -\ - virtual AFKUserMemoryDescriptor *\ - prepareBuffer(\ - PayloadBuffer data) APPLE_KEXT_OVERRIDE;\ -\ - virtual bool\ - init(\ -) APPLE_KEXT_OVERRIDE;\ -\ - virtual void\ - free(\ -) APPLE_KEXT_OVERRIDE;\ -\ - virtual bool\ - open(\ -) APPLE_KEXT_OVERRIDE;\ -\ - virtual void\ - close(\ - OSActionAbortedHandler handler) APPLE_KEXT_OVERRIDE;\ -\ - virtual void\ - setReportHandler(\ - ReportBlock reportHandler) APPLE_KEXT_OVERRIDE;\ -\ - virtual void\ - setCommandHandler(\ - CommandBlock commandHandler) APPLE_KEXT_OVERRIDE;\ -\ - virtual void\ - setResponseHandler(\ - ResponseBlock responseHandler) APPLE_KEXT_OVERRIDE;\ -\ - virtual IOReturn\ - enqueueReport(\ - unsigned int packetType,\ - uint64_t timestamp,\ - PayloadBuffer reportBuffer,\ - unsigned char * options = 0) APPLE_KEXT_OVERRIDE;\ -\ - virtual IOReturn\ - enqueueCommand(\ - void * context,\ - unsigned int packetType,\ - uint64_t timestamp,\ - PayloadBuffer commandBuffer,\ - PayloadBuffer responseBuffer,\ - unsigned char * options = 0,\ - IOService * forClient = nullptr) APPLE_KEXT_OVERRIDE;\ -\ - virtual IOReturn\ - enqueueResponse(\ - CommandID id,\ - IOReturn result,\ - uint64_t timestamp,\ - PayloadBuffer responseBuffer,\ - unsigned char * options = 0) APPLE_KEXT_OVERRIDE;\ -\ - - -#if !KERNEL - -extern OSMetaClass * gAFKUserDataPipeMetaClass; -extern const OSClassLoadInformation AFKUserDataPipe_Class; - -class AFKUserDataPipeMetaClass : public OSMetaClass -{ -public: - virtual kern_return_t - New(OSObject * instance) override; - virtual kern_return_t - Dispatch(const IORPC rpc) override; -}; - -#endif /* !KERNEL */ - -#if !KERNEL - -class AFKUserDataPipeInterface : public OSInterface -{ -public: - virtual AFKUserMemoryDescriptor * - prepareBuffer(PayloadBuffer data) = 0; - - virtual bool - open() = 0; - - virtual void - close(OSActionAbortedHandler handler) = 0; - - virtual void - setReportHandler(ReportBlock reportHandler) = 0; - - virtual void - setCommandHandler(CommandBlock commandHandler) = 0; - - virtual void - setResponseHandler(ResponseBlock responseHandler) = 0; - - virtual IOReturn - enqueueReport(unsigned int packetType, - uint64_t timestamp, - PayloadBuffer reportBuffer, - unsigned char * options) = 0; - - virtual IOReturn - enqueueCommand(void * context, - unsigned int packetType, - uint64_t timestamp, - PayloadBuffer commandBuffer, - PayloadBuffer responseBuffer, - unsigned char * options, - IOService * forClient) = 0; - - virtual IOReturn - enqueueResponse(CommandID id, - IOReturn result, - uint64_t timestamp, - PayloadBuffer responseBuffer, - unsigned char * options) = 0; - - AFKUserMemoryDescriptor * - prepareBuffer_Call(PayloadBuffer data) { return prepareBuffer(data); };\ - - bool - open_Call() { return open(); };\ - - void - close_Call(OSActionAbortedHandler handler) { return close(handler); };\ - - void - setReportHandler_Call(ReportBlock reportHandler) { return setReportHandler(reportHandler); };\ - - void - setCommandHandler_Call(CommandBlock commandHandler) { return setCommandHandler(commandHandler); };\ - - void - setResponseHandler_Call(ResponseBlock responseHandler) { return setResponseHandler(responseHandler); };\ - - IOReturn - enqueueReport_Call(unsigned int packetType, - uint64_t timestamp, - PayloadBuffer reportBuffer, - unsigned char * options) { return enqueueReport(packetType, timestamp, reportBuffer, options); };\ - - IOReturn - enqueueCommand_Call(void * context, - unsigned int packetType, - uint64_t timestamp, - PayloadBuffer commandBuffer, - PayloadBuffer responseBuffer, - unsigned char * options, - IOService * forClient) { return enqueueCommand(context, packetType, timestamp, commandBuffer, responseBuffer, options, forClient); };\ - - IOReturn - enqueueResponse_Call(CommandID id, - IOReturn result, - uint64_t timestamp, - PayloadBuffer responseBuffer, - unsigned char * options) { return enqueueResponse(id, result, timestamp, responseBuffer, options); };\ - -}; - -struct AFKUserDataPipe_IVars; -struct AFKUserDataPipe_LocalIVars; - -class AFKUserDataPipe : public OSObject, public AFKUserDataPipeInterface -{ -#if !KERNEL - friend class AFKUserDataPipeMetaClass; -#endif /* !KERNEL */ - -#if !KERNEL -public: -#ifdef AFKUserDataPipe_DECLARE_IVARS -AFKUserDataPipe_DECLARE_IVARS -#else /* AFKUserDataPipe_DECLARE_IVARS */ - union - { - AFKUserDataPipe_IVars * ivars; - AFKUserDataPipe_LocalIVars * lvars; - }; -#endif /* AFKUserDataPipe_DECLARE_IVARS */ -#endif /* !KERNEL */ - -#if !KERNEL - static OSMetaClass * - sGetMetaClass() { return gAFKUserDataPipeMetaClass; }; -#endif /* KERNEL */ - - using super = OSObject; - -#if !KERNEL - AFKUserDataPipe_Methods - AFKUserDataPipe_VirtualMethods -#endif /* !KERNEL */ - -}; -#endif /* !KERNEL */ - - -#define OSAction_AFKUserDataPipe__HandleResponse_Methods \ -\ -public:\ -\ - virtual kern_return_t\ - Dispatch(const IORPC rpc) APPLE_KEXT_OVERRIDE;\ -\ - static kern_return_t\ - _Dispatch(OSAction_AFKUserDataPipe__HandleResponse * self, const IORPC rpc);\ -\ -\ -protected:\ - /* _Impl methods */\ -\ -\ -public:\ - /* _Invoke methods */\ -\ - - -#define OSAction_AFKUserDataPipe__HandleResponse_KernelMethods \ -\ -protected:\ - /* _Impl methods */\ -\ - - -#define OSAction_AFKUserDataPipe__HandleResponse_VirtualMethods \ -\ -public:\ -\ - - -#if !KERNEL - -extern OSMetaClass * gOSAction_AFKUserDataPipe__HandleResponseMetaClass; -extern const OSClassLoadInformation OSAction_AFKUserDataPipe__HandleResponse_Class; - -class OSAction_AFKUserDataPipe__HandleResponseMetaClass : public OSMetaClass -{ -public: - virtual kern_return_t - New(OSObject * instance) override; - virtual kern_return_t - Dispatch(const IORPC rpc) override; -}; - -#endif /* !KERNEL */ - -class __attribute__((availability(driverkit,introduced=20,message="Type-safe OSAction factory methods are available in DriverKit 20 and newer"))) OSAction_AFKUserDataPipe__HandleResponseInterface : public OSInterface -{ -public: -}; - -struct OSAction_AFKUserDataPipe__HandleResponse_IVars; -struct OSAction_AFKUserDataPipe__HandleResponse_LocalIVars; - -class __attribute__((availability(driverkit,introduced=20,message="Type-safe OSAction factory methods are available in DriverKit 20 and newer"))) OSAction_AFKUserDataPipe__HandleResponse : public OSAction, public OSAction_AFKUserDataPipe__HandleResponseInterface -{ -#if KERNEL - OSDeclareDefaultStructorsWithDispatch(OSAction_AFKUserDataPipe__HandleResponse); -#endif /* KERNEL */ - -#if !KERNEL - friend class OSAction_AFKUserDataPipe__HandleResponseMetaClass; -#endif /* !KERNEL */ - -public: -#ifdef OSAction_AFKUserDataPipe__HandleResponse_DECLARE_IVARS -OSAction_AFKUserDataPipe__HandleResponse_DECLARE_IVARS -#else /* OSAction_AFKUserDataPipe__HandleResponse_DECLARE_IVARS */ - union - { - OSAction_AFKUserDataPipe__HandleResponse_IVars * ivars; - OSAction_AFKUserDataPipe__HandleResponse_LocalIVars * lvars; - }; -#endif /* OSAction_AFKUserDataPipe__HandleResponse_DECLARE_IVARS */ -#if !KERNEL - static OSMetaClass * - sGetMetaClass() { return gOSAction_AFKUserDataPipe__HandleResponseMetaClass; }; - virtual const OSMetaClass * - getMetaClass() const APPLE_KEXT_OVERRIDE { return gOSAction_AFKUserDataPipe__HandleResponseMetaClass; }; -#endif /* KERNEL */ - - using super = OSAction; - -#if !KERNEL - OSAction_AFKUserDataPipe__HandleResponse_Methods -#endif /* !KERNEL */ - - OSAction_AFKUserDataPipe__HandleResponse_VirtualMethods -}; - -#define OSAction_AFKUserDataPipe__HandleCommand_Methods \ -\ -public:\ -\ - virtual kern_return_t\ - Dispatch(const IORPC rpc) APPLE_KEXT_OVERRIDE;\ -\ - static kern_return_t\ - _Dispatch(OSAction_AFKUserDataPipe__HandleCommand * self, const IORPC rpc);\ -\ -\ -protected:\ - /* _Impl methods */\ -\ -\ -public:\ - /* _Invoke methods */\ -\ - - -#define OSAction_AFKUserDataPipe__HandleCommand_KernelMethods \ -\ -protected:\ - /* _Impl methods */\ -\ - - -#define OSAction_AFKUserDataPipe__HandleCommand_VirtualMethods \ -\ -public:\ -\ - - -#if !KERNEL - -extern OSMetaClass * gOSAction_AFKUserDataPipe__HandleCommandMetaClass; -extern const OSClassLoadInformation OSAction_AFKUserDataPipe__HandleCommand_Class; - -class OSAction_AFKUserDataPipe__HandleCommandMetaClass : public OSMetaClass -{ -public: - virtual kern_return_t - New(OSObject * instance) override; - virtual kern_return_t - Dispatch(const IORPC rpc) override; -}; - -#endif /* !KERNEL */ - -class __attribute__((availability(driverkit,introduced=20,message="Type-safe OSAction factory methods are available in DriverKit 20 and newer"))) OSAction_AFKUserDataPipe__HandleCommandInterface : public OSInterface -{ -public: -}; - -struct OSAction_AFKUserDataPipe__HandleCommand_IVars; -struct OSAction_AFKUserDataPipe__HandleCommand_LocalIVars; - -class __attribute__((availability(driverkit,introduced=20,message="Type-safe OSAction factory methods are available in DriverKit 20 and newer"))) OSAction_AFKUserDataPipe__HandleCommand : public OSAction, public OSAction_AFKUserDataPipe__HandleCommandInterface -{ -#if KERNEL - OSDeclareDefaultStructorsWithDispatch(OSAction_AFKUserDataPipe__HandleCommand); -#endif /* KERNEL */ - -#if !KERNEL - friend class OSAction_AFKUserDataPipe__HandleCommandMetaClass; -#endif /* !KERNEL */ - -public: -#ifdef OSAction_AFKUserDataPipe__HandleCommand_DECLARE_IVARS -OSAction_AFKUserDataPipe__HandleCommand_DECLARE_IVARS -#else /* OSAction_AFKUserDataPipe__HandleCommand_DECLARE_IVARS */ - union - { - OSAction_AFKUserDataPipe__HandleCommand_IVars * ivars; - OSAction_AFKUserDataPipe__HandleCommand_LocalIVars * lvars; - }; -#endif /* OSAction_AFKUserDataPipe__HandleCommand_DECLARE_IVARS */ -#if !KERNEL - static OSMetaClass * - sGetMetaClass() { return gOSAction_AFKUserDataPipe__HandleCommandMetaClass; }; - virtual const OSMetaClass * - getMetaClass() const APPLE_KEXT_OVERRIDE { return gOSAction_AFKUserDataPipe__HandleCommandMetaClass; }; -#endif /* KERNEL */ - - using super = OSAction; - -#if !KERNEL - OSAction_AFKUserDataPipe__HandleCommand_Methods -#endif /* !KERNEL */ - - OSAction_AFKUserDataPipe__HandleCommand_VirtualMethods -}; - -#define OSAction_AFKUserDataPipe__HandleReport_Methods \ -\ -public:\ -\ - virtual kern_return_t\ - Dispatch(const IORPC rpc) APPLE_KEXT_OVERRIDE;\ -\ - static kern_return_t\ - _Dispatch(OSAction_AFKUserDataPipe__HandleReport * self, const IORPC rpc);\ -\ -\ -protected:\ - /* _Impl methods */\ -\ -\ -public:\ - /* _Invoke methods */\ -\ - - -#define OSAction_AFKUserDataPipe__HandleReport_KernelMethods \ -\ -protected:\ - /* _Impl methods */\ -\ - - -#define OSAction_AFKUserDataPipe__HandleReport_VirtualMethods \ -\ -public:\ -\ - - -#if !KERNEL - -extern OSMetaClass * gOSAction_AFKUserDataPipe__HandleReportMetaClass; -extern const OSClassLoadInformation OSAction_AFKUserDataPipe__HandleReport_Class; - -class OSAction_AFKUserDataPipe__HandleReportMetaClass : public OSMetaClass -{ -public: - virtual kern_return_t - New(OSObject * instance) override; - virtual kern_return_t - Dispatch(const IORPC rpc) override; -}; - -#endif /* !KERNEL */ - -class __attribute__((availability(driverkit,introduced=20,message="Type-safe OSAction factory methods are available in DriverKit 20 and newer"))) OSAction_AFKUserDataPipe__HandleReportInterface : public OSInterface -{ -public: -}; - -struct OSAction_AFKUserDataPipe__HandleReport_IVars; -struct OSAction_AFKUserDataPipe__HandleReport_LocalIVars; - -class __attribute__((availability(driverkit,introduced=20,message="Type-safe OSAction factory methods are available in DriverKit 20 and newer"))) OSAction_AFKUserDataPipe__HandleReport : public OSAction, public OSAction_AFKUserDataPipe__HandleReportInterface -{ -#if KERNEL - OSDeclareDefaultStructorsWithDispatch(OSAction_AFKUserDataPipe__HandleReport); -#endif /* KERNEL */ - -#if !KERNEL - friend class OSAction_AFKUserDataPipe__HandleReportMetaClass; -#endif /* !KERNEL */ - -public: -#ifdef OSAction_AFKUserDataPipe__HandleReport_DECLARE_IVARS -OSAction_AFKUserDataPipe__HandleReport_DECLARE_IVARS -#else /* OSAction_AFKUserDataPipe__HandleReport_DECLARE_IVARS */ - union - { - OSAction_AFKUserDataPipe__HandleReport_IVars * ivars; - OSAction_AFKUserDataPipe__HandleReport_LocalIVars * lvars; - }; -#endif /* OSAction_AFKUserDataPipe__HandleReport_DECLARE_IVARS */ -#if !KERNEL - static OSMetaClass * - sGetMetaClass() { return gOSAction_AFKUserDataPipe__HandleReportMetaClass; }; - virtual const OSMetaClass * - getMetaClass() const APPLE_KEXT_OVERRIDE { return gOSAction_AFKUserDataPipe__HandleReportMetaClass; }; -#endif /* KERNEL */ - - using super = OSAction; - -#if !KERNEL - OSAction_AFKUserDataPipe__HandleReport_Methods -#endif /* !KERNEL */ - - OSAction_AFKUserDataPipe__HandleReport_VirtualMethods -}; - -#endif /* !__DOCUMENTATION__ */ - - -/* AFKUserDataPipe.iig:152- */ - -#endif /* _AFKDriverKit_AFKUserDataPipe_h */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserDataPipe.iig b/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserDataPipe.iig deleted file mode 100644 index 350d4d80..00000000 --- a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserDataPipe.iig +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 2021 Apple Inc. All rights reserved. - * - * This document is the property of Apple Inc. - * It is considered confidential and proprietary. - * - * This document may not be reproduced or transmitted in any form, - * in whole or in part, without the express written permission of - * Apple Inc. - */ - -#if !__IIG -#if KERNEL -#include -#endif -#endif - -#ifndef _AFKDriverKit_AFKUserDataPipe_h -#define _AFKDriverKit_AFKUserDataPipe_h - -#include -#include -#include -#include -#include - -/*! @define AFKUserDataPipe - * @abstract An internal class that should not be used. - * This class is internal only, and will be subject - * to constant change. - */ - -#if AFKDKUser -uint32_t _enqueue_report_opts(endpoint_options options); -uint32_t _enqueue_command_opts(endpoint_options options); -uint32_t _enqueue_response_opts(endpoint_options options); -#endif /* AFKDKUser */ - -class KERNEL AFKUserDataPipe : public OSObject -{ - using super = OSObject; - - virtual AFKUserMemoryDescriptor * prepareBuffer(PayloadBuffer data) LOCALONLY; - -public: - virtual bool init() override; - - virtual void free() override; - - virtual bool open() LOCALONLY; - - virtual void close(OSActionAbortedHandler handler) LOCALONLY; - - virtual void setReportHandler(ReportBlock reportHandler) LOCALONLY; - - virtual void setCommandHandler(CommandBlock commandHandler) LOCALONLY; - - virtual void setResponseHandler(ResponseBlock responseHandler) LOCALONLY; - - virtual IOReturn enqueueReport(unsigned packetType, - uint64_t timestamp, - PayloadBuffer reportBuffer, - endpoint_options options = 0) LOCALONLY; - - virtual IOReturn enqueueCommand(void * context, - unsigned packetType, - uint64_t timestamp, - PayloadBuffer commandBuffer, - PayloadBuffer responseBuffer, - endpoint_options options = 0, - IOService * forClient = nullptr) LOCALONLY; - - virtual IOReturn enqueueResponse(CommandID id, - IOReturn result, - uint64_t timestamp, - PayloadBuffer responseBuffer, - endpoint_options options = 0) LOCALONLY; -}; - -class EXTENDS (AFKUserDataPipe) AFKUserDataPipePrivate -{ - virtual void HandleReport(uint32_t packetType, - uint64_t timestamp, - AFKUserMemoryDescriptor * payload, - uint32_t options, - OSAction * action TARGET) LOCAL = 0; - - virtual void _HandleReport(uint32_t packetType, - uint64_t timestamp, - AFKUserMemoryDescriptor * payload, - uint32_t options, - OSAction * action) LOCAL - TYPE(HandleReport); - - virtual IOReturn SendHandleReportAction(OSAction * action TYPE(HandleReport)); - - virtual void HandleCommand(uint64_t context, - uint32_t packetType, - uint64_t timestamp, - AFKUserMemoryDescriptor * payload, - uint32_t options, - OSAction * action TARGET) LOCAL = 0; - - virtual void _HandleCommand(uint64_t context, - uint32_t packetType, - uint64_t timestamp, - AFKUserMemoryDescriptor * payload, - uint32_t options, - OSAction * action) LOCAL - TYPE(HandleCommand); - - virtual IOReturn CompleteHandleCommand(uint64_t context, - IOReturn result, - OSAction * action TYPE(HandleCommand)); - - virtual IOReturn SendHandleCommandAction(OSAction * action TYPE(HandleCommand)); - - virtual void HandleResponse(uint64_t context, - IOReturn result, - uint64_t timestamp, - AFKUserMemoryDescriptor * payload, - OSAction * action TARGET) LOCAL = 0; - - virtual void _HandleResponse(uint64_t context, - IOReturn result, - uint64_t timestamp, - AFKUserMemoryDescriptor * payload, - OSAction * action) LOCAL - TYPE(HandleResponse); - - virtual IOReturn SendHandleResponseAction(OSAction * action TYPE(HandleResponse)); - - virtual IOReturn EnqueueReport(unsigned packetType, - uint64_t timestamp, - AFKUserMemoryDescriptor * payload, - uint32_t options) KERNEL; - - virtual IOReturn EnqueueCommand(uint64_t context, - unsigned packetType, - uint64_t timestamp, - AFKUserMemoryDescriptor * payload, - size_t outputPayloadSize, - uint32_t options, - IOService * forClient) KERNEL; - - virtual IOReturn EnqueueResponse(uint64_t context, - IOReturn result, - uint64_t timestamp, - AFKUserMemoryDescriptor * payload, - uint32_t options) KERNEL; -}; - -#endif /* _AFKDriverKit_AFKUserDataPipe_h */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserMemoryDescriptor.h b/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserMemoryDescriptor.h deleted file mode 100644 index 917d52c0..00000000 --- a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserMemoryDescriptor.h +++ /dev/null @@ -1,249 +0,0 @@ -/* iig(DriverKit-324.60.3) generated from AFKUserMemoryDescriptor.iig */ - -/* AFKUserMemoryDescriptor.iig:1-23 */ -/* - * Copyright (c) 2021 Apple Inc. All rights reserved. - * - * This document is the property of Apple Inc. - * It is considered confidential and proprietary. - * - * This document may not be reproduced or transmitted in any form, - * in whole or in part, without the express written permission of - * Apple Inc. - */ - -#if !__IIG -#if KERNEL -#include -#endif -#endif - -#ifndef _AFKDriverKit_AFKUserMemoryDescriptor_h -#define _AFKDriverKit_AFKUserMemoryDescriptor_h - -#include -#include /* .iig include */ - -/* source class AFKUserMemoryDescriptor AFKUserMemoryDescriptor.iig:24-68 */ - -#if __DOCUMENTATION__ -#define KERNEL IIG_KERNEL - -/*! @class AFKUserMemoryDescriptor - * @brief Memory descriptor object for working with an AFKEndpointInterface. - * @classdesign This class is currently nothing but a wrapper for an IOBufferMemoryDescriptor. - * Functions may be altered in the future, or new functions may be added to - * provide better functionality and efficiency by leveraging the AFK framework. - */ -class KERNEL AFKUserMemoryDescriptor : public OSObject -{ - using super = OSObject; - -public: - // Overridden functions, see IOService documentation for usage - virtual bool init() override; - virtual void free() override; - - /*! - * @function createBuffer - * @abstract Create a buffer object. - * @param options Options to specify the request. Currently - * no options are supported. Pass 0 to this parameter. - * @param capacity The desired size of the buffer. - * @result The successfully created and initialized memory buffer - * or NULL if an issue was encountered. - */ - static AFKUserMemoryDescriptor * createBuffer(buffer_options options, - uint64_t capacity) LOCALONLY; - - /*! - * @function GetAddressRange - * @abstract Retrieve the memory address and length of the data. - * @param range An IOAddressSegment reference that will be filled in with - * the proper address and length of the backing data buffer. - * @result kIOReturnSuccess if successful, otherwise an error code. - * The range parameter should not be trusted if an error is returned. - */ - IOReturn GetAddressRange(IOAddressSegment * range) LOCALONLY; - - /*! - * @function SetLength - * @abstract Set the valid length of the buffer. - * @param length The length to declare as currently valid. Must be less - * than the initially declared capacity. - * @result kIOReturnSuccess if successful, otherwise an error code. - */ - virtual IOReturn SetLength(uint64_t length) LOCALONLY; -}; - -#undef KERNEL -#else /* __DOCUMENTATION__ */ - -/* generated class AFKUserMemoryDescriptor AFKUserMemoryDescriptor.iig:24-68 */ - -#define AFKUserMemoryDescriptor_RequestBackingBuffer_ID 0x9db46207a53a702aULL -#define AFKUserMemoryDescriptor_Create_ID 0xe1059fb75746385dULL - -#define AFKUserMemoryDescriptor_RequestBackingBuffer_Args \ - IOBufferMemoryDescriptor ** backing - -#define AFKUserMemoryDescriptor_Create_Args \ - uint64_t options, \ - uint64_t capacity, \ - AFKUserMemoryDescriptor ** buff - -#define AFKUserMemoryDescriptor_Methods \ -\ -public:\ -\ - virtual kern_return_t\ - Dispatch(const IORPC rpc) APPLE_KEXT_OVERRIDE;\ -\ - static kern_return_t\ - _Dispatch(AFKUserMemoryDescriptor * self, const IORPC rpc);\ -\ - IOReturn\ - RequestBackingBuffer(\ - IOBufferMemoryDescriptor ** backing,\ - OSDispatchMethod supermethod = NULL);\ -\ - static IOReturn\ - Create(\ - uint64_t options,\ - uint64_t capacity,\ - AFKUserMemoryDescriptor ** buff);\ -\ - static AFKUserMemoryDescriptor *\ - createBuffer(\ - unsigned char * options,\ - uint64_t capacity);\ -\ - IOReturn\ - GetAddressRange(\ - IOAddressSegment * range);\ -\ -\ -protected:\ - /* _Impl methods */\ -\ -\ -public:\ - /* _Invoke methods */\ -\ - typedef IOReturn (*RequestBackingBuffer_Handler)(OSMetaClassBase * target, AFKUserMemoryDescriptor_RequestBackingBuffer_Args);\ - static kern_return_t\ - RequestBackingBuffer_Invoke(const IORPC rpc,\ - OSMetaClassBase * target,\ - RequestBackingBuffer_Handler func);\ -\ - typedef IOReturn (*Create_Handler)(AFKUserMemoryDescriptor_Create_Args);\ - static kern_return_t\ - Create_Invoke(const IORPC rpc,\ - Create_Handler func);\ -\ - - -#define AFKUserMemoryDescriptor_KernelMethods \ -\ -protected:\ - /* _Impl methods */\ -\ - IOReturn\ - RequestBackingBuffer_Impl(AFKUserMemoryDescriptor_RequestBackingBuffer_Args);\ -\ - static IOReturn\ - Create_Impl(AFKUserMemoryDescriptor_Create_Args);\ -\ - - -#define AFKUserMemoryDescriptor_VirtualMethods \ -\ -public:\ -\ - virtual bool\ - init(\ -) APPLE_KEXT_OVERRIDE;\ -\ - virtual void\ - free(\ -) APPLE_KEXT_OVERRIDE;\ -\ - virtual IOReturn\ - SetLength(\ - uint64_t length) APPLE_KEXT_OVERRIDE;\ -\ - - -#if !KERNEL - -extern OSMetaClass * gAFKUserMemoryDescriptorMetaClass; -extern const OSClassLoadInformation AFKUserMemoryDescriptor_Class; - -class AFKUserMemoryDescriptorMetaClass : public OSMetaClass -{ -public: - virtual kern_return_t - New(OSObject * instance) override; - virtual kern_return_t - Dispatch(const IORPC rpc) override; -}; - -#endif /* !KERNEL */ - -#if !KERNEL - -class AFKUserMemoryDescriptorInterface : public OSInterface -{ -public: - virtual IOReturn - SetLength(uint64_t length) = 0; - - IOReturn - SetLength_Call(uint64_t length) { return SetLength(length); };\ - -}; - -struct AFKUserMemoryDescriptor_IVars; -struct AFKUserMemoryDescriptor_LocalIVars; - -class AFKUserMemoryDescriptor : public OSObject, public AFKUserMemoryDescriptorInterface -{ -#if !KERNEL - friend class AFKUserMemoryDescriptorMetaClass; -#endif /* !KERNEL */ - -#if !KERNEL -public: -#ifdef AFKUserMemoryDescriptor_DECLARE_IVARS -AFKUserMemoryDescriptor_DECLARE_IVARS -#else /* AFKUserMemoryDescriptor_DECLARE_IVARS */ - union - { - AFKUserMemoryDescriptor_IVars * ivars; - AFKUserMemoryDescriptor_LocalIVars * lvars; - }; -#endif /* AFKUserMemoryDescriptor_DECLARE_IVARS */ -#endif /* !KERNEL */ - -#if !KERNEL - static OSMetaClass * - sGetMetaClass() { return gAFKUserMemoryDescriptorMetaClass; }; -#endif /* KERNEL */ - - using super = OSObject; - -#if !KERNEL - AFKUserMemoryDescriptor_Methods - AFKUserMemoryDescriptor_VirtualMethods -#endif /* !KERNEL */ - -}; -#endif /* !KERNEL */ - - -#endif /* !__DOCUMENTATION__ */ - - -/* AFKUserMemoryDescriptor.iig:79- */ - -#endif /* _AFKDriverKit_AFKUserMemoryDescriptor_h */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserMemoryDescriptor.iig b/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserMemoryDescriptor.iig deleted file mode 100644 index 0b4a8ead..00000000 --- a/Frameworks/Kernel.framework/Versions/A/Headers/AppleFirmwareKit/AFKUserMemoryDescriptor.iig +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2021 Apple Inc. All rights reserved. - * - * This document is the property of Apple Inc. - * It is considered confidential and proprietary. - * - * This document may not be reproduced or transmitted in any form, - * in whole or in part, without the express written permission of - * Apple Inc. - */ - -#if !__IIG -#if KERNEL -#include -#endif -#endif - -#ifndef _AFKDriverKit_AFKUserMemoryDescriptor_h -#define _AFKDriverKit_AFKUserMemoryDescriptor_h - -#include -#include - -/*! @class AFKUserMemoryDescriptor - * @brief Memory descriptor object for working with an AFKEndpointInterface. - * @classdesign This class is currently nothing but a wrapper for an IOBufferMemoryDescriptor. - * Functions may be altered in the future, or new functions may be added to - * provide better functionality and efficiency by leveraging the AFK framework. - */ -class KERNEL AFKUserMemoryDescriptor : public OSObject -{ - using super = OSObject; - -public: - // Overridden functions, see IOService documentation for usage - virtual bool init() override; - virtual void free() override; - - /*! - * @function createBuffer - * @abstract Create a buffer object. - * @param options Options to specify the request. Currently - * no options are supported. Pass 0 to this parameter. - * @param capacity The desired size of the buffer. - * @result The successfully created and initialized memory buffer - * or NULL if an issue was encountered. - */ - static AFKUserMemoryDescriptor * createBuffer(buffer_options options, - uint64_t capacity) LOCALONLY; - - /*! - * @function GetAddressRange - * @abstract Retrieve the memory address and length of the data. - * @param range An IOAddressSegment reference that will be filled in with - * the proper address and length of the backing data buffer. - * @result kIOReturnSuccess if successful, otherwise an error code. - * The range parameter should not be trusted if an error is returned. - */ - IOReturn GetAddressRange(IOAddressSegment * range) LOCALONLY; - - /*! - * @function SetLength - * @abstract Set the valid length of the buffer. - * @param length The length to declare as currently valid. Must be less - * than the initially declared capacity. - * @result kIOReturnSuccess if successful, otherwise an error code. - */ - virtual IOReturn SetLength(uint64_t length) LOCALONLY; -}; - -class EXTENDS (AFKUserMemoryDescriptor) AFKUserMemoryDescriptorPrivate -{ - static IOReturn Create(uint64_t options, - uint64_t capacity, - AFKUserMemoryDescriptor ** buff) KERNEL; - - virtual IOReturn RequestBackingBuffer(IOBufferMemoryDescriptor ** backing) KERNEL; -}; - -#endif /* _AFKDriverKit_AFKUserMemoryDescriptor_h */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOBufferMemoryDescriptor.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOBufferMemoryDescriptor.h index 465ba671..d440d6dc 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOBufferMemoryDescriptor.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOBufferMemoryDescriptor.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOBufferMemoryDescriptor.iig */ +/* iig(DriverKit-427.100.5) generated from IOBufferMemoryDescriptor.iig */ /* IOBufferMemoryDescriptor.iig:1-40 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODMACommand.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODMACommand.h index 08e971a9..5d6c8d24 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODMACommand.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODMACommand.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IODMACommand.iig */ +/* iig(DriverKit-427.100.5) generated from IODMACommand.iig */ /* IODMACommand.iig:1-73 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODataQueueDispatchSource.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODataQueueDispatchSource.h index 89437f59..1a8080aa 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODataQueueDispatchSource.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODataQueueDispatchSource.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IODataQueueDispatchSource.iig */ +/* iig(DriverKit-427.100.5) generated from IODataQueueDispatchSource.iig */ /* IODataQueueDispatchSource.iig:1-37 */ /* @@ -38,7 +38,7 @@ typedef void (^IODataQueueClientEnqueueEntryBlock)(void *data, size_t dataSize); typedef void (^IODataQueueClientDequeueEntryBlock)(const void *data, size_t dataSize); -/* source class IODataQueueDispatchSource IODataQueueDispatchSource.iig:38-236 */ +/* source class IODataQueueDispatchSource IODataQueueDispatchSource.iig:38-235 */ #if __DOCUMENTATION__ #define KERNEL IIG_KERNEL @@ -64,8 +64,7 @@ class NATIVE KERNEL IODataQueueDispatchSource : public IODispatchSource /*! * @brief Represents the size of the data queue entry header independent of the actual size of the data in the entry. This is the overhead of each entry in the queue. - * @param dataQueueEntryHeaderSize Out parameter for data queue entry header size - * @return kIOReturnSuccess on success. See IOReturn.h for error codes. + * @return Size of the entry header. */ static size_t GetDataQueueEntryHeaderSize() LOCALONLY; @@ -247,7 +246,7 @@ class NATIVE KERNEL IODataQueueDispatchSource : public IODispatchSource #undef KERNEL #else /* __DOCUMENTATION__ */ -/* generated class IODataQueueDispatchSource IODataQueueDispatchSource.iig:38-236 */ +/* generated class IODataQueueDispatchSource IODataQueueDispatchSource.iig:38-235 */ #define IODataQueueDispatchSource_Create_ID 0xe8544306a54d09e0ULL #define IODataQueueDispatchSource_SetDataAvailableHandler_ID 0xd2c1d8cc6ec3a591ULL @@ -545,6 +544,6 @@ IODataQueueDispatchSource_DECLARE_IVARS #endif /* !__DOCUMENTATION__ */ -/* IODataQueueDispatchSource.iig:238- */ +/* IODataQueueDispatchSource.iig:237- */ #endif /* ! _IOKIT_UIODATAQUEUEDISPATCHSOURCE_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODispatchQueue.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODispatchQueue.h index eaafc373..768c9f5e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODispatchQueue.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODispatchQueue.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IODispatchQueue.iig */ +/* iig(DriverKit-427.100.5) generated from IODispatchQueue.iig */ /* IODispatchQueue.iig:1-60 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODispatchSource.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODispatchSource.h index 695354df..d74636f2 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODispatchSource.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IODispatchSource.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IODispatchSource.iig */ +/* iig(DriverKit-427.100.5) generated from IODispatchSource.iig */ /* IODispatchSource.iig:1-36 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOEventLink.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOEventLink.h index 67d59f02..b0e484c8 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOEventLink.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOEventLink.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOEventLink.iig */ +/* iig(DriverKit-427.100.5) generated from IOEventLink.iig */ /* IOEventLink.iig:1-50 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOExtensiblePaniclog.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOExtensiblePaniclog.h index 5d032637..086a5dc1 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOExtensiblePaniclog.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOExtensiblePaniclog.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOExtensiblePaniclog.iig */ +/* iig(DriverKit-427.100.5) generated from IOExtensiblePaniclog.iig */ /* IOExtensiblePaniclog.iig:1-53 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOInterruptDispatchSource.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOInterruptDispatchSource.h index 5f5e5e2c..0032292b 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOInterruptDispatchSource.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOInterruptDispatchSource.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOInterruptDispatchSource.iig */ +/* iig(DriverKit-427.100.5) generated from IOInterruptDispatchSource.iig */ /* IOInterruptDispatchSource.iig:1-50 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOKitKeys.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOKitKeys.h index 7a801a9b..07073483 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOKitKeys.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOKitKeys.h @@ -263,6 +263,7 @@ #define kIONVRAMSyncNowPropertyKey "IONVRAM-SYNCNOW-PROPERTY" #define kIONVRAMActivateCSRConfigPropertyKey "IONVRAM-ARMCSR-PROPERTY" #define kIODTNVRAMPanicInfoKey "aapl,panic-info" +#define kIONVRAMDeletePropertyKeyWRet "IONVRAM-DELETEWRET-PROPERTY" // keys for complex boot information #define kIOBootDeviceKey "IOBootDevice" // dict | array of dicts @@ -288,8 +289,17 @@ #define kIOSystemStateSleepDescriptionReasonKey "com.apple.iokit.pm.sleepreason" #define kIOSystemStateSleepDescriptionHibernateStateKey "com.apple.iokit.pm.hibernatestate" +// Must match IOHibernatePrivate.h! +enum { + kIOSystemStateSleepDescriptionHibernateStateInactive = 0, + kIOSystemStateSleepDescriptionHibernateStateHibernating = 1,/* writing image */ + kIOSystemStateSleepDescriptionHibernateStateWakingFromHibernate = 2 /* booted and restored image */ +}; + #define kIOSystemStateWakeDescriptionKey "com.apple.iokit.pm.wakedescription" #define kIOSystemStateWakeDescriptionWakeReasonKey "com.apple.iokit.pm.wakereason" +#define kIOSystemStateWakeDescriptionContinuousTimeOffsetKey "com.apple.iokit.pm.wakedescription.continuous-time-offset" + #define kIOSystemStateHaltDescriptionKey "com.apple.iokit.pm.haltdescription" #define kIOSystemStateHaltDescriptionHaltStateKey "com.apple.iokit.pm.haltstate" diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOMemoryDescriptor.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOMemoryDescriptor.h index ea91f56e..113fb7b5 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOMemoryDescriptor.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOMemoryDescriptor.h @@ -1,6 +1,6 @@ -/* iig(DriverKit-324.60.3) generated from IOMemoryDescriptor.iig */ +/* iig(DriverKit-427.100.5) generated from IOMemoryDescriptor.iig */ -/* IOMemoryDescriptor.iig:1-78 */ +/* IOMemoryDescriptor.iig:1-79 */ /* * Copyright (c) 2019-2019 Apple Inc. All rights reserved. * @@ -65,6 +65,7 @@ enum { kIOMemoryMapCacheModeInhibit = 0x00000100, kIOMemoryMapCacheModeCopyback = 0x00000200, kIOMemoryMapCacheModeWriteThrough = 0x00000400, + kIOMemoryMapCacheModeRealTime = 0x00000800, }; struct IOAddressSegment { @@ -77,7 +78,7 @@ struct _IOMDPrivateState { uint64_t options; }; -/* source class IOMemoryDescriptor IOMemoryDescriptor.iig:79-191 */ +/* source class IOMemoryDescriptor IOMemoryDescriptor.iig:80-192 */ #if __DOCUMENTATION__ #define KERNEL IIG_KERNEL @@ -197,7 +198,7 @@ class KERNEL IOMemoryDescriptor : public OSObject #undef KERNEL #else /* __DOCUMENTATION__ */ -/* generated class IOMemoryDescriptor IOMemoryDescriptor.iig:79-191 */ +/* generated class IOMemoryDescriptor IOMemoryDescriptor.iig:80-192 */ #define IOMemoryDescriptor__CopyState_ID 0xa2c0861d4118ce5eULL #define IOMemoryDescriptor_CreateMapping_ID 0xc5e69b0414ff6ee5ULL @@ -352,7 +353,7 @@ public:\ #endif /* !__DOCUMENTATION__ */ -/* IOMemoryDescriptor.iig:200- */ +/* IOMemoryDescriptor.iig:201- */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOMemoryMap.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOMemoryMap.h index c5339bc1..a0526d2e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOMemoryMap.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOMemoryMap.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOMemoryMap.iig */ +/* iig(DriverKit-427.100.5) generated from IOMemoryMap.iig */ /* IOMemoryMap.iig:1-46 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IORPC.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IORPC.h index 5cbc2944..e0f0d7bb 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IORPC.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IORPC.h @@ -85,13 +85,6 @@ struct IORPCMessage { #pragma pack(pop) typedef struct IORPCMessage IORPCMessage; -#if defined(__cplusplus) -extern "C" -#else -extern -#endif -IORPCMessage * -IORPCMessageFromMach(IORPCMessageMach * msg, bool reply); struct IORPCMessageErrorReturnContent { IORPCMessage hdr; @@ -119,6 +112,7 @@ struct IORPC { IORPCMessageMach * reply; uint32_t sendSize; uint32_t replySize; + IORPCMessage * kernelContent; }; typedef struct IORPC IORPC; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOService.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOService.h index afb2e793..90d9cc27 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOService.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOService.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOService.iig */ +/* iig(DriverKit-427.100.5) generated from IOService.iig */ /* IOService.iig:1-71 */ /* @@ -70,7 +70,7 @@ enum { kIOServiceHaltStateRestart = 0x00000002, }; -/* source class IOService IOService.iig:72-551 */ +/* source class IOService IOService.iig:72-561 */ #if __DOCUMENTATION__ #define KERNEL IIG_KERNEL @@ -258,6 +258,16 @@ class KERNEL IOService : public OSObject ChangePowerState( uint32_t powerFlags); + /*! + * @brief Request provider to create a power override. + * @discussion Allows a driver to ignore power desires of its children, similar to powerOverrideOnPriv in IOKit, enabling its power state to be governed solely by its own desire (set via IOService::ChangePowerState) + * @param enable Whether to enable or disable the power override. + * @return kIOReturnSuccess on success. See IOReturn.h for error codes. + */ + virtual kern_return_t + SetPowerOverride( + bool enable); + /*! * @brief Request create a new user client for a client process. * @discussion An application may request an IOUserClient be opened with the IOKit framework @@ -555,7 +565,7 @@ class KERNEL IOService : public OSObject #undef KERNEL #else /* __DOCUMENTATION__ */ -/* generated class IOService IOService.iig:72-551 */ +/* generated class IOService IOService.iig:72-561 */ #define IOService_Start_ID 0xab6f76dde6d693f2ULL #define IOService_Stop_ID 0x98e715041c459fa5ULL @@ -570,6 +580,7 @@ class KERNEL IOService : public OSObject #define IOService_JoinPMTree_ID 0xf26c46526735efffULL #define IOService_SetPowerState_ID 0xd200fde7d57ecca6ULL #define IOService_ChangePowerState_ID 0xdb75cfc3395484a0ULL +#define IOService_SetPowerOverride_ID 0xdca775718f07ae4fULL #define IOService_NewUserClient_ID 0xf669efffcb89ed9cULL #define IOService_Create_ID 0xe1a46dbd68bbe09cULL #define IOService_Terminate_ID 0xf7a595d9927810c8ULL @@ -645,6 +656,9 @@ class KERNEL IOService : public OSObject #define IOService_ChangePowerState_Args \ uint32_t powerFlags +#define IOService_SetPowerOverride_Args \ + bool enable + #define IOService_NewUserClient_Args \ uint32_t type, \ IOUserClient ** userClient @@ -813,6 +827,11 @@ public:\ ChangePowerState(\ uint32_t powerFlags,\ OSDispatchMethod supermethod = NULL);\ +\ + kern_return_t\ + SetPowerOverride(\ + bool enable,\ + OSDispatchMethod supermethod = NULL);\ \ kern_return_t\ NewUserClient(\ @@ -1116,6 +1135,12 @@ public:\ ChangePowerState_Invoke(const IORPC rpc,\ OSMetaClassBase * target,\ ChangePowerState_Handler func);\ +\ + typedef kern_return_t (*SetPowerOverride_Handler)(OSMetaClassBase * target, IOService_SetPowerOverride_Args);\ + static kern_return_t\ + SetPowerOverride_Invoke(const IORPC rpc,\ + OSMetaClassBase * target,\ + SetPowerOverride_Handler func);\ \ typedef kern_return_t (*NewUserClient_Handler)(OSMetaClassBase * target, IOService_NewUserClient_Args);\ static kern_return_t\ @@ -1288,6 +1313,9 @@ protected:\ \ kern_return_t\ ChangePowerState_Impl(IOService_ChangePowerState_Args);\ +\ + kern_return_t\ + SetPowerOverride_Impl(IOService_SetPowerOverride_Args);\ \ kern_return_t\ NewUserClient_Impl(IOService_NewUserClient_Args);\ @@ -1367,6 +1395,6 @@ public:\ #endif /* !__DOCUMENTATION__ */ -/* IOService.iig:553- */ +/* IOService.iig:563- */ #endif /* ! _IOKIT_UIOSERVICE_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOServiceNotificationDispatchSource.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOServiceNotificationDispatchSource.h index 59098d94..7a9e52fd 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOServiceNotificationDispatchSource.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOServiceNotificationDispatchSource.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOServiceNotificationDispatchSource.iig */ +/* iig(DriverKit-427.100.5) generated from IOServiceNotificationDispatchSource.iig */ /* IOServiceNotificationDispatchSource.iig:1-45 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOServiceStateNotificationDispatchSource.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOServiceStateNotificationDispatchSource.h index eaab7279..1d1c67f6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOServiceStateNotificationDispatchSource.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOServiceStateNotificationDispatchSource.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOServiceStateNotificationDispatchSource.iig */ +/* iig(DriverKit-427.100.5) generated from IOServiceStateNotificationDispatchSource.iig */ /* IOServiceStateNotificationDispatchSource.iig:1-36 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOTypes.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOTypes.h index 91e6d43e..fe649465 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOTypes.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOTypes.h @@ -44,7 +44,14 @@ extern "C" { #endif #ifndef NULL -#if defined (__cplusplus) + +#define USE_CLANG_TYPES 0 + +#if USE_CLANG_TYPES +#define __need_NULL +#include +#undef __need_NULL +#elif defined (__cplusplus) #if __cplusplus >= 201103L && (defined(__arm__) || defined(__arm64__)) #define NULL nullptr #else @@ -53,6 +60,9 @@ extern "C" { #else #define NULL ((void *)0) #endif + +#undef USE_CLANG_TYPES + #endif /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOUserClient.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOUserClient.h index dbe91c4a..5e24f2eb 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOUserClient.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOUserClient.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOUserClient.iig */ +/* iig(DriverKit-427.100.5) generated from IOUserClient.iig */ /* IOUserClient.iig:1-156 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOUserServer.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOUserServer.h index 21e36cb2..a7338af4 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOUserServer.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOUserServer.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOUserServer.iig */ +/* iig(DriverKit-427.100.5) generated from IOUserServer.iig */ /* IOUserServer.iig:1-36 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOWorkGroup.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOWorkGroup.h index e1d7021d..7b84816f 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOWorkGroup.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/IOWorkGroup.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOWorkGroup.iig */ +/* iig(DriverKit-427.100.5) generated from IOWorkGroup.iig */ /* IOWorkGroup.iig:1-38 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/OSAction.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/OSAction.h index 5c62bd98..0edb4971 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/OSAction.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/OSAction.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from OSAction.iig */ +/* iig(DriverKit-427.100.5) generated from OSAction.iig */ /* OSAction.iig:1-38 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/OSObject.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/OSObject.h index 6d0bdfb4..f22439ef 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/OSObject.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/OSObject.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from OSObject.iig */ +/* iig(DriverKit-427.100.5) generated from OSObject.iig */ /* OSObject.iig:1-258 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/queue_implementation.h b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/queue_implementation.h index 32af20ba..e16790d6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/queue_implementation.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/DriverKit/queue_implementation.h @@ -208,10 +208,10 @@ typedef struct queue_entry queue_head_t; typedef struct queue_entry queue_chain_t; typedef struct queue_entry *queue_entry_t; -#if defined(XNU_KERNEL_PRIVATE) || DRIVERKIT_FRAMEWORK_INCLUDE +#if defined(KERNEL_PRIVATE) || DRIVERKIT_FRAMEWORK_INCLUDE -__abortlike -extern void __queue_element_linkage_invalid(queue_entry_t e); +#define __queue_element_linkage_invalid(e) \ + __builtin_trap() static inline void __QUEUE_ELT_VALIDATE(queue_entry_t elt) @@ -221,6 +221,30 @@ __QUEUE_ELT_VALIDATE(queue_entry_t elt) } } +static inline queue_entry_t +__QUEUE_ELT_VALIDATE_NEXT(queue_entry_t elt) +{ + queue_entry_t __next = elt->next; + + if (__next->prev != elt) { + __queue_element_linkage_invalid(elt); + } + + return __next; +} + +static inline queue_entry_t +__QUEUE_ELT_VALIDATE_PREV(queue_entry_t elt) +{ + queue_entry_t __prev = elt->prev; + + if (__prev->next != elt) { + __queue_element_linkage_invalid(elt); + } + + return __prev; +} + static inline void __DEQUEUE_ELT_CLEANUP(queue_entry_t elt) { @@ -228,7 +252,10 @@ __DEQUEUE_ELT_CLEANUP(queue_entry_t elt) } #else #define __QUEUE_ELT_VALIDATE(elt) ((void)0) +#define __QUEUE_ELT_VALIDATE_NEXT(elt) ((elt)->next) +#define __QUEUE_ELT_VALIDATE_PREV(elt) ((elt)->prev) #define __DEQUEUE_ELT_CLEANUP(elt) ((void)0) +#define __queue_element_linkage_invalid(e) ((void)0) #endif /* !(XNU_KERNEL_PRIVATE || DRIVERKIT_FRAMEWORK_INCLUDE)*/ /* @@ -249,8 +276,7 @@ enqueue_head( { queue_entry_t old_head; - __QUEUE_ELT_VALIDATE((queue_entry_t)que); - old_head = que->next; + old_head = __QUEUE_ELT_VALIDATE_NEXT(que); elt->next = old_head; elt->prev = que; old_head->prev = elt; @@ -264,8 +290,7 @@ enqueue_tail( { queue_entry_t old_tail; - __QUEUE_ELT_VALIDATE((queue_entry_t)que); - old_tail = que->prev; + old_tail = __QUEUE_ELT_VALIDATE_PREV(que); elt->next = que; elt->prev = old_tail; old_tail->next = elt; @@ -331,8 +356,7 @@ insque( { queue_entry_t successor; - __QUEUE_ELT_VALIDATE(pred); - successor = pred->next; + successor = __QUEUE_ELT_VALIDATE_NEXT(pred); entry->next = successor; entry->prev = pred; successor->prev = entry; @@ -666,6 +690,57 @@ movqueue(queue_t _old, queue_t _new) * may be more than one chain. */ +/* check __prev->next == __elt */ +#define __QUEUE2_CHECK_NEXT(__fail, __elt, __prev, __head, type, field) \ +MACRO_BEGIN \ + if (__prev == __head) { \ + __fail |= __head->next != (queue_entry_t)__elt; \ + } else { \ + __fail |= ((type)(void *)__prev)->field.next != \ + (queue_entry_t)__elt; \ + } \ +MACRO_END + +/* check __next->prev == __elt */ +#define __QUEUE2_CHECK_PREV(__fail, __elt, __next, __head, type, field) \ +MACRO_BEGIN \ + if (__next == __head) { \ + __fail |= __head->prev != (queue_entry_t)__elt; \ + } else { \ + __fail |= ((type)(void *)__next)->field.prev != \ + (queue_entry_t)__elt; \ + } \ +MACRO_END + +#define __QUEUE2_CHECK_FAIL(__fail, __elt) \ +MACRO_BEGIN \ + if (__improbable(__fail)) { \ + __queue_element_linkage_invalid(__elt); \ + } \ +MACRO_END + +/* sets __prev->next to __elt */ +#define __QUEUE2_SET_NEXT(__prev, __elt, __head, type, field) \ +MACRO_BEGIN \ + if (__head == __prev) { \ + __head->next = (queue_entry_t)__elt; \ + } else { \ + ((type)(void *)__prev)->field.next = (queue_entry_t)__elt; \ + } \ +MACRO_END + +/* sets __next->prev to __elt */ +#define __QUEUE2_SET_PREV(__next, __elt, __head, type, field) \ +MACRO_BEGIN \ + if (__head == __next) { \ + __head->prev = (queue_entry_t)__elt; \ + } else { \ + ((type)(void *)__next)->field.prev = (queue_entry_t)__elt; \ + } \ +MACRO_END + + + /* * Macro: queue_enter * Function: @@ -688,22 +763,24 @@ movqueue(queue_t _old, queue_t _new) * could cause stackshot to trip over an inconsistent queue during * iteration. */ -#define queue_enter(head, elt, type, field) \ -MACRO_BEGIN \ - queue_entry_t __prev; \ - \ - __prev = (head)->prev; \ - (elt)->field.prev = __prev; \ - (elt)->field.next = head; \ - __compiler_barrier(); \ - if ((head) == __prev) { \ - (head)->next = (queue_entry_t) (elt); \ - } \ - else { \ - ((type)(void *)__prev)->field.next = \ - (queue_entry_t)(elt); \ - } \ - (head)->prev = (queue_entry_t) elt; \ +#define queue_enter(head, elt, type, field) \ +MACRO_BEGIN \ + queue_entry_t __head, __prev; \ + type __elt; \ + int __fail = 0; \ + \ + __elt = (elt); \ + __head = (head); \ + __prev = __head->prev; \ + \ + __QUEUE2_CHECK_NEXT(__fail, __head, __prev, __head, type, field); \ + __QUEUE2_CHECK_FAIL(__fail, __head); \ + \ + __elt->field.prev = __prev; \ + __elt->field.next = __head; \ + __compiler_barrier(); \ + __QUEUE2_SET_NEXT(__prev, __elt, __head, type, field); \ + __head->prev = (queue_entry_t)__elt; \ MACRO_END /* @@ -719,21 +796,24 @@ MACRO_END * Note: * This should only be used with Method 2 queue iteration (element chains) */ -#define queue_enter_first(head, elt, type, field) \ -MACRO_BEGIN \ - queue_entry_t __next; \ - \ - __next = (head)->next; \ - if ((head) == __next) { \ - (head)->prev = (queue_entry_t) (elt); \ - } \ - else { \ - ((type)(void *)__next)->field.prev = \ - (queue_entry_t)(elt); \ - } \ - (elt)->field.next = __next; \ - (elt)->field.prev = head; \ - (head)->next = (queue_entry_t) elt; \ +#define queue_enter_first(head, elt, type, field) \ +MACRO_BEGIN \ + queue_entry_t __head, __next; \ + type __elt; \ + int __fail = 0; \ + \ + __elt = (elt); \ + __head = (head); \ + __next = __head->next; \ + \ + __QUEUE2_CHECK_PREV(__fail, __head, __next, __head, type, field); \ + __QUEUE2_CHECK_FAIL(__fail, __head); \ + \ + __elt->field.next = __next; \ + __elt->field.prev = __head; \ + __compiler_barrier(); \ + __QUEUE2_SET_PREV(__next, __elt, __head, type, field); \ + __head->next = (queue_entry_t)__elt; \ MACRO_END /* @@ -750,34 +830,30 @@ MACRO_END * Note: * This should only be used with Method 2 queue iteration (element chains) */ -#define queue_insert_before(head, elt, cur, type, field) \ -MACRO_BEGIN \ - queue_entry_t __prev; \ - \ - if ((head) == (queue_entry_t)(cur)) { \ - (elt)->field.next = (head); \ - if ((head)->next == (head)) { /* only element */ \ - (elt)->field.prev = (head); \ - (head)->next = (queue_entry_t)(elt); \ - } else { /* last element */ \ - __prev = (elt)->field.prev = (head)->prev; \ - ((type)(void *)__prev)->field.next = \ - (queue_entry_t)(elt); \ - } \ - (head)->prev = (queue_entry_t)(elt); \ - } else { \ - (elt)->field.next = (queue_entry_t)(cur); \ - if ((head)->next == (queue_entry_t)(cur)) { \ - /* first element */ \ - (elt)->field.prev = (head); \ - (head)->next = (queue_entry_t)(elt); \ - } else { /* middle element */ \ - __prev = (elt)->field.prev = (cur)->field.prev; \ - ((type)(void *)__prev)->field.next = \ - (queue_entry_t)(elt); \ - } \ - (cur)->field.prev = (queue_entry_t)(elt); \ - } \ +#define queue_insert_before(head, elt, cur, type, field) \ +MACRO_BEGIN \ + queue_entry_t __head, __cur, __prev; \ + type __elt; \ + int __fail = 0; \ + \ + __elt = (elt); \ + __cur = (queue_entry_t)(cur); \ + __head = (head); \ + \ + if (__head == __cur) { \ + __prev = __head->prev; \ + } else { \ + __prev = ((type)(void *)__cur)->field.prev; \ + } \ + \ + __QUEUE2_CHECK_NEXT(__fail, __cur, __prev, __head, type, field); \ + __QUEUE2_CHECK_FAIL(__fail, __head); \ + \ + __elt->field.prev = __prev; \ + __elt->field.next = __cur; \ + __compiler_barrier(); \ + __QUEUE2_SET_NEXT(__prev, __elt, __head, type, field); \ + __QUEUE2_SET_PREV(__cur, __elt, __head, type, field); \ MACRO_END /* @@ -794,34 +870,30 @@ MACRO_END * Note: * This should only be used with Method 2 queue iteration (element chains) */ -#define queue_insert_after(head, elt, cur, type, field) \ -MACRO_BEGIN \ - queue_entry_t __next; \ - \ - if ((head) == (queue_entry_t)(cur)) { \ - (elt)->field.prev = (head); \ - if ((head)->next == (head)) { /* only element */ \ - (elt)->field.next = (head); \ - (head)->prev = (queue_entry_t)(elt); \ - } else { /* first element */ \ - __next = (elt)->field.next = (head)->next; \ - ((type)(void *)__next)->field.prev = \ - (queue_entry_t)(elt); \ - } \ - (head)->next = (queue_entry_t)(elt); \ - } else { \ - (elt)->field.prev = (queue_entry_t)(cur); \ - if ((head)->prev == (queue_entry_t)(cur)) { \ - /* last element */ \ - (elt)->field.next = (head); \ - (head)->prev = (queue_entry_t)(elt); \ - } else { /* middle element */ \ - __next = (elt)->field.next = (cur)->field.next; \ - ((type)(void *)__next)->field.prev = \ - (queue_entry_t)(elt); \ - } \ - (cur)->field.next = (queue_entry_t)(elt); \ - } \ +#define queue_insert_after(head, elt, cur, type, field) \ +MACRO_BEGIN \ + queue_entry_t __head, __cur, __next; \ + type __elt; \ + int __fail = 0; \ + \ + __elt = (elt); \ + __cur = (queue_entry_t)(cur); \ + __head = (head); \ + \ + if (__head == __cur) { \ + __next = __head->next; \ + } else { \ + __next = ((type)(void *)__cur)->field.next; \ + } \ + \ + __QUEUE2_CHECK_PREV(__fail, __cur, __next, __head, type, field); \ + __QUEUE2_CHECK_FAIL(__fail, __head); \ + \ + __elt->field.prev = __cur; \ + __elt->field.next = __next; \ + __compiler_barrier(); \ + __QUEUE2_SET_NEXT(__cur, __elt, __head, type, field); \ + __QUEUE2_SET_PREV(__next, __elt, __head, type, field); \ MACRO_END /* @@ -845,25 +917,26 @@ MACRO_END * Note: * This should only be used with Method 2 queue iteration (element chains) */ -#define queue_remove(head, elt, type, field) \ -MACRO_BEGIN \ - queue_entry_t __next, __prev; \ - \ - __next = (elt)->field.next; \ - __prev = (elt)->field.prev; \ - \ - if ((head) == __next) \ - (head)->prev = __prev; \ - else \ - ((type)(void *)__next)->field.prev = __prev; \ - \ - if ((head) == __prev) \ - (head)->next = __next; \ - else \ - ((type)(void *)__prev)->field.next = __next; \ - \ - (elt)->field.next = NULL; \ - (elt)->field.prev = NULL; \ +#define queue_remove(head, elt, type, field) \ +MACRO_BEGIN \ + queue_entry_t __head, __next, __prev; \ + type __elt; \ + int __fail = 0; \ + \ + __elt = (elt); \ + __head = (head); \ + __next = __elt->field.next; \ + __prev = __elt->field.prev; \ + \ + __QUEUE2_CHECK_PREV(__fail, __elt, __next, __head, type, field); \ + __QUEUE2_CHECK_NEXT(__fail, __elt, __prev, __head, type, field); \ + __QUEUE2_CHECK_FAIL(__fail, __head); \ + \ + __QUEUE2_SET_PREV(__next, __prev, __head, type, field); \ + __QUEUE2_SET_NEXT(__prev, __next, __head, type, field); \ + __compiler_barrier(); \ + __elt->field.next = NULL; \ + __elt->field.prev = NULL; \ MACRO_END /* @@ -879,19 +952,16 @@ MACRO_END */ #define queue_remove_first(head, entry, type, field) \ MACRO_BEGIN \ - queue_entry_t __next; \ - \ - (entry) = (type)(void *) ((head)->next); \ - __next = (entry)->field.next; \ + queue_entry_t __hd; \ + type __entry; \ \ - if ((head) == __next) \ - (head)->prev = (head); \ - else \ - ((type)(void *)(__next))->field.prev = (head); \ - (head)->next = __next; \ + __hd = (head); \ + __entry = (type)(void *)__hd->next; \ \ - (entry)->field.next = NULL; \ - (entry)->field.prev = NULL; \ + if ((queue_entry_t)__entry != __hd) { \ + queue_remove(__hd, __entry, type, field); \ + } \ + (entry) = __entry; \ MACRO_END /* @@ -907,19 +977,16 @@ MACRO_END */ #define queue_remove_last(head, entry, type, field) \ MACRO_BEGIN \ - queue_entry_t __prev; \ + queue_entry_t __hd; \ + type __entry; \ \ - (entry) = (type)(void *) ((head)->prev); \ - __prev = (entry)->field.prev; \ + __hd = (head); \ + __entry = (type)(void *)__hd->prev; \ \ - if ((head) == __prev) \ - (head)->next = (head); \ - else \ - ((type)(void *)(__prev))->field.next = (head); \ - (head)->prev = __prev; \ - \ - (entry)->field.next = NULL; \ - (entry)->field.prev = NULL; \ + if ((queue_entry_t)__entry != __hd) { \ + queue_remove(__hd, __entry, type, field); \ + } \ + (entry) = __entry; \ MACRO_END /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/Exclaves/Exclaves.h b/Frameworks/Kernel.framework/Versions/A/Headers/Exclaves/Exclaves.h index 9ad910a3..aba937c3 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/Exclaves/Exclaves.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/Exclaves/Exclaves.h @@ -31,6 +31,11 @@ #if CONFIG_EXCLAVES +#include +#include +#include +#include + #ifdef __cplusplus #include @@ -100,6 +105,7 @@ struct IOExclaveAsyncNotificationUpcallArgs { enum IOExclaveMapperOperationUpcallType { MapperActivate, + MapperDeactivate, }; struct IOExclaveMapperOperationUpcallArgs { @@ -107,12 +113,34 @@ struct IOExclaveMapperOperationUpcallArgs { uint32_t mapperIndex; }; +enum IOExclaveANEUpcallType { + kIOExclaveANEUpcallTypeSetPowerState, + kIOExclaveANEUpcallTypeWorkSubmit, + kIOExclaveANEUpcallTypeWorkBegin, + kIOExclaveANEUpcallTypeWorkEnd, +}; + +struct IOExclaveANEUpcallArgs { + enum IOExclaveANEUpcallType type; + union { + struct { + uint32_t desired_state; + } setpowerstate_args; + struct { + uint64_t arg0; + uint64_t arg1; + uint64_t arg2; + } work_args; + }; +}; + bool IOExclaveInterruptUpcallHandler(uint64_t id, struct IOExclaveInterruptUpcallArgs *args); bool IOExclaveTimerUpcallHandler(uint64_t id, struct IOExclaveTimerUpcallArgs *args); bool IOExclaveLockWorkloop(uint64_t id, bool lock); bool IOExclaveAsyncNotificationUpcallHandler(uint64_t id, struct IOExclaveAsyncNotificationUpcallArgs *args); bool IOExclaveMapperOperationUpcallHandler(uint64_t id, struct IOExclaveMapperOperationUpcallArgs *args); +bool IOExclaveANEUpcallHandler(uint64_t id, struct IOExclaveANEUpcallArgs *args, bool *result); /* Test support */ @@ -122,6 +150,8 @@ struct IOExclaveTestSignalInterruptParam { }; void IOExclaveTestSignalInterrupt(thread_call_param_t, thread_call_param_t); +void exclaves_wait_for_cpu_init(void); + #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/Exclaves/IOService.tightbeam b/Frameworks/Kernel.framework/Versions/A/Headers/Exclaves/IOService.tightbeam index e596ff2c..94bc85da 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/Exclaves/IOService.tightbeam +++ b/Frameworks/Kernel.framework/Versions/A/Headers/Exclaves/IOService.tightbeam @@ -1,6 +1,6 @@ module IOService -protocol IOServiceProtocol { +service IOServiceProtocol { func Start() -> Bool } diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDDevice.h b/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDDevice.h index 3d72c4f3..c3706260 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDDevice.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDDevice.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOHIDDevice.iig */ +/* iig(DriverKit-427.100.5) generated from IOHIDDevice.iig */ /* IOHIDDevice.iig:1-44 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDDeviceTypes.h b/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDDeviceTypes.h index de9e54f3..614af052 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDDeviceTypes.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDDeviceTypes.h @@ -77,11 +77,7 @@ typedef enum { * @abstract * Abstract data type used as a unique identifier for an element. */ -#if TARGET_OS_DRIVERKIT || defined(__LP64__) typedef uint32_t IOHIDElementCookie; -#else -typedef void * IOHIDElementCookie; -#endif /*! * @typedef IOHIDElementType diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDEventService.h b/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDEventService.h index d58d7fc8..87a8b0d4 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDEventService.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDEventService.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOHIDEventService.iig */ +/* iig(DriverKit-427.100.5) generated from IOHIDEventService.iig */ /* IOHIDEventService.iig:1-48 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDInterface.h b/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDInterface.h index 68b4e6b3..b4e1cf30 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDInterface.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/HIDDriverKit/IOHIDInterface.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOHIDInterface.iig */ +/* iig(DriverKit-427.100.5) generated from IOHIDInterface.iig */ /* IOHIDInterface.iig:1-46 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOBufferMemoryDescriptor.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOBufferMemoryDescriptor.h index 3a3afc07..f8c207bd 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOBufferMemoryDescriptor.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOBufferMemoryDescriptor.h @@ -235,7 +235,7 @@ class IOBufferMemoryDescriptor : public IOGeneralMemoryDescriptor * capacity. */ static OSPtr withCapacity( - vm_size_t capacity, + vm_size_t capacity __xnu_data_size, IODirection withDirection, bool withContiguousMemory = false); #ifndef __LP64__ @@ -253,7 +253,7 @@ class IOBufferMemoryDescriptor : public IOGeneralMemoryDescriptor */ static OSPtr withBytes( const void * bytes, - vm_size_t withLength, + vm_size_t withLength __xnu_data_size, IODirection withDirection, bool withContiguousMemory = false); @@ -290,6 +290,7 @@ class IOBufferMemoryDescriptor : public IOGeneralMemoryDescriptor * * Return the virtual address of the beginning of the buffer */ + __xnu_returns_data_pointer virtual void *getBytesNoCopy(); /* @@ -297,6 +298,7 @@ class IOBufferMemoryDescriptor : public IOGeneralMemoryDescriptor * * Return the virtual address of an offset from the beginning of the buffer */ + __xnu_returns_data_pointer virtual void *getBytesNoCopy(vm_size_t start, vm_size_t withLength); /* @@ -306,7 +308,7 @@ class IOBufferMemoryDescriptor : public IOGeneralMemoryDescriptor * maintains the memory descriptor buffer length. Note that appendBytes * will not copy past the end of the memory descriptor's current capacity. */ - virtual bool appendBytes(const void *bytes, vm_size_t withLength); + virtual bool appendBytes(const void *bytes, vm_size_t withLength __xnu_data_size); #ifndef __LP64__ virtual void * getVirtualSegment(IOByteCount offset, diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IODataQueue.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IODataQueue.h index 7070268d..f28dcbd6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IODataQueue.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IODataQueue.h @@ -97,7 +97,7 @@ class IODataQueue : public OSObject * @param size The size of the data queue memory region. * @result Returns the newly allocated IODataQueue instance. Zero is returned on failure. */ - static OSPtr withCapacity(UInt32 size); + static OSPtr withCapacity(UInt32 size __xnu_data_size); /*! * @function withEntries @@ -107,7 +107,7 @@ class IODataQueue : public OSObject * @param entrySize Size of each entry. * @result Returns the newly allocated IODataQueue instance. Zero is returned on failure. */ - static OSPtr withEntries(UInt32 numEntries, UInt32 entrySize); + static OSPtr withEntries(UInt32 numEntries, UInt32 entrySize __xnu_data_size); /*! * @function initWithCapacity diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOKitDebug.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOKitDebug.h index e7d7c9c7..58583287 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOKitDebug.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOKitDebug.h @@ -87,6 +87,8 @@ enum { kIOWaitQuietBeforeRoot = 0x01000000ULL, kIOTrackingBoot = 0x02000000ULL, + kIOLogExclaves = 0x100000000ULL, + _kIODebugTopFlag = 0x8000000000000000ULL// force enum to be 64 bits }; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOKitKeys.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOKitKeys.h index 7a801a9b..07073483 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOKitKeys.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOKitKeys.h @@ -263,6 +263,7 @@ #define kIONVRAMSyncNowPropertyKey "IONVRAM-SYNCNOW-PROPERTY" #define kIONVRAMActivateCSRConfigPropertyKey "IONVRAM-ARMCSR-PROPERTY" #define kIODTNVRAMPanicInfoKey "aapl,panic-info" +#define kIONVRAMDeletePropertyKeyWRet "IONVRAM-DELETEWRET-PROPERTY" // keys for complex boot information #define kIOBootDeviceKey "IOBootDevice" // dict | array of dicts @@ -288,8 +289,17 @@ #define kIOSystemStateSleepDescriptionReasonKey "com.apple.iokit.pm.sleepreason" #define kIOSystemStateSleepDescriptionHibernateStateKey "com.apple.iokit.pm.hibernatestate" +// Must match IOHibernatePrivate.h! +enum { + kIOSystemStateSleepDescriptionHibernateStateInactive = 0, + kIOSystemStateSleepDescriptionHibernateStateHibernating = 1,/* writing image */ + kIOSystemStateSleepDescriptionHibernateStateWakingFromHibernate = 2 /* booted and restored image */ +}; + #define kIOSystemStateWakeDescriptionKey "com.apple.iokit.pm.wakedescription" #define kIOSystemStateWakeDescriptionWakeReasonKey "com.apple.iokit.pm.wakereason" +#define kIOSystemStateWakeDescriptionContinuousTimeOffsetKey "com.apple.iokit.pm.wakedescription.continuous-time-offset" + #define kIOSystemStateHaltDescriptionKey "com.apple.iokit.pm.haltdescription" #define kIOSystemStateHaltDescriptionHaltStateKey "com.apple.iokit.pm.haltstate" diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOLib.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOLib.h index d64ed8e6..e1874b8e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOLib.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOLib.h @@ -81,6 +81,14 @@ IOMallocArraySize(vm_size_t hdr_size, vm_size_t elem_size, vm_size_t elem_count) return s; } +#define IOKIT_TYPE_IS_COMPATIBLE_PTR(ptr, type) \ + (__builtin_xnu_types_compatible(os_get_pointee_type(ptr), type) || \ + __builtin_xnu_types_compatible(os_get_pointee_type(ptr), void)) \ + +#define IOKIT_TYPE_ASSERT_COMPATIBLE_POINTER(ptr, type) \ + _Static_assert(IOKIT_TYPE_IS_COMPATIBLE_PTR(ptr, type), \ + "Pointer type is not compatible with specified type") + /* * These are opaque to the user. */ @@ -180,6 +188,41 @@ void * IOMallocPageableZero(vm_size_t size, vm_size_t alignment) __attribute__(( void IOFreePageable(void * address, vm_size_t size); +/*! @function IOMallocData + * @abstract Allocates wired memory in the kernel map, from a separate section meant for pure data. + * @discussion Same as IOMalloc except that this function should be used for allocating pure data. + * @param size Size of the memory requested. + * @result Pointer to the allocated memory, or zero on failure. */ +void * IOMallocData(vm_size_t size) __attribute__((alloc_size(1))); + +/*! @function IOMallocZeroData + * @abstract Allocates wired memory in the kernel map, from a separate section meant for pure data bytes that don't contain pointers. + * @discussion Same as IOMallocData except that the memory returned is zeroed. + * @param size Size of the memory requested. + * @result Pointer to the allocated memory, or zero on failure. */ +void * IOMallocZeroData(vm_size_t size) __attribute__((alloc_size(1))); + + +/*! @function IOFreeData + * @abstract Frees memory allocated with IOMallocData or IOMallocZeroData. + * @discussion This function frees memory allocated with IOMallocData/IOMallocZeroData, it may block and so should not be called from interrupt level or while a simple lock is held. + * @param address Virtual address of the allocated memory. Passing NULL here is acceptable. + * @param size Size of the memory allocated. It is acceptable to pass 0 size for a NULL address. */ +void IOFreeData(void * address, vm_size_t size); + +#define IONewData(type, count) \ + ((type *)IOMallocData(IOMallocArraySize(0, sizeof(type), count))) + +#define IONewZeroData(type, count) \ + ((type *)IOMallocZeroData(IOMallocArraySize(0, sizeof(type), count))) + +#define IODeleteData(ptr, type, count) ({ \ + vm_size_t __count = (vm_size_t)(count); \ + IOKIT_TYPE_ASSERT_COMPATIBLE_POINTER(ptr, type); \ + IOFreeData(os_ptr_load_and_erase(ptr), \ + IOMallocArraySize(0, sizeof(type), __count)); \ +}) + /* * IONew/IONewZero/IODelete/IOSafeDeleteNULL diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOMemoryDescriptor.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOMemoryDescriptor.h index c5c6d2f9..602f72b9 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOMemoryDescriptor.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOMemoryDescriptor.h @@ -1025,6 +1025,14 @@ class IOGeneralMemoryDescriptor : public IOMemoryDescriptor virtual IOReturn complete(IODirection forDirection = kIODirectionNone) APPLE_KEXT_OVERRIDE; + virtual LIBKERN_RETURNS_NOT_RETAINED IOMemoryMap * makeMapping( + IOMemoryDescriptor * owner, + task_t intoTask, + IOVirtualAddress atAddress, + IOOptionBits options, + IOByteCount offset, + IOByteCount length ) APPLE_KEXT_OVERRIDE; + virtual IOReturn doMap( vm_map_t addressMap, IOVirtualAddress * atAddress, @@ -1042,6 +1050,8 @@ class IOGeneralMemoryDescriptor : public IOMemoryDescriptor // Factory method for cloning a persistent IOMD, see IOMemoryDescriptor static OSPtr withPersistentMemoryDescriptor(IOGeneralMemoryDescriptor *originalMD); + + IOOptionBits memoryReferenceCreateOptions(IOOptionBits options, IOMemoryMap * map); }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IONVRAM.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IONVRAM.h index 5b7b2ebd..7c89293a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IONVRAM.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IONVRAM.h @@ -89,16 +89,12 @@ class IODTNVRAM : public IOService IODTNVRAMDiags *_diags; IODTNVRAMFormatHandler *_format; - IORWLock *_variableLock; - IOLock *_controllerLock; - IODTNVRAMVariables *_commonService; IODTNVRAMVariables *_systemService; - OSPtr _varDict; - SInt32 _lastDeviceSync; bool _freshInterval; + bool x86Device = true; void initImageFormat(void); @@ -113,7 +109,7 @@ class IODTNVRAM : public IOService IOReturn removePropertyWithGUIDAndName(const uuid_t guid, const char *name); IOReturn setPropertyWithGUIDAndName(const uuid_t guid, const char *name, OSObject *anObject); - void syncInternal(bool rateLimit); + IOReturn syncInternal(bool rateLimit); bool safeToSync(void); public: @@ -122,10 +118,11 @@ class IODTNVRAM : public IOService virtual void registerNVRAMController(IONVRAMController *controller); - virtual void sync(void); + virtual IOReturn sync(void); virtual void reload(void); - + virtual IOReturn getVarDict(OSSharedPtr &varDictCopy); virtual bool serializeProperties(OSSerialize *s) const APPLE_KEXT_OVERRIDE; + virtual OSPtr dictionaryWithProperties(void) const APPLE_KEXT_OVERRIDE; virtual OSPtr copyProperty(const OSSymbol *aKey) const APPLE_KEXT_OVERRIDE; virtual OSPtr copyProperty(const char *aKey) const APPLE_KEXT_OVERRIDE; virtual OSObject *getProperty(const OSSymbol *aKey) const APPLE_KEXT_OVERRIDE; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOProviderPropertyMerger.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOProviderPropertyMerger.h new file mode 100644 index 00000000..91aa1f08 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOProviderPropertyMerger.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + + +#ifndef _IOPROVIDERPROPERTYMERGER_H_ +#define _IOPROVIDERPROPERTYMERGER_H_ + +#include + +#define kIOProviderMergePropertiesKey "IOProviderMergeProperties" +#define kIOProviderParentMergePropertiesKey "IOProviderParentMergeProperties" + +#endif /* _IOPROVIDERPROPERTYMERGER_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IORPC.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IORPC.h index 5cbc2944..e0f0d7bb 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IORPC.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IORPC.h @@ -85,13 +85,6 @@ struct IORPCMessage { #pragma pack(pop) typedef struct IORPCMessage IORPCMessage; -#if defined(__cplusplus) -extern "C" -#else -extern -#endif -IORPCMessage * -IORPCMessageFromMach(IORPCMessageMach * msg, bool reply); struct IORPCMessageErrorReturnContent { IORPCMessage hdr; @@ -119,6 +112,7 @@ struct IORPC { IORPCMessageMach * reply; uint32_t sendSize; uint32_t replySize; + IORPCMessage * kernelContent; }; typedef struct IORPC IORPC; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOService.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOService.h index 0062cc9b..e095f2c7 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOService.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOService.h @@ -1540,12 +1540,14 @@ class IOService : public IORegistryEntry static void publishHiddenMedia(IOService * parent); static bool publishHiddenMediaApplier(const OSObject * entry, void * context); bool canTerminateForReplacement(IOService * client); + void unregisterAllInterrupts(void); private: bool matchPassive(OSDictionary * table, uint32_t options); bool matchInternal(OSDictionary * table, uint32_t options, unsigned int * did); static bool instanceMatch(const OSObject * entry, void * context); + OSDictionary * _copyPropertiesForMatching(void); static OSPtr copyExistingServices( OSDictionary * matching, IOOptionBits inState, IOOptionBits options = 0 ); @@ -1588,7 +1590,8 @@ class IOService : public IORegistryEntry IOReturn waitForState( UInt32 mask, UInt32 value, uint64_t timeout ); - UInt32 _adjustBusy( SInt32 delta ); + UInt32 _adjustBusy(SInt32 delta); + UInt32 _adjustBusy(SInt32 delta, bool unlock); bool terminatePhase1( IOOptionBits options = 0 ); void scheduleTerminatePhase2( IOOptionBits options = 0 ); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOSharedDataQueue.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOSharedDataQueue.h index c2c0fddf..5510264f 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOSharedDataQueue.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOSharedDataQueue.h @@ -88,7 +88,7 @@ class IOSharedDataQueue : public IODataQueue * @param size The size of the data queue memory region. * @result Returns the newly allocated IOSharedDataQueue instance. Zero is returned on failure. */ - static OSPtr withCapacity(UInt32 size); + static OSPtr withCapacity(UInt32 size __xnu_data_size); /*! * @function withEntries @@ -98,7 +98,7 @@ class IOSharedDataQueue : public IODataQueue * @param entrySize Size of each entry. * @result Reeturns the newly allocated IOSharedDataQueue instance. Zero is returned on failure. */ - static OSPtr withEntries(UInt32 numEntries, UInt32 entrySize); + static OSPtr withEntries(UInt32 numEntries, UInt32 entrySize __xnu_data_size); /*! * @function initWithCapacity diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOTypes.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOTypes.h index 91e6d43e..fe649465 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOTypes.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/IOTypes.h @@ -44,7 +44,14 @@ extern "C" { #endif #ifndef NULL -#if defined (__cplusplus) + +#define USE_CLANG_TYPES 0 + +#if USE_CLANG_TYPES +#define __need_NULL +#include +#undef __need_NULL +#elif defined (__cplusplus) #if __cplusplus >= 201103L && (defined(__arm__) || defined(__arm64__)) #define NULL nullptr #else @@ -53,6 +60,9 @@ extern "C" { #else #define NULL ((void *)0) #endif + +#undef USE_CLANG_TYPES + #endif /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/bluetooth/BluetoothAssignedNumbers.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/bluetooth/BluetoothAssignedNumbers.h index b8be8c06..70eaa999 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/bluetooth/BluetoothAssignedNumbers.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/bluetooth/BluetoothAssignedNumbers.h @@ -839,6 +839,7 @@ enum BluetoothHCIExtendedInquiryResponseDataTypes kBluetoothHCIExtendedInquiryResponseDataTypeURI = 0x24, kBluetoothHCIExtendedInquiryResponseDataTypeIndoorPositioning = 0x25, kBluetoothHCIExtendedInquiryResponseDataTypeTransportDiscoveryData = 0x26, + kBluetoothHCIExtendedInquiryResponseDataTypeCsisRsiData = 0x2E, kBluetoothHCIExtendedInquiryResponseDataType3DInformationData = 0x3D, kBluetoothHCIExtendedInquiryResponseDataTypeManufacturerSpecificData = 0xFF, kBluetoothHCIExtendedInquiryResponseDataTypeSlaveConnectionIntervalRange __attribute__ ((deprecated)) = kBluetoothHCIExtendedInquiryResponseDataTypePeripheralConnectionIntervalRange, diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/firewire/IOFWCommand.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/firewire/IOFWCommand.h index 229002a1..31b95ed2 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/firewire/IOFWCommand.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/firewire/IOFWCommand.h @@ -622,7 +622,8 @@ class IOFWWriteQuadCommand : public IOFWAsyncCommand protected: - UInt32 fQuads[kMaxWriteQuads]; + UInt32 * fQuads; + UInt32 fQuadsPad[kMaxWriteQuads - (sizeof(UInt32 *) >> 2)]; UInt32 * fQPtr; int fPackSize; @@ -707,7 +708,8 @@ class IOFWCompareAndSwapCommand : public IOFWAsyncCommand OSDeclareDefaultStructors(IOFWCompareAndSwapCommand) protected: - UInt32 fInputVals[4]; + UInt32 * fInputVals; + UInt32 fInputValsPad[2]; UInt32 fOldVal[2]; typedef struct diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/graphics/tl/iolocks b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/graphics/tl/iolocks index 898975da..9cf16368 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/graphics/tl/iolocks +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/graphics/tl/iolocks @@ -75,20 +75,20 @@ inline void unlock(IOSimpleLockInterrupt* sli, IOInterruptState is) // assertions out of XNU_KERNEL_PRIVATE. Until it is published I have copy and // pasted the implementaiton, radar to follow. inline void assertLocked(IOLock* l) - { LCK_MTX_ASSERT(static_cast(l), LCK_ASSERT_OWNED); } + { LCK_MTX_ASSERT(reinterpret_cast(l), LCK_ASSERT_OWNED); } inline void assertLocked(IORecursiveLock* l) { assert(IORecursiveLockHaveLock(l)); } inline void assertLocked(IOSimpleLock* l) - { LCK_SPIN_ASSERT(static_cast(l), LCK_ASSERT_OWNED); } + { LCK_SPIN_ASSERT(reinterpret_cast(l), LCK_ASSERT_OWNED); } inline void assertLocked(IOSimpleLockInterrupt* l) { LCK_SPIN_ASSERT(reinterpret_cast(l), LCK_ASSERT_OWNED); } inline void assertUnlocked(IOLock* l) - { LCK_MTX_ASSERT(static_cast(l), LCK_ASSERT_NOTOWNED); } + { LCK_MTX_ASSERT(reinterpret_cast(l), LCK_ASSERT_NOTOWNED); } inline void assertUnlocked(IORecursiveLock* l) { assert(!IORecursiveLockHaveLock(l)); } inline void assertUnlocked(IOSimpleLock* l) - { LCK_SPIN_ASSERT(static_cast(l), LCK_ASSERT_NOTOWNED); } + { LCK_SPIN_ASSERT(reinterpret_cast(l), LCK_ASSERT_NOTOWNED); } inline void assertUnlocked(IOSimpleLockInterrupt* l) { LCK_SPIN_ASSERT(reinterpret_cast(l), LCK_ASSERT_NOTOWNED); } }; // namespace locking_primitives diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDevice.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDevice.h index f5a7bba7..501dc85a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDevice.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDevice.h @@ -34,7 +34,6 @@ #include #include #include -#include #include #include @@ -49,6 +48,7 @@ class IOHIDDeviceShim; struct IOHIDReportHandler; class IOHIDAsyncReportQueue; class IOHIDDeviceElementContainer; +class IOSimpleReporter; struct AsyncReportCall; struct AsyncCommitCall; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDeviceKeys.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDeviceKeys.h index 77030c42..93725c53 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDeviceKeys.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDeviceKeys.h @@ -225,4 +225,13 @@ */ #define kIOHIDPhysicalDeviceUniqueIDKey "PhysicalDeviceUniqueID" +/*! + * @defined kIOHIDDeviceAccessEntitlementKey + * @abstract + * Defines a string or array of entitlements + * If the property defines a string, that entitlement is required + * If the property defines an array, only one entitlement from that array is required + */ +#define kIOHIDDeviceAccessEntitlementKey "HIDDeviceAccessEntitlement" + #endif /* IOHIDDeviceKeys_h */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDeviceTypes.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDeviceTypes.h index de9e54f3..614af052 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDeviceTypes.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDDeviceTypes.h @@ -77,11 +77,7 @@ typedef enum { * @abstract * Abstract data type used as a unique identifier for an element. */ -#if TARGET_OS_DRIVERKIT || defined(__LP64__) typedef uint32_t IOHIDElementCookie; -#else -typedef void * IOHIDElementCookie; -#endif /*! * @typedef IOHIDElementType diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDKeys.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDKeys.h index d4266fa9..8e94ee16 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDKeys.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDKeys.h @@ -490,6 +490,22 @@ typedef uint8_t IOHIDAccelerationAlgorithmType; */ #define kIOHIDPointerAccelerationMinimumKey "HIDPointerAccelerationMinimum" +/*! + * @define kIOHIDPrimaryTrackpadCanBeDisabledKey + * @abstract + * Data property that determines whether primary trackpad can be disabled. + */ +#define kIOHIDPrimaryTrackpadCanBeDisabledKey "PrimaryTrackpadCanBeDisabled" + +/*! + @defined kIOHIDKeyboardFunctionKeyCountKey + @abstract Property which provides the number of available function keys + @discussion For keyboards with a function key row, the number of available function keys will likely need to be + published within the system for consumers to enable functionality that is dependent on the + number of available keys. + */ +#define kIOHIDKeyboardFunctionKeyCountKey "HIDKeyboardFunctionKeyCount" + __END_DECLS #endif /* !_IOKIT_HID_IOHIDKEYS_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDUsageTables.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDUsageTables.h index 80339971..eb0cb669 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDUsageTables.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hid/IOHIDUsageTables.h @@ -54,7 +54,9 @@ enum kHIDPage_AlphanumericDisplay = 0x14, /* Reserved 0x15 - 0x1F */ kHIDPage_Sensor = 0x20, - /* Reserved 0x21 - 0x7f */ + /* Reserved 0x21 - 0x40 */ + kHIDPage_BrailleDisplay = 0x41, + /* Reserved 0x42 - 0x7F */ kHIDPage_Monitor = 0x80, kHIDPage_MonitorEnumerated = 0x81, kHIDPage_MonitorVirtual = 0x82, @@ -147,7 +149,8 @@ enum kHIDUsage_GD_SystemMenuLeft = 0x8B, /* Re-Trigger Control */ kHIDUsage_GD_SystemMenuUp = 0x8C, /* Re-Trigger Control */ kHIDUsage_GD_SystemMenuDown = 0x8D, /* Re-Trigger Control */ - /* 0x8E - 0x8F Reserved */ + kHIDUsage_GD_SystemColdRestart = 0x8E, /* One-Shot Control */ + kHIDUsage_GD_SystemWarmRestart = 0x8F, /* One-Shot Control */ kHIDUsage_GD_DPadUp = 0x90, /* On/Off Control */ kHIDUsage_GD_DPadDown = 0x91, /* On/Off Control */ kHIDUsage_GD_DPadRight = 0x92, /* On/Off Control */ @@ -160,7 +163,52 @@ enum kHIDUsage_GD_SFShiftLockIndicator = 0x99, /* Dynamic Value */ kHIDUsage_GD_SystemDismissNotification = 0x9A, /* One-Shot Control */ kHIDUsage_GD_DoNotDisturb = 0x9B, /* On/Off Control */ - /* 0x9C - 0xFFFF Reserved */ + /* 0x9C - 0x9F Reserved */ + kHIDUsage_GD_SystemDock = 0xA0, /* One-Shot Control */ + kHIDUsage_GD_SystemUndock = 0xA1, /* One-Shot Control */ + kHIDUsage_GD_SystemSetup = 0xA2, /* One-Shot Control */ + kHIDUsage_GD_SystemBreak = 0xA3, /* One-Shot Control */ + kHIDUsage_GD_SystemDebuggerBreak = 0xA4, /* One-Shot Control */ + kHIDUsage_GD_ApplicationBreak = 0xA5, /* One-Shot Control */ + kHIDUsage_GD_ApplicationDebuggerBreak = 0xA6, /* One-Shot Control */ + kHIDUsage_GD_SystemSpeakerMute = 0xA7, /* One-Shot Control */ + kHIDUsage_GD_SystemHibernate = 0xA8, /* One-Shot Control */ + kHIDUsage_GD_SystemMicrophoneMute = 0xA9, /* On/Off Control */ + /* 0xAA - 0xAF Reserved */ + kHIDUsage_GD_SystemDisplayInvert = 0xB0, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayInternal = 0xB1, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayExternal = 0xB2, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayBoth = 0xB3, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayDual = 0xB4, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayToggleMode = 0xB5, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplaySwap = 0xB6, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayToggleLCDAutoscale = 0xB7, /* One-Shot Control */ + /* 0xB8 - 0xBF Reserved */ + kHIDUsage_GD_SensorZone = 0xC0, /* Logical Collection */ + kHIDUsage_GD_RPM = 0xC1, /* Dynamic Value */ + kHIDUsage_GD_CoolantLevel = 0xC2, /* Dynamic Value */ + kHIDUsage_GD_CoolantCriticalLevel = 0xC3, /* Static Value */ + kHIDUsage_GD_CoolantPump = 0xC4, /* Usage Switch */ + kHIDUsage_GD_ChassisEnclosure = 0xC5, /* Logical Collection */ + kHIDUsage_GD_WirelessRadioButton = 0xC6, /* On/Off Control */ + kHIDUsage_GD_WirelessRadioLED = 0xC7, /* On/Off Control */ + kHIDUsage_GD_WirelessRadioSliderSwitch = 0xC8, /* On/Off Control */ + kHIDUsage_GD_SystemDisplayRotationLockButton = 0xC9, /* On/Off Control */ + kHIDUsage_GD_SystemDisplayRotationLockSliderSwitch = 0xCA, /* On/Off Control */ + kHIDUsage_GD_ControlEnable = 0xCB, /* Dynamic Flag */ + /* 0xCC - 0xCF Reserved */ + kHIDUsage_GD_DockableDeviceUniqueID = 0xD0, /* Dynamic Value */ + kHIDUsage_GD_DockableDeviceVendorID = 0xD1, /* Dynamic Value */ + kHIDUsage_GD_DockableDevicePrimaryUsagePage = 0xD2, /* Dynamic Value */ + kHIDUsage_GD_DockableDevicePrimaryUsageID = 0xD3, /* Dynamic Value */ + kHIDUsage_GD_DockableDeviceDockingState = 0xD4, /* Dynamic Flag */ + kHIDUsage_GD_DockableDeviceDisplayOcclusion = 0xD5, /* Logical Collection */ + kHIDUsage_GD_DockableDeviceObjectType = 0xD6, /* Dynamic Value */ + /* 0xD7 - 0xDF Reserved */ + kHIDUsage_GD_CallActiveLED = 0xE0, /* On/Off Control */ + kHIDUsage_GD_CallMuteToggle = 0xE1, /* One-Shot Control */ + kHIDUsage_GD_CallMuteLED = 0xE2, /* On/Off Control */ + /* 0xE3 - 0xFFFF Reserved */ kHIDUsage_GD_Reserved = 0xFFFF }; @@ -1445,7 +1493,8 @@ enum kHIDUsage_Dig_MultiplePointDigitizer = 0x0C, /* Application Collection */ kHIDUsage_Dig_FreeSpaceWand = 0x0D, /* Application Collection */ kHIDUsage_Dig_DeviceConfiguration = 0x0E, /* Application Collection */ - /* 0x0F - 0x1F Reserved */ + kHIDUsage_Dig_CapacitiveHeatMapDigitizer = 0x0F, /* Application Collection */ + /* 0x10 - 0x1F Reserved */ kHIDUsage_Dig_Stylus = 0x20, /* Logical Collection */ kHIDUsage_Dig_Puck = 0x21, /* Logical Collection */ kHIDUsage_Dig_Finger = 0x22, /* Logical Collection */ @@ -1498,6 +1547,9 @@ enum kHIDUsage_Dig_GestureCharacterEncodingUTF16BE = 0x67, /* Selector */ kHIDUsage_Dig_GestureCharacterEncodingUTF32LE = 0x68, /* Selector */ kHIDUsage_Dig_GestureCharacterEncodingUTF32BE = 0x69, /* Selector */ + kHIDUsage_Dig_CapacitiveHeatMapProtocolVendorID = 0x6A, /* Static Value */ + kHIDUsage_Dig_CapacitiveHeatMapProtocolVersion = 0x6B, /* Static Value */ + kHIDUsage_Dig_CapacitiveHeatMapFrameData = 0x6C, /* Dynamic Value */ kHIDUsage_Dig_ReportRate = 0xA1, /* Dynamic Value */ @@ -2169,6 +2221,60 @@ enum /* 0x054A - 0x055F Reserved */ }; +/* Braille Display Page (0x20) */ +/* The Braille Display page is intended for use by devices that allow visually impaired computer users to read out text using raised pins. These devices also have support for controls that help navigate the computer screen. Typically, braille displays interface with software known as a screen reader in order to perform this navigation. */ +enum +{ + kHIDUsage_BD_Undefined = 0x00, + kHIDUsage_BD_BrailleDisplay = 0x01, /* Application Collection */ + kHIDUsage_BD_BrailleRow = 0x02, /* Named Array */ + kHIDUsage_BD_8DotBrailleCell = 0x03, /* Dynamic Value */ + kHIDUsage_BD_6DotBrailleCell = 0x04, /* Dynamic Value */ + kHIDUsage_BD_NumberOfBrailleCells = 0x05, /* Dynamic Value */ + kHIDUsage_BD_ScreenReaderControl = 0x06, /* Named Array */ + kHIDUsage_BD_ScreenReaderIdentifier = 0x07, /* Dynamic Value */ + /* 0x08 - 0xF9 Reserved */ + kHIDUsage_BD_RouterSet1 = 0xFA, /* Named Array */ + kHIDUsage_BD_RouterSet2 = 0xFB, /* Named Array */ + kHIDUsage_BD_RouterSet3 = 0xFC, /* Named Array */ + /* 0xFD - 0xFF Reserved */ + kHIDUsage_BD_RouterKey = 0x100, /* Selector */ + kHIDUsage_BD_RowRouterKey = 0x101, /* Selector */ + /* 0x102 - 0x1FF Reserved */ + kHIDUsage_BD_BrailleButtons = 0x200, /* Named Array */ + kHIDUsage_BD_BrailleKeyboardDot1 = 0x201, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot2 = 0x202, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot3 = 0x203, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot4 = 0x204, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot5 = 0x205, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot6 = 0x206, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot7 = 0x207, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot8 = 0x208, /* Selector */ + kHIDUsage_BD_BrailleKeyboardSpace = 0x209, /* Selector */ + kHIDUsage_BD_BrailleKeyboardLeftSpace = 0x20A, /* Selector */ + kHIDUsage_BD_BrailleKeyboardRightSpace = 0x20B, /* Selector */ + kHIDUsage_BD_BrailleFaceControls = 0x20C, /* Named Array */ + kHIDUsage_BD_BrailleLeftControls = 0x20D, /* Named Array */ + kHIDUsage_BD_BrailleRightControls = 0x20E, /* Named Array */ + kHIDUsage_BD_BrailleTopControls = 0x20F, /* Named Array */ + kHIDUsage_BD_BrailleJoystickCenter = 0x210, /* Selector */ + kHIDUsage_BD_BrailleJoystickUp = 0x211, /* Selector */ + kHIDUsage_BD_BrailleJoystickDown = 0x212, /* Selector */ + kHIDUsage_BD_BrailleJoystickLeft = 0x213, /* Selector */ + kHIDUsage_BD_BrailleJoystickRight = 0x214, /* Selector */ + kHIDUsage_BD_BrailleDPadCenter = 0x215, /* Selector */ + kHIDUsage_BD_BrailleDPadUp = 0x216, /* Selector */ + kHIDUsage_BD_BrailleDPadDown = 0x217, /* Selector */ + kHIDUsage_BD_BrailleDPadLeft = 0x218, /* Selector */ + kHIDUsage_BD_BrailleDPadRight = 0x219, /* Selector */ + kHIDUsage_BD_BraillePanLeft = 0x21A, /* Selector */ + kHIDUsage_BD_BraillePanRight = 0x21B, /* Selector */ + kHIDUsage_BD_BrailleRockerUp = 0x21C, /* Selector */ + kHIDUsage_BD_BrailleRockerDown = 0x21D, /* Selector */ + kHIDUsage_BD_BrailleRockerPress = 0x21E, /* Selector */ + /* Reserved 0x21F - 0xFFFF */ +}; + /* Power Device Page (0x84) */ /* This section provides detailed descriptions of the usages employed by Power Devices. */ enum @@ -2537,8 +2643,8 @@ enum kHIDUsage_BCS_CheckDigitDisable = 0xD7, /* SEL - Check Digit Disable */ kHIDUsage_BCS_CheckDigitEnableInterleaved2of5OPCC = 0xD8, /* SEL - Check Digit Enable Interleaved 2 of 5 OPCC */ kHIDUsage_BCS_CheckDigitEnableInterleaved2of5USS = 0xD9, /* SEL - Check Digit Enable Interleaved 2 of 5 USS */ - kHIDUsage_BCS_CheckDigitEnableStandard2of5OPCC = 0xD8, /* SEL - Check Digit Enable Standard 2 of 5 OPCC */ - kHIDUsage_BCS_CheckDigitEnableStandard2of5USS = 0xD9, /* SEL - Check Digit Enable Standard 2 of 5 USS */ + kHIDUsage_BCS_CheckDigitEnableStandard2of5OPCC = 0xDA, /* SEL - Check Digit Enable Standard 2 of 5 OPCC */ + kHIDUsage_BCS_CheckDigitEnableStandard2of5USS = 0xDB, /* SEL - Check Digit Enable Standard 2 of 5 USS */ kHIDUsage_BCS_CheckDigitEnableOneMSIPlessey = 0xDC, /* SEL - Check Digit Enable One MSI Plessey */ kHIDUsage_BCS_CheckDigitEnableTwoMSIPlessey = 0xDD, /* SEL - Check Digit Enable Two MSI Plessey */ kHIDUsage_BCS_CheckDigitCodabarEnable = 0xDE, /* SEL - Check Digit Codabar Enable */ @@ -2557,7 +2663,7 @@ enum kHIDUsage_BCS_ScannerDataAccuracy = 0x101, /* DV - Scanner Data Accuracy */ kHIDUsage_BCS_RawDataPolarity = 0x102, /* NArry - Raw Data Polarity */ kHIDUsage_BCS_PolarityInvertedBarCode = 0x103, /* SEL - Polarity Inverted Bar Code */ - kHIDUsage_BCS_PolarityNormalBarCode = 0x103, /* SEL - Polarity Normal Bar Code */ + kHIDUsage_BCS_PolarityNormalBarCode = 0x104, /* SEL - Polarity Normal Bar Code */ /* Reserved 0x105 */ kHIDUsage_BCS_MinimumLengthToDecode = 0x106, /* DV - Minimum Length to Decode */ kHIDUsage_BCS_MaximumLengthToDecode = 0x107, /* DV - Maximum Length to Decode */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidevent/IOHIDEventDriver.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidevent/IOHIDEventDriver.h index 6d7d47b7..3386ae24 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidevent/IOHIDEventDriver.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidevent/IOHIDEventDriver.h @@ -65,6 +65,7 @@ class IOHIDEventDriver : public IOHIDEventService struct ExpansionData { SInt32 absoluteAxisRemovalPercentage; SInt32 preferredAxisRemovalPercentage; + bool appleVendorSupported; struct { OSArray * elements; @@ -83,7 +84,6 @@ class IOHIDEventDriver : public IOHIDEventService OSArray * elements; OSArray * blessedUsagePairs; UInt8 bootMouseData[4]; - bool appleVendorSupported; IOHIDElement * keyboardPower; } keyboard; @@ -99,6 +99,7 @@ class IOHIDEventDriver : public IOHIDEventService IOHIDElement * relativeScanTime; IOHIDElement * surfaceSwitch; IOHIDElement * reportRate; + IOHIDElement * noiseMetric; OSArray * buttons; } digitizer; @@ -162,8 +163,10 @@ class IOHIDEventDriver : public IOHIDEventService struct { IOFixed l4; IOFixed r4; - IOFixed l5; - IOFixed r5; + IOFixed m1; + IOFixed m2; + IOFixed m3; + IOFixed m4; } extra; } gameController; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidevent/IOHIDEventService.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidevent/IOHIDEventService.h index 634fd7e3..87de101a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidevent/IOHIDEventService.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidevent/IOHIDEventService.h @@ -1005,9 +1005,69 @@ class IOHIDEventService : public IOService IOFixed buttonR4, IOFixed buttonL5, IOFixed buttonR5, - IOOptionBits options = 0 ); + IOOptionBits options = 0 ) __attribute__((deprecated("L5, R5 buttons are unsupported", "dispatchExtendedGameControllerEventWithOptionalButtons(timeStamp, dpadUp, dpadDown, dpadLeft, dpadRight, faceX, faceY, faceA, faceB, shoulderL1, shoulderR1, shoulderL2, shoulderR2, joystickX, joystickY, joystickZ, joystickRz, thumbstickButtonLeft, thumbstickButtonRight, buttonL4, buttonR4, buttonM1, buttonM2, buttonM3, buttonM4, options)"))); - OSMetaClassDeclareReservedUnused(IOHIDEventService, 28); + /*! + @function dispatchExtendedGameControllerEventWithOptionalBottomButtons + @abstract Dispatch extended game controller event + @discussion This is meant to dispatch a conforming extended game controller event that includes the + following: Direction Pad, Face Buttons, Left and Right Joysticks and 3 left and right shoulder buttons and 4 bottom buttons. + @param timeStamp AbsoluteTime representing origination of event + @param dpadUp Direction pad up with a fixed value between 0.0 and 1.0 + @param dpadDown Direction pad down with a fixed value between 0.0 and 1.0 + @param dpadLeft Direction pad left with a fixed value between 0.0 and 1.0 + @param dpadRight Direction pad right with a fixed value between 0.0 and 1.0 + @param faceX Face button X with a fixed value between 0.0 and 1.0 + @param faceY Face button Y with a fixed value between 0.0 and 1.0 + @param faceA Face button A with a fixed value between 0.0 and 1.0 + @param faceB Face button B with a fixed value between 0.0 and 1.0 + @param shoulderL1 Top left shoulder button with a fixed value between 0.0 and 1.0 + @param shoulderR1 Top right shoulder button with a fixed value between 0.0 and 1.0 + @param shoulderL2 Bottom left shoulder button with a fixed value between 0.0 and 1.0 + @param shoulderR2 Bottom right shoulder button with a fixed value between 0.0 and 1.0 + @param joystickX Joystick X axis with a fixed value between -1.0 and 1.0 + @param joystickY Joystick Y axis with a fixed value between -1.0 and 1.0 + @param joystickZ Joystick Z axis with a fixed value between -1.0 and 1.0 + @param joystickRz Joystick Rz axis with a fixed value between -1.0 and 1.0 + @param thumbstickButtonLeft Joystick left thumbstick button with boolean value true/false for button down/up + @param thumbstickButtonRight Joystick right thumbstick button with boolean value true/false for button down/up + @param buttonL4 Extra button L4 with a fixed value between -1.0 and 1.0 + @param buttonR4 Extra button R4 with a fixed value between -1.0 and 1.0 + @param buttonM1 Extra button M1 with a fixed value between -1.0 and 1.0 + @param buttonM2 Extra button M2 with a fixed value between -1.0 and 1.0 + @param buttonM3 Extra button M3 with a fixed value between -1.0 and 1.0 + @param buttonM4 Extra button M4 with a fixed value between -1.0 and 1.0 + @param options Additional options to be defined. + */ + OSMetaClassDeclareReservedUsed(IOHIDEventService, 28); + virtual void dispatchExtendedGameControllerEventWithOptionalBottomButtons( + AbsoluteTime timeStamp, + IOFixed dpadUp, + IOFixed dpadDown, + IOFixed dpadLeft, + IOFixed dpadRight, + IOFixed faceX, + IOFixed faceY, + IOFixed faceA, + IOFixed faceB, + IOFixed shoulderL1, + IOFixed shoulderR1, + IOFixed shoulderL2, + IOFixed shoulderR2, + IOFixed joystickX, + IOFixed joystickY, + IOFixed joystickZ, + IOFixed joystickRz, + boolean_t thumbstickButtonLeft, + boolean_t thumbstickButtonRight, + IOFixed buttonL4, + IOFixed buttonR4, + IOFixed buttonM1, + IOFixed buttonM2, + IOFixed buttonM3, + IOFixed buttonM4, + IOOptionBits options = 0 ); + OSMetaClassDeclareReservedUnused(IOHIDEventService, 29); OSMetaClassDeclareReservedUnused(IOHIDEventService, 30); OSMetaClassDeclareReservedUnused(IOHIDEventService, 31); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidsystem/IOHIDUsageTables.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidsystem/IOHIDUsageTables.h index 80339971..eb0cb669 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidsystem/IOHIDUsageTables.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/hidsystem/IOHIDUsageTables.h @@ -54,7 +54,9 @@ enum kHIDPage_AlphanumericDisplay = 0x14, /* Reserved 0x15 - 0x1F */ kHIDPage_Sensor = 0x20, - /* Reserved 0x21 - 0x7f */ + /* Reserved 0x21 - 0x40 */ + kHIDPage_BrailleDisplay = 0x41, + /* Reserved 0x42 - 0x7F */ kHIDPage_Monitor = 0x80, kHIDPage_MonitorEnumerated = 0x81, kHIDPage_MonitorVirtual = 0x82, @@ -147,7 +149,8 @@ enum kHIDUsage_GD_SystemMenuLeft = 0x8B, /* Re-Trigger Control */ kHIDUsage_GD_SystemMenuUp = 0x8C, /* Re-Trigger Control */ kHIDUsage_GD_SystemMenuDown = 0x8D, /* Re-Trigger Control */ - /* 0x8E - 0x8F Reserved */ + kHIDUsage_GD_SystemColdRestart = 0x8E, /* One-Shot Control */ + kHIDUsage_GD_SystemWarmRestart = 0x8F, /* One-Shot Control */ kHIDUsage_GD_DPadUp = 0x90, /* On/Off Control */ kHIDUsage_GD_DPadDown = 0x91, /* On/Off Control */ kHIDUsage_GD_DPadRight = 0x92, /* On/Off Control */ @@ -160,7 +163,52 @@ enum kHIDUsage_GD_SFShiftLockIndicator = 0x99, /* Dynamic Value */ kHIDUsage_GD_SystemDismissNotification = 0x9A, /* One-Shot Control */ kHIDUsage_GD_DoNotDisturb = 0x9B, /* On/Off Control */ - /* 0x9C - 0xFFFF Reserved */ + /* 0x9C - 0x9F Reserved */ + kHIDUsage_GD_SystemDock = 0xA0, /* One-Shot Control */ + kHIDUsage_GD_SystemUndock = 0xA1, /* One-Shot Control */ + kHIDUsage_GD_SystemSetup = 0xA2, /* One-Shot Control */ + kHIDUsage_GD_SystemBreak = 0xA3, /* One-Shot Control */ + kHIDUsage_GD_SystemDebuggerBreak = 0xA4, /* One-Shot Control */ + kHIDUsage_GD_ApplicationBreak = 0xA5, /* One-Shot Control */ + kHIDUsage_GD_ApplicationDebuggerBreak = 0xA6, /* One-Shot Control */ + kHIDUsage_GD_SystemSpeakerMute = 0xA7, /* One-Shot Control */ + kHIDUsage_GD_SystemHibernate = 0xA8, /* One-Shot Control */ + kHIDUsage_GD_SystemMicrophoneMute = 0xA9, /* On/Off Control */ + /* 0xAA - 0xAF Reserved */ + kHIDUsage_GD_SystemDisplayInvert = 0xB0, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayInternal = 0xB1, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayExternal = 0xB2, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayBoth = 0xB3, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayDual = 0xB4, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayToggleMode = 0xB5, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplaySwap = 0xB6, /* One-Shot Control */ + kHIDUsage_GD_SystemDisplayToggleLCDAutoscale = 0xB7, /* One-Shot Control */ + /* 0xB8 - 0xBF Reserved */ + kHIDUsage_GD_SensorZone = 0xC0, /* Logical Collection */ + kHIDUsage_GD_RPM = 0xC1, /* Dynamic Value */ + kHIDUsage_GD_CoolantLevel = 0xC2, /* Dynamic Value */ + kHIDUsage_GD_CoolantCriticalLevel = 0xC3, /* Static Value */ + kHIDUsage_GD_CoolantPump = 0xC4, /* Usage Switch */ + kHIDUsage_GD_ChassisEnclosure = 0xC5, /* Logical Collection */ + kHIDUsage_GD_WirelessRadioButton = 0xC6, /* On/Off Control */ + kHIDUsage_GD_WirelessRadioLED = 0xC7, /* On/Off Control */ + kHIDUsage_GD_WirelessRadioSliderSwitch = 0xC8, /* On/Off Control */ + kHIDUsage_GD_SystemDisplayRotationLockButton = 0xC9, /* On/Off Control */ + kHIDUsage_GD_SystemDisplayRotationLockSliderSwitch = 0xCA, /* On/Off Control */ + kHIDUsage_GD_ControlEnable = 0xCB, /* Dynamic Flag */ + /* 0xCC - 0xCF Reserved */ + kHIDUsage_GD_DockableDeviceUniqueID = 0xD0, /* Dynamic Value */ + kHIDUsage_GD_DockableDeviceVendorID = 0xD1, /* Dynamic Value */ + kHIDUsage_GD_DockableDevicePrimaryUsagePage = 0xD2, /* Dynamic Value */ + kHIDUsage_GD_DockableDevicePrimaryUsageID = 0xD3, /* Dynamic Value */ + kHIDUsage_GD_DockableDeviceDockingState = 0xD4, /* Dynamic Flag */ + kHIDUsage_GD_DockableDeviceDisplayOcclusion = 0xD5, /* Logical Collection */ + kHIDUsage_GD_DockableDeviceObjectType = 0xD6, /* Dynamic Value */ + /* 0xD7 - 0xDF Reserved */ + kHIDUsage_GD_CallActiveLED = 0xE0, /* On/Off Control */ + kHIDUsage_GD_CallMuteToggle = 0xE1, /* One-Shot Control */ + kHIDUsage_GD_CallMuteLED = 0xE2, /* On/Off Control */ + /* 0xE3 - 0xFFFF Reserved */ kHIDUsage_GD_Reserved = 0xFFFF }; @@ -1445,7 +1493,8 @@ enum kHIDUsage_Dig_MultiplePointDigitizer = 0x0C, /* Application Collection */ kHIDUsage_Dig_FreeSpaceWand = 0x0D, /* Application Collection */ kHIDUsage_Dig_DeviceConfiguration = 0x0E, /* Application Collection */ - /* 0x0F - 0x1F Reserved */ + kHIDUsage_Dig_CapacitiveHeatMapDigitizer = 0x0F, /* Application Collection */ + /* 0x10 - 0x1F Reserved */ kHIDUsage_Dig_Stylus = 0x20, /* Logical Collection */ kHIDUsage_Dig_Puck = 0x21, /* Logical Collection */ kHIDUsage_Dig_Finger = 0x22, /* Logical Collection */ @@ -1498,6 +1547,9 @@ enum kHIDUsage_Dig_GestureCharacterEncodingUTF16BE = 0x67, /* Selector */ kHIDUsage_Dig_GestureCharacterEncodingUTF32LE = 0x68, /* Selector */ kHIDUsage_Dig_GestureCharacterEncodingUTF32BE = 0x69, /* Selector */ + kHIDUsage_Dig_CapacitiveHeatMapProtocolVendorID = 0x6A, /* Static Value */ + kHIDUsage_Dig_CapacitiveHeatMapProtocolVersion = 0x6B, /* Static Value */ + kHIDUsage_Dig_CapacitiveHeatMapFrameData = 0x6C, /* Dynamic Value */ kHIDUsage_Dig_ReportRate = 0xA1, /* Dynamic Value */ @@ -2169,6 +2221,60 @@ enum /* 0x054A - 0x055F Reserved */ }; +/* Braille Display Page (0x20) */ +/* The Braille Display page is intended for use by devices that allow visually impaired computer users to read out text using raised pins. These devices also have support for controls that help navigate the computer screen. Typically, braille displays interface with software known as a screen reader in order to perform this navigation. */ +enum +{ + kHIDUsage_BD_Undefined = 0x00, + kHIDUsage_BD_BrailleDisplay = 0x01, /* Application Collection */ + kHIDUsage_BD_BrailleRow = 0x02, /* Named Array */ + kHIDUsage_BD_8DotBrailleCell = 0x03, /* Dynamic Value */ + kHIDUsage_BD_6DotBrailleCell = 0x04, /* Dynamic Value */ + kHIDUsage_BD_NumberOfBrailleCells = 0x05, /* Dynamic Value */ + kHIDUsage_BD_ScreenReaderControl = 0x06, /* Named Array */ + kHIDUsage_BD_ScreenReaderIdentifier = 0x07, /* Dynamic Value */ + /* 0x08 - 0xF9 Reserved */ + kHIDUsage_BD_RouterSet1 = 0xFA, /* Named Array */ + kHIDUsage_BD_RouterSet2 = 0xFB, /* Named Array */ + kHIDUsage_BD_RouterSet3 = 0xFC, /* Named Array */ + /* 0xFD - 0xFF Reserved */ + kHIDUsage_BD_RouterKey = 0x100, /* Selector */ + kHIDUsage_BD_RowRouterKey = 0x101, /* Selector */ + /* 0x102 - 0x1FF Reserved */ + kHIDUsage_BD_BrailleButtons = 0x200, /* Named Array */ + kHIDUsage_BD_BrailleKeyboardDot1 = 0x201, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot2 = 0x202, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot3 = 0x203, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot4 = 0x204, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot5 = 0x205, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot6 = 0x206, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot7 = 0x207, /* Selector */ + kHIDUsage_BD_BrailleKeyboardDot8 = 0x208, /* Selector */ + kHIDUsage_BD_BrailleKeyboardSpace = 0x209, /* Selector */ + kHIDUsage_BD_BrailleKeyboardLeftSpace = 0x20A, /* Selector */ + kHIDUsage_BD_BrailleKeyboardRightSpace = 0x20B, /* Selector */ + kHIDUsage_BD_BrailleFaceControls = 0x20C, /* Named Array */ + kHIDUsage_BD_BrailleLeftControls = 0x20D, /* Named Array */ + kHIDUsage_BD_BrailleRightControls = 0x20E, /* Named Array */ + kHIDUsage_BD_BrailleTopControls = 0x20F, /* Named Array */ + kHIDUsage_BD_BrailleJoystickCenter = 0x210, /* Selector */ + kHIDUsage_BD_BrailleJoystickUp = 0x211, /* Selector */ + kHIDUsage_BD_BrailleJoystickDown = 0x212, /* Selector */ + kHIDUsage_BD_BrailleJoystickLeft = 0x213, /* Selector */ + kHIDUsage_BD_BrailleJoystickRight = 0x214, /* Selector */ + kHIDUsage_BD_BrailleDPadCenter = 0x215, /* Selector */ + kHIDUsage_BD_BrailleDPadUp = 0x216, /* Selector */ + kHIDUsage_BD_BrailleDPadDown = 0x217, /* Selector */ + kHIDUsage_BD_BrailleDPadLeft = 0x218, /* Selector */ + kHIDUsage_BD_BrailleDPadRight = 0x219, /* Selector */ + kHIDUsage_BD_BraillePanLeft = 0x21A, /* Selector */ + kHIDUsage_BD_BraillePanRight = 0x21B, /* Selector */ + kHIDUsage_BD_BrailleRockerUp = 0x21C, /* Selector */ + kHIDUsage_BD_BrailleRockerDown = 0x21D, /* Selector */ + kHIDUsage_BD_BrailleRockerPress = 0x21E, /* Selector */ + /* Reserved 0x21F - 0xFFFF */ +}; + /* Power Device Page (0x84) */ /* This section provides detailed descriptions of the usages employed by Power Devices. */ enum @@ -2537,8 +2643,8 @@ enum kHIDUsage_BCS_CheckDigitDisable = 0xD7, /* SEL - Check Digit Disable */ kHIDUsage_BCS_CheckDigitEnableInterleaved2of5OPCC = 0xD8, /* SEL - Check Digit Enable Interleaved 2 of 5 OPCC */ kHIDUsage_BCS_CheckDigitEnableInterleaved2of5USS = 0xD9, /* SEL - Check Digit Enable Interleaved 2 of 5 USS */ - kHIDUsage_BCS_CheckDigitEnableStandard2of5OPCC = 0xD8, /* SEL - Check Digit Enable Standard 2 of 5 OPCC */ - kHIDUsage_BCS_CheckDigitEnableStandard2of5USS = 0xD9, /* SEL - Check Digit Enable Standard 2 of 5 USS */ + kHIDUsage_BCS_CheckDigitEnableStandard2of5OPCC = 0xDA, /* SEL - Check Digit Enable Standard 2 of 5 OPCC */ + kHIDUsage_BCS_CheckDigitEnableStandard2of5USS = 0xDB, /* SEL - Check Digit Enable Standard 2 of 5 USS */ kHIDUsage_BCS_CheckDigitEnableOneMSIPlessey = 0xDC, /* SEL - Check Digit Enable One MSI Plessey */ kHIDUsage_BCS_CheckDigitEnableTwoMSIPlessey = 0xDD, /* SEL - Check Digit Enable Two MSI Plessey */ kHIDUsage_BCS_CheckDigitCodabarEnable = 0xDE, /* SEL - Check Digit Codabar Enable */ @@ -2557,7 +2663,7 @@ enum kHIDUsage_BCS_ScannerDataAccuracy = 0x101, /* DV - Scanner Data Accuracy */ kHIDUsage_BCS_RawDataPolarity = 0x102, /* NArry - Raw Data Polarity */ kHIDUsage_BCS_PolarityInvertedBarCode = 0x103, /* SEL - Polarity Inverted Bar Code */ - kHIDUsage_BCS_PolarityNormalBarCode = 0x103, /* SEL - Polarity Normal Bar Code */ + kHIDUsage_BCS_PolarityNormalBarCode = 0x104, /* SEL - Polarity Normal Bar Code */ /* Reserved 0x105 */ kHIDUsage_BCS_MinimumLengthToDecode = 0x106, /* DV - Minimum Length to Decode */ kHIDUsage_BCS_MaximumLengthToDecode = 0x107, /* DV - Maximum Length to Decode */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/network/IOEthernetInterface.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/network/IOEthernetInterface.h index d57b715f..a1f6834d 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/network/IOEthernetInterface.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/network/IOEthernetInterface.h @@ -102,6 +102,7 @@ class __exported APPLE_KEXT_DEPRECATE IOEthernetInterface : public IONetworkInte uint32_t supportedWakeFilters; // bitmask of supported wake filters OSNumber * disabledWakeFilters; // OSNumber of disabled wake filters uint64_t wompEnabledAssertionID; + OSNumber * linkActiveCount; // monotonically increasing count for link active }; /*! @var reserved Reserved for future use. (Internal use only) */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/network/IONetworkInterface.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/network/IONetworkInterface.h index d7a28b35..f0ed3b70 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/network/IONetworkInterface.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/network/IONetworkInterface.h @@ -344,6 +344,7 @@ class __exported IONetworkInterface : public IOService uint32_t * cnt, uint32_t * len); void notifyDriver( uint32_t type, void * data ); static void handleNetworkInputEvent(thread_call_param_t param0, thread_call_param_t param1); + void fetchDriverOutputStats( uint32_t * outErrors, uint32_t * outPackets ); public: diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIBridge.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIBridge.h index 19ea0aff..62a199cc 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIBridge.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIBridge.h @@ -46,8 +46,9 @@ class IOPCIHostBridgeData; enum { - kCheckLinkParents = 0x00000001, - kCheckLinkForPower = 0x00000002, + kCheckLinkParents = 0x00000001, + kCheckLinkForPower = 0x00000002, + kCheckLinkInTraining = 0x00000004, }; enum { @@ -190,6 +191,7 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIBridge : public IOService atomic_bool readyToProbe; bool commandCompletedSupport; bool commandSent; + AbsoluteTime commandSentTimestamp; bool childrenInReset; }; @@ -393,8 +395,10 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIBridge : public IOService OSMetaClassDeclareReservedUsed(IOPCIBridge, 12); virtual IOReturn waitForLinkUp(IOPCIDevice *bridgeDevice); + OSMetaClassDeclareReservedUsed(IOPCIBridge, 13); + virtual IOReturn busProbe(IOPCIDevice *bridgeDevice, uint32_t options); + // Unused Padding - OSMetaClassDeclareReservedUnused(IOPCIBridge, 13); OSMetaClassDeclareReservedUnused(IOPCIBridge, 14); OSMetaClassDeclareReservedUnused(IOPCIBridge, 15); OSMetaClassDeclareReservedUnused(IOPCIBridge, 16); @@ -431,8 +435,8 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIBridge : public IOService #endif private: - IOReturn terminateChild(IOPCIDevice *child); - IOReturn terminateChildGated(IOPCIDevice *child); + IOReturn childClientCrashRecovery(IOPCIDevice *child); + IOReturn childClientCrashRecoveryGated(IOPCIDevice *child); void hotReset(IOPCIDevice *bridgeDevice); void warmReset(void); IOReturn waitForResetComplete(void); @@ -470,6 +474,14 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIBridge : public IOService // findDeviceByXXX retains the returned IOPCIDevice object IOPCIDevice *findDeviceByBDF(IOPCIAddressSpace space); IOPCIDevice *findDeviceByMemAddress(IOPhysicalAddress address); + +private: + void waitForDartToQuiesce(IOPCIDevice *nub); + tIOPCIDeviceResetTypes getChildResetType(IOPCIDevice *child); + void calculateL1PMParameters(IOPCIDevice *port, IOPCIDevice *linkPartner); + +protected: + static bool hasBusLeadCTOBug(uint32_t vendorDevice); }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ @@ -493,7 +505,8 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCI2PCIBridge : public IOPCIBridge IOPMDriverAssertionID fPMAssertion; IOSimpleLock * fISRLock; struct IOPCIAERRoot * fAERRoot; - uint32_t __resvA[6]; + uint32_t fTimerProbeOptions; + uint32_t __resvA[5]; int32_t fTunnelL1EnableCount; uint32_t fHotplugCount; @@ -557,6 +570,10 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCI2PCIBridge : public IOPCIBridge IOReturn setPowerState( unsigned long powerState, IOService * whatDevice ) override; + virtual IOReturn powerStateDidChangeTo (IOPMPowerFlags capabilities, + unsigned long stateNumber, + IOService* whatDevice) override; + void adjustPowerState(unsigned long state); virtual IOReturn addPowerChild( IOService * theChild ) override; @@ -596,8 +613,11 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCI2PCIBridge : public IOPCIBridge virtual IOReturn getLinkSpeed(tIOPCILinkSpeed *linkSpeed) override; +protected: + OSMetaClassDeclareReservedUsed(IOPCI2PCIBridge, 0); + virtual IOReturn busProbe(IOPCIDevice *bridgeDevice, uint32_t options) override; + // Unused Padding - OSMetaClassDeclareReservedUnused(IOPCI2PCIBridge, 0); OSMetaClassDeclareReservedUnused(IOPCI2PCIBridge, 1); OSMetaClassDeclareReservedUnused(IOPCI2PCIBridge, 2); OSMetaClassDeclareReservedUnused(IOPCI2PCIBridge, 3); @@ -607,7 +627,6 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCI2PCIBridge : public IOPCIBridge OSMetaClassDeclareReservedUnused(IOPCI2PCIBridge, 7); OSMetaClassDeclareReservedUnused(IOPCI2PCIBridge, 8); -protected: void allocateBridgeInterrupts(IOService * provider); void startBridgeInterrupts(IOService * provider); void enableBridgeInterrupts(void); @@ -627,9 +646,16 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCI2PCIBridge : public IOPCIBridge void attnButtonTimer(IOTimerEventSource * es); IOReturn attnButtonHandlerFinish(thread_call_t threadCall); void dllscEventTimer(IOTimerEventSource * es); + void constructIOPCIEvent(IOPCIDevice *device, bool correctable, IOPCIEvent *newEvent, uint32_t *status, uint32_t *mask, uint32_t *severity); + void enqueueIOPCIEvent(IOPCIDevice *device, uint32_t status, uint32_t severity, bool correctable, IOPCIEvent *newEvent, bool synchronous); public: void handleAEREvent(bool synchronous); + +private: + IOReturn setPowerStateGated(unsigned long *_powerState, + IOService *whatDevice); + void detectLinkPartner(void); }; __exported_pop diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIDevice.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIDevice.h index 3b3668d0..a7bd827f 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIDevice.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIDevice.h @@ -400,6 +400,7 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService virtual void free( void ) APPLE_KEXT_OVERRIDE; virtual bool attach( IOService * provider ) APPLE_KEXT_OVERRIDE; virtual void detach( IOService * provider ) APPLE_KEXT_OVERRIDE; + virtual void detachFromChild(IORegistryEntry *child, const IORegistryPlane *plane) APPLE_KEXT_OVERRIDE; virtual void detachAbove(const IORegistryPlane *) APPLE_KEXT_OVERRIDE; virtual IOReturn newUserClient( task_t owningTask, void * securityID, @@ -450,7 +451,8 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService void updateWakeReason(uint16_t pmeState); IOReturn enableLTR(IOPCIDevice * device, bool enable); IOReturn enableACS(IOPCIDevice * device, bool enable); - IOReturn clientCrashedThreadCall(thread_call_t threadCall); + IOReturn reprobeThreadCall(thread_call_t threadCall); + void launchReprobeThread(void); public: @@ -726,9 +728,39 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService UInt32 numRequested = 1, IOOptionBits options = 0 ); + OSMetaClassDeclareReservedUsed(IOPCIDevice, 4); + /*! + * @brief Reads a value from the PCI device's aperture at a given memory index. + * @discussion This method reads a memory-space location on the device. + * @param memoryIndex An index into the array of ranges assigned to the device + * @param offset An offset into the device's memory specified by the index. + * @param data An out parameter containing the read data in host byte order. -1 is written to data on error. + * @param size The size of the data to be read. Permitted values are 8, 4, 2, and 1. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + virtual IOReturn deviceMemoryRead(uint8_t memoryIndex, + uint64_t offset, + void* data, + uint8_t size, + IOOptionBits options = 0); + + OSMetaClassDeclareReservedUsed(IOPCIDevice, 5); + /*! + * @brief Writes a value to the PCI device's aperture at a given memory index. + * @discussion This method writes a memory-space location on the device. + * @param size The size of the data to be written. Permitted values are 8, 4, 2, and 1. + * @param memoryIndex An index into the array of ranges assigned to the device + * @param offset An offset into the device's memory specified by the index. + * @param data A value of 'size' bytes to be written in host byte order. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + virtual IOReturn deviceMemoryWrite(uint8_t memoryIndex, + uint64_t offset, + uint64_t data, + uint8_t size, + IOOptionBits options = 0); + // Unused Padding - OSMetaClassDeclareReservedUnused(IOPCIDevice, 4); - OSMetaClassDeclareReservedUnused(IOPCIDevice, 5); OSMetaClassDeclareReservedUnused(IOPCIDevice, 6); OSMetaClassDeclareReservedUnused(IOPCIDevice, 7); OSMetaClassDeclareReservedUnused(IOPCIDevice, 8); @@ -824,7 +856,7 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService /*! * @brief Reads a 64-bit value from the PCI device's aperture at a given memory index. - * @discussion This method reads a 64-bit register on the device and returns its value. + * @discussion This method reads a 64-bit register on the device and returns its value. * @param memoryIndex An index into the array of ranges assigned to the device. * @param offset An offset into the device's memory specified by the index. * @param readData An out parameter containing the 64-bit value in host byte order. -1 is written to readData on error. @@ -833,6 +865,19 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService uint64_t offset, uint64_t* readData); + /*! + * @brief Reads a 64-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads a 64-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 64-bit value in host byte order. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + IOReturn deviceMemoryRead64(uint8_t memoryIndex, + uint64_t offset, + uint64_t* readData, + IOOptionBits options); + /*! * @brief Reads a 32-bit value from the PCI device's aperture at a given memory index. * @discussion This method reads a 32-bit register on the device and returns its value. @@ -844,6 +889,19 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService uint64_t offset, uint32_t* readData); + /*! + * @brief Reads a 32-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads a 32-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 32-bit value in host byte order. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + IOReturn deviceMemoryRead32(uint8_t memoryIndex, + uint64_t offset, + uint32_t* readData, + IOOptionBits options); + /*! * @brief Reads a 16-bit value from the PCI device's aperture at a given memory index. * @discussion This method reads a 16-bit register on the device and returns its value. @@ -855,6 +913,19 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService uint64_t offset, uint16_t* readData); + /*! + * @brief Reads a 16-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads a 16-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 16-bit value in host byte order. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + IOReturn deviceMemoryRead16(uint8_t memoryIndex, + uint64_t offset, + uint16_t* readData, + IOOptionBits options); + /*! * @brief Reads an 8-bit value from the PCI device's aperture at a given memory index. * @discussion This method reads an 8-bit register on the device and returns its value. @@ -866,6 +937,19 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService uint64_t offset, uint8_t* readData); + /*! + * @brief Reads an 8-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads an 8-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 8-bit. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + IOReturn deviceMemoryRead8(uint8_t memoryIndex, + uint64_t offset, + uint8_t* readData, + IOOptionBits options); + /*! * @brief Writes a 64-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes a 64-bit register on the device and returns its value. @@ -877,6 +961,19 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService uint64_t offset, uint64_t data); + /*! + * @brief Writes a 64-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes a 64-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device + * @param offset An offset into the device's memory specified by the index. + * @param data A 64-bit value to be written in host byte order. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + IOReturn deviceMemoryWrite64(uint8_t memoryIndex, + uint64_t offset, + uint64_t data, + IOOptionBits options); + /*! * @brief Writes a 32-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes a 32-bit register on the device and returns its value. @@ -888,6 +985,19 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService uint64_t offset, uint32_t data); + /*! + * @brief Writes a 32-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes a 32-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param data A 32-bit value to be written in host byte order. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + IOReturn deviceMemoryWrite32(uint8_t memoryIndex, + uint64_t offset, + uint32_t data, + IOOptionBits options); + /*! * @brief Writes a 16-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes a 16-bit register on the device and returns its value. @@ -899,6 +1009,19 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService uint64_t offset, uint16_t data); + /*! + * @brief Writes a 16-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes a 16-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param data A 16-bit value to be written in host byte order. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + IOReturn deviceMemoryWrite16(uint8_t memoryIndex, + uint64_t offset, + uint16_t data, + IOOptionBits options); + /*! * @brief Writes an 8-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes an 8-bit register on the device and returns its value. @@ -910,6 +1033,19 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService uint64_t offset, uint8_t data); + /*! + * @brief Writes an 8-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes an 8-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device + * @param offset An offset into the device's memory specified by the index. + * @param data An 8-bit value. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + IOReturn deviceMemoryWrite8(uint8_t memoryIndex, + uint64_t offset, + uint8_t data, + IOOptionBits options); + /*! * @brief Register a dext crash notification handler for this PCI device. * @discussion The handler is invoked prior to disabling and terminating the crashed device, @@ -944,7 +1080,7 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService */ IOReturn getLinkSpeed(tIOPCILinkSpeed *linkSpeed); -private: +protected: static uint16_t getCloseCommandMask(uint32_t vendorDevice); public: @@ -969,12 +1105,6 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService IOReturn reset(tIOPCIDeviceResetTypes type, tIOPCIDeviceResetOptions options = kIOPCIDeviceResetOptionNone); -private: - void releasePowerAssertion(void); - void powerAssertionTimeout(IOTimerEventSource* timer); - bool childPublished(void* refcon __unused, IOService* newService, IONotifier* notifier __unused); - bool childMatched(void* refcon __unused, IOService* newService, IONotifier* notifier __unused); - public: virtual bool setProperty(const OSSymbol * aKey, OSObject * anObject); virtual bool setProperty(const OSString * aKey, OSObject * anObject); @@ -988,6 +1118,26 @@ class __kpi_deprecated("Use PCIDriverKit") IOPCIDevice : public IOService uint32_t configWrite32Filter(IOByteCount offset, uint32_t data); uint16_t configWrite16Filter(IOByteCount offset, uint16_t data); uint8_t configWrite8Filter(IOByteCount offset, uint8_t data); + + virtual IOReturn powerStateWillChangeToGated(IOPMPowerFlags *capabilities, + unsigned long *stateNumber, + IOService *whatDevice); + IOReturn setPowerStateGated(unsigned long *_newState, + IOService *whatDevice); +protected: + bool supportsFLR(void); + void prepareFLR(void); + void flr(void); + void completeFLR(void); + +private: + IOReturn resetFunction(tIOPCIDeviceResetOptions options); + void resetNubState(void); + +protected: + bool isDownstreamFacing(void); + bool shouldSkipReset(void); + static bool hasL1Errata(IOPCIDevice *nub); }; __exported_pop diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIFamilyDefinitions.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIFamilyDefinitions.h index 2b52f1ad..581aefaa 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIFamilyDefinitions.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pci/IOPCIFamilyDefinitions.h @@ -94,6 +94,11 @@ #define kIOPCIEndpointPrsnt "IOPCIEndpointPrsnt" // property to change the wait time for link up from spec default #define kIOPCIWaitForLinkUpKey "wait-for-link-up" +// property to override the dext crash reset type +#define kIOPCIDeviceCrashResetType "IOPCIDeviceCrashResetType" + +// property to route driverkit memory accesses through the kernel +#define kIOPCIKernelMemoryAccess "IOPCIKernelMemoryAccess" /* bits getInterruptType result */ enum @@ -162,6 +167,7 @@ enum kIOPCIExpressCapabilityIDDeviceSerialNumber = -0x03U, kIOPCIExpressCapabilityIDPowerBudget = -0x04U, kIOPCIExpressCapabilityIDAccessControlServices = -0x0DU, + kIOPCIExpressCapabilityIDAlternativeRoutingID = -0x0EU, kIOPCIExpressCapabilityIDLatencyTolerenceReporting = -0x18U, kIOPCIExpressCapabilityIDL1PMSubstates = -0x1EU, kIOPCIExpressCapabilityIDPrecisionTimeManagement = -0x1FU, @@ -171,6 +177,7 @@ enum kIOPCIExpressCapabilityIDDeviceSerialNumber = -0x03UL, kIOPCIExpressCapabilityIDPowerBudget = -0x04UL, kIOPCIExpressCapabilityIDAccessControlServices = -0x0DUL, + kIOPCIExpressCapabilityIDAlternativeRoutingID = -0x0EUL, kIOPCIExpressCapabilityIDLatencyTolerenceReporting = -0x18UL, kIOPCIExpressCapabilityIDL1PMSubstates = -0x1EUL, kIOPCIExpressCapabilityIDPrecisionTimeManagement = -0x1FUL, @@ -274,7 +281,42 @@ enum kIOPCISlotCapabilitiesBitNoCommandCompletedSupport = (1 << 18) }; +enum +{ + kIOPCISlotStatusAttentionButtonPressed = (1 << 0), + kIOPCISlotStatusPowerFaultDetected = (1 << 1), + kIOPCISlotStatusMRLSensorChanged = (1 << 2), + kIOPCISlotStatusPresenceDetectChanged = (1 << 3), + kIOPCISlotStatusCommandCompleted = (1 << 4), + kIOPCISlotStatusMRLSensorState = (1 << 5), + kIOPCISlotStatusPresenceDetectState = (1 << 6), + kIOPCISlotStatusElectromechanicalInterlockState = (1 << 7), + kIOPCISlotStatusDataLinkLayerStateChanged = (1 << 8), +}; + // PCIe error bits +enum +{ + kIOPCIAERCapCapHeaderOffset = 0x0, + kIOPCIAERCapUncErrStatusOffset = 0x4, + kIOPCIAERCapUncErrMaskOffset = 0x8, + kIOPCIAERCapUncErrSeverityOffset = 0xC, + kIOPCIAERCapCorErrStatusOffset = 0x10, + kIOPCIAERCapCorErrMaskOffset = 0x14, + kIOPCIAERCapCapControlOffset = 0x18, + kIOPCIAERCapHdrLogDW0Offset = 0x1C, + kIOPCIAERCapHdrLogDW1Offset = 0x20, + kIOPCIAERCapHdrLogDW2Offset = 0x24, + kIOPCIAERCapHdrLogDW3Offset = 0x28, + kIOPCIAERCapRootErrCmdOffset = 0x2C, + kIOPCIAERCapRootErrStatusOffset = 0x30, + kIOPCIAERCapErrSourceIDOffset = 0x34, + kIOPCIAERCapTLPPrefixLogDW0Offset = 0x38, + kIOPCIAERCapTLPPrefixLogDW1Offset = 0x3C, + kIOPCIAERCapTLPPrefixLogDW2Offset = 0x40, + kIOPCIAERCapTLPPrefixLogDW3Offset = 0x44, +}; + enum { kIOPCIUncorrectableErrorBitDataLinkProtocol = 4, @@ -331,6 +373,7 @@ typedef enum tIOPCILinkSpeed * and re-applying it before using kIOPCIDeviceResetTypeWarmResetEnable. * @constant kIOPCIDeviceResetTypeWarmResetEnable Completes the warm reset operation initiated with type kIOPCIDeviceResetTypeWarmResetDisable * (e.g. deassert PERST#). See kIOPCIDeviceResetTypeWarmResetDisable for more details. + * @constant kIOPCIDeviceResetTypeFunctionReset Issues a function-level reset, if supported. */ typedef enum tIOPCIDeviceResetTypes { @@ -338,6 +381,7 @@ typedef enum tIOPCIDeviceResetTypes kIOPCIDeviceResetTypeWarmReset = 0x00000002, kIOPCIDeviceResetTypeWarmResetDisable = 0x00000004, kIOPCIDeviceResetTypeWarmResetEnable = 0x00000008, + kIOPCIDeviceResetTypeFunctionReset = 0x00000010, } tIOPCIDeviceResetTypes; /*! @enum tIOPCIDeviceResetOptions @@ -361,4 +405,15 @@ enum tIOPCILinkControlASPMBits kIOPCILinkControlASPMBitsL0sL1 = kIOPCILinkControlASPMBitsL0s | kIOPCILinkControlASPMBitsL1 }; +/*! @enum tIOPCIAccessOptions + * @brief Options passed to memory space accessor functions + * @constant kIOPCIAccessLatencyTolerantHint Hint to host software that this PCIe access is not in a performance critical section, + * and host software is permitted to offload the access to a DMA engine in order to free the CPU for other work to + * optimize overall system performance. Use of this hint may increase the latency of the memory space accessor function. + */ +typedef enum tIOPCIAccessOptions +{ + kIOPCIAccessLatencyTolerantHint = (1 << 0), +} tIOPCIAccessOptions; + #endif /* IOPCIDefinitions_h */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/IOPM.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/IOPM.h index 4a93c338..9494d6ad 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/IOPM.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/IOPM.h @@ -670,6 +670,7 @@ enum { kIOPSFamilyCodeExternal6 = iokit_family_err(sub_iokit_pmu, 6), kIOPSFamilyCodeExternal7 = iokit_family_err(sub_iokit_pmu, 7), kIOPSFamilyCodeExternal8 = iokit_family_err(sub_iokit_pmu, 8), + kIOPSFamilyCodeUnsupportedRegion = iokit_family_err(sub_iokit_pmu, 9), }; // values for kIOPMPSAdapterDetailsErrorFlagsKey diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/IOPMLibDefs.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/IOPMLibDefs.h index f0c92aaf..814d9982 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/IOPMLibDefs.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/IOPMLibDefs.h @@ -44,5 +44,6 @@ #define kPMSleepWakeDebugTrig 14 #define kPMSetDisplayPowerOn 15 #define kPMSetDisplayState 16 +#define kPMRequestIdleSleepRevert 17 -#define kNumPMMethods 17 +#define kNumPMMethods 18 diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/RootDomain.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/RootDomain.h index c93b447c..4bed5097 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/RootDomain.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/RootDomain.h @@ -328,6 +328,8 @@ class IOPMrootDomain : public IOService IOReturn setWakeTime(uint64_t wakeContinuousTime); + void copyWakeReasonString( char * outBuf, size_t bufSize ); + private: unsigned long getRUN_STATE(void); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/sbp2/IOFireWireSBP2Login.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/sbp2/IOFireWireSBP2Login.h index 48d3d918..4090774f 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/sbp2/IOFireWireSBP2Login.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/sbp2/IOFireWireSBP2Login.h @@ -397,42 +397,50 @@ class __exported IOFireWireSBP2Login : public OSObject // resources - FWSBP2LoginORB fLoginORB; + FWSBP2LoginORB * fLoginORB; + uint8_t fLoginORBPadding[sizeof(FWSBP2LoginORB) - sizeof(FWSBP2LoginORB *)]; IOFWAddressSpace * fLoginORBAddressSpace; - FWAddress fLoginORBAddress; + + // Note: This was changed from FWAddress to FWAddress * (ie is now a pointer) + // FWAddress is 64 bits so this should not change the size of this vtable and + // should be binary compatible + FWAddress * fLoginORBAddress; - FWSBP2LoginResponse fLoginResponse; + FWSBP2LoginResponse * fLoginResponse; + uint8_t fLoginResponsePadding[sizeof(FWSBP2LoginResponse) - sizeof(FWSBP2LoginResponse *)]; IOFWAddressSpace * fLoginResponseAddressSpace; FWAddress fLoginResponseAddress; - FWSBP2ReconnectORB fReconnectORB; + FWSBP2ReconnectORB * fReconnectORB; + uint8_t fReconnectORBPadding[sizeof(FWSBP2ReconnectORB) - sizeof(FWSBP2ReconnectORB *)]; IOFWAddressSpace * fReconnectORBAddressSpace; - FWAddress fReconnectORBAddress; + FWAddress * fReconnectORBAddress; FWSBP2StatusBlock fStatusBlock; IOFWAddressSpace * fStatusBlockAddressSpace; - FWAddress fStatusBlockAddress; + FWAddress * fStatusBlockAddress; FWSBP2StatusBlock fReconnectStatusBlock; IOFWAddressSpace * fReconnectStatusBlockAddressSpace; - FWAddress fReconnectStatusBlockAddress; + FWAddress * fReconnectStatusBlockAddress; - FWSBP2LogoutORB fLogoutORB; + FWSBP2LogoutORB * fLogoutORB; + uint8_t fLogoutORBPadding[sizeof(FWSBP2LogoutORB) - sizeof(FWSBP2LogoutORB *)]; IOFWAddressSpace * fLogoutORBAddressSpace; - FWAddress fLogoutORBAddress; + FWAddress * fLogoutORBAddress; bool fLogoutPending; IOFWWriteCommand * fLoginWriteCommand; - IOMemoryDescriptor * fLoginWriteCommandMemory; + IOBufferMemoryDescriptor * fLoginWriteCommandMemory; bool fLoginWriteInProgress; IOFWWriteCommand * fReconnectWriteCommand; - IOMemoryDescriptor * fReconnectWriteCommandMemory; + IOBufferMemoryDescriptor * fReconnectWriteCommandMemory; bool fReconnectWriteInProgress; bool fReconnectWriteInterrupted; IOFWWriteCommand * fLogoutWriteCommand; - IOMemoryDescriptor * fLogoutWriteCommandMemory; + IOBufferMemoryDescriptor * fLogoutWriteCommandMemory; bool fLogoutWriteInProgress; IOFWCommand * fLoginTimeoutCommand; @@ -445,8 +453,8 @@ class __exported IOFireWireSBP2Login : public OSObject bool fLogoutTimeoutTimerSet; FWAddress fFetchAgentAddress; - IOMemoryDescriptor * fFetchAgentWriteCommandMemory; - FWAddress fLastORBAddress; + IOBufferMemoryDescriptor * fFetchAgentWriteCommandMemory; + FWAddress * fLastORBAddress; IOFireWireSBP2ORB * fLastORB; IOFWWriteCommand * fFetchAgentWriteCommand; bool fFetchAgentWriteCommandInUse; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/IOBlockStorageServices.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/IOBlockStorageServices.h index 7b4e4400..1abf751c 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/IOBlockStorageServices.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/IOBlockStorageServices.h @@ -64,6 +64,7 @@ class __exported IOBlockStorageServices : public IOBlockStorageDevice virtual bool attach ( IOService * provider ) APPLE_KEXT_OVERRIDE; virtual void detach ( IOService * provider ) APPLE_KEXT_OVERRIDE; + virtual bool terminate ( IOOptionBits options = 0 ) APPLE_KEXT_OVERRIDE; virtual void free ( void ) APPLE_KEXT_OVERRIDE; virtual IOReturn newUserClient ( task_t owningTask, diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/IOSCSIPeripheralDeviceNub.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/IOSCSIPeripheralDeviceNub.h index 36f36e65..b959a979 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/IOSCSIPeripheralDeviceNub.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/IOSCSIPeripheralDeviceNub.h @@ -118,7 +118,9 @@ class __exported IOSCSIPeripheralDeviceNub : public IOSCSIProtocolServices virtual void free ( void ) APPLE_KEXT_OVERRIDE; virtual IOReturn message ( UInt32 type, IOService * nub, void * arg ) APPLE_KEXT_OVERRIDE; - + + virtual IOReturn setProperties ( OSObject * properties ) APPLE_KEXT_OVERRIDE; + virtual bool matchPropertyTable ( OSDictionary * table, SInt32 * score ) APPLE_KEXT_OVERRIDE; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_INQUIRY_Definitions.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_INQUIRY_Definitions.h index 0f80d275..8214e726 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_INQUIRY_Definitions.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_INQUIRY_Definitions.h @@ -30,6 +30,7 @@ //----------------------------------------------------------------------------- #include +#include #if TARGET_OS_DRIVERKIT typedef uint8_t UInt8; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_READ_CAPACITY_Definitions.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_READ_CAPACITY_Definitions.h index f856f876..9a11a077 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_READ_CAPACITY_Definitions.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_READ_CAPACITY_Definitions.h @@ -26,6 +26,7 @@ #include +#include #if TARGET_OS_DRIVERKIT typedef uint8_t UInt8; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_REQUEST_SENSE_Defs.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_REQUEST_SENSE_Defs.h index 09e909a4..364dda60 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_REQUEST_SENSE_Defs.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSICmds_REQUEST_SENSE_Defs.h @@ -25,6 +25,7 @@ #define _IOKIT_SCSI_CMDS_REQUEST_SENSE_H_ #include +#include #if TARGET_OS_DRIVERKIT typedef uint8_t UInt8; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSITask.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSITask.h index c45eee1c..e6900ba7 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSITask.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/scsi/SCSITask.h @@ -26,6 +26,7 @@ #define _IOKIT_SCSI_TASK_H_ #include +#include #if TARGET_OS_DRIVERKIT typedef uint8_t UInt8; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/storage/IOStorageCardCharacteristics.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/storage/IOStorageCardCharacteristics.h index 143b5847..075265e0 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/storage/IOStorageCardCharacteristics.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/storage/IOStorageCardCharacteristics.h @@ -487,4 +487,30 @@ Requirement: Optional. #define kIOPropertyCardTypeSDXCKey "SDXC" +/*! +@defined kIOPropertyCardTypeSDUCKey + @discussion This key is used to indicate the card type is SDUC. + +Requirement: Optional. + +Example: +

+@textblock
+
+	Card Characteristics
+	
+		Product Name
+		SD128G
+		Product Revision Level
+		1.0
+		Card Type
+		SDUC
+	
+
+@/textblock
+
+*/ +#define kIOPropertyCardTypeSDUCKey "SDUC" + + #endif /* _IOKIT_IO_STORAGE_CARD_CHARACTERISTICS_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostControllerInterfaceDefinitions.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostControllerInterfaceDefinitions.h index a4c445c6..c44f88bc 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostControllerInterfaceDefinitions.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostControllerInterfaceDefinitions.h @@ -558,7 +558,10 @@ enum IOUSBHostCIDeviceCreateCommandData0RootPort = IOUSBBitRange(0, 3), IOUSBHostCIDeviceCreateCommandData0RootPortPhase = IOUSBBitRangePhase(0, 3), IOUSBHostCIDeviceCreateCommandData0Route = IOUSBBitRange(4, 23), - IOUSBHostCIDeviceCreateCommandData0RoutePhase = IOUSBBitRangePhase(4, 23), + IOUSBHostCIDeviceCreateCommandData0RoutePhase = IOUSBBitRangePhase(4, 23) +}; +enum +{ IOUSBHostCIDeviceCreateCommandData1DeviceAddress = IOUSBBitRange64(0, 7), IOUSBHostCIDeviceCreateCommandData1DeviceAddressPhase = IOUSBBitRangePhase(0, 7) }; @@ -614,7 +617,7 @@ enum */ enum { - IOUSBHostCIDeviceUpdateCommandData1DescriptorAddress = IOUSBBitRange(0, 63), + IOUSBHostCIDeviceUpdateCommandData1DescriptorAddress = IOUSBBitRange64(0, 63), IOUSBHostCIDeviceUpdateCommandData1DescriptorAddressPhase = IOUSBBitRangePhase(0, 63) }; @@ -793,8 +796,11 @@ enum enum { IOUSBHostCINormalTransferData0Length = IOUSBBitRange(0, 27), - IOUSBHostCINormalTransferData0LengthPhase = IOUSBBitRangePhase(0, 27), - IOUSBHostCINormalTransferData1Buffer = IOUSBBitRange(0, 63), + IOUSBHostCINormalTransferData0LengthPhase = IOUSBBitRangePhase(0, 27) +}; +enum +{ + IOUSBHostCINormalTransferData1Buffer = IOUSBBitRange64(0, 63), IOUSBHostCINormalTransferData1BufferPhase = IOUSBBitRangePhase(0, 63) }; @@ -810,9 +816,15 @@ enum { IOUSBHostCIIsochronousTransferControlFrameNumber = IOUSBBitRange(16, 23), IOUSBHostCIIsochronousTransferControlFrameNumberPhase = IOUSBBitRangePhase(16, 23), - IOUSBHostCIIsochronousTransferControlASAP = IOUSBBit(24), + IOUSBHostCIIsochronousTransferControlASAP = IOUSBBit(24) +}; +enum +{ IOUSBHostCIIsochronousTransferData0Length = IOUSBHostCINormalTransferData0Length, - IOUSBHostCIIsochronousTransferData0LengthPhase = IOUSBHostCINormalTransferData0LengthPhase, + IOUSBHostCIIsochronousTransferData0LengthPhase = IOUSBHostCINormalTransferData0LengthPhase +}; +enum +{ IOUSBHostCIIsochronousTransferData1Buffer = IOUSBHostCINormalTransferData1Buffer, IOUSBHostCIIsochronousTransferData1BufferPhase = IOUSBHostCINormalTransferData1BufferPhase }; @@ -824,7 +836,7 @@ enum */ enum { - IOUSBHostCILinkData1TransferStructureAddress = IOUSBBitRange(0, 63), + IOUSBHostCILinkData1TransferStructureAddress = IOUSBBitRange64(0, 63), IOUSBHostCILinkData1TransferStructureAddressPhase = IOUSBBitRangePhase(0, 63) }; @@ -844,11 +856,15 @@ enum IOUSBHostCITransferCompletionMessageControlDeviceAddress = IOUSBBitRange(16, 23), IOUSBHostCITransferCompletionMessageControlDeviceAddressPhase = IOUSBBitRangePhase(16, 23), IOUSBHostCITransferCompletionMessageControlEndpointAddress = IOUSBBitRange(24, 31), - IOUSBHostCITransferCompletionMessageControlEndpointAddressPhase = IOUSBBitRangePhase(24, 31), - + IOUSBHostCITransferCompletionMessageControlEndpointAddressPhase = IOUSBBitRangePhase(24, 31) +}; +enum +{ IOUSBHostCITransferCompletionMessageData0TransferLength = IOUSBBitRange(0, 27), - IOUSBHostCITransferCompletionMessageData0TransferLengthPhase = IOUSBBitRangePhase(0, 27), - + IOUSBHostCITransferCompletionMessageData0TransferLengthPhase = IOUSBBitRangePhase(0, 27) +}; +enum +{ IOUSBHostCITransferCompletionMessageData1TransferStructure = IOUSBBitRange64(0, 63), IOUSBHostCITransferCompletionMessageData1TransferStructurePhase = IOUSBBitRangePhase(0, 63) }; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostDevice.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostDevice.h index 9618eb42..0a39ab88 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostDevice.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostDevice.h @@ -859,6 +859,8 @@ class __IOUSBHOSTFAMILY_DEPRECATED IOUSBHostDevice : public IOService tUSBDeviceLPMStatus _lpmL1Status; OSDictionary* _dkInterfaceIteratorDict; uintptr_t _dkInterfaceInteratorRefID; + IOService* _owner; + bool _beingSeized; }; tExpansionData* _expansionData; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostFamilyDefinitions.h b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostFamilyDefinitions.h index c1f1998b..dce2c3c2 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostFamilyDefinitions.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/usb/IOUSBHostFamilyDefinitions.h @@ -65,9 +65,11 @@ #define kUSBHostMessageConfigurationSet iokit_usbhost_msg(0x00) // 0xe0005000 IOUSBHostDevice -> clients upon a setConfiguration call. #define kUSBHostMessageRenegotiateCurrent iokit_usbhost_msg(0x01) // 0xe0005001 Request clients to renegotiate bus current allocations #define kUSBHostMessageControllerException iokit_usbhost_msg(0x02) // 0xe0005002 A fatal problem has occurred with an AppleUSBUserHCI controller +#define kUSBHostMessageDeviceIsRequestingClose iokit_usbhost_msg(0x03) // 0xe0005003 A new client is attempting to seize ownership of the IOUSBHostDevice service. To honor this request, close the IOUSBHostDevice service. #define kUSBHostReturnPipeStalled iokit_usbhost_err(0x0) // 0xe0005000 Pipe has issued a STALL handshake. Use clearStall to clear this condition. #define kUSBHostReturnNoPower iokit_usbhost_err(0x1) // 0xe0005001 A setConfiguration call was not able to succeed because all configurations require more power than is available. +#define kUSBHostReturnRedundant iokit_usbhost_err(0x2) // 0xe0005002 A redundant setting was attempted. /*! * @enum tIOUSBHostConnectionSpeed @@ -163,6 +165,7 @@ enum tIOUSBHostPortStatus #define kIOUSBHostControllerInterfaceEntitlement "com.apple.developer.usb.host-controller-interface" #define kIOUSBBillboardEntitlement "com.apple.developer.usb.billboard" + #pragma mark Registry property names #define kUSBHostMatchingPropertySpeed "USBSpeed" @@ -203,6 +206,8 @@ enum tIOUSBHostPortStatus #define kUSBHostUserClientPropertyEntitlementExceptionAllowUnlocked "UsbUserClientEntitlementExceptionAllowUnlocked" // OSBoolean, true or false to allow access if the system is unlocked. Part of the OSDictionary. #define kUSBHostUserClientPropertyEnableReset "UsbUserClientEnableReset" #define kUSBHostUserClientPropertyEnableDataToggleReset "UsbUserClientEnableDataToggleReset" +#define kUSBHostUserClientPropertyBufferStatistics "UsbUserClientBufferStatistics" +#define kUSBHostUserClientPropertyBufferAllocations "UsbUserClientBufferAllocations" #define kUSBHostDevicePropertyVendorString "kUSBVendorString" #define kUSBHostDevicePropertySerialNumberString "kUSBSerialNumberString" @@ -230,6 +235,7 @@ enum tIOUSBHostPortStatus #define kUSBHostDevicePropertyEnumerationState "UsbEnumerationState" // OSNumber with IOUSBHostDevice::tEnumerationState. NULL if the device has been registered for matching. #define kUSBHostDevicePropertySignature "UsbDeviceSignature" // OSData containing identifying information available at enumeration time #define kUSBHostDevicePropertyTunnel "UsbTunnel" // Default kOSBooleanFalse. kOSBooleanTrue if the device is connected via a USB4 tunnel +#define kUSBHostDevicePropertyPowerSinkCapability "UsbPowerSinkCapability" // OSNumber maximum mA of current the device can sink from Vbus (5V), as directed by the Apple USB Power Capability Vendor Request #define kUSBHostBillboardDevicePropertyNumberOfAlternateModes "bNumberOfAlternateModes" #define kUSBHostBillboardDevicePropertyPreferredAlternateMode "bPreferredAlternateMode" @@ -288,10 +294,10 @@ enum tIOUSBHostPortStatus #define kUSBHostControllerPropertySuperSpeedCompanion "kUSBSuperSpeedCompanion" // OSBoolean false to disable superspeed companion controller #define kUSBHostControllerPropertyRevision "Revision" // OSData Major/minor revision number of controller #define kUSBHostControllerPropertyCompanionControllerName "UsbCompanionControllerName" // OSString key to set/get the name of the service, i.e. companion controller dictionary. -#define kUSBHostControllerPropertyDisableWakeSources "UsbHostControllerDisableWakeSources" // OSBoolean true to disable connect/disconnect/overcurrent wake sources #define kUSBHostControllerPropertyPersistFullSpeedIsochronous "UsbHostControllerPersistFullSpeedIsochronous" // OSBoolean true to reduce commands related to full-speed isochronous endpoints #define kUSBHostControllerPropertyDeferRegisterService "UsbHostControllerDeferRegisterService" // OSBoolean true to defer registerService call by base class during start #define kUSBHostControllerPropertyControlRequestPolicy "UsbHostControllerControlRequestPolicy" // OSNumber containing tUSBControlRequestPolicy +#define kUSBHostControllerPropertyPortWakeSourcesPolicy "UsbHostControllerPortWakeSourcesPolicy" // OSNumber containing tUSBPortWakeSourcesPolicy #define kUSBHostControllerPropertySoftRetryPolicy "UsbHostControllerSoftRetryPolicy" // OSNumber containing tUSBSoftRetryPolicy #define kUSBHostControllerPropertyStreamPolicy "UsbHostControllerStreamPolicy" // OSNumber containing tUSBStreamPolicy #define kUSBHostControllerPropertyUSB2LPMPolicy "UsbHostControllerUSB2LPMPolicy" // OSNumber containing tUSBLPMPolicy diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIDevice.h b/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIDevice.h index 4b182c12..f0d89227 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIDevice.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIDevice.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOPCIDevice.iig */ +/* iig(DriverKit-427.100.5) generated from IOPCIDevice.iig */ /* IOPCIDevice.iig:1-83 */ /* @@ -84,7 +84,7 @@ enum IOPCILinkSpeed kPCILinkSpeed_32_GTs, // Gen 5 }; -/* source class IOPCIDevice IOPCIDevice.iig:84-452 */ +/* source class IOPCIDevice IOPCIDevice.iig:84-564 */ #if __DOCUMENTATION__ #define KERNEL IIG_KERNEL @@ -130,7 +130,7 @@ class KERNEL IOPCIDevice : public IOService */ kern_return_t Open(IOService* forClient, - IOOptionBits options) LOCALONLY; + IOOptionBits options = 0) LOCALONLY; /*! @@ -143,7 +143,7 @@ class KERNEL IOPCIDevice : public IOService */ void Close(IOService* forClient, - IOOptionBits options) LOCALONLY; + IOOptionBits options = 0) LOCALONLY; #pragma mark Memory Accessors /*! @@ -215,6 +215,20 @@ class KERNEL IOPCIDevice : public IOService uint64_t offset, uint64_t* readData) LOCALONLY; + /*! + * @brief Reads a 64-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads a 64-bit register on the device and returns its value. This is a blocking call. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 64-bit value in host byte order. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryRead64(uint8_t memoryIndex, + uint64_t offset, + uint64_t* readData, + IOOptionBits options) LOCALONLY; + /*! * @brief Reads a 32-bit value from the PCI device's aperture at a given memory index. * @discussion This method reads a 32-bit register on the device and returns its value. This is a blocking call. @@ -227,6 +241,20 @@ class KERNEL IOPCIDevice : public IOService uint64_t offset, uint32_t* readData) LOCALONLY; + /*! + * @brief Reads a 32-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads a 32-bit register on the device and returns its value. This is a blocking call. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 32-bit value in host byte order. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryRead32(uint8_t memoryIndex, + uint64_t offset, + uint32_t* readData, + IOOptionBits options) LOCALONLY; + /*! * @brief Reads a 16-bit value from the PCI device's aperture at a given memory index. * @discussion This method reads a 16-bit register on the device and returns its value. This is a blocking call. @@ -239,6 +267,20 @@ class KERNEL IOPCIDevice : public IOService uint64_t offset, uint16_t* readData) LOCALONLY; + /*! + * @brief Reads a 16-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads a 16-bit register on the device and returns its value. This is a blocking call. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 16-bit value in host byte order. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryRead16(uint8_t memoryIndex, + uint64_t offset, + uint16_t* readData, + IOOptionBits options) LOCALONLY; + /*! * @brief Reads an 8-bit value from the PCI device's aperture at a given memory index. * @discussion This method reads an 8-bit register on the device and returns its value. This is a blocking call. @@ -251,6 +293,20 @@ class KERNEL IOPCIDevice : public IOService uint64_t offset, uint8_t* readData) LOCALONLY; + /*! + * @brief Reads an 8-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads an 8-bit register on the device and returns its value. This is a blocking call. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 8-bit. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryRead8(uint8_t memoryIndex, + uint64_t offset, + uint8_t* readData, + IOOptionBits options) LOCALONLY; + /*! * @brief Writes a 64-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes a 64-bit register on the device and returns its value. @@ -263,6 +319,20 @@ class KERNEL IOPCIDevice : public IOService uint64_t offset, uint64_t data) LOCALONLY; + /*! + * @brief Writes a 64-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes a 64-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device + * @param offset An offset into the device's memory specified by the index. + * @param data A 64-bit value to be written in host byte order. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryWrite64(uint8_t memoryIndex, + uint64_t offset, + uint64_t data, + IOOptionBits options) LOCALONLY; + /*! * @brief Writes a 32-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes a 32-bit register on the device and returns its value. @@ -275,6 +345,20 @@ class KERNEL IOPCIDevice : public IOService uint64_t offset, uint32_t data) LOCALONLY; + /*! + * @brief Writes a 32-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes a 32-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param data A 32-bit value to be written in host byte order. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryWrite32(uint8_t memoryIndex, + uint64_t offset, + uint32_t data, + IOOptionBits options) LOCALONLY; + /*! * @brief Writes a 16-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes a 16-bit register on the device and returns its value. @@ -287,6 +371,20 @@ class KERNEL IOPCIDevice : public IOService uint64_t offset, uint16_t data) LOCALONLY; + /*! + * @brief Writes a 16-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes a 16-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param data A 16-bit value to be written in host byte order. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryWrite16(uint8_t memoryIndex, + uint64_t offset, + uint16_t data, + IOOptionBits options) LOCALONLY; + /*! * @brief Writes an 8-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes an 8-bit register on the device and returns its value. @@ -299,6 +397,20 @@ class KERNEL IOPCIDevice : public IOService uint64_t offset, uint8_t data) LOCALONLY; + /*! + * @brief Writes an 8-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes an 8-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device + * @param offset An offset into the device's memory specified by the index. + * @param data An 8-bit value. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryWrite8(uint8_t memoryIndex, + uint64_t offset, + uint8_t data, + IOOptionBits options) LOCALONLY; + #pragma mark Configuration Space helpers /*! @@ -463,7 +575,7 @@ class KERNEL IOPCIDevice : public IOService #undef KERNEL #else /* __DOCUMENTATION__ */ -/* generated class IOPCIDevice IOPCIDevice.iig:84-452 */ +/* generated class IOPCIDevice IOPCIDevice.iig:84-564 */ #define IOPCIDevice__ManageSession_ID 0xd395e45429887c65ULL #define IOPCIDevice__CopyDeviceMemoryWithIndex_ID 0x8fbfd4a80b3ed3f1ULL @@ -591,12 +703,12 @@ public:\ kern_return_t\ Open(\ IOService * forClient,\ - IOOptionBits options);\ + IOOptionBits options = 0);\ \ void\ Close(\ IOService * forClient,\ - IOOptionBits options);\ + IOOptionBits options = 0);\ \ void\ ConfigurationRead32(\ @@ -633,48 +745,104 @@ public:\ uint8_t memoryIndex,\ uint64_t offset,\ uint64_t * readData);\ +\ + void\ + MemoryRead64(\ + uint8_t memoryIndex,\ + uint64_t offset,\ + uint64_t * readData,\ + IOOptionBits options);\ \ void\ MemoryRead32(\ uint8_t memoryIndex,\ uint64_t offset,\ uint32_t * readData);\ +\ + void\ + MemoryRead32(\ + uint8_t memoryIndex,\ + uint64_t offset,\ + uint32_t * readData,\ + IOOptionBits options);\ \ void\ MemoryRead16(\ uint8_t memoryIndex,\ uint64_t offset,\ uint16_t * readData);\ +\ + void\ + MemoryRead16(\ + uint8_t memoryIndex,\ + uint64_t offset,\ + uint16_t * readData,\ + IOOptionBits options);\ \ void\ MemoryRead8(\ uint8_t memoryIndex,\ uint64_t offset,\ uint8_t * readData);\ +\ + void\ + MemoryRead8(\ + uint8_t memoryIndex,\ + uint64_t offset,\ + uint8_t * readData,\ + IOOptionBits options);\ \ void\ MemoryWrite64(\ uint8_t memoryIndex,\ uint64_t offset,\ uint64_t data);\ +\ + void\ + MemoryWrite64(\ + uint8_t memoryIndex,\ + uint64_t offset,\ + uint64_t data,\ + IOOptionBits options);\ \ void\ MemoryWrite32(\ uint8_t memoryIndex,\ uint64_t offset,\ uint32_t data);\ +\ + void\ + MemoryWrite32(\ + uint8_t memoryIndex,\ + uint64_t offset,\ + uint32_t data,\ + IOOptionBits options);\ \ void\ MemoryWrite16(\ uint8_t memoryIndex,\ uint64_t offset,\ uint16_t data);\ +\ + void\ + MemoryWrite16(\ + uint8_t memoryIndex,\ + uint64_t offset,\ + uint16_t data,\ + IOOptionBits options);\ \ void\ MemoryWrite8(\ uint8_t memoryIndex,\ uint64_t offset,\ uint8_t data);\ +\ + void\ + MemoryWrite8(\ + uint8_t memoryIndex,\ + uint64_t offset,\ + uint8_t data,\ + IOOptionBits options);\ \ kern_return_t\ FindPCICapability(\ @@ -983,9 +1151,9 @@ IOPCIDevice_DECLARE_IVARS #endif /* !__DOCUMENTATION__ */ -/* IOPCIDevice.iig:454-455 */ +/* IOPCIDevice.iig:566-567 */ #pragma mark Private Class Extension -/* IOPCIDevice.iig:478- */ +/* IOPCIDevice.iig:590- */ #endif /* ! _IOKIT_UIOPCIDEVICE_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIDevice.iig b/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIDevice.iig index 06b699c3..434faffa 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIDevice.iig +++ b/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIDevice.iig @@ -122,7 +122,7 @@ public: */ kern_return_t Open(IOService* forClient, - IOOptionBits options) LOCALONLY; + IOOptionBits options = 0) LOCALONLY; /*! @@ -135,7 +135,7 @@ public: */ void Close(IOService* forClient, - IOOptionBits options) LOCALONLY; + IOOptionBits options = 0) LOCALONLY; #pragma mark Memory Accessors /*! @@ -207,6 +207,20 @@ public: uint64_t offset, uint64_t* readData) LOCALONLY; + /*! + * @brief Reads a 64-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads a 64-bit register on the device and returns its value. This is a blocking call. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 64-bit value in host byte order. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryRead64(uint8_t memoryIndex, + uint64_t offset, + uint64_t* readData, + IOOptionBits options) LOCALONLY; + /*! * @brief Reads a 32-bit value from the PCI device's aperture at a given memory index. * @discussion This method reads a 32-bit register on the device and returns its value. This is a blocking call. @@ -219,6 +233,20 @@ public: uint64_t offset, uint32_t* readData) LOCALONLY; + /*! + * @brief Reads a 32-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads a 32-bit register on the device and returns its value. This is a blocking call. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 32-bit value in host byte order. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryRead32(uint8_t memoryIndex, + uint64_t offset, + uint32_t* readData, + IOOptionBits options) LOCALONLY; + /*! * @brief Reads a 16-bit value from the PCI device's aperture at a given memory index. * @discussion This method reads a 16-bit register on the device and returns its value. This is a blocking call. @@ -231,6 +259,20 @@ public: uint64_t offset, uint16_t* readData) LOCALONLY; + /*! + * @brief Reads a 16-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads a 16-bit register on the device and returns its value. This is a blocking call. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 16-bit value in host byte order. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryRead16(uint8_t memoryIndex, + uint64_t offset, + uint16_t* readData, + IOOptionBits options) LOCALONLY; + /*! * @brief Reads an 8-bit value from the PCI device's aperture at a given memory index. * @discussion This method reads an 8-bit register on the device and returns its value. This is a blocking call. @@ -243,6 +285,20 @@ public: uint64_t offset, uint8_t* readData) LOCALONLY; + /*! + * @brief Reads an 8-bit value from the PCI device's aperture at a given memory index. + * @discussion This method reads an 8-bit register on the device and returns its value. This is a blocking call. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param readData An out parameter containing the 8-bit. -1 is written to readData on error. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryRead8(uint8_t memoryIndex, + uint64_t offset, + uint8_t* readData, + IOOptionBits options) LOCALONLY; + /*! * @brief Writes a 64-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes a 64-bit register on the device and returns its value. @@ -255,6 +311,20 @@ public: uint64_t offset, uint64_t data) LOCALONLY; + /*! + * @brief Writes a 64-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes a 64-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device + * @param offset An offset into the device's memory specified by the index. + * @param data A 64-bit value to be written in host byte order. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryWrite64(uint8_t memoryIndex, + uint64_t offset, + uint64_t data, + IOOptionBits options) LOCALONLY; + /*! * @brief Writes a 32-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes a 32-bit register on the device and returns its value. @@ -267,6 +337,20 @@ public: uint64_t offset, uint32_t data) LOCALONLY; + /*! + * @brief Writes a 32-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes a 32-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param data A 32-bit value to be written in host byte order. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryWrite32(uint8_t memoryIndex, + uint64_t offset, + uint32_t data, + IOOptionBits options) LOCALONLY; + /*! * @brief Writes a 16-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes a 16-bit register on the device and returns its value. @@ -279,6 +363,20 @@ public: uint64_t offset, uint16_t data) LOCALONLY; + /*! + * @brief Writes a 16-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes a 16-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device. + * @param offset An offset into the device's memory specified by the index. + * @param data A 16-bit value to be written in host byte order. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryWrite16(uint8_t memoryIndex, + uint64_t offset, + uint16_t data, + IOOptionBits options) LOCALONLY; + /*! * @brief Writes an 8-bit value to the PCI device's aperture at a given memory index. * @discussion This method writes an 8-bit register on the device and returns its value. @@ -291,6 +389,20 @@ public: uint64_t offset, uint8_t data) LOCALONLY; + /*! + * @brief Writes an 8-bit value to the PCI device's aperture at a given memory index. + * @discussion This method writes an 8-bit register on the device and returns its value. + * @param memoryIndex An index into the array of ranges assigned to the device + * @param offset An offset into the device's memory specified by the index. + * @param data An 8-bit value. + * @param options Optional access options (see enum tIOPCIAccessOptions). + */ + void + MemoryWrite8(uint8_t memoryIndex, + uint64_t offset, + uint8_t data, + IOOptionBits options) LOCALONLY; + #pragma mark Configuration Space helpers /*! diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIFamilyDefinitions.h b/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIFamilyDefinitions.h index 2b52f1ad..581aefaa 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIFamilyDefinitions.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/PCIDriverKit/IOPCIFamilyDefinitions.h @@ -94,6 +94,11 @@ #define kIOPCIEndpointPrsnt "IOPCIEndpointPrsnt" // property to change the wait time for link up from spec default #define kIOPCIWaitForLinkUpKey "wait-for-link-up" +// property to override the dext crash reset type +#define kIOPCIDeviceCrashResetType "IOPCIDeviceCrashResetType" + +// property to route driverkit memory accesses through the kernel +#define kIOPCIKernelMemoryAccess "IOPCIKernelMemoryAccess" /* bits getInterruptType result */ enum @@ -162,6 +167,7 @@ enum kIOPCIExpressCapabilityIDDeviceSerialNumber = -0x03U, kIOPCIExpressCapabilityIDPowerBudget = -0x04U, kIOPCIExpressCapabilityIDAccessControlServices = -0x0DU, + kIOPCIExpressCapabilityIDAlternativeRoutingID = -0x0EU, kIOPCIExpressCapabilityIDLatencyTolerenceReporting = -0x18U, kIOPCIExpressCapabilityIDL1PMSubstates = -0x1EU, kIOPCIExpressCapabilityIDPrecisionTimeManagement = -0x1FU, @@ -171,6 +177,7 @@ enum kIOPCIExpressCapabilityIDDeviceSerialNumber = -0x03UL, kIOPCIExpressCapabilityIDPowerBudget = -0x04UL, kIOPCIExpressCapabilityIDAccessControlServices = -0x0DUL, + kIOPCIExpressCapabilityIDAlternativeRoutingID = -0x0EUL, kIOPCIExpressCapabilityIDLatencyTolerenceReporting = -0x18UL, kIOPCIExpressCapabilityIDL1PMSubstates = -0x1EUL, kIOPCIExpressCapabilityIDPrecisionTimeManagement = -0x1FUL, @@ -274,7 +281,42 @@ enum kIOPCISlotCapabilitiesBitNoCommandCompletedSupport = (1 << 18) }; +enum +{ + kIOPCISlotStatusAttentionButtonPressed = (1 << 0), + kIOPCISlotStatusPowerFaultDetected = (1 << 1), + kIOPCISlotStatusMRLSensorChanged = (1 << 2), + kIOPCISlotStatusPresenceDetectChanged = (1 << 3), + kIOPCISlotStatusCommandCompleted = (1 << 4), + kIOPCISlotStatusMRLSensorState = (1 << 5), + kIOPCISlotStatusPresenceDetectState = (1 << 6), + kIOPCISlotStatusElectromechanicalInterlockState = (1 << 7), + kIOPCISlotStatusDataLinkLayerStateChanged = (1 << 8), +}; + // PCIe error bits +enum +{ + kIOPCIAERCapCapHeaderOffset = 0x0, + kIOPCIAERCapUncErrStatusOffset = 0x4, + kIOPCIAERCapUncErrMaskOffset = 0x8, + kIOPCIAERCapUncErrSeverityOffset = 0xC, + kIOPCIAERCapCorErrStatusOffset = 0x10, + kIOPCIAERCapCorErrMaskOffset = 0x14, + kIOPCIAERCapCapControlOffset = 0x18, + kIOPCIAERCapHdrLogDW0Offset = 0x1C, + kIOPCIAERCapHdrLogDW1Offset = 0x20, + kIOPCIAERCapHdrLogDW2Offset = 0x24, + kIOPCIAERCapHdrLogDW3Offset = 0x28, + kIOPCIAERCapRootErrCmdOffset = 0x2C, + kIOPCIAERCapRootErrStatusOffset = 0x30, + kIOPCIAERCapErrSourceIDOffset = 0x34, + kIOPCIAERCapTLPPrefixLogDW0Offset = 0x38, + kIOPCIAERCapTLPPrefixLogDW1Offset = 0x3C, + kIOPCIAERCapTLPPrefixLogDW2Offset = 0x40, + kIOPCIAERCapTLPPrefixLogDW3Offset = 0x44, +}; + enum { kIOPCIUncorrectableErrorBitDataLinkProtocol = 4, @@ -331,6 +373,7 @@ typedef enum tIOPCILinkSpeed * and re-applying it before using kIOPCIDeviceResetTypeWarmResetEnable. * @constant kIOPCIDeviceResetTypeWarmResetEnable Completes the warm reset operation initiated with type kIOPCIDeviceResetTypeWarmResetDisable * (e.g. deassert PERST#). See kIOPCIDeviceResetTypeWarmResetDisable for more details. + * @constant kIOPCIDeviceResetTypeFunctionReset Issues a function-level reset, if supported. */ typedef enum tIOPCIDeviceResetTypes { @@ -338,6 +381,7 @@ typedef enum tIOPCIDeviceResetTypes kIOPCIDeviceResetTypeWarmReset = 0x00000002, kIOPCIDeviceResetTypeWarmResetDisable = 0x00000004, kIOPCIDeviceResetTypeWarmResetEnable = 0x00000008, + kIOPCIDeviceResetTypeFunctionReset = 0x00000010, } tIOPCIDeviceResetTypes; /*! @enum tIOPCIDeviceResetOptions @@ -361,4 +405,15 @@ enum tIOPCILinkControlASPMBits kIOPCILinkControlASPMBitsL0sL1 = kIOPCILinkControlASPMBitsL0s | kIOPCILinkControlASPMBitsL1 }; +/*! @enum tIOPCIAccessOptions + * @brief Options passed to memory space accessor functions + * @constant kIOPCIAccessLatencyTolerantHint Hint to host software that this PCIe access is not in a performance critical section, + * and host software is permitted to offload the access to a DMA engine in order to free the CPU for other work to + * optimize overall system performance. Use of this hint may increase the latency of the memory space accessor function. + */ +typedef enum tIOPCIAccessOptions +{ + kIOPCIAccessLatencyTolerantHint = (1 << 0), +} tIOPCIAccessOptions; + #endif /* IOPCIDefinitions_h */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostDevice.h b/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostDevice.h index 11e1957b..f567d2cb 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostDevice.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostDevice.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOUSBHostDevice.iig */ +/* iig(DriverKit-427.100.5) generated from IOUSBHostDevice.iig */ /* IOUSBHostDevice.iig:1-43 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostInterface.h b/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostInterface.h index de4f2c10..7f3ae86e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostInterface.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostInterface.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOUSBHostInterface.iig */ +/* iig(DriverKit-427.100.5) generated from IOUSBHostInterface.iig */ /* IOUSBHostInterface.iig:1-44 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostPipe.h b/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostPipe.h index fd192017..9862d9ae 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostPipe.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/USBDriverKit/IOUSBHostPipe.h @@ -1,4 +1,4 @@ -/* iig(DriverKit-324.60.3) generated from IOUSBHostPipe.iig */ +/* iig(DriverKit-427.100.5) generated from IOUSBHostPipe.iig */ /* IOUSBHostPipe.iig:1-100 */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/_endian.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/_endian.h new file mode 100644 index 00000000..85c2b53b --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/_endian.h @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2004, 2006, 2023 Apple Computer, Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +/* + * Copyright (c) 1995 NeXT Computer, Inc. All rights reserved. + * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ +/* + * Copyright (c) 1987, 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _ARM___ENDIAN_H_ +#define _ARM___ENDIAN_H_ + +#if defined (__arm__) || defined (__arm64__) + +#include + +#define __DARWIN_BYTE_ORDER __DARWIN_LITTLE_ENDIAN + + +#define BYTE_ORDER __DARWIN_BYTE_ORDER + +#endif /* defined (__arm__) || defined (__arm64__) */ +#endif /* !_ARM___ENDIAN_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/_types.h index 44575038..43c97da4 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm/_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/_types.h @@ -6,6 +6,15 @@ #if defined (__arm__) || defined (__arm64__) +#define USE_CLANG_TYPES 0 + +#if USE_CLANG_TYPES +#include +#include +#include +#include +#endif + /* * This header file contains integer types. It's intended to also contain * flotaing point and other arithmetic types, as needed, later. @@ -58,7 +67,9 @@ typedef union { typedef __mbstate_t __darwin_mbstate_t; /* mbstate_t */ -#if defined(__PTRDIFF_TYPE__) +#if USE_CLANG_TYPES +typedef ptrdiff_t __darwin_ptrdiff_t; /* ptr1 - ptr2 */ +#elif defined(__PTRDIFF_TYPE__) typedef __PTRDIFF_TYPE__ __darwin_ptrdiff_t; /* ptr1 - ptr2 */ #elif defined(__LP64__) typedef long __darwin_ptrdiff_t; /* ptr1 - ptr2 */ @@ -66,19 +77,25 @@ typedef long __darwin_ptrdiff_t; /* ptr1 - ptr2 */ typedef int __darwin_ptrdiff_t; /* ptr1 - ptr2 */ #endif /* __GNUC__ */ -#if defined(__SIZE_TYPE__) +#if USE_CLANG_TYPES +typedef size_t __darwin_size_t; /* sizeof() */ +#elif defined(__SIZE_TYPE__) typedef __SIZE_TYPE__ __darwin_size_t; /* sizeof() */ #else typedef unsigned long __darwin_size_t; /* sizeof() */ #endif -#if (__GNUC__ > 2) +#if USE_CLANG_TYPES +typedef va_list __darwin_va_list; /* va_list */ +#elif (__GNUC__ > 2) typedef __builtin_va_list __darwin_va_list; /* va_list */ #else typedef void * __darwin_va_list; /* va_list */ #endif -#if defined(__WCHAR_TYPE__) +#if USE_CLANG_TYPES +typedef wchar_t __darwin_wchar_t; /* wchar_t */ +#elif defined(__WCHAR_TYPE__) typedef __WCHAR_TYPE__ __darwin_wchar_t; /* wchar_t */ #else typedef __darwin_ct_rune_t __darwin_wchar_t; /* wchar_t */ @@ -97,6 +114,8 @@ typedef __uint32_t __darwin_socklen_t; /* socklen_t (duh) */ typedef long __darwin_ssize_t; /* byte count or error */ typedef long __darwin_time_t; /* time() */ +#undef USE_CLANG_TYPES + #endif /* defined (__arm__) || defined (__arm64__) */ #endif /* _BSD_ARM__TYPES_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/arm_features.inc b/Frameworks/Kernel.framework/Versions/A/Headers/arm/arm_features.inc new file mode 100644 index 00000000..147e8fb0 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/arm_features.inc @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2024 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +/** + * Enumerated ARM optional features to be exported to userspace. These are to be + * enumerated using the official feature name from the ARM ARM. They are grouped + * below based on the MSR that will be used to populate the data. + */ + +/* Features from: ID_AA64ISAR0_EL1 */ +ARM_FEATURE_FLAG(FEAT_CRC32); +ARM_FEATURE_FLAG(FEAT_FlagM); +ARM_FEATURE_FLAG(FEAT_FlagM2); +ARM_FEATURE_FLAG(FEAT_FHM); +ARM_FEATURE_FLAG(FEAT_DotProd); +ARM_FEATURE_FLAG(FEAT_SHA3); +ARM_FEATURE_FLAG(FEAT_RDM); +ARM_FEATURE_FLAG(FEAT_LSE); +ARM_FEATURE_FLAG(FEAT_SHA256); +ARM_FEATURE_FLAG(FEAT_SHA512); +ARM_FEATURE_FLAG(FEAT_SHA1); +ARM_FEATURE_FLAG(FEAT_AES); +ARM_FEATURE_FLAG(FEAT_PMULL); + +/* Features from: ID_AA64ISAR1_EL1 */ +ARM_FEATURE_FLAG(FEAT_SPECRES); +ARM_FEATURE_FLAG(FEAT_SPECRES2); +ARM_FEATURE_FLAG(FEAT_SB); +ARM_FEATURE_FLAG(FEAT_FRINTTS); +ARM_FEATURE_FLAG(FEAT_PACIMP); +ARM_FEATURE_FLAG(FEAT_LRCPC); +ARM_FEATURE_FLAG(FEAT_LRCPC2); +ARM_FEATURE_FLAG(FEAT_FCMA); +ARM_FEATURE_FLAG(FEAT_JSCVT); +ARM_FEATURE_FLAG(FEAT_PAuth); +ARM_FEATURE_FLAG(FEAT_PAuth2); +ARM_FEATURE_FLAG(FEAT_FPAC); +ARM_FEATURE_FLAG(FEAT_FPACCOMBINE); +ARM_FEATURE_FLAG(FEAT_DPB); +ARM_FEATURE_FLAG(FEAT_DPB2); +ARM_FEATURE_FLAG(FEAT_BF16); +ARM_FEATURE_FLAG(FEAT_EBF16); +ARM_FEATURE_FLAG(FEAT_I8MM); + +/* Features from: ID_AA64ISAR2_EL1 */ +ARM_FEATURE_FLAG(FEAT_WFxT); +ARM_FEATURE_FLAG(FEAT_RPRES); +ARM_FEATURE_FLAG(FEAT_CSSC); +ARM_FEATURE_FLAG(FEAT_HBC); + +/* Features from: ID_AA64MMFR0_EL1 */ +ARM_FEATURE_FLAG(FEAT_ECV); + +/* Features from: ID_AA64MMFR1_EL1 */ +ARM_FEATURE_FLAG(FEAT_AFP); + +/* Features from: ID_AA64MMFR2_EL1 */ +ARM_FEATURE_FLAG(FEAT_LSE2); + +/* Features from: ID_AA64PFR0_EL1 */ +ARM_FEATURE_FLAG(FEAT_CSV2); +ARM_FEATURE_FLAG(FEAT_CSV3); +ARM_FEATURE_FLAG(FEAT_DIT); +ARM_FEATURE_FLAG(AdvSIMD); +ARM_FEATURE_FLAG(AdvSIMD_HPFPCvt); +ARM_FEATURE_FLAG(FEAT_FP16); + +/* Features from: ID_AA64PFR1_EL1 */ +ARM_FEATURE_FLAG(FEAT_SSBS); +ARM_FEATURE_FLAG(FEAT_BTI); +ARM_FEATURE_FLAG(FEAT_SME); +ARM_FEATURE_FLAG(FEAT_SME2); + +/* Features from: ID_AA64PFR2_EL1 */ + +/* Features from: ID_AA64SMFR0_EL1 */ +ARM_FEATURE_FLAG(SME_F32F32); +ARM_FEATURE_FLAG(SME_BI32I32); +ARM_FEATURE_FLAG(SME_B16F32); +ARM_FEATURE_FLAG(SME_F16F32); +ARM_FEATURE_FLAG(SME_I8I32); +ARM_FEATURE_FLAG(SME_I16I32); +ARM_FEATURE_FLAG(FEAT_SME_F64F64); +ARM_FEATURE_FLAG(FEAT_SME_I16I64); + +/* Features from: FPCR */ +ARM_FEATURE_FLAG(FP_SyncExceptions); + +/* Features derived from other feature flags */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpu_capabilities_public.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpu_capabilities_public.h new file mode 100644 index 00000000..e7d0410a --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpu_capabilities_public.h @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2007 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef _ARM_CPU_CAPABILITIES_PUBLIC_H +#define _ARM_CPU_CAPABILITIES_PUBLIC_H + + + +/* + * In order to reduce the number of sysctls require for a process to get + * the full list of supported processor capabilities extensions, the + * hw.optional.arm.caps sysctl generates a bit buffer with each bit representing + * the presence (1) or absence (0) of a given FEAT extension. + */ + +#define HW_OPTIONAL_ARM_CAPS + +/* + * Clang needs those bits to remain constant. + * Existing entries should never be updated as they are ABI. + * Adding new entries to the end and bumping CAP_BIT_NB is okay. + */ + +#define CAP_BIT_FEAT_FlagM 0 +#define CAP_BIT_FEAT_FlagM2 1 +#define CAP_BIT_FEAT_FHM 2 +#define CAP_BIT_FEAT_DotProd 3 +#define CAP_BIT_FEAT_SHA3 4 +#define CAP_BIT_FEAT_RDM 5 +#define CAP_BIT_FEAT_LSE 6 +#define CAP_BIT_FEAT_SHA256 7 +#define CAP_BIT_FEAT_SHA512 8 +#define CAP_BIT_FEAT_SHA1 9 +#define CAP_BIT_FEAT_AES 10 +#define CAP_BIT_FEAT_PMULL 11 +#define CAP_BIT_FEAT_SPECRES 12 +#define CAP_BIT_FEAT_SB 13 +#define CAP_BIT_FEAT_FRINTTS 14 +#define CAP_BIT_FEAT_LRCPC 15 +#define CAP_BIT_FEAT_LRCPC2 16 +#define CAP_BIT_FEAT_FCMA 17 +#define CAP_BIT_FEAT_JSCVT 18 +#define CAP_BIT_FEAT_PAuth 19 +#define CAP_BIT_FEAT_PAuth2 20 +#define CAP_BIT_FEAT_FPAC 21 +#define CAP_BIT_FEAT_DPB 22 +#define CAP_BIT_FEAT_DPB2 23 +#define CAP_BIT_FEAT_BF16 24 +#define CAP_BIT_FEAT_I8MM 25 +#define CAP_BIT_FEAT_WFxT 26 +#define CAP_BIT_FEAT_RPRES 27 +#define CAP_BIT_FEAT_ECV 28 +#define CAP_BIT_FEAT_AFP 29 +#define CAP_BIT_FEAT_LSE2 30 +#define CAP_BIT_FEAT_CSV2 31 +#define CAP_BIT_FEAT_CSV3 32 +#define CAP_BIT_FEAT_DIT 33 +#define CAP_BIT_FEAT_FP16 34 +#define CAP_BIT_FEAT_SSBS 35 +#define CAP_BIT_FEAT_BTI 36 + + +/* SME */ +#define CAP_BIT_FEAT_SME 40 +#define CAP_BIT_FEAT_SME2 41 +#define CAP_BIT_FEAT_SME_F64F64 42 +#define CAP_BIT_FEAT_SME_I16I64 43 + +#define CAP_BIT_AdvSIMD 49 +#define CAP_BIT_AdvSIMD_HPFPCvt 50 +#define CAP_BIT_FEAT_CRC32 51 + +#define CAP_BIT_SME_F32F32 52 +#define CAP_BIT_SME_BI32I32 53 +#define CAP_BIT_SME_B16F32 54 +#define CAP_BIT_SME_F16F32 55 +#define CAP_BIT_SME_I8I32 56 +#define CAP_BIT_SME_I16I32 57 + +#define CAP_BIT_FEAT_PACIMP 58 + + +#define CAP_BIT_FEAT_HBC 64 +#define CAP_BIT_FEAT_EBF16 65 +#define CAP_BIT_FEAT_SPECRES2 66 +#define CAP_BIT_FEAT_CSSC 67 +#define CAP_BIT_FEAT_FPACCOMBINE 68 + + +#define CAP_BIT_FP_SyncExceptions 73 + +/* Legacy definitions for backwards compatibility */ +#define CAP_BIT_CRC32 CAP_BIT_FEAT_CRC32 + +/* Total number of FEAT bits. */ +#define CAP_BIT_NB 74 + +#endif /* _ARM_CPU_CAPABILITIES_PUBLIC_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpuid.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpuid.h index 1ab5ce9f..08c7d883 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpuid.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpuid.h @@ -155,15 +155,9 @@ typedef union { /* H12 e-Core (ARMv8 architecture) */ #define CPU_PART_THUNDER 0x13 -/* - * Whilst this is a Thunder-based SoC, it - * hasn't been released and should remain - * hidden in 2020 seeds. - */ /* M10 e-Core (ARMv8 architecture) */ #define CPU_PART_THUNDER_M10 0x26 - /* H13 e-Core */ #define CPU_PART_ICESTORM 0x20 @@ -176,7 +170,6 @@ typedef union { /* H13G p-Core */ #define CPU_PART_FIRESTORM_TONGA 0x23 - /* H13J e-Core */ #define CPU_PART_ICESTORM_JADE_CHOP 0x24 #define CPU_PART_ICESTORM_JADE_DIE 0x28 @@ -185,24 +178,18 @@ typedef union { #define CPU_PART_FIRESTORM_JADE_CHOP 0x25 #define CPU_PART_FIRESTORM_JADE_DIE 0x29 - - /* H14 e-Core */ #define CPU_PART_BLIZZARD 0x30 /* H14 p-Core */ #define CPU_PART_AVALANCHE 0x31 - - /* H14G e-Core */ #define CPU_PART_BLIZZARD_STATEN 0x32 /* H14G p-Core */ #define CPU_PART_AVALANCHE_STATEN 0x33 - - /* H14S e-Core */ #define CPU_PART_BLIZZARD_RHODES_CHOP 0x34 @@ -215,49 +202,71 @@ typedef union { /* H14C p-Core */ #define CPU_PART_AVALANCHE_RHODES_DIE 0x39 - - /* H15 e-Core */ #define CPU_PART_SAWTOOTH 0x40 /* H15 p-Core */ #define CPU_PART_EVEREST 0x41 - /* H15 Ibiza e-Core */ #define CPU_PART_ECORE_IBIZA 0x42 /* H15 Ibiza p-Core */ #define CPU_PART_PCORE_IBIZA 0x43 - - /* H15 Palma e-Core. */ #define CPU_PART_ECORE_PALMA 0x48 /* H15 Palma p-Core. */ #define CPU_PART_PCORE_PALMA 0x49 - - /* H15 Coll e-Core. */ #define CPU_PART_ECORE_COLL 0x50 /* H15 Coll p-Core. */ #define CPU_PART_PCORE_COLL 0x51 - - /* H15 Lobos e-Core. */ #define CPU_PART_ECORE_LOBOS 0x44 /* H15 Lobos p-Core. */ #define CPU_PART_PCORE_LOBOS 0x45 - /* M11 e-Core */ #define CPU_PART_SAWTOOTH_M11 0x46 +/* H16G Donan e-Core. */ +#define CPU_PART_ECORE_DONAN 0x52 + +/* H16H Donan p-Core. */ +#define CPU_PART_PCORE_DONAN 0x53 + +/* H16S Brava S e-Core. */ +#define CPU_PART_ECORE_BRAVA_S 0x54 + +/* H16S Brava S p-Core. */ +#define CPU_PART_PCORE_BRAVA_S 0x55 + +/* H16C Brava C e-Core. */ +#define CPU_PART_ECORE_BRAVA_C 0x58 + +/* H16C Brava C p-Core. */ +#define CPU_PART_PCORE_BRAVA_C 0x59 + + +/* H17P Tahiti e-Core. */ +#define CPU_PART_ECORE_TAHITI 0x60 + +/* H17P Tahiti p-Core. */ +#define CPU_PART_PCORE_TAHITI 0x61 + + + +/* H17A Tupai e-Core. */ +#define CPU_PART_ECORE_TUPAI 0x6a + +/* H17A Tupai p-Core. */ +#define CPU_PART_PCORE_TUPAI 0x6b @@ -273,6 +282,15 @@ typedef enum { CACHE_UNKNOWN } cache_type_t; +#if __ARM_VHE__ +/* Cache register raw values */ +typedef struct { + uint64_t clidr_el1; + uint64_t ccsidr_el1_inst[7]; + uint64_t ccsidr_el1_data_or_unified[7]; +} cache_registers_t; +#endif + typedef struct { boolean_t c_valid; /* has this cache info been populated? */ boolean_t c_unified; /* unified I & D cache? */ @@ -288,6 +306,10 @@ typedef struct { uint32_t c_l2size; /* L2 size, if present */ uint32_t c_bulksize_op; /* bulk operation size limit. 0 if disabled */ uint32_t c_inner_cache_size; /* inner dache size */ + +#if __ARM_VHE__ + cache_registers_t c_registers; /* cache register raw values for hv_vcpu_capabilities */ +#endif } cache_info_t; typedef struct { diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpuid_internal.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpuid_internal.h index 4d17f6b8..741a738a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpuid_internal.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/cpuid_internal.h @@ -42,12 +42,18 @@ uint32_t machine_read_midr(void); uint32_t machine_read_clidr(void); uint32_t machine_read_ccsidr(void); +// CSSELR_EL1.Level bits position 0b1110. typedef enum { - CSSELR_L1 = 0x0, - CSSELR_L2 = 0x2, - CSSELR_L3 = 0x4 + CSSELR_L1 = 0, + CSSELR_L2 = 1 << 1, + CSSELR_L3 = 2 << 1, + CSSELR_L4 = 3 << 1, + CSSELR_L5 = 4 << 1, + CSSELR_L6 = 5 << 1, + CSSELR_L7 = 6 << 1, } csselr_cache_level; +// CSSELR_EL1.InD bit position 0b1. typedef enum { CSSELR_DATA_UNIFIED = 0x0, CSSELR_INSTR = 0x1 diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/endian.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/endian.h index c565c201..8d72b8f4 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm/endian.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/endian.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2007 Apple Inc. All rights reserved. + * Copyright (c) 2000-2023 Apple Inc. All rights reserved. */ /* * Copyright 1995 NeXT Computer, Inc. All rights reserved. @@ -56,22 +56,6 @@ #define _QUAD_HIGHWORD 1 #define _QUAD_LOWWORD 0 -/* - * Definitions for byte order, according to byte significance from low - * address to high. - */ -#define __DARWIN_LITTLE_ENDIAN 1234 /* LSB first: i386, vax */ -#define __DARWIN_BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */ -#define __DARWIN_PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */ - -#define __DARWIN_BYTE_ORDER __DARWIN_LITTLE_ENDIAN - - -#define LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN -#define BIG_ENDIAN __DARWIN_BIG_ENDIAN -#define PDP_ENDIAN __DARWIN_PDP_ENDIAN - -#define BYTE_ORDER __DARWIN_BYTE_ORDER #include diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/limits.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/limits.h index 1768884a..178394c4 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm/limits.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/limits.h @@ -44,6 +44,8 @@ #include #include +#define USE_CLANG_LIMITS 0 + #undef MB_LEN_MAX #define MB_LEN_MAX 6 /* Allow 31 bit UTF2 */ @@ -59,7 +61,7 @@ #include_next #endif /* __has_include_next */ -#else +#elif !USE_CLANG_LIMITS #define CHAR_BIT 8 /* number of bits in a char */ @@ -102,7 +104,7 @@ #define LLONG_MAX 0x7fffffffffffffffLL /* max signed long long */ #define LLONG_MIN (-0x7fffffffffffffffLL-1) /* min signed long long */ -#endif /* defined(__has_include) && __has_include(<__xnu_libcxx_sentinel.h>) */ +#endif /* !USE_CLANG_LIMITS */ #if !defined(_ANSI_SOURCE) #ifdef __LP64__ @@ -123,6 +125,8 @@ #endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE */ #endif /* !_ANSI_SOURCE */ +#undef USE_CLANG_LIMITS + #endif /* defined (__arm__) || defined (__arm64__) */ #endif /* _ARM_LIMITS_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/machine_routines.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/machine_routines.h index 57ea7473..18ef6b83 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm/machine_routines.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/machine_routines.h @@ -53,7 +53,7 @@ void ml_cpu_signal_deferred_adjust_timer(uint64_t nanosecs); uint64_t ml_cpu_signal_deferred_get_timer(void); void ml_cpu_signal_deferred(unsigned int cpu_id); void ml_cpu_signal_retract(unsigned int cpu_id); -bool ml_cpu_signal_is_enabled(void); + /* Initialize Interrupts */ void ml_init_interrupt(void); @@ -83,9 +83,10 @@ boolean_t ml_at_interrupt_context(void); /* Generate a fake interrupt */ void ml_cause_interrupt(void); -#if HAS_SIQ void siq_init(void); void siq_cpu_init(void); +#if HAS_SIQ +void machine_switch_perfcontrol_siq(thread_t thread); #endif @@ -182,13 +183,12 @@ ex_cb_action_t ex_cb_invoke( vm_offset_t far); typedef enum { - CLUSTER_TYPE_SMP, - CLUSTER_TYPE_E, - CLUSTER_TYPE_P, + CLUSTER_TYPE_SMP = 0, + CLUSTER_TYPE_E = 1, + CLUSTER_TYPE_P = 2, MAX_CPU_TYPES, } cluster_type_t; -void ml_parse_cpu_topology(void); unsigned int ml_get_cpu_count(void); @@ -251,139 +251,6 @@ typedef struct ml_cpu_info ml_cpu_info_t; cluster_type_t ml_get_boot_cluster_type(void); -/*! - * @typedef ml_topology_cpu_t - * @brief Describes one CPU core in the topology. - * - * @field cpu_id Logical CPU ID: 0, 1, 2, 3, 4, ... - * Dynamically assigned by XNU so it might not match EDT. No holes. - * @field phys_id Physical CPU ID (EDT: reg). Same as MPIDR[15:0], i.e. - * (cluster_id << 8) | core_number_within_cluster - * @field cluster_id Logical Cluster ID: 0, 1, 2, 3, 4, ... - * Dynamically assigned by XNU so it might not match EDT. No holes. - * @field die_id Die ID (EDT: die-id) - * @field cluster_type The type of CPUs found in this cluster. - * @field l2_access_penalty Indicates that the scheduler should try to de-prioritize a core because - * L2 accesses are slower than on the boot processor. - * @field l2_cache_size Size of the L2 cache, in bytes. 0 if unknown or not present. - * @field l2_cache_id l2-cache-id property read from EDT. - * @field l3_cache_size Size of the L3 cache, in bytes. 0 if unknown or not present. - * @field l3_cache_id l3-cache-id property read from EDT. - * @field cpu_IMPL_regs IO-mapped virtual address of cpuX_IMPL (implementation-defined) register block. - * @field cpu_IMPL_pa Physical address of cpuX_IMPL register block. - * @field cpu_IMPL_len Length of cpuX_IMPL register block. - * @field cpu_UTTDBG_regs IO-mapped virtual address of cpuX_UTTDBG register block. - * @field cpu_UTTDBG_pa Physical address of cpuX_UTTDBG register block, if set in DT, else zero - * @field cpu_UTTDBG_len Length of cpuX_UTTDBG register block, if set in DT, else zero - * @field coresight_regs IO-mapped virtual address of CoreSight debug register block. - * @field coresight_pa Physical address of CoreSight register block. - * @field coresight_len Length of CoreSight register block. - * @field die_cluster_id Physical cluster ID within the local die (EDT: die-cluster-id) - * @field cluster_core_id Physical core ID within the local cluster (EDT: cluster-core-id) - */ -typedef struct ml_topology_cpu { - unsigned int cpu_id; - uint32_t phys_id; - unsigned int cluster_id; - unsigned int die_id; - cluster_type_t cluster_type; - uint32_t l2_access_penalty; - uint32_t l2_cache_size; - uint32_t l2_cache_id; - uint32_t l3_cache_size; - uint32_t l3_cache_id; - vm_offset_t cpu_IMPL_regs; - uint64_t cpu_IMPL_pa; - uint64_t cpu_IMPL_len; - vm_offset_t cpu_UTTDBG_regs; - uint64_t cpu_UTTDBG_pa; - uint64_t cpu_UTTDBG_len; - vm_offset_t coresight_regs; - uint64_t coresight_pa; - uint64_t coresight_len; - unsigned int die_cluster_id; - unsigned int cluster_core_id; -} ml_topology_cpu_t; - -/*! - * @typedef ml_topology_cluster_t - * @brief Describes one cluster in the topology. - * - * @field cluster_id Cluster ID (EDT: cluster-id) - * @field cluster_type The type of CPUs found in this cluster. - * @field num_cpus Total number of usable CPU cores in this cluster. - * @field first_cpu_id The cpu_id of the first CPU in the cluster. - * @field cpu_mask A bitmask representing the cpu_id's that belong to the cluster. Example: - * If the cluster contains CPU4 and CPU5, cpu_mask will be 0x30. - * @field acc_IMPL_regs IO-mapped virtual address of acc_IMPL (implementation-defined) register block. - * @field acc_IMPL_pa Physical address of acc_IMPL register block. - * @field acc_IMPL_len Length of acc_IMPL register block. - * @field cpm_IMPL_regs IO-mapped virtual address of cpm_IMPL (implementation-defined) register block. - * @field cpm_IMPL_pa Physical address of cpm_IMPL register block. - * @field cpm_IMPL_len Length of cpm_IMPL register block. - */ -typedef struct ml_topology_cluster { - unsigned int cluster_id; - cluster_type_t cluster_type; - unsigned int num_cpus; - unsigned int first_cpu_id; - uint64_t cpu_mask; - vm_offset_t acc_IMPL_regs; - uint64_t acc_IMPL_pa; - uint64_t acc_IMPL_len; - vm_offset_t cpm_IMPL_regs; - uint64_t cpm_IMPL_pa; - uint64_t cpm_IMPL_len; -} ml_topology_cluster_t; - -// Bump this version number any time any ml_topology_* struct changes, so -// that KPI users can check whether their headers are compatible with -// the running kernel. -#define CPU_TOPOLOGY_VERSION 1 - -/*! - * @typedef ml_topology_info_t - * @brief Describes the CPU topology for all APs in the system. Populated from EDT and read-only at runtime. - * @discussion This struct only lists CPU cores that are considered usable by both iBoot and XNU. Some - * physically present CPU cores may be considered unusable due to configuration options like - * the "cpus=" boot-arg. Cores that are disabled in hardware will not show up in EDT at all, so - * they also will not be present in this struct. - * - * @field version Version of the struct (set to CPU_TOPOLOGY_VERSION). - * @field num_cpus Total number of usable CPU cores. - * @field max_cpu_id The highest usable logical CPU ID. - * @field num_clusters Total number of AP CPU clusters on the system (usable or not). - * @field max_cluster_id The highest cluster ID found in EDT. - * @field cpus List of |num_cpus| entries. - * @field clusters List of |num_clusters| entries. - * @field boot_cpu Points to the |cpus| entry for the boot CPU. - * @field boot_cluster Points to the |clusters| entry which contains the boot CPU. - * @field chip_revision Silicon revision reported by iBoot, which comes from the - * SoC-specific fuse bits. See CPU_VERSION_xx macros for definitions. - */ -typedef struct ml_topology_info { - unsigned int version; - unsigned int num_cpus; - unsigned int max_cpu_id; - unsigned int num_clusters; - unsigned int max_cluster_id; - unsigned int max_die_id; - ml_topology_cpu_t *cpus; - ml_topology_cluster_t *clusters; - ml_topology_cpu_t *boot_cpu; - ml_topology_cluster_t *boot_cluster; - unsigned int chip_revision; - unsigned int cluster_types; - unsigned int cluster_type_num_cpus[MAX_CPU_TYPES]; - unsigned int cluster_type_num_clusters[MAX_CPU_TYPES]; -} ml_topology_info_t; - -/*! - * @function ml_get_topology_info - * @result A pointer to the read-only topology struct. Does not need to be freed. Returns NULL - * if the struct hasn't been initialized or the feature is unsupported. - */ -const ml_topology_info_t *ml_get_topology_info(void); /*! * @function ml_map_cpu_pio @@ -410,7 +277,7 @@ struct ml_processor_info { uint64_t regmap_paddr; uint32_t phys_id; uint32_t log_id; - uint32_t l2_access_penalty; + uint32_t l2_access_penalty; /* unused */ uint32_t cluster_id; cluster_type_t cluster_type; uint32_t l2_cache_id; @@ -458,14 +325,6 @@ kern_return_t ml_mcache_flush_callback_register(mcache_flush_function func, void kern_return_t ml_mcache_flush(void); -/* Initialize Interrupts */ -void ml_install_interrupt_handler( - void *nub, - int source, - void *target, - IOInterruptHandler handler, - void *refCon); - vm_offset_t ml_static_vtop( vm_offset_t); @@ -589,11 +448,6 @@ ml_static_protect( vm_size_t size, vm_prot_t new_prot); -typedef int ml_page_protection_t; - -/* Return the type of page protection supported */ -ml_page_protection_t ml_page_protection_type(void); - /* virtual to physical on wired pages */ vm_offset_t ml_vtophys( vm_offset_t vaddr); @@ -604,6 +458,11 @@ void ml_cpu_get_info_type(ml_cpu_info_t * ml_cpu_info, cluster_type_t cluster_ty #endif /* __APPLE_API_UNSTABLE */ +typedef int ml_page_protection_t; + +/* Return the type of page protection supported */ +ml_page_protection_t ml_page_protection_type(void); + #ifdef __APPLE_API_PRIVATE /* Zero bytes starting at a physical address */ @@ -613,6 +472,8 @@ void bzero_phys( void bzero_phys_nc(addr64_t src64, vm_size_t bytes); +void bzero_phys_with_options(addr64_t src, vm_size_t bytes, int options); + void ml_thread_policy( thread_t thread, @@ -639,6 +500,8 @@ unsigned int ml_get_machine_mem(void); extern void ml_cpu_init_completed(void); extern void ml_cpu_up(void); extern void ml_cpu_down(void); +extern int ml_find_next_up_processor(void); + /* * The update to CPU counts needs to be separate from other actions * in ml_cpu_up() and ml_cpu_down() @@ -679,15 +542,12 @@ extern int be_tracing(void); * to wake it up as needed, where "as needed" is defined as "all other CPUs have * called the broadcast func". Look around the kernel for examples, or instead use * cpu_broadcast_xcall_simple() which does indeed act like you would expect, given - * the prototype. cpu_broadcast_immediate_xcall has the same caveats and has a similar - * _simple() wrapper + * the prototype. */ typedef void (*broadcastFunc) (void *); unsigned int cpu_broadcast_xcall(uint32_t *, boolean_t, broadcastFunc, void *); unsigned int cpu_broadcast_xcall_simple(boolean_t, broadcastFunc, void *); __result_use_check kern_return_t cpu_xcall(int, broadcastFunc, void *); -unsigned int cpu_broadcast_immediate_xcall(uint32_t *, boolean_t, broadcastFunc, void *); -unsigned int cpu_broadcast_immediate_xcall_simple(boolean_t, broadcastFunc, void *); __result_use_check kern_return_t cpu_immediate_xcall(int, broadcastFunc, void *); @@ -700,7 +560,7 @@ uint8_t user_timebase_type(void); boolean_t ml_thread_is64bit(thread_t thread); #ifdef __arm64__ -bool ml_feature_supported(uint32_t feature_bit); +bool ml_feature_supported(uint64_t feature_bit); void ml_set_align_checking(void); extern void wfe_timeout_configure(void); extern void wfe_timeout_init(void); @@ -731,6 +591,9 @@ void ml_report_minor_badness(uint32_t badness_id); #define ML_MINOR_BADNESS_PIO_WRITTEN_FROM_USERSPACE 2 + + + __END_DECLS #endif /* _ARM_MACHINE_ROUTINES_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/memory_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/memory_types.h index bc4816cf..c3248d40 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm/memory_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/memory_types.h @@ -41,7 +41,7 @@ #define VM_WIMG_POSTED (VM_MEM_COHERENT | VM_MEM_NOT_CACHEABLE | VM_MEM_GUARDED | VM_MEM_EARLY_ACK) // 0x27 #define VM_WIMG_WTHRU (VM_MEM_WRITE_THROUGH | VM_MEM_COHERENT | VM_MEM_GUARDED) // 0xb #define VM_WIMG_WCOMB (VM_MEM_NOT_CACHEABLE | VM_MEM_COHERENT) // 0x6 -#if HAS_UCNORMAL_MEM +#if HAS_UCNORMAL_MEM || APPLEVIRTUALPLATFORM #define VM_WIMG_RT (VM_WIMG_WCOMB | VM_MEM_RT) // 0x16 #else #define VM_WIMG_RT (VM_WIMG_IO | VM_MEM_RT) // 0x17 @@ -50,5 +50,4 @@ #define VM_WIMG_POSTED_COMBINED_REORDERED (VM_MEM_NOT_CACHEABLE | VM_MEM_COHERENT | VM_MEM_EARLY_ACK) // 0x26 - #endif /* _ARM_MEMORY_TYPES_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/thread.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/thread.h index 92ca6c32..c7ec4b38 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm/thread.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/thread.h @@ -75,6 +75,12 @@ struct perfcontrol_state { extern unsigned int _MachineStateCount[]; +static inline long +ml_make_pcpu_base_and_cpu_number(long base, uint16_t cpu) +{ + return (base << 16) | cpu; +} + extern struct arm_saved_state * get_user_regs(thread_t); extern struct arm_saved_state * find_user_regs(thread_t); extern struct arm_saved_state * find_kern_regs(thread_t); @@ -83,10 +89,7 @@ extern arm_debug_state32_t * find_debug_state32(thread_t); extern arm_debug_state32_t * find_or_allocate_debug_state32(thread_t); extern arm_debug_state64_t * find_debug_state64(thread_t); extern arm_debug_state64_t * find_or_allocate_debug_state64(thread_t); -extern arm_neon_saved_state_t * get_user_neon_regs(thread_t); -#if __ARM_VHE__ -extern const arm_saved_state_t * get_vcpu_user_regs(thread_t); -#endif +extern void set_user_neon_reg(thread_t, unsigned int, uint128_t); #define FIND_PERFCONTROL_STATE(th) (&th->machine.perfctrl_state) @@ -95,18 +98,17 @@ extern void *act_thread_csave(void); extern void act_thread_catt(void *ctx); extern void act_thread_cfree(void *ctx); -#if HAS_AMX -extern kern_return_t machine_thread_amx_state_alloc(thread_t thread); -extern void machine_thread_amx_state_free(thread_t thread); -#endif /* HAS_AMX */ -#if __ARM_FEATURE_SME -extern kern_return_t machine_thread_sme_state_alloc(thread_t thread); -extern void machine_thread_sme_state_free(thread_t thread); -#endif +#if HAS_APPLE_GENERIC_TIMER +extern void agt_thread_bootstrap(void); +#endif /* HAS_MACHINE_GENERIC_TIMER */ -#if HAVE_MACHINE_THREAD_MATRIX_STATE -extern void machine_thread_matrix_state_dup(thread_t target); +#if HAS_JITBOX +extern void jitbox_cfg_set( + boolean_t jitbox_enabled, + uint64_t jitbox_version, + uint64_t jitbox_start, + uint64_t jitbox_size); #endif /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/trap.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/trap.h index 2552d1b8..3d6540af 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm/trap.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/trap.h @@ -85,24 +85,32 @@ #define T_PF_USER 0x4 /* from user state */ #if !defined(ASSEMBLER) -__attribute__((cold, always_inline)) -static inline void -ml_recoverable_trap(unsigned int code) -__attribute__((diagnose_if(!__builtin_constant_p(code), "code must be constant", "error"))) -{ - __asm__ volatile ("brk #%0" : : "i"(code)); -} -__attribute__((cold, noreturn, always_inline)) -static inline void -ml_fatal_trap(unsigned int code) -__attribute__((diagnose_if(!__builtin_constant_p(code), "code must be constant", "error"))) -{ - __asm__ volatile ("brk #%0" : : "i"(code)); - __builtin_unreachable(); -} +#if __arm64__ +#define ML_TRAP_REGISTER_1 "x8" +#define ML_TRAP_REGISTER_2 "x16" +#define ML_TRAP_REGISTER_3 "x17" +#else +#define ML_TRAP_REGISTER_1 "r8" +#define ML_TRAP_REGISTER_2 "r0" +#define ML_TRAP_REGISTER_3 "r1" +#endif -#endif /* !ASSEMBLER */ +#define ml_recoverable_trap(code) \ + __asm__ volatile ("brk #%0" : : "i"(code)) + +#if __has_builtin(__builtin_arm_trap) +#define ml_fatal_trap(code) ({ \ + __builtin_arm_trap(code); \ + __builtin_unreachable(); \ +}) +#else +#define ml_fatal_trap(code) ({ \ + ml_recoverable_trap(code); \ + __builtin_unreachable(); \ +}) +#endif +#endif /* !ASSEMBLER */ #endif /* _ARM_TRAP_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm/types.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm/types.h index ae4dd1ab..032c9c3b 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm/types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm/types.h @@ -91,6 +91,11 @@ typedef int32_t user_time_t; typedef int64_t user_off_t; #endif +#ifndef VM_UNSAFE_TYPES +typedef user_addr_t user_addr_ut; +typedef user_size_t user_size_ut; +#endif /* VM_SAFE_TYPES */ + #define USER_ADDR_NULL ((user_addr_t) 0) #define CAST_USER_ADDR_T(a_ptr) ((user_addr_t)((uintptr_t)(a_ptr))) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/arm64/machine_machdep.h b/Frameworks/Kernel.framework/Versions/A/Headers/arm64/machine_machdep.h index 6db8463a..9862ee3e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/arm64/machine_machdep.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/arm64/machine_machdep.h @@ -46,6 +46,10 @@ #if defined(HAS_APPLE_PAC) #define ARM_MACHINE_THREAD_DISABLE_USER_JOP_SHIFT 1 #define ARM_MACHINE_THREAD_DISABLE_USER_JOP (1 << ARM_MACHINE_THREAD_DISABLE_USER_JOP_SHIFT) -#endif +#endif /* HAS_APPLE_PAC */ + +/* Thread should use 1 GHz timebase */ +#define ARM_MACHINE_THREAD_USES_1GHZ_TIMBASE_SHIFT 2 +#define ARM_MACHINE_THREAD_USES_1GHZ_TIMBASE (1 << ARM_MACHINE_THREAD_USES_1GHZ_TIMBASE_SHIFT) #endif /* _MACHDEP_INTERNAL_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/bank/bank_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/bank/bank_types.h index dd4db800..51a3eded 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/bank/bank_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/bank/bank_types.h @@ -29,6 +29,7 @@ #ifndef _BANK_BANK_TYPES_H_ #define _BANK_BANK_TYPES_H_ +#include #include #include @@ -39,10 +40,12 @@ #define MACH_VOUCHER_BANK_CONTENT_SIZE (500) typedef uint32_t bank_action_t; -#define BANK_ORIGINATOR_PID 0x1 -#define BANK_PERSONA_TOKEN 0x2 -#define BANK_PERSONA_ID 0x3 -#define BANK_PERSONA_ADOPT_ANY 0x4 +#define BANK_ORIGINATOR_PID 0x1 +#define BANK_PERSONA_TOKEN 0x2 +#define BANK_PERSONA_ID 0x3 +#define BANK_PERSONA_ADOPT_ANY 0x4 +#define BANK_ORIGINATOR_PROXIMATE_PID 0x5 + #define PROC_PERSONA_INFO_FLAG_ADOPTION_ALLOWED 0x1 diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/console/serial_protos.h b/Frameworks/Kernel.framework/Versions/A/Headers/console/serial_protos.h index ebc20dff..2c423762 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/console/serial_protos.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/console/serial_protos.h @@ -70,6 +70,11 @@ extern uint32_t serialmode; * serial. Requires SERIALMODE_INPUT set, ingored otherwise. */ #define SERIALMODE_ON_DEMAND 0x40 +#if CONFIG_EXCLAVES + + +#endif + extern uint32_t cons_ops_index; extern const uint32_t nconsops; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/family/EXDisplayPipeTypes.h b/Frameworks/Kernel.framework/Versions/A/Headers/family/EXDisplayPipeTypes.h new file mode 100644 index 00000000..475d64cc --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/family/EXDisplayPipeTypes.h @@ -0,0 +1,125 @@ +// +// EXDisplayPipeTypes.h +// EXDisplayPipeDriver +// +// Created by Clement Moussu on 2/14/23. +// + +#include +#include + +#pragma once + +#define ENABLE_EXCLAVE_REG_INTERRUPTS 1 +#define EXDISPLAY_PIPE_TIMER_PERIOD_MS 8 + +#define EXDISP_COMPANION_TELEMETRY_TIMER_PERIOD_MS (24 * 60 * 60 * 1000) + +#define EXDISP_USE_COMPANION_KEXT_TIMER 0 + +#ifdef __cplusplus +extern "C" +{ +#endif + +typedef enum { + INDICATOR_CAM = 0, + INDICATOR_MIC = 1, + INDICATOR_MIC_ALT_ACCESSIBILITY = 2, + INDICATOR_COUNT +} EXDisplayPipeIndicator; + +#define EXDISP_SCL_REGION_COUNT 4 + +#define CANCELLED_QUEUE_MAX_LENGTH 10 +#define DROPPED_QUEUE_MAX_LENGTH 10 +#define SECURE_TE_INFO_MAX_LENGTH 10 + +typedef struct +{ + uint16_t x; + uint16_t y; + float alpha; +} EXDisplayPipeIndicatorParams; + +typedef struct +{ + uint64_t timestamp; + bool health; +} EXDisplayPipeHealthRecord; + +typedef struct +{ + EXDisplayPipeHealthRecord sca_driver_health; + EXDisplayPipeHealthRecord sca_algorithm_health; + EXDisplayPipeHealthRecord scl_health; + EXDisplayPipeHealthRecord pipe_health; + EXDisplayPipeHealthRecord link_health; + bool health; +} EXDisplayPipeHealthReport; + +typedef struct +{ + uint64_t displayedSwapID; + bool validDisplayedID; + bool poweredOn; + struct + { + EXDisplayPipeIndicator indicator; + uint16_t x; + uint16_t y; + uint16_t w; + uint16_t h; + float alpha; + bool enabled; + bool populated; + } indicators[EXDISP_SCL_REGION_COUNT]; + EXDisplayPipeHealthReport health_report; + uint64_t cancelledQueue[CANCELLED_QUEUE_MAX_LENGTH]; + uint64_t droppedQueue[DROPPED_QUEUE_MAX_LENGTH]; + uint8_t cancelledCount; + uint8_t droppedCount; +} EXDisplayPipeStatus; + +typedef struct +{ + EXDisplayPipeHealthRecord healthRecord; + uint64_t errorCount; + uint64_t lastErrorTimestamp; + uint64_t maxConsecutiveErrors; + uint64_t lastErrorVal; + bool enabled; + struct { + uint64_t prevTimebase; + uint64_t prevTimestamp; + uint64_t currTimebase; + uint64_t currTimestamp; + uint64_t timeDiff; + uint64_t timebaseDiff; + } errorInfo[SECURE_TE_INFO_MAX_LENGTH]; + int errorInfoCount; +} EXDisplayPipeSecureTEStatus; + +// kEXBrightMessageFunction API +// callPlatformFunction( kEXBrightMessageFunction, false, +// param1 = msgSize (size_t *), +// param2 = msg (EXBrightMessage *), +// nullptr, nullptr ) +#define kEXBrightMessageFunction "EXBrightMessageFunction" + +typedef enum +{ + kLoadALSSCalibration = 0 +} EXBrightMessageType; + + +typedef struct +{ + EXBrightMessageType type; + uint32_t arg0; + uint32_t arg1; +} EXBrightMessage; + +#ifdef __cplusplus +} +#endif diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/hfs/hfs_format.h b/Frameworks/Kernel.framework/Versions/A/Headers/hfs/hfs_format.h index a094341a..cda1efe4 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/hfs/hfs_format.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/hfs/hfs_format.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2015 Apple Inc. All rights reserved. + * Copyright (c) 2000-2023 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -37,7 +37,7 @@ * * This file describes the on-disk format for HFS and HFS Plus volumes. * - * Note: Starting 10.9, definition of struct HFSUniStr255 exists in hfs_unitstr.h + * Note: Starting with MacOS 10.9, definition of struct HFSUniStr255 exists in hfs_unistr.h * */ @@ -373,10 +373,12 @@ enum { kHFSFastDevCandidateMask = 0x0400, kHFSAutoCandidateBit = 0x000b, /* this item was automatically marked as a fast-dev candidate by the kernel */ - kHFSAutoCandidateMask = 0x0800 + kHFSAutoCandidateMask = 0x0800, - // There are only 4 flag bits remaining: 0x1000, 0x2000, 0x4000, 0x8000 + kHFSCatExpandedTimesBit = 0x000c, /* this item has expanded timestamps */ + kHFSCatExpandedTimesMask = 0x1000 + // There are only 3 flag bits remaining: 0x2000, 0x4000, 0x8000 }; @@ -600,6 +602,7 @@ enum { */ kHFSUnusedNodeFixBit = 31, /* Unused nodes in the Catalog B-tree have been zero-filled. See Radar #6947811. */ kHFSContentProtectionBit = 30, /* Volume has per-file content protection */ + kHFSExpandedTimesBit = 29, /* Volume has expanded / non-MacOS native timestamps */ /*** Keep these in sync with the bits above ! ****/ kHFSVolumeHardwareLockMask = 0x00000080, @@ -614,6 +617,7 @@ enum { /* Bits 16-31 are allocated from high to low */ + kHFSExpandedTimesMask = 0x20000000, kHFSContentProtectionMask = 0x40000000, kHFSUnusedNodeFixMask = 0x80000000, @@ -621,7 +625,8 @@ enum { }; enum { - kHFSUnusedNodesFixDate = 0xc5ef2480 /* March 25, 2009 */ + kHFSUnusedNodesFixDate = 0xc5ef2480, /* March 25, 2009 (aka 3320784000) */ + kHFSUnusedNodesFixExpandedDate = 0x49c97400 /* March 25, 2009 (akai 1237939200) - BSD epoch-relative */ }; /* HFS Master Directory Block - 162 bytes */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/i386/_endian.h b/Frameworks/Kernel.framework/Versions/A/Headers/i386/_endian.h new file mode 100644 index 00000000..eec8410e --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/i386/_endian.h @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2004, 2006, 2023 Apple Computer, Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +/* + * Copyright (c) 1995 NeXT Computer, Inc. All rights reserved. + * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ +/* + * Copyright (c) 1987, 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _I386___ENDIAN_H_ +#define _I386___ENDIAN_H_ + +#if defined (__i386__) || defined (__x86_64__) + +#include + +#define __DARWIN_BYTE_ORDER __DARWIN_LITTLE_ENDIAN + + +#define BYTE_ORDER __DARWIN_BYTE_ORDER + +#endif /* defined (__i386__) || defined (__x86_64__) */ +#endif /* !_I386___ENDIAN_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/i386/_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/i386/_types.h index 317a4725..752d95c3 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/i386/_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/i386/_types.h @@ -30,6 +30,15 @@ #if defined (__i386__) || defined (__x86_64__) +#define USE_CLANG_TYPES 0 + +#if USE_CLANG_TYPES +#include +#include +#include +#include +#endif + /* * This header file contains integer types. It's intended to also contain * flotaing point and other arithmetic types, as needed, later. @@ -82,7 +91,9 @@ typedef union { typedef __mbstate_t __darwin_mbstate_t; /* mbstate_t */ -#if defined(__PTRDIFF_TYPE__) +#if USE_CLANG_TYPES +typedef ptrdiff_t __darwin_ptrdiff_t; /* ptr1 - ptr2 */ +#elif defined(__PTRDIFF_TYPE__) typedef __PTRDIFF_TYPE__ __darwin_ptrdiff_t; /* ptr1 - ptr2 */ #elif defined(__LP64__) typedef long __darwin_ptrdiff_t; /* ptr1 - ptr2 */ @@ -90,19 +101,25 @@ typedef long __darwin_ptrdiff_t; /* ptr1 - ptr2 */ typedef int __darwin_ptrdiff_t; /* ptr1 - ptr2 */ #endif /* __GNUC__ */ -#if defined(__SIZE_TYPE__) +#if USE_CLANG_TYPES +typedef size_t __darwin_size_t; /* sizeof() */ +#elif defined(__SIZE_TYPE__) typedef __SIZE_TYPE__ __darwin_size_t; /* sizeof() */ #else typedef unsigned long __darwin_size_t; /* sizeof() */ #endif -#if (__GNUC__ > 2) +#if USE_CLANG_TYPES +typedef va_list __darwin_va_list; /* va_list */ +#elif (__GNUC__ > 2) typedef __builtin_va_list __darwin_va_list; /* va_list */ #else typedef void * __darwin_va_list; /* va_list */ #endif -#if defined(__WCHAR_TYPE__) +#if USE_CLANG_TYPES +typedef wchar_t __darwin_wchar_t; /* wchar_t */ +#elif defined(__WCHAR_TYPE__) typedef __WCHAR_TYPE__ __darwin_wchar_t; /* wchar_t */ #else typedef __darwin_ct_rune_t __darwin_wchar_t; /* wchar_t */ @@ -121,6 +138,8 @@ typedef __uint32_t __darwin_socklen_t; /* socklen_t (duh) */ typedef long __darwin_ssize_t; /* byte count or error */ typedef long __darwin_time_t; /* time() */ +#undef USE_CLANG_TYPES + #endif /* defined (__i386__) || defined (__x86_64__) */ #endif /* _BSD_I386__TYPES_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/i386/cpuid.h b/Frameworks/Kernel.framework/Versions/A/Headers/i386/cpuid.h index f494ffb9..a6ba1a8c 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/i386/cpuid.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/i386/cpuid.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2020 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2024 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -488,7 +488,7 @@ typedef struct i386_cpu_info { uint64_t cpuid_leaf7_features; uint64_t cpuid_leaf7_extfeatures; cpuid_tsc_leaf_t cpuid_tsc_leaf; - cpuid_xsave_leaf_t cpuid_xsave_leaf[2]; + cpuid_xsave_leaf_t cpuid_xsave_leaf[8]; } i386_cpu_info_t; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h b/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h index ad001b75..9bec45b7 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2023 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -80,22 +80,6 @@ #define _QUAD_HIGHWORD 1 #define _QUAD_LOWWORD 0 -/* - * Definitions for byte order, according to byte significance from low - * address to high. - */ -#define __DARWIN_LITTLE_ENDIAN 1234 /* LSB first: i386, vax */ -#define __DARWIN_BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */ -#define __DARWIN_PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */ - -#define __DARWIN_BYTE_ORDER __DARWIN_LITTLE_ENDIAN - - -#define LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN -#define BIG_ENDIAN __DARWIN_BIG_ENDIAN -#define PDP_ENDIAN __DARWIN_PDP_ENDIAN - -#define BYTE_ORDER __DARWIN_BYTE_ORDER #include diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/i386/limits.h b/Frameworks/Kernel.framework/Versions/A/Headers/i386/limits.h index 502bd634..43d3a31a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/i386/limits.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/i386/limits.h @@ -41,6 +41,8 @@ #include #include +#define USE_CLANG_LIMITS 0 + #undef MB_LEN_MAX #define MB_LEN_MAX 6 /* Allow 31 bit UTF2 */ @@ -56,7 +58,7 @@ #include_next #endif /* __has_include_next */ -#else +#elif !USE_CLANG_LIMITS #define CHAR_BIT 8 /* number of bits in a char */ @@ -99,7 +101,7 @@ #define LLONG_MAX 0x7fffffffffffffffLL /* max signed long long */ #define LLONG_MIN (-0x7fffffffffffffffLL-1) /* min signed long long */ -#endif /* defined(__has_include) && __has_include(<__xnu_libcxx_sentinel.h>) */ +#endif /* !USE_CLANG_LIMITS */ #if !defined(_ANSI_SOURCE) #ifdef __LP64__ @@ -120,6 +122,8 @@ #endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE */ #endif /* !_ANSI_SOURCE */ +#undef USE_CLANG_LIMITS + #endif /* defined (__i386__) || defined (__x86_64__) */ #endif /* _I386_LIMITS_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/i386/machine_routines.h b/Frameworks/Kernel.framework/Versions/A/Headers/i386/machine_routines.h index de8bcaf5..c5261717 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/i386/machine_routines.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/i386/machine_routines.h @@ -51,6 +51,7 @@ boolean_t ml_get_interrupts_enabled(void); /* Set Interrupts Enabled */ boolean_t ml_set_interrupts_enabled(boolean_t enable); +#define ml_set_interrupts_enabled_with_debug(en, dbg) ml_set_interrupts_enabled(en); boolean_t ml_early_set_interrupts_enabled(boolean_t enable); /* Check if running at interrupt context */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/i386/trap.h b/Frameworks/Kernel.framework/Versions/A/Headers/i386/trap.h new file mode 100644 index 00000000..4ba68c66 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/i386/trap.h @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2000-2012 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ +/* + * @OSF_COPYRIGHT@ + */ +/* + * Mach Operating System + * Copyright (c) 1991,1990 Carnegie Mellon University + * All Rights Reserved. + * + * Permission to use, copy, modify and distribute this software and its + * documentation is hereby granted, provided that both the copyright + * notice and this permission notice appear in all copies of the + * software, derivative works or modified versions, and any portions + * thereof, and that both notices appear in supporting documentation. + * + * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" + * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR + * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + * + * Carnegie Mellon requests users of this software to return to + * + * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU + * School of Computer Science + * Carnegie Mellon University + * Pittsburgh PA 15213-3890 + * + * any improvements or extensions that they make and grant Carnegie Mellon + * the rights to redistribute these changes. + */ +/* + */ + +#ifndef _I386_TRAP_H_ +#define _I386_TRAP_H_ + +/* + * Hardware trap vectors for i386. + */ +#define T_DIVIDE_ERROR 0 +#define T_DEBUG 1 +#define T_NMI 2 /* non-maskable interrupt */ +#define T_INT3 3 /* int 3 instruction */ +#define T_OVERFLOW 4 /* overflow test */ +#define T_OUT_OF_BOUNDS 5 /* bounds check */ +#define T_INVALID_OPCODE 6 /* invalid op code */ +#define T_NO_FPU 7 /* no floating point */ +#define T_DOUBLE_FAULT 8 /* double fault */ +#define T_FPU_FAULT 9 +#define T_INVALID_TSS 10 +#define T_SEGMENT_NOT_PRESENT 11 +#define T_STACK_FAULT 12 +#define T_GENERAL_PROTECTION 13 +#define T_PAGE_FAULT 14 +/* 15 */ +#define T_FLOATING_POINT_ERROR 16 +#define T_WATCHPOINT 17 +#define T_MACHINE_CHECK 18 +#define T_SSE_FLOAT_ERROR 19 +/* 20-126 */ +#define T_DTRACE_RET 127 + +/* The SYSENTER and SYSCALL trap numbers are software constructs. + * These exceptions are dispatched directly to the system call handlers. + * See also the "software interrupt codes" section of + * osfmk/mach/i386/syscall_sw.h + */ +#define T_SYSENTER 0x84 +#define T_SYSCALL 0x85 + +#define T_PREEMPT 255 + +#define TRAP_NAMES "divide error", "debug trap", "NMI", "breakpoint", \ + "overflow", "bounds check", "invalid opcode", \ + "no coprocessor", "double fault", "coprocessor overrun", \ + "invalid TSS", "segment not present", "stack bounds", \ + "general protection", "page fault", "(reserved)", \ + "coprocessor error", "watchpoint", "machine check", "SSE floating point" + +/* + * Page-fault trap codes. + */ +#define T_PF_PROT 0x1 /* protection violation */ +#define T_PF_WRITE 0x2 /* write access */ +#define T_PF_USER 0x4 /* from user state */ + +#define T_PF_RSVD 0x8 /* reserved bit set to 1 */ +#define T_PF_EXECUTE 0x10 /* instruction fetch when NX */ + +#if !defined(ASSEMBLER) + +#define ML_TRAP_REGISTER_1 "rax" +#define ML_TRAP_REGISTER_2 "r10" +#define ML_TRAP_REGISTER_3 "r11" + +#define ml_recoverable_trap(code) \ + __asm__ volatile ("ud1l %0(%%eax), %%eax" : : "p"(code)) + +#define ml_fatal_trap(code) ({ \ + ml_recoverable_trap(code); \ + __builtin_unreachable(); \ +}) + +#endif /* !ASSEMBLER */ + +#endif /* _I386_TRAP_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/i386/types.h b/Frameworks/Kernel.framework/Versions/A/Headers/i386/types.h index 6d43cf2e..0639e9bf 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/i386/types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/i386/types.h @@ -104,6 +104,12 @@ typedef int64_t user_long_t; typedef u_int64_t user_ulong_t; typedef int64_t user_time_t; typedef int64_t user_off_t; + +#ifndef VM_UNSAFE_TYPES +typedef user_addr_t user_addr_ut; +typedef user_size_t user_size_ut; +#endif /* VM_SAFE_TYPES */ + #define USER_ADDR_NULL ((user_addr_t) 0) #define CAST_USER_ADDR_T(a_ptr) ((user_addr_t)((uintptr_t)(a_ptr))) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/assert.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/assert.h index 18ee7064..b4f983a7 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/assert.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/assert.h @@ -63,13 +63,12 @@ #include #include +#include __BEGIN_DECLS -/* Assert error */ -#if !CONFIG_NONFATAL_ASSERTS + __abortlike -#endif extern void Assert( const char *file, int line, @@ -88,12 +87,90 @@ __END_DECLS #define APPLE_KEXT_ASSERTIONS 0 #endif -#if MACH_ASSERT +__enum_decl(mach_assert_type_t, unsigned char, { + MACH_ASSERT_DEFAULT, + MACH_ASSERT_3P, + MACH_ASSERT_3S, + MACH_ASSERT_3U, +}); + +struct mach_assert_hdr { + mach_assert_type_t type; + unsigned lineno : 24; + const char *filename; +} __attribute__((packed, aligned(4))); + +struct mach_assert_default { + struct mach_assert_hdr hdr; + const char *expr; +} __attribute__((packed, aligned(4))); + +struct mach_assert_3x { + struct mach_assert_hdr hdr; + const char *a; + const char *op; + const char *b; +} __attribute__((packed, aligned(4))); -#define assert(ex) \ - (__builtin_expect(!!((ex)), 1L) ? (void)0 : Assert(__FILE_NAME__, __LINE__, # ex)) -#define assertf(ex, fmt, args...) \ - (__builtin_expect(!!((ex)), 1L) ? (void)0 : __Panic("%s:%d Assertion failed: %s : " fmt, __FILE_NAME__, __LINE__, # ex, ##args)) +#if MACH_ASSERT +# define mach_assert_enabled() 1 +#elif APPLE_KEXT_ASSERTIONS +# define mach_assert_enabled() __builtin_expect(kext_assertions_enable, 0L) +#else /* !MACH_ASSERT && !APPLE_KEXT_ASSERTIONS */ +# define mach_assert_enabled() 0 +#endif /* !MACH_ASSERT && !APPLE_KEXT_ASSERTIONS */ + +#define MACH_ASSERT_TRAP_CODE 0xbffc /* XNU_HARD_TRAP_ASSERT_FAILURE */ +#define MACH_ASSERT_SEGSECT "__DATA_CONST,__assert" + +/*! + * @abstract + * Wrap any arbitrary expression/code behind a conditional + * on whether assertions are enabled. + */ +#define MACH_ASSERT_DO(...) ({ \ + if (mach_assert_enabled()) { \ + __VA_ARGS__; \ + } \ +}) + +#define mach_assert_abort(reason) ({ \ + __attribute__((used, section(MACH_ASSERT_SEGSECT))) \ + static const struct mach_assert_default __desc = { \ + { MACH_ASSERT_DEFAULT, __LINE__, __FILE_NAME__, }, \ + reason, \ + }; \ + \ + ml_fatal_trap_with_value(MACH_ASSERT_TRAP_CODE, &__desc); \ +}) + +/*! + * @abstract + * assert() that is never elided or removed even in release builds. + */ +#define release_assert(ex) ({ \ + if (__builtin_expect(!(ex), 0L)) { \ + mach_assert_abort(#ex); \ + } \ +}) + +#if MACH_ASSERT || APPLE_KEXT_ASSERTIONS + +#define __assert_only + +#define mach_assert_enabled_expr(ex) \ + (mach_assert_enabled() || __builtin_constant_p(!(ex))) + +#define assert(ex) \ + (mach_assert_enabled_expr(ex) && !(ex) \ + ? (void)mach_assert_abort(#ex) : (void)0) + +#define assertf(ex, fmt, args...) ({ \ + if (mach_assert_enabled_expr(ex) && __builtin_expect(!(ex), 0L)) { \ + __Panic("%s:%d Assertion failed: %s : " fmt, \ + __FILE_NAME__, __LINE__, # ex, ##args); \ + } \ +}) /* * Each of the following three macros takes three arguments instead of one for @@ -104,60 +181,74 @@ __END_DECLS * assert3u(a, >, b) -> file.c:124 Assertion failed: a > b (1 >= 10) * */ -#define assert3u(a, op, b) \ - do { \ - const unsigned long long a_ = (a); \ - const unsigned long long b_ = (b); \ - \ - if (__builtin_expect(!(a_ op b_), 0L)) { \ - __Panic("%s:%d Assertion failed: %s (0x%llx %s 0x%llx)", \ - __FILE_NAME__, __LINE__, #a " " #op " " #b, a_, #op, b_); \ - } \ - } while (0) - -#define assert3s(a, op, b) \ - do { \ - const signed long long a_ = (a); \ - const signed long long b_ = (b); \ - \ - if (__builtin_expect(!(a_ op b_), 0L)) { \ - __Panic("%s:%d Assertion failed: %s (0x%llx %s 0x%llx)", \ - __FILE_NAME__, __LINE__, #a " " #op " " #b, a_, #op, b_); \ - } \ - } while (0) - -#define assert3p(a, op, b) \ - do { \ - const void *a_ = (a); \ - const void *b_ = (b); \ - \ - if (__builtin_expect(!(a_ op b_), 0L)) { \ - __Panic("%s:%d Assertion failed: %s (0x%p %s 0x%p)", \ - __FILE_NAME__, __LINE__, #a " " #op " " #b, a_, #op, b_); \ - } \ - } while (0) +#define assert3u(a, op, b) ({ \ + if (mach_assert_enabled_expr((unsigned long long)(a) op \ + (unsigned long long)(b))) { \ + const unsigned long long a_ = (a); \ + const unsigned long long b_ = (b); \ + \ + if (__builtin_expect(!(a_ op b_), 0L)) { \ + __attribute__((used, section(MACH_ASSERT_SEGSECT))) \ + static const struct mach_assert_3x __desc3u = { \ + { MACH_ASSERT_3U, __LINE__, __FILE_NAME__, }, \ + #a, #op, #b, \ + }; \ + \ + ml_fatal_trap_with_value3(MACH_ASSERT_TRAP_CODE, \ + &__desc3u, a_, b_); \ + } \ + } \ +}) -#define __assert_only +#define assert3s(a, op, b) ({ \ + if (mach_assert_enabled_expr((long long)(a) op ((long long)b))) { \ + const signed long long a_ = (a); \ + const signed long long b_ = (b); \ + \ + if (__builtin_expect(!(a_ op b_), 0L)) { \ + __attribute__((used, section(MACH_ASSERT_SEGSECT))) \ + static const struct mach_assert_3x __desc3s = { \ + { MACH_ASSERT_3S, __LINE__, __FILE_NAME__, }, \ + #a, #op, #b, \ + }; \ + \ + ml_fatal_trap_with_value3(MACH_ASSERT_TRAP_CODE, \ + &__desc3s, a_, b_); \ + } \ + } \ +}) -#elif APPLE_KEXT_ASSERTIONS && !XNU_KERNEL_PRIVATE /* MACH_ASSERT */ +#define assert3p(a, op, b) ({ \ + if (mach_assert_enabled_expr((const void *)(a) op (const void *)(b))) { \ + const void *a_ = (a); \ + const void *b_ = (b); \ + \ + if (__builtin_expect(!(a_ op b_), 0L)) { \ + __attribute__((used, section(MACH_ASSERT_SEGSECT))) \ + static const struct mach_assert_3x __desc3p = { \ + { MACH_ASSERT_3P, __LINE__, __FILE_NAME__, }, \ + #a, #op, #b, \ + }; \ + \ + ml_fatal_trap_with_value3(MACH_ASSERT_TRAP_CODE, \ + &__desc3p, a_, b_); \ + } \ + } \ +}) -#define assert(ex) \ - (__builtin_expect(!!(((!kext_assertions_enable) || (ex))), 1L) ? (void)0 : Assert(__FILE_NAME__, __LINE__, # ex)) -#define assertf(ex, fmt, args...) \ - (__builtin_expect(!!(((!kext_assertions_enable) || (ex))), 1L) ? (void)0 : __Panic("%s:%d Assertion failed: %s : " fmt, __FILE_NAME__, __LINE__, # ex, ##args)) -#define __assert_only +#else /* !MACH_ASSERT && !XNU_KERNEL_PRIVATE */ -#else /* APPLE_KEXT_ASSERTIONS && !XNU_KERNEL_PRIVATE */ +#define __assert_only __unused +#define mach_assert_enabled_expr(ex) 0 -#define assert(ex) ((void)0) -#define assertf(ex, fmt, args...) ((void)0) -#define __assert_only __unused +#define assert(ex) ((void)0) +#define assertf(ex, fmt, args...) ((void)0) -#define assert3s(a, op, b) ((void)0) -#define assert3u(a, op, b) ((void)0) -#define assert3p(a, op, b) ((void)0) +#define assert3s(a, op, b) ((void)0) +#define assert3u(a, op, b) ((void)0) +#define assert3p(a, op, b) ((void)0) -#endif /* MACH_ASSERT */ +#endif /* !MACH_ASSERT && !XNU_KERNEL_PRIVATE */ /* * static_assert is a C11 / C++0x / C++1z feature. diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/bits.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/bits.h index 1606d30c..eb0413a3 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/bits.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/bits.h @@ -36,6 +36,7 @@ #include #include #include +#include #ifndef __DARWIN_UINT typedef unsigned int uint; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/block_hint.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/block_hint.h index 04c70508..414ec9e2 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/block_hint.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/block_hint.h @@ -51,6 +51,17 @@ typedef enum thread_snapshot_wait_flags { kThreadWaitSleepWithInheritor = 0x12, kThreadWaitEventlink = 0x13, kThreadWaitCompressor = 0x14, + kThreadWaitParkedBoundWorkQueue = 0x15, + kThreadWaitPageBusy = 0x16, + kThreadWaitPagerInit = 0x17, + kThreadWaitPagerReady = 0x18, + kThreadWaitPagingActivity = 0x19, + kThreadWaitMappingInProgress = 0x1a, + kThreadWaitMemoryBlocked = 0x1b, + kThreadWaitPagingInProgress = 0x1c, + kThreadWaitPageInThrottle = 0x1d, + kThreadWaitExclaveCore = 0x1e, + kThreadWaitExclaveKit = 0x1f, } __attribute__((packed)) block_hint_t; _Static_assert(sizeof(block_hint_t) <= sizeof(short), diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/debug.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/debug.h index 17d144bb..6b714829 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/debug.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/debug.h @@ -31,6 +31,7 @@ #include +#include #include #include #include @@ -38,6 +39,7 @@ #include #include #include +#include #include @@ -237,12 +239,19 @@ struct _aot_cache_header { #endif /* CONFIG_X86_64_COMPAT */ enum micro_snapshot_flags { - kInterruptRecord = 0x1, - kTimerArmingRecord = 0x2, - kUserMode = 0x4, /* interrupted usermode, or armed by usermode */ - kIORecord = 0x8, + /* + * (Timer) interrupt records are no longer supported. + */ + kInterruptRecord = 0x01, + /* + * Timer arming records are no longer supported. + */ + kTimerArmingRecord = 0x02, + kUserMode = 0x04, /* interrupted usermode, or armed by usermode */ + kIORecord = 0x08, kPMIRecord = 0x10, kMACFRecord = 0x20, /* armed by MACF policy */ + kKernelThread = 0x40, /* sampled a kernel thread */ }; /* @@ -295,13 +304,41 @@ __options_decl(stackshot_flags_t, uint64_t, { STACKSHOT_DISABLE_LATENCY_INFO = 0x40000000, STACKSHOT_SAVE_DYLD_COMPACTINFO = 0x80000000, STACKSHOT_INCLUDE_DRIVER_THREADS_IN_KERNEL = 0x100000000, + + STACKSHOT_EXCLAVES = 0x200000000, + + STACKSHOT_SKIP_EXCLAVES = 0x400000000, }); // Note: Add any new flags to kcdata.py (stackshot_in_flags) __options_decl(microstackshot_flags_t, uint32_t, { - STACKSHOT_GET_MICROSTACKSHOT = 0x10, - STACKSHOT_GLOBAL_MICROSTACKSHOT_ENABLE = 0x20, - STACKSHOT_GLOBAL_MICROSTACKSHOT_DISABLE = 0x40, - STACKSHOT_SET_MICROSTACKSHOT_MARK = 0x80, + /* + * Collect and consume kernel thread microstackshots. + */ + STACKSHOT_GET_KERNEL_MICROSTACKSHOT = 0x0008, + /* + * Collect user thread microstackshots. + */ + STACKSHOT_GET_MICROSTACKSHOT = 0x0010, + /* + * Enable and disable are longer supported; use telemetry(2) instead. + */ + STACKSHOT_GLOBAL_MICROSTACKSHOT_ENABLE = 0x0020, + STACKSHOT_GLOBAL_MICROSTACKSHOT_DISABLE = 0x0040, + /* + * For user thread microstackshots, set a mark to consume the entries. + */ + STACKSHOT_SET_MICROSTACKSHOT_MARK = 0x0080, +}); + +__options_decl(telemetry_notice_t, uint32_t, { + /* + * User space microstackshots should be read. + */ + TELEMETRY_NOTICE_BASE = 0x00, + /* + * Kernel microstackshots should be read. + */ + TELEMETRY_NOTICE_KERNEL_MICROSTACKSHOT = 0x01, }); #define STACKSHOT_THREAD_SNAPSHOT_MAGIC 0xfeedface @@ -322,14 +359,32 @@ __options_closed_decl(kf_override_flag_t, uint32_t, { KF_IOTRACE_OVRD = 0x100, KF_INTERRUPT_MASKED_DEBUG_STACKSHOT_OVRD = 0x200, KF_SCHED_HYGIENE_DEBUG_PMC_OVRD = 0x400, - KF_RW_LOCK_DEBUG_OVRD = 0x800, + KF_MACH_ASSERT_OVRD = 0x800, KF_MADVISE_FREE_DEBUG_OVRD = 0x1000, KF_DISABLE_FP_POPC_ON_PGFLT = 0x2000, KF_DISABLE_PROD_TRC_VALIDATION = 0x4000, KF_IO_TIMEOUT_OVRD = 0x8000, KF_PREEMPTION_DISABLED_DEBUG_OVRD = 0x10000, + /* + * Disable panics (with retaining backtraces) on leaked proc refs across syscall boundary. + */ + KF_DISABLE_PROCREF_TRACKING_OVRD = 0x20000, }); +#define KF_SERVER_PERF_MODE_OVRD ( \ + KF_SERIAL_OVRD | \ + KF_PMAPV_OVRD | \ + KF_MATV_OVRD | \ + KF_COMPRSV_OVRD | \ + KF_INTERRUPT_MASKED_DEBUG_OVRD | \ + KF_TRAPTRACE_OVRD | \ + KF_IOTRACE_OVRD | \ + KF_SCHED_HYGIENE_DEBUG_PMC_OVRD | \ + KF_MACH_ASSERT_OVRD | \ + KF_MADVISE_FREE_DEBUG_OVRD | \ + KF_DISABLE_PROD_TRC_VALIDATION | \ + 0) + boolean_t kern_feature_override(kf_override_flag_t fmask); __options_decl(eph_panic_flags_t, uint64_t, { @@ -341,17 +396,22 @@ __options_decl(eph_panic_flags_t, uint64_t, { EMBEDDED_PANIC_HEADER_FLAG_STACKSHOT_FAILED_NESTED = 0x20, /* ERROR: stackshot caused a nested panic */ EMBEDDED_PANIC_HEADER_FLAG_NESTED_PANIC = 0x40, /* ERROR: panic handler encountered a panic */ EMBEDDED_PANIC_HEADER_FLAG_BUTTON_RESET_PANIC = 0x80, /* INFO: force-reset panic: user held power button to force shutdown */ - EMBEDDED_PANIC_HEADER_FLAG_COPROC_INITIATED_PANIC = 0x100, /* INFO: panic was triggered by a companion processor (not Xnu) */ + EMBEDDED_PANIC_HEADER_FLAG_COMPANION_PROC_INITIATED_PANIC = 0x100, /* INFO: panic was triggered by a companion processor (external to the SOC) */ EMBEDDED_PANIC_HEADER_FLAG_COREDUMP_FAILED = 0x200, /* ERROR: coredump failed to complete */ EMBEDDED_PANIC_HEADER_FLAG_COMPRESS_FAILED = 0x400, /* ERROR: stackshot failed to compress */ EMBEDDED_PANIC_HEADER_FLAG_STACKSHOT_DATA_COMPRESSED = 0x800, /* INFO: stackshot data is compressed */ EMBEDDED_PANIC_HEADER_FLAG_ENCRYPTED_COREDUMP_SKIPPED = 0x1000, /* ERROR: coredump policy requires encryption, but encryptions is not initialized or available */ EMBEDDED_PANIC_HEADER_FLAG_KERNEL_COREDUMP_SKIPPED_EXCLUDE_REGIONS_UNAVAILABLE = 0x2000, /* ERROR: coredump region exclusion list is not available */ EMBEDDED_PANIC_HEADER_FLAG_COREFILE_UNLINKED = 0x4000, /* ERROR: coredump output file is not linked */ - EMBEDDED_PANIC_HEADER_FLAG_INCOHERENT_PANICLOG = 0x8000 /* ERROR: paniclog integrity check failed (a warning to consumer code i.e. DumpPanic) */ + EMBEDDED_PANIC_HEADER_FLAG_INCOHERENT_PANICLOG = 0x8000, /* ERROR: paniclog integrity check failed (a warning to consumer code i.e. DumpPanic) */ + EMBEDDED_PANIC_HEADER_FLAG_EXCLAVE_PANIC = 0x10000, + EMBEDDED_PANIC_HEADER_FLAG_USERSPACE_INITIATED_PANIC = 0x20000, /* INFO: panic was initiated by userspace */ + EMBEDDED_PANIC_HEADER_FLAG_INTEGRATED_COPROC_INITIATED_PANIC = 0x40000, /* INFO: panic was initiated by an SOC-integrated coprocessor */ }); -#define EMBEDDED_PANIC_HEADER_CURRENT_VERSION 5 +#define MAX_PANIC_INITIATOR_SIZE 256 + +#define EMBEDDED_PANIC_HEADER_CURRENT_VERSION 6 #define EMBEDDED_PANIC_MAGIC 0x46554E4B /* FUNK */ #define EMBEDDED_PANIC_HEADER_OSVERSION_LEN 32 @@ -389,6 +449,8 @@ struct embedded_panic_header { uint64_t eph_roots_installed; /* bitmap indicating which roots are installed on this system */ uint32_t eph_ext_paniclog_offset; uint32_t eph_ext_paniclog_len; + uint32_t eph_panic_initiator_offset; + uint32_t eph_panic_initiator_len; } __attribute__((packed)); @@ -397,7 +459,7 @@ struct embedded_panic_header { __options_decl(mph_panic_flags_t, uint64_t, { MACOS_PANIC_HEADER_FLAG_NESTED_PANIC = 0x01, /* ERROR: panic handler encountered a panic */ - MACOS_PANIC_HEADER_FLAG_COPROC_INITIATED_PANIC = 0x02, /* INFO: panic was triggered by a companion processor (not Xnu) */ + MACOS_PANIC_HEADER_FLAG_COMPANION_PROC_INITIATED_PANIC = 0x02, /* INFO: panic was triggered by a companion processor (external to the SOC) */ MACOS_PANIC_HEADER_FLAG_STACKSHOT_SUCCEEDED = 0x04, /* INFO: stackshot completed */ MACOS_PANIC_HEADER_FLAG_STACKSHOT_DATA_COMPRESSED = 0x08, /* INFO: stackshot data is compressed */ MACOS_PANIC_HEADER_FLAG_STACKSHOT_FAILED_DEBUGGERSYNC = 0x10, /* ERROR: stackshot failed to sync with external debugger */ @@ -411,7 +473,9 @@ __options_decl(mph_panic_flags_t, uint64_t, { MACOS_PANIC_HEADER_FLAG_ENCRYPTED_COREDUMP_SKIPPED = 0x1000, /* ERROR: coredump policy requires encryption, but encryptions is not initialized or available */ MACOS_PANIC_HEADER_FLAG_KERNEL_COREDUMP_SKIPPED_EXCLUDE_REGIONS_UNAVAILABLE = 0x2000, /* ERROR: coredump region exclusion list is not available */ MACOS_PANIC_HEADER_FLAG_COREFILE_UNLINKED = 0x4000, /* ERROR: coredump output file is not linked */ - MACOS_PANIC_HEADER_FLAG_INCOHERENT_PANICLOG = 0x8000 /* ERROR: paniclog integrity check failed (a warning to consumer code i.e. DumpPanic) */ + MACOS_PANIC_HEADER_FLAG_INCOHERENT_PANICLOG = 0x8000, /* ERROR: paniclog integrity check failed (a warning to consumer code i.e. DumpPanic) */ + MACOS_PANIC_HEADER_FLAG_USERSPACE_INITIATED_PANIC = 0x10000, /* INFO: panic was initiated by userspace */ + MACOS_PANIC_HEADER_FLAG_INTEGRATED_COPROC_INITIATED_PANIC = 0x20000, /* INFO: panic was initiated by an SOC-integrated coprocessor */ }); struct macos_panic_header { @@ -468,11 +532,6 @@ struct efi_aurr_extended_panic_log { extern uint64_t ecc_panic_physical_address; -__abortlike __printflike(1, 2) -extern void panic(const char *string, ...); - - - __END_DECLS diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/ecc.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/ecc.h index 60d7849a..0c493334 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/ecc.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/ecc.h @@ -65,6 +65,8 @@ __options_decl(ecc_flags_t, uint32_t, { ECC_IS_TEST_ERROR = 0x00000004, /* Do not trigger a CA report, just record to the DB (for testing purposes) */ ECC_DB_ONLY = 0x00000008, + /* Filter out the given address from the DB*/ + ECC_REMOVE_ADDR = 0x00000010 }); /** diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/energy_perf.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/energy_perf.h index c9dd7b2a..2477d7f1 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/energy_perf.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/energy_perf.h @@ -35,8 +35,13 @@ #ifndef _KERN_ENERGY_PERF_H_ #define _KERN_ENERGY_PERF_H_ +#include + #include +#include +#include + __BEGIN_DECLS typedef struct { @@ -56,6 +61,8 @@ void gpu_describe(gpu_descriptor_t); /* GPU utilisation update for the current thread. */ uint64_t gpu_accumulate_time(uint32_t scope, uint32_t gpu_id, uint32_t gpu_domain, uint64_t gpu_accumulated_ns, uint64_t gpu_tstamp_ns); + + /* Interfaces for the block storage driver to advise the perf. controller of * recent IOs */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/exc_guard.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/exc_guard.h index 92b8db1b..72cb8bb6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/exc_guard.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/exc_guard.h @@ -71,13 +71,17 @@ * * code: * +-----------------------------+----------------+-----------------+ - * |[63:61] GUARD_TYPE_MACH_PORT | [60:32] flavor | [31:0] port name| + * |[63:61] GUARD_TYPE_MACH_PORT | [60:32] flavor | [31:0] target | * +-----------------------------+----------------+-----------------+ * * subcode: * +----------------------------------------------------------------+ - * |[63:0] guard identifier | + * |[63:0] payload | * +----------------------------------------------------------------+ + * + * - flavors are defined in + * - meaning of target and payload is described + * in doc/mach_ipc/guard_exceptions.md */ #define GUARD_TYPE_MACH_PORT 0x1 /* guarded mach port */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/ext_paniclog.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/ext_paniclog.h index 2849e2af..b8c2f6d3 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/ext_paniclog.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/ext_paniclog.h @@ -35,7 +35,7 @@ #define EXT_PANICLOG_ENABLE 1 -#define EXT_PANICLOG_VERSION 1 +#define EXT_PANICLOG_VERSION 2 #define MAX_DATA_ID_SIZE 32 @@ -56,5 +56,21 @@ #define EXTPANICLOG_ENTITLEMENT "com.apple.private.allow-ext_paniclog" +/* + * These flags are set internally and are passed along with each handle in + * the extensible paniclog to be processed by DumpPanic. + */ +OS_CLOSED_OPTIONS(ext_paniclog_flags, uint32_t, + EXT_PANICLOG_FLAGS_NONE = 0x0, + EXT_PANICLOG_FLAGS_ADD_SEPARATE_KEY = 0x1); + +OS_CLOSED_OPTIONS(ext_paniclog_create_options, uint32_t, + EXT_PANICLOG_OPTIONS_NONE = 0x0, + EXT_PANICLOG_OPTIONS_WITH_BUFFER = 0x1, + /* Adds the 'data ID' as a key and handle data as its value directly + * in the paniclog instead of within the 'ExtensiblePaniclog' field + */ + EXT_PANICLOG_OPTIONS_ADD_SEPARATE_KEY = 0x2); + #endif // _KERN_EXT_PANICLOG_H_ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/ipc_mig.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/ipc_mig.h index 46e7af76..06d8954c 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/ipc_mig.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/ipc_mig.h @@ -104,26 +104,28 @@ extern mach_msg_return_t mach_msg_send_from_kernel_proper( * * Mach message body (descriptor count) will be set after the builder accordingly. */ + extern mach_msg_return_t kernel_mach_msg_send_with_builder( mach_msg_size_t descriptor_count, mach_msg_size_t payload_size, /* Warning: NOT total send size */ - void (^builder)(mach_msg_header_t *header, - mach_msg_descriptor_t * __counted_by(descriptor_count)descs, /* Nullable */ - void * __sized_by(payload_size)payload)); /* Nullable */ + void (^builder)(mach_msg_header_t *header, + mach_msg_descriptor_t *__counted_by(descriptor_count)descs, /* Nullable */ + void *__sized_by(payload_size)payload)); /* Nullable */ + extern mach_msg_return_t mach_msg_rpc_from_kernel_proper( - mach_msg_header_t *msg, + mach_msg_header_t *msg, mach_msg_size_t send_size, mach_msg_size_t rcv_size); -#define mach_msg_rpc_from_kernel mach_msg_rpc_from_kernel_proper - extern void mach_msg_destroy_from_kernel_proper( - mach_msg_header_t *msg); + mach_msg_header_t *msg); +#define mach_msg_rpc_from_kernel mach_msg_rpc_from_kernel_proper #define mach_msg_destroy_from_kernel mach_msg_destroy_from_kernel_proper + __END_DECLS #endif /* _KERN_IPC_MIG_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/kcdata.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/kcdata.h index 76567eb7..b1f08b82 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/kcdata.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/kcdata.h @@ -71,14 +71,14 @@ * uint32_t quux; * } __attribute__ ((packed)); * - * Make it look like this: + * Define an evolved structure alongside it like this: * - * struct foobar { - * uint32_t baz; - * uint32_t quux; - * ///////// end version 1 of foobar. sizeof(struct foobar) was 8 //////// - * uint32_t frozzle; - * } __attribute__ ((packed)); + * struct foobar_v2 { + * uint32_t baz; + * uint32_t quux; + * ///////// This is where the original structure's layout ended! sizeof(struct foobar) was 8 //////// + * uint32_t frozzle; + * } __attribute__ ((packed)); * * If you are parsing kcdata formats, you MUST * @@ -126,7 +126,7 @@ * * * The type field describes what kind of data is passed. For example type = TASK_CRASHINFO_UUID means the following data is a uuid. - * These types need to be defined in task_corpses.h for easy consumption by userspace inspection tools. + * These types need to be defined in task_corpse.h for easy consumption by userspace inspection tools. * * Some range of types is reserved for special types like ints, longs etc. A cool new functionality made possible with this * extensible data format is that kernel can decide to put more information as required without requiring user space tools to @@ -223,7 +223,7 @@ * - kcdata_compression_window_open/close(kcdata_descriptor_t data) * In case the data you are trying to push to the kcdata buffer @data is difficult to predict, * you can open a "compression window". Between an open and a close, no compression will be done. - * Once you clsoe the window, the underlying compression algorithm will compress the data into the buffer + * Once you close the window, the underlying compression algorithm will compress the data into the buffer * and automatically rewind the current end marker of the kcdata buffer. * There is an ASCII art in kern_cdata.c to aid the reader in understanding * this. @@ -233,9 +233,6 @@ * This function will also add some statistics about the compression to the buffer which helps with * decompressing later. * - * Once you are done with the kcdata buffer, call kcdata_deinit_compress to - * free any buffers that may have been allocated internal to the compression - * algorithm. */ @@ -501,7 +498,7 @@ struct kcdata_type_definition { #define STACKSHOT_KCTYPE_USER_STACKFRAME 0x90Cu /* struct stack_snapshot_frame32 */ #define STACKSHOT_KCTYPE_USER_STACKFRAME64 0x90Du /* struct stack_snapshot_frame64 */ #define STACKSHOT_KCTYPE_BOOTARGS 0x90Eu /* boot args string */ -#define STACKSHOT_KCTYPE_OSVERSION 0x90Fu /* os version string */ +#define STACKSHOT_KCTYPE_OSVERSION 0x90Fu /* os version string, same as running uname -a */ #define STACKSHOT_KCTYPE_KERN_PAGE_SIZE 0x910u /* kernel page size in uint32_t */ #define STACKSHOT_KCTYPE_JETSAM_LEVEL 0x911u /* jetsam level in uint32_t */ #define STACKSHOT_KCTYPE_DELTA_SINCE_TIMESTAMP 0x912u /* timestamp used for the delta stackshot */ @@ -529,7 +526,7 @@ struct kcdata_type_definition { #define STACKSHOT_KCTYPE_THREAD_DISPATCH_QUEUE_LABEL 0x928u /* dispatch queue label */ #define STACKSHOT_KCTYPE_THREAD_TURNSTILEINFO 0x929u /* struct stackshot_thread_turnstileinfo */ #define STACKSHOT_KCTYPE_TASK_CPU_ARCHITECTURE 0x92au /* struct stackshot_cpu_architecture */ -#define STACKSHOT_KCTYPE_LATENCY_INFO 0x92bu /* struct stackshot_latency_collection */ +#define STACKSHOT_KCTYPE_LATENCY_INFO 0x92bu /* struct stackshot_latency_collection_v2 */ #define STACKSHOT_KCTYPE_LATENCY_INFO_TASK 0x92cu /* struct stackshot_latency_task */ #define STACKSHOT_KCTYPE_LATENCY_INFO_THREAD 0x92du /* struct stackshot_latency_thread */ #define STACKSHOT_KCTYPE_LOADINFO64_TEXT_EXEC 0x92eu /* TEXT_EXEC load info -- same as KCDATA_TYPE_LIBRARY_LOADINFO64 */ @@ -545,14 +542,29 @@ struct kcdata_type_definition { #define STACKSHOT_KCTYPE_SUSPENSION_INFO 0x938u /* struct stackshot_suspension_info */ #define STACKSHOT_KCTYPE_SUSPENSION_SOURCE 0x939u /* struct stackshot_suspension_source */ -#define STACKSHOT_KCTYPE_TASK_DELTA_SNAPSHOT 0x940u /* task_delta_snapshot_v2 */ +#define STACKSHOT_KCTYPE_TASK_DELTA_SNAPSHOT 0x940u /* task_delta_snapshot_v2 */ #define STACKSHOT_KCTYPE_THREAD_DELTA_SNAPSHOT 0x941u /* thread_delta_snapshot_v* */ #define STACKSHOT_KCCONTAINER_SHAREDCACHE 0x942u /* container for shared cache info */ #define STACKSHOT_KCTYPE_SHAREDCACHE_INFO 0x943u /* dyld_shared_cache_loadinfo_v2 */ #define STACKSHOT_KCTYPE_SHAREDCACHE_AOTINFO 0x944u /* struct dyld_aot_cache_uuid_info */ #define STACKSHOT_KCTYPE_SHAREDCACHE_ID 0x945u /* uint32_t in task: if we aren't attached to Primary, which one */ #define STACKSHOT_KCTYPE_CODESIGNING_INFO 0x946u /* struct stackshot_task_codesigning_info */ - +#define STACKSHOT_KCTYPE_OS_BUILD_VERSION 0x947u /* os build version string (ex: 20A123) */ +#define STACKSHOT_KCTYPE_KERN_EXCLAVES_THREADINFO 0x948u +#define STACKSHOT_KCCONTAINER_EXCLAVES 0x949u +#define STACKSHOT_KCCONTAINER_EXCLAVE_SCRESULT 0x94au +#define STACKSHOT_KCTYPE_EXCLAVE_SCRESULT_INFO 0x94bu +#define STACKSHOT_KCCONTAINER_EXCLAVE_IPCSTACKENTRY 0x94cu +#define STACKSHOT_KCTYPE_EXCLAVE_IPCSTACKENTRY_INFO 0x94du +#define STACKSHOT_KCTYPE_EXCLAVE_IPCSTACKENTRY_ECSTACK 0x94eu +#define STACKSHOT_KCCONTAINER_EXCLAVE_ADDRESSSPACE 0x94fu +#define STACKSHOT_KCTYPE_EXCLAVE_ADDRESSSPACE_INFO 0x950u +#define STACKSHOT_KCTYPE_EXCLAVE_ADDRESSSPACE_NAME 0x951u +#define STACKSHOT_KCCONTAINER_EXCLAVE_TEXTLAYOUT 0x952u +#define STACKSHOT_KCTYPE_EXCLAVE_TEXTLAYOUT_INFO 0x953u +#define STACKSHOT_KCTYPE_EXCLAVE_TEXTLAYOUT_SEGMENTS 0x954u +#define STACKSHOT_KCTYPE_KERN_EXCLAVES_CRASH_THREADINFO 0x955u +#define STACKSHOT_KCTYPE_LATENCY_INFO_CPU 0x956u /* struct stackshot_latency_cpu */ struct stack_snapshot_frame32 { uint32_t lr; @@ -654,41 +666,43 @@ struct user64_dyld_aot_info { enum task_snapshot_flags { /* k{User,Kernel}64_p (values 0x1 and 0x2) are defined in generic_snapshot_flags */ - kTaskRsrcFlagged = 0x4, // In the EXC_RESOURCE danger zone? - kTerminatedSnapshot = 0x8, - kPidSuspended = 0x10, // true for suspended task - kFrozen = 0x20, // true for hibernated task (along with pidsuspended) - kTaskDarwinBG = 0x40, - kTaskExtDarwinBG = 0x80, - kTaskVisVisible = 0x100, - kTaskVisNonvisible = 0x200, - kTaskIsForeground = 0x400, - kTaskIsBoosted = 0x800, - kTaskIsSuppressed = 0x1000, - kTaskIsTimerThrottled = 0x2000, /* deprecated */ - kTaskIsImpDonor = 0x4000, - kTaskIsLiveImpDonor = 0x8000, - kTaskIsDirty = 0x10000, - kTaskWqExceededConstrainedThreadLimit = 0x20000, - kTaskWqExceededTotalThreadLimit = 0x40000, - kTaskWqFlagsAvailable = 0x80000, - kTaskUUIDInfoFaultedIn = 0x100000, /* successfully faulted in some UUID info */ - kTaskUUIDInfoMissing = 0x200000, /* some UUID info was paged out */ - kTaskUUIDInfoTriedFault = 0x400000, /* tried to fault in UUID info */ - kTaskSharedRegionInfoUnavailable = 0x800000, /* shared region info unavailable */ - kTaskTALEngaged = 0x1000000, + kTaskRsrcFlagged = 0x4, // In the EXC_RESOURCE danger zone? + kTerminatedSnapshot = 0x8, + kPidSuspended = 0x10, // true for suspended task + kFrozen = 0x20, // true for hibernated task (along with pidsuspended) + kTaskDarwinBG = 0x40, + kTaskExtDarwinBG = 0x80, + kTaskVisVisible = 0x100, + kTaskVisNonvisible = 0x200, + kTaskIsForeground = 0x400, + kTaskIsBoosted = 0x800, + kTaskIsSuppressed = 0x1000, + kTaskIsTimerThrottled = 0x2000, /* deprecated */ + kTaskIsImpDonor = 0x4000, + kTaskIsLiveImpDonor = 0x8000, + kTaskIsDirty = 0x10000, + kTaskWqExceededConstrainedThreadLimit = 0x20000, + kTaskWqExceededTotalThreadLimit = 0x40000, + kTaskWqFlagsAvailable = 0x80000, + kTaskUUIDInfoFaultedIn = 0x100000, /* successfully faulted in some UUID info */ + kTaskUUIDInfoMissing = 0x200000, /* some UUID info was paged out */ + kTaskUUIDInfoTriedFault = 0x400000, /* tried to fault in UUID info */ + kTaskSharedRegionInfoUnavailable = 0x800000, /* shared region info unavailable */ + kTaskTALEngaged = 0x1000000, /* 0x2000000 unused */ - kTaskIsDirtyTracked = 0x4000000, - kTaskAllowIdleExit = 0x8000000, - kTaskIsTranslated = 0x10000000, - kTaskSharedRegionNone = 0x20000000, /* task doesn't have a shared region */ - kTaskSharedRegionSystem = 0x40000000, /* task attached to region with kSharedCacheSystemPrimary set */ - kTaskSharedRegionOther = 0x80000000, /* task is attached to a different shared region */ - kTaskDyldCompactInfoNone = 0x100000000, - kTaskDyldCompactInfoTooBig = 0x200000000, - kTaskDyldCompactInfoFaultedIn = 0x400000000, - kTaskDyldCompactInfoMissing = 0x800000000, - kTaskDyldCompactInfoTriedFault = 0x1000000000, + kTaskIsDirtyTracked = 0x4000000, + kTaskAllowIdleExit = 0x8000000, + kTaskIsTranslated = 0x10000000, + kTaskSharedRegionNone = 0x20000000, /* task doesn't have a shared region */ + kTaskSharedRegionSystem = 0x40000000, /* task attached to region with kSharedCacheSystemPrimary set */ + kTaskSharedRegionOther = 0x80000000, /* task is attached to a different shared region */ + kTaskDyldCompactInfoNone = 0x100000000, + kTaskDyldCompactInfoTooBig = 0x200000000, + kTaskDyldCompactInfoFaultedIn = 0x400000000, + kTaskDyldCompactInfoMissing = 0x800000000, + kTaskDyldCompactInfoTriedFault = 0x1000000000, + kTaskWqExceededCooperativeThreadLimit = 0x2000000000, + kTaskWqExceededActiveConstrainedThreadLimit = 0x4000000000, }; // Note: Add any new flags to kcdata.py (ts_ss_flags) enum task_transition_type { @@ -698,19 +712,19 @@ enum task_transition_type { enum thread_snapshot_flags { /* k{User,Kernel}64_p (values 0x1 and 0x2) are defined in generic_snapshot_flags */ kHasDispatchSerial = 0x4, - kStacksPCOnly = 0x8, /* Stack traces have no frame pointers. */ - kThreadDarwinBG = 0x10, /* Thread is darwinbg */ - kThreadIOPassive = 0x20, /* Thread uses passive IO */ - kThreadSuspended = 0x40, /* Thread is suspended */ - kThreadTruncatedBT = 0x80, /* Unmapped pages caused truncated backtrace */ - kGlobalForcedIdle = 0x100, /* Thread performs global forced idle */ - kThreadFaultedBT = 0x200, /* Some thread stack pages were faulted in as part of BT */ - kThreadTriedFaultBT = 0x400, /* We tried to fault in thread stack pages as part of BT */ - kThreadOnCore = 0x800, /* Thread was on-core when we entered debugger context */ - kThreadIdleWorker = 0x1000, /* Thread is an idle libpthread worker thread */ - kThreadMain = 0x2000, /* Thread is the main thread */ - kThreadTruncKernBT = 0x4000, /* Unmapped pages caused truncated kernel BT */ - kThreadTruncUserBT = 0x8000, /* Unmapped pages caused truncated user BT */ + kStacksPCOnly = 0x8, /* Stack traces have no frame pointers. */ + kThreadDarwinBG = 0x10, /* Thread is darwinbg */ + kThreadIOPassive = 0x20, /* Thread uses passive IO */ + kThreadSuspended = 0x40, /* Thread is suspended */ + kThreadTruncatedBT = 0x80, /* Unmapped pages caused truncated backtrace */ + kGlobalForcedIdle = 0x100, /* Thread performs global forced idle */ + kThreadFaultedBT = 0x200, /* Some thread stack pages were faulted in as part of BT */ + kThreadTriedFaultBT = 0x400, /* We tried to fault in thread stack pages as part of BT */ + kThreadOnCore = 0x800, /* Thread was on-core when we entered debugger context */ + kThreadIdleWorker = 0x1000, /* Thread is an idle libpthread worker thread */ + kThreadMain = 0x2000, /* Thread is the main thread */ + kThreadTruncKernBT = 0x4000, /* Unmapped pages caused truncated kernel BT */ + kThreadTruncUserBT = 0x8000, /* Unmapped pages caused truncated user BT */ kThreadTruncUserAsyncBT = 0x10000, /* Unmapped pages caused truncated user async BT */ }; // Note: Add any new flags to kcdata.py (ths_ss_flags) @@ -1090,6 +1104,39 @@ struct stackshot_latency_collection { uint64_t total_terminated_task_iteration_latency; } __attribute__((packed)); +/* only collected if STACKSHOT_COLLECTS_LATENCY_INFO is set to !0 */ +struct stackshot_latency_collection_v2 { + uint64_t latency_version; + uint64_t setup_latency_mt; + uint64_t total_task_iteration_latency_mt; + uint64_t total_terminated_task_iteration_latency_mt; + uint64_t task_queue_building_latency_mt; + uint64_t terminated_task_queue_building_latency_mt; + uint64_t cpu_wait_latency_mt; + int32_t main_cpu_number; + int32_t calling_cpu_number; + uint64_t buffer_size; + uint64_t buffer_used; + uint64_t buffer_overhead; + uint64_t buffer_count; +} __attribute__((packed)); + +/* only collected if STACKSHOT_COLLECTS_LATENCY_INFO is set to !0 */ +struct stackshot_latency_cpu { + int32_t cpu_number; + int32_t cluster_type; + uint64_t init_latency_mt; + uint64_t workqueue_latency_mt; + uint64_t total_latency_mt; + uint64_t total_cycles; + uint64_t total_instrs; + uint64_t tasks_processed; + uint64_t threads_processed; + uint64_t faulting_time_mt; + uint64_t total_buf; + uint64_t intercluster_buf_used; +} __attribute__((packed)); + /* only collected if STACKSHOT_COLLECTS_LATENCY_INFO is set to !0 */ struct stackshot_latency_task { uint64_t task_uniqueid; @@ -1132,6 +1179,89 @@ struct stackshot_suspension_source { char tss_procname[65]; /* name of suspending task */ } __attribute__((packed)); + + +enum thread_exclaves_flags : uint32_t { + kExclaveRPCActive = 0x1, /* Thread is handling RPC call in secure world */ + kExclaveUpcallActive = 0x2, /* Thread has upcalled back into xnu while handling RPC */ + kExclaveSchedulerRequest = 0x4, /* Thread is handling scheduler request */ +}; + +struct thread_exclaves_info { + uint64_t tei_scid; + uint32_t tei_thread_offset; + uint32_t tei_flags; +} __attribute__((packed)); + +struct thread_crash_exclaves_info { + uint64_t tcei_scid; + uint64_t tcei_thread_id; /* Corresponding xnu thread id */ + uint32_t tcei_flags; +} __attribute__((packed)); + +enum exclave_scresult_flags : uint64_t { + kExclaveScresultHaveIPCStack = 0x1, +}; + +struct exclave_scresult_info { + uint64_t esc_id; + uint64_t esc_flags; +} __attribute__((packed)); + +enum exclave_ipcstackentry_flags : uint64_t { + kExclaveIpcStackEntryHaveInvocationID = 0x1, + kExclaveIpcStackEntryHaveStack = 0x2, +}; + +struct exclave_ipcstackentry_info { + uint64_t eise_asid; /* ASID */ + uint64_t eise_tnid; /* Thread numeric ID, may be UINT64_MAX if ommitted */ + uint64_t eise_invocationid; /* Invocation ID, may be UINT64_MAX if ommitted */ + uint64_t eise_flags; +} __attribute__((packed)); + +typedef uint64_t exclave_ecstackentry_addr_t; + +enum exclave_addressspace_flags : uint64_t { + kExclaveAddressSpaceHaveSlide = 0x1, /* slide info provided */ +}; + +struct exclave_addressspace_info { + uint64_t eas_id; /* ASID */ + uint64_t eas_flags; + uint64_t eas_layoutid; /* textLayout for this address space */ + uint64_t eas_slide; /* slide to apply to textlayout, or UINT64_MAX if omitted */ + uint64_t eas_asroot; /* ASRoot/TTBR0 value used as an identifier for the address space by cL4 */ +} __attribute__((packed)); + +enum exclave_textlayout_flags : uint64_t { + kExclaveTextLayoutLoadAddressesSynthetic = 0x1, /* Load Addresses are synthetic */ + kExclaveTextLayoutLoadAddressesUnslid = 0x2, /* Load Addresses are accurate and unslid */ + kExclaveTextLayoutHasSharedCache = 0x4, +}; + +struct exclave_textlayout_info_v1 { + uint64_t layout_id; + uint64_t etl_flags; +} __attribute__((packed)); + +struct exclave_textlayout_info { + uint64_t layout_id; + uint64_t etl_flags; + uint32_t sharedcache_index; /* index in SEGMENTs, or UINT32_MAX */ +} __attribute__((packed)); + +struct exclave_textlayout_segment { + uuid_t layoutSegment_uuid; + uint64_t layoutSegment_loadAddress; /* Synthetic Load Address */ +} __attribute__((packed)); + +struct exclave_textlayout_segment_v2 { + uuid_t layoutSegment_uuid; + uint64_t layoutSegment_loadAddress; /* Synthetic Load Address */ + uint64_t layoutSegment_rawLoadAddress; /* Raw Load Address when unslided */ +} __attribute__((packed)); + /**************** definitions for crashinfo *********************/ /* @@ -1160,6 +1290,17 @@ struct kernel_triage_info_v1 { char triage_string5[MAX_TRIAGE_STRING_LEN]; } __attribute__((packed)); +struct crashinfo_jit_address_range { + uint64_t start_address; + uint64_t end_address; +} __attribute__((packed)); + +struct crashinfo_mb { + uint64_t start_address; + uint64_t data[64]; +} __attribute__((packed)); + + #define MAX_CRASHINFO_SIGNING_ID_LEN 64 #define MAX_CRASHINFO_TEAM_ID_LEN 32 @@ -1235,6 +1376,9 @@ struct kernel_triage_info_v1 { #define TASK_CRASHINFO_CS_VALIDATION_CATEGORY 0x83D /* uint32_t */ #define TASK_CRASHINFO_CS_TRUST_LEVEL 0x83E /* uint32_t */ #define TASK_CRASHINFO_PROC_CPUTYPE 0x83F /* cpu_type_t */ +#define TASK_CRASHINFO_JIT_ADDRESS_RANGE 0x840 /* struct crashinfo_jit_address_range */ +#define TASK_CRASHINFO_MB 0x841 /* struct crashinfo_mb */ +#define TASK_CRASHINFO_CS_AUXILIARY_INFO 0x842 /* uint64_t */ #define TASK_CRASHINFO_END KCDATA_TYPE_BUFFER_END diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/kern_cdata.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/kern_cdata.h index 98984c81..69c890d6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/kern_cdata.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/kern_cdata.h @@ -36,7 +36,7 @@ * Do not use these macros! * * Instead, you should use kcdata_iter_* functions defined in kcdata.h. These - * macoros have no idea where the kcdata buffer ends, so they are all unsafe. + * macros have no idea where the kcdata buffer ends, so they are all unsafe. */ #define KCDATA_ITEM_HEADER_SIZE (sizeof(uint32_t) + sizeof(uint32_t) + sizeof(uint64_t)) #define KCDATA_ITEM_ITER(item) kcdata_iter_unsafe((void*)(item)) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/kpc.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/kpc.h index 08b2f7a6..ea7d4783 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/kpc.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/kpc.h @@ -31,11 +31,13 @@ /* Kernel interfaces to KPC PMC infrastructure. */ -#include #include /* thread_* */ +#include __BEGIN_DECLS +typedef uint64_t kpc_config_t; + /* cross-platform class constants */ #define KPC_CLASS_FIXED (0) #define KPC_CLASS_CONFIGURABLE (1) @@ -79,7 +81,7 @@ __BEGIN_DECLS typedef void (*kpc_pm_handler_t)(boolean_t); struct cpu_data; -extern boolean_t kpc_register_cpu(struct cpu_data *cpu_data); +extern void kpc_register_cpu(struct cpu_data *cpu_data); extern void kpc_unregister_cpu(struct cpu_data *cpu_data); extern bool kpc_supported; @@ -253,7 +255,7 @@ struct kpc_config_remote { uint32_t classes; kpc_config_t *configv; uint64_t pmc_mask; - bool allow_list; + bool secure; }; /* handler for mp operations */ @@ -313,23 +315,6 @@ extern uint8_t kpc_popcount(uint64_t value); /* for a set of classes, retrieve the configurable PMCs mask */ extern uint64_t kpc_get_configurable_pmc_mask(uint32_t classes); - -/* Interface for kexts to publish a kpc interface */ -struct kpc_driver { - uint32_t (*get_classes)(void); - uint32_t (*get_running)(void); - int (*set_running)(uint32_t classes); - int (*get_cpu_counters)(boolean_t all_cpus, uint32_t classes, - int *curcpu, uint64_t *buf); - int (*get_curthread_counters)(uint32_t *inoutcount, uint64_t *buf); - uint32_t (*get_counter_count)(uint32_t classes); - uint32_t (*get_config_count)(uint32_t classes); - int (*get_config)(uint32_t classes, kpc_config_t *current_config); - int (*set_config)(uint32_t classes, kpc_config_t *new_config); - int (*get_period)(uint32_t classes, uint64_t *period); - int (*set_period)(uint32_t classes, uint64_t *period); -}; - __END_DECLS -#endif /* !definde(KERN_KPC_H) */ +#endif /* !defined(KERN_KPC_H) */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/lock_group.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/lock_group.h index 5c67fc52..26be9c80 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/lock_group.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/lock_group.h @@ -28,6 +28,7 @@ #ifndef _KERN_LOCK_GROUP_H #define _KERN_LOCK_GROUP_H +#include #include #include diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/lock_mtx.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/lock_mtx.h index d0b3221e..039c49d7 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/lock_mtx.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/lock_mtx.h @@ -82,10 +82,10 @@ extern void lck_mtx_assert( unsigned int type); #if MACH_ASSERT -#define LCK_MTX_ASSERT(lck, type) lck_mtx_assert((lck),(type)) -#else /* MACH_ASSERT */ +#define LCK_MTX_ASSERT(lck, type) MACH_ASSERT_DO(lck_mtx_assert(lck, type)) +#else /* !MACH_ASSERT */ #define LCK_MTX_ASSERT(lck, type) -#endif /* MACH_ASSERT */ +#endif /* !MACH_ASSERT */ #if DEBUG #define LCK_MTX_ASSERT_DEBUG(lck, type) lck_mtx_assert((lck),(type)) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/locks.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/locks.h index 0897a8a8..20bb4170 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/locks.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/locks.h @@ -35,6 +35,7 @@ #include #include +#include #include #include #include @@ -95,10 +96,10 @@ extern wait_result_t lck_spin_sleep_deadline( #if MACH_ASSERT -#define LCK_SPIN_ASSERT(lck, type) lck_spin_assert((lck),(type)) -#else /* MACH_ASSERT */ +#define LCK_SPIN_ASSERT(lck, type) MACH_ASSERT_DO(lck_spin_assert(lck, type)) +#else /* !MACH_ASSERT */ #define LCK_SPIN_ASSERT(lck, type) -#endif /* MACH_ASSERT */ +#endif /* !MACH_ASSERT */ #if DEBUG #define LCK_SPIN_ASSERT_DEBUG(lck, type) lck_spin_assert((lck),(type)) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/monotonic.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/monotonic.h index 1040778e..91c06ba6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/monotonic.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/monotonic.h @@ -28,7 +28,7 @@ #ifndef KERN_MONOTONIC_H #define KERN_MONOTONIC_H -#if MONOTONIC +#if CONFIG_CPU_COUNTERS #include #include @@ -53,6 +53,6 @@ void mt_release_counters(void); __END_DECLS -#endif /* MONOTONIC */ +#endif /* CONFIG_CPU_COUNTERS */ #endif /* !defined(KERN_MONOTONIC_H) */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/panic_call.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/panic_call.h new file mode 100644 index 00000000..0796571a --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/panic_call.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2024 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#pragma once +#include +#include + +__BEGIN_DECLS + +__abortlike __printflike(1, 2) +extern void panic(const char *string, ...); + + +__END_DECLS diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/processor.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/processor.h index 782e0118..445a4354 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/processor.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/processor.h @@ -70,9 +70,12 @@ #include + __BEGIN_DECLS __ASSUME_PTR_ABI_SINGLE_BEGIN + + __ASSUME_PTR_ABI_SINGLE_END __END_DECLS #endif /* _KERN_PROCESSOR_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/queue.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/queue.h index 32af20ba..e16790d6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/queue.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/queue.h @@ -208,10 +208,10 @@ typedef struct queue_entry queue_head_t; typedef struct queue_entry queue_chain_t; typedef struct queue_entry *queue_entry_t; -#if defined(XNU_KERNEL_PRIVATE) || DRIVERKIT_FRAMEWORK_INCLUDE +#if defined(KERNEL_PRIVATE) || DRIVERKIT_FRAMEWORK_INCLUDE -__abortlike -extern void __queue_element_linkage_invalid(queue_entry_t e); +#define __queue_element_linkage_invalid(e) \ + __builtin_trap() static inline void __QUEUE_ELT_VALIDATE(queue_entry_t elt) @@ -221,6 +221,30 @@ __QUEUE_ELT_VALIDATE(queue_entry_t elt) } } +static inline queue_entry_t +__QUEUE_ELT_VALIDATE_NEXT(queue_entry_t elt) +{ + queue_entry_t __next = elt->next; + + if (__next->prev != elt) { + __queue_element_linkage_invalid(elt); + } + + return __next; +} + +static inline queue_entry_t +__QUEUE_ELT_VALIDATE_PREV(queue_entry_t elt) +{ + queue_entry_t __prev = elt->prev; + + if (__prev->next != elt) { + __queue_element_linkage_invalid(elt); + } + + return __prev; +} + static inline void __DEQUEUE_ELT_CLEANUP(queue_entry_t elt) { @@ -228,7 +252,10 @@ __DEQUEUE_ELT_CLEANUP(queue_entry_t elt) } #else #define __QUEUE_ELT_VALIDATE(elt) ((void)0) +#define __QUEUE_ELT_VALIDATE_NEXT(elt) ((elt)->next) +#define __QUEUE_ELT_VALIDATE_PREV(elt) ((elt)->prev) #define __DEQUEUE_ELT_CLEANUP(elt) ((void)0) +#define __queue_element_linkage_invalid(e) ((void)0) #endif /* !(XNU_KERNEL_PRIVATE || DRIVERKIT_FRAMEWORK_INCLUDE)*/ /* @@ -249,8 +276,7 @@ enqueue_head( { queue_entry_t old_head; - __QUEUE_ELT_VALIDATE((queue_entry_t)que); - old_head = que->next; + old_head = __QUEUE_ELT_VALIDATE_NEXT(que); elt->next = old_head; elt->prev = que; old_head->prev = elt; @@ -264,8 +290,7 @@ enqueue_tail( { queue_entry_t old_tail; - __QUEUE_ELT_VALIDATE((queue_entry_t)que); - old_tail = que->prev; + old_tail = __QUEUE_ELT_VALIDATE_PREV(que); elt->next = que; elt->prev = old_tail; old_tail->next = elt; @@ -331,8 +356,7 @@ insque( { queue_entry_t successor; - __QUEUE_ELT_VALIDATE(pred); - successor = pred->next; + successor = __QUEUE_ELT_VALIDATE_NEXT(pred); entry->next = successor; entry->prev = pred; successor->prev = entry; @@ -666,6 +690,57 @@ movqueue(queue_t _old, queue_t _new) * may be more than one chain. */ +/* check __prev->next == __elt */ +#define __QUEUE2_CHECK_NEXT(__fail, __elt, __prev, __head, type, field) \ +MACRO_BEGIN \ + if (__prev == __head) { \ + __fail |= __head->next != (queue_entry_t)__elt; \ + } else { \ + __fail |= ((type)(void *)__prev)->field.next != \ + (queue_entry_t)__elt; \ + } \ +MACRO_END + +/* check __next->prev == __elt */ +#define __QUEUE2_CHECK_PREV(__fail, __elt, __next, __head, type, field) \ +MACRO_BEGIN \ + if (__next == __head) { \ + __fail |= __head->prev != (queue_entry_t)__elt; \ + } else { \ + __fail |= ((type)(void *)__next)->field.prev != \ + (queue_entry_t)__elt; \ + } \ +MACRO_END + +#define __QUEUE2_CHECK_FAIL(__fail, __elt) \ +MACRO_BEGIN \ + if (__improbable(__fail)) { \ + __queue_element_linkage_invalid(__elt); \ + } \ +MACRO_END + +/* sets __prev->next to __elt */ +#define __QUEUE2_SET_NEXT(__prev, __elt, __head, type, field) \ +MACRO_BEGIN \ + if (__head == __prev) { \ + __head->next = (queue_entry_t)__elt; \ + } else { \ + ((type)(void *)__prev)->field.next = (queue_entry_t)__elt; \ + } \ +MACRO_END + +/* sets __next->prev to __elt */ +#define __QUEUE2_SET_PREV(__next, __elt, __head, type, field) \ +MACRO_BEGIN \ + if (__head == __next) { \ + __head->prev = (queue_entry_t)__elt; \ + } else { \ + ((type)(void *)__next)->field.prev = (queue_entry_t)__elt; \ + } \ +MACRO_END + + + /* * Macro: queue_enter * Function: @@ -688,22 +763,24 @@ movqueue(queue_t _old, queue_t _new) * could cause stackshot to trip over an inconsistent queue during * iteration. */ -#define queue_enter(head, elt, type, field) \ -MACRO_BEGIN \ - queue_entry_t __prev; \ - \ - __prev = (head)->prev; \ - (elt)->field.prev = __prev; \ - (elt)->field.next = head; \ - __compiler_barrier(); \ - if ((head) == __prev) { \ - (head)->next = (queue_entry_t) (elt); \ - } \ - else { \ - ((type)(void *)__prev)->field.next = \ - (queue_entry_t)(elt); \ - } \ - (head)->prev = (queue_entry_t) elt; \ +#define queue_enter(head, elt, type, field) \ +MACRO_BEGIN \ + queue_entry_t __head, __prev; \ + type __elt; \ + int __fail = 0; \ + \ + __elt = (elt); \ + __head = (head); \ + __prev = __head->prev; \ + \ + __QUEUE2_CHECK_NEXT(__fail, __head, __prev, __head, type, field); \ + __QUEUE2_CHECK_FAIL(__fail, __head); \ + \ + __elt->field.prev = __prev; \ + __elt->field.next = __head; \ + __compiler_barrier(); \ + __QUEUE2_SET_NEXT(__prev, __elt, __head, type, field); \ + __head->prev = (queue_entry_t)__elt; \ MACRO_END /* @@ -719,21 +796,24 @@ MACRO_END * Note: * This should only be used with Method 2 queue iteration (element chains) */ -#define queue_enter_first(head, elt, type, field) \ -MACRO_BEGIN \ - queue_entry_t __next; \ - \ - __next = (head)->next; \ - if ((head) == __next) { \ - (head)->prev = (queue_entry_t) (elt); \ - } \ - else { \ - ((type)(void *)__next)->field.prev = \ - (queue_entry_t)(elt); \ - } \ - (elt)->field.next = __next; \ - (elt)->field.prev = head; \ - (head)->next = (queue_entry_t) elt; \ +#define queue_enter_first(head, elt, type, field) \ +MACRO_BEGIN \ + queue_entry_t __head, __next; \ + type __elt; \ + int __fail = 0; \ + \ + __elt = (elt); \ + __head = (head); \ + __next = __head->next; \ + \ + __QUEUE2_CHECK_PREV(__fail, __head, __next, __head, type, field); \ + __QUEUE2_CHECK_FAIL(__fail, __head); \ + \ + __elt->field.next = __next; \ + __elt->field.prev = __head; \ + __compiler_barrier(); \ + __QUEUE2_SET_PREV(__next, __elt, __head, type, field); \ + __head->next = (queue_entry_t)__elt; \ MACRO_END /* @@ -750,34 +830,30 @@ MACRO_END * Note: * This should only be used with Method 2 queue iteration (element chains) */ -#define queue_insert_before(head, elt, cur, type, field) \ -MACRO_BEGIN \ - queue_entry_t __prev; \ - \ - if ((head) == (queue_entry_t)(cur)) { \ - (elt)->field.next = (head); \ - if ((head)->next == (head)) { /* only element */ \ - (elt)->field.prev = (head); \ - (head)->next = (queue_entry_t)(elt); \ - } else { /* last element */ \ - __prev = (elt)->field.prev = (head)->prev; \ - ((type)(void *)__prev)->field.next = \ - (queue_entry_t)(elt); \ - } \ - (head)->prev = (queue_entry_t)(elt); \ - } else { \ - (elt)->field.next = (queue_entry_t)(cur); \ - if ((head)->next == (queue_entry_t)(cur)) { \ - /* first element */ \ - (elt)->field.prev = (head); \ - (head)->next = (queue_entry_t)(elt); \ - } else { /* middle element */ \ - __prev = (elt)->field.prev = (cur)->field.prev; \ - ((type)(void *)__prev)->field.next = \ - (queue_entry_t)(elt); \ - } \ - (cur)->field.prev = (queue_entry_t)(elt); \ - } \ +#define queue_insert_before(head, elt, cur, type, field) \ +MACRO_BEGIN \ + queue_entry_t __head, __cur, __prev; \ + type __elt; \ + int __fail = 0; \ + \ + __elt = (elt); \ + __cur = (queue_entry_t)(cur); \ + __head = (head); \ + \ + if (__head == __cur) { \ + __prev = __head->prev; \ + } else { \ + __prev = ((type)(void *)__cur)->field.prev; \ + } \ + \ + __QUEUE2_CHECK_NEXT(__fail, __cur, __prev, __head, type, field); \ + __QUEUE2_CHECK_FAIL(__fail, __head); \ + \ + __elt->field.prev = __prev; \ + __elt->field.next = __cur; \ + __compiler_barrier(); \ + __QUEUE2_SET_NEXT(__prev, __elt, __head, type, field); \ + __QUEUE2_SET_PREV(__cur, __elt, __head, type, field); \ MACRO_END /* @@ -794,34 +870,30 @@ MACRO_END * Note: * This should only be used with Method 2 queue iteration (element chains) */ -#define queue_insert_after(head, elt, cur, type, field) \ -MACRO_BEGIN \ - queue_entry_t __next; \ - \ - if ((head) == (queue_entry_t)(cur)) { \ - (elt)->field.prev = (head); \ - if ((head)->next == (head)) { /* only element */ \ - (elt)->field.next = (head); \ - (head)->prev = (queue_entry_t)(elt); \ - } else { /* first element */ \ - __next = (elt)->field.next = (head)->next; \ - ((type)(void *)__next)->field.prev = \ - (queue_entry_t)(elt); \ - } \ - (head)->next = (queue_entry_t)(elt); \ - } else { \ - (elt)->field.prev = (queue_entry_t)(cur); \ - if ((head)->prev == (queue_entry_t)(cur)) { \ - /* last element */ \ - (elt)->field.next = (head); \ - (head)->prev = (queue_entry_t)(elt); \ - } else { /* middle element */ \ - __next = (elt)->field.next = (cur)->field.next; \ - ((type)(void *)__next)->field.prev = \ - (queue_entry_t)(elt); \ - } \ - (cur)->field.next = (queue_entry_t)(elt); \ - } \ +#define queue_insert_after(head, elt, cur, type, field) \ +MACRO_BEGIN \ + queue_entry_t __head, __cur, __next; \ + type __elt; \ + int __fail = 0; \ + \ + __elt = (elt); \ + __cur = (queue_entry_t)(cur); \ + __head = (head); \ + \ + if (__head == __cur) { \ + __next = __head->next; \ + } else { \ + __next = ((type)(void *)__cur)->field.next; \ + } \ + \ + __QUEUE2_CHECK_PREV(__fail, __cur, __next, __head, type, field); \ + __QUEUE2_CHECK_FAIL(__fail, __head); \ + \ + __elt->field.prev = __cur; \ + __elt->field.next = __next; \ + __compiler_barrier(); \ + __QUEUE2_SET_NEXT(__cur, __elt, __head, type, field); \ + __QUEUE2_SET_PREV(__next, __elt, __head, type, field); \ MACRO_END /* @@ -845,25 +917,26 @@ MACRO_END * Note: * This should only be used with Method 2 queue iteration (element chains) */ -#define queue_remove(head, elt, type, field) \ -MACRO_BEGIN \ - queue_entry_t __next, __prev; \ - \ - __next = (elt)->field.next; \ - __prev = (elt)->field.prev; \ - \ - if ((head) == __next) \ - (head)->prev = __prev; \ - else \ - ((type)(void *)__next)->field.prev = __prev; \ - \ - if ((head) == __prev) \ - (head)->next = __next; \ - else \ - ((type)(void *)__prev)->field.next = __next; \ - \ - (elt)->field.next = NULL; \ - (elt)->field.prev = NULL; \ +#define queue_remove(head, elt, type, field) \ +MACRO_BEGIN \ + queue_entry_t __head, __next, __prev; \ + type __elt; \ + int __fail = 0; \ + \ + __elt = (elt); \ + __head = (head); \ + __next = __elt->field.next; \ + __prev = __elt->field.prev; \ + \ + __QUEUE2_CHECK_PREV(__fail, __elt, __next, __head, type, field); \ + __QUEUE2_CHECK_NEXT(__fail, __elt, __prev, __head, type, field); \ + __QUEUE2_CHECK_FAIL(__fail, __head); \ + \ + __QUEUE2_SET_PREV(__next, __prev, __head, type, field); \ + __QUEUE2_SET_NEXT(__prev, __next, __head, type, field); \ + __compiler_barrier(); \ + __elt->field.next = NULL; \ + __elt->field.prev = NULL; \ MACRO_END /* @@ -879,19 +952,16 @@ MACRO_END */ #define queue_remove_first(head, entry, type, field) \ MACRO_BEGIN \ - queue_entry_t __next; \ - \ - (entry) = (type)(void *) ((head)->next); \ - __next = (entry)->field.next; \ + queue_entry_t __hd; \ + type __entry; \ \ - if ((head) == __next) \ - (head)->prev = (head); \ - else \ - ((type)(void *)(__next))->field.prev = (head); \ - (head)->next = __next; \ + __hd = (head); \ + __entry = (type)(void *)__hd->next; \ \ - (entry)->field.next = NULL; \ - (entry)->field.prev = NULL; \ + if ((queue_entry_t)__entry != __hd) { \ + queue_remove(__hd, __entry, type, field); \ + } \ + (entry) = __entry; \ MACRO_END /* @@ -907,19 +977,16 @@ MACRO_END */ #define queue_remove_last(head, entry, type, field) \ MACRO_BEGIN \ - queue_entry_t __prev; \ + queue_entry_t __hd; \ + type __entry; \ \ - (entry) = (type)(void *) ((head)->prev); \ - __prev = (entry)->field.prev; \ + __hd = (head); \ + __entry = (type)(void *)__hd->prev; \ \ - if ((head) == __prev) \ - (head)->next = (head); \ - else \ - ((type)(void *)(__prev))->field.next = (head); \ - (head)->prev = __prev; \ - \ - (entry)->field.next = NULL; \ - (entry)->field.prev = NULL; \ + if ((queue_entry_t)__entry != __hd) { \ + queue_remove(__hd, __entry, type, field); \ + } \ + (entry) = __entry; \ MACRO_END /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/sched_prim.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/sched_prim.h index e9085a5d..b5105dcf 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/sched_prim.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/sched_prim.h @@ -79,6 +79,7 @@ extern int thread_get_current_cpuid(void); + __BEGIN_DECLS @@ -133,6 +134,12 @@ extern kern_return_t thread_wakeup_prim( boolean_t one_thread, wait_result_t result); +/* Wake up up to given number of threads waiting on a particular event */ +extern kern_return_t thread_wakeup_nthreads_prim( + event_t event, + uint32_t nthreads, + wait_result_t result); + #define thread_wakeup(x) \ thread_wakeup_prim((x), FALSE, THREAD_AWAKENED) #define thread_wakeup_with_result(x, z) \ @@ -140,6 +147,11 @@ extern kern_return_t thread_wakeup_prim( #define thread_wakeup_one(x) \ thread_wakeup_prim((x), TRUE, THREAD_AWAKENED) +#define thread_wakeup_nthreads(x, nthreads) \ + thread_wakeup_nthreads_prim((x), (nthreads), THREAD_AWAKENED) +#define thread_wakeup_nthreads_with_result(x, nthreads, z) \ + thread_wakeup_nthreads_prim((x), (nthreads), (z)) + /* Wakeup the specified thread if it is waiting on this event */ extern kern_return_t thread_wakeup_thread(event_t event, thread_t thread); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/sfi.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/sfi.h index b2640bd7..4cddbcc1 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/sfi.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/sfi.h @@ -37,17 +37,6 @@ #include #include -extern void sfi_init(void); -extern sfi_class_id_t sfi_get_ledger_alias_for_class(sfi_class_id_t class_id); -extern int sfi_ledger_entry_add(ledger_template_t template, sfi_class_id_t class_id); - -kern_return_t sfi_set_window(uint64_t window_usecs); -kern_return_t sfi_window_cancel(void); -kern_return_t sfi_get_window(uint64_t *window_usecs); - -kern_return_t sfi_set_class_offtime(sfi_class_id_t class_id, uint64_t offtime_usecs); -kern_return_t sfi_class_offtime_cancel(sfi_class_id_t class_id); -kern_return_t sfi_get_class_offtime(sfi_class_id_t class_id, uint64_t *offtime_usecs); #endif /* _KERN_SFI_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/socd_client.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/socd_client.h index a6e2448c..7f157a63 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/socd_client.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/socd_client.h @@ -41,21 +41,32 @@ __BEGIN_DECLS +/* "stickiness" is an attribute in the debugid that means "dont overwrite this entry" */ +#define SOCD_TRACE_MODE_NONE 0x0 +#define SOCD_TRACE_MODE_STICKY_TRACEPOINT 0x1 + /* socd trace event id format within kdebug code */ -#define SOCD_TRACE_CLASS_MASK (0x3c00) -#define SOCD_TRACE_CLASS_SMASK (0xf) +#define SOCD_TRACE_MODE_MASK (0x3000) +#define SOCD_TRACE_MODE_SMASK (0x3) +#define SOCD_TRACE_MODE_OFFSET (12) + +#define SOCD_TRACE_CLASS_MASK (0x0c00) +#define SOCD_TRACE_CLASS_SMASK (0x3) #define SOCD_TRACE_CLASS_OFFSET (10) + #define SOCD_TRACE_CODE_MASK (0x3ff) #define SOCD_TRACE_CODE_SMASK (SOCD_TRACE_CODE_MASK) #define SOCD_TRACE_CODE_OFFSET (0) #define SOCD_TRACE_EXTRACT_EVENTID(debugid) (KDBG_EXTRACT_CODE(debugid)) +#define SOCD_TRACE_EXTRACT_MODE(debugid) ((SOCD_TRACE_EXTRACT_EVENTID(debugid) & SOCD_TRACE_MODE_MASK) >> SOCD_TRACE_MODE_OFFSET) #define SOCD_TRACE_EXTRACT_CLASS(debugid) ((SOCD_TRACE_EXTRACT_EVENTID(debugid) & SOCD_TRACE_CLASS_MASK) >> SOCD_TRACE_CLASS_OFFSET) #define SOCD_TRACE_EXTRACT_CODE(debugid) ((SOCD_TRACE_EXTRACT_EVENTID(debugid) & SOCD_TRACE_CODE_MASK) >> SOCD_TRACE_CODE_OFFSET) -/* Generate an eventid corresponding to Class, Code. */ -#define SOCD_TRACE_EVENTID(class, code) \ - (((unsigned)((class) & SOCD_TRACE_CLASS_SMASK) << SOCD_TRACE_CLASS_OFFSET) | \ +/* Generate an eventid corresponding to Mode, Class, Code. */ +#define SOCD_TRACE_EVENTID(class, mode, code) \ + (((unsigned)((mode) & SOCD_TRACE_MODE_SMASK) << SOCD_TRACE_MODE_OFFSET) | \ + ((unsigned)((class) & SOCD_TRACE_CLASS_SMASK) << SOCD_TRACE_CLASS_OFFSET) | \ ((unsigned)((code) & SOCD_TRACE_CODE_SMASK) << SOCD_TRACE_CODE_OFFSET)) /* SOCD_TRACE_GEN_STR is used by socd parser to symbolicate trace classes & codes */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/task.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/task.h index a0cd1a9e..aafdd4af 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/task.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/task.h @@ -151,6 +151,11 @@ extern void task_suspension_token_deallocate( extern boolean_t task_self_region_footprint(void); extern void task_self_region_footprint_set(boolean_t newval); + +/* VM_REGION_INFO_FLAGS defined in vm_region.h */ +extern int task_self_region_info_flags(void); +extern kern_return_t task_self_region_info_flags_set(int newval); + extern void task_ledgers_footprint(ledger_t ledger, ledger_amount_t *ledger_resident, ledger_amount_t *ledger_compressed); @@ -172,11 +177,43 @@ extern int task_get_no_footprint_for_debug( extern bool task_is_translated(task_t task); #endif +#if HAS_MTE || HAS_MTE_EMULATION_SHIMS +/* These need full functions so they are callable in bsd/ */ +extern bool task_has_sec_inherit(task_t task); +extern void task_set_sec_inherit(task_t task); +extern void task_clear_sec_inherit(task_t task); + +extern bool task_has_sec_enabled(task_t task); +extern bool current_task_has_sec_enabled(void); +extern void task_set_sec_enabled(task_t task); +extern void task_clear_sec_enabled(task_t task); +extern void task_set_sec_enable_support(task_t task); + +extern bool task_has_sec_never_check(task_t task); +extern void task_set_sec_never_check(task_t task); +extern void task_set_sec_never_check_support(task_t task); + +extern bool task_has_sec_vm_policy_bypass(task_t task); +extern void task_set_sec_vm_policy_bypass(task_t task); + +extern bool task_has_sec_tag_bypass(task_t task); +extern void task_set_sec_tag_bypass(task_t task); +#endif /* HAS_MTE || HAS_MTE_EMULATION_SHIMS */ + #if CONFIG_X86_64_COMPAT extern bool task_is_x86_64_compat(task_t task); #endif +#if HAS_MTE +/* Must be callable from IOKit as it sometimes has need to asynchronously + * terminate tasks. + */ +void task_set_ast_mach_exception_if_active_locked(task_t task); +#endif /* HAS_MTE */ + + + __END_DECLS #endif /* _KERN_TASK_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/telemetry.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/telemetry.h index 28e1f743..5619e0f5 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/telemetry.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/telemetry.h @@ -36,6 +36,9 @@ __BEGIN_DECLS +/* + * No longer supported. + */ #define TELEMETRY_CMD_TIMER_EVENT 1 #define TELEMETRY_CMD_VOUCHER_NAME 2 #define TELEMETRY_CMD_VOUCHER_STAIN TELEMETRY_CMD_VOUCHER_NAME diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/thread.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/thread.h index 6b4cd1f0..d301bedc 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/thread.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/thread.h @@ -126,6 +126,30 @@ extern void thread_set_thread_name(thread_t th, const char* name); extern thread_t current_thread(void) __pure2; +#if HAS_MTE +/*! @function current_thread_enter_iomd_faultable_access_with_buffer_provider + * @abstract Store context for a critical faultable region while accessing tagged memory. + * @discussion We have paths in which the kernel is holding a tagged mapping which + * has a true share with userspace. Therefore, userspace can induce the kernel + * to take a TCF by changing the tag after handing the memory to the kernel. + * To deal with this, we enter a critical region while accessing this sort of + * memory, during which we'll recognize the fault as being 'caused by' the + * userspace task. + * @param provider The task to whom tag mismatches should be attributed. + */ +void current_thread_enter_iomd_faultable_access_with_buffer_provider(task_t provider); +/*! @function current_thread_exit_iomd_faultable_access + * @abstract Exit a critical region of accessing uncontrolled tagged memory. + * @discussion See current_thread_enter_iomd_faultable_access_with_buffer_provider + */ +void current_thread_exit_iomd_faultable_access(void); +/*! @function current_thread_get_iomd_faultable_access_buffer_provider + * @abstract Retrieve the task pointer storing the current faultable buffer provider. + * @discussion See current_thread_enter_iomd_faultable_access_with_buffer_provider + */ +task_t current_thread_get_iomd_faultable_access_buffer_provider(void); +#endif /* HAS_MTE */ + extern uint64_t thread_tid(thread_t thread) __pure2; extern void thread_reference( diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/thread_group.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/thread_group.h index c8f0a94c..77b4ac37 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/thread_group.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/thread_group.h @@ -41,6 +41,8 @@ struct thread_group; #endif #if CONFIG_THREAD_GROUPS + + #include #include #include @@ -73,6 +75,7 @@ struct thread_group; #define THREAD_GROUP_FLAGS_MANAGED 0x200 #define THREAD_GROUP_FLAGS_STRICT_TIMERS 0x400 #define THREAD_GROUP_FLAGS_GAME_MODE 0x800 +#define THREAD_GROUP_FLAGS_CARPLAY_MODE 0x1000 #define THREAD_GROUP_FLAGS_EXCLUSIVE ( \ @@ -92,7 +95,8 @@ static_assert( THREAD_GROUP_FLAGS_UI_APP | \ THREAD_GROUP_FLAGS_MANAGED | \ THREAD_GROUP_FLAGS_STRICT_TIMERS | \ - THREAD_GROUP_FLAGS_GAME_MODE ) + THREAD_GROUP_FLAGS_GAME_MODE | \ + THREAD_GROUP_FLAGS_CARPLAY_MODE) static_assert( (THREAD_GROUP_FLAGS_SHARED & THREAD_GROUP_EXCLUSIVE_FLAGS_MASK) == 0, diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/trap_telemetry.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/trap_telemetry.h new file mode 100644 index 00000000..5cd70f95 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/trap_telemetry.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2012-2024 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef _TRAP_TELEMETRY_H_ +#define _TRAP_TELEMETRY_H_ + +#include +#include +#include +#include +#include + +__BEGIN_DECLS + +__END_DECLS + +#endif /* _TRAP_TELEMETRY_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/kern/work_interval.h b/Frameworks/Kernel.framework/Versions/A/Headers/kern/work_interval.h index 958a2051..ec0176d6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/kern/work_interval.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/kern/work_interval.h @@ -75,6 +75,54 @@ kern_work_interval_create(thread_t thread, struct kern_work_interval_create_args extern kern_return_t kern_work_interval_get_flags_from_port(mach_port_name_t port_name, uint32_t*flags); +/* + * A private interface for kevent subsystem. + * Returns a +1 ref to the work_interval associated with a given port. + */ +extern kern_return_t +kern_port_name_to_work_interval(mach_port_name_t name, + struct work_interval **work_interval); + +/* + * A private interface for kevent subsystem. + * Returns following scheduling policies associated with a work interval, + * if available. + * : Priority + * : Scheduling policy/mode + */ +extern kern_return_t +kern_work_interval_get_policy(struct work_interval *work_interval, + integer_t *policy, + integer_t *priority); + +#if CONFIG_THREAD_GROUPS +/* + * A private interface for kevent subsystem. + * Returns a +1 ref on the backing thread group associated with a work interval, + * if available. + */ +extern kern_return_t +kern_work_interval_get_thread_group(struct work_interval *work_interval, + struct thread_group **tg); +#endif /* CONFIG_THREAD_GROUPS */ + +/* + * A private interface for kevent subsystem. + * Routine to release a ref count on the work interval. + * For more information, see work_interval_release. + */ +extern void +kern_work_interval_release(struct work_interval *work_interval); + +/* + * A private interface for workqueue subsystem. + * Routine to join a work interval specified in @work_interval argument. + * It takes +1 ref on the work interval and passes it to the thread as a part of + * join the work interval. Expects @thread to be the calling thread. + */ +extern kern_return_t +kern_work_interval_explicit_join(thread_t thread, struct work_interval *work_interval); + extern kern_return_t kern_work_interval_destroy(thread_t thread, uint64_t work_interval_id); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/Block.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/Block.h index 6272d40f..c514f9fe 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/Block.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/Block.h @@ -27,27 +27,22 @@ extern "C" { // Create a heap based copy of a Block or simply add a reference to an existing one. // This must be paired with Block_release to recover memory, even when running // under Objective-C Garbage Collection. -BLOCK_EXPORT void *_Block_copy(const void *aBlock) -__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +BLOCK_EXPORT void *_Block_copy(const void *aBlock); // Lose the reference, and if heap based and last reference, recover the memory -BLOCK_EXPORT void _Block_release(const void *aBlock) -__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +BLOCK_EXPORT void _Block_release(const void *aBlock); // Used by the compiler. Do not call this function yourself. -BLOCK_EXPORT void _Block_object_assign(void *, const void *, const int) -__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +BLOCK_EXPORT void _Block_object_assign(void *, const void *, const int); // Used by the compiler. Do not call this function yourself. -BLOCK_EXPORT void _Block_object_dispose(const void *, const int) -__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +BLOCK_EXPORT void _Block_object_dispose(const void *, const int); // Used by the compiler. Do not use these variables yourself. -BLOCK_EXPORT void * _NSConcreteGlobalBlock[32] -__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); -BLOCK_EXPORT void * _NSConcreteStackBlock[32] -__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +BLOCK_EXPORT void * _NSConcreteGlobalBlock[32]; + +BLOCK_EXPORT void * _NSConcreteStackBlock[32]; #if __cplusplus diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/_OSByteOrder.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/_OSByteOrder.h index db7419df..06232695 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/_OSByteOrder.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/_OSByteOrder.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2006-2023 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -29,14 +29,6 @@ #ifndef _OS__OSBYTEORDER_H #define _OS__OSBYTEORDER_H -/* - * This header is normally included from . However, - * also includes this in the case of little-endian - * architectures, so that we can map OSByteOrder routines to the hton* and ntoh* - * macros. This results in the asymmetry below; we only include - * for little-endian architectures. - */ - #include /* Macros for swapping constant values in the preprocessing stage. */ @@ -62,22 +54,12 @@ #if defined(__GNUC__) -#if !defined(__DARWIN_OS_INLINE) -# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -# define __DARWIN_OS_INLINE static inline -# elif defined(__MWERKS__) || defined(__cplusplus) -# define __DARWIN_OS_INLINE static inline -# else -# define __DARWIN_OS_INLINE static __inline__ -# endif -#endif - #if defined(__i386__) || defined(__x86_64__) #include #endif #if defined (__arm__) || defined(__arm64__) -#include +#include #endif @@ -94,28 +76,38 @@ #if defined(__i386__) || defined(__x86_64__) +#if !defined(__DARWIN_OS_INLINE) +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +# define __DARWIN_OS_INLINE static inline +# elif defined(__MWERKS__) || defined(__cplusplus) +# define __DARWIN_OS_INLINE static inline +# else +# define __DARWIN_OS_INLINE static __inline__ +# endif +#endif + __DARWIN_OS_INLINE -uint16_t +__uint16_t _OSSwapInt16( - uint16_t data + __uint16_t data ) { return __DARWIN_OSSwapConstInt16(data); } __DARWIN_OS_INLINE -uint32_t +__uint32_t _OSSwapInt32( - uint32_t data + __uint32_t data ) { return __DARWIN_OSSwapConstInt32(data); } __DARWIN_OS_INLINE -uint64_t +__uint64_t _OSSwapInt64( - uint64_t data + __uint64_t data ) { return __DARWIN_OSSwapConstInt64(data); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/arm/OSByteOrder.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/arm/OSByteOrder.h index 0cd44a57..4a6516a0 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/arm/OSByteOrder.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/arm/OSByteOrder.h @@ -1,64 +1,41 @@ /* - * Copyright (c) 1999-2007 Apple Inc. All rights reserved. + * Copyright (c) 1999-2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ #ifndef _OS_OSBYTEORDERARM_H #define _OS_OSBYTEORDERARM_H +#if defined (__arm__) || defined(__arm64__) + #include +#include +#include #include /* for _ARM_ARCH_6 */ -/* Generic byte swapping functions. */ - -__DARWIN_OS_INLINE -uint16_t -_OSSwapInt16( - uint16_t _data - ) -{ - /* Reduces to 'rev16' with clang */ - return (uint16_t)(_data << 8 | _data >> 8); -} - -__DARWIN_OS_INLINE -uint32_t -_OSSwapInt32( - uint32_t _data - ) -{ -#if defined(__llvm__) - _data = __builtin_bswap32(_data); -#else - /* This actually generates the best code */ - _data = (((_data ^ (_data >> 16 | (_data << 16))) & 0xFF00FFFF) >> 8) ^ (_data >> 8 | _data << 24); -#endif - - return _data; -} - -__DARWIN_OS_INLINE -uint64_t -_OSSwapInt64( - uint64_t _data - ) -{ -#if defined(__llvm__) - return __builtin_bswap64(_data); -#else - union { - uint64_t _ull; - uint32_t _ul[2]; - } _u; - - /* This actually generates the best code */ - _u._ul[0] = (uint32_t)(_data >> 32); - _u._ul[1] = (uint32_t)(_data & 0xffffffff); - _u._ul[0] = _OSSwapInt32(_u._ul[0]); - _u._ul[1] = _OSSwapInt32(_u._ul[1]); - return _u._ull; -#endif -} - /* Functions for byte reversed loads. */ struct _OSUnalignedU16 { @@ -74,7 +51,7 @@ struct _OSUnalignedU64 { } __attribute__((__packed__)); #if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) -__DARWIN_OS_INLINE +OS_INLINE uint16_t _OSReadSwapInt16( const volatile void * _base, @@ -84,7 +61,7 @@ _OSReadSwapInt16( return _OSSwapInt16(((struct _OSUnalignedU16 *)((uintptr_t)_base + _offset))->__val); } #else -__DARWIN_OS_INLINE +OS_INLINE uint16_t OSReadSwapInt16( const volatile void * _base, @@ -96,7 +73,7 @@ OSReadSwapInt16( #endif #if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) -__DARWIN_OS_INLINE +OS_INLINE uint32_t _OSReadSwapInt32( const volatile void * _base, @@ -106,7 +83,7 @@ _OSReadSwapInt32( return _OSSwapInt32(((struct _OSUnalignedU32 *)((uintptr_t)_base + _offset))->__val); } #else -__DARWIN_OS_INLINE +OS_INLINE uint32_t OSReadSwapInt32( const volatile void * _base, @@ -118,7 +95,7 @@ OSReadSwapInt32( #endif #if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) -__DARWIN_OS_INLINE +OS_INLINE uint64_t _OSReadSwapInt64( const volatile void * _base, @@ -128,7 +105,7 @@ _OSReadSwapInt64( return _OSSwapInt64(((struct _OSUnalignedU64 *)((uintptr_t)_base + _offset))->__val); } #else -__DARWIN_OS_INLINE +OS_INLINE uint64_t OSReadSwapInt64( const volatile void * _base, @@ -142,7 +119,7 @@ OSReadSwapInt64( /* Functions for byte reversed stores. */ #if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) -__DARWIN_OS_INLINE +OS_INLINE void _OSWriteSwapInt16( volatile void * _base, @@ -153,7 +130,7 @@ _OSWriteSwapInt16( ((struct _OSUnalignedU16 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt16(_data); } #else -__DARWIN_OS_INLINE +OS_INLINE void OSWriteSwapInt16( volatile void * _base, @@ -166,7 +143,7 @@ OSWriteSwapInt16( #endif #if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) -__DARWIN_OS_INLINE +OS_INLINE void _OSWriteSwapInt32( volatile void * _base, @@ -177,7 +154,7 @@ _OSWriteSwapInt32( ((struct _OSUnalignedU32 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt32(_data); } #else -__DARWIN_OS_INLINE +OS_INLINE void OSWriteSwapInt32( volatile void * _base, @@ -190,7 +167,7 @@ OSWriteSwapInt32( #endif #if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) -__DARWIN_OS_INLINE +OS_INLINE void _OSWriteSwapInt64( volatile void * _base, @@ -201,7 +178,7 @@ _OSWriteSwapInt64( ((struct _OSUnalignedU64 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt64(_data); } #else -__DARWIN_OS_INLINE +OS_INLINE void OSWriteSwapInt64( volatile void * _base, @@ -213,4 +190,6 @@ OSWriteSwapInt64( } #endif +#endif /* defined (__arm__) || defined(__arm64__) */ + #endif /* ! _OS_OSBYTEORDERARM_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/arm/_OSByteOrder.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/arm/_OSByteOrder.h new file mode 100644 index 00000000..ad760918 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/arm/_OSByteOrder.h @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef _OS__OSBYTEORDERARM_H +#define _OS__OSBYTEORDERARM_H + +#if defined (__arm__) || defined(__arm64__) + +#include + +#if !defined(__DARWIN_OS_INLINE) +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +# define __DARWIN_OS_INLINE static inline +# elif defined(__MWERKS__) || defined(__cplusplus) +# define __DARWIN_OS_INLINE static inline +# else +# define __DARWIN_OS_INLINE static __inline__ +# endif +#endif + +/* Generic byte swapping functions. */ + +__DARWIN_OS_INLINE +__uint16_t +_OSSwapInt16( + __uint16_t _data + ) +{ + /* Reduces to 'rev16' with clang */ + return (__uint16_t)(_data << 8 | _data >> 8); +} + +__DARWIN_OS_INLINE +__uint32_t +_OSSwapInt32( + __uint32_t _data + ) +{ +#if defined(__llvm__) + _data = __builtin_bswap32(_data); +#else + /* This actually generates the best code */ + _data = (((_data ^ (_data >> 16 | (_data << 16))) & 0xFF00FFFF) >> 8) ^ (_data >> 8 | _data << 24); +#endif + + return _data; +} + +__DARWIN_OS_INLINE +__uint64_t +_OSSwapInt64( + __uint64_t _data + ) +{ +#if defined(__llvm__) + return __builtin_bswap64(_data); +#else + union { + __uint64_t _ull; + __uint32_t _ul[2]; + } _u; + + /* This actually generates the best code */ + _u._ul[0] = (__uint32_t)(_data >> 32); + _u._ul[1] = (__uint32_t)(_data & 0xffffffff); + _u._ul[0] = _OSSwapInt32(_u._ul[0]); + _u._ul[1] = _OSSwapInt32(_u._ul[1]); + return _u._ull; +#endif +} + +#endif /* defined (__arm__) || defined(__arm64__) */ + +#endif /* ! _OS__OSBYTEORDERARM_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/c++/OSData.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/c++/OSData.h index 3cc73e1f..94dbadc4 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/c++/OSData.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/c++/OSData.h @@ -131,7 +131,7 @@ class OSData : public OSObject * (unlike @link //apple_ref/doc/uid/20001498 CFMutableData@/link, * for which a nonzero initial capacity is a hard limit). */ - static OSPtr withCapacity(unsigned int capacity); + static OSPtr withCapacity(unsigned int capacity __xnu_data_size); /*! @@ -156,7 +156,7 @@ class OSData : public OSObject */ static OSPtr withBytes( const void * bytes, - unsigned int numBytes); + unsigned int numBytes __xnu_data_size); @@ -269,7 +269,7 @@ class OSData : public OSObject * (unlike @link //apple_ref/doc/uid/20001498 CFMutableData@/link, * for which a nonzero initial capacity is a hard limit). */ - virtual bool initWithCapacity(unsigned int capacity); + virtual bool initWithCapacity(unsigned int capacity __xnu_data_size); /*! @@ -295,7 +295,7 @@ class OSData : public OSObject */ virtual bool initWithBytes( const void * bytes, - unsigned int numBytes); + unsigned int numBytes __xnu_data_size); @@ -538,7 +538,7 @@ class OSData : public OSObject */ virtual bool appendBytes( const void * bytes, - unsigned int numBytes); + unsigned int numBytes __xnu_data_size); @@ -584,6 +584,7 @@ class OSData : public OSObject * it may have to reallocate its internal storage, * rendering invalid an extrated pointer to that storage. */ + __xnu_returns_data_pointer virtual const void * getBytesNoCopy() const; @@ -613,6 +614,7 @@ class OSData : public OSObject * it may have to reallocate its internal storage, * rendering invalid an extrated pointer to that storage. */ + __xnu_returns_data_pointer virtual const void * getBytesNoCopy( unsigned int start, unsigned int numBytes) const; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/c++/OSKext.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/c++/OSKext.h index 212137e5..bc53f8f4 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/c++/OSKext.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/c++/OSKext.h @@ -410,6 +410,7 @@ class OSKext : public OSObject /* Sync with user space. */ static OSReturn pingIOKitDaemon(void); + static bool driverkitEnabled(void); /* Getting info about loaded kexts (kextstat). */ @@ -539,6 +540,11 @@ class OSKext : public OSObject unsigned int cnt, int (* printf_func)(const char *fmt, ...), uint32_t flags); + static void foreachKextInBacktrace( + vm_offset_t * addr, + uint32_t cnt, + uint32_t flags, + void (^ handler)(OSKextLoadedKextSummary *summary, uint32_t index)); bool isDriverKit(void); bool isInFileset(void); private: diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/copyio.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/copyio.h index b3fc5305..faa40847 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/copyio.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/copyio.h @@ -32,16 +32,16 @@ __BEGIN_DECLS -int copyin(const user_addr_t uaddr, void *kaddr, size_t len) OS_WARN_RESULT; -int copyout(const void *kaddr, user_addr_t udaddr, size_t len); +int copyin(const user_addr_t uaddr, void *__sized_by(len) kaddr, size_t len) OS_WARN_RESULT; +int copyout(const void *__sized_by(len) kaddr, user_addr_t udaddr, size_t len); #if defined (_FORTIFY_SOURCE) && _FORTIFY_SOURCE == 0 -/* FORTIFY_SOURCE disabled */ +/* FORTIFY_SOURCE disabled (it is assumed to be 1 if undefined) */ #else OS_ALWAYS_INLINE OS_WARN_RESULT static inline int -__copyin_chk(const user_addr_t uaddr, void *kaddr, size_t len, size_t chk_size) +__copyin_chk(const user_addr_t uaddr, void *__sized_by(len) kaddr, size_t len, size_t chk_size) { if (chk_size < len) { panic("__copyin_chk object size check failed: uaddr %p, kaddr %p, (%zu < %zu)", (void*)uaddr, kaddr, len, chk_size); @@ -50,7 +50,7 @@ __copyin_chk(const user_addr_t uaddr, void *kaddr, size_t len, size_t chk_size) } OS_ALWAYS_INLINE static inline int -__copyout_chk(const void *kaddr, user_addr_t uaddr, size_t len, size_t chk_size) +__copyout_chk(const void *__sized_by(len) kaddr, user_addr_t uaddr, size_t len, size_t chk_size) { if (chk_size < len) { panic("__copyout_chk object size check failed: uaddr %p, kaddr %p, (%zu < %zu)", (void*)uaddr, kaddr, len, chk_size); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/i386/OSByteOrder.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/i386/OSByteOrder.h index 84c632bb..9c2b1889 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/i386/OSByteOrder.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/i386/OSByteOrder.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999-2006 Apple Computer, Inc. All rights reserved. + * Copyright (c) 1999-2023 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -29,6 +29,8 @@ #ifndef _OS_OSBYTEORDERI386_H #define _OS_OSBYTEORDERI386_H +#if defined(__i386__) || defined(__x86_64__) + #include #include #include @@ -109,4 +111,6 @@ OSWriteSwapInt64( *(volatile uint64_t *)((uintptr_t)base + byteOffset) = _OSSwapInt64(data); } +#endif /* defined(__i386__) || defined(__x86_64__) */ + #endif /* ! _OS_OSBYTEORDERI386_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/i386/_OSByteOrder.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/i386/_OSByteOrder.h index e95c3975..8390b56a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/i386/_OSByteOrder.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/i386/_OSByteOrder.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2012 Apple Inc. All rights reserved. + * Copyright (c) 2006-2023 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -29,6 +29,10 @@ #ifndef _OS__OSBYTEORDERI386_H #define _OS__OSBYTEORDERI386_H +#if defined(__i386__) || defined(__x86_64__) + +#include + #if !defined(__DARWIN_OS_INLINE) # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L # define __DARWIN_OS_INLINE static inline @@ -101,4 +105,6 @@ _OSSwapInt64( #error Unknown architecture #endif +#endif /* defined(__i386__) || defined(__x86_64__) */ + #endif /* ! _OS__OSBYTEORDERI386_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/libkern.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/libkern.h index afc3a600..40ebcf1a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/libkern.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/libkern.h @@ -163,8 +163,21 @@ extern void url_decode(char *str); * couldn't fit in the supplied buffer. * Use scnprintf() if you need the actual number of bytes (minus the \0) */ -int snprintf(char *, size_t, const char *, ...) __printflike(3, 4); -int scnprintf(char *, size_t, const char *, ...) __printflike(3, 4); +int snprintf(char *__counted_by(count), size_t count, const char *, ...) __printflike(3, 4); +int scnprintf(char *__counted_by(count), size_t count, const char *, ...) __printflike(3, 4); + +/* + * Like (v)snprintf, but returns a __null_terminated pointer to `dst` (or NULL + * if `count` was 0). This can be used to "finalize" editing a char array and + * turn it into a NUL-terminated string when -fbounds-safety is enabled. + * Care must be taken to avoid aliasing the character data after the string + * has been finalized. + */ +const char * + tsnprintf(char *__counted_by(count) dst, size_t count, const char *fmt, ...) __printflike(3, 4); + +const char * + vtsnprintf(char *__counted_by(count) dst, size_t count, const char *fmt, va_list ap) __printflike(3, 0); /* sprintf() is being deprecated. Please use snprintf() instead. */ int sprintf(char *bufp, const char *, ...) __deprecated __printflike(2, 3); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/machine/OSByteOrder.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/machine/OSByteOrder.h index 6fd73143..3ae03362 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/machine/OSByteOrder.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/machine/OSByteOrder.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2023 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -29,6 +29,8 @@ #ifndef _OS_OSBYTEORDERMACHINE_H #define _OS_OSBYTEORDERMACHINE_H +#if !defined(__GNUC__) || (!defined(__i386__) && !defined(__x86_64__) && !defined (__arm__) && !defined(__arm64__)) + #include #if !defined(OS_INLINE) @@ -140,4 +142,6 @@ OSWriteSwapInt64( *(volatile uint64_t *)((uintptr_t)base + byteOffset) = _OSSwapInt64(data); } +#endif /* !defined(__GNUC__) || (!defined(__i386__) && !defined(__x86_64__) && !defined (__arm__) && !defined(__arm64__)) */ + #endif /* ! _OS_OSBYTEORDERMACHINE_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/sysctl.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/sysctl.h index 7951128e..caf56f8b 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/sysctl.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/sysctl.h @@ -58,13 +58,15 @@ __BEGIN_DECLS * In general is is better to use mach's or higher level timing services, but this value * is needed to convert the PPC Time Base registers to real time. * - * hw.cpufrequency - These values provide the current, min and max cpu frequency. The min and max are for - * hw.cpufrequency_max - all power management modes. The current frequency is the max frequency in the current mode. - * hw.cpufrequency_min - All frequencies are in Hz. + * hw.cpufrequency, hw.busfrequency and their min/max versions are deprecated because frequency isn't consistent. * - * hw.busfrequency - These values provide the current, min and max bus frequency. The min and max are for - * hw.busfrequency_max - all power management modes. The current frequency is the max frequency in the current mode. - * hw.busfrequency_min - All frequencies are in Hz. + * hw.cpufrequency - (deprecated) These values provide the current, min and max cpu frequency. The min and max are for + * hw.cpufrequency_max - (deprecated) all power management modes. The current frequency is the max frequency in the current mode. + * hw.cpufrequency_min - (deprecated) All frequencies are in Hz. + * + * hw.busfrequency - (deprecated) These values provide the current, min and max bus frequency. The min and max are for + * hw.busfrequency_max - (deprecated) all power management modes. The current frequency is the max frequency in the current mode. + * hw.busfrequency_min - (deprecated) All frequencies are in Hz. * * hw.cputype - These values provide the mach-o cpu type and subtype. A complete list is in * hw.cpusubtype - These values should be used to determine what processor family the running cpu is from so that diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/tree.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/tree.h index 00bc59ae..f728efcf 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/tree.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/tree.h @@ -56,6 +56,8 @@ #ifndef _LIBKERN_TREE_H_ #define _LIBKERN_TREE_H_ +#include + /* * This file defines data structures for different types of trees: * splay trees and red-black trees. @@ -454,37 +456,39 @@ _sc_ void name##_RB_SETCOLOR(struct type*,int) /* Main rb operation. * Moves node close to the key of elm to top */ -#define RB_GENERATE(name, type, field, cmp) \ -struct type *name##_RB_GETPARENT(struct type *elm) { \ - struct type *parent = _RB_PARENT(elm, field); \ - if( parent != NULL) { \ - parent = (struct type*)((uintptr_t)parent & ~RB_COLOR_MASK);\ - return( (struct type*) ( (parent == (struct type*) RB_PLACEHOLDER) ? NULL: parent));\ +#define RB_GENERATE(name, type, field, cmp) \ +struct type *name##_RB_GETPARENT(struct type *elm) { \ + struct type *__single parent = _RB_PARENT(elm, field); \ + if( parent == NULL || parent == (struct type*)RB_PLACEHOLDER) { \ + return __unsafe_forge_single(struct type*, NULL); \ } \ - return((struct type*)NULL); \ -} \ -int name##_RB_GETCOLOR(struct type *elm) { \ + return __unsafe_forge_single(struct type*, \ + (uintptr_t)parent & ~RB_COLOR_MASK); \ +} \ +int name##_RB_GETCOLOR(struct type *elm) { \ int color = 0; \ color = (int)((uintptr_t)_RB_PARENT(elm,field) & RB_COLOR_MASK);\ return(color); \ -} \ -void name##_RB_SETCOLOR(struct type *elm,int color) { \ - struct type *parent = name##_RB_GETPARENT(elm); \ - if(parent == (struct type*)NULL) \ +} \ +void name##_RB_SETCOLOR(struct type *elm,int color) { \ + struct type *__single parent = name##_RB_GETPARENT(elm); \ + if(parent == (struct type*)NULL) { \ parent = (struct type*) RB_PLACEHOLDER; \ - _RB_PARENT(elm, field) = (struct type*)((uintptr_t)parent | (unsigned int)color);\ -} \ + } \ + _RB_PARENT(elm, field) = __unsafe_forge_single(struct type*, \ + (uintptr_t)parent | (unsigned int)color); \ +} \ struct type *name##_RB_SETPARENT(struct type *elm, struct type *parent) { \ - int color = name##_RB_GETCOLOR(elm); \ + int color = name##_RB_GETCOLOR(elm); \ _RB_PARENT(elm, field) = parent; \ - if(color) name##_RB_SETCOLOR(elm, color); \ - return(name##_RB_GETPARENT(elm)); \ -} \ - \ -void \ -name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ -{ \ - struct type *parent, *gparent, *tmp; \ + if(color) name##_RB_SETCOLOR(elm, color); \ + return(name##_RB_GETPARENT(elm)); \ +} \ + \ +void \ +name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ +{ \ + struct type *__single parent, *__single gparent, *__single tmp; \ while ((parent = name##_RB_GETPARENT(elm)) != NULL && \ name##_RB_GETCOLOR(parent) == RB_RED) { \ gparent = name##_RB_GETPARENT(parent); \ @@ -528,7 +532,7 @@ name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ void \ name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \ { \ - struct type *tmp; \ + struct type *__single tmp; \ while ((elm == NULL || name##_RB_GETCOLOR(elm) == RB_BLACK) && \ elm != RB_ROOT(head)) { \ if (RB_LEFT(parent, field) == elm) { \ @@ -548,7 +552,7 @@ name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) } else { \ if (RB_RIGHT(tmp, field) == NULL || \ name##_RB_GETCOLOR(RB_RIGHT(tmp, field)) == RB_BLACK) {\ - struct type *oleft; \ + struct type *__single oleft; \ if ((oleft = RB_LEFT(tmp, field)) \ != NULL) \ name##_RB_SETCOLOR(oleft, RB_BLACK);\ @@ -581,7 +585,7 @@ name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) } else { \ if (RB_LEFT(tmp, field) == NULL || \ name##_RB_GETCOLOR(RB_LEFT(tmp, field)) == RB_BLACK) {\ - struct type *oright; \ + struct type *__single oright; \ if ((oright = RB_RIGHT(tmp, field)) \ != NULL) \ name##_RB_SETCOLOR(oright, RB_BLACK);\ @@ -606,14 +610,14 @@ name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) struct type * \ name##_RB_REMOVE(struct name *head, struct type *elm) \ { \ - struct type *child, *parent, *old = elm; \ + struct type *__single child, *__single parent, *__single old = elm; \ int color; \ if (RB_LEFT(elm, field) == NULL) \ child = RB_RIGHT(elm, field); \ else if (RB_RIGHT(elm, field) == NULL) \ child = RB_LEFT(elm, field); \ else { \ - struct type *left; \ + struct type *__single left; \ elm = RB_RIGHT(elm, field); \ while ((left = RB_LEFT(elm, field)) != NULL) \ elm = left; \ @@ -724,8 +728,8 @@ __attribute__((unused)) \ struct type * \ name##_RB_NFIND(struct name *head, struct type *elm) \ { \ - struct type *tmp = RB_ROOT(head); \ - struct type *res = NULL; \ + struct type *__single tmp = RB_ROOT(head); \ + struct type *__single res = NULL; \ int comp; \ while (tmp) { \ comp = cmp(elm, tmp); \ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/version.h b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/version.h index 147cada8..5cbabb3a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/libkern/version.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/libkern/version.h @@ -30,12 +30,12 @@ /* VERSION_MAJOR, version_major is an integer that represents that major version * of the kernel */ -#define VERSION_MAJOR 23 +#define VERSION_MAJOR 24 /* VERSION_MINOR, version_minor is an integer that represents the minor version * of the kernel */ -#define VERSION_MINOR 2 +#define VERSION_MINOR 4 /* VERSION_VARIANT, version_variant is a string that contains the revision, * stage, and prerelease level of the kernel @@ -61,13 +61,13 @@ /* OSBUILD_CONFIG, osbuild_config is a one-word string describing the build * configuration of the kernel, e.g., development or release */ -#define OSBUILD_CONFIG "development" +#define OSBUILD_CONFIG "release" /* OSTYPE, ostype, is a string as returned by uname -s */ #define OSTYPE "Darwin" /* OSRELEASE, osrelease, is a string as returned by uname -r */ -#define OSRELEASE "23.2.0" +#define OSRELEASE "24.4.0" #ifndef ASSEMBLER diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach-o/fixup-chains.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach-o/fixup-chains.h index ddd45b50..13e83897 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach-o/fixup-chains.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach-o/fixup-chains.h @@ -23,7 +23,7 @@ */ #ifndef __MACH_O_FIXUP_CHAINS__ -#define __MACH_O_FIXUP_CHAINS__ 5 +#define __MACH_O_FIXUP_CHAINS__ 6 #include @@ -101,6 +101,7 @@ enum { DYLD_CHAINED_PTR_ARM64E_FIRMWARE = 10, // stride 4, unauth target is vmaddr DYLD_CHAINED_PTR_X86_64_KERNEL_CACHE = 11, // stride 1, x86_64 kernel caches DYLD_CHAINED_PTR_ARM64E_USERLAND24 = 12, // stride 8, unauth target is vm offset, 24-bit bind + DYLD_CHAINED_PTR_ARM64E_SHARED_CACHE = 13, // stride 8, regular/auth targets both vm offsets. Only A keys supported }; @@ -160,6 +161,32 @@ struct dyld_chained_ptr_64_rebase bind : 1; // == 0 }; + +// DYLD_CHAINED_PTR_ARM64E_USERLAND24 +struct dyld_chained_ptr_arm64e_bind24 +{ + uint64_t ordinal : 24, + zero : 8, + addend : 19, // +/-256K + next : 11, // 8-byte stide + bind : 1, // == 1 + auth : 1; // == 0 +}; + +// DYLD_CHAINED_PTR_ARM64E_USERLAND24 +struct dyld_chained_ptr_arm64e_auth_bind24 +{ + uint64_t ordinal : 24, + zero : 8, + diversity : 16, + addrDiv : 1, + key : 2, + next : 11, // 8-byte stide + bind : 1, // == 1 + auth : 1; // == 1 +}; + + // DYLD_CHAINED_PTR_64 struct dyld_chained_ptr_64_bind { @@ -218,6 +245,27 @@ struct dyld_chained_ptr_32_firmware_rebase next : 6; // 4-byte stride }; +// DYLD_CHAINED_PTR_ARM64E_SHARED_CACHE +struct dyld_chained_ptr_arm64e_shared_cache_rebase +{ + uint64_t runtimeOffset : 34, // offset from the start of the shared cache + high8 : 8, + unused : 10, + next : 11, // 8-byte stide + auth : 1; // == 0 +}; + +// DYLD_CHAINED_PTR_ARM64E_SHARED_CACHE +struct dyld_chained_ptr_arm64e_shared_cache_auth_rebase +{ + uint64_t runtimeOffset : 34, // offset from the start of the shared cache + diversity : 16, + addrDiv : 1, + keyIsData : 1, // implicitly always the 'A' key. 0 -> IA. 1 -> DA + next : 11, // 8-byte stide + auth : 1; // == 1 +}; + // values for dyld_chained_fixups_header.imports_format @@ -230,7 +278,7 @@ enum { // DYLD_CHAINED_IMPORT struct dyld_chained_import { - uint32_t lib_ordinal : 8, + uint32_t lib_ordinal : 8, // -15 .. 240 (0xF1 .. 0xF0) weak_import : 1, name_offset : 23; }; @@ -238,7 +286,7 @@ struct dyld_chained_import // DYLD_CHAINED_IMPORT_ADDEND struct dyld_chained_import_addend { - uint32_t lib_ordinal : 8, + uint32_t lib_ordinal : 8, // -15 .. 240 (0xF1 .. 0xF0) weak_import : 1, name_offset : 23; int32_t addend; @@ -247,7 +295,7 @@ struct dyld_chained_import_addend // DYLD_CHAINED_IMPORT_ADDEND64 struct dyld_chained_import_addend64 { - uint64_t lib_ordinal : 16, + uint64_t lib_ordinal : 16, // -15 .. 65520 (0xFFF1 .. 0xFFF0) weak_import : 1, reserved : 15, name_offset : 32; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/_structs.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/_structs.h index 8ebc0185..03f49045 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/_structs.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/_structs.h @@ -62,6 +62,12 @@ _STRUCT_ARM_EXCEPTION_STATE64 __uint32_t __esr; /* Exception syndrome */ __uint32_t __exception; /* number of arm exception taken */ }; +#define _STRUCT_ARM_EXCEPTION_STATE64_V2 struct __darwin_arm_exception_state64_v2 +_STRUCT_ARM_EXCEPTION_STATE64_V2 +{ + __uint64_t __far; /* Virtual Fault Address */ + __uint64_t __esr; /* Exception syndrome */ +}; #else /* !__DARWIN_UNIX03 */ #define _STRUCT_ARM_EXCEPTION_STATE64 struct arm_exception_state64 _STRUCT_ARM_EXCEPTION_STATE64 @@ -70,6 +76,12 @@ _STRUCT_ARM_EXCEPTION_STATE64 __uint32_t esr; /* Exception syndrome */ __uint32_t exception; /* number of arm exception taken */ }; +#define _STRUCT_ARM_EXCEPTION_STATE64_V2 struct arm_exception_state64_v2 +_STRUCT_ARM_EXCEPTION_STATE64_V2 +{ + __uint64_t far; /* Virtual Fault Address */ + __uint64_t esr; /* Exception syndrome */ +}; #endif /* __DARWIN_UNIX03 */ #if __DARWIN_UNIX03 @@ -222,6 +234,72 @@ _STRUCT_ARM_PAGEIN_STATE int __pagein_error; }; +#if __DARWIN_UNIX03 +#define _STRUCT_ARM_SME_STATE struct __darwin_arm_sme_state +_STRUCT_ARM_SME_STATE +{ + __uint64_t __svcr; + __uint64_t __tpidr2_el0; + __uint16_t __svl_b; +}; + +#define _STRUCT_ARM_SVE_Z_STATE struct __darwin_arm_sve_z_state +_STRUCT_ARM_SVE_Z_STATE +{ + char __z[16][256]; +} __attribute__((aligned(_Alignof(unsigned int)))); + +#define _STRUCT_ARM_SVE_P_STATE struct __darwin_arm_sve_p_state +_STRUCT_ARM_SVE_P_STATE +{ + char __p[16][256 / 8]; +} __attribute__((aligned(_Alignof(unsigned int)))); + +#define _STRUCT_ARM_SME_ZA_STATE struct __darwin_arm_sme_za_state +_STRUCT_ARM_SME_ZA_STATE +{ + char __za[4096]; +} __attribute__((aligned(_Alignof(unsigned int)))); + +#define _STRUCT_ARM_SME2_STATE struct __darwin_arm_sme2_state +_STRUCT_ARM_SME2_STATE +{ + char __zt0[64]; +} __attribute__((aligned(_Alignof(unsigned int)))); +#else /* !__DARWIN_UNIX03 */ +#define _STRUCT_ARM_SME_STATE struct arm_sme_state +_STRUCT_ARM_SME_STATE +{ + __uint64_t svcr; + __uint64_t tpidr2_el0; + __uint16_t svl_b; +}; + +#define _STRUCT_ARM_SVE_Z_STATE struct arm_sve_z_state +_STRUCT_ARM_SVE_Z_STATE +{ + char z[16][256]; +} __attribute__((aligned(_Alignof(unsigned int)))); + +#define _STRUCT_ARM_SVE_P_STATE struct arm_sve_p_state +_STRUCT_ARM_SVE_P_STATE +{ + char p[16][256 / 8]; +} __attribute__((aligned(_Alignof(unsigned int)))); + +#define _STRUCT_ARM_SME_ZA_STATE struct arm_sme_za_state +_STRUCT_ARM_SME_ZA_STATE +{ + char za[4096]; +} __attribute__((aligned(_Alignof(unsigned int)))); + +#define _STRUCT_ARM_SME2_STATE struct arm_sme2_state +_STRUCT_ARM_SME2_STATE +{ + char zt0[64]; +} __attribute__((aligned(_Alignof(unsigned int)))); +#endif /* __DARWIN_UNIX03 */ + /* * Debug State */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/exception.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/exception.h index 31ab96fe..70308cf7 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/exception.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/exception.h @@ -47,6 +47,7 @@ */ #define EXC_ARM_UNDEFINED 1 /* Undefined */ +#define EXC_ARM_SME_DISALLOWED 2 /* Current thread state prohibits use of SME resources */ /* * EXC_ARITHMETIC diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/thread_status.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/thread_status.h index c8c3eb38..fadedf3d 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/thread_status.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/thread_status.h @@ -60,6 +60,7 @@ #define ARM_EXCEPTION_STATE64 7 // ARM_THREAD_STATE_LAST 8 /* legacy */ #define ARM_THREAD_STATE32 9 +#define ARM_EXCEPTION_STATE64_V2 10 /* API */ @@ -72,6 +73,30 @@ #define ARM_PAGEIN_STATE 27 +/* API */ +#define ARM_SME_STATE 28 +#define ARM_SVE_Z_STATE1 29 +#define ARM_SVE_Z_STATE2 30 +#define ARM_SVE_P_STATE 31 +#define ARM_SME_ZA_STATE1 32 +#define ARM_SME_ZA_STATE2 33 +#define ARM_SME_ZA_STATE3 34 +#define ARM_SME_ZA_STATE4 35 +#define ARM_SME_ZA_STATE5 36 +#define ARM_SME_ZA_STATE6 37 +#define ARM_SME_ZA_STATE7 38 +#define ARM_SME_ZA_STATE8 39 +#define ARM_SME_ZA_STATE9 40 +#define ARM_SME_ZA_STATE10 41 +#define ARM_SME_ZA_STATE11 42 +#define ARM_SME_ZA_STATE12 42 +#define ARM_SME_ZA_STATE13 44 +#define ARM_SME_ZA_STATE14 45 +#define ARM_SME_ZA_STATE15 46 +#define ARM_SME_ZA_STATE16 47 +#define ARM_SME2_STATE 48 + +#define THREAD_STATE_FLAVORS 50 /* This must be updated to 1 more than the highest numerical state flavor */ #ifndef ARM_STATE_FLAVOR_IS_OTHER_VALID #define ARM_STATE_FLAVOR_IS_OTHER_VALID(_flavor_) 0 @@ -91,12 +116,18 @@ (x == ARM_THREAD_STATE32) || \ (x == ARM_THREAD_STATE64) || \ (x == ARM_EXCEPTION_STATE64) || \ + (x == ARM_EXCEPTION_STATE64_V2) || \ (x == ARM_NEON_STATE) || \ (x == ARM_NEON_STATE64) || \ (x == ARM_DEBUG_STATE32) || \ (x == ARM_DEBUG_STATE64) || \ (x == ARM_PAGEIN_STATE) || \ (ARM_STATE_FLAVOR_IS_OTHER_VALID(x))) +/* + * VALID_THREAD_STATE_FLAVOR() intentionally excludes ARM_SME_STATE through + * ARM_SME2_STATE, since these are not currently supported inside Mach exception + * ports. + */ struct arm_state_hdr { uint32_t flavor; @@ -139,12 +170,19 @@ typedef _STRUCT_ARM_NEON_STATE64 arm_neon_state64_t; typedef _STRUCT_ARM_EXCEPTION_STATE arm_exception_state_t; typedef _STRUCT_ARM_EXCEPTION_STATE arm_exception_state32_t; typedef _STRUCT_ARM_EXCEPTION_STATE64 arm_exception_state64_t; +typedef _STRUCT_ARM_EXCEPTION_STATE64_V2 arm_exception_state64_v2_t; typedef _STRUCT_ARM_DEBUG_STATE32 arm_debug_state32_t; typedef _STRUCT_ARM_DEBUG_STATE64 arm_debug_state64_t; typedef _STRUCT_ARM_PAGEIN_STATE arm_pagein_state_t; +typedef _STRUCT_ARM_SME_STATE arm_sme_state_t; +typedef _STRUCT_ARM_SVE_Z_STATE arm_sve_z_state_t; +typedef _STRUCT_ARM_SVE_P_STATE arm_sve_p_state_t; +typedef _STRUCT_ARM_SME_ZA_STATE arm_sme_za_state_t; +typedef _STRUCT_ARM_SME2_STATE arm_sme2_state_t; + /* * Otherwise not ARM64 kernel and we must preserve legacy ARM definitions of * arm_debug_state for binary compatability of userland consumers of this file. @@ -166,6 +204,9 @@ typedef _STRUCT_ARM_LEGACY_DEBUG_STATE arm_debug_state_t; #define ARM_EXCEPTION_STATE64_COUNT ((mach_msg_type_number_t) \ (sizeof (arm_exception_state64_t)/sizeof(uint32_t))) +#define ARM_EXCEPTION_STATE64_V2_COUNT ((mach_msg_type_number_t) \ + (sizeof (arm_exception_state64_v2_t)/sizeof(uint32_t))) + #define ARM_DEBUG_STATE_COUNT ((mach_msg_type_number_t) \ (sizeof (arm_debug_state_t)/sizeof(uint32_t))) @@ -184,6 +225,21 @@ typedef _STRUCT_ARM_LEGACY_DEBUG_STATE arm_debug_state_t; #define ARM_NEON_STATE64_COUNT ((mach_msg_type_number_t) \ (sizeof (arm_neon_state64_t)/sizeof(uint32_t))) +#define ARM_SME_STATE_COUNT ((mach_msg_type_number_t) \ + (sizeof (arm_sme_state_t)/sizeof(uint32_t))) + +#define ARM_SVE_Z_STATE_COUNT ((mach_msg_type_number_t) \ + (sizeof (arm_sve_z_state_t)/sizeof(uint32_t))) + +#define ARM_SVE_P_STATE_COUNT ((mach_msg_type_number_t) \ + (sizeof (arm_sve_p_state_t)/sizeof(uint32_t))) + +#define ARM_SME_ZA_STATE_COUNT ((mach_msg_type_number_t) \ + (sizeof (arm_sme_za_state_t)/sizeof(uint32_t))) + +#define ARM_SME2_STATE_COUNT ((mach_msg_type_number_t) \ + (sizeof (arm_sme2_state_t)/sizeof(uint32_t))) + #define MACHINE_THREAD_STATE ARM_THREAD_STATE #define MACHINE_THREAD_STATE_COUNT ARM_UNIFIED_THREAD_STATE_COUNT diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/vm_param.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/vm_param.h index 158a2354..b0def2ca 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/vm_param.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm/vm_param.h @@ -103,6 +103,11 @@ extern int PAGE_SHIFT_CONST; #define MACH_VM_MIN_ADDRESS_RAW 0x0ULL #define MACH_VM_MAX_ADDRESS_RAW 0x00007FFFFE000000ULL +/* + * `MACH_VM_MAX_ADDRESS` is exported to user space, but we don't want this + * larger value for `MACH_VM_MAX_ADDRESS` to be exposed outside the kernel. + */ + #define MACH_VM_MIN_ADDRESS ((mach_vm_offset_t) MACH_VM_MIN_ADDRESS_RAW) #define MACH_VM_MAX_ADDRESS ((mach_vm_offset_t) MACH_VM_MAX_ADDRESS_RAW) @@ -174,7 +179,7 @@ extern int PAGE_SHIFT_CONST; * the sign bit. In kernel space the sign bit is 1, so 0xFF is a valid mask * here. */ -#define VM_KERNEL_STRIP_TAG(_v) (vm_memtag_canonicalize_address((vm_offset_t)_v)) +#define VM_KERNEL_STRIP_TAG(_v) (vm_memtag_canonicalize_kernel((vm_offset_t)_v)) #else /* CONFIG_KERNEL_TAGGING */ #define VM_KERNEL_STRIP_TAG(_v) (_v) #endif /* CONFIG_KERNEL_TAGGING */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm64/asm.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm64/asm.h index de062dc4..d1efd278 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm64/asm.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/arm64/asm.h @@ -169,16 +169,40 @@ #endif .endmacro +/** + * Push a stack frame. + * + * Most callers should invoke ARM64_STACK_PROLOG first, since otherwise this will + * push an unsigned return address onto the stack. + */ #define PUSH_FRAME \ stp fp, lr, [sp, #-16]! %% \ mov fp, sp %% +/** + * Pop the most recent stack frame. + * + * Note: if the complementary PUSH_FRAME was not preceded by ARM64_STACK_PROLOG, + * then this operation could load an attacker-controlled return address from + * memory! Either add ARM64_STACK_PROLOG, or use POP_FRAME_WITHOUT_LR if there + * are no plans to ever use the popped LR. + */ #define POP_FRAME \ mov sp, fp %% \ ldp fp, lr, [sp], #16 %% -#define EXT(x) _ ## x +/** + * Pop the most recent stack frame, but do not update LR. + * + * This macro is intended for situations like kernel entry, where the caller + * doesn't actually need to preserve LR, but wants to push a stack frame + * anyway for the benefit of unwinders. + */ +#define POP_FRAME_WITHOUT_LR \ + mov sp, fp %% \ + ldp fp, xzr, [sp], #16 %% +#define EXT(x) _ ## x #else /* NOT __ASSEMBLER__ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/clock_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/clock_types.h index 9b3d49a9..6db3b01f 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/clock_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/clock_types.h @@ -50,7 +50,7 @@ */ typedef int alarm_type_t; /* alarm time type */ typedef int sleep_type_t; /* sleep time type */ -typedef int clock_id_t; /* clock identification type */ +typedef int clock_id_t; /* clock identification type */ typedef int clock_flavor_t; /* clock flavor type */ typedef int *clock_attr_t; /* clock attribute type */ typedef int clock_res_t; /* clock resolution type */ @@ -60,7 +60,7 @@ typedef int clock_res_t; /* clock resolution type */ */ struct mach_timespec { unsigned int tv_sec; /* seconds */ - clock_res_t tv_nsec; /* nanoseconds */ + clock_res_t tv_nsec; /* nanoseconds */ }; typedef struct mach_timespec mach_timespec_t; @@ -86,39 +86,39 @@ typedef struct mach_timespec mach_timespec_t; #define NSEC_PER_SEC 1000000000ull /* nanoseconds per second */ #define NSEC_PER_MSEC 1000000ull /* nanoseconds per millisecond */ -#define BAD_MACH_TIMESPEC(t) \ +#define BAD_MACH_TIMESPEC(t) \ ((t)->tv_nsec < 0 || (t)->tv_nsec >= (long)NSEC_PER_SEC) /* t1 <=> t2, also (t1 - t2) in nsec with max of +- 1 sec */ -#define CMP_MACH_TIMESPEC(t1, t2) \ - ((t1)->tv_sec > (t2)->tv_sec ? (long) +NSEC_PER_SEC : \ - ((t1)->tv_sec < (t2)->tv_sec ? (long) -NSEC_PER_SEC : \ +#define CMP_MACH_TIMESPEC(t1, t2) \ + ((t1)->tv_sec > (t2)->tv_sec ? (long) +NSEC_PER_SEC : \ + ((t1)->tv_sec < (t2)->tv_sec ? (long) -NSEC_PER_SEC : \ (t1)->tv_nsec - (t2)->tv_nsec)) /* t1 += t2 */ -#define ADD_MACH_TIMESPEC(t1, t2) \ - do { \ - if (((t1)->tv_nsec += (t2)->tv_nsec) >= (long) NSEC_PER_SEC) { \ - (t1)->tv_nsec -= (long) NSEC_PER_SEC; \ - (t1)->tv_sec += 1; \ - } \ - (t1)->tv_sec += (t2)->tv_sec; \ +#define ADD_MACH_TIMESPEC(t1, t2) \ + do { \ + if (((t1)->tv_nsec += (t2)->tv_nsec) >= (long) NSEC_PER_SEC) { \ + (t1)->tv_nsec -= (long) NSEC_PER_SEC; \ + (t1)->tv_sec += 1; \ + } \ + (t1)->tv_sec += (t2)->tv_sec; \ } while (0) /* t1 -= t2 */ -#define SUB_MACH_TIMESPEC(t1, t2) \ - do { \ - if (((t1)->tv_nsec -= (t2)->tv_nsec) < 0) { \ - (t1)->tv_nsec += (long) NSEC_PER_SEC; \ - (t1)->tv_sec -= 1; \ - } \ - (t1)->tv_sec -= (t2)->tv_sec; \ +#define SUB_MACH_TIMESPEC(t1, t2) \ + do { \ + if (((t1)->tv_nsec -= (t2)->tv_nsec) < 0) { \ + (t1)->tv_nsec += (long) NSEC_PER_SEC; \ + (t1)->tv_sec -= 1; \ + } \ + (t1)->tv_sec -= (t2)->tv_sec; \ } while (0) /* * Alarm parameter defines. */ -#define ALRMTYPE 0xff /* type (8-bit field) */ +#define ALRMTYPE 0xff /* type (8-bit field) */ #define TIME_ABSOLUTE 0x00 /* absolute time */ #define TIME_RELATIVE 0x01 /* relative time */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/doubleagent_mig.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/doubleagent_mig.defs new file mode 100644 index 00000000..ac723738 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/doubleagent_mig.defs @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +subsystem +#if KERNEL_USER + KernelUser +#endif /* KERNEL_USER */ + doubleagent 6300; + +#include +#include +import ; + +#define MAX_NUM_OF_XATTRS 256 +#define DA_XATTR_MAXNAMELEN 127 // Must match the 'XATTR_MAXNAMELEN' in . +#define XATTR_FINDERINFO_NAME_LEN 21 // sizeof("com.apple.FinderInfo") (including '\0') +#define XATTR_RESOURCEFORK_NAME_LEN 23 // sizeof("com.apple.ResourceFork") (including '\0') + +#define LISTXATTR_RESULT_MAX_NAMES_LEN_MIG (XATTR_FINDERINFO_NAME_LEN + XATTR_RESOURCEFORK_NAME_LEN + (MAX_NUM_OF_XATTRS * ((DA_XATTR_MAXNAMELEN + 1)))) // Mig copy of LISTXATTR_RESULT_MAX_NAMES_LEN +#define LISTXATTR_RESULT_MAX_HINTS_LEN_MIG (MAX_NUM_OF_XATTRS * 8) // Mig copy of LISTXATTR_RESULT_MAX_HINTS_LEN (8 = 2 * sizeof(uint32_t)) +#define LISTXATTR_RESULT_MAX_SIZE_MIG (LISTXATTR_RESULT_MAX_NAMES_LEN_MIG + LISTXATTR_RESULT_MAX_HINTS_LEN_MIG) // Mig copy of LISTXATTR_RESULT_MAX_SIZE +#define LISTXATTR_RESULT_MAX_SIZE_INCLUDING_HEADER_MIG (LISTXATTR_RESULT_MAX_SIZE_MIG + 56) // 56 = 7 fields of uint64_t. + + +type xattrname = c_string[*:DA_XATTR_MAXNAMELEN + 1]; +type listxattrs_result_t = struct [LISTXATTR_RESULT_MAX_SIZE_INCLUDING_HEADER_MIG] of uint8_t; + +routine doubleagent_lookup_xattr( + server : mach_port_t; + in file_port : mach_port_move_send_t; /* fileport */ + in file_size : int64_t; /* AD file size */ + in name : xattrname; /* xattr name to lookup */ + out err : int; /* error value */ + out value_offset : uint64_t; /* returned xattr offset */ + out value_length : uint64_t /* returned xattr length */ +); + +routine doubleagent_allocate_xattr( + server : mach_port_t; + in file_port : mach_port_move_send_t; /* fileport */ + in file_size : int64_t; /* AD file size */ + in name : xattrname; /* xattr name to allocate */ + in size : uint64_t; /* xattr size to allocate */ + in options : uint32_t; /* how to allocate */ + out err : int; /* error value */ + out value_offset : uint64_t /* returned xattr offset */ +); + +routine doubleagent_list_xattrs( + server : mach_port_t; + in file_port : mach_port_move_send_t; /* fileport */ + in file_size : int64_t; /* AD file size */ + out err : int; /* error value */ + out result : listxattrs_result_t /* listxattr result struct */ +); + +routine doubleagent_remove_xattr( + server : mach_port_t; + in file_port : mach_port_move_send_t; /* fileport */ + in file_size : int64_t; /* AD file size */ + in name : xattrname; /* xattr name to remove */ + out err : int; /* error value */ + out is_empty : boolean_t /* true if we've removed the last xattr in file */ +); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/doubleagent_mig_server.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/doubleagent_mig_server.h new file mode 100644 index 00000000..09c85f57 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/doubleagent_mig_server.h @@ -0,0 +1,354 @@ +#ifndef _doubleagent_server_ +#define _doubleagent_server_ + +/* Module doubleagent */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* BEGIN MIG_STRNCPY_ZEROFILL CODE */ + +#if defined(__has_include) +#if __has_include() +#ifndef USING_MIG_STRNCPY_ZEROFILL +#define USING_MIG_STRNCPY_ZEROFILL +#endif +#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ +#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ +#ifdef __cplusplus +extern "C" { +#endif +#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS_CSTRING_ATTR +#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS_CSTRING_COUNTEDBY_ATTR(C) __unsafe_indexable +#endif + extern int mig_strncpy_zerofill(char * dest, const char * src, int len) __attribute__((weak_import)); +#ifdef __cplusplus +} +#endif +#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */ +#endif /* __has_include() */ +#endif /* __has_include */ + +/* END MIG_STRNCPY_ZEROFILL CODE */ + + +#ifdef AUTOTEST +#ifndef FUNCTION_PTR_T +#define FUNCTION_PTR_T +typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t); +typedef struct { + char * name; + function_ptr_t function; +} function_table_entry; +typedef function_table_entry *function_table_t; +#endif /* FUNCTION_PTR_T */ +#endif /* AUTOTEST */ + +#ifndef doubleagent_MSG_COUNT +#define doubleagent_MSG_COUNT 4 +#endif /* doubleagent_MSG_COUNT */ + +#include +#include +#include +#include +#include +#include + +#ifdef __BeforeMigServerHeader +__BeforeMigServerHeader +#endif /* __BeforeMigServerHeader */ + +#ifndef MIG_SERVER_ROUTINE +#define MIG_SERVER_ROUTINE +#endif + + +/* Routine doubleagent_lookup_xattr */ +#ifdef mig_external +mig_external +#else +extern +#endif /* mig_external */ +MIG_SERVER_ROUTINE +kern_return_t doubleagent_lookup_xattr +( + mach_port_t server, + mach_port_t file_port, + int64_t file_size, + xattrname name, + int *err, + uint64_t *value_offset, + uint64_t *value_length +); + +/* Routine doubleagent_allocate_xattr */ +#ifdef mig_external +mig_external +#else +extern +#endif /* mig_external */ +MIG_SERVER_ROUTINE +kern_return_t doubleagent_allocate_xattr +( + mach_port_t server, + mach_port_t file_port, + int64_t file_size, + xattrname name, + uint64_t size, + uint32_t options, + int *err, + uint64_t *value_offset +); + +/* Routine doubleagent_list_xattrs */ +#ifdef mig_external +mig_external +#else +extern +#endif /* mig_external */ +MIG_SERVER_ROUTINE +kern_return_t doubleagent_list_xattrs +( + mach_port_t server, + mach_port_t file_port, + int64_t file_size, + int *err, + listxattrs_result_t *result +); + +/* Routine doubleagent_remove_xattr */ +#ifdef mig_external +mig_external +#else +extern +#endif /* mig_external */ +MIG_SERVER_ROUTINE +kern_return_t doubleagent_remove_xattr +( + mach_port_t server, + mach_port_t file_port, + int64_t file_size, + xattrname name, + int *err, + boolean_t *is_empty +); + +#ifdef mig_external +mig_external +#else +extern +#endif /* mig_external */ +boolean_t doubleagent_server( + mach_msg_header_t *InHeadP, + mach_msg_header_t *OutHeadP); + +#ifdef mig_external +mig_external +#else +extern +#endif /* mig_external */ +mig_routine_t doubleagent_server_routine( + mach_msg_header_t *InHeadP); + + +/* Description of this subsystem, for use in direct RPC */ +extern const struct doubleagent_subsystem { + mig_server_routine_t server; /* Server routine */ + mach_msg_id_t start; /* Min routine number */ + mach_msg_id_t end; /* Max routine number + 1 */ + unsigned int maxsize; /* Max msg size */ + vm_address_t reserved; /* Reserved */ + struct routine_descriptor /* Array of routine descriptors */ + routine[4]; +} doubleagent_subsystem; + +/* typedefs for all requests */ + +#ifndef __Request__doubleagent_subsystem__defined +#define __Request__doubleagent_subsystem__defined + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + /* start of the kernel processed data */ + mach_msg_body_t msgh_body; + mach_msg_port_descriptor_t file_port; + /* end of the kernel processed data */ + NDR_record_t NDR; + int64_t file_size; + mach_msg_type_number_t nameOffset; /* MiG doesn't use it */ + mach_msg_type_number_t nameCnt; + char name[128]; + } __Request__doubleagent_lookup_xattr_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + /* start of the kernel processed data */ + mach_msg_body_t msgh_body; + mach_msg_port_descriptor_t file_port; + /* end of the kernel processed data */ + NDR_record_t NDR; + int64_t file_size; + mach_msg_type_number_t nameOffset; /* MiG doesn't use it */ + mach_msg_type_number_t nameCnt; + char name[128]; + uint64_t size; + uint32_t options; + } __Request__doubleagent_allocate_xattr_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + /* start of the kernel processed data */ + mach_msg_body_t msgh_body; + mach_msg_port_descriptor_t file_port; + /* end of the kernel processed data */ + NDR_record_t NDR; + int64_t file_size; + } __Request__doubleagent_list_xattrs_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + /* start of the kernel processed data */ + mach_msg_body_t msgh_body; + mach_msg_port_descriptor_t file_port; + /* end of the kernel processed data */ + NDR_record_t NDR; + int64_t file_size; + mach_msg_type_number_t nameOffset; /* MiG doesn't use it */ + mach_msg_type_number_t nameCnt; + char name[128]; + } __Request__doubleagent_remove_xattr_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif +#endif /* !__Request__doubleagent_subsystem__defined */ + + +/* union of all requests */ + +#ifndef __RequestUnion__doubleagent_subsystem__defined +#define __RequestUnion__doubleagent_subsystem__defined +union __RequestUnion__doubleagent_subsystem { + __Request__doubleagent_lookup_xattr_t Request_doubleagent_lookup_xattr; + __Request__doubleagent_allocate_xattr_t Request_doubleagent_allocate_xattr; + __Request__doubleagent_list_xattrs_t Request_doubleagent_list_xattrs; + __Request__doubleagent_remove_xattr_t Request_doubleagent_remove_xattr; +}; +#endif /* __RequestUnion__doubleagent_subsystem__defined */ +/* typedefs for all replies */ + +#ifndef __Reply__doubleagent_subsystem__defined +#define __Reply__doubleagent_subsystem__defined + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + kern_return_t RetCode; + int err; + uint64_t value_offset; + uint64_t value_length; + } __Reply__doubleagent_lookup_xattr_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + kern_return_t RetCode; + int err; + uint64_t value_offset; + } __Reply__doubleagent_allocate_xattr_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + kern_return_t RetCode; + int err; + listxattrs_result_t result; + } __Reply__doubleagent_list_xattrs_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + kern_return_t RetCode; + int err; + boolean_t is_empty; + } __Reply__doubleagent_remove_xattr_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif +#endif /* !__Reply__doubleagent_subsystem__defined */ + + +/* union of all replies */ + +#ifndef __ReplyUnion__doubleagent_subsystem__defined +#define __ReplyUnion__doubleagent_subsystem__defined +union __ReplyUnion__doubleagent_subsystem { + __Reply__doubleagent_lookup_xattr_t Reply_doubleagent_lookup_xattr; + __Reply__doubleagent_allocate_xattr_t Reply_doubleagent_allocate_xattr; + __Reply__doubleagent_list_xattrs_t Reply_doubleagent_list_xattrs; + __Reply__doubleagent_remove_xattr_t Reply_doubleagent_remove_xattr; +}; +#endif /* __ReplyUnion__doubleagent_subsystem__defined */ + +#ifndef subsystem_to_name_map_doubleagent +#define subsystem_to_name_map_doubleagent \ + { "doubleagent_lookup_xattr", 6300 },\ + { "doubleagent_allocate_xattr", 6301 },\ + { "doubleagent_list_xattrs", 6302 },\ + { "doubleagent_remove_xattr", 6303 } +#endif + +#ifdef __AfterMigServerHeader +__AfterMigServerHeader +#endif /* __AfterMigServerHeader */ + +#endif /* _doubleagent_server_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/doubleagent_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/doubleagent_types.h new file mode 100644 index 00000000..54efe11e --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/doubleagent_types.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef _DOUBLEAGENT_TYPES_H_ +#define _DOUBLEAGENT_TYPES_H_ + +#define DA_XATTR_MAXNAMELEN 127 // Must match the 'XATTR_MAXNAMELEN' in . +#define DA_XATTR_FINDERINFO_NAME "com.apple.FinderInfo" // Copy of XATTR_FINDERINFO_NAME in . +#define DA_XATTR_RESOURCEFORK_NAME "com.apple.ResourceFork" // Copy of DA_XATTR_RESOURCEFORK_NAME in . + +#define MAX_NUM_OF_XATTRS 256 +#define LISTXATTR_RESULT_MAX_NAMES_LEN (sizeof(DA_XATTR_RESOURCEFORK_NAME) + sizeof(DA_XATTR_FINDERINFO_NAME) + (MAX_NUM_OF_XATTRS * ((DA_XATTR_MAXNAMELEN + 1)))) +#define LISTXATTR_RESULT_MAX_HINTS_LEN (MAX_NUM_OF_XATTRS * 2 * sizeof(uint32_t)) // hint = offset + length (per xattr). +#define LISTXATTR_RESULT_MAX_SIZE (LISTXATTR_RESULT_MAX_NAMES_LEN + LISTXATTR_RESULT_MAX_HINTS_LEN) + +typedef char xattrname[DA_XATTR_MAXNAMELEN + 1]; + +typedef struct list_xattrs_result { + /* header */ + uint64_t finderInfoOffset; // =0 if not present + uint64_t resourceForkOffset; // =0 if not present + uint64_t resourceForkLength; // Don't care if resourceForkOffset = 0 + uint64_t numOfXattrs; + + /* data: + * (1) names (separated with '\0') + * (2) ranges: offset + lengths (for caching) + * (dataLength = namesLength + rangesLength) + */ + uint64_t dataLength; + uint64_t namesLength; + uint64_t rangesLength; + uint8_t data[LISTXATTR_RESULT_MAX_SIZE]; +} listxattrs_result_t; + +#endif /* _DOUBLEAGENT_TYPES_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/error.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/error.h index 50c77b9c..e2d851f2 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/error.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/error.h @@ -99,6 +99,9 @@ #define err_ipc err_system(0x3) /* old ipc errors */ #define err_mach_ipc err_system(0x4) /* mach-ipc errors */ #define err_dipc err_system(0x7) /* distributed ipc */ +#define err_vm err_system(0x8) /* virtual memory */ +/* err_system(0x37) libkern */ +/* err_system(0x38) iokit */ #define err_local err_system(0x3e) /* user defined errors */ #define err_ipc_compat err_system(0x3f) /* (compatibility) mach-ipc errors */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/exception_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/exception_types.h index 5e9e522d..877be273 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/exception_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/exception_types.h @@ -126,6 +126,11 @@ * and thread identity. */ +#define EXCEPTION_STATE_IDENTITY_PROTECTED 5 +/* Send a catch_exception_raise_state_identity_protected message including protected task + * and thread identity plus the thread state. + */ + #define MACH_EXCEPTION_BACKTRACE_PREFERRED 0x20000000 /* Prefer sending a catch_exception_raise_backtrace message, if applicable */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_info.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_info.h index 648d25ca..63b99bef 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_info.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_info.h @@ -184,6 +184,7 @@ typedef struct host_priority_info *host_priority_info_t; #define HOST_EXPIRED_TASK_INFO 6 /* Statistics for expired tasks */ + struct host_load_info { integer_t avenrun[3]; /* scaled by LOAD_SCALE */ integer_t mach_factor[3]; /* scaled by LOAD_SCALE */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_priv.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_priv.defs index 76d5186b..0e0878dc 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_priv.defs +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_priv.defs @@ -79,6 +79,10 @@ userprefix r_; #define KERNEL_SERVER_SUFFIX(NAME) NAME #endif +#if KERNEL_SERVER +#define VM_KERNEL_SERVER 1 +#endif + #include #include #include @@ -147,29 +151,18 @@ routine thread_wire( wired : boolean_t); /* - * Allocate zero-filled, wired, contiguous physical memory - * in the address space of the target task, either at the - * specified address, or wherever space can be found (if - * anywhere is TRUE), of the specified size. The address - * at which the allocation actually took place is returned. - * All pages will be entered into the task's pmap immediately, - * with VM_PROT_ALL. - * - * In addition to all the failure modes of its cousin, - * vm_allocate, this call may also fail if insufficient - * contiguous memory exists to satisfy the request. - * - * Memory obtained from this call should be freed the - * normal way, via vm_deallocate. - * - * N.B. This is an EXPERIMENTAL interface! + * Obsolete */ +#if KERNEL_SERVER +skip; +#else routine vm_allocate_cpm( host_priv : host_priv_t; task : vm_map_t; inout address : vm_address_t; size : vm_size_t; flags : int); +#endif /* * Get list of processors on this host. diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_special_ports.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_special_ports.h index 782f0b07..101aa7a7 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_special_ports.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/host_special_ports.h @@ -110,8 +110,10 @@ #define HOST_FAIRPLAYD_PORT (24 + HOST_MAX_SPECIAL_KERNEL_PORT) #define HOST_IOCOMPRESSIONSTATS_PORT (25 + HOST_MAX_SPECIAL_KERNEL_PORT) #define HOST_MEMORY_ERROR_PORT (26 + HOST_MAX_SPECIAL_KERNEL_PORT) +#define HOST_MANAGEDAPPDISTD_PORT (27 + HOST_MAX_SPECIAL_KERNEL_PORT) +#define HOST_DOUBLEAGENTD_PORT (28 + HOST_MAX_SPECIAL_KERNEL_PORT) -#define HOST_MAX_SPECIAL_PORT HOST_MEMORY_ERROR_PORT +#define HOST_MAX_SPECIAL_PORT HOST_DOUBLEAGENTD_PORT /* MAX = last since rdar://59872249 */ /* obsolete name */ @@ -288,6 +290,18 @@ #define host_set_memory_error_port(host, port) \ (host_set_special_port((host), HOST_MEMORY_ERROR_PORT, (port))) +#define host_get_managedappdistd_port(host, port) \ + (host_get_special_port((host), \ + HOST_LOCAL_NODE, HOST_MANAGEDAPPDISTD_PORT, (port))) +#define host_set_managedappdistd_port(host, port) \ + (host_set_special_port((host), HOST_MANAGEDAPPDISTD_PORT, (port))) + +#define host_get_doubleagentd_port(host, port) \ + (host_get_special_port((host), \ + HOST_LOCAL_NODE, HOST_DOUBLEAGENTD_PORT, (port))) +#define host_set_doubleagentd_port(host, port) \ + (host_set_special_port((host), HOST_DOUBLEAGENTD_PORT, (port))) + /* HOST_RESOURCE_NOTIFY_PORT doesn't #defines these conveniences. * All lookups go through send_resource_violation() */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/i386/thread_status.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/i386/thread_status.h index 6500bdbb..32ff4e7a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/i386/thread_status.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/i386/thread_status.h @@ -125,6 +125,7 @@ #define x86_THREAD_FULL_STATE64 23 #define x86_INSTRUCTION_STATE 24 #define x86_LAST_BRANCH_STATE 25 +#define THREAD_STATE_FLAVORS 26 /* This must be updated to 1 more than the highest numerical state flavor */ /* * Largest state on this machine: diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/i386/vm_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/i386/vm_types.h index e41c1115..9798e657 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/i386/vm_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/i386/vm_types.h @@ -133,6 +133,17 @@ typedef uint64_t vm_map_size_t; typedef mach_vm_address_t mach_port_context_t; +#if defined(MACH_KERNEL_PRIVATE) || KERNEL_VM_TEST + +/* + * These are types used internal to Mach to implement the + * legacy 32-bit VM APIs published by the kernel. + */ +typedef uint32_t vm32_address_t; +typedef uint32_t vm32_offset_t; +typedef uint32_t vm32_size_t; + +#endif /* MACH_KERNEL_PRIVATE */ #endif /* ASSEMBLER */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_exc.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_exc.defs index c84957cd..148cdcc6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_exc.defs +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_exc.defs @@ -168,4 +168,31 @@ routine mach_exception_raise_backtrace( skip; #endif /* MACH_EXC_SERVER_BACKTRACE */ +/* + * Same as identity_protected above, but also handles an in/out thread_state_t. + */ +#if MACH_EXC_SERVER_TASKIDTOKEN_STATE || ((KERNEL_USER || KERNEL_SERVER) && !SANDBOX_COMPILER) +routine mach_exception_raise_state_identity_protected( + exception_port : mach_port_t; + thread_id : uint64_t; + task_id_token_t : mach_port_t; + exception : exception_type_t; + code : mach_exception_data_t; + inout flavor : int; + old_state : thread_state_t; + out new_state : thread_state_t +#if MACH_EXC_SERVER_SECTOKEN + ; + ServerSecToken stoken : security_token_t +#endif +#if MACH_EXC_SERVER_AUDITTOKEN + ; + ServerAuditToken atoken: audit_token_t +#endif + ); +#else /* MACH_EXC_SERVER_TASKIDTOKEN_STATE || ((KERNEL_USER || KERNEL_SERVER) && !SANDBOX_COMPILER) */ + skip; +#endif /* MACH_EXC_SERVER_TASKIDTOKEN_STATE || ((KERNEL_USER || KERNEL_SERVER) && !SANDBOX_COMPILER) */ + + /* vim: set ft=c : */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_exc_server.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_exc_server.h index 5a6566f3..3dc8086f 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_exc_server.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_exc_server.h @@ -52,7 +52,7 @@ typedef function_table_entry *function_table_t; #endif /* AUTOTEST */ #ifndef mach_exc_MSG_COUNT -#define mach_exc_MSG_COUNT 5 +#define mach_exc_MSG_COUNT 6 #endif /* mach_exc_MSG_COUNT */ #include @@ -155,7 +155,7 @@ extern const struct catch_mach_exc_subsystem { unsigned int maxsize; /* Max msg size */ vm_address_t reserved; /* Reserved */ struct routine_descriptor /* Array of routine descriptors */ - routine[5]; + routine[6]; } catch_mach_exc_subsystem; /* typedefs for all requests */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_host.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_host.defs index 6fb25140..1c0aca19 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_host.defs +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_host.defs @@ -70,6 +70,10 @@ subsystem #endif /* KERNEL_SERVER || KOBJECT_SERVER */ mach_host 200; +#if KERNEL_SERVER +#define VM_KERNEL_SERVER 1 +#endif + /* * Basic types */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_param.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_param.h index f82bb548..c7776fad 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_param.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_param.h @@ -83,6 +83,6 @@ #define THREAD_SELF_PORT_COUNT 3 /* Max length of conclave name */ -#define MAXCONCLAVENAME 256 +#define MAXCONCLAVENAME 128 #endif /* _MACH_MACH_PARAM_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_time.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_time.h index c7ca0310..3651d165 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_time.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_time.h @@ -45,21 +45,23 @@ __BEGIN_DECLS uint64_t mach_absolute_time(void); -__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0) uint64_t mach_approximate_time(void); /* * like mach_absolute_time, but advances during sleep */ -__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0) uint64_t mach_continuous_time(void); /* * like mach_approximate_time, but advances during sleep */ -__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0) uint64_t mach_continuous_approximate_time(void); +/* + * variant of mach_continuous_time that uses speculative timebase + */ +uint64_t mach_continuous_speculative_time(void); + __END_DECLS diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_types.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_types.defs index e124000a..0d1a6437 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_types.defs +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_types.defs @@ -71,8 +71,8 @@ #include -type memory_object_offset_t = uint64_t; -type memory_object_size_t = uint64_t; +type memory_object_offset_t = uint64_t VM_UNSAFE_TYPE(memory_object_offset_ut); +type memory_object_size_t = uint64_t VM_UNSAFE_TYPE(memory_object_size_ut); type memory_object_cluster_size_t = uint32_t; type memory_object_fault_info_t = array[16] of integer_t; @@ -280,11 +280,11 @@ type kcdata_object_t = mach_port_t #endif /* KERNEL_SERVER */ ; -type vm_prot_t = int; -type vm_inherit_t = int; +type vm_prot_t = int VM_UNSAFE_TYPE(vm_prot_ut); +type vm_inherit_t = int VM_UNSAFE_TYPE(vm_inherit_ut); type vm_purgable_t = int; type xxx_vm_statistics_data_t = struct[13] of integer_t; -type vm_behavior_t = int; +type vm_behavior_t = int VM_UNSAFE_TYPE(vm_behavior_ut); type vm_statistics_data_t = struct[15] of integer_t; type vm_machine_attribute_t = int; type vm_machine_attribute_val_t = int; @@ -320,7 +320,7 @@ type thread_policy_t = array[*:16] of integer_t; * task_basic_info_64_2_t * mach_task_basic_info_t (12 ints) * task_power_info_t (18 ints) - * task_vm_info_t (89 ints) + * task_vm_info_t (93 ints) * If other task_info flavors are added, this * definition may need to be changed. (See * mach/task_info.h and mach/policy.h) @@ -335,7 +335,7 @@ type thread_policy_t = array[*:16] of integer_t; * possibly causing an overflow of the user's buffer. */ type task_flavor_t = int; -type task_info_t = array[*:89+1] of integer_t; +type task_info_t = array[*:93+1] of integer_t; type task_purgable_info_t = struct[68] of integer_t; @@ -638,7 +638,7 @@ type task_suspension_token_t = mach_port_move_send_once_t type vfs_path_t = c_string[4096]; /* - * 8K, c.f. FSGETPATH_MAXBUFLEN in bsd/vfs/vfs_syscalls.c. + * 8K, c.f. MAXLONGPATHLEN in sys/syslimits.h. * These types should NEVER be allocated on the stack. */ type nspace_path_t = c_string[8192]; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_types.h index 9f7143a8..eab888d8 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_types.h @@ -111,6 +111,7 @@ #include +#include #include /* @@ -233,7 +234,7 @@ typedef exception_handler_t exception_port_t; typedef exception_handler_array_t exception_port_arrary_t; typedef char vfs_path_t[4096]; /* - * 8K, c.f. FSGETPATH_MAXBUFLEN in bsd/vfs/vfs_syscalls.c. + * 8K, c.f. MAXLONGPATHLEN in sys/syslimits.h. * These types should NEVER be allocated on the stack. */ typedef char nspace_path_t[8192]; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_vm.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_vm.defs index c39325d6..67522bca 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_vm.defs +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_vm.defs @@ -72,6 +72,10 @@ subsystem #endif 4800; +#if KERNEL_SERVER +#define VM_KERNEL_SERVER 1 +#endif + #include #include #include @@ -280,7 +284,7 @@ routine vm_msync( target_task : vm_map_t; address : mach_vm_address_t; size : mach_vm_size_t; - sync_flags : vm_sync_t ); + sync_flags : vm_sync_t); /* * Set the paging behavior attribute for the specified range @@ -442,7 +446,7 @@ routine vm_region_64( * THIS INTERFACE IS STILL EVOLVING. */ #if !defined(_MACH_VM_PUBLISH_AS_LOCAL_) -#if !defined(__LP64__) || KERNEL_SERVER || XNU_KERNEL_PRIVATE || LIBSYSCALL_INTERFACE +#if !defined(__LP64__) || KERNEL_SERVER || XNU_KERNEL_PRIVATE || LIBSYSCALL_INTERFACE || KERNEL_VM_TEST routine _mach_make_memory_entry( #else routine mach_make_memory_entry( @@ -529,14 +533,15 @@ routine PREFIX(KERNEL_SERVER_SUFFIX(vm_remap_new)) ( */ #if !defined(LIBSYSCALL_INTERFACE) && !defined(_MACH_VM_PUBLISH_AS_LOCAL_) -routine mach_vm_deferred_reclamation_buffer_init( +routine mach_vm_deferred_reclamation_buffer_allocate( target_task : task_t; - address : mach_vm_offset_t; - size : mach_vm_size_t); + out address : mach_vm_address_t; + len : uint32_t; + max_len : uint32_t); -routine mach_vm_deferred_reclamation_buffer_synchronize( +routine mach_vm_deferred_reclamation_buffer_flush( target_task : task_t; - num_entries_to_reclaim : mach_vm_size_t); + num_entries_to_reclaim : uint32_t); routine mach_vm_deferred_reclamation_buffer_update_reclaimable_bytes( target_task : task_t; @@ -557,4 +562,12 @@ routine mach_vm_range_create( skip; #endif +#if !defined(LIBSYSCALL_INTERFACE) && !defined(_MACH_VM_PUBLISH_AS_LOCAL_) +routine mach_vm_deferred_reclamation_buffer_resize( + target_task : task_t; + size : uint32_t); +#else +skip; +#endif + /* vim: set ft=c : */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_vm.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_vm.h index c65d1399..8f0f6585 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_vm.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/mach_vm.h @@ -52,7 +52,7 @@ typedef function_table_entry *function_table_t; #endif /* AUTOTEST */ #ifndef mach_vm_MSG_COUNT -#define mach_vm_MSG_COUNT 26 +#define mach_vm_MSG_COUNT 27 #endif /* mach_vm_MSG_COUNT */ #include @@ -410,29 +410,30 @@ kern_return_t mach_vm_remap_new vm_inherit_t inheritance ); -/* Routine mach_vm_deferred_reclamation_buffer_init */ +/* Routine mach_vm_deferred_reclamation_buffer_allocate */ #ifdef mig_external mig_external #else extern #endif /* mig_external */ -kern_return_t mach_vm_deferred_reclamation_buffer_init +kern_return_t mach_vm_deferred_reclamation_buffer_allocate ( task_t target_task, - mach_vm_offset_t address, - mach_vm_size_t size + mach_vm_address_t *address, + uint32_t len, + uint32_t max_len ); -/* Routine mach_vm_deferred_reclamation_buffer_synchronize */ +/* Routine mach_vm_deferred_reclamation_buffer_flush */ #ifdef mig_external mig_external #else extern #endif /* mig_external */ -kern_return_t mach_vm_deferred_reclamation_buffer_synchronize +kern_return_t mach_vm_deferred_reclamation_buffer_flush ( task_t target_task, - mach_vm_size_t num_entries_to_reclaim + uint32_t num_entries_to_reclaim ); /* Routine mach_vm_deferred_reclamation_buffer_update_reclaimable_bytes */ @@ -461,6 +462,18 @@ kern_return_t mach_vm_range_create mach_msg_type_number_t recipesCnt ); +/* Routine mach_vm_deferred_reclamation_buffer_resize */ +#ifdef mig_external +mig_external +#else +extern +#endif /* mig_external */ +kern_return_t mach_vm_deferred_reclamation_buffer_resize +( + task_t target_task, + uint32_t size +); + __END_DECLS /********************** Caution **************************/ @@ -826,9 +839,9 @@ __END_DECLS typedef struct { mach_msg_header_t Head; NDR_record_t NDR; - mach_vm_offset_t address; - mach_vm_size_t size; - } __Request__mach_vm_deferred_reclamation_buffer_init_t __attribute__((unused)); + uint32_t len; + uint32_t max_len; + } __Request__mach_vm_deferred_reclamation_buffer_allocate_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) #endif @@ -839,8 +852,8 @@ __END_DECLS typedef struct { mach_msg_header_t Head; NDR_record_t NDR; - mach_vm_size_t num_entries_to_reclaim; - } __Request__mach_vm_deferred_reclamation_buffer_synchronize_t __attribute__((unused)); + uint32_t num_entries_to_reclaim; + } __Request__mach_vm_deferred_reclamation_buffer_flush_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) #endif @@ -870,6 +883,18 @@ __END_DECLS #ifdef __MigPackStructs #pragma pack(pop) #endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + uint32_t size; + } __Request__mach_vm_deferred_reclamation_buffer_resize_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif #endif /* !__Request__mach_vm_subsystem__defined */ /* union of all requests */ @@ -899,10 +924,11 @@ union __RequestUnion__mach_vm_subsystem { __Request__mach_vm_page_info_t Request_mach_vm_page_info; __Request__mach_vm_page_range_query_t Request_mach_vm_page_range_query; __Request__mach_vm_remap_new_t Request_mach_vm_remap_new; - __Request__mach_vm_deferred_reclamation_buffer_init_t Request_mach_vm_deferred_reclamation_buffer_init; - __Request__mach_vm_deferred_reclamation_buffer_synchronize_t Request_mach_vm_deferred_reclamation_buffer_synchronize; + __Request__mach_vm_deferred_reclamation_buffer_allocate_t Request_mach_vm_deferred_reclamation_buffer_allocate; + __Request__mach_vm_deferred_reclamation_buffer_flush_t Request_mach_vm_deferred_reclamation_buffer_flush; __Request__mach_vm_deferred_reclamation_buffer_update_reclaimable_bytes_t Request_mach_vm_deferred_reclamation_buffer_update_reclaimable_bytes; __Request__mach_vm_range_create_t Request_mach_vm_range_create; + __Request__mach_vm_deferred_reclamation_buffer_resize_t Request_mach_vm_deferred_reclamation_buffer_resize; }; #endif /* !__RequestUnion__mach_vm_subsystem__defined */ /* typedefs for all replies */ @@ -1218,7 +1244,8 @@ union __RequestUnion__mach_vm_subsystem { mach_msg_header_t Head; NDR_record_t NDR; kern_return_t RetCode; - } __Reply__mach_vm_deferred_reclamation_buffer_init_t __attribute__((unused)); + mach_vm_address_t address; + } __Reply__mach_vm_deferred_reclamation_buffer_allocate_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) #endif @@ -1230,7 +1257,7 @@ union __RequestUnion__mach_vm_subsystem { mach_msg_header_t Head; NDR_record_t NDR; kern_return_t RetCode; - } __Reply__mach_vm_deferred_reclamation_buffer_synchronize_t __attribute__((unused)); + } __Reply__mach_vm_deferred_reclamation_buffer_flush_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) #endif @@ -1258,6 +1285,18 @@ union __RequestUnion__mach_vm_subsystem { #ifdef __MigPackStructs #pragma pack(pop) #endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + kern_return_t RetCode; + } __Reply__mach_vm_deferred_reclamation_buffer_resize_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif #endif /* !__Reply__mach_vm_subsystem__defined */ /* union of all replies */ @@ -1287,10 +1326,11 @@ union __ReplyUnion__mach_vm_subsystem { __Reply__mach_vm_page_info_t Reply_mach_vm_page_info; __Reply__mach_vm_page_range_query_t Reply_mach_vm_page_range_query; __Reply__mach_vm_remap_new_t Reply_mach_vm_remap_new; - __Reply__mach_vm_deferred_reclamation_buffer_init_t Reply_mach_vm_deferred_reclamation_buffer_init; - __Reply__mach_vm_deferred_reclamation_buffer_synchronize_t Reply_mach_vm_deferred_reclamation_buffer_synchronize; + __Reply__mach_vm_deferred_reclamation_buffer_allocate_t Reply_mach_vm_deferred_reclamation_buffer_allocate; + __Reply__mach_vm_deferred_reclamation_buffer_flush_t Reply_mach_vm_deferred_reclamation_buffer_flush; __Reply__mach_vm_deferred_reclamation_buffer_update_reclaimable_bytes_t Reply_mach_vm_deferred_reclamation_buffer_update_reclaimable_bytes; __Reply__mach_vm_range_create_t Reply_mach_vm_range_create; + __Reply__mach_vm_deferred_reclamation_buffer_resize_t Reply_mach_vm_deferred_reclamation_buffer_resize; }; #endif /* !__RequestUnion__mach_vm_subsystem__defined */ @@ -1318,10 +1358,11 @@ union __ReplyUnion__mach_vm_subsystem { { "mach_vm_page_info", 4819 },\ { "mach_vm_page_range_query", 4820 },\ { "mach_vm_remap_new", 4821 },\ - { "mach_vm_deferred_reclamation_buffer_init", 4822 },\ - { "mach_vm_deferred_reclamation_buffer_synchronize", 4823 },\ + { "mach_vm_deferred_reclamation_buffer_allocate", 4822 },\ + { "mach_vm_deferred_reclamation_buffer_flush", 4823 },\ { "mach_vm_deferred_reclamation_buffer_update_reclaimable_bytes", 4824 },\ - { "mach_vm_range_create", 4825 } + { "mach_vm_range_create", 4825 },\ + { "mach_vm_deferred_reclamation_buffer_resize", 4826 } #endif #ifdef __AfterMigUserHeader diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/machine.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/machine.h index 23220987..8c496f92 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/machine.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/machine.h @@ -118,10 +118,11 @@ typedef integer_t cpu_threadtype_t; #define CPU_TYPE_POWERPC ((cpu_type_t) 18) #define CPU_TYPE_POWERPC64 (CPU_TYPE_POWERPC | CPU_ARCH_ABI64) /* skip ((cpu_type_t) 19) */ -/* skip ((cpu_type_t) 20 */ -/* skip ((cpu_type_t) 21 */ -/* skip ((cpu_type_t) 22 */ -/* skip ((cpu_type_t) 23 */ +/* skip ((cpu_type_t) 20) */ +/* skip ((cpu_type_t) 21) */ +/* skip ((cpu_type_t) 22) */ +/* skip ((cpu_type_t) 23) */ +/* skip ((cpu_type_t) 24) */ /* * Machine subtypes (these are defined here, instead of in a machine @@ -349,6 +350,7 @@ typedef integer_t cpu_threadtype_t; #define CPU_SUBTYPE_ARM64_32_ALL ((cpu_subtype_t) 0) #define CPU_SUBTYPE_ARM64_32_V8 ((cpu_subtype_t) 1) + #endif /* !__ASSEMBLER__ */ /* @@ -400,6 +402,10 @@ typedef integer_t cpu_threadtype_t; #define CPUFAMILY_ARM_PALMA 0x72015832 #define CPUFAMILY_ARM_COLL 0x2876f5b5 #define CPUFAMILY_ARM_LOBOS 0x5f4dea93 +#define CPUFAMILY_ARM_DONAN 0x6f5129ac +#define CPUFAMILY_ARM_BRAVA 0x17d5b93a +#define CPUFAMILY_ARM_TAHITI 0x75d4acb9 +#define CPUFAMILY_ARM_TUPAI 0x204526d0 /* Described in rdar://64125549 */ #define CPUSUBFAMILY_UNKNOWN 0 diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/machine/machine_types.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/machine/machine_types.defs index 2fe1f92f..4f3fa072 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/machine/machine_types.defs +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/machine/machine_types.defs @@ -43,6 +43,15 @@ type unsigned = uint32_t; type float = MACH_MSG_TYPE_REAL_32; type double = MACH_MSG_TYPE_REAL_64; +#if VM_KERNEL_SERVER +#define VM_ADD_CTYPE(type) ctype: type +#define VM_TYPE_SAFE_UNSAFE(_safe_type, _unsafe_type) ctype: _unsafe_type +#else /* VM_KERNEL_SERVER */ +#define VM_ADD_CTYPE(type) +#define VM_TYPE_SAFE_UNSAFE(_safe_type, _unsafe_type) ctype: _safe_type +#endif /* VM_KERNEL_SERVER */ + +#define VM_UNSAFE_TYPE(_unsafe_type) VM_ADD_CTYPE(_unsafe_type) /* from ISO/IEC 988:1999 spec */ /* 7.18.1.4 Integer types capable of hgolding object pointers */ @@ -86,13 +95,13 @@ type natural_t = uint32_t; */ #if defined(__LP64__) -type vm_address_t = uint64_t; -type vm_offset_t = uint64_t; -type vm_size_t = uint64_t; +type vm_address_t = uint64_t VM_UNSAFE_TYPE(vm_address_ut); +type vm_offset_t = uint64_t VM_UNSAFE_TYPE(vm_offset_ut); +type vm_size_t = uint64_t VM_UNSAFE_TYPE(vm_size_ut); #else -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; +type vm_address_t = natural_t VM_UNSAFE_TYPE(vm_address_ut); +type vm_offset_t = natural_t VM_UNSAFE_TYPE(vm_offset_ut); +type vm_size_t = natural_t VM_UNSAFE_TYPE(vm_size_ut); #endif /* This is a bit of a hack for arm. We implement the backend with a wide type, but present a native-sized type to callers */ @@ -103,9 +112,9 @@ type mach_port_context_t = uint64_t; * maximum pointer, offset, etc... supported on the * platform. */ -type mach_vm_address_t = uint64_t; -type mach_vm_offset_t = uint64_t; -type mach_vm_size_t = uint64_t; +type mach_vm_address_t = uint64_t VM_UNSAFE_TYPE(mach_vm_address_ut); +type mach_vm_offset_t = uint64_t VM_UNSAFE_TYPE(mach_vm_offset_ut); +type mach_vm_size_t = uint64_t VM_UNSAFE_TYPE(mach_vm_size_ut); /* * These are types used internal to Mach to implement the @@ -113,9 +122,9 @@ type mach_vm_size_t = uint64_t; */ #define VM32_SUPPORT 1 -type vm32_address_t = uint32_t; -type vm32_offset_t = uint32_t; -type vm32_size_t = uint32_t; +type vm32_address_t = uint32_t VM_UNSAFE_TYPE(vm32_address_ut); +type vm32_offset_t = uint32_t VM_UNSAFE_TYPE(vm32_offset_ut); +type vm32_size_t = uint32_t VM_UNSAFE_TYPE(vm32_size_ut); #endif /* _MACH_MACHINE_MACHNINE_TYPES_DEFS */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/memory_object_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/memory_object_types.h index d792d2e3..09d336e9 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/memory_object_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/memory_object_types.h @@ -279,6 +279,7 @@ typedef struct memory_object_attr_info memory_object_attr_info_data_t; & 0xFF000000) | ((flags) & 0xFFFFFF)); /* leave room for vm_prot bits (0xFF ?) */ +#define MAP_MEM_PROT_MASK 0xFF #define MAP_MEM_LEDGER_TAGGED 0x002000 /* object owned by a specific task and ledger */ #define MAP_MEM_PURGABLE_KERNEL_ONLY 0x004000 /* volatility controlled by kernel */ #define MAP_MEM_GRAB_SECLUDED 0x008000 /* can grab secluded pages */ @@ -328,6 +329,7 @@ typedef upl_page_info_array_t upl_page_list_ptr_t; typedef uint32_t upl_offset_t; /* page-aligned byte offset */ typedef uint32_t upl_size_t; /* page-aligned byte size */ +#define UPL_SIZE_MAX (UINT32_MAX & ~PAGE_MASK) /* upl invocation flags */ /* top nibble is used by super upl */ @@ -530,6 +532,7 @@ extern boolean_t upl_valid_page(upl_page_info_t *upl, int index); extern void upl_deallocate(upl_t upl); extern void upl_mark_decmp(upl_t upl); extern void upl_unmark_decmp(upl_t upl); +extern boolean_t upl_has_wired_pages(upl_t upl); __END_DECLS diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/message.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/message.h index a8331425..c51db79c 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/message.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/message.h @@ -71,8 +71,10 @@ #ifndef _MACH_MESSAGE_H_ #define _MACH_MESSAGE_H_ +#include #include #include +#include /* user_addr_t */ #include #include #include @@ -81,6 +83,9 @@ #include #include #include +#if __has_feature(ptrauth_calls) +#include +#endif /* * The timeout mechanism uses mach_msg_timeout_t values, @@ -281,6 +286,8 @@ typedef unsigned int mach_msg_descriptor_type_t; #define MACH_MSG_DESCRIPTOR_MAX MACH_MSG_GUARDED_PORT_DESCRIPTOR +#define __ipc_desc_sign(d) + #pragma pack(push, 4) typedef struct { @@ -291,15 +298,15 @@ typedef struct { } mach_msg_type_descriptor_t; typedef struct { - mach_port_t name; -#if !(defined(KERNEL) && defined(__LP64__)) -// Pad to 8 bytes everywhere except the K64 kernel where mach_port_t is 8 bytes - mach_msg_size_t pad1; -#endif + union { + mach_port_t __ipc_desc_sign("port") name; + mach_port_t kext_name; + mach_port_t u_name; + }; unsigned int pad2 : 16; mach_msg_type_name_t disposition : 8; mach_msg_descriptor_type_t type : 8; - uint32_t pad_end; + uint32_t pad_end; } mach_msg_port_descriptor_t; @@ -322,7 +329,11 @@ typedef struct { } mach_msg_ool_descriptor64_t; typedef struct { - void* address; + union { + void *__ipc_desc_sign("address") address; + void *kext_address; + user_addr_t u_address; + }; #if !defined(__LP64__) mach_msg_size_t size; #endif @@ -357,7 +368,11 @@ typedef struct { } mach_msg_ool_ports_descriptor64_t; typedef struct { - void* address; + union { + void *__ipc_desc_sign("port_array") address; + void *kext_address; + user_addr_t u_address; + }; #if !defined(__LP64__) mach_msg_size_t count; #endif @@ -390,16 +405,18 @@ typedef struct { } mach_msg_guarded_port_descriptor64_t; typedef struct { - mach_port_t name; -#if !defined(__LP64__) - uint32_t pad1; -#endif + union { + mach_port_t __ipc_desc_sign("guarded_port") name; + mach_port_t kext_name; + mach_port_context_t u_context; + }; mach_msg_guard_flags_t flags : 16; mach_msg_type_name_t disposition : 8; mach_msg_descriptor_type_t type : 8; -#if defined(__LP64__) - uint32_t pad_end; -#endif /* defined(__LP64__) */ + union { + uint32_t pad_end; + mach_port_name_t u_name; + }; } mach_msg_guarded_port_descriptor_t; /* @@ -408,7 +425,7 @@ typedef struct { * are of the same size in that environment. */ #if defined(__LP64__) && defined(KERNEL) -typedef union{ +typedef union { mach_msg_port_descriptor_t port; mach_msg_ool_descriptor32_t out_of_line; mach_msg_ool_ports_descriptor32_t ool_ports; @@ -416,7 +433,7 @@ typedef union{ mach_msg_guarded_port_descriptor32_t guarded_port; } mach_msg_descriptor_t; #else -typedef union{ +typedef union { mach_msg_port_descriptor_t port; mach_msg_ool_descriptor_t out_of_line; mach_msg_ool_ports_descriptor_t ool_ports; @@ -686,6 +703,10 @@ typedef natural_t mach_msg_type_number_t; (((x) >= MACH_MSG_TYPE_MOVE_SEND) && \ ((x) <= MACH_MSG_TYPE_MAKE_SEND_ONCE)) +#define MACH_MSG_TYPE_PORT_ANY_SEND_ONCE(x) \ + (((x) == MACH_MSG_TYPE_MOVE_SEND_ONCE) || \ + ((x) == MACH_MSG_TYPE_MAKE_SEND_ONCE)) + #define MACH_MSG_TYPE_PORT_ANY_RIGHT(x) \ (((x) >= MACH_MSG_TYPE_MOVE_RECEIVE) && \ ((x) <= MACH_MSG_TYPE_MOVE_SEND_ONCE)) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/port.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/port.h index 605a1087..d33555c8 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/port.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/port.h @@ -226,40 +226,37 @@ typedef natural_t mach_port_right_t; #define MACH_PORT_RIGHT_LABELH ((mach_port_right_t) 5) /* obsolete right */ #define MACH_PORT_RIGHT_NUMBER ((mach_port_right_t) 6) /* right not implemented */ +#define MACH_PORT_TYPE(right) \ + ((mach_port_type_t)(((mach_port_type_t) 1) \ + << ((right) + ((mach_port_right_t) 16)))) typedef natural_t mach_port_type_t; typedef mach_port_type_t *mach_port_type_array_t; -#define MACH_PORT_TYPE(right) \ - ((mach_port_type_t)(((mach_port_type_t) 1) \ - << ((right) + ((mach_port_right_t) 16)))) -#define MACH_PORT_TYPE_NONE ((mach_port_type_t) 0L) -#define MACH_PORT_TYPE_SEND MACH_PORT_TYPE(MACH_PORT_RIGHT_SEND) -#define MACH_PORT_TYPE_RECEIVE MACH_PORT_TYPE(MACH_PORT_RIGHT_RECEIVE) -#define MACH_PORT_TYPE_SEND_ONCE MACH_PORT_TYPE(MACH_PORT_RIGHT_SEND_ONCE) -#define MACH_PORT_TYPE_PORT_SET MACH_PORT_TYPE(MACH_PORT_RIGHT_PORT_SET) -#define MACH_PORT_TYPE_DEAD_NAME MACH_PORT_TYPE(MACH_PORT_RIGHT_DEAD_NAME) -#define MACH_PORT_TYPE_LABELH MACH_PORT_TYPE(MACH_PORT_RIGHT_LABELH) /* obsolete */ - +#define MACH_PORT_TYPE_NONE ((mach_port_type_t) 0L) +#define MACH_PORT_TYPE_SEND MACH_PORT_TYPE(MACH_PORT_RIGHT_SEND) +#define MACH_PORT_TYPE_RECEIVE MACH_PORT_TYPE(MACH_PORT_RIGHT_RECEIVE) +#define MACH_PORT_TYPE_SEND_ONCE MACH_PORT_TYPE(MACH_PORT_RIGHT_SEND_ONCE) +#define MACH_PORT_TYPE_PORT_SET MACH_PORT_TYPE(MACH_PORT_RIGHT_PORT_SET) +#define MACH_PORT_TYPE_DEAD_NAME MACH_PORT_TYPE(MACH_PORT_RIGHT_DEAD_NAME) +#define MACH_PORT_TYPE_LABELH MACH_PORT_TYPE(MACH_PORT_RIGHT_LABELH) /* obsolete */ +/* Dummy type bits that mach_port_type/mach_port_names can return. */ +#define MACH_PORT_TYPE_DNREQUEST 0x80000000 +#define MACH_PORT_TYPE_SPREQUEST 0x40000000 +#define MACH_PORT_TYPE_SPREQUEST_DELAYED 0x20000000 /* Convenient combinations. */ #define MACH_PORT_TYPE_SEND_RECEIVE \ - (MACH_PORT_TYPE_SEND|MACH_PORT_TYPE_RECEIVE) + (MACH_PORT_TYPE_SEND|MACH_PORT_TYPE_RECEIVE) #define MACH_PORT_TYPE_SEND_RIGHTS \ - (MACH_PORT_TYPE_SEND|MACH_PORT_TYPE_SEND_ONCE) + (MACH_PORT_TYPE_SEND|MACH_PORT_TYPE_SEND_ONCE) #define MACH_PORT_TYPE_PORT_RIGHTS \ - (MACH_PORT_TYPE_SEND_RIGHTS|MACH_PORT_TYPE_RECEIVE) + (MACH_PORT_TYPE_SEND_RIGHTS|MACH_PORT_TYPE_RECEIVE) #define MACH_PORT_TYPE_PORT_OR_DEAD \ - (MACH_PORT_TYPE_PORT_RIGHTS|MACH_PORT_TYPE_DEAD_NAME) + (MACH_PORT_TYPE_PORT_RIGHTS|MACH_PORT_TYPE_DEAD_NAME) #define MACH_PORT_TYPE_ALL_RIGHTS \ - (MACH_PORT_TYPE_PORT_OR_DEAD|MACH_PORT_TYPE_PORT_SET) - -/* Dummy type bits that mach_port_type/mach_port_names can return. */ - -#define MACH_PORT_TYPE_DNREQUEST 0x80000000 -#define MACH_PORT_TYPE_SPREQUEST 0x40000000 -#define MACH_PORT_TYPE_SPREQUEST_DELAYED 0x20000000 + (MACH_PORT_TYPE_PORT_OR_DEAD|MACH_PORT_TYPE_PORT_SET) /* User-references for capabilities. */ @@ -399,7 +396,7 @@ typedef struct mach_service_port_info * mach_service_port_info_t; #define MPO_REPLY_PORT 0x1000 /* Designate port as a reply port. */ #define MPO_ENFORCE_REPLY_PORT_SEMANTICS 0x2000 /* When talking to this port, local port of mach msg needs to follow reply port semantics.*/ #define MPO_PROVISIONAL_REPLY_PORT 0x4000 /* Designate port as a provisional reply port. */ -#define MPO_PROVISIONAL_ID_PROT_OPTOUT 0x8000 /* Opted out of EXCEPTION_IDENTITY_PROTECTED violation for now */ +#define MPO_EXCEPTION_PORT 0x8000 /* Used for hardened exceptions - immovable */ /* @@ -429,48 +426,59 @@ typedef mach_port_options_t *mach_port_options_ptr_t; */ #define GUARD_TYPE_MACH_PORT 0x1 -/* Reasons for exception for a guarded mach port */ +/* + * Reasons for exception for a guarded mach port + * + * Arguments are documented in doc/mach_ipc/guard_exceptions.md, + * please update when adding a new type. + * + * Note: these had been designed as bitfields, + * hence the weird spaced values, + * but are truly an enum, please add new values in the "holes". + */ enum mach_port_guard_exception_codes { - kGUARD_EXC_DESTROY = 1, - kGUARD_EXC_MOD_REFS = 2, - kGUARD_EXC_INVALID_OPTIONS = 3, - kGUARD_EXC_SET_CONTEXT = 4, - kGUARD_EXC_THREAD_SET_STATE = 5, - kGUARD_EXC_EXCEPTION_BEHAVIOR_ENFORCE= 6, - kGUARD_EXC_UNGUARDED = 1u << 3, - kGUARD_EXC_INCORRECT_GUARD = 1u << 4, - kGUARD_EXC_IMMOVABLE = 1u << 5, - kGUARD_EXC_STRICT_REPLY = 1u << 6, - kGUARD_EXC_MSG_FILTERED = 1u << 7, + kGUARD_EXC_DESTROY = 1, + kGUARD_EXC_MOD_REFS = 2, + kGUARD_EXC_INVALID_OPTIONS = 3, + kGUARD_EXC_SET_CONTEXT = 4, + kGUARD_EXC_THREAD_SET_STATE = 5, + kGUARD_EXC_EXCEPTION_BEHAVIOR_ENFORCE = 6, + kGUARD_EXC_SERVICE_PORT_VIOLATION_FATAL = 7, /* unused, for future sp defense enablement */ + kGUARD_EXC_UNGUARDED = 8, + kGUARD_EXC_INCORRECT_GUARD = 16, + kGUARD_EXC_IMMOVABLE = 32, + kGUARD_EXC_STRICT_REPLY = 64, + kGUARD_EXC_MSG_FILTERED = 128, /* start of [optionally] non-fatal guards */ - kGUARD_EXC_INVALID_RIGHT = 1u << 8, - kGUARD_EXC_INVALID_NAME = 1u << 9, - kGUARD_EXC_INVALID_VALUE = 1u << 10, - kGUARD_EXC_INVALID_ARGUMENT = 1u << 11, - kGUARD_EXC_RIGHT_EXISTS = 1u << 12, - kGUARD_EXC_KERN_NO_SPACE = 1u << 13, - kGUARD_EXC_KERN_FAILURE = 1u << 14, - kGUARD_EXC_KERN_RESOURCE = 1u << 15, - kGUARD_EXC_SEND_INVALID_REPLY = 1u << 16, - kGUARD_EXC_SEND_INVALID_VOUCHER = 1u << 17, - kGUARD_EXC_SEND_INVALID_RIGHT = 1u << 18, - kGUARD_EXC_RCV_INVALID_NAME = 1u << 19, + kGUARD_EXC_INVALID_RIGHT = 256, + kGUARD_EXC_INVALID_NAME = 512, + kGUARD_EXC_INVALID_VALUE = 1u << 10, + kGUARD_EXC_INVALID_ARGUMENT = 1u << 11, /* really kGUARD_EXC_ALREADY_GUARDED */ + kGUARD_EXC_RIGHT_EXISTS = 1u << 12, /* unused */ + kGUARD_EXC_KERN_NO_SPACE = 1u << 13, /* unused */ + kGUARD_EXC_KERN_FAILURE = 1u << 14, /* really kGUARD_EXC_INVALID_PDREQUEST */ + kGUARD_EXC_KERN_RESOURCE = 1u << 15, /* unused */ + kGUARD_EXC_SEND_INVALID_REPLY = 1u << 16, + kGUARD_EXC_SEND_INVALID_VOUCHER = 1u << 17, + kGUARD_EXC_SEND_INVALID_RIGHT = 1u << 18, + kGUARD_EXC_RCV_INVALID_NAME = 1u << 19, /* start of always non-fatal guards */ - kGUARD_EXC_RCV_GUARDED_DESC = 1u << 20, /* for development only */ + kGUARD_EXC_RCV_GUARDED_DESC = 0x00100000, /* for development only */ + kGUARD_EXC_SERVICE_PORT_VIOLATION_NON_FATAL = 0x00100001, /* unused, for future sp defense enablement */ + kGUARD_EXC_PROVISIONAL_REPLY_PORT = 0x00100002, kGUARD_EXC_MOD_REFS_NON_FATAL = 1u << 21, kGUARD_EXC_IMMOVABLE_NON_FATAL = 1u << 22, kGUARD_EXC_REQUIRE_REPLY_PORT_SEMANTICS = 1u << 23, }; -#define MAX_FATAL_kGUARD_EXC_CODE (1u << 7) +#define MAX_FATAL_kGUARD_EXC_CODE kGUARD_EXC_MSG_FILTERED +#define MAX_OPTIONAL_kGUARD_EXC_CODE kGUARD_EXC_RCV_INVALID_NAME /* * Mach port guard flags. */ #define MPG_FLAGS_NONE (0x00ull) -#define MAX_OPTIONAL_kGUARD_EXC_CODE (1u << 19) - /* * These flags are used as bits in the subcode of kGUARD_EXC_STRICT_REPLY exceptions. */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/shared_region.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/shared_region.h index 7d9dffa3..5a67b9d2 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/shared_region.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/shared_region.h @@ -78,14 +78,14 @@ #define SHARED_REGION_NESTING_MAX_ARM ? #define SHARED_REGION_BASE_ARM64_32 0x1A000000ULL -#define SHARED_REGION_SIZE_ARM64_32 0xa6000000ULL /* up to 0xc0000000 */ +#define SHARED_REGION_SIZE_ARM64_32 0x88000000ULL /* up to 0xA2000000 */ #define SHARED_REGION_NESTING_BASE_ARM64_32 0x1A000000ULL -#define SHARED_REGION_NESTING_SIZE_ARM64_32 0xa6000000ULL +#define SHARED_REGION_NESTING_SIZE_ARM64_32 0x88000000ULL #define SHARED_REGION_NESTING_MIN_ARM64_32 ? #define SHARED_REGION_NESTING_MAX_ARM64_32 ? #define SHARED_REGION_BASE_ARM64 0x180000000ULL -#define SHARED_REGION_SIZE_ARM64 0x100000000ULL +#define SHARED_REGION_SIZE_ARM64 0x180000000ULL #define SHARED_REGION_NESTING_BASE_ARM64 SHARED_REGION_BASE_ARM64 #define SHARED_REGION_NESTING_SIZE_ARM64 SHARED_REGION_SIZE_ARM64 #define SHARED_REGION_NESTING_MIN_ARM64 ? @@ -146,7 +146,7 @@ struct shared_file_mapping_np { vm_prot_t sfm_init_prot; }; -struct shared_file_mapping_slide_np { +typedef struct shared_file_mapping_slide_np { /* address at which to create mapping */ mach_vm_address_t sms_address __kernel_data_semantics; /* size of region to map */ @@ -160,7 +160,17 @@ struct shared_file_mapping_slide_np { /* protections, plus flags, see below */ vm_prot_t sms_max_prot; vm_prot_t sms_init_prot; -}; +} shared_file_mapping_slide_np_t; +VM_DEFINE_UNSAFE_TYPE(shared_file_mapping_slide_np_t, shared_file_mapping_slide_np_ut, struct { + mach_vm_address_ut sms_address_u; + mach_vm_size_ut sms_size_u; + mach_vm_offset_ut sms_file_offset_u; + user_addr_ut sms_slide_size_u; + user_addr_ut sms_slide_start_u; + vm_prot_ut sms_max_prot_u; + vm_prot_ut sms_init_prot_u; +}); + struct shared_file_np { int sf_fd; /* file to be mapped into shared region */ uint32_t sf_mappings_count; /* number of mappings */ @@ -188,5 +198,12 @@ struct shared_file_np { #define VM_PROT_NOAUTH 0x40 #define VM_PROT_TRANSLATED_ALLOW_EXECUTE 0x80 +#define VM_PROT_SFM_EXTENSIONS_MASK \ + (VM_PROT_COW | \ + VM_PROT_ZF | \ + VM_PROT_SLIDE | \ + VM_PROT_NOAUTH | \ + VM_PROT_TRANSLATED_ALLOW_EXECUTE) + #endif /* _MACH_SHARED_REGION_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/std_types.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/std_types.defs index b8d14e45..ae3c1035 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/std_types.defs +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/std_types.defs @@ -96,8 +96,7 @@ type boolean_t = MACH_MSG_TYPE_BOOLEAN; type kern_return_t = int; type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - + VM_TYPE_SAFE_UNSAFE(vm_offset_t, pointer_ut); type mach_port_t = MACH_MSG_TYPE_COPY_SEND; type mach_port_array_t = array[] of mach_port_t; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/task.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/task.defs index b450c7ed..d4604ede 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/task.defs +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/task.defs @@ -128,18 +128,34 @@ task_threads( * Stash a handful of ports for the target task; child * tasks inherit this stash at task_create time. */ +#if LIBSYSCALL_INTERFACE routine mach_ports_register( target_task : task_t; init_port_set : mach_port_array_t = ^array[] of mach_port_t); +#else +routine _kernelrpc_mach_ports_register3( + target_task : task_t; + port1 : mach_port_t; + port2 : mach_port_t; + port3 : mach_port_t); +#endif /* * Retrieve the stashed ports for the target task. */ +#if LIBSYSCALL_INTERFACE routine mach_ports_lookup( target_task : task_t; out init_port_set : mach_port_array_t = ^array[] of mach_port_t); +#else +routine _kernelrpc_mach_ports_lookup3( + target_task : task_t; + out port1 : mach_port_t; + out port2 : mach_port_t; + out port3 : mach_port_t); +#endif /* * Returns information about the target task. @@ -576,5 +592,33 @@ routine task_map_kcdata_object_64( out kcd_addr_begin :mach_vm_address_t; out kcd_size :mach_vm_size_t); +/* + * When used in conjunction with thread_adopt_exception_handler, we call this a + * hardened mach exception handler, and it adds additional security guarantees to this exception port: + * 1. Enforces only a subset of exceptions, behaviours, and flavors + * may be used with this port + * 2. The `new_exception_port` must be created using MPO_EXCEPTION_PORT (implicitly immovable) + * 3. When using *STATE* behaviors of exception handling, only the PC is allowed to be set. + * 4. Setting the PC in an exception handler must be signed using a diversifier of + * signed_pc_key (if non-zero). You can pre-sign your PC + * state and then throw away the key to ensure that only a limited + * set of PC's may be used with this exception handler + * 5. Calling `[task,thread,host]_set_exception_ports` if you have the IPC_ONLY_ONE_EXCEPTION_PORT + * entitlement is disallowed, and you must use this hardened exception flow. + * If used with the traditional set_exception_ports functions, these + * security guarantees do not apply. + * You can only call this once per task. + * + * See tests/ipc/hardened_exceptions.c for examples. + */ +routine task_register_hardened_exception_handler( + task : task_t; + signed_pc_key : uint32_t; + exceptions_allowed : exception_mask_t; + behaviors_allowed : exception_behavior_t; + flavors_allowed : thread_state_flavor_t; + new_exception_port : mach_port_t); + + /* vim: set ft=c : */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/task.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/task.h index a5d01dbb..6e897139 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/task.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/task.h @@ -52,7 +52,7 @@ typedef function_table_entry *function_table_t; #endif /* AUTOTEST */ #ifndef task_MSG_COUNT -#define task_MSG_COUNT 65 +#define task_MSG_COUNT 66 #endif /* task_MSG_COUNT */ #include @@ -109,30 +109,32 @@ kern_return_t task_threads mach_msg_type_number_t *act_listCnt ); -/* Routine mach_ports_register */ +/* Routine _kernelrpc_mach_ports_register3 */ #ifdef mig_external mig_external #else extern #endif /* mig_external */ -kern_return_t mach_ports_register +kern_return_t _kernelrpc_mach_ports_register3 ( task_t target_task, - mach_port_array_t init_port_set, - mach_msg_type_number_t init_port_setCnt + mach_port_t port1, + mach_port_t port2, + mach_port_t port3 ); -/* Routine mach_ports_lookup */ +/* Routine _kernelrpc_mach_ports_lookup3 */ #ifdef mig_external mig_external #else extern #endif /* mig_external */ -kern_return_t mach_ports_lookup +kern_return_t _kernelrpc_mach_ports_lookup3 ( task_t target_task, - mach_port_array_t *init_port_set, - mach_msg_type_number_t *init_port_setCnt + mach_port_t *port1, + mach_port_t *port2, + mach_port_t *port3 ); /* Routine task_info */ @@ -922,6 +924,22 @@ kern_return_t task_map_kcdata_object_64 mach_vm_size_t *kcd_size ); +/* Routine task_register_hardened_exception_handler */ +#ifdef mig_external +mig_external +#else +extern +#endif /* mig_external */ +kern_return_t task_register_hardened_exception_handler +( + task_t task, + uint32_t signed_pc_key, + exception_mask_t exceptions_allowed, + exception_behavior_t behaviors_allowed, + thread_state_flavor_t flavors_allowed, + mach_port_t new_exception_port +); + __END_DECLS /********************** Caution **************************/ @@ -984,11 +1002,11 @@ __END_DECLS mach_msg_header_t Head; /* start of the kernel processed data */ mach_msg_body_t msgh_body; - mach_msg_ool_ports_descriptor_t init_port_set; + mach_msg_port_descriptor_t port1; + mach_msg_port_descriptor_t port2; + mach_msg_port_descriptor_t port3; /* end of the kernel processed data */ - NDR_record_t NDR; - mach_msg_type_number_t init_port_setCnt; - } __Request__mach_ports_register_t __attribute__((unused)); + } __Request___kernelrpc_mach_ports_register3_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) #endif @@ -998,7 +1016,7 @@ __END_DECLS #endif typedef struct { mach_msg_header_t Head; - } __Request__mach_ports_lookup_t __attribute__((unused)); + } __Request___kernelrpc_mach_ports_lookup3_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) #endif @@ -1024,7 +1042,7 @@ __END_DECLS NDR_record_t NDR; task_flavor_t flavor; mach_msg_type_number_t task_info_inCnt; - integer_t task_info_in[90]; + integer_t task_info_in[94]; } __Request__task_set_info_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) @@ -1772,6 +1790,25 @@ __END_DECLS #ifdef __MigPackStructs #pragma pack(pop) #endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + /* start of the kernel processed data */ + mach_msg_body_t msgh_body; + mach_msg_port_descriptor_t new_exception_port; + /* end of the kernel processed data */ + NDR_record_t NDR; + uint32_t signed_pc_key; + exception_mask_t exceptions_allowed; + exception_behavior_t behaviors_allowed; + thread_state_flavor_t flavors_allowed; + } __Request__task_register_hardened_exception_handler_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif #endif /* !__Request__task_subsystem__defined */ /* union of all requests */ @@ -1782,8 +1819,8 @@ union __RequestUnion__task_subsystem { __Request__task_create_t Request_task_create; __Request__task_terminate_t Request_task_terminate; __Request__task_threads_t Request_task_threads; - __Request__mach_ports_register_t Request_mach_ports_register; - __Request__mach_ports_lookup_t Request_mach_ports_lookup; + __Request___kernelrpc_mach_ports_register3_t Request__kernelrpc_mach_ports_register3; + __Request___kernelrpc_mach_ports_lookup3_t Request__kernelrpc_mach_ports_lookup3; __Request__task_info_t Request_task_info; __Request__task_set_info_t Request_task_set_info; __Request__task_suspend_t Request_task_suspend; @@ -1843,6 +1880,7 @@ union __RequestUnion__task_subsystem { __Request__task_set_corpse_forking_behavior_t Request_task_set_corpse_forking_behavior; __Request__task_test_async_upcall_propagation_t Request_task_test_async_upcall_propagation; __Request__task_map_kcdata_object_64_t Request_task_map_kcdata_object_64; + __Request__task_register_hardened_exception_handler_t Request_task_register_hardened_exception_handler; }; #endif /* !__RequestUnion__task_subsystem__defined */ /* typedefs for all replies */ @@ -1899,7 +1937,7 @@ union __RequestUnion__task_subsystem { mach_msg_header_t Head; NDR_record_t NDR; kern_return_t RetCode; - } __Reply__mach_ports_register_t __attribute__((unused)); + } __Reply___kernelrpc_mach_ports_register3_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) #endif @@ -1911,11 +1949,11 @@ union __RequestUnion__task_subsystem { mach_msg_header_t Head; /* start of the kernel processed data */ mach_msg_body_t msgh_body; - mach_msg_ool_ports_descriptor_t init_port_set; + mach_msg_port_descriptor_t port1; + mach_msg_port_descriptor_t port2; + mach_msg_port_descriptor_t port3; /* end of the kernel processed data */ - NDR_record_t NDR; - mach_msg_type_number_t init_port_setCnt; - } __Reply__mach_ports_lookup_t __attribute__((unused)); + } __Reply___kernelrpc_mach_ports_lookup3_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) #endif @@ -1928,7 +1966,7 @@ union __RequestUnion__task_subsystem { NDR_record_t NDR; kern_return_t RetCode; mach_msg_type_number_t task_info_outCnt; - integer_t task_info_out[90]; + integer_t task_info_out[94]; } __Reply__task_info_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) @@ -2705,6 +2743,18 @@ union __RequestUnion__task_subsystem { #ifdef __MigPackStructs #pragma pack(pop) #endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + kern_return_t RetCode; + } __Reply__task_register_hardened_exception_handler_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif #endif /* !__Reply__task_subsystem__defined */ /* union of all replies */ @@ -2715,8 +2765,8 @@ union __ReplyUnion__task_subsystem { __Reply__task_create_t Reply_task_create; __Reply__task_terminate_t Reply_task_terminate; __Reply__task_threads_t Reply_task_threads; - __Reply__mach_ports_register_t Reply_mach_ports_register; - __Reply__mach_ports_lookup_t Reply_mach_ports_lookup; + __Reply___kernelrpc_mach_ports_register3_t Reply__kernelrpc_mach_ports_register3; + __Reply___kernelrpc_mach_ports_lookup3_t Reply__kernelrpc_mach_ports_lookup3; __Reply__task_info_t Reply_task_info; __Reply__task_set_info_t Reply_task_set_info; __Reply__task_suspend_t Reply_task_suspend; @@ -2776,6 +2826,7 @@ union __ReplyUnion__task_subsystem { __Reply__task_set_corpse_forking_behavior_t Reply_task_set_corpse_forking_behavior; __Reply__task_test_async_upcall_propagation_t Reply_task_test_async_upcall_propagation; __Reply__task_map_kcdata_object_64_t Reply_task_map_kcdata_object_64; + __Reply__task_register_hardened_exception_handler_t Reply_task_register_hardened_exception_handler; }; #endif /* !__RequestUnion__task_subsystem__defined */ @@ -2784,8 +2835,8 @@ union __ReplyUnion__task_subsystem { { "task_create", 3400 },\ { "task_terminate", 3401 },\ { "task_threads", 3402 },\ - { "mach_ports_register", 3403 },\ - { "mach_ports_lookup", 3404 },\ + { "_kernelrpc_mach_ports_register3", 3403 },\ + { "_kernelrpc_mach_ports_lookup3", 3404 },\ { "task_info", 3405 },\ { "task_set_info", 3406 },\ { "task_suspend", 3407 },\ @@ -2844,7 +2895,8 @@ union __ReplyUnion__task_subsystem { { "task_test_sync_upcall", 3461 },\ { "task_set_corpse_forking_behavior", 3462 },\ { "task_test_async_upcall_propagation", 3463 },\ - { "task_map_kcdata_object_64", 3464 } + { "task_map_kcdata_object_64", 3464 },\ + { "task_register_hardened_exception_handler", 3465 } #endif #ifdef __AfterMigUserHeader diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/task_info.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/task_info.h index d13fdf22..3d16d562 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/task_info.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/task_info.h @@ -402,12 +402,21 @@ struct task_vm_info { /* added for rev6 */ int64_t ledger_swapins; + + /* added for rev7 */ + int64_t ledger_tag_neural_nofootprint_total; + int64_t ledger_tag_neural_nofootprint_peak; }; typedef struct task_vm_info task_vm_info_data_t; typedef struct task_vm_info *task_vm_info_t; #define TASK_VM_INFO_COUNT ((mach_msg_type_number_t) \ (sizeof (task_vm_info_data_t) / sizeof (natural_t))) -#define TASK_VM_INFO_REV6_COUNT TASK_VM_INFO_COUNT +/* + * The capacity of task_info_t in mach_types.defs also needs to be adjusted + */ +#define TASK_VM_INFO_REV7_COUNT TASK_VM_INFO_COUNT +#define TASK_VM_INFO_REV6_COUNT /* doesn't include neural total and peak */ \ + ((mach_msg_type_number_t) (TASK_VM_INFO_REV7_COUNT - 4)) #define TASK_VM_INFO_REV5_COUNT /* doesn't include ledger swapins */ \ ((mach_msg_type_number_t) (TASK_VM_INFO_REV6_COUNT - 2)) #define TASK_VM_INFO_REV4_COUNT /* doesn't include decompressions */ \ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/task_policy.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/task_policy.h index 2ffe7166..c1bb8338 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/task_policy.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/task_policy.h @@ -172,7 +172,7 @@ typedef struct task_qos_policy *task_qos_policy_t; #define PROC_FLAG_DARWINBG 0x8000 /* process in darwin background */ #define PROC_FLAG_EXT_DARWINBG 0x10000 /* process in darwin background - external enforcement */ #define PROC_FLAG_IOS_APPLEDAEMON 0x20000 /* process is apple ios daemon */ -#define PROC_FLAG_IOS_IMPPROMOTION 0x80000 /* process is apple ios daemon */ +#define PROC_FLAG_IOS_IMPPROMOTION 0x80000 /* process is able to receive an importance donation */ #define PROC_FLAG_ADAPTIVE 0x100000 /* Process is adaptive */ #define PROC_FLAG_ADAPTIVE_IMPORTANT 0x200000 /* Process is adaptive, and is currently important */ #define PROC_FLAG_IMPORTANCE_DONOR 0x400000 /* Process is marked as an importance donor */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/thread_act.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/thread_act.defs index 1e4664f4..998b101e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/thread_act.defs +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/thread_act.defs @@ -391,4 +391,16 @@ routine thread_get_exception_ports_info( out old_behaviors : exception_behavior_array_t, SameCount; out old_flavors : exception_flavor_array_t, SameCount); +/* + * Calls thread_set_exception_ports on thread using a previously registered + * hardened exception handler. Only one hardened exception handler is allowed + * per task. + */ +routine thread_adopt_exception_handler( + thread : thread_t; + exc_port : mach_port_t; + exc_mask : exception_mask_t; + behavior_mask : exception_behavior_t; + flavor_mask :thread_state_flavor_t); + /* vim: set ft=c : */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/thread_act.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/thread_act.h index b61dbaa7..1bb568ff 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/thread_act.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/thread_act.h @@ -52,7 +52,7 @@ typedef function_table_entry *function_table_t; #endif /* AUTOTEST */ #ifndef thread_act_MSG_COUNT -#define thread_act_MSG_COUNT 31 +#define thread_act_MSG_COUNT 32 #endif /* thread_act_MSG_COUNT */ #include @@ -475,6 +475,21 @@ kern_return_t thread_get_exception_ports_info exception_flavor_array_t old_flavors ); +/* Routine thread_adopt_exception_handler */ +#ifdef mig_external +mig_external +#else +extern +#endif /* mig_external */ +kern_return_t thread_adopt_exception_handler +( + thread_t thread, + mach_port_t exc_port, + exception_mask_t exc_mask, + exception_behavior_t behavior_mask, + thread_state_flavor_t flavor_mask +); + __END_DECLS /********************** Caution **************************/ @@ -887,6 +902,24 @@ __END_DECLS #ifdef __MigPackStructs #pragma pack(pop) #endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + /* start of the kernel processed data */ + mach_msg_body_t msgh_body; + mach_msg_port_descriptor_t exc_port; + /* end of the kernel processed data */ + NDR_record_t NDR; + exception_mask_t exc_mask; + exception_behavior_t behavior_mask; + thread_state_flavor_t flavor_mask; + } __Request__thread_adopt_exception_handler_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif #endif /* !__Request__thread_act_subsystem__defined */ /* union of all requests */ @@ -924,6 +957,7 @@ union __RequestUnion__thread_act_subsystem { __Request__thread_swap_mach_voucher_t Request_thread_swap_mach_voucher; __Request__thread_convert_thread_state_t Request_thread_convert_thread_state; __Request__thread_get_exception_ports_info_t Request_thread_get_exception_ports_info; + __Request__thread_adopt_exception_handler_t Request_thread_adopt_exception_handler; }; #endif /* !__RequestUnion__thread_act_subsystem__defined */ /* typedefs for all replies */ @@ -1328,6 +1362,18 @@ union __RequestUnion__thread_act_subsystem { #ifdef __MigPackStructs #pragma pack(pop) #endif + +#ifdef __MigPackStructs +#pragma pack(push, 4) +#endif + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + kern_return_t RetCode; + } __Reply__thread_adopt_exception_handler_t __attribute__((unused)); +#ifdef __MigPackStructs +#pragma pack(pop) +#endif #endif /* !__Reply__thread_act_subsystem__defined */ /* union of all replies */ @@ -1365,6 +1411,7 @@ union __ReplyUnion__thread_act_subsystem { __Reply__thread_swap_mach_voucher_t Reply_thread_swap_mach_voucher; __Reply__thread_convert_thread_state_t Reply_thread_convert_thread_state; __Reply__thread_get_exception_ports_info_t Reply_thread_get_exception_ports_info; + __Reply__thread_adopt_exception_handler_t Reply_thread_adopt_exception_handler; }; #endif /* !__RequestUnion__thread_act_subsystem__defined */ @@ -1399,7 +1446,8 @@ union __ReplyUnion__thread_act_subsystem { { "thread_set_mach_voucher", 3626 },\ { "thread_swap_mach_voucher", 3627 },\ { "thread_convert_thread_state", 3628 },\ - { "thread_get_exception_ports_info", 3630 } + { "thread_get_exception_ports_info", 3630 },\ + { "thread_adopt_exception_handler", 3631 } #endif #ifdef __AfterMigUserHeader diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vfs_nspace.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vfs_nspace.h index 9ba385a7..68a3da48 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vfs_nspace.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vfs_nspace.h @@ -108,7 +108,7 @@ kern_return_t send_nspace_resolve_path uint32_t pid, uint32_t op, nspace_path_t path, - int *xxx_rdar44371223 + int *resolve_error ); /* Routine vfs_resolve_file */ @@ -386,7 +386,7 @@ union __RequestUnion__send_vfs_nspace_subsystem { mach_msg_header_t Head; NDR_record_t NDR; kern_return_t RetCode; - int xxx_rdar44371223; + int resolve_error; } __Reply__nspace_resolve_path_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vfs_nspace_server.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vfs_nspace_server.h index b9ac3cd9..c49a70b3 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vfs_nspace_server.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vfs_nspace_server.h @@ -112,7 +112,7 @@ kern_return_t receive_nspace_resolve_path uint32_t pid, uint32_t op, nspace_path_t path, - int *xxx_rdar44371223 + int *resolve_error ); /* Routine vfs_resolve_file */ @@ -415,7 +415,7 @@ union __RequestUnion__receive_vfs_nspace_subsystem { mach_msg_header_t Head; NDR_record_t NDR; kern_return_t RetCode; - int xxx_rdar44371223; + int resolve_error; } __Reply__nspace_resolve_path_t __attribute__((unused)); #ifdef __MigPackStructs #pragma pack(pop) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_behavior.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_behavior.h index 727980d5..c5a78881 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_behavior.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_behavior.h @@ -51,6 +51,10 @@ typedef int vm_behavior_t; * These describe expected page reference behavior for * for a given range of virtual memory. For implementation * details see vm/vm_fault.c + * + * When making a new VM_BEHAVIOR_*, update tests vm_parameter_validation_[user|kern] + * and their expected results; they deliberately call VM functions with invalid + * behavior values and you may be turning one of those invalid behaviors valid. */ @@ -74,6 +78,9 @@ typedef int vm_behavior_t; #define VM_BEHAVIOR_REUSABLE ((vm_behavior_t) 8) #define VM_BEHAVIOR_REUSE ((vm_behavior_t) 9) #define VM_BEHAVIOR_CAN_REUSE ((vm_behavior_t) 10) -#define VM_BEHAVIOR_PAGEOUT ((vm_behavior_t) 11) +#define VM_BEHAVIOR_PAGEOUT ((vm_behavior_t) 11) /* force page-out of the pages in range (development only) */ +#define VM_BEHAVIOR_ZERO ((vm_behavior_t) 12) /* zero pages without faulting in additional pages */ + +#define VM_BEHAVIOR_LAST_VALID (VM_BEHAVIOR_ZERO) #endif /*_MACH_VM_BEHAVIOR_H_*/ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_inherit.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_inherit.h index 528d6917..380f5207 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_inherit.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_inherit.h @@ -76,6 +76,10 @@ typedef unsigned int vm_inherit_t; /* might want to change this */ /* * Enumeration of valid values for vm_inherit_t. + * + * When making a new VM_INHERIT_*, update tests vm_parameter_validation_[user|kern] + * and their expected results; they deliberately call VM functions with invalid + * inherit values and you may be turning one of those invalid inherits valid. */ #define VM_INHERIT_SHARE ((vm_inherit_t) 0) /* share with child */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_map.defs b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_map.defs index e4bba800..63996d9d 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_map.defs +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_map.defs @@ -67,6 +67,10 @@ subsystem #endif /* KERNEL_SERVER || KOBJECT_SERVER */ vm_map 3800; +#if KERNEL_SERVER +#define VM_KERNEL_SERVER 1 +#endif + #include #include #include @@ -235,7 +239,7 @@ routine vm_msync( target_task : vm_map_t; address : vm_address_t; size : vm_size_t; - sync_flags : vm_sync_t ); + sync_flags : vm_sync_t); /* * Set the paging behavior attribute for the specified range @@ -466,19 +470,19 @@ routine vm_map_exec_lockdown( routine PREFIX(KERNEL_SERVER_SUFFIX(vm_remap_new)) ( target_task : vm_map_t; -inout target_address : vm_address_t; + inout target_address : vm_address_t; size : vm_size_t; mask : vm_address_t; flags : int; #ifdef KERNEL_SERVER - src_tport : mach_port_t; + src_tport : mach_port_t; #else src_task : vm_map_read_t; #endif src_address : vm_address_t; copy : boolean_t; -inout cur_protection : vm_prot_t; -inout max_protection : vm_prot_t; + inout cur_protection : vm_prot_t; + inout max_protection : vm_prot_t; inheritance : vm_inherit_t); /* vim: set ft=c : */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_param.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_param.h index f6cc3a46..343b1d1e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_param.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_param.h @@ -260,6 +260,14 @@ extern uint64_t max_mem; /* 64-bit size of memory - limit */ #define MALLOC_MEDIUM_CHUNK_SIZE (8ULL * 1024 * 1024) /* 8 MB */ +/** + * The size of the largest allocation which can be used in the kernel without + * special accessors/attributes. When using accessors/attributes, this limit can + * be overridden when making allocations/mappings through various APIs by + * setting the "no soft limit" option. + */ +#define VM_KERNEL_SIMPLE_MAX_SIZE (1ULL << 30) /* 1GB */ + extern vm_size_t page_size; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_prot.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_prot.h index 2f48ab67..a5d6627b 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_prot.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_prot.h @@ -76,6 +76,10 @@ typedef int vm_prot_t; /* * Protection values, defined as bits within the vm_prot_t type + * + * When making a new VM_PROT_*, update tests vm_parameter_validation_[user|kern] + * and their expected results; they deliberately call VM functions with invalid + * vm_prot values and you may be turning one of those invalid protections valid. */ #define VM_PROT_NONE ((vm_prot_t) 0x00) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_purgable.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_purgable.h index 80ea756d..48535183 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_purgable.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_purgable.h @@ -54,6 +54,10 @@ typedef int vm_purgable_t; /* * Enumeration of valid values for vm_purgable_t. + * + * When making a new VM_PURGABLE_*, update tests vm_parameter_validation_[user|kern] + * and their expected results; they deliberately call VM functions with invalid + * values and you may be turning one of those invalid bits valid. */ #define VM_PURGABLE_SET_STATE ((vm_purgable_t) 0) /* set state of purgeable object */ #define VM_PURGABLE_GET_STATE ((vm_purgable_t) 1) /* get state of purgeable object */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_region.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_region.h index f6f371fa..db214844 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_region.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_region.h @@ -71,6 +71,7 @@ typedef int *vm_region_recurse_info_64_t; typedef int vm_region_flavor_t; typedef int vm_region_info_data_t[VM_REGION_INFO_MAX]; + #define VM_REGION_BASIC_INFO_64 9 struct vm_region_basic_info_64 { vm_prot_t protection; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_statistics.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_statistics.h index 8e0a4d23..97990605 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_statistics.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_statistics.h @@ -66,6 +66,7 @@ #ifndef _MACH_VM_STATISTICS_H_ #define _MACH_VM_STATISTICS_H_ +#include #include #include @@ -332,17 +333,29 @@ typedef struct vm_purgeable_info *vm_purgeable_info_t; #define GUARD_TYPE_VIRT_MEMORY 0x5 /* Reasons for exception for virtual memory */ -enum virtual_memory_guard_exception_codes { - kGUARD_EXC_DEALLOC_GAP = 1u << 0, - kGUARD_EXC_RECLAIM_COPYIO_FAILURE = 1u << 1, - kGUARD_EXC_RECLAIM_INDEX_FAILURE = 1u << 2, - kGUARD_EXC_RECLAIM_DEALLOCATE_FAILURE = 1u << 3, -}; +__enum_decl(virtual_memory_guard_exception_code_t, uint32_t, { + kGUARD_EXC_DEALLOC_GAP = 1, + kGUARD_EXC_RECLAIM_COPYIO_FAILURE = 2, + kGUARD_EXC_SEC_LOOKUP_DENIED = 3, + kGUARD_EXC_RECLAIM_INDEX_FAILURE = 4, + kGUARD_EXC_SEC_RANGE_DENIED = 6, + kGUARD_EXC_SEC_ACCESS_FAULT = 7, + kGUARD_EXC_RECLAIM_DEALLOCATE_FAILURE = 8, + kGUARD_EXC_SEC_COPY_DENIED = 16, + kGUARD_EXC_SEC_SHARING_DENIED = 32, + kGUARD_EXC_SEC_ASYNC_ACCESS_FAULT = 64, +}); /* current accounting postmark */ #define __VM_LEDGER_ACCOUNTING_POSTMARK 2019032600 +/* + * When making a new VM_LEDGER_TAG_* or VM_LEDGER_FLAG_*, update tests + * vm_parameter_validation_[user|kern] and their expected results; they + * deliberately call VM functions with invalid ledger values and you may + * be turning one of those invalid tags/flags valid. + */ /* discrete values: */ #define VM_LEDGER_TAG_NONE 0x00000000 #define VM_LEDGER_TAG_DEFAULT 0x00000001 @@ -354,10 +367,12 @@ enum virtual_memory_guard_exception_codes { #define VM_LEDGER_TAG_UNCHANGED ((int)-1) /* individual bits: */ -#define VM_LEDGER_FLAG_NO_FOOTPRINT (1 << 0) +#define VM_LEDGER_FLAG_NO_FOOTPRINT (1 << 0) #define VM_LEDGER_FLAG_NO_FOOTPRINT_FOR_DEBUG (1 << 1) -#define VM_LEDGER_FLAGS (VM_LEDGER_FLAG_NO_FOOTPRINT | VM_LEDGER_FLAG_NO_FOOTPRINT_FOR_DEBUG) +#define VM_LEDGER_FLAG_FROM_KERNEL (1 << 2) +#define VM_LEDGER_FLAGS_USER (VM_LEDGER_FLAG_NO_FOOTPRINT | VM_LEDGER_FLAG_NO_FOOTPRINT_FOR_DEBUG) +#define VM_LEDGER_FLAGS_ALL (VM_LEDGER_FLAGS_USER | VM_LEDGER_FLAG_FROM_KERNEL) #define VM_MEMORY_MALLOC 1 #define VM_MEMORY_MALLOC_SMALL 2 diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_sync.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_sync.h index 8dccb9c2..06d5a772 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_sync.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_sync.h @@ -67,6 +67,10 @@ typedef unsigned vm_sync_t; /* * Synchronization flags, defined as bits within the vm_sync_t type + * + * When making a new VM_SYNC_*, update tests vm_parameter_validation_[user|kern] + * and their expected results; they deliberately call VM functions with invalid + * sync values and you may be turning one of those invalid syncs valid. */ #define VM_SYNC_ASYNCHRONOUS ((vm_sync_t) 0x01) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_types_unsafe.h b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_types_unsafe.h new file mode 100644 index 00000000..5b5eeefc --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/mach/vm_types_unsafe.h @@ -0,0 +1,208 @@ +/* + * Copyright (c) 2024 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef _VM_UNSAFE_TYPES_H_ +#define _VM_UNSAFE_TYPES_H_ + +#include + +/* + * Macro to generate a wrapped "struct" that preserves ABI, + * but prevents direct manipulation of the type. + * + * The transparent union is needed because of arm64 which for "Composite" + * arguments passed on the stack will align them to 8 byte boundaries as per + * spec: + * + * If the argument is an alignment adjusted type its value is passed as + * a copy of the actual value. The copy will have an alignment defined as + * follows: + * + * - For a Fundamental Data Type, the alignment is the natural alignment + * of that type, after any promotions. + * - For a Composite Type, the alignment of the copy will have 8-byte + * alignment if its natural alignment is ≤ 8 and 16-byte alignment + * if its natural alignment is ≥ 16. + */ +#if defined(__cplusplus) +#define VM_GENERATE_UNSAFE_WRAPPER(_safe_type, _unsafe_type) \ + typedef _safe_type _unsafe_type +#else +#define VM_GENERATE_UNSAFE_WRAPPER(_safe_type, _unsafe_type) \ + typedef union { _safe_type UNSAFE; } _unsafe_type \ + __attribute__((transparent_union)); \ + _Static_assert(sizeof(_safe_type) == sizeof(_unsafe_type), \ + "Size mismatch between unsafe and safe versions of a type") +#endif + +VM_GENERATE_UNSAFE_WRAPPER(uint64_t, vm_addr_struct_t); +VM_GENERATE_UNSAFE_WRAPPER(uint64_t, vm_size_struct_t); +VM_GENERATE_UNSAFE_WRAPPER(uint32_t, vm32_addr_struct_t); +VM_GENERATE_UNSAFE_WRAPPER(uint32_t, vm32_size_struct_t); + +/* + * Macros used to create a struct-wrapped type (called "unsafe" type) + * around a standard VM type. + */ +#if VM_UNSAFE_TYPES +#if defined(__cplusplus) +/* + * C++ doesn't support transparent_unions which fortunately isn't something + * we need, as files who need to see unsafe types as structs are all C code + */ +#error "Can't turn on unsafe types in C++" +#endif + +/* + * For defining a custom unsafe type that doesn't directly follow the + * transparent union model, and needs to be properly typedef'd outside of + * the VM subsystem. + */ +#define VM_DEFINE_UNSAFE_TYPE(_safe_type, _unsafe_type, _unsafe_contents) \ + typedef _unsafe_contents _unsafe_type; \ + _Static_assert( \ + ( \ + sizeof(_unsafe_type) \ + == sizeof(_safe_type)) \ + && ( \ + _Alignof(_unsafe_type) \ + == _Alignof(_safe_type)), \ + "Unsafe type should be compatible with corresponding safe type.") + +#define VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_WRAPPER(_safe_type, _unsafe_type) + +#define VM_GENERATE_UNSAFE_BSD_TYPE(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_WRAPPER(_safe_type, _unsafe_type) + +/* + * Don't use this variant directly. Use VM_GENERATE_UNSAFE_ADDR or + * VM_GENERATE_UNSAFE_SIZE. + */ +#define VM_GENERATE_UNSAFE_EXT(_safe_type, _unsafe_type, variant, size) \ + typedef vm ## size ## _ ## variant ## _struct_t _unsafe_type; \ + _Static_assert(sizeof(_safe_type) == sizeof(_unsafe_type), \ + "Size mismatch between unsafe and safe versions of a type") \ + +#define VM_GENERATE_UNSAFE_BSD_EXT(_safe_type, _unsafe_type, variant, size) \ + typedef vm ## size ## _ ## variant ## _struct_t _unsafe_type; \ + _Static_assert(sizeof(_safe_type) == sizeof(_unsafe_type), \ + "Size mismatch between unsafe and safe versions of a type") +/* + * Use these variants for addresses and sizes as some types of addr/size + * are unsigned longs while others are unsigned long longs. Compiler + * is unhappy about conversions between unsafe pointers of the two. + */ +#define VM_GENERATE_UNSAFE_ADDR(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_EXT(_safe_type, _unsafe_type, addr, ) + +#define VM_GENERATE_UNSAFE_SIZE(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_EXT(_safe_type, _unsafe_type, size, ) + +#define VM_GENERATE_UNSAFE_BSD_ADDR(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_EXT(_safe_type, _unsafe_type, addr, ) + +#define VM_GENERATE_UNSAFE_BSD_SIZE(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_EXT(_safe_type, _unsafe_type, size, ) + +#define VM_GENERATE_UNSAFE_ADDR32(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_EXT(_safe_type, _unsafe_type, addr, 32) + +#define VM_GENERATE_UNSAFE_SIZE32(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_EXT(_safe_type, _unsafe_type, size, 32) + +#else /* VM_UNSAFE_TYPES */ +#define VM_DEFINE_UNSAFE_TYPE(_safe_type, _unsafe_type, _unsafe_contents) \ + typedef _safe_type _unsafe_type + +#define VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type) \ + VM_DEFINE_UNSAFE_TYPE(_safe_type, _unsafe_type, ) + +#define VM_GENERATE_UNSAFE_ADDR(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type) + +#define VM_GENERATE_UNSAFE_SIZE(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type) + +#define VM_GENERATE_UNSAFE_ADDR32(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type) + +#define VM_GENERATE_UNSAFE_SIZE32(_safe_type, _unsafe_type) \ + VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type) + +#endif /* VM_UNSAFE_TYPES */ + +VM_GENERATE_UNSAFE_ADDR(mach_vm_address_t, mach_vm_address_ut); +VM_GENERATE_UNSAFE_ADDR(mach_vm_offset_t, mach_vm_offset_ut); +VM_GENERATE_UNSAFE_SIZE(mach_vm_size_t, mach_vm_size_ut); + +VM_GENERATE_UNSAFE_ADDR(vm_address_t, vm_address_ut); +VM_GENERATE_UNSAFE_ADDR(vm_offset_t, vm_offset_ut); +VM_GENERATE_UNSAFE_SIZE(vm_size_t, vm_size_ut); + +VM_GENERATE_UNSAFE_ADDR(vm_map_address_t, vm_map_address_ut); +VM_GENERATE_UNSAFE_ADDR(vm_map_offset_t, vm_map_offset_ut); +VM_GENERATE_UNSAFE_SIZE(vm_map_size_t, vm_map_size_ut); + +VM_GENERATE_UNSAFE_ADDR(memory_object_offset_t, memory_object_offset_ut); +VM_GENERATE_UNSAFE_SIZE(memory_object_size_t, memory_object_size_ut); + +VM_GENERATE_UNSAFE_ADDR(vm_object_offset_t, vm_object_offset_ut); +VM_GENERATE_UNSAFE_SIZE(vm_object_size_t, vm_object_size_ut); + +VM_GENERATE_UNSAFE_ADDR(pointer_t, pointer_ut); + + +VM_GENERATE_UNSAFE_TYPE(vm_prot_t, vm_prot_ut); +VM_GENERATE_UNSAFE_TYPE(vm_inherit_t, vm_inherit_ut); +VM_GENERATE_UNSAFE_TYPE(vm_behavior_t, vm_behavior_ut); + +#if VM_UNSAFE_TYPES +VM_GENERATE_UNSAFE_BSD_ADDR(caddr_t, caddr_ut); +VM_GENERATE_UNSAFE_BSD_ADDR(user_addr_t, user_addr_ut); +VM_GENERATE_UNSAFE_BSD_SIZE(size_t, size_ut); +VM_GENERATE_UNSAFE_BSD_SIZE(user_size_t, user_size_ut); +#endif /* VM_UNSAFE_TYPES */ + +VM_DEFINE_UNSAFE_TYPE(struct mach_vm_range, mach_vm_range_ut, struct { + mach_vm_offset_ut min_address_u; + mach_vm_offset_ut max_address_u; +}); + +#pragma pack(1) + +VM_DEFINE_UNSAFE_TYPE(mach_vm_range_recipe_v1_t, mach_vm_range_recipe_v1_ut, struct { + mach_vm_range_flags_t flags: 48; + mach_vm_range_tag_t range_tag: 8; + uint8_t vm_tag: 8; + mach_vm_range_ut range_u; +}); + +#pragma pack() + +#endif /* _VM_UNSAFE_TYPES_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/machine/_endian.h b/Frameworks/Kernel.framework/Versions/A/Headers/machine/_endian.h new file mode 100644 index 00000000..9be39e11 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/machine/_endian.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2000-2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ +/* + * Copyright 1995 NeXT Computer, Inc. All rights reserved. + */ +#ifndef _BSD_MACHINE__ENDIAN_H_ +#define _BSD_MACHINE__ENDIAN_H_ + +#if defined (__i386__) || defined(__x86_64__) +#include +#elif defined (__arm__) || defined (__arm64__) +#include +#else +#error architecture not supported +#endif + +#endif /* _BSD_MACHINE__ENDIAN_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/machine/machine_perfmon.h b/Frameworks/Kernel.framework/Versions/A/Headers/machine/machine_perfmon.h deleted file mode 100644 index c245ead9..00000000 --- a/Frameworks/Kernel.framework/Versions/A/Headers/machine/machine_perfmon.h +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) 2020 Apple Inc. All rights reserved. -// -// @APPLE_OSREFERENCE_LICENSE_HEADER_START@ -// -// This file contains Original Code and/or Modifications of Original Code -// as defined in and that are subject to the Apple Public Source License -// Version 2.0 (the 'License'). You may not use this file except in -// compliance with the License. The rights granted to you under the License -// may not be used to create, or enable the creation or redistribution of, -// unlawful or unlicensed copies of an Apple operating system, or to -// circumvent, violate, or enable the circumvention or violation of, any -// terms of an Apple operating system software license agreement. -// -// Please obtain a copy of the License at -// http://www.opensource.apple.com/apsl/ and read it before using this file. -// -// The Original Code and all software distributed under the License are -// distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER -// EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, -// INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. -// Please see the License for the specific language governing rights and -// limitations under the License. -// -// @APPLE_OSREFERENCE_LICENSE_HEADER_END@ - -#include -#include -#include -#include - -struct perfmon_counter { - uint64_t pc_number; -}; - -struct perfmon_config { - struct perfmon_source *pc_source; - struct perfmon_spec pc_spec; - unsigned short pc_attr_ids[PERFMON_SPEC_MAX_ATTR_COUNT]; - - struct perfmon_counter *pc_counters; - uint64_t pc_counters_used; - uint64_t pc_attrs_used; - - bool pc_configured:1; -}; -static_assert(PERFMON_SPEC_MAX_ATTR_COUNT < sizeof(uint64_t) * CHAR_BIT, - "attr IDs must fit in 64-bit integer"); - -/// Fill in an array of register values for all units. -void perfmon_machine_sample_regs(enum perfmon_kind kind, uint64_t *regs, - size_t regs_len); - -// Set up the counters as specified by the configuration. -int perfmon_machine_configure(enum perfmon_kind kind, - const perfmon_config_t config); - -// Reset the counters to an inactive state. -void perfmon_machine_reset(enum perfmon_kind kind); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/machine/machine_routines.h b/Frameworks/Kernel.framework/Versions/A/Headers/machine/machine_routines.h index 4e5a5c00..e49d6677 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/machine/machine_routines.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/machine/machine_routines.h @@ -111,6 +111,7 @@ void ml_io_write64(uintptr_t vaddr, uint64_t val); + __END_DECLS #endif /* _MACHINE_MACHINE_ROUTINES_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/machine/monotonic.h b/Frameworks/Kernel.framework/Versions/A/Headers/machine/monotonic.h index adcb5d8c..16ebcbbb 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/machine/monotonic.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/machine/monotonic.h @@ -28,6 +28,8 @@ #ifndef MACHINE_MONOTONIC_H #define MACHINE_MONOTONIC_H +#if CONFIG_CPU_COUNTERS + #if defined(__x86_64__) #include #elif defined(__arm64__) @@ -69,4 +71,6 @@ extern void *mt_microstackshot_ctx; extern uint64_t mt_core_reset_values[MT_CORE_NFIXED]; int mt_microstackshot_start_arch(uint64_t period); +#endif /* CONFIG_CPU_COUNTERS */ + #endif /* !defined(MACHINE_MONOTONIC_H) */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/machine/static_if.h b/Frameworks/Kernel.framework/Versions/A/Headers/machine/static_if.h new file mode 100644 index 00000000..4f27b600 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/machine/static_if.h @@ -0,0 +1,275 @@ +/* + * Copyright (c) 2021 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef _MACHINE_STATIC_IF_H +#define _MACHINE_STATIC_IF_H + +#include +#include +#include +#include +#include + +typedef const struct static_if_entry *static_if_entry_t; + +typedef struct static_if_key { + short sik_enable_count; + short sik_init_value; + unsigned sik_entries_count; + static_if_entry_t sik_entries_head; +} *static_if_key_t; + +#if defined (__x86_64__) +#include "x86_64/static_if.h" +#elif defined (__arm__) +#include "arm/static_if.h" +#elif defined (__arm64__) +#include "arm64/static_if.h" +#else +#error architecture not supported +#endif + +__BEGIN_DECLS +#pragma GCC visibility push(hidden) + +/* + * Declare/define a static jump key + * + * STATIC_IF_KEY_{DECLARE,DEFINE}_TRUE + * the static jump key initial enablement count is positive, + * and the key enabled. + * + * STATIC_IF_KEY_{DECLARE,DEFINE}_FALSE + * the static jump key initial enablement count is negative, + * and the key disabled. + * + * Enablement counts can be manipulated with @c static_if_key_{enable,disable}. + */ +#define STATIC_IF_KEY_DECLARE_TRUE(name) \ + extern struct static_if_key_true name##_jump_key + +#define STATIC_IF_KEY_DEFINE_TRUE(name) \ + __used struct static_if_key_true name##_jump_key = { \ + .key.sik_init_value = 0, \ + .key.sik_enable_count = 0, \ + } + +#define STATIC_IF_KEY_DECLARE_FALSE(name) \ + extern struct static_if_key_false name##_jump_key + +#define STATIC_IF_KEY_DEFINE_FALSE(name) \ + __used struct static_if_key_false name##_jump_key = { \ + .key.sik_init_value = -1, \ + .key.sik_enable_count = -1, \ + } + +/*! + * @macro probable_static_if() / improbable_static_if() + * + * @brief + * Returns whether the static if class is true or not, + * encoding it in code rather than loading globals. + * + * @discussion + * Static "ifs" are meant to provide extremely low overhead + * enablement or disablement of features based on TEXT patching. + * + * It is meant for debugging features, or checkers that happen + * on really hot paths where loading a global will affect + * performance in meaningful ways (lock checks, preemption + * disablement tracking, etc...). + * + * @c probable_static_if() versus @c improbable_static_if() + * affects which direction will take a branch: + * + * key value | TRUE | FALSE | outlining + * ----------------------+----------+----------+---------------- + * probable_static_if | nop | branch | "FALSE" case + * improbable_static_if | branch | nop | "TRUE" case + * + * @c static_if() will not outline any code, and will codegen a "nop" + * for the initial value of the key. + * + * There usually is a STARTUP hook that pairs with those + * static if domains that will toggle enablement based + * on boot-args or various configurations. + */ +#define static_if(n) ({ \ + __label__ __l; \ + int __result = !__static_if_key_init_value(n); \ + STATIC_IF_NOP(n, __l); \ + __result = __static_if_key_init_value(n); \ +__l: \ + __result; \ +}) + +#define probable_static_if(n) __probable(({ \ + __label__ __l; \ + int __result = 0; \ + if (__static_if_key_init_value(n)) { \ + STATIC_IF_NOP(n, __l); \ + } else { \ + STATIC_IF_BRANCH(n, __l); \ + } \ + __result = 1; \ +__l: \ + __result; \ +})) + +#define improbable_static_if(n) __improbable(({ \ + __label__ __l; \ + int __result = 1; \ + if (__static_if_key_init_value(n)) { \ + STATIC_IF_BRANCH(n, __l); \ + } else { \ + STATIC_IF_NOP(n, __l); \ + } \ + __result = 0; \ +__l: \ + __result; \ +})) + + +/*! + * @function static_if_key_enable() + * + * @brief + * Increases the key enablement count. + * + * @discussion + * The key becomes disabled when its enablement count becomes positive. + * This function can only be called from the context of a STATIC_IF_INIT() + * callout. + */ +#define static_if_key_enable(n) \ + __static_if_key_delta(&n##_jump_key.key, 1) + +/*! + * @function static_if_key_disable() + * + * @brief + * Decreases the key enablement count. + * + * @discussion + * The key becomes disabled when its enablement count becomes negative. + * This function can only be called from the context of a STATIC_IF_INIT() + * callout. + */ +#define static_if_key_disable(n) \ + __static_if_key_delta(&n##_jump_key.key, -1) + +/*! + * @brief + * Marker for functions used to setup static_if() blocks during boot. + */ +#define __static_if_init_func MARK_AS_FIXUP_TEXT + +/*! + * @macro STATIC_IF_INIT + * + * @brief + * Register a function to setup a static if direction. + * + * @discussion + * This code runs extremly early during boot and it can only rely + * on extremly basic notions such as boot-args or system registers. + * + * Code running during this call must be marked with __static_if_init_func. + */ +#define STATIC_IF_INIT(func) \ + __PLACE_IN_SECTION(STATIC_IF_SEGMENT "," STATIC_IFINIT_SECTION) \ + static static_if_initializer __static_if__ ## func = func + +/*! + * @function static_if_boot_arg_uint64() + * + * @brief + * Parses a boot-arg within a STATIC_IF_INIT() function. + * + * @discussion + * PE_parse_boot_argn() can't be used that early on SPTM devices, + * and TUNABLES() aren't parsed yet. + */ +extern uint64_t static_if_boot_arg_uint64( + const char *args, + const char *name, + uint64_t defval); + + +#pragma mark implementation details + +#if KASAN +/* + * The use of weird sections that get unmapped confuse the hell out of kasan, + * so for KASAN leave things in regular __TEXT/__DATA segments + */ +#define STATIC_IF_SEGMENT "__DATA_CONST" +#elif defined(__x86_64__) +/* Intel doesn't have a __BOOTDATA but doesn't protect __KLD */ +#define STATIC_IF_SEGMENT "__KLDDATA" +#else +/* arm protects __KLD early, so use __BOOTDATA for data */ +#define STATIC_IF_SEGMENT "__BOOTDATA" +#endif +#define STATIC_IF_SECTION "__static_if" +#define STATIC_IFINIT_SECTION "__static_ifinit" +#define STATIC_IF_SEGSECT STATIC_IF_SEGMENT "," STATIC_IF_SECTION + +typedef void (*static_if_initializer)(const char *boot_args); + +struct static_if_key_true { + struct static_if_key key; +#if __cplusplus + static const bool init_value = true; +#endif +}; + +struct static_if_key_false { + struct static_if_key key; +#if __cplusplus + static const bool init_value = false; +#endif +}; + +#if __cplusplus +#define __static_if_key_init_value(n) decltype(n##_jump_key)::init_value +#else +#define __static_if_key_init_value(n) _Generic(n##_jump_key, \ + struct static_if_key_true: 1, \ + struct static_if_key_false: 0) +#endif + +extern void __static_if_key_delta( + static_if_key_t key, + int delta); + + +#pragma GCC visibility pop +__END_DECLS + +#endif /* _MACHINE_STATIC_IF_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/machine/trap.h b/Frameworks/Kernel.framework/Versions/A/Headers/machine/trap.h index f5b9e94e..a9c1b29c 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/machine/trap.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/machine/trap.h @@ -36,4 +36,52 @@ #error architecture not supported #endif +#define ml_trap_pin_value_1(a) ({ \ + register long _a __asm__(ML_TRAP_REGISTER_1) = (long)(a); \ + \ + __asm__ __volatile__ ("" : "+r"(_a)); \ +}) +#define ml_trap_pin_value_2(a, b) ({ \ + register long _a __asm__(ML_TRAP_REGISTER_1) = (long)(a); \ + register long _b __asm__(ML_TRAP_REGISTER_2) = (long)(b); \ + \ + __asm__ __volatile__ ("" : "+r"(_a), "+r"(_b)); \ +}) +#define ml_trap_pin_value_3(a, b, c) ({ \ + register long _a __asm__(ML_TRAP_REGISTER_1) = (long)(a); \ + register long _b __asm__(ML_TRAP_REGISTER_2) = (long)(b); \ + register long _c __asm__(ML_TRAP_REGISTER_3) = (long)(c); \ + \ + __asm__ __volatile__ ("" : "+r"(_a), "+r"(_b), "+r"(_c)); \ +}) + +#define ml_fatal_trap_with_value(code, a) ({ \ + ml_trap_pin_value_1(a); \ + ml_fatal_trap(code); \ +}) + +#define ml_fatal_trap_with_value2(code, a, b) ({ \ + ml_trap_pin_value_2(a, b); \ + ml_fatal_trap(code); \ +}) + +#define ml_fatal_trap_with_value3(code, a, b, c) ({ \ + ml_trap_pin_value_3(a, b, c); \ + ml_fatal_trap(code); \ +}) + +/* + * Used for when `e` failed a linked list safe unlinking check. + * On optimized builds, `e`'s value will be in: + * - %rax for Intel + * - x8 for arm64 + * - r8 on armv7 + */ +__attribute__((cold, noreturn, always_inline)) +static inline void +ml_fatal_trap_invalid_list_linkage(unsigned long e) +{ + ml_fatal_trap_with_value(/* XNU_HARD_TRAP_SAFE_UNLINK */ 0xbffd, e); +} + #endif /* _MACHINE_TRAP_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/math.h b/Frameworks/Kernel.framework/Versions/A/Headers/math.h index 27fcade4..7e9270ae 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/math.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/math.h @@ -40,6 +40,11 @@ #include #include +#if __has_include() +#include +REALTIME_SAFE_BEGIN +#endif + __BEGIN_DECLS /****************************************************************************** @@ -50,7 +55,7 @@ __BEGIN_DECLS taking advantage of GCC's __FLT_EVAL_METHOD__ (which a compiler may define anytime and GCC does) that shadows FLT_EVAL_METHOD (which a compiler must define only in float.h). */ -#if __FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == -1 +#if __FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == -1 || __FLT_EVAL_METHOD__ == 16 typedef float float_t; typedef double double_t; #elif __FLT_EVAL_METHOD__ == 1 @@ -88,7 +93,7 @@ __BEGIN_DECLS #define FP_SUBNORMAL 5 #define FP_SUPERNORMAL 6 /* legacy PowerPC support; this is otherwise unused */ -#if defined __arm64__ || defined __ARM_VFPV4__ +#if defined __arm64__ || defined __aarch64__ || defined __ARM_VFPV4__ /* On these architectures, fma(), fmaf( ), and fmal( ) are generally about as fast as (or faster than) separate multiply and add of the same operands. */ # define FP_FAST_FMA 1 @@ -573,12 +578,12 @@ __API_DEPRECATED("use `NAN` instead", macos(10.0, 10.14)) __API_UNAVAILABLE(ios, * Reentrant variants of lgamma[fl] * ******************************************************************************/ -#ifdef _REENTRANT +#if defined(_REENTRANT) || defined(__swift__) /* Reentrant variants of the lgamma[fl] functions. */ extern float lgammaf_r(float, int *) __API_AVAILABLE(macos(10.6), ios(3.1)); extern double lgamma_r(double, int *) __API_AVAILABLE(macos(10.6), ios(3.1)); extern long double lgammal_r(long double, int *) __API_AVAILABLE(macos(10.6), ios(3.1)); -#endif /* _REENTRANT */ +#endif /* _REENTRANT || __swift__ */ /****************************************************************************** * Apple extensions to the C standard * @@ -619,6 +624,21 @@ extern double __sinpi(double) __API_AVAILABLE(macos(10.9), ios(7.0)); extern float __tanpif(float) __API_AVAILABLE(macos(10.9), ios(7.0)); extern double __tanpi(double) __API_AVAILABLE(macos(10.9), ios(7.0)); +/* half precision math functions */ +extern _Float16 __fabsf16(_Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __hypotf16(_Float16, _Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __sqrtf16(_Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __ceilf16(_Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __floorf16(_Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __rintf16(_Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __roundf16(_Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __truncf16(_Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __copysignf16(_Float16, _Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __nextafterf16(_Float16, _Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __fmaxf16(_Float16, _Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __fminf16(_Float16, _Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +extern _Float16 __fmaf16(_Float16, _Float16, _Float16) __API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + #if (defined __MAC_OS_X_VERSION_MIN_REQUIRED && __MAC_OS_X_VERSION_MIN_REQUIRED < 1090) || \ (defined __IPHONE_OS_VERSION_MIN_REQUIRED && __IPHONE_OS_VERSION_MIN_REQUIRED < 70000) /* __sincos and __sincosf were introduced in OSX 10.9 and iOS 7.0. When @@ -782,6 +802,11 @@ struct exception { #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ __END_DECLS + +#if __has_include() +REALTIME_SAFE_END +#endif + #endif /* __MATH_H__ */ #endif /* (defined(__has_include) && __has_include(<__xnu_libcxx_sentinel.h>)) */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/bpf.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/bpf.h index 804b2744..5ae99be7 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/bpf.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/bpf.h @@ -1340,7 +1340,7 @@ extern errno_t bpf_attach(ifnet_t interface, u_int32_t data_link_type, * @param header_len If the header was specified, the length of the header. */ extern void bpf_tap_in(ifnet_t interface, u_int32_t dlt, mbuf_t packet, - void *header, size_t header_len); + void *__sized_by(header_len) header, size_t header_len); /*! * @function bpf_tap_out @@ -1354,7 +1354,7 @@ extern void bpf_tap_in(ifnet_t interface, u_int32_t dlt, mbuf_t packet, * @param header_len If the header was specified, the length of the header. */ extern void bpf_tap_out(ifnet_t interface, u_int32_t dlt, mbuf_t packet, - void *header, size_t header_len); + void *__sized_by(header_len) header, size_t header_len); #if SKYWALK /*! @@ -1369,7 +1369,7 @@ extern void bpf_tap_out(ifnet_t interface, u_int32_t dlt, mbuf_t packet, * @param header_len If the header was specified, the length of the header. */ extern void bpf_tap_packet_in(ifnet_t interface, u_int32_t dlt, - kern_packet_t packet, void *header, size_t header_len); + kern_packet_t packet, void *__sized_by(header_len) header, size_t header_len); /*! * @function bpf_tap_packet_out @@ -1383,7 +1383,7 @@ extern void bpf_tap_packet_in(ifnet_t interface, u_int32_t dlt, * @param header_len If the header was specified, the length of the header. */ extern void bpf_tap_packet_out(ifnet_t interface, u_int32_t dlt, - kern_packet_t packet, void *header, size_t header_len); + kern_packet_t packet, void *__sized_by(header_len) header, size_t header_len); #endif /* SKYWALK */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/dlil.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/dlil.h index 608fb58c..f9e8b31e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/dlil.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/dlil.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999-2022 Apple Inc. All rights reserved. + * Copyright (c) 1999-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if.h index d35c1b27..e89b2205 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/if.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if.h @@ -72,6 +72,9 @@ #include #include +#if __has_ptrcheck +#include +#endif #include #include @@ -139,6 +142,7 @@ struct if_clonereq { #define IFCAP_SW_TIMESTAMP 0x01000 /* Time stamping in software */ #define IFCAP_CSUM_PARTIAL 0x02000 /* can offload partial checksum */ #define IFCAP_CSUM_ZERO_INVERT 0x04000 /* can invert 0 to -0 (0xffff) */ +#define IFCAP_LRO_NUM_SEG 0x08000 /* NIC & driver can set the num of segments a LRO-packet is built of */ #define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM) #define IFCAP_TSO (IFCAP_TSO4 | IFCAP_TSO6) @@ -146,7 +150,7 @@ struct if_clonereq { #define IFCAP_VALID (IFCAP_HWCSUM | IFCAP_TSO | IFCAP_LRO | IFCAP_VLAN_MTU | \ IFCAP_VLAN_HWTAGGING | IFCAP_JUMBO_MTU | IFCAP_AV | IFCAP_TXSTATUS | \ IFCAP_SKYWALK | IFCAP_SW_TIMESTAMP | IFCAP_HW_TIMESTAMP | \ - IFCAP_CSUM_PARTIAL | IFCAP_CSUM_ZERO_INVERT) + IFCAP_CSUM_PARTIAL | IFCAP_CSUM_ZERO_INVERT | IFCAP_LRO_NUM_SEG) #define IFQ_MAXLEN 128 #define IFNET_SLOWHZ 1 /* granularity is 1 second */ @@ -316,6 +320,7 @@ struct ifreq { u_int32_t ifru_route_refcnt; int ifru_cap[2]; u_int32_t ifru_functional_type; + u_int32_t ifru_peer_egress_functional_type; #define IFRTYPE_FUNCTIONAL_UNKNOWN 0 #define IFRTYPE_FUNCTIONAL_LOOPBACK 1 #define IFRTYPE_FUNCTIONAL_WIRED 2 @@ -326,6 +331,8 @@ struct ifreq { #define IFRTYPE_FUNCTIONAL_COMPANIONLINK 7 #define IFRTYPE_FUNCTIONAL_MANAGEMENT 8 #define IFRTYPE_FUNCTIONAL_LAST 8 + u_int8_t ifru_is_directlink; + u_int8_t ifru_is_vpn; } ifr_ifru; #define ifr_addr ifr_ifru.ifru_addr /* address */ #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_dl.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_dl.h index 25461155..f85b6971 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_dl.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_dl.h @@ -65,6 +65,7 @@ #define _NET_IF_DL_H_ #include +#include /* __offsetof() */ #include @@ -89,12 +90,6 @@ /* * Structure of a Link-Level sockaddr: */ -#if __has_ptrcheck -#define DLIL_SDLDATACOUNT __counted_by(sdl_len - 8) -#else -#define DLIL_SDLDATACOUNT 12 -#endif - struct sockaddr_dl { u_char sdl_len; /* Total length of sockaddr */ u_char sdl_family; /* AF_LINK */ @@ -103,7 +98,7 @@ struct sockaddr_dl { u_char sdl_nlen; /* interface name length, no trailing 0 reqd. */ u_char sdl_alen; /* link level address length */ u_char sdl_slen; /* link layer selector length */ - char sdl_data[DLIL_SDLDATACOUNT]; + char sdl_data[12]; /* minimum work area, can be larger; * contains both if name and ll address */ #ifndef __APPLE__ @@ -113,7 +108,7 @@ struct sockaddr_dl { #endif }; -#define LLADDR(s) ((caddr_t)((s)->sdl_data + (s)->sdl_nlen)) +#define LLADDR(s) ((caddr_t)(s) + __offsetof(struct sockaddr_dl, sdl_data) + (s)->sdl_nlen) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_ether.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_ether.h index c9fe45c9..6b335830 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_ether.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_ether.h @@ -44,16 +44,17 @@ extern int ether_family_init(void); errno_t ether_demux(ifnet_t interface, mbuf_t packet, char* header, protocol_family_t *protocol); errno_t ether_add_proto(ifnet_t interface, protocol_family_t protocol, - const struct ifnet_demux_desc *demux_list, u_int32_t demux_count); + const struct ifnet_demux_desc *demux_list __counted_by(demux_count), u_int32_t demux_count); errno_t ether_del_proto(ifnet_t interface, protocol_family_t protocol); #if KPI_INTERFACE_EMBEDDED errno_t ether_frameout(ifnet_t interface, mbuf_t *packet, - const struct sockaddr *dest, const char *dest_lladdr, - const char *frame_type, u_int32_t *prepend_len, u_int32_t *postpend_len); + const struct sockaddr *dest, IFNET_LLADDR_T dest_lladdr, + IFNET_FRAME_TYPE_T frame_type, + u_int32_t *prepend_len, u_int32_t *postpend_len); #else /* !KPI_INTERFACE_EMBEDDED */ errno_t ether_frameout(ifnet_t interface, mbuf_t *packet, - const struct sockaddr *dest, const char *dest_lladdr, - const char *frame_type); + const struct sockaddr *dest, IFNET_LLADDR_T dest_lladdr, + IFNET_FRAME_TYPE_T frame_type); #endif /* !KPI_INTERFACE_EMBEDDED */ errno_t ether_ioctl(ifnet_t interface, u_int32_t command, void* data); errno_t ether_check_multi(ifnet_t ifp, const struct sockaddr *multicast); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_ipsec.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_ipsec.h new file mode 100644 index 00000000..63466f16 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_ipsec.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2012-2021 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + + +#ifndef _NET_IF_IPSEC_H_ +#define _NET_IF_IPSEC_H_ + +#include + + +/* + * Name registered by the ipsec kernel control + */ +#define IPSEC_CONTROL_NAME "com.apple.net.ipsec_control" + +/* + * Socket option names to manage ipsec + */ +#define IPSEC_OPT_FLAGS 1 +#define IPSEC_OPT_IFNAME 2 +#define IPSEC_OPT_EXT_IFDATA_STATS 3 /* get|set (type int) */ +#define IPSEC_OPT_INC_IFDATA_STATS_IN 4 /* set to increment stat counters (type struct ipsec_stats_param) */ +#define IPSEC_OPT_INC_IFDATA_STATS_OUT 5 /* set to increment stat counters (type struct ipsec_stats_param) */ +#define IPSEC_OPT_SET_DELEGATE_INTERFACE 6 /* set the delegate interface (char[]) */ +#define IPSEC_OPT_OUTPUT_TRAFFIC_CLASS 7 /* set the traffic class for packets leaving the interface, see sys/socket.h */ +#define IPSEC_OPT_ENABLE_CHANNEL 8 /* enable a kernel pipe nexus that allows the owner to open a channel to act as a driver, + * Must be set before connecting */ +#define IPSEC_OPT_GET_CHANNEL_UUID 9 /* get the uuid of the kernel pipe nexus instance */ +#define IPSEC_OPT_ENABLE_FLOWSWITCH 10 /* enable a flowswitch nexus that clients can use */ +#define IPSEC_OPT_INPUT_FRAG_SIZE 11 /* set the maximum size of input packets before fragmenting as a uint32_t */ + +#define IPSEC_OPT_ENABLE_NETIF 12 /* Must be set before connecting */ +#define IPSEC_OPT_SLOT_SIZE 13 /* Must be set before connecting */ +#define IPSEC_OPT_NETIF_RING_SIZE 14 /* Must be set before connecting */ +#define IPSEC_OPT_TX_FSW_RING_SIZE 15 /* Must be set before connecting */ +#define IPSEC_OPT_RX_FSW_RING_SIZE 16 /* Must be set before connecting */ +#define IPSEC_OPT_CHANNEL_BIND_PID 17 /* Must be set before connecting */ +#define IPSEC_OPT_KPIPE_TX_RING_SIZE 18 /* Must be set before connecting */ +#define IPSEC_OPT_KPIPE_RX_RING_SIZE 19 /* Must be set before connecting */ +#define IPSEC_OPT_CHANNEL_BIND_UUID 20 /* Must be set before connecting */ + +#define IPSEC_OPT_OUTPUT_DSCP_MAPPING 21 /* Must be set before connecting */ + +typedef enum { + IPSEC_DSCP_MAPPING_COPY = 0, /* Copy DSCP bits from inner IP header to outer IP header */ + IPSEC_DSCP_MAPPING_LEGACY = 1, /* Copies bits from the outer IP header that are at TOS offset of the inner IP header, into the DSCP of the outer IP header */ +} ipsec_dscp_mapping_t; + +/* + * ipsec stats parameter structure + */ +struct ipsec_stats_param { + u_int64_t utsp_packets; + u_int64_t utsp_bytes; + u_int64_t utsp_errors; +}; + +#endif diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_mib.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_mib.h index 09efce6c..e0135fdf 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_mib.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_mib.h @@ -63,7 +63,7 @@ #include struct ifmibdata { - char ifmd_name[IFNAMSIZ]; /* name of interface */ + char ifmd_name[IFNAMSIZ]; /* name of interface */ unsigned int ifmd_pcount; /* number of promiscuous listeners */ unsigned int ifmd_flags; /* interface flags */ unsigned int ifmd_snd_len; /* instantaneous length of send queue */ @@ -73,7 +73,6 @@ struct ifmibdata { struct if_data64 ifmd_data; /* generic information and statistics */ }; - /* * sysctl MIB tags at the net.link.generic level */ @@ -202,15 +201,5 @@ enum { * header files if convenient ones already exist. */ -/* - * Structure for interface family ID table - */ - -struct if_family_id { - u_int32_t iffmid_len; - u_int32_t iffmid_id; - char iffmid_str[1]; /* variable length string */ -}; - #endif /* _NET_IF_MIB_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_mib_private.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_mib_private.h new file mode 100644 index 00000000..6a93a302 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_mib_private.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ +/* + * Copyright 1996 Massachusetts Institute of Technology + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose and without fee is hereby + * granted, provided that both the above copyright notice and this + * permission notice appear in all copies, that both the above + * copyright notice and this permission notice appear in all + * supporting documentation, and that the name of M.I.T. not be used + * in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. M.I.T. makes + * no representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied + * warranty. + * + * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS + * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT + * SHALL M.I.T. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/net/if_mib.h,v 1.6 1999/08/28 00:48:19 peter Exp $ + */ + +#ifndef _NET_IF_MIB_PRIVATE_H +#define _NET_IF_MIB_PRIVATE_H 1 +#include + +/* + * MIB tags for the various net.link.generic.ifdata tables + */ +#define IFDATA_SUPPLEMENTAL 5 /* supplemental link specific stats */ + +struct ifmibdata_supplemental { + struct if_traffic_class ifmd_traffic_class; + struct if_data_extended ifmd_data_extended; + struct if_packet_stats ifmd_packet_stats; + struct if_rxpoll_stats ifmd_rxpoll_stats; + struct if_netif_stats ifmd_netif_stats; +}; + +/* + * MIB tags for link heuristics statistics + */ +#define IFDATA_LINKHEURISTICS 6 /* struct if_linkheuristics */ + + +#endif /* _NET_IF_MIB_PRIVATE_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_private.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_private.h index 08efba61..50a47511 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_private.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_private.h @@ -207,6 +207,7 @@ struct ifreq { #define IFRTYPE_SUBFAMILY_MANAGEMENT 12 } ifru_type; u_int32_t ifru_functional_type; + u_int32_t ifru_peer_egress_functional_type; #define IFRTYPE_FUNCTIONAL_UNKNOWN 0 #define IFRTYPE_FUNCTIONAL_LOOPBACK 1 #define IFRTYPE_FUNCTIONAL_WIRED 2 @@ -237,6 +238,7 @@ struct ifreq { #define IFRTYPE_QOSMARKING_CUSTOM 3 /* supported: socket/channel */ u_int32_t ifru_qosmarking_enabled; u_int32_t ifru_disable_output; + int32_t ifru_point_to_point_mdns; u_int32_t ifru_low_internet; #define IFRTYPE_LOW_INTERNET_DISABLE_UL_DL 0x0000 #define IFRTYPE_LOW_INTERNET_ENABLE_UL 0x0001 @@ -254,6 +256,9 @@ struct ifreq { u_int8_t channel; } ifru_radio_details; uint64_t ifru_creation_generation_id; + u_int8_t ifru_is_directlink; + u_int8_t ifru_is_vpn; + uint32_t ifru_delay_wake_pkt_event; } ifr_ifru; #define ifr_addr ifr_ifru.ifru_addr /* address */ #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ @@ -286,6 +291,7 @@ struct ifreq { #define ifr_constrained ifr_ifru.ifru_constrained #define ifr_type ifr_ifru.ifru_type /* interface type */ #define ifr_functional_type ifr_ifru.ifru_functional_type +#define ifr_peer_egress_functional_type ifr_ifru.ifru_peer_egress_functional_type #define ifr_2kcl ifr_ifru.ifru_2kcl #define ifr_start_delay_qlen ifr_ifru.ifru_start_delay.qlen #define ifr_start_delay_timeout ifr_ifru.ifru_start_delay.timeout @@ -297,6 +303,7 @@ struct ifreq { #define ifr_qosmarking_enabled ifr_ifru.ifru_qosmarking_enabled #define ifr_fastlane_enabled ifr_qosmarking_enabled #define ifr_disable_output ifr_ifru.ifru_disable_output +#define ifr_point_to_point_mdns ifr_ifru.ifru_point_to_point_mdns #define ifr_low_internet ifr_ifru.ifru_low_internet #define ifr_low_power_mode ifr_ifru.ifru_low_power_mode #define ifr_tcp_kao_max ifr_ifru.ifru_tcp_kao_max @@ -305,6 +312,9 @@ struct ifreq { #define ifr_estimated_throughput ifr_ifru.ifru_estimated_throughput #define ifr_radio_details ifr_ifru.ifru_radio_details #define ifr_creation_generation_id ifr_ifru.ifru_creation_generation_id +#define ifr_is_directlink ifr_ifru.ifru_is_directlink +#define ifr_is_vpn ifr_ifru.ifru_is_vpn +#define ifr_delay_wake_pkt_event ifr_ifru.ifru_delay_wake_pkt_event }; #define _SIZEOF_ADDR_IFREQ(ifr) \ @@ -427,8 +437,6 @@ enum { IFNET_RSSI_UNKNOWN = ((-2147483647) - 1), /* INT32_MIN */ }; - -#if !__has_ptrcheck /* * DLIL KEV_DL_NODE_PRESENCE/KEV_DL_NODE_ABSENCE event structures */ @@ -447,7 +455,6 @@ struct kev_dl_node_absence { struct sockaddr_in6 sin6_node_address; struct sockaddr_dl sdl_node_address; }; -#endif /* * Structure for SIOC[SG]IFTHROTTLE @@ -627,7 +634,6 @@ struct if_protolistreq { }; - /* * Entitlement to send/receive data on an INTCOPROC interface */ @@ -645,6 +651,12 @@ struct if_protolistreq { */ #define MANAGEMENT_CONTROL_ENTITLEMENT "com.apple.private.network.management.control" +/* + * Entitlement to allow socket access on ultra-constrained interfaces + */ +#define ULTRA_CONSTRAINED_ENTITLEMENT "com.apple.private.network.ultraconstrained" + + #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ #endif /* !_NET_IF_PRIVATE_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var.h index ec3de556..b89898ad 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2021 Apple Inc. All rights reserved. + * Copyright (c) 2000-2025 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -68,12 +68,6 @@ #include #include #include -#include /* get TAILQ macros */ -#ifdef BSD_KERN_PRIVATE -#include -#include -#endif - #include diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var_private.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var_private.h index 650238c8..ede8f68e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var_private.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var_private.h @@ -70,6 +70,7 @@ #include #include #include +#include struct if_traffic_class { u_int64_t ifi_ibepackets;/* TC_BE packets received on interface */ @@ -131,10 +132,42 @@ struct if_packet_stats { u_int64_t _reserved[4]; }; +/* + * Structure to report link heuristics + */ +#define HAS_IF_LINK_HEURISTICS_STATS 1 +struct if_linkheuristics { + u_int64_t iflh_link_heuristics_cnt; /* Count of congested link indications */ + u_int64_t iflh_link_heuristics_time; /* Duration of congested link indications (msec) */ + + u_int64_t iflh_congested_link_cnt; /* Count of congested link indications */ + u_int64_t iflh_congested_link_time; /* Duration of congested link indications (msec) */ + + u_int64_t iflh_lqm_good_cnt; /* Count of LQM good */ + u_int64_t iflh_lqm_good_time; /* Duration of LQM good (msec) */ + + u_int64_t iflh_lqm_poor_cnt; /* Count of LQM poor */ + u_int64_t iflh_lqm_poor_time; /* Duration of LQM poor (msec) */ + + u_int64_t iflh_lqm_min_viable_cnt; /* Count of LQM minimally viable */ + u_int64_t iflh_lqm_min_viable_time; /* Duration of LQM minimally viable (msec) */ + + u_int64_t iflh_lqm_bad_cnt; /* Count of LQM bad */ + u_int64_t iflh_lqm_bad_time; /* Duration of LQM bad (msec) */ + + u_int64_t iflh_tcp_linkheur_stealthdrop; + u_int64_t iflh_tcp_linkheur_noackpri; + u_int64_t iflh_tcp_linkheur_comprxmt; + u_int64_t iflh_tcp_linkheur_synrxmt; + u_int64_t iflh_tcp_linkheur_rxmtfloor; + + u_int64_t iflh_udp_linkheur_stealthdrop; +}; + struct if_description { u_int32_t ifd_maxlen; /* must be IF_DESCSIZE */ u_int32_t ifd_len; /* actual ifd_desc length */ - u_int8_t *ifd_desc; /* ptr to desc buffer */ + u_int8_t *__sized_by(ifd_maxlen) ifd_desc; /* ptr to desc buffer */ }; struct if_bandwidths { @@ -307,6 +340,7 @@ struct if_lim_perf_stat { }; #define IF_VAR_H_HAS_IFNET_STATS_PER_FLOW 1 +#define IF_VAR_H_HAS_IFNET_STATS_PER_FLOW_LINKHEUR 1 struct ifnet_stats_per_flow { u_int64_t bk_txpackets; u_int64_t txpackets; @@ -338,7 +372,14 @@ struct ifnet_stats_per_flow { ecn_fallback_droprst:1, ecn_fallback_droprxmt:1, ecn_fallback_ce:1, - ecn_fallback_reorder:1; + ecn_fallback_reorder:1, + _reserved_6:6; + u_int16_t _reserved_16; + u_int32_t _reserved_32; + u_int64_t linkheur_noackpri; + u_int64_t linkheur_comprxmt; + u_int64_t linkheur_synrxmt; + u_int64_t linkheur_rxmtfloor; }; struct if_interface_state { diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var_status.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var_status.h index dee04713..63578374 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var_status.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_var_status.h @@ -255,15 +255,45 @@ enum ifnet_interface_advisory_interface_type : uint8_t { IF_INTERFACE_ADVISORY_INTERFACE_TYPE_CELL = 2, }; +enum ifnet_interface_advisory_notification_type_cell : uint8_t { + /* Reserved for MAV platform */ + IF_INTERFACE_ADVISORY_NOTIFICATION_TYPE_CELLULAR_DEFAULT= 0, + /* Used when sending Codec Rate Adaptation related notifications */ + IF_INTERFACE_ADVISORY_NOTIFICATION_TYPE_CELLULAR_UPLINK_CRA, + /* + * Used when sending periodic measurement of parameters (RSRP,RSSI etc.) + * during VoLTE/VoNR calls + */ + IF_INTERFACE_ADVISORY_NOTIFICATION_TYPE_CELLULAR_MEASUREMENT_UPDATE, + /* Used when a TTI bundle enable/disable occurs during VoLTE/VoNR calls */ + IF_INTERFACE_ADVISORY_NOTIFICATION_TYPE_CELLULAR_BANDWIDTH_LIMITATION_EVENT, + /* Used when a configuration change occurs in CDRx during VoLTE/VoNR calls */ + IF_INTERFACE_ADVISORY_NOTIFICATION_TYPE_CELLULAR_DISCONTINUOUS_RECEPTION_EVENT, + /* Used when a handover start/end occurs during VoLTE/VoNR calls */ + IF_INTERFACE_ADVISORY_NOTIFICATION_TYPE_CELLULAR_OUTAGE_EVENT, + /* Used for Thermal Codec Rate Adaptation Events */ + IF_INTERFACE_ADVISORY_NOTIFICATION_TYPE_CELLULAR_THERMAL_CRA_EVENT, +}; + +enum ifnet_interface_advisory_notification_type_wifi : uint8_t { + /* Unused for now */ + IF_INTERFACE_ADVISORY_NOTIFICATION_TYPE_WIFI_UNDEFINED = 0, +}; + +typedef union { + enum ifnet_interface_advisory_notification_type_cell cell; + enum ifnet_interface_advisory_notification_type_wifi wifi; +} ifnet_interface_advisory_notification_type_t; + struct ifnet_interface_advisory_header { /* The current structure version */ enum ifnet_interface_advisory_version version; - /* Specifies if the advisory is for transmit or receive path */ + /* Specifies if the advisory is for transmit or receive path */ enum ifnet_interface_advisory_direction direction; /* Interface type */ enum ifnet_interface_advisory_interface_type interface_type; - /* reserved for future use */ - uint8_t reserved; + /* Notification type */ + ifnet_interface_advisory_notification_type_t notification_type; }; enum ifnet_interface_advisory_rate_trend : int32_t { diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_vlan_var.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_vlan_var.h index cdaa2c7c..55a589f9 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/if_vlan_var.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/if_vlan_var.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2003, 2024 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -64,6 +64,8 @@ #include #define ETHER_VLAN_ENCAP_LEN 4 /* len of 802.1Q VLAN encapsulation */ + + struct ether_vlan_header { u_char evl_dhost[ETHER_ADDR_LEN]; u_char evl_shost[ETHER_ADDR_LEN]; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/kpi_interface.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/kpi_interface.h index 10f6b6df..1b0ef212 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/kpi_interface.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/kpi_interface.h @@ -184,6 +184,7 @@ typedef u_int32_t protocol_family_t; * @constant IFNET_SW_TIMESTAMP Driver supports time stamping in software. * @constant IFNET_LRO Driver supports TCP Large Receive Offload. * @constant IFNET_RX_CSUM Driver supports receive checksum offload. + * @constant IFNET_LRO_NUM_SEG Driver is able to report number of segments in LRO packet. * */ @@ -206,6 +207,7 @@ enum { IFNET_SW_TIMESTAMP = 0x02000000, IFNET_LRO = 0x10000000, IFNET_RX_CSUM = 0x20000000, + IFNET_LRO_NUM_SEG = 0x40000000, }; /*! * @typedef ifnet_offload_t @@ -344,14 +346,53 @@ typedef void (*ifnet_event_func)(ifnet_t interface, const struct kev_msg *msg); * If the result is anything else, the processing will stop and * the packet will be freed. */ + +#define IFNET_MAX_FRAME_TYPE_BUFFER_SIZE 16 + +#define IFNET_MAX_LINKADDR_BUFFER_SIZE 16 + +#if defined(__sized_by_or_null) +#define IFNET_LLADDR_T const char *__sized_by_or_null (IFNET_MAX_LINKADDR_BUFFER_SIZE) +#define IFNET_FRAME_TYPE_T const char *__sized_by_or_null (IFNET_MAX_FRAME_TYPE_BUFFER_SIZE) +#define IFNET_LLADDR_RW_T char *__sized_by_or_null (IFNET_MAX_LINKADDR_BUFFER_SIZE) +#define IFNET_FRAME_TYPE_RW_T char *__sized_by_or_null (IFNET_MAX_FRAME_TYPE_BUFFER_SIZE) +#else +#define IFNET_LLADDR_T const char * +#define IFNET_FRAME_TYPE_T const char * +#define IFNET_LLADDR_RW_T char * +#define IFNET_FRAME_TYPE_RW_T char * +#endif + typedef errno_t (*ifnet_framer_func)(ifnet_t interface, mbuf_t *packet, - const struct sockaddr *dest, const char *dest_linkaddr, - const char *frame_type + const struct sockaddr *dest, + IFNET_LLADDR_T dest_linkaddr, + IFNET_FRAME_TYPE_T frame_type #if KPI_INTERFACE_EMBEDDED , u_int32_t *prepend_len, u_int32_t *postpend_len #endif /* KPI_INTERFACE_EMBEDDED */ ); +/*! + * @struct ifnet_demux_desc + * @discussion This structure is to identify packets that belong to a + * specific protocol. The types supported are interface specific. + * Ethernet supports ETHER_DESC_ETYPE2, ETHER_DESC_SAP, and + * ETHER_DESC_SNAP. The type defines the offset in the packet where + * the data will be matched as well as context. For example, if + * ETHER_DESC_SNAP is specified, the only valid datalen is 5 and + * only in the 5 bytes will only be matched when the packet header + * indicates that the packet is a SNAP packet. + * @field type The type of identifier data (i.e. ETHER_DESC_ETYPE2) + * @field data A pointer to an entry of type (i.e. pointer to 0x0800). + * @field datalen The number of bytes of data used to describe the + * packet. + */ +struct ifnet_demux_desc { + u_int32_t type; + void *__sized_by(datalen) data; + u_int32_t datalen; +}; + /*! * @typedef ifnet_add_proto_func * @discussion if_add_proto_func is called by the stack when a protocol @@ -371,7 +412,7 @@ typedef errno_t (*ifnet_framer_func)(ifnet_t interface, mbuf_t *packet, */ typedef errno_t (*ifnet_add_proto_func)(ifnet_t interface, protocol_family_t protocol_family, - const struct ifnet_demux_desc *demux_array, u_int32_t demux_count); + const struct ifnet_demux_desc *__counted_by(demux_count) demux_array, u_int32_t demux_count); /*! * @typedef if_del_proto_func @@ -468,8 +509,9 @@ typedef errno_t (*proto_media_input_v2)(ifnet_t ifp, protocol_family_t protocol, * caller. */ typedef errno_t (*proto_media_preout)(ifnet_t ifp, protocol_family_t protocol, - mbuf_t *packet, const struct sockaddr *dest, void *route, char *frame_type, - char *link_layer_dest); + mbuf_t *packet, const struct sockaddr *dest, void *route, + IFNET_FRAME_TYPE_RW_T frame_type, + IFNET_LLADDR_RW_T link_layer_dest); /*! * @typedef proto_media_event @@ -624,7 +666,7 @@ struct ifnet_stat_increment_param { */ struct ifnet_init_params { /* used to match recycled interface */ - const void *uniqueid; /* optional */ + const void *__sized_by(uniqueid_len) uniqueid; /* optional */ u_int32_t uniqueid_len; /* optional */ /* used to fill out initial values for interface */ @@ -643,7 +685,7 @@ struct ifnet_init_params { ifnet_set_bpf_tap set_bpf_tap; /* deprecated */ ifnet_detached_func detach; /* optional */ ifnet_event_func event; /* optional */ - const void *broadcast_addr; /* required for non point-to-point interfaces */ + const void *__sized_by(broadcast_len) broadcast_addr; /* required for non point-to-point interfaces */ u_int32_t broadcast_len; /* required for non point-to-point interfaces */ }; @@ -677,27 +719,6 @@ struct ifnet_stats_param { u_int64_t no_protocol; }; -/*! - * @struct ifnet_demux_desc - * @discussion This structure is to identify packets that belong to a - * specific protocol. The types supported are interface specific. - * Ethernet supports ETHER_DESC_ETYPE2, ETHER_DESC_SAP, and - * ETHER_DESC_SNAP. The type defines the offset in the packet where - * the data will be matched as well as context. For example, if - * ETHER_DESC_SNAP is specified, the only valid datalen is 5 and - * only in the 5 bytes will only be matched when the packet header - * indicates that the packet is a SNAP packet. - * @field type The type of identifier data (i.e. ETHER_DESC_ETYPE2) - * @field data A pointer to an entry of type (i.e. pointer to 0x0800). - * @field datalen The number of bytes of data used to describe the - * packet. - */ -struct ifnet_demux_desc { - u_int32_t type; - void *data; - u_int32_t datalen; -}; - /*! * @struct ifnet_attach_proto_param * @discussion This structure is used to attach a protocol to an @@ -715,7 +736,7 @@ struct ifnet_demux_desc { */ struct ifnet_attach_proto_param { - struct ifnet_demux_desc *demux_array; /* interface may/may not require */ + struct ifnet_demux_desc *__counted_by(demux_count) demux_array; /* interface may/may not require */ u_int32_t demux_count; /* interface may/may not require */ proto_media_input input; /* required */ @@ -728,7 +749,7 @@ struct ifnet_attach_proto_param { }; struct ifnet_attach_proto_param_v2 { - struct ifnet_demux_desc *demux_array; /* interface may/may not require */ + struct ifnet_demux_desc *__counted_by(demux_count) demux_array; /* interface may/may not require */ u_int32_t demux_count; /* interface may/may not require */ proto_media_input_v2 input; /* required */ @@ -1137,7 +1158,7 @@ __NKE_API_DEPRECATED; * @param mibLen Length of data pointed to. * @result 0 on success otherwise the errno error. */ -extern errno_t ifnet_set_link_mib_data(ifnet_t interface, void *mibData, +extern errno_t ifnet_set_link_mib_data(ifnet_t interface, void *__sized_by(mibLen) mibData, u_int32_t mibLen) __NKE_API_DEPRECATED; @@ -1155,7 +1176,7 @@ __NKE_API_DEPRECATED; * @result Returns an error if the buffer size is too small or there is * no data. */ -extern errno_t ifnet_get_link_mib_data(ifnet_t interface, void *mibData, +extern errno_t ifnet_get_link_mib_data(ifnet_t interface, void *__sized_by(*mibLen) mibData, u_int32_t *mibLen) __NKE_API_DEPRECATED; @@ -1559,7 +1580,25 @@ __NKE_API_DEPRECATED; * @param addresses A pointer to a NULL terminated array of ifaddr_ts. * @result 0 on success otherwise the errno error. */ -extern errno_t ifnet_get_address_list(ifnet_t interface, ifaddr_t **addresses) +extern errno_t ifnet_get_address_list(ifnet_t interface, ifaddr_t *__null_terminated *addresses) +__NKE_API_DEPRECATED; + +/*! + * @function ifnet_get_address_list_with_count + * @discussion Get a list of addresses on the interface. Passing NULL + * for the interface will return a list of all addresses. The + * addresses will have their reference count bumped so they will + * not go away. Calling ifnet_free_address_list will decrement the + * refcount and free the array. If you wish to hold on to a + * reference to an ifaddr_t, be sure to bump the reference count + * before calling ifnet_free_address_list. + * @param interface The interface. + * @param addresses A pointer to a NULL terminated array of ifaddr_ts. + * @param addresses_count Count of ifaddr_ts in addresses. + * @result 0 on success otherwise the errno error. + */ +extern errno_t ifnet_get_address_list_with_count(ifnet_t interface, + ifaddr_t *__counted_by(*addresses_count) * addresses, uint16_t *addresses_count) __NKE_API_DEPRECATED; /*! @@ -1578,7 +1617,7 @@ __NKE_API_DEPRECATED; * @result 0 on success otherwise the errno error. */ extern errno_t ifnet_get_address_list_family(ifnet_t interface, - ifaddr_t **addresses, sa_family_t family) + ifaddr_t *__null_terminated *addresses, sa_family_t family) __NKE_API_DEPRECATED; @@ -1589,7 +1628,7 @@ __NKE_API_DEPRECATED; * memory used for the array of references. * @param addresses An array of ifaddr_ts. */ -extern void ifnet_free_address_list(ifaddr_t *addresses) +extern void ifnet_free_address_list(ifaddr_t *__null_terminated addresses) __NKE_API_DEPRECATED; /*! @@ -1601,7 +1640,7 @@ __NKE_API_DEPRECATED; * the 6 byte ethernet address for ethernet). * @param lladdr_len The length, in bytes, of the link layer address. */ -extern errno_t ifnet_set_lladdr(ifnet_t interface, const void *lladdr, +extern errno_t ifnet_set_lladdr(ifnet_t interface, const void *__sized_by(lladdr_len) lladdr, size_t lladdr_len) __NKE_API_DEPRECATED; @@ -1614,7 +1653,7 @@ __NKE_API_DEPRECATED; * @param length The length of the buffer. This value must match the * length of the link-layer address. */ -extern errno_t ifnet_lladdr_copy_bytes(ifnet_t interface, void *lladdr, +extern errno_t ifnet_lladdr_copy_bytes(ifnet_t interface, void *__sized_by(length) lladdr, size_t length) __NKE_API_DEPRECATED; @@ -1628,7 +1667,7 @@ __NKE_API_DEPRECATED; * @param bufferlen The length of the buffer at addr. * @param out_len On return, the length of the broadcast address. */ -extern errno_t ifnet_llbroadcast_copy_bytes(ifnet_t interface, void *addr, +extern errno_t ifnet_llbroadcast_copy_bytes(ifnet_t interface, void *__sized_by(bufferlen) addr, size_t bufferlen, size_t *out_len) __NKE_API_DEPRECATED; @@ -1710,7 +1749,7 @@ __NKE_API_DEPRECATED; * @result 0 on success otherwise the errno error. */ extern errno_t ifnet_get_multicast_list(ifnet_t interface, - ifmultiaddr_t **addresses) + ifmultiaddr_t *__null_terminated *addresses) __NKE_API_DEPRECATED; /*! @@ -1720,7 +1759,7 @@ __NKE_API_DEPRECATED; * multicast address and frees the array. * @param multicasts An array of references to the multicast addresses. */ -extern void ifnet_free_multicast_list(ifmultiaddr_t *multicasts) +extern void ifnet_free_multicast_list(ifmultiaddr_t *__null_terminated multicasts) __NKE_API_DEPRECATED; /*! @@ -1751,8 +1790,9 @@ __NKE_API_DEPRECATED; * matching interfaces in the array. * @result 0 on success otherwise the errno error. */ -extern errno_t ifnet_list_get(ifnet_family_t family, ifnet_t **interfaces, - u_int32_t *count) +extern errno_t ifnet_list_get(ifnet_family_t family, + ifnet_t *__counted_by(*count) * interfaces, + uint32_t *count) __NKE_API_DEPRECATED; @@ -1765,9 +1805,10 @@ __NKE_API_DEPRECATED; * ifnet_list_free. * @param interfaces An array of interface references from ifnet_list_get. */ -extern void ifnet_list_free(ifnet_t *interfaces) +extern void ifnet_list_free(ifnet_t *__null_terminated interfaces) __NKE_API_DEPRECATED; + /******************************************************************************/ /* ifaddr_t accessors */ /******************************************************************************/ @@ -1913,6 +1954,15 @@ extern ifaddr_t ifaddr_findbestforaddr(const struct sockaddr *addr, ifnet_t interface) __NKE_API_DEPRECATED; +/*! + * @function ifaddr_get_ia6_flags + * @discussion Copies the ia6 flags out of the ifaddr if it's AF_INET6 + * @param ifaddr The interface address. + * @param out_flags On return, the IA6 flags of the ifaddr + * @result 0 upon success + */ +extern errno_t ifaddr_get_ia6_flags(ifaddr_t ifaddr, u_int32_t *out_flags); + /******************************************************************************/ /* ifmultiaddr_t accessors */ /******************************************************************************/ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/ndrv.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/ndrv.h index decb760a..3da7b491 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/ndrv.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/ndrv.h @@ -119,6 +119,7 @@ struct ndrv_protocol_desc { }; + #define SOL_NDRVPROTO NDRVPROTO_NDRV /* Use this socket level */ #define NDRV_DELDMXSPEC 0x02 /* Delete the registered protocol */ #define NDRV_SETDMXSPEC 0x04 /* Set the protocol spec */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/necp.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/necp.h new file mode 100644 index 00000000..c7804cff --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/necp.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2013-2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef _NET_NECP_H_ +#define _NET_NECP_H_ + +#include + +#endif diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/network_agent.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/network_agent.h new file mode 100644 index 00000000..83eb641e --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/network_agent.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2014-2017, 2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef _NETAGENT_H_ +#define _NETAGENT_H_ +#include + + +#endif /* _NETAGENT_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/pfkeyv2.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/pfkeyv2.h index 26b815e9..7b834c2b 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/pfkeyv2.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/pfkeyv2.h @@ -378,8 +378,8 @@ struct sadb_sastat { #define SADB_X_AALG_SHA2_384 7 /*6*/ #define SADB_X_AALG_SHA2_512 8 /*7*/ /* private allocations should use 249-255 (RFC2407) */ -#define SADB_X_AALG_MD5 3 /*249*/ /* Keyed MD5 */ -#define SADB_X_AALG_SHA 4 /*250*/ /* Keyed SHA */ +#define SADB_X_AALG_MD5 3 /*249*/ /* Keyed MD5, not implemented */ +#define SADB_X_AALG_SHA 4 /*250*/ /* Keyed SHA, not implemented */ #define SADB_X_AALG_NULL 5 /*251*/ /* null authentication */ /* RFC2367 numbers - meets RFC2407 */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/radix.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/radix.h index 736c905a..d7be4dd8 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/radix.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/radix.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2008 Apple Inc. All rights reserved. + * Copyright (c) 2000-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -65,4 +65,9 @@ #define _RADIX_H_ #include +#include +#include +#include + + #endif /* _RADIX_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/route.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/route.h index 2eae892c..af048fec 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/route.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/route.h @@ -126,12 +126,6 @@ struct rt_metrics { /* 0x80000000 unassigned */ #define RTPRF_OURS RTF_PROTO3 /* set on routes we manage */ -#define RTF_BITS \ - "\020\1UP\2GATEWAY\3HOST\4REJECT\5DYNAMIC\6MODIFIED\7DONE" \ - "\10DELCLONE\11CLONING\12XRESOLVE\13LLINFO\14STATIC\15BLACKHOLE" \ - "\16NOIFREF\17PROTO2\20PROTO1\21PRCLONING\22WASCLONED\23PROTO3" \ - "\25PINNED\26LOCAL\27BROADCAST\30MULTICAST\31IFSCOPE\32CONDEMNED" \ - "\33IFREF\34PROXY\35ROUTER\37GLOBAL" #define IS_DIRECT_HOSTROUTE(rt) \ (((rt)->rt_flags & (RTF_HOST | RTF_GATEWAY)) == RTF_HOST) @@ -149,7 +143,7 @@ struct rt_metrics { /* * Routing statistics. */ -struct rtstat { +struct rtstat { short rts_badredirect; /* bogus redirect calls */ short rts_dynamic; /* routes created by redirects */ short rts_newgateway; /* routes modified by redirects */ @@ -191,6 +185,10 @@ struct rt_msghdr2 { struct rt_metrics rtm_rmx; /* metrics themselves */ }; +struct rt_msghdr_prelude { + u_short rtm_msglen; /* to skip over non-understood messages */ +}; + #define RTM_VERSION 5 /* Up the ante and ignore older versions */ /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/net/route_private.h b/Frameworks/Kernel.framework/Versions/A/Headers/net/route_private.h index 3a74d06d..7820500d 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/net/route_private.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/net/route_private.h @@ -94,6 +94,38 @@ struct rt_reach_info { int32_t ri_npm; /* node proximity metric */ }; + +/* + * Route address information with extra space for "tiny" socket addresses + * from the user space. A "tiny" socket address has the `sa_len' field + * smaller than the canonical sockaddr structure. + * To preserve the type and the bounds safety, such "tiny" addresses + * are copied to the `rtix_tiny_addr' field. + */ +struct rt_addrinfo_ext { + struct rt_addrinfo rtix_info; /* addr info containing sockaddr array */ + struct sockaddr rtix_tiny_addr[RTAX_MAX]; /* storage for the "tiny" sockaddr addresss */ + uint8_t rtix_next_tiny; /* offset of the next "tiny" address */ +}; + +/* + * The following is used internally when parsing routing + * messages to avoid potential boundary issues when + * using shorter structures. + */ +struct rt_msghdr_common { + u_short rtm_msglen; /* to skip over non-understood messages */ + u_char rtm_version; /* future binary compatibility */ + u_char rtm_type; /* message type */ + u_short rtm_index; /* index for associated ifp */ + int rtm_flags; /* flags, incl. kern & message, e.g. DONE */ + int rtm_addrs; /* bitmask identifying sockaddrs in msg */ + pid_t rtm_pid; /* identify sender */ + int rtm_seq; /* for sender to identify action */ + int rtm_errno; /* why failed */ + int rtm_use; /* from rtentry */ +}; + /* * Extended routing message header (private). */ @@ -131,4 +163,16 @@ struct rt_msghdr_ext { #define IFSCOPE_NONE 0 #define IFSCOPE_UNKNOWN IFSCOPE_NONE +/* + * Routing statistics. + */ +struct rtstat_64 { + uint64_t rts_badredirect; /* bogus redirect calls */ + uint64_t rts_dynamic; /* routes created by redirects */ + uint64_t rts_newgateway; /* routes modified by redirects */ + uint64_t rts_unreach; /* lookups which failed */ + uint64_t rts_wildcard; /* lookups satisfied by a wildcard */ + uint64_t rts_badrtgwroute; /* route to gateway is not direct */ +}; + #endif /* _NET_ROUTE_PRIVATE_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/icmp6.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/icmp6.h index 6699daa3..fb676cea 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/icmp6.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/icmp6.h @@ -314,6 +314,7 @@ struct nd_opt_hdr { /* Neighbor discovery option header */ #define ND_OPT_REDIRECTED_HEADER 4 #define ND_OPT_MTU 5 #define ND_OPT_NONCE 14 /* RFC 3971 */ +#define ND_OPT_PVD 21 /* RFC 8801 */ #define ND_OPT_ROUTE_INFO 24 /* RFC 4191 */ #define ND_OPT_RDNSS 25 /* RFC 6106 */ #define ND_OPT_DNSSL 31 /* RFC 6106 */ @@ -405,6 +406,28 @@ struct nd_opt_pref64 { /* NAT64 prefix */ #define ND_OPT_PREF64_PLC_64 1 #define ND_OPT_PREF64_PLC_96 0 +/* + * PvD (Provisioning Domain) RFC 8801 + */ +struct nd_opt_pvd { + u_int8_t nd_opt_pvd_type; + u_int8_t nd_opt_pvd_len; + /* http: 1 bit */ + /* legacy: 1 bit */ + /* ra: 1 bit */ + /* reserved: 9 bits */ + /* delay: 4 bits */ + u_int8_t nd_opt_flags_delay[2]; + u_int16_t nd_opt_pvd_seq; + u_int8_t nd_opt_pvd_id[1]; +} __attribute__((__packed__)); + +#define ND_OPT_PVD_MIN_LENGTH offsetof(struct nd_opt_pvd, nd_opt_pvd_id) +#define ND_OPT_PVD_FLAGS_HTTP 0x80 +#define ND_OPT_PVD_FLAGS_LEGACY 0x40 +#define ND_OPT_PVD_FLAGS_RA 0x20 +#define ND_OPT_PVD_DELAY_MASK 0x0f + /* * icmp6 namelookup */ @@ -575,14 +598,9 @@ struct icmp6_filter { }; #define ICMP6_FILTER_SETPASSALL(filterp) \ -do { \ - int i; u_char *ptr; \ - ptr = (u_char *)filterp; \ - for (i = 0; i < sizeof(struct icmp6_filter); i++) \ - ptr[i] = 0xff; \ -} while (0) + memset(filterp, 0xff, sizeof(struct icmp6_filter)) #define ICMP6_FILTER_SETBLOCKALL(filterp) \ - bzero(filterp, sizeof(struct icmp6_filter)) + memset(filterp, 0x00, sizeof(struct icmp6_filter)) #define ICMP6_FILTER_SETPASS(type, filterp) \ (((filterp)->icmp6_filt[(type) >> 5]) |= (1u << ((type) & 31))) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_pcb.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_pcb.h index a2f69d8c..5c368cf3 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_pcb.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_pcb.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2022 Apple Inc. All rights reserved. + * Copyright (c) 2000-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_private.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_private.h index 4667186b..ac937b58 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_private.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_private.h @@ -133,9 +133,7 @@ struct sockaddr_inifscope { */ union sockaddr_in_4_6 { -#if !__has_ptrcheck struct sockaddr sa; -#endif struct __sockaddr_header sah; struct sockaddr_in sin; struct sockaddr_in6 sin6; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_var.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_var.h index 7da6b44f..fcf659ef 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_var.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/in_var.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2021 Apple Inc. All rights reserved. + * Copyright (c) 2000-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -63,6 +63,7 @@ #ifndef _NETINET_IN_VAR_H_ #define _NETINET_IN_VAR_H_ #include +#include #include #include @@ -97,7 +98,7 @@ struct kev_in_collision { struct net_event_data link_data; /* link where ARP was received on */ struct in_addr ia_ipaddr; /* conflicting IP address */ u_char hw_len; /* length of hardware address */ - u_char hw_addr[0]; /* variable length hardware address */ + u_char hw_addr[__counted_by(hw_len)];/* variable length hardware address */ }; struct kev_in_arpfailure { diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/ip_var.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/ip_var.h index ab25cced..5e8670ba 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/ip_var.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/ip_var.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2021 Apple Inc. All rights reserved. + * Copyright (c) 2000-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -71,6 +71,7 @@ #include #include +#include #include /* @@ -133,6 +134,9 @@ struct ipstat { u_int32_t ips_necp_policy_drop; /* NECP policy related drop */ u_int32_t ips_rcv_if_weak_match; /* packets whose receive interface that passed the Weak ES address check */ u_int32_t ips_rcv_if_no_match; /* packets whose receive interface did not pass the address check */ + u_int32_t ips_input_ipf_drop; /* packets dropped by IP filters */ + u_int32_t ips_input_no_proto; /* packets dropped for unsuppported IP protocol */ + u_int32_t ips_src_addr_not_avail; /* outgoing packets with source address not available */ }; struct ip_linklocal_stat { diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp.h index bdd1914e..8aab372e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp.h @@ -151,8 +151,8 @@ struct tcphdr { #define TCPOPT_FASTOPEN 34 #define TCPOLEN_FASTOPEN_REQ 2 -#define TCPOPT_ACCECN0 0xAC /* AccECN Order 0 */ -#define TCPOPT_ACCECN1 0XAE /* AccECN Order 1 */ +#define TCPOPT_ACCECN0 172 /* AccECN Order 0 */ +#define TCPOPT_ACCECN1 174 /* AccECN Order 1 */ #define TCPOLEN_ACCECN_EMPTY 2 /* Empty option contains kind and length */ #define TCPOLEN_ACCECN_COUNTER 3 /* Length of each AccECN counter */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_fsm.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_fsm.h index 97c25dc8..0aa6484f 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_fsm.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_fsm.h @@ -114,7 +114,7 @@ #endif #ifdef TCPSTATES -char *tcpstates[] = { +static char *tcpstates[] = { "CLOSED", "LISTEN", "SYN_SENT", "SYN_RCVD", "ESTABLISHED", "CLOSE_WAIT", "FIN_WAIT_1", "CLOSING", "LAST_ACK", "FIN_WAIT_2", "TIME_WAIT" diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_private.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_private.h index 4b15fb00..86eaad80 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_private.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_private.h @@ -280,6 +280,7 @@ struct tcp_info { tcpi_tfo_recv_blackhole:1, /* A receiver-blackhole got detected */ tcpi_tfo_onebyte_proxy:1; /* A proxy acknowledges all but one byte of the SYN */ +#define TCPINFO_HAS_L4S_STATE 1 u_int16_t tcpi_ecn_client_setup:1, /* Attempted ECN setup from client side */ tcpi_ecn_server_setup:1, /* Attempted ECN setup from server side */ tcpi_ecn_success:1, /* peer negotiated ECN */ @@ -292,7 +293,8 @@ struct tcp_info { tcpi_if_wifi_infra:1, /* Interface is wifi infrastructure */ tcpi_if_wifi_awdl:1, /* Interface is wifi AWDL */ tcpi_snd_background:1, /* Using delay based algorithm on sender side */ - tcpi_rcv_background:1; /* Using delay based algorithm on receive side */ + tcpi_rcv_background:1, /* Using delay based algorithm on receive side */ + tcpi_l4s_enabled:1; /* Whether L4S is enabled or not */ u_int32_t tcpi_ecn_recv_ce; /* Packets received with CE */ u_int32_t tcpi_ecn_recv_cwr; /* Packets received with CWR */ @@ -313,9 +315,18 @@ struct tcp_info { uint32_t tcpi_server_accecn_state; /* Server's Accurate ECN state as seen by clent */ uint64_t tcpi_ecn_capable_packets_sent; /* Packets sent with ECT */ uint64_t tcpi_ecn_capable_packets_acked; /* Packets sent with ECT that were ACKed */ - uint64_t tcpi_ecn_capable_packets_marked; /* Packets sent with ECT that were marked */ + uint64_t tcpi_ecn_capable_packets_marked; /* Packets sent with ECT that were marked, same as delivered_ce_packets */ uint64_t tcpi_ecn_capable_packets_lost; /* Packets sent with ECT that were lost */ +#define TCPINFO_HAS_L4S 1 + uint64_t tcpi_received_ce_packets; + uint64_t tcpi_received_ect0_bytes; + uint64_t tcpi_received_ect1_bytes; + uint64_t tcpi_received_ce_bytes; + uint64_t tcpi_delivered_ect0_bytes; + uint64_t tcpi_delivered_ect1_bytes; + uint64_t tcpi_delivered_ce_bytes; + #define TCPINFO_HAS_LIMITED_TIME 1 uint64_t tcpi_flow_control_total_time; uint64_t tcpi_rcvwnd_limited_total_time; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_timer.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_timer.h index 01b0d3c8..aee4522e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_timer.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_timer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2014 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_var.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_var.h index b2152375..3f043898 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_var.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/tcp_var.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2022 Apple Inc. All rights reserved. + * Copyright (c) 2000-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -63,6 +63,7 @@ #ifndef _NETINET_TCP_VAR_H_ #define _NETINET_TCP_VAR_H_ +#include #include #include #include @@ -291,6 +292,11 @@ struct tcpstat { u_int32_t tcps_sack_send_blocks; /* SACK blocks (options) sent */ u_int32_t tcps_sack_sboverflow; /* SACK sendblock overflow */ + /* RACK related stats */ + u_int32_t tcps_rack_recovery_episode; /* RACK recovery episodes */ + u_int32_t tcps_rack_reordering_timeout_recovery_episode; /* RACK recovery episodes due to reordering timeout */ + u_int32_t tcps_rack_rexmits; /* RACK rexmit segments */ + u_int32_t tcps_bg_rcvtotal; /* total background packets received */ u_int32_t tcps_rxtfindrop; /* drop conn after retransmitting FIN */ u_int32_t tcps_fcholdpacket; /* packets withheld because of flow control */ @@ -479,6 +485,11 @@ struct tcpstat_local { u_int64_t dospacket; u_int64_t cleanup; u_int64_t synwindow; + u_int64_t linkheur_stealthdrop; + u_int64_t linkheur_noackpri; + u_int64_t linkheur_comprxmt; + u_int64_t linkheur_synrxmt; + u_int64_t linkheur_rxmtfloor; }; #pragma pack(4) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/udp_var.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/udp_var.h index 71aaf376..abc39948 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet/udp_var.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet/udp_var.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008-2016 Apple Inc. All rights reserved. + * Copyright (c) 2008-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/ah.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/ah.h index cfd4838b..f8f16b4b 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/ah.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/ah.h @@ -40,6 +40,7 @@ #include + struct ah { u_int8_t ah_nxt; /* Next Header */ u_int8_t ah_len; /* Length of data, in 32bit */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/in6_var.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/in6_var.h index d7bdbcbe..43c93e18 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/in6_var.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/in6_var.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2021 Apple Inc. All rights reserved. + * Copyright (c) 2000-2023 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -96,9 +96,11 @@ #include #include +#include #include #include #include +#include #include /* @@ -405,9 +407,7 @@ struct kev_in6_data { #define SIOCGIFPDSTADDR_IN6 _IOWR('i', 64, struct in6_ifreq) #define SIOCGIFAFLAG_IN6 _IOWR('i', 73, struct in6_ifreq) -#define SIOCGDRLST_IN6 _IOWR('i', 74, struct in6_drlist) - -#define SIOCGPRLST_IN6 _IOWR('i', 75, struct in6_prlist) +/* removed: #define SIOCGDRLST_IN6 _IOWR('i', 74, struct in6_drlist) */ #define OSIOCGIFINFO_IN6 _IOWR('i', 108, struct in6_ondireq) #define SIOCGIFINFO_IN6 _IOWR('i', 76, struct in6_ondireq) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/nd6.h b/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/nd6.h index 1f8a0dfa..118565be 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/nd6.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/netinet6/nd6.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2022 Apple Inc. All rights reserved. + * Copyright (c) 2000-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -119,20 +119,6 @@ struct in6_nbrinfo { }; -#define DRLSTSIZ 10 -#define PRLSTSIZ 10 - -struct in6_drlist { - char ifname[IFNAMSIZ]; - struct { - struct in6_addr rtaddr; - u_char flags; - u_short rtlifetime; - u_long expire; - u_short if_index; - } defrouter[DRLSTSIZ]; -}; - /* valid values for stateflags */ #define NDDRF_INSTALLED 0x01 /* installed in the routing table */ @@ -140,6 +126,7 @@ struct in6_drlist { #define NDDRF_STATIC 0x04 /* for internal use only */ #define NDDRF_MAPPED 0x08 /* Default router addr is mapped to a different one for routing */ #define NDDRF_INELIGIBLE 0x10 /* Default router entry is ineligible for default router selection */ +#define NDDRF_LOCAL 0x20 /* Router's address is locally hosted as well */ struct in6_defrouter { struct sockaddr_in6 rtaddr; @@ -151,23 +138,6 @@ struct in6_defrouter { }; -struct in6_prlist { - char ifname[IFNAMSIZ]; - struct { - struct in6_addr prefix; - struct prf_ra raflags; - u_char prefixlen; - u_char origin; - u_long vltime; - u_long pltime; - u_long expire; - u_short if_index; - u_short advrtrs; /* number of advertisement routers */ - struct in6_addr advrtr[DRLSTSIZ]; /* XXX: explicit limit */ - } prefix[PRLSTSIZ]; -}; - - struct in6_prefix { struct sockaddr_in6 prefix; struct prf_ra raflags; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/nfs/nfs.h b/Frameworks/Kernel.framework/Versions/A/Headers/nfs/nfs.h index 7cdf4bc7..1e4ef170 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/nfs/nfs.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/nfs/nfs.h @@ -210,6 +210,9 @@ extern int nfs_ticks; #define NFS_MATTR_LOCAL_MOUNT_PORT 30 /* Unix domain socket for MOUNT protocol */ #define NFS_MATTR_SET_MOUNT_OWNER 31 /* Set owner of mount point */ #define NFS_MATTR_READLINK_NOCACHE 32 /* Readlink nocache mode */ +#define NFS_MATTR_ATTRCACHE_ROOTDIR_MIN 33 /* minimum attribute cache time for root dir */ +#define NFS_MATTR_ATTRCACHE_ROOTDIR_MAX 34 /* maximum attribute cache time for root dir */ +#define NFS_MATTR_ACCESS_CACHE 35 /* Access cache size */ /* NFS mount flags */ #define NFS_MFLAG_SOFT 0 /* soft mount (requests fail if unresponsive) */ @@ -231,6 +234,7 @@ extern int nfs_ticks; #define NFS_MFLAG_MNTUDP 16 /* MOUNT protocol should use UDP */ #define NFS_MFLAG_MNTQUICK 17 /* use short timeouts while mounting */ #define NFS_MFLAG_NOOPAQUE_AUTH 19 /* don't make the mount AUTH_OPAQUE. Used by V3 */ +#define NFS_MFLAG_SKIP_RENEW 20 /* don't send OP_RENEW when no files are opened. Used by V4 */ /* Macros for packing and unpacking packed versions */ #define PVER2MAJOR(M) ((uint32_t)(((M) >> 16) & 0xffff)) @@ -568,6 +572,96 @@ struct nfs_user_stat_path_rec { +typedef struct nfserr_info { + const char * nei_name; + const int nei_error; + const int nei_index; +} nfserr_info_t; + +/* + * NFS Common Errors + */ +#define NFSERR_INFO_COMMON \ + { "NFS_OK", NFS_OK, 0 }, \ + { "NFSERR_PERM", NFSERR_PERM, 1 }, \ + { "NFSERR_NOENT", NFSERR_NOENT, 2 }, \ + { "NFSERR_IO", NFSERR_IO, 3 }, \ + { "NFSERR_NXIO", NFSERR_NXIO, 4 }, \ + { "NFSERR_ACCES", NFSERR_ACCES, 5 }, \ + { "NFSERR_EXIST", NFSERR_EXIST, 6 }, \ + { "NFSERR_XDEV", NFSERR_XDEV, 7 }, \ + { "NFSERR_NODEV", NFSERR_NODEV, 8 }, \ + { "NFSERR_NOTDIR", NFSERR_NOTDIR, 9 }, \ + { "NFSERR_ISDIR", NFSERR_ISDIR, 10 }, \ + { "NFSERR_INVAL", NFSERR_INVAL, 11 }, \ + { "NFSERR_FBIG", NFSERR_FBIG, 12 }, \ + { "NFSERR_NOSPC", NFSERR_NOSPC, 13 }, \ + { "NFSERR_ROFS", NFSERR_ROFS, 14 }, \ + { "NFSERR_MLINK", NFSERR_MLINK, 15 }, \ + { "NFSERR_NAMETOL", NFSERR_NAMETOL, 16 }, \ + { "NFSERR_NOTEMPTY", NFSERR_NOTEMPTY, 17 }, \ + { "NFSERR_DQUOT", NFSERR_DQUOT, 18 }, \ + { "NFSERR_STALE", NFSERR_STALE, 19 }, \ + { "NFSERR_REMOTE", NFSERR_REMOTE, 20 }, \ + { "NFSERR_WFLUSH", NFSERR_WFLUSH, 21 }, \ + { "NFSERR_BADHANDLE", NFSERR_BADHANDLE, 22 }, \ + { "NFSERR_NOT_SYNC", NFSERR_NOT_SYNC, 23 }, \ + { "NFSERR_BAD_COOKIE", NFSERR_BAD_COOKIE, 24 }, \ + { "NFSERR_NOTSUPP", NFSERR_NOTSUPP, 25 }, \ + { "NFSERR_TOOSMALL", NFSERR_TOOSMALL, 26 }, \ + { "NFSERR_SERVERFAULT", NFSERR_SERVERFAULT, 27 }, \ + { "NFSERR_BADTYPE", NFSERR_BADTYPE, 28 }, \ + { "NFSERR_DELAY", NFSERR_DELAY, 29 } + +#define NFSERR_INFO_COMMON_SIZE 30 + +/* + * NFSv4 Errors + */ +#define NFSERR_INFO_V4 \ + { "ERR_SAME", NFSERR_SAME, 0 }, \ + { "ERR_DENIED", NFSERR_DENIED, 1 }, \ + { "ERR_EXPIRED", NFSERR_EXPIRED, 2 }, \ + { "ERR_LOCKED", NFSERR_LOCKED, 3 }, \ + { "ERR_GRACE", NFSERR_GRACE, 4 }, \ + { "ERR_FHEXPIRED", NFSERR_FHEXPIRED, 5 }, \ + { "ERR_SHARE_DENIED", NFSERR_SHARE_DENIED, 6 }, \ + { "ERR_WRONGSEC", NFSERR_WRONGSEC, 7 }, \ + { "ERR_CLID_INUSE", NFSERR_CLID_INUSE, 8 }, \ + { "ERR_RESOURCE", NFSERR_RESOURCE, 9 }, \ + { "ERR_MOVED", NFSERR_MOVED, 10 }, \ + { "ERR_NOFILEHANDLE", NFSERR_NOFILEHANDLE, 11 }, \ + { "ERR_MINOR_VERS_MISMATCH", NFSERR_MINOR_VERS_MISMATCH, 12 }, \ + { "ERR_STALE_CLIENTID", NFSERR_STALE_CLIENTID, 13 }, \ + { "ERR_STALE_STATEID", NFSERR_STALE_STATEID, 14 }, \ + { "ERR_OLD_STATEID", NFSERR_OLD_STATEID, 15 }, \ + { "ERR_BAD_STATEID", NFSERR_BAD_STATEID, 16 }, \ + { "ERR_BAD_SEQID", NFSERR_BAD_SEQID, 17 }, \ + { "ERR_NOT_SAME", NFSERR_NOT_SAME, 18 }, \ + { "ERR_LOCK_RANGE", NFSERR_LOCK_RANGE, 19 }, \ + { "ERR_SYMLINK", NFSERR_SYMLINK, 20 }, \ + { "ERR_RESTOREFH", NFSERR_RESTOREFH, 21 }, \ + { "ERR_LEASE_MOVED", NFSERR_LEASE_MOVED, 22 }, \ + { "ERR_ATTRNOTSUPP", NFSERR_ATTRNOTSUPP, 23 }, \ + { "ERR_NO_GRACE", NFSERR_NO_GRACE, 24 }, \ + { "ERR_RECLAIM_BAD", NFSERR_RECLAIM_BAD, 25 }, \ + { "ERR_RECLAIM_CONFLICT", NFSERR_RECLAIM_CONFLICT, 26 }, \ + { "ERR_BADXDR", NFSERR_BADXDR, 27 }, \ + { "ERR_LOCKS_HELD", NFSERR_LOCKS_HELD, 28 }, \ + { "ERR_OPENMODE", NFSERR_OPENMODE, 29 }, \ + { "ERR_BADOWNER", NFSERR_BADOWNER, 30 }, \ + { "ERR_BADCHAR", NFSERR_BADCHAR, 31 }, \ + { "ERR_BADNAME", NFSERR_BADNAME, 32 }, \ + { "ERR_BAD_RANGE", NFSERR_BAD_RANGE, 33 }, \ + { "ERR_LOCK_NOTSUPP", NFSERR_LOCK_NOTSUPP, 34 }, \ + { "ERR_OP_ILLEGAL", NFSERR_OP_ILLEGAL, 35 }, \ + { "ERR_DEADLOCK", NFSERR_DEADLOCK, 36 }, \ + { "ERR_FILE_OPEN", NFSERR_FILE_OPEN, 37 }, \ + { "ERR_ADMIN_REVOKED", NFSERR_ADMIN_REVOKED, 38 }, \ + { "ERR_CB_PATH_DOWN", NFSERR_CB_PATH_DOWN, 39 } + +#define NFSERR_INFO_V4_SIZE 40 + /* * XXX to allow amd to include nfs.h without nfsproto.h */ @@ -595,7 +689,13 @@ struct nfsclntstats { uint64_t biocache_readdirs; uint64_t readdir_bios; uint64_t rpccntv3[NFS_NPROCS]; + struct { + uint64_t nlm_lock; + uint64_t nlm_test; + uint64_t nlm_unlock; + } nlmcnt; // NFSv3 only uint64_t opcntv4[NFS_OP_COUNT]; + uint64_t cbopcntv4[NFS_OP_CB_COUNT]; uint64_t rpcretries; uint64_t rpcrequests; uint64_t rpctimeouts; @@ -603,6 +703,11 @@ struct nfsclntstats { uint64_t rpcinvalid; uint64_t pageins; uint64_t pageouts; + struct { + uint64_t errs_common[NFSERR_INFO_COMMON_SIZE]; + uint64_t errs_v4[NFSERR_INFO_V4_SIZE]; + uint64_t errs_unknown; + } nfs_errs; }; struct nfsrvstats { @@ -614,6 +719,10 @@ struct nfsrvstats { uint64_t srvcache_nonidemdonehits; uint64_t srvcache_misses; uint64_t srvvop_writes; + struct { + uint64_t errs_common[NFSERR_INFO_COMMON_SIZE]; + uint64_t errs_unknown; + } nfs_errs; }; #endif diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/nfs/nfsproto.h b/Frameworks/Kernel.framework/Versions/A/Headers/nfs/nfsproto.h index 06b3bed3..f41656dd 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/nfs/nfsproto.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/nfs/nfsproto.h @@ -99,7 +99,7 @@ #define NFSRV_MAXDATA NFS_MAXDATA #define NFSRV_TCPSOCKBUF (2 * NFSRV_MAXDATA) -#define NFS4_CALLBACK_PROG 0x4E465343 /* "NFSC" */ +#define NFS4_CALLBACK_PROG 0x40000000 #define NFS4_CALLBACK_PROG_VERSION 1 /* Stat numbers for NFS RPC returns */ @@ -737,10 +737,12 @@ typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5, #define NFS_OP_RELEASE_LOCKOWNER 39 #define NFS_OP_ILLEGAL 10044 #define NFS_OP_COUNT 40 + /* NFSv4 callback opcodes */ #define NFS_OP_CB_GETATTR 3 #define NFS_OP_CB_RECALL 4 #define NFS_OP_CB_ILLEGAL 10044 +#define NFS_OP_CB_COUNT 5 /* NFSv4 file handle type flags */ #define NFS_FH_PERSISTENT 0x00000000 diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/os/alloc_util.h b/Frameworks/Kernel.framework/Versions/A/Headers/os/alloc_util.h index a494a526..3b447e67 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/os/alloc_util.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/os/alloc_util.h @@ -72,4 +72,41 @@ extern "C++" { __elem; \ }) +/*! + * @macro os_get_pointee_type + * + * @abstract + * Get the type pointed to by @c ptr. + * + * @discussion + * C++ forbids dereferencing a void pointer. + * This macro provides an abstraction that is safe to use with any pointer, + * both from C, and from C++. + * + * @param ptr the pointer we want to get the pointee's type for + */ + +#if defined(__cplusplus) && __has_builtin(__remove_pointer) && \ + __has_builtin(__remove_reference_t) +/* + * The reason we're using the compiler builtins is that those are able to + * properly deal with __ptrauth-qualified pointers, unlike template + * specializations. Moreover, template specializations would require forwarding + * type definitions, and currently __attribute__((xnu_usage_semantics(...))) + * annotations are not carried over across typedefs. + * + * It is safe to assume that if the compiler does not support such builtins, + * it also does not implement D150875, and we can therefore safely dereference + * void pointers. + */ +#define os_get_pointee_type(ptr) \ + __remove_pointer(__remove_reference_t(__typeof__(ptr))) +#else +#define os_get_pointee_type(ptr) \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wvoid-ptr-dereference\"") \ + __typeof__(*(ptr)) \ + _Pragma("clang diagnostic pop") +#endif + #endif /* _OS_ALLOC_UTIL_H */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/os/atomic.h b/Frameworks/Kernel.framework/Versions/A/Headers/os/atomic.h index 08c916e3..69f80118 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/os/atomic.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/os/atomic.h @@ -70,9 +70,19 @@ #define OS_ATOMIC_STD #define os_atomic_std(op) op #define os_atomic(type) type volatile _Atomic +#if __has_ptrcheck +#define os_cast_to_atomic_pointer(p) (__typeof__(*(p)) volatile _Atomic * __single)(p) +#define os_cast_to_nonatomic_pointer(p) \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wcast-qual\"") \ + (os_atomic_basetypeof(p) * __single)(p) \ + _Pragma("clang diagnostic pop") +#else /* !__has_ptrcheck */ #define os_cast_to_atomic_pointer(p) (__typeof__(*(p)) volatile _Atomic *)(uintptr_t)(p) -#define os_atomic_basetypeof(p) __typeof__(atomic_load(os_cast_to_atomic_pointer(p))) #define os_cast_to_nonatomic_pointer(p) (os_atomic_basetypeof(p) *)(uintptr_t)(p) +#endif /* !__has_ptrcheck */ +#define os_atomic_basetypeof(p) __typeof__(atomic_load(os_cast_to_atomic_pointer(p))) + #endif /* !OS_ATOMIC_USES_CXX */ /*! diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/os/base.h b/Frameworks/Kernel.framework/Versions/A/Headers/os/base.h index c376784f..4fbb75b9 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/os/base.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/os/base.h @@ -246,8 +246,12 @@ #if __has_attribute(__swift_attr__) #define OS_SWIFT_UNAVAILABLE_FROM_ASYNC(msg) \ __attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" msg "\")"))) +#define OS_SWIFT_NONISOLATED __attribute__((__swift_attr__("nonisolated"))) +#define OS_SWIFT_NONISOLATED_UNSAFE __attribute__((__swift_attr__("nonisolated(unsafe)"))) #else #define OS_SWIFT_UNAVAILABLE_FROM_ASYNC(msg) +#define OS_SWIFT_NONISOLATED +#define OS_SWIFT_NONISOLATED_UNSAFE #endif #if __has_attribute(swift_private) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/os/log.h b/Frameworks/Kernel.framework/Versions/A/Headers/os/log.h index aa67e2f3..2b46e991 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/os/log.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/os/log.h @@ -221,13 +221,8 @@ os_log_debug_enabled(os_log_t log); * line is decoded. This string must be a constant string, not dynamically * generated. Supports all standard printf types and %@ (objects). */ -#define os_log(log, format, ...) __extension__({ \ - _Static_assert(__builtin_constant_p(format), "format string must be constant"); \ - __attribute__((section("__TEXT,__os_log"))) static const char _os_log_fmt[] = format; \ - _os_log_verify_format_str(format, ##__VA_ARGS__); \ - _os_log_internal(&__dso_handle, log, OS_LOG_TYPE_DEFAULT, _os_log_fmt, ##__VA_ARGS__); \ - __asm__(""); /* avoid tailcall */ \ -}) +#define os_log(log, format, ...) \ + os_log_with_type(log, OS_LOG_TYPE_DEFAULT, format, ##__VA_ARGS__) /*! * @function os_log_info @@ -256,13 +251,8 @@ os_log_debug_enabled(os_log_t log); * line is decoded. This string must be a constant string, not dynamically * generated. Supports all standard printf types and %@ (objects). */ -#define os_log_info(log, format, ...) __extension__({ \ - _Static_assert(__builtin_constant_p(format), "format string must be constant"); \ - __attribute__((section("__TEXT,__os_log"))) static const char _os_log_fmt[] = format; \ - _os_log_verify_format_str(format, ##__VA_ARGS__); \ - _os_log_internal(&__dso_handle, log, OS_LOG_TYPE_INFO, _os_log_fmt, ##__VA_ARGS__); \ - __asm__(""); /* avoid tailcall */ \ -}) +#define os_log_info(log, format, ...) \ + os_log_with_type(log, OS_LOG_TYPE_INFO, format, ##__VA_ARGS__) /*! * @function os_log_debug @@ -291,13 +281,8 @@ os_log_debug_enabled(os_log_t log); * line is decoded. This string must be a constant string, not dynamically * generated. Supports all standard printf types and %@ (objects). */ -#define os_log_debug(log, format, ...) __extension__({ \ - _Static_assert(__builtin_constant_p(format), "format string must be constant"); \ - __attribute__((section("__TEXT,__os_log"))) static const char _os_log_fmt[] = format; \ - _os_log_verify_format_str(format, ##__VA_ARGS__); \ - _os_log_internal(&__dso_handle, log, OS_LOG_TYPE_DEBUG, _os_log_fmt, ##__VA_ARGS__); \ - __asm__(""); /* avoid tailcall */ \ -}) +#define os_log_debug(log, format, ...) \ + os_log_with_type(log, OS_LOG_TYPE_DEBUG, format, ##__VA_ARGS__) /*! * @function os_log_error @@ -325,13 +310,8 @@ os_log_debug_enabled(os_log_t log); * line is decoded. This string must be a constant string, not dynamically * generated. Supports all standard printf types and %@ (objects). */ -#define os_log_error(log, format, ...) __extension__({ \ - _Static_assert(__builtin_constant_p(format), "format string must be constant"); \ - __attribute__((section("__TEXT,__os_log"))) static const char _os_log_fmt[] = format; \ - _os_log_verify_format_str(format, ##__VA_ARGS__); \ - _os_log_internal(&__dso_handle, log, OS_LOG_TYPE_ERROR, _os_log_fmt, ##__VA_ARGS__); \ - __asm__(""); /* avoid tailcall */ \ -}) +#define os_log_error(log, format, ...) \ + os_log_with_type(log, OS_LOG_TYPE_ERROR, format, ##__VA_ARGS__) /*! * @function os_log_fault @@ -362,13 +342,8 @@ os_log_debug_enabled(os_log_t log); * line is decoded. This string must be a constant string, not dynamically * generated. Supports all standard printf types and %@ (objects). */ -#define os_log_fault(log, format, ...) __extension__({ \ - _Static_assert(__builtin_constant_p(format), "format string must be constant"); \ - __attribute__((section("__TEXT,__os_log"))) static const char _os_log_fmt[] = format; \ - _os_log_verify_format_str(format, ##__VA_ARGS__); \ - _os_log_internal(&__dso_handle, log, OS_LOG_TYPE_FAULT, _os_log_fmt, ##__VA_ARGS__); \ - __asm__(""); /* avoid tailcall */ \ -}) +#define os_log_fault(log, format, ...) \ + os_log_with_type(log, OS_LOG_TYPE_FAULT, format, ##__VA_ARGS__) /*! * @function os_log_with_type @@ -393,8 +368,11 @@ os_log_debug_enabled(os_log_t log); #define os_log_with_type(log, type, format, ...) __extension__({ \ _Static_assert(__builtin_constant_p(format), "format string must be constant"); \ __attribute__((section("__TEXT,__os_log"))) static const char _os_log_fmt[] = format; \ - _os_log_verify_format_str(format, ##__VA_ARGS__); \ - _os_log_internal(&__dso_handle, log, type, _os_log_fmt, ##__VA_ARGS__); \ + if (0) { \ + _os_log_verify_format_str(format, ##__VA_ARGS__); \ + } else { \ + _os_log_internal(&__dso_handle, log, type, _os_log_fmt, ##__VA_ARGS__); \ + } \ __asm__(""); /* avoid tailcall */ \ }) @@ -422,11 +400,14 @@ os_log_debug_enabled(os_log_t log); * line is decoded. This string must be a constant string, not dynamically * generated. Supports all standard printf types. */ -#define os_log_at_time(log, type, ts, format, ...) __extension__({ \ +#define os_log_at_time(log, type, ts, format, ...) __extension__({ \ _Static_assert(__builtin_constant_p(format), "format string must be constant"); \ __attribute__((section("__TEXT,__os_log"))) static const char _os_log_fmt[] = format; \ - _os_log_verify_format_str(format, ##__VA_ARGS__); \ - _os_log_at_time(&__dso_handle, log, type, ts, _os_log_fmt, ##__VA_ARGS__); \ + if (0) { \ + _os_log_verify_format_str(format, ##__VA_ARGS__); \ + } else { \ + _os_log_at_time(&__dso_handle, log, type, ts, _os_log_fmt, ##__VA_ARGS__); \ + } \ __asm__(""); /* avoid tailcall */ \ }) @@ -456,8 +437,11 @@ os_log_debug_enabled(os_log_t log); #define os_log_driverKit(out, log, type, format, ...) __extension__({ \ _Static_assert(__builtin_constant_p(format), "format string must be constant"); \ __attribute__((section("__TEXT,__os_log"))) static const char _os_log_fmt[] = format; \ - _os_log_verify_format_str(format, ##__VA_ARGS__); \ - (*(out)) = _os_log_internal_driverKit(&__dso_handle, log, type, _os_log_fmt, ##__VA_ARGS__); \ + if (0) { \ + _os_log_verify_format_str(format, ##__VA_ARGS__); \ + } else { \ + (*(out)) = _os_log_internal_driverKit(&__dso_handle, log, type, _os_log_fmt, ##__VA_ARGS__); \ + } \ __asm__(""); /* avoid tailcall */ \ }) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/pexpert/device_tree.h b/Frameworks/Kernel.framework/Versions/A/Headers/pexpert/device_tree.h index f389c340..b35d4d15 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/pexpert/device_tree.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/pexpert/device_tree.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000, 2024 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -164,11 +164,65 @@ extern int SecureDTEntryIsEqual(const DTEntry ref1, const DTEntry ref2); * Find the device tree entry that contains propName=propValue. * It currently searches the entire * tree. This function should eventually go in DeviceTree.c. + * This only works for string properties where `propValue` is null-terminated. * Returns: kSuccess = entry was found. Entry is in entryH. * kError = entry was not found */ extern int SecureDTFindEntry(const char *propName, const char *propValue, DTEntry *entryH); +/** + * @brief Finds the devicetree node that has the specified property equal to the + * specified value. + * + * This function works with properties of any type; it just checks that the size + * and bytes of the value are what the caller wants. + * + * @note This function also works with properties that don't have a value—just + * specify NULL for `propertyValue` and 0 for `propertyValueSize`. + * + * @param[in] propertyName The name of the property. + * @param[in] propertyValue A pointer to some bytes that make up the value. + * @param[in] propertyValueSize The number of bytes that make up the value. + * @param[out] devicetreeNode A pointer to the target devicetree node, if found. + * + * @return kSuccess if the node was found and kError otherwise. + */ +extern int SecureDTFindNodeWithPropertyEqualToValue( + const char *const propertyName, + const void *const propertyValue, + const size_t propertyValueSize, + const DeviceTreeNode **const devicetreeNode); + +/** + * @brief Finds the devicetree node with the specified phandle. + * + * This is a convenience wrapper around `SecureDTFindNodeWithPropertyEqualToValue()`. + * + * @param[in] phandle The phandle of interest. + * @param[out] devicetreeNode A pointer to the target devicetree node, if found. + * + * @return kSuccess if the node was found and kError otherwise. + */ +extern int SecureDTFindNodeWithPhandle( + const uint32_t phandle, + const DeviceTreeNode **const devicetreeNode); + +/** + * @brief Finds the devicetree node with the specified string property. + * + * This is a convenience wrapper around `SecureDTFindNodeWithPropertyEqualToValue()`. + * + * @param[in] propertyName The name of the string property. + * @param[in] propertyValue The value of the string property. + * @param[out] devicetreeNode A pointer to the target devicetree node, if found. + * + * @return kSuccess if the node was found and kError otherwise. + */ +extern int SecureDTFindNodeWithStringProperty( + const char *const propertyName, + const char *const propertyValue, + const DeviceTreeNode **const devicetreeNode); + /* * Lookup Entry * Locates an entry given a specified subroot (searchPoint) and path name. If the diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/pexpert/pexpert.h b/Frameworks/Kernel.framework/Versions/A/Headers/pexpert/pexpert.h index 378a8bee..1e86411e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/pexpert/pexpert.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/pexpert/pexpert.h @@ -71,6 +71,7 @@ int PE_stub_poll_input(unsigned int options, char *c); boolean_t PE_panic_debugging_enabled(void); void PE_mark_hwaccess(uint64_t thread); +void PE_mark_hwaccess_data(uint8_t type, uint8_t size, uint64_t paddr); #endif /* defined(__arm__) || defined(__arm64__) */ @@ -287,6 +288,10 @@ extern boolean_t PE_parse_boot_argn( extern boolean_t PE_boot_arg_uint64_eq(const char *arg_string, uint64_t value); +extern boolean_t PE_parse_boot_arg_str( + const char *arg_string, + char * arg_ptr, + int size); extern boolean_t PE_get_default( const char *property_name, @@ -309,6 +314,7 @@ enum { extern boolean_t PE_get_hotkey( unsigned char key); + extern kern_return_t PE_cpu_start( cpu_id_t target, vm_offset_t start_paddr, @@ -419,8 +425,31 @@ void * PE_get_kc_vp(kc_kind_t type); void PE_reset_all_kc_vp(void); +/*! + * @function PE_init_socd_client + * + * @brief + * Initialize the SOCD client mechanism, used for Xnu to contribute data to the SOCD buffers + * managed by the SMC in it's SRAM. + */ extern vm_size_t PE_init_socd_client(void); -extern void PE_write_socd_client_buffer(vm_offset_t offset, const void *buff, vm_size_t size); + + +/*! + * @function PE_read_socd_client_buffer + * + * @brief + * read data from the SOCD client buffer in SMC SRAM. + */ +extern void PE_read_socd_client_buffer(vm_offset_t offset, void *out_buff, vm_size_t size); + +/*! + * @function PE_write_socd_client_buffer + * + * @brief + * Write data to the SOCD client buffer in SMC SRAM + */ +extern void PE_write_socd_client_buffer(vm_offset_t offset, const void *in_buff, vm_size_t size); __END_DECLS diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/platform/sptm/debug_header.h b/Frameworks/Kernel.framework/Versions/A/Headers/platform/sptm/debug_header.h new file mode 100644 index 00000000..248cfbab --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/platform/sptm/debug_header.h @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#pragma once + +#include +#include + +static uint32_t const DEBUG_HEADER_MAGIC_VAL = 'GBED'; // "DEBG" in little endian +static uint32_t const DEBUG_HEADER_CURRENT_VERSION = 0x2UL; + +typedef void *debug_header_entry; + +/** + * The debug header. + * + * A simple structure that helps a debugger find all loaded images. + * + * It consists of simple magic, version, and count fields. Following + * it are pointers to the start of all loaded images (usually also + * their mach-O headers). + * + * The debug header must always be exactly 4096 bytes after VBAR_GL2, + * or VBAR_EL2 if GXF is not enabled yet. Therefore, any collection + * of exception handlers that VBAR may point to during bootstrap needs + * to be followed by a separate debug header. + * + * The pointers must always be currently valid virtual addresses, so + * the entries of some debug headers may undergo some transition during + * bootstrap, when we switch between address translations (e.g. because + * we switch away from V=P mappings). + */ + +typedef struct __attribute__((__packed__)) debug_header { + uint32_t magic; + uint32_t version; + uint32_t count; + uint32_t resvd; + + // entries of currently valid virtual addresses pointing to loaded images. + debug_header_entry image[]; +} debug_header_t; + +_Static_assert((offsetof(debug_header_t, image) % 8) == 0, "image list not aligned"); + +/** + * The debug trailer is simply what's after the `entry_image[]` list above. New fields can be + * added here, without confusing older versions of astris (or anything else). + */ + +typedef struct debug_trailer { + /* Pointer to the consistent debug page, which iBoot allocates. */ + struct sptm_consistent_debug *sptm_consistent_debug; + + /** + * Flag used during bootstrap, indicating whether the debug header + * has been translated to the final address space (i.not anymore + * in a V=P mapping while the MMU is off). + */ + uint64_t translated; +} debug_trailer_t; + +/** + * Fixed indices for the known SPTM, XNU, TXM images. + * + * While the debug header is followed by a generic list of entries, + * debuggers make some assumptions about what order images appear + * in this list. + */ +static int const DEBUG_HEADER_ENTRY_SPTM = 0; +static int const DEBUG_HEADER_ENTRY_XNU = 1; +static int const DEBUG_HEADER_ENTRY_TXM = 2; + +/** + * SPTM consistent debug page + * + * astris cannot resolve the debug header for checking whether the SPTM panicked + * during early boot, as `VBAR_EL2/GL2` is only accessible via MSR. For this, we + * have an extra page allocated by iBoot, which the consistent debug region references. + * astris can use the consistent debug region to find the page and check for a panic. + * + * For exceptions, we also capture a few registers of the first exception, which can be + * immensely helpful when e.g. debugging early bootstrap exceptions. + * + * Adjust CONSISTENT_DEBUG_PANIC_LEN if required when adding any new panic strings. + */ +static size_t const CONSISTENT_DEBUG_PANIC_LEN = 1088; +typedef struct __attribute__((__packed__)) sptm_consistent_debug { + uint64_t magic; + uint64_t version; + uint64_t is_panic; + uint64_t exception_number; // 0 if it's a regular panic, not an early exception. + uint64_t first_esr; + uint64_t first_elr; + uint64_t first_far; + + /* Added in version 2: */ + + /* physical, optional, if 0 there might be a panic string in panic_string */ + uint64_t panic_string_addr_phys; + uint64_t panic_source; + /* optional, but always 0-terminated. */ + char panic_string[CONSISTENT_DEBUG_PANIC_LEN]; +} sptm_consistent_debug_t; + +static uint64_t const CONSISTENT_DEBUG_PANIC_SOURCE_SPTM = 0; +static uint64_t const CONSISTENT_DEBUG_PANIC_SOURCE_TXM = 1; +static uint64_t const CONSISTENT_DEBUG_PANIC_SOURCE_SK = 2; + +static int const CONSISTENT_DEBUG_MAGIC_VAL = 'MTPS'; // "SPTM" in little endian +static int const CONSISTENT_DEBUG_VERSION_VAL = 2; diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/platform/sptm/sptm_common.h b/Frameworks/Kernel.framework/Versions/A/Headers/platform/sptm/sptm_common.h new file mode 100644 index 00000000..de9658b0 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/platform/sptm/sptm_common.h @@ -0,0 +1,1262 @@ +/* + * Copyright (c) 2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +/** + * This file (along with the domain-specific headers) defines the SPTM's public + * API that is exported to the rest of the system. Only place types/prototypes + * into this file if it's meant to be consumed by other projects. + * + * SPTM internal modules should include sptm_public.h to gain access to all + * declarations/definitions in this file (do NOT include sptm_common.h directly + * unless you know what you're doing). + */ + +#pragma once + +/* SPTM dispatch logic GENTER immediate values */ +#define SPTM_GENTER_DISPATCH_CALL 0 +#define SPTM_GENTER_RESUME_FROM_EXCEPTION 1 +#define SPTM_GENTER_TXM_RESUME 2 +#define SPTM_GENTER_SK_RESUME 3 +#define SPTM_GENTER_XNU_PANIC_BEGIN 4 + +/* Domain IDs */ +#define SPTM_DOMAIN 0U +#define XNU_DOMAIN 1U +#define TXM_DOMAIN 2U +#define SK_DOMAIN 3U +#define XNU_HIB_DOMAIN 4U +#define MAX_DOMAINS 5U + +/* SPTM-owned type IDs */ +#define SPTM_UNTYPED 0U +#define SPTM_UNUSED 1U +#define SPTM_DEFAULT 2U +#define SPTM_RO 3U +#define SPTM_CODE 4U +#define SPTM_TXM_CODE 5U +#define SPTM_XNU_CODE 6U +#define SPTM_XNU_CODE_DBG_RW 7U // Replaces SPTM_XNU_CODE if CTRR off. +#define SPTM_KERNEL_ROOT_TABLE 8U +#define SPTM_PAGE_TABLE 9U +#define SPTM_IOMMU_BOOTSTRAP 10U + +/* XNU-owned type IDs */ +#define XNU_DEFAULT 11U +#define XNU_RO 12U +#define XNU_RO_DBG_RW 13U // Replaces XNU_RO if CTRR off. +#define XNU_USER_EXEC 14U +#define XNU_USER_DEBUG 15U +#define XNU_USER_JIT 16U +#define XNU_USER_ROOT_TABLE 17U +#define XNU_SHARED_ROOT_TABLE 18U +#define XNU_PAGE_TABLE 19U +#define XNU_PAGE_TABLE_SHARED 20U +#define XNU_PAGE_TABLE_ROZONE 21U +#define XNU_PAGE_TABLE_COMMPAGE 22U +#define XNU_IOMMU 23U +#define XNU_ROZONE 24U +#define XNU_IO 25U +#define XNU_PROTECTED_IO 26U +#define XNU_COMMPAGE_RW 27U +#define XNU_COMMPAGE_RO 28U +#define XNU_COMMPAGE_RX 29U +#define XNU_TAG_STORAGE 30U +#define XNU_STAGE2_ROOT_TABLE 31U +#define XNU_STAGE2_PAGE_TABLE 32U +#define XNU_KERNEL_RESTRICTED 33U +#define XNU_RESERVED_1 34U +#define XNU_RESERVED_2 35U +#define XNU_RESTRICTED_IO 36U +#define XNU_RESTRICTED_IO_TELEMETRY 37U + +/* TXM-owned type IDs */ +#define TXM_DEFAULT 38U +#define TXM_RO 39U +#define TXM_RW 40U +#define TXM_CPU_STACK 41U +#define TXM_THREAD_STACK 42U +#define TXM_ADDRESS_SPACE_TABLE 43U +#define TXM_MALLOC_PAGE 44U +#define TXM_FREE_LIST 45U +#define TXM_SLAB_TRUST_CACHE 46U +#define TXM_SLAB_PROFILE 47U +#define TXM_SLAB_CODE_SIGNATURE 48U +#define TXM_SLAB_CODE_REGION 49U +#define TXM_SLAB_ADDRESS_SPACE 50U +#define TXM_BUCKET_1024 51U +#define TXM_BUCKET_2048 52U +#define TXM_BUCKET_4096 53U +#define TXM_BUCKET_8192 54U +#define TXM_BULK_DATA 55U +#define TXM_BULK_DATA_READ_ONLY 56U +#define TXM_LOG 57U +#define TXM_SEP_SECURE_CHANNEL 58U + +/* SK-owned type IDs */ +#define SK_DEFAULT 59U +#define SK_SHARED_RO 60U +#define SK_SHARED_RW 61U +#define SK_IO 62U + +#define N_FRAME_TYPES 63U +#define FRAME_TYPE_INVALID 255U + +/* SPTM Dispatch Table IDs */ +#define SPTM_DISPATCH_TABLE_XNU_BOOTSTRAP 0 +#define SPTM_DISPATCH_TABLE_TXM_BOOTSTRAP 1 +#define SPTM_DISPATCH_TABLE_SK_BOOTSTRAP 2 +#define SPTM_DISPATCH_TABLE_T8110_DART_XNU 3 +#define SPTM_DISPATCH_TABLE_T8110_DART_SK 4 +#define SPTM_DISPATCH_TABLE_SART 5 +#define SPTM_DISPATCH_TABLE_NVME 6 +#define SPTM_DISPATCH_TABLE_UAT 7 +#define SPTM_DISPATCH_TABLE_SHART 8 +#define SPTM_DISPATCH_TABLE_RESERVED 9 +#define SPTM_DISPATCH_TABLE_HIB 10 +#define SPTM_DISPATCH_TABLE_INVALID 11 + +#define SPTM_DISPATCH_TABLE_RETURN_TO_CALLER 0xFD +#define SPTM_DISPATCH_TABLE_PANIC 0xFE +#define SPTM_DISPATCH_TABLE_EXCEPTION_STATE_SAVED 0xFF + +/* SPTM Feature Flags */ +#define SPTM_FEATURE_SYSREG 4ULL +#define SPTM_FEATURE_BTI 8ULL + +/** + * For drivers that support both XNU and SK-dedicated dispatch tables, + * offset from a given IOMMU driver's primary dispatch table at which to find the + * driver's SK-dedicated dispatch table. + */ +#define IOMMU_SK_DISPATCH_TABLE_ID_OFFSET 1 + +/** + * Parameters in functions that are exposed to other domains use internally + * struct-wrapped types to force programmers into running them through + * a validation function that returns a sanitized version of the argument. + * Since these types must not be exposed to client domains, the following + * macro can be used in interface headers to differentiate between the + * public-facing types and the internal ones. Note that the test environment + * is treated as an external client here for the purposes of interacting with + * the SPTM API. + */ +#define USE_UNSAFE_TYPES (SPTM_INTERNAL && !SPTM_TESTS) + +#if DEVELOPMENT || DEBUG +/* Enable tracing on DEV builds */ +#define SPTM_TRACING 1 +#endif /* DEVELOPMENT || DEBUG */ + +#ifndef __ASSEMBLER__ +/** + * Make sure that any IOMMU SK-dedicated dispatch table IDs follow the XNU-dedicated counterpart. + * + * @note IOMMU Driver developers adding new SK-dedicated tables must add static asserts to enforce this invariant below. + */ +_Static_assert(SPTM_DISPATCH_TABLE_T8110_DART_SK == (SPTM_DISPATCH_TABLE_T8110_DART_XNU + IOMMU_SK_DISPATCH_TABLE_ID_OFFSET), + "DART Driver XNU and SK dispatch table IDs not [IOMMU_SK_DISPATCH_TABLE_ID_OFFSET] apart"); +#endif + +/** + * Helper utility for setting the "x"th bit in an unsigned integer type. + * The result type is the type of `x + 1ULL`. + */ +#define SET_BIT(x) ((((x) ^ (x)) + 1ULL) << (x)) + +/** + * Set the specified [n] number of LSBs of an unsigned integer type. + * The result type is the type of `SET_BIT(n)`. + */ +#define _ONES(n) (SET_BIT(n)-1) + +/** + * Create a bitfield mask of length [bits] starting at LSB [shift] + * The result type is the type of `SET_BIT(bits)`. + */ +#define BITFIELD_MASK(bits, shift) (_ONES((bits)) << (shift)) + +/** + * Mask and shift to extract a bitfield. + * The result type is the type of `val + SET_BIT(width)`. + */ +#define EXTRACT_BITFIELD(width, shift, val) (((val) & BITFIELD_MASK((width),(shift))) >> shift) + +/** + * Mask and shift to pack a bitfield. + * The result type is the type of `val + SET_BIT(width)`. + */ +#define PACK_BITFIELD(width, shift, val) (((val) & _ONES(width)) << (shift)) + +/* Helper macros to pack/extract domain/table/endpoint IDs */ +#define DOMAIN_ID_SHIFT 48 +#define DOMAIN_ID_WIDTH 8 +#define EXTRACT_DOMAIN_ID(x) \ + ((sptm_domain_t)EXTRACT_BITFIELD(DOMAIN_ID_WIDTH, DOMAIN_ID_SHIFT, (x))) +#define PACK_DOMAIN_ID(x) PACK_BITFIELD(DOMAIN_ID_WIDTH, DOMAIN_ID_SHIFT, (x)) + +#define DISPATCH_TABLE_ID_SHIFT 32 +#define DISPATCH_TABLE_ID_WIDTH 8 +#define EXTRACT_TABLE_ID(x) \ + ((sptm_dispatch_table_id_t)EXTRACT_BITFIELD(DISPATCH_TABLE_ID_WIDTH, DISPATCH_TABLE_ID_SHIFT, (x))) +#define PACK_TABLE_ID(x) PACK_BITFIELD(DISPATCH_TABLE_ID_WIDTH, DISPATCH_TABLE_ID_SHIFT, (x)) + +#define ENDPOINT_ID_SHIFT 0 +#define ENDPOINT_ID_WIDTH 32 +#define EXTRACT_ENDPOINT_ID(x) \ + ((sptm_dispatch_endpoint_id_t)EXTRACT_BITFIELD(ENDPOINT_ID_WIDTH, ENDPOINT_ID_SHIFT, (x))) +#define PACK_ENDPOINT_ID(x) PACK_BITFIELD(ENDPOINT_ID_WIDTH, ENDPOINT_ID_SHIFT, (x)) + +#define BUILD_DISPATCH_ID(domain, table, endpoint) \ + (PACK_DOMAIN_ID(domain) | PACK_TABLE_ID(table) | PACK_ENDPOINT_ID(endpoint)) + +/* Helper macros for dispatch ID construction and stringification helpers for GEN_NAMED_STUB */ +#define _STRINGIFY(A) #A +#define _XSTR(A) _STRINGIFY(A) +#define GEN_DISPATCH_ID_STR(domain, table, endpoint) _XSTR(BUILD_DISPATCH_ID(domain, table, endpoint)) + +#ifdef __ASSEMBLER__ +/** + * Assembler macro for loading the SPTM call register with the dispatch ID + * + * @param domain_ID The destination domain ID + * @param table_ID The destination table ID + * @param endpoint_ID The destination endpoint ID + */ +.macro SPTM_LOAD_DISPATCH_ID domain_ID, table_ID, endpoint_ID + movk x16, #((( BUILD_DISPATCH_ID(\domain_ID, \table_ID, \endpoint_ID) ) >> 48) & 0xFFFF), lsl #48 + movk x16, #((( BUILD_DISPATCH_ID(\domain_ID, \table_ID, \endpoint_ID) ) >> 32) & 0xFFFF), lsl #32 + movk x16, #((( BUILD_DISPATCH_ID(\domain_ID, \table_ID, \endpoint_ID) ) >> 16) & 0xFFFF), lsl #16 + movk x16, #((( BUILD_DISPATCH_ID(\domain_ID, \table_ID, \endpoint_ID) ) >> 00) & 0xFFFF) +.endm +#else /* __ASSEMBLER__ */ +/* Helper macro for the stub-generating macros defined below */ +#define GEN_LOAD_DISPATCH_ID_CODE_SEQUENCE(domain_ID, table_ID, endpoint_ID) \ + "movk x16, #(((" GEN_DISPATCH_ID_STR(domain_ID, table_ID, endpoint_ID) ") >> 48) & 0xFFFF), lsl #48\n" \ + "movk x16, #(((" GEN_DISPATCH_ID_STR(domain_ID, table_ID, endpoint_ID) ") >> 32) & 0xFFFF), lsl #32\n" \ + "movk x16, #(((" GEN_DISPATCH_ID_STR(domain_ID, table_ID, endpoint_ID) ") >> 16) & 0xFFFF), lsl #16\n" \ + "movk x16, #(((" GEN_DISPATCH_ID_STR(domain_ID, table_ID, endpoint_ID) ") >> 00) & 0xFFFF)\n" +#endif /* __ASSEMBLER__ */ + +/** + * For consumers that want to roll their own stubs, the following assembly macro + * includes the appropriate entry sequence, given that the appropriate *_CLIENT + * define is set correctly (which it should as the consumer should be including + * this file indirectly through their domain-specific SPTM header). + */ +#ifdef __ASSEMBLER__ +/** + * Domain-entry assembler macro for consumers who want to roll their own stubs. + * + * @param src_reg The register to copy the dispatch ID from. The register is + * typically the x16 register, and if not, then the value in the + * provided register will be copied into the x16 register before + * entering the SPTM. + */ +.macro SPTM_DOMAIN_ENTER src_reg + /* No need to mov if the source register is x16 */ +.ifnc \src_reg,x16 + mov x16, \src_reg +.endif +#if defined(TXM_CLIENT) + svc #0 +#elif defined(SK_CLIENT) + hvc #0 +#elif defined(XNU_CLIENT) + genter #0 +#elif !defined(SPTM_INTERNAL) +#error Unknown client domain +#endif +.endm + +/** + * Macro to generate a domain-specific entry stub. + * + * @param stub_name Name of the stub function (without leading underscore). + * @param domain_name Name of the domain to which this stub provides entry. + * @param has_hooks "yes" to call pre/post hooks before/after entering the + * wanted domain. "no" otherwise (the default value). + * @param domain_ID ID of domain to hard-code as part of the entry sequence. + * @param table_ID ID of the table to hard-code as part of the entry sequence. + * + * @note pre- and post- entry hooks are generated only when XNU_CLIENT is + * defined (when XNU is calling into another domain) and hooks are + * requested via the "has_hooks" parameter. The hook name is also + * determined by the second argument (the hook names will be + * ___pre_entry_hook and ___post_exit_hook). + * + * @note NOT specifying a domain_ID/table_ID implies that the caller has already + * set up x16 with the appropriate dispatch target ID, which tells this + * macro not to setup x16. Otherwise, the generated stub expects x0 to + * contain the endpoint ID ONLY, and x1 must contain a pointer to a + * structure of type sptm_call_regs_t (from which x0..x7 will be loaded + * just prior to dispatching the call). This macro will then use the + * endpoint ID in x0 and the domain_ID/table_ID to generate the correct + * dispatch target ID to program x16 with. + */ +.macro GEN_DOMAIN_ENTRY_STUB stub_name, domain_name, has_hooks=no, domain_ID=none, table_ID=none + .align 2 + .global EXT(\stub_name) +LEXT(\stub_name) + /* + * If the caller was built with PAC-enabled, then sign the LR. + * This also serves double-duty as a BTI landing pad where applicable. + */ +#if __has_feature(ptrauth_returns) + pacibsp +#else + ARM64_PROLOG +#endif + +#if defined(XNU_CLIENT) +.ifc \has_hooks,yes + /* Push a stack frame to preserve the original caller's FP/LR across the hook. */ + stp fp, lr, [sp, #-16]! + mov fp, sp + + bl __\domain_name\()_pre_entry_hook + + /* Pop the frame to ensure that the SPTM is saving the caller's FP/LR. */ + mov sp, fp + ldp fp, lr, [sp], #16 +.endif +#endif /* XNU_CLIENT */ + +.ifnc \domain_ID,none + +.ifc \table_ID,none +.error "If the domain_ID is set, then the table_ID must also be specified." +.endif /* table_ID == none */ + + /** + * x0 contains the endpoint ID. + * + * Note this code has knowledge of the bitfield sizes, so any change to the + * PACK_*_ID macros above will require changes here as well. + */ + mov w16, w0 + movk x16, (((PACK_DOMAIN_ID(\domain_ID) | PACK_TABLE_ID(\table_ID)) >> 48) & 0xFFFF), lsl #48 + movk x16, (((PACK_DOMAIN_ID(\domain_ID) | PACK_TABLE_ID(\table_ID)) >> 32) & 0xFFFF), lsl #32 + + /* Load argument registers from sptm_call_regs_t passed in x1 */ + mov x10, x1 + ldp x0, x1, [x10] + ldp x2, x3, [x10, 0x10] + ldp x4, x5, [x10, 0x20] + ldp x6, x7, [x10, 0x30] +.endif /* domain_ID == none */ + + /** + * Actually enter the SPTM dispatch logic. The SPTM will return to this + * point when the domain being called into (defined by x16) completes its + * call. + */ + SPTM_DOMAIN_ENTER x16 + +#if defined(XNU_CLIENT) +.ifc \has_hooks,yes + /* Push a stack frame to preserve the original caller's FP/LR across the hook. */ + stp fp, lr, [sp, #-16]! + mov fp, sp + + bl __\domain_name\()_post_exit_hook + + /* Pop the original caller's FP/LR to allow for returning later. */ + mov sp, fp + ldp fp, lr, [sp], #16 +.endif +#endif /* XNU_CLIENT */ + +#if __has_feature(ptrauth_returns) + retab +#else + ret +#endif +.endm + +#define SPTM_VECTOR_IRQ 0 +#define SPTM_VECTOR_FIQ 1 +#define SPTM_VECTOR_SERROR 2 +#define SPTM_VECTOR_SYNC 3 + +#else /* __ASSEMBLER__ */ + +#include +#include +#include +#include +#include + +__BEGIN_DECLS + +/** + * The maximum number of shared regions that can exist at any single point in + * time. TXM needs this define which is why it's in this file. + */ +#define SHARED_REGION_MAX 255 + +/* User-facing SPTM-defined types */ +typedef uint64_t sptm_paddr_t; +typedef uint32_t sptm_ppnum_t; +typedef uint64_t sptm_poff_t; +typedef uint16_t sptm_asid_t; +typedef uint16_t sptm_vmid_t; +typedef uint64_t sptm_vaddr_t; +typedef uint64_t sptm_voff_t; +typedef uint64_t sptm_papt_t; +typedef uint8_t sptm_domain_t; +typedef uint8_t sptm_frame_type_t; +typedef uint32_t sptm_return_t; +typedef uint64_t sptm_pte_t; +typedef uint64_t sptm_tte_t; +typedef uint8_t sptm_pt_level_t; +typedef uint8_t sptm_iommu_id_t; +typedef uint16_t sptm_instance_id_t; +typedef uint32_t sptm_iommu_retype_params_t; + +/** + * A bitmask type to represent all frame types. + * + * BitInt, with current compiler settings, has an upper limit of 128 bits. + * This limit can be overriden with an 'experimental' compiler option. + * rdar://136538696 tracks making this option non-experimental. + * Additionally, BitInt isn't playing nicely with XCTest. There's a + * different rdar://136543539 to track fixing that. The plan is + * to use __uint128_t until rdar://136543539 then BitInt(N_FRAME_TYPES). + * The joys of being an early-adopter >_<. + */ +typedef __uint128_t frame_type_bitmask_t; + +/** + * Used to represent the target of a function call via the dispatch logic. A + * Dispatch target effectively identifies a specific called domain, dispatch + * table ID, and endpoint ID. + * + * ``` + * 63 56 55 48 47 40 39 32 31 0 + * +----------+---------------+----------+--------------------------+-----------------------------+ + * | Reserved | sptm_domain_t | Reserved | sptm_dispatch_table_id_t | sptm_dispatch_endpoint_id_t | + * +----------+---------------+----------+--------------------------+-----------------------------+ + * ``` + */ +typedef uint64_t sptm_dispatch_target_t; + +/* Types used to represent fields within a dispatch target ID. */ +typedef uint8_t sptm_dispatch_table_id_t; +typedef uint8_t sptm_dispatch_endpoint_id_t; + +#if USE_UNSAFE_TYPES +/** + * Only include this header when building the SPTM proper. To avoid needing to + * include sptm_common.h itself inside of sptm_unsafe_params.h (to get access to + * the above typedefs), just include the file after defining those typedefs. + * Other files typically should not include sptm_unsafe_params.h directly, but + * instead get it implicitly through including this file (which in turn is most + * likely included indirectly itself). + */ +#include "sptm_unsafe_params.h" +#endif + +/** + * Describe the possible exception vector types that SPTM may handle. Used when + * computing the offset of the XNU exception vector to hand control to when + * an exception occurs during SPTM runtime. + */ +__enum_closed_decl(sptm_vector_type_t, uint8_t, { + SPTM_VECTOR_IRQ, + SPTM_VECTOR_FIQ, + SPTM_VECTOR_SERROR, + SPTM_VECTOR_SYNC, + SPTM_N_VECTOR_TYPES, +}); + +/** + * SPTM Trace structure definition. + */ +#define SPTM_TRACE_SIZE_SHIFT (6) +#define SPTM_TRACE_SIZE (1) << SPTM_TRACE_SIZE_SHIFT + +typedef struct { + /* Unique trace identifier */ + uint64_t trace_id; + + /* Type of trace. This determines which structure to use below. */ + uint32_t trace_type; + + /* Dispatch ID of the trace emitter */ + uint16_t dispatch_id; + + /* ID of the CPU that emitted the trace */ + uint16_t cpu_id; + + /* Union */ + union { +#define SPTM_TRACE_MAX_PARAMS 6 + uint64_t params[SPTM_TRACE_MAX_PARAMS]; + }; +} sptm_trace_t __attribute__((aligned((SPTM_TRACE_SIZE)))); + +_Static_assert(sizeof(sptm_trace_t) == (SPTM_TRACE_SIZE), + "Unexpected size for sptm_trace_t. Exceeded maxinum number of parameters?"); + +/** + * SPTM Trace Codes. + */ +enum : uint32_t { + /** + * This space is reserved for the allocation of trace IDs for traces that have + * arbitrary purposes. At present, the SPTM uses the tracing facilities solely + * for the purpose of flagging soft violations, which get their own ID space + * overlayed on top of this one (see the enum below). + */ + + /** + * The following member is here to represent the number of supported + * traces. It does not represent a valid Trace Type. + */ + SPTM_N_TRACES, +}; + +/** + * SPTM Public Violation Codes. + * + * @note These are just special-purpose trace codes. Their IDs are allocated + * in a way such that private and public violation ID spaces don't collide, + * effectively making all of the facilities associated with regular violations + * compatible with soft violations. + * + * @note If a new violation code is added, [violation_strings_public] should be updated + * as well, with an entry that maps the new violation ID with a description string. + */ +#define VIOLATION_FIRST_PUBLIC_ID 0xFF000000U +#define VIOLATION_PUBLIC_ID_MASK(violation_id) SET_BIT(((violation_id) & ~VIOLATION_FIRST_PUBLIC_ID)) +enum : uint32_t { + VIOLATION_INVALID_IO_PADDR = VIOLATION_FIRST_PUBLIC_ID, + VIOLATION_INVALID_DT_RANGE, + VIOLATION_INVALID_RESTRICTED_IO_PADDR, + + /** + * The following member is here to represent the number of supported + * public violations. It does not represent a valid Violation ID. + */ + SPTM_N_PUBLIC_VIOLATIONS, +}; + +#define SPTM_TRACE_N_TRACES_PER_BUFFER (255ULL) + +typedef struct { + uint64_t write_index; + sptm_trace_t buffer[SPTM_TRACE_N_TRACES_PER_BUFFER]; +} sptm_trace_buffer_t __attribute__((aligned((1 << 14)))); + +_Static_assert(sizeof(sptm_trace_buffer_t) == (1 << 14), + "Unexpected size for sptm_trace_buffer_t."); + +/** + * Structure that must be passed to the libsptm library's initialization + * function before invoking any of the utility functions. + * + * @note Virtual addresses provided in the fields of this structure assume the + * the domain dereferencing them shares the same TTBR1 mappings as the + * SPTM. + * + * @note Some types below are void * because the actual type is an internal + * SPTM implementation detail. The library code will type-cast these + * values correctly as its built with the internal headers. + */ +#define LIBSPTM_VERSION_1 1U +#define LIBSPTM_VERSION_2 2U +#define LIBSPTM_VERSION_3 3U +#define LIBSPTM_VERSION_4 4U +#define LIBSPTM_VERSION_5 5U +#define LIBSPTM_VERSION_6 6U +#define LIBSPTM_VERSION_7 7U +#define LIBSPTM_VERSION LIBSPTM_VERSION_7 +typedef struct sptm_client_state { + /* Version number identifying the set of included fields */ + int version; + + /* Version 1 fields: */ + /* The number of PAPT ranges the papt_ranges field points to */ + unsigned int *n_papt_ranges; + + /* The set of PAPT ranges */ + const void *papt_ranges; + + /* The first physical address */ + sptm_paddr_t first_phys; + + /* The last physical address */ + sptm_paddr_t last_phys; + + /* The first PAPT (virtual) address */ + sptm_papt_t first_papt; + + /* The last PAPT (virtual) address */ + sptm_papt_t last_papt; + + /* Physical address of this domain's TTBR1 root table */ + sptm_paddr_t root_table_paddr; + + /* Virtual address of the physical frame table */ + const void *frame_table; + + /* Virtual address of the type parameters table */ + const void *frame_type_params; + + /* Virtual address of the page-table attribute table */ + const void **pt_attr_table; + + /** + * CPU features, which may enable runtime support of SoC-specific + * functionality: + * + * LIBSPTM_CPU_FEATURE_USERAT: Set if the current system supports executing + * the AT instruction in userspace. + */ + #define LIBSPTM_CPU_FEATURE_USERAT 1U + uint64_t cpu_features; + + /* Number of IO frame table ranges */ + unsigned int n_io_ranges; + + /* Virtual address of the IO frame table */ + const void *io_frame_table; + + /* End of Version 1 fields */ + + /* Version 2 fields removed in Version 6 */ + + /* Version 3 fields: */ + sptm_paddr_t sptm_first_tag_storage_paddr; + sptm_paddr_t sptm_last_tag_storage_paddr; + const _Atomic(uint16_t) *sptm_panicking_cpu_id; + + /* Version 4 fields: */ + sptm_trace_buffer_t *trace_buffer; + + /* End of Version 4 fields */ + + /* Version 5 fields: */ + const void *percpu_dispatch_state; + unsigned int max_cpus; + /* End of Version 5 fields */ + + /* Version 6 fields: */ + const void *percpu_xnu_saved_state; + /* End of Version 6 fields */ + + /* Version 7 fields: */ + uint64_t feature_flags; + + /* Padding for future expansion */ + uint8_t reserved[136]; +} libsptm_state_t; + +/** + * SPTM doesn't need to work on non-LP64 targets, but some drivers still build + * against arm64_32, so only static_assert the size of libsptm_state_t on LP64 + * targets to avoid breaking these drivers. This can be removed once they no + * longer build against arm64_32. + */ +#ifdef __LP64__ +_Static_assert(sizeof(libsptm_state_t) == 312, "unexpected libsptm_state_t size"); +#endif /* __LP64__ */ + +/** + * Structure representing parameters than can be passed + * to sptm_retype() depending on the type that a frame is + * being transitioned to. + */ + typedef struct { + union { + /* Retype parameters when retyping to a CPU root table. */ + struct { + /* Page table attribute index (e.g., SPTM_PT_GEOMETRY_16K). */ +#if !USE_UNSAFE_TYPES + uint8_t attr_idx; +#else + sptm_attr_idx_u attr_idx_U; +#endif + + /* Root table flags to be set at retype time. */ +#if !USE_UNSAFE_TYPES + uint8_t flags; +#else + sptm_root_flags_u flags_U; +#endif + + union { + /** + * ASID to be used for stage 1 user root table. The zeroth ASID is reserved + * for the kernel, so the only valid values are 1 through + * MAX_HW_ASIDS (inclusive). + */ +#if !USE_UNSAFE_TYPES + sptm_asid_t asid; +#else + sptm_asid_u asid_U; +#endif + + /* + * VMID to be used for stage 2 root table. The zeroth VMID is reserved + * for Secure Kernel, so the only valid values are [1, MAX_VMIDS). + */ +#if !USE_UNSAFE_TYPES + sptm_vmid_t vmid; +#else + sptm_vmid_u vmid_U; +#endif + }; + }; + + /* Retype parameters when retyping to a CPU page table. */ +#if !USE_UNSAFE_TYPES + sptm_pt_level_t level; +#else + sptm_pt_level_u level_U; +#endif + + /* Retype parameters when retyping to an IOMMU page. */ + struct { + /* The ID of the IOMMU driver who will be using this page. */ +#if !USE_UNSAFE_TYPES + uint8_t iommu_id; +#else + sptm_iommu_id_u iommu_id_U; +#endif + + /* IOMMU-specific data that can be stored in each IOMMU page. */ +#if !USE_UNSAFE_TYPES + sptm_iommu_retype_params_t iommu_retype_params; +#else + sptm_iommu_retype_params_t iommu_retype_params_U; +#endif + }; + + /* Retype parameters when retyping to an SK page. */ + struct { +#if !USE_UNSAFE_TYPES + uint8_t sk_flags; +#else + sptm_sk_flags_u sk_flags_U; +#endif + }; + + /* Used to set all of the retype parameters in one access. */ +#if !USE_UNSAFE_TYPES + uint64_t raw; +#else + uint64_t raw_U; +#endif + }; + } sptm_retype_params_t; + +/* Use this value when no retyping parameters are needed. */ + #define SPTM_RETYPE_PARAMS_NULL (0ULL) + +/** + * An sptm_retype_params_t object should fit in a register. + */ +_Static_assert(sizeof(sptm_retype_params_t) == sizeof(uint64_t), + "sptm_retype_params_t does not fit in a single register"); + +/** + * Arguments for a domain-specific call, passed to the stub that + * GEN_DOMAIN_ENTRY_STUB generates. + * + * @note The offset of each field is hard-coded in the macro. + */ +typedef struct { + uint64_t x0; + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; +} sptm_call_regs_t; + +/** + * Since we use hard-coded (not symbolic) offsets in GEN_DOMAIN_ENTRY_STUB, + * assert that each field is where we expect. + */ +_Static_assert(offsetof(sptm_call_regs_t, x0) == (0 * sizeof(uint64_t)), + "Unexpected sptm_call_regs_t offset"); +_Static_assert(offsetof(sptm_call_regs_t, x1) == (1 * sizeof(uint64_t)), + "Unexpected sptm_call_regs_t offset"); +_Static_assert(offsetof(sptm_call_regs_t, x2) == (2 * sizeof(uint64_t)), + "Unexpected sptm_call_regs_t offset"); +_Static_assert(offsetof(sptm_call_regs_t, x3) == (3 * sizeof(uint64_t)), + "Unexpected sptm_call_regs_t offset"); +_Static_assert(offsetof(sptm_call_regs_t, x4) == (4 * sizeof(uint64_t)), + "Unexpected sptm_call_regs_t offset"); +_Static_assert(offsetof(sptm_call_regs_t, x5) == (5 * sizeof(uint64_t)), + "Unexpected sptm_call_regs_t offset"); +_Static_assert(offsetof(sptm_call_regs_t, x6) == (6 * sizeof(uint64_t)), + "Unexpected sptm_call_regs_t offset"); +_Static_assert(offsetof(sptm_call_regs_t, x7) == (7 * sizeof(uint64_t)), + "Unexpected sptm_call_regs_t offset"); + +/** + * Instantiates an entry stub with the specified name with the specified dispatch information. + * + * @param location_directive An assembly directive that describes where the code + * should be located. + * @param function_name The name of the stub. + * @param entry_stub_name The name of the domain-entry stub (quoted string), + * without the leading underscore. + * @param domainID The dispatch domain ID of the call's destination. + * @param tableID The dispatch table ID of the call's destination. + * @param endpointID The dispatch endpoint ID of the call's destination. + * + * @return If the stub's dispatch destination returns a value (or values), it + * is in accordance with the 64-bit AAPCS. + */ +#define GEN_NAMED_STUB(location_directive, function_name, entry_stub_name, domain_ID, table_ID, endpoint_ID) \ + __asm__ ( location_directive " \n" \ + ".align 2 \n" \ + ".globl _" #function_name "\n" \ + "_" #function_name ":\n" \ + "bti c\n" \ + GEN_LOAD_DISPATCH_ID_CODE_SEQUENCE(domain_ID, table_ID, endpoint_ID) \ + "b _" entry_stub_name "\n") + +#if defined(XNU_CLIENT) || defined(TXM_CLIENT) || defined(SK_CLIENT) || defined(SPTM_INTERNAL) +/** + * Instantiates a named SPTM entry stub with the specified dispatch information. + * + * @param function_name The name of the stub. + * @param tableID The dispatch table ID of the call's destination. + * @param endpointID The dispatch endpoint ID of the call's destination. + * + * @return If the stub's dispatch destination returns a value (or values), it + * is in accordance with the 64-bit AAPCS. + */ +#define GEN_NAMED_SPTM_STUB(function_name, table_ID, endpoint_ID) \ + GEN_NAMED_STUB(".text", function_name, "sptm_enter", SPTM_DOMAIN, table_ID, endpoint_ID) + +/** + * Instantiates a named SPTM guest vcpu mode entry stub with the specified dispatch information. + * + * @note The sptm_guest_enter entry stub name does not call any hooks in XNU + * as we want to avoid modifying the XNU thread preemption state when + * operating in guest VCPU context. + * + * @param function_name The name of the stub. + * @param tableID The dispatch table ID of the call's destination. + * @param endpointID The dispatch endpoint ID of the call's destination. + * + * @return If the stub's dispatch destination returns a value (or values), it + * is in accordance with the 64-bit AAPCS. + */ +#define GEN_NAMED_SPTM_GUEST_STUB(function_name, table_ID, endpoint_ID) \ + GEN_NAMED_STUB(".text", function_name, "sptm_guest_mode_enter", SPTM_DOMAIN, table_ID, endpoint_ID) + +/** + * Instantiates a named SPTM entry stub with the specified dispatch information + * that is callable before virtual address fixups have been applied in the + * calling domain. + * + * @note This stub generator is meant to only be applied to stubs that call into + * the SPTM during the bootstrap process of a calling domain to tell the + * SPTM that it has completed its fixups (and that the SPTM should update + * the permissions for the normal TEXT section). Before this is done, the + * TEXT section (where all other stubs live) is not executable. During + * that time, only code in the BOOT_EXEC section is executable which is + * why this macro is needed. + * + * @param function_name The name of the stub. + * @param tableID The dispatch table ID of the call's destination. + * @param endpointID The dispatch endpoint ID of the call's destination. + * + * @return If the stub's dispatch destination returns a value (or values), it + * is in accordance with the 64-bit AAPCS. + */ +#define GEN_NAMED_SPTM_STUB_BOOTEXEC(function_name, table_ID, endpoint_ID) \ + GEN_NAMED_STUB(".section __TEXT_BOOT_EXEC, __bootcode, regular, pure_instructions", function_name, "sptm_enter", \ + SPTM_DOMAIN, table_ID, endpoint_ID) +#endif /* defined(XNU_CLIENT) || defined(TXM_CLIENT) || defined(SK_CLIENT) || defined(SPTM_INTERNAL) */ + +/** + * Retype frame at a given physical address. + * + * @note [paddr] must be page-aligned. + * + * TODO: Add list of security checks which must be passed for the mappings to + * get updated. This should be explicit at the API level. + * + * @note This operation cannot gracefully fail; it will either succeed, or panic. + * + * @param paddr Physical address of the frame to retype. + * @param current_type The current type of the frame must match this value. + * @param new_type Frame to retype the frame to. + * @param retype_params Type-specific information set at retype time. + */ +#if !USE_UNSAFE_TYPES +void sptm_retype( + sptm_paddr_t paddr, + sptm_frame_type_t current_type, + sptm_frame_type_t new_type, + sptm_retype_params_t retype_params); +#else +void sptm_retype( + sptm_managed_page_u managed_page_U, + sptm_frame_type_t current_type, + sptm_frame_type_u new_type_U, + sptm_retype_params_t retype_params_U); +#endif + +#if defined(TXM_CLIENT) || defined(SK_CLIENT) || defined(SPTM_INTERNAL) + +/** + * Register a dispatch table with the SPTM dispatch logic. This registration + * will associate a dispatch table ID with an entry point in the wanted domain. + * + * @note Any callable domain must register its dispatch table entries with this + * function during bootstrap. This will add an entry into the global + * dispatch table so future domains can call into it. If the requested + * entry in the table already exists a violation is thrown. + * + * @note Each calling domain has its own namespace for dispatch table IDs and + * the dispatch logic tracks which domain is calling this function by the + * calling_domain field in the per CPU dispatch state data. + * + * @param table_id_U The ID of the dispatch table to register for the calling + * domain. The table IDs are unique for each domain performing + * the registration, and should start at zero and go up from + * here. + * @param dispatch_entry Virtual address of the entry point to jump to when a + * domain attempts to transition into the dispatch table + * being registered. Depending on the domain performing + * the registration, this virtual address may or may not + * be accessible by the SPTM. This shouldn't matter as + * long as the virtual address is executable within the + * domain being entered. + * @param permissions A bitmask describing which domains are allowed to call + * endpoints within this dispatch table. Use the SET_BIT and + * domain macros like such to define these permissions: + * + * permissions = SET_BIT(XNU_DOMAIN) | SET_BIT(TXM_DOMAIN); + */ +#if !USE_UNSAFE_TYPES +void sptm_register_dispatch_table( + sptm_dispatch_table_id_t table_id, + sptm_vaddr_t dispatch_entry, + uint64_t permissions); +#else +void sptm_register_dispatch_table( + sptm_dispatch_table_id_u table_id_U, + sptm_dispatch_entry_addr_u dispatch_entry_U, + uint64_t permissions); +#endif + +/** + * Initiate a system panic. + * + * @param panic_string The string to pass to SPTM that identifies the reason for the panic. + * + * @note This function does not retturn. + */ +void __attribute__((noreturn)) sptm_initiate_panic(const char *panic_string); + +/** + * Jumps to the SPTM dispatch logic from a client domain so it can return to + * the domain that originally called it. + * + * @param return_value The return value to pass to the calling domain. + * + * @note This function does not return. + */ +void __attribute__((noreturn)) sptm_return_to_caller(uint64_t return_value); + +/** + * Jumps to the SPTM dispatch logic from a client domain when that client domain + * is done saving its state after taking an interrupt. This tells SPTM dispatch logic + * to proceed to hand off control to XNU to process the interrupt. + * + * @param vector_type Indicates which type of interrupt was received by the + * domain. This parameter is ignored when TXM calls + * this function, as TXM does not directly handle interrupts. + * @param scheduler_interrupted Indicates that the SK scheduler was + * was interrupted. This parameter is ignored + * when TXM calls this function. + * + * @note This function does not return. + */ +void __attribute__((noreturn)) sptm_exception_state_saved( + sptm_vector_type_t vector_type, + bool scheduler_interrupted); +#endif /* defined(TXM_CLIENT) || defined(SK_CLIENT) */ + +/* Return values from the utility functions */ +__enum_closed_decl(libsptm_error_t, uint8_t, { + /* The libsptm call completed with no failures. */ + LIBSPTM_SUCCESS = 0, + + /* libsptm_init has not been called. */ + LIBSPTM_NOT_INITTED = 1, + + /* An invalid argument was passed into the library. */ + LIBSPTM_INVALID_ARG = 2, + + /* Physical frame type mismatch. */ + LIBSPTM_TYPE_MISMATCH = 3, + + /* Non-specific failure. */ + LIBSPTM_FAILURE = 4 +}); + +/** + * Refcounts types of frame types to use when interacting with the + * refcount query API. + */ +__enum_closed_decl(libsptm_refcnt_type_t, uint8_t, { + /* Caller doesn't have mapping. */ + SPTM_REFCOUNT_NONE = 0, + /* Caller claims to have one read-only mapping of a cpu_page frame. */ + SPTM_REFCOUNT_RO = 1, + /* Caller claims to have one write-exec mapping of a cpu_page frame. */ + SPTM_REFCOUNT_WX = 2, + /* Caller claims to have one mapping to an XNU_IOMMU frame. */ + SPTM_REFCOUNT_IOMMU = 3 +}); + +/** + * SPTM CPU state types to use when interacting with the SPTM + * CPU state query API. + */ +__enum_closed_decl(libsptm_cpu_state_t, uint8_t, { + /* CPU is running in SPTM interrupted context. */ + CPUSTATE_SPTM_INTERRUPTED = 0, + + /* CPU is halted in an indefinite panic spin state. */ + CPUSTATE_PANIC_SPIN = 1, +}); + +/* SPTM Library Utility Functions. */ +#if defined(XNU_CLIENT) || defined(TXM_CLIENT) || defined(SPTM_INTERNAL) + +/** + * Initializes the SPTM library. + * + * @note This is an SPTM library function which does not require a call into the + * SPTM to complete. + * + * @param statep A pointer to a libsptm_state_t, which contains data essential + * to the library's utility functions. This structure should have + * been passed to the client domain through the bootstrap + * arguments setup by the SPTM. + * + * @return LIBSPTM_INVALID_ARG if [statep] is NULL, otherwise LIBPSTM_SUCCESS. + */ +extern libsptm_error_t __attribute__((__warn_unused_result__)) libsptm_init( + const libsptm_state_t *statep); + +/** + * Translates the specified kernel virtual address to a physical address. + * + * @note This is an SPTM library function which does not require a call into the + * SPTM to complete. + * + * @note [paddrp] is only initialized on successful return. + * + * @param vaddr Virtual address to translate. + * @param paddrp Pointer to a physical address to store the result. + * + * @return LIBSPTM_SUCCESS if the virtual address was successfully translated. + * LIBPSPTM_INVALID_ARG if [paddrp] is NULL. + * LIBSPTM_FAILURE otherwise. + */ +extern libsptm_error_t __attribute__((__warn_unused_result__)) sptm_kvtophys( + sptm_papt_t vaddr, sptm_paddr_t *paddrp); + +/** + * Translates the physical address given to a virtual address within the + * physical aperture. + * + * @note This is an SPTM library function which does not require a call into the + * SPTM to complete. + * + * @note [vaddrp] is only initialized on successful return. + * + * @param paddr The physical address to translate. + * @param vaddrp A pointer to storage holding the translated virtual address. + * + * @return LIBSPTM_SUCCESS if the physical address was successfully translated. + * LIBPSPTM_INVALID_ARG if [vaddrp] is NULL. + * LIBSPTM_FAILURE otherwise. + */ +extern libsptm_error_t __attribute__((__warn_unused_result__)) sptm_phystokv( + sptm_paddr_t paddr, sptm_papt_t *vaddrp); + +/** + * Returns the frame type of the physical page backing the specified virtual + * address. + * + * @note This is an SPTM library function which does not require a call into the + * SPTM to complete. + * + * @note [frame_typep] is only initialized on successful return. + * + * @param vaddr The virtual address whose physical address's type is to be + * returned. + * @param frame_typep A pointer to the frame type variable that will hold the + * result. + * + * @return LIBSPTM_SUCCESS If the virtual address was successfully translated + * to a physical address AND if that physical address + * corresponds to typed memory. + * LIBPSPTM_INVALID_ARG if [frame_typep] is NULL. + * LIBSPTM_FAILURE otherwise. + */ +extern libsptm_error_t __attribute__((__warn_unused_result__)) sptm_get_vaddr_type( + sptm_vaddr_t vaddr, sptm_frame_type_t *frame_typep); + +/** + * Returns the frame type of the specified physical page. + * + * @note This is an SPTM library function which does not require a call into the + * SPTM to complete. + * + * @note [frame_typep] is only initialized on successful return. + * + * @param paddr The physical address whose type is sought. + * @param frame_typep A pointer to the frame type variable that will hold the + * result. + * + * @return LIBSPTM_SUCCESS if the specified physical address corresponds to + * typed memory. + * LIBPSPTM_INVALID_ARG if [frame_typep] is NULL. + * LIBSPTM_FAILURE otherwise. + */ +extern libsptm_error_t __attribute__((__warn_unused_result__)) sptm_get_paddr_type( + sptm_paddr_t paddr, sptm_frame_type_t *frame_typep); + +/** + * Provides information on whether the number of mappings of a given physical + * page is zero or not. + * + * @note This is an SPTM library function which does not require a call into the + * SPTM to complete. + * + * @note For now, the function supports only types of cpu-page and XNU_IOMMU. + * + * @note [is_lastp] is only initialized on successful return. + * + * @note [refcnt_type] represents the kind of mapping the caller claims to have, + * and the [is_lastp] set to TRUE iff there are no mappings BESIDES that one. + * + * @note The caller may claim to have only ONE mapping, and if this kind doesn't exist, + * the function returns LIBSPTM_FAILURE. + * + * @note If the caller claims to own no mappings [refcnt_type] should be + * SPTM_REFCOUNT_NONE. + * + * @param paddr The physical address whose refcount to check. + * + * @param refcnt_type An enum describes the kind of mappings the caller may + * claim to own. If this kind doesn't align up with the type of the + * frame, the function returns LIBSPTM_FAILURE. + * + * @param is_lastp A pointer to a boolean holds the results, indicates if the number + * of all mappings of [paddr] is zero or not, not including the one mapping + * the owner claims to have. + * + * @return LIBSPTM_SUCCESS if the information is obtained successfully. + * LIBPSPTM_INVALID_ARG if [is_lastp] is NULL. + * LIBSPTM_FAILURE otherwise. + */ +extern libsptm_error_t __attribute__((__warn_unused_result__)) sptm_paddr_is_last_mapping( + sptm_paddr_t paddr, + libsptm_refcnt_type_t refcnt_type, + bool *is_lastp); + +/** + * Provides information on whether the SPTM has triggered a panic or not. + * + * @note This is an SPTM library function which does not require a call into the + * SPTM to complete. + * + * @return LIBSPTM_SUCCESS if the information is correctly returned + * LIBSPTM_FAILURE otherwise. + */ +extern libsptm_error_t __attribute__((__warn_unused_result__)) sptm_triggered_panic( + bool *sptm_panicked); + +/** + * Provides information on the current dispatch state of each SPTM CPU. + * + * @note This is an SPTM library function which does not require a call into the + * SPTM to complete. + * + * @note CAUTION: For performance reasons, SPTM dispatch does not + * issue memory barriers when dispatch state changes. This call is not + * guaranteed to return the instantaneous state of a core when being used to + * query the state of a core other than the core issuing the query. + * + * @param sptm_logical_cpu_id The SPTM logical CPU ID being queried. + * + * @param state_type The particular state the client is querying for. See + * the libsptm_cpu_state_t enum for supported states. + * + * @param state Output parameter indicating whether the CPU being queried + * is currently in the [state_type] state. + * + * @return LIBSPTM_SUCCESS if the information is correctly returned + * LIBSPTM_FAILURE otherwise. + */ +extern libsptm_error_t __attribute__((__warn_unused_result__)) sptm_get_cpu_state( + uint64_t sptm_logical_cpu_id, + libsptm_cpu_state_t state_type, + bool *state); + +/** + * Provides information on whether certain optional features are supported. + * + * @note Refer to the SPTM_FEATURE_* definitions above to see what feature flags + * are available. + * + * @param features Bitmap that conveys the feature flags that the caller is checking for. + * + * @param available Pointer to a boolean that this function will set to true if all queried + * features are available, or false if at least one of them is not. + * + * @return LIBSPTM_SUCCESS if the information is correctly returned + * LIBSPTM_FAILURE otherwise. + */ +extern libsptm_error_t __attribute__((__warn_unused_result__)) sptm_features_available( + uint64_t features, + bool *available); + +#endif /* defined(XNU_CLIENT) || defined(TXM_CLIENT) || defined(SPTM_INTERNAL) */ + +__END_DECLS + +#endif /* __ASSEMBLER__ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/platform/sptm/sptm_xnu.h b/Frameworks/Kernel.framework/Versions/A/Headers/platform/sptm/sptm_xnu.h new file mode 100644 index 00000000..c2a6fb23 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/platform/sptm/sptm_xnu.h @@ -0,0 +1,1747 @@ +/* + * Copyright (c) 2023 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +/** + * Types and function prototypes in this file are intended for use only to + * invoke SPTM services, not to invoke services offered by other domains. + */ +#pragma once + +#if !defined(SPTM_INTERNAL) +/** + * Only set the domain-specific define if this file is not being included with + * the intent of accessing all definitions/declarations for all client domains + * (which is done when accessing the headers internally in the SPTM). + */ +#define XNU_CLIENT 1 +#endif + +#include "sptm_common.h" + +/** + * Function IDs for each of the functions provided by the SPTM to client + * domains. + * + * TODO: Rename to "ENDPOINTID". + */ +#define SPTM_FUNCTIONID_LOCKDOWN 0 +#define SPTM_FUNCTIONID_RETYPE 1 +#define SPTM_FUNCTIONID_MAP_PAGE 2 +#define SPTM_FUNCTIONID_MAP_TABLE 3 +#define SPTM_FUNCTIONID_UNMAP_TABLE 4 +#define SPTM_FUNCTIONID_UPDATE_REGION 5 +#define SPTM_FUNCTIONID_UPDATE_DISJOINT 6 +#define SPTM_FUNCTIONID_UNMAP_REGION 7 +#define SPTM_FUNCTIONID_UNMAP_DISJOINT 8 +#define SPTM_FUNCTIONID_CONFIGURE_SHAREDREGION 9 +#define SPTM_FUNCTIONID_NEST_REGION 10 +#define SPTM_FUNCTIONID_UNNEST_REGION 11 +#define SPTM_FUNCTIONID_CONFIGURE_ROOT 12 +#define SPTM_FUNCTIONID_SWITCH_ROOT 13 +#define SPTM_FUNCTIONID_REGISTER_CPU 14 +#define SPTM_FUNCTIONID_FIXUPS_COMPLETE 15 +#define SPTM_FUNCTIONID_SIGN_USER_POINTER 16 +#define SPTM_FUNCTIONID_AUTH_USER_POINTER 17 +#define SPTM_FUNCTIONID_REGISTER_EXC_RETURN 18 +#define SPTM_FUNCTIONID_CPU_ID 19 +#define SPTM_FUNCTIONID_SLIDE_REGION 20 +#define SPTM_FUNCTIONID_UPDATE_DISJOINT_MULTIPAGE 21 +#define SPTM_FUNCTIONID_REG_READ 22 +#define SPTM_FUNCTIONID_REG_WRITE 23 +#define SPTM_FUNCTIONID_GUEST_VA_TO_IPA 24 +#define SPTM_FUNCTIONID_GUEST_STAGE1_TLBOP 25 +#define SPTM_FUNCTIONID_GUEST_STAGE2_TLBOP 26 +#define SPTM_FUNCTIONID_GUEST_DISPATCH 27 +#define SPTM_FUNCTIONID_GUEST_EXIT 28 +#define SPTM_FUNCTIONID_MAP_SK_DOMAIN 29 +#define SPTM_FUNCTIONID_HIB_BEGIN 30 +#define SPTM_FUNCTIONID_HIB_VERIFY_HASH_NON_WIRED 31 +#define SPTM_FUNCTIONID_HIB_FINALIZE_NON_WIRED 32 +#define SPTM_FUNCTIONID_IOFILTER_PROTECTED_WRITE 33 + +#ifndef __ASSEMBLER__ + +#include + +/** + * Include XNU's board_config header. This is ok since sptm_xnu.h should only + * be used by XNU and SPTM, both of which have access to XNU's exported headers. + */ +#include + + +/** + * SPTM API Return Codes (to be used with sptm_return_t types). + * + * The SPTM is designed to either return some flavor of success, or panic in + * most cases. The only case where an error should be returned is when relaying + * TXM enforcement errors. + */ +#define SPTM_SWITCH_RCTX_FLUSH_SHIFT 31 +#define SPTM_SWITCH_ASID_TLBI_FLUSH_SHIFT 30 +#define SPTM_SWITCH_RETURN_CODE_MASK 0xF0000000 +enum : uint32_t { + SPTM_SUCCESS, + + SPTM_MAP_VALID, + SPTM_MAP_FLUSH_PENDING, + SPTM_MAP_CODESIGN_ERROR, + + SPTM_UNMAP_FLUSH_PENDING, + + /* Update is successful, but TLBI is not issued as requested. */ + SPTM_UPDATE_DELAYED_TLBI, + + /* Switch is successful, and there has been an RCTX. */ + SPTM_SWITCH_RCTX_FLUSH = (1U << SPTM_SWITCH_RCTX_FLUSH_SHIFT), + + /* Switch is successful, and there has been a TLBI by ASID. */ + SPTM_SWITCH_ASID_TLBI_FLUSH = (1U << SPTM_SWITCH_ASID_TLBI_FLUSH_SHIFT), +}; + +/* SPTM API Limits. This is used to limit the amount of looping in the SPTM. */ +#define SPTM_MAPPING_LIMIT 64U + +/** + * Definitions for supported Page Table geometries. + * + * @note Although these need to be defined all across the board since this + * is a public interface, certain SoC's may not support all configurations. + * See the definition for [supported_geometries] in sptm_page_tables.c. + */ +#define SPTM_PT_GEOMETRY_16K 0U +#define SPTM_PT_GEOMETRY_4K 1U +#define SPTM_PT_GEOMETRY_STAGE2_16K_DEFAULT_IPA 2U +#define SPTM_PT_GEOMETRY_STAGE2_16K_REDUCED_IPA 3U +#define SPTM_PT_GEOMETRY_STAGE2_4K 4U + +#define SPTM_PT_N_GEOMETRY_IDS 5U +#define SPTM_PT_N_STAGE1_GEOMETRY_IDS 2U + +/* Definitions for supported IOMMUs */ +#define IOMMU_ID_SHART 0U +#define IOMMU_ID_SART 1U +#define IOMMU_ID_NVME 2U +#define IOMMU_ID_UAT 3U +#define IOMMU_ID_DART_T8020 4U +#define IOMMU_ID_DART_T8110 5U +#define IOMMU_ID_DART_T6000 6U + +#define SPTM_IOMMUS_N_IDS 8U + +/* A placeholder ID to represent no/invalid IOMMU. */ +#define IOMMU_ID_INVALID SPTM_IOMMUS_N_IDS + +/** + * Definitions for flags associated with Root PT frames. + * + * These are either set or cleared for a given Root PT, and the SPTM + * uses this information to determine what system register state needs + * to be updated upon context switching to a Root PT. + */ + +/** + * May be set at retype time by XNU in the 'sk_flags' field of the retype_params + * to indicate that this frame is expected to be mapped as tagged by the secure kernel. + */ +#define SPTM_SK_PAGE_FLAGS_TAGGABLE 0x1 + +/** + * Commpage region definitions that must be shared between the SPTM and xnu. + * These are the fixed VA ranges for the commpage areas on all arm64 targets; + * they are needed for TLB management during SPTM context switch. + */ +#define SPTM_ARM64_COMMPAGE_REGION_START 0x0000000FC0000000ULL +#define SPTM_ARM64_COMMPAGE_REGION_SIZE 0x40000000ULL +#define SPTM_X86_64_COMMPAGE_REGION_START 0x00007FFFFFE00000ULL +#define SPTM_X86_64_COMMPAGE_REGION_SIZE 0x0000000000200000ULL + +/** + * Passed to XNU's entry point to describe why it is being entered from the + * SPTM. This is commonly used during the bootstrapping of a CPU so the + * appropriate boot path can be executed when the SPTM hands control over to + * XNU. This is also used when the SPTM wants to trigger the XNU panic path. + * + * SPTM_CPU_BOOT_COLD: Passed only once on the boot CPU during cold boot. + * SPTM_CPU_BOOT_SECONDARY: Passed only once on every secondary CPU when + * they are first released from reset. + * SPTM_CPU_BOOT_WARM: Passed every time a CPU resumes from sleep. + * SPTM_CPU_BOOT_HIB: Passed every time system is coming out of hibernation. + * SPTM_CPU_PANIC: Passed when the SPTM is panicking and wants to jump to XNU's + * panic handler. + */ +__enum_closed_decl(xnu_entry_routine_t, uint8_t, { + SPTM_CPU_BOOT_COLD, + SPTM_CPU_BOOT_SECONDARY, + SPTM_CPU_BOOT_WARM, + SPTM_CPU_BOOT_HIB, + SPTM_CPU_PANIC, +}); + +/** + * Random seed length and prefix. + * + * The random seed length is what the device tree uses. If that ever changes in the + * EDT project, assert will fail and give opportunity to change the seed here. + */ +static size_t const random_seed_length = 0x40; +static char const random_seed_prefix[] = "randseed"; + +/** + * SPTM bootstrapping arguments passed to XNU at bootstrap time which contain + * all of the information XNU needs to initialize itself. + */ +typedef struct { + /* Page used to return PTEs prior to modifying them during an SPTM request. */ + sptm_papt_t sptm_prev_ptes; + + /* Physical Aperture boundaries */ + sptm_papt_t physmap_base; + sptm_papt_t physmap_end; + + /* First available physical address */ + sptm_paddr_t first_avail_phys; + + /* Physical slide boundaries. Used by XNU to release this memory to the VM. */ + sptm_papt_t phys_slide_papt; + size_t phys_slide_size; + + /* Thread stacks, used by TXM when running in preemptible mode. */ + sptm_papt_t *txm_thread_stacks; + + /* Number of TXM thread stacks */ + unsigned int num_txm_thread_stacks; + + /** + * Virtual address bounds for all of the per-cpu stacks (SPTM, dispatch, + * and per-cpu TXM stacks). The start is inclusive, and the end is + * exclusive. + */ + sptm_papt_t cpu_stack_papt_start; + sptm_papt_t cpu_stack_papt_end; + + /** + * Virtual address bounds for all executables loaded into the kernel (TTBR1) + * address space. These addresses can be used to know whether a virtual + * address (e.g., a PC value) is inside a kernel space segment. The start + * address is inclusive and the end address is exclusive. + */ + sptm_papt_t executables_papt_start; + sptm_papt_t executables_papt_end; + + /* Pointer to the debug header */ + struct debug_header const *debug_header; + + /* Maximum number of virtual ASIDs supported by the system */ + uint32_t num_asids; + + /* + * Random seed from iBoot. + * + * The seed is prefixed with the string "randseed", to make sure that + * it has actually been fed with a seed, and not some not-so-random data. + * xnu has to compare and remove that prefix, and shorten the length. + * + * It is xnu's duty to zero out this copy of the seed. + */ + uint8_t random_seed[sizeof(random_seed_prefix)-1 + random_seed_length]; + size_t random_seed_length; + + + bool sk_bootstrapped; + + + uint64_t sk_carveout_size; + + /* + * What variant of SPTM this is. + */ + enum { + SPTM_VARIANT_RELEASE = 0, + SPTM_VARIANT_DEVELOPMENT + } sptm_variant; + + /* + * Pointer to the global variable within SPTM which XNU can set when XNU + * triggers a panic. XNU can then always read this pointer to check securely + * if it has ever triggered a panic or not. This provides assistance in + * hardening the panic path within XNU. + */ + const bool *xnu_triggered_panic; + + /** + * Consumers of this structure should not attempt to access members of the + * libsptm_state field. All accesses will be made through libsptm library + * interfaces only. + */ + libsptm_state_t libsptm_state; + + + /* AuxKC Physical Aperture boundaries */ + sptm_papt_t auxkc_base; + sptm_papt_t auxkc_mh; + sptm_papt_t auxkc_end; + + /* Early boot timestamps */ + uint64_t timestamp_sk_bootstrap; + uint64_t timestamp_xnu_bootstrap; + + void *reserved1; + +#if APPLEVIRTUALPLATFORM + /** + * On virtual platforms, the PSCI-based reset logic in xnu needs to know + * the address of the reset vector. + */ + sptm_vaddr_t sptm_reset_vector_vaddr; +#endif + /** + * SPTM-owned scratch page used by the hibernation driver to copy the + * contents of memory before hashing it. XNU will take the memory copied + * into this page, compress it, and write it into the hibernation image. + */ + sptm_paddr_t hib_scratch_page_paddr; + + /** + * SPTM parsed pmap-io-ranges table and its size. + */ + sptm_papt_t sptm_pmap_io_ranges; + unsigned int sptm_pmap_io_ranges_count; + + /** + * SPTM parsed pmap-io-filters table and its size. + */ + sptm_papt_t sptm_pmap_io_filters; + unsigned int sptm_pmap_io_filters_count; +} sptm_bootstrap_args_xnu_t; + +/* + * Hibernation boot arguments passed from the SPTM to XNU. + */ +typedef struct { + /* The physical address of the hibernation header. */ + uint64_t hib_header_phys; + + /* The total number of handoff pages recorded in the handoff_pages array, below. */ + uint32_t handoff_page_count; + + /* The array of physical page numbers (in sequence) storing the handoff region. */ + sptm_ppnum_t handoff_pages[64]; +} sptm_hibernation_args_xnu_t; + +/** + * Data structures used to dispatch to guest VCPU context. Contains all the + * relevant information that XNU must pass when entering guest VCPU context + * including stage 2 page table root, desired host control registers such + * as HCR, HACR, VTCR, non-banked system registers, NEON, and GPR register + * files. + * + * @note The NEON and GPR register files are in their own substructures due + * to ARMv8 assembly addressing mode offset restrictions. + */ + +typedef struct { + uint64_t cptr_el2; + uint64_t fpsr; + uint64_t fpcr; +} sptm_guest_dispatch_neon_t; + +typedef struct { + uint64_t tpidr2_el0; + uint64_t smpri_el1; + uint64_t svcr; +} sptm_guest_dispatch_sme_t; + +/* Maximum SME/SVE vector size (currently capped at 512 bits) */ +static const size_t kSMEMaxVectorSize = 512 / 8; + +/* Maximum SME/SVE predicate size */ +static const size_t kSMEMaxPredicateSize = kSMEMaxVectorSize / 8; + +/* Number of SME/SVE vector registers */ +static const size_t kSMEVectorCount = 32; + +/* Number of SME/SVE predicate registers */ +static const size_t kSMEPredicateCount = 16; + +typedef struct { + union { + /* Legacy NEON state */ + __uint128_t q[32]; + + struct { + /* SME/SVE vector state */ + uint8_t z[kSMEMaxVectorSize * kSMEVectorCount]; + + /* SME/SVE predicate state */ + uint8_t p[kSMEMaxPredicateSize * kSMEPredicateCount]; + }; + }; +} sptm_guest_dispatch_vec_t; + +typedef struct { + uint64_t x[29]; + uint64_t fp; + uint64_t lr; +} sptm_guest_dispatch_gpr_t; + +typedef struct { +#if USE_UNSAFE_TYPES + sptm_stage2_root_pt_u stage2_root_pt; +#else + sptm_paddr_t stage2_root_pt; +#endif + + /* Guarded mode protected host control registers. */ + uint64_t vtcr; + uint64_t hcr; + uint64_t hacr; + uint64_t hcrx; +#if __APPLE_NV__ +#if USE_UNSAFE_TYPES + sptm_managed_addr_u vncr_paddr; + sptm_managed_addr_u avncr_paddr; +#else + sptm_paddr_t vncr_paddr; + sptm_paddr_t avncr_paddr; +#endif /* */ +#endif /* __APPLE_NV__ */ + + /* Non Banked control registers. */ + uint64_t sp_el0; + uint64_t sp_el1; + uint64_t mdscr_el1; + uint64_t tpidr_el1; + uint64_t tpidr_el0; + uint64_t tpidrro_el0; + uint64_t par_el1; + uint64_t csselr_el1; + uint64_t afpcr_el0; +#if HAS_ACFG + uint64_t acfg_el1; +#endif /* HAS_ACFG */ + uint64_t scxtnum_el0; + + /* NEON */ + sptm_guest_dispatch_neon_t neon; + + /* GPR */ + sptm_guest_dispatch_gpr_t gpr; + + /* SME */ + sptm_guest_dispatch_sme_t sme; + + /* Vector */ + sptm_guest_dispatch_vec_t vec; + + /* Exception Return registers. */ + uint64_t cpsr; + uint64_t pc; + uint64_t apstate; + + bool flush_local_tlb; +} sptm_guest_dispatch_t; + +/** + * Structure for the return state from the sptm_copy_callee_saved_state() + * library function. + */ +typedef struct { + uint64_t fp; + uint64_t lr; + uint64_t pc; + uint64_t sp; +} xnu_saved_registers_t; + +/** + * Overridable "syscall" entry/exit hooks (weak symbols) + * + * @note Each hook is REQUIRED to preserve x0 through x7 and x16 if it clobbers + * those registers. + * + * @note Each set of hooks is executed before/after entering/exiting + * (respectively) the named destination domain. + */ +void __attribute__((weak)) _sptm_pre_entry_hook(void); +void __attribute__((weak)) _sptm_post_exit_hook(void); + +void __attribute__((weak)) _sk_pre_entry_hook(void); +void __attribute__((weak)) _sk_post_exit_hook(void); + +/** + * Function called by the SPTM once it is ready for its CTRR and CTXR regions to + * be locked. This must be called only once during cold boot. + * + * @note After calling this function, cL4 and SPTM will no longer be able to write + * to their RO memory. + */ +void sptm_lockdown(void); + +/** + * Function called by XNU once it is ready for for its CTRR and CTXR regions region + * to be locked. This must be called only once during cold boot. + * + * @note After calling this function, TXM and XNU will no longer be able to write + * to their RO memory. + */ +void sptm_lockdown_xnu(void); + +/** + * Function called by XNU once its fixups phase is complete. During the fixups + * phase, XNU can only execute code within a subrange of its RX region, called + * the BX region; the rest of the RX region is mapped as XNU_DEFAULT so that XNU + * can overwrite it. This function retypes the entirety of XNU's RX region as + * SPTM_XNU_CODE. + */ +void sptm_init_xnu_fixups_complete(void); + +/** + * Function called by XNU if XNU ever enters a panic state. When this happens, a + * global variable within the SPTM is latched to be true, with no possibility of this + * ever changing back to false. XNU and other domains can then query this variable + * and build policy on top of that. + */ +void sptm_xnu_panic_begin(void); + +#if !USE_UNSAFE_TYPES +sptm_return_t sptm_map_page( + sptm_paddr_t root_pt_paddr, + sptm_vaddr_t vaddr, + sptm_pte_t new_pte); +#else +sptm_return_t sptm_map_page( + sptm_root_pt_u root_pt_U, + sptm_aligned_vaddr_u vaddr_U, + sptm_pte_u new_pte_U); +#endif + +/** + * Map a page table page in an address space at the specified level. + * + * @note: The page table page represented by [new_tte] must pass a number of security + * checks in order to avoid triggering an SPTM violation: + * --It must already be typed as either XNU_PAGE_TABLE or + * XNU_PAGE_TABLE_COMMPAGE. XNU_PAGE_TABLE_SHARED tables are expected + * to be inserted using sptm_nest_region(). + * --It must be typed to reside at [target_level] + 1. + * --If not of type XNU_PAGE_TABLE_COMMPAGE, it must contain no existing + * mappings. + * --If not of type XNU_PAGE_TABLE_COMMPAGE, it must not be nested in any + * other paging hierarchy. + * --If not of type XNU_PAGE_TABLE_COMMPAGE, it must not be concurrently + * altered in any way by any other SPTM operation. + * + * 4K page table geometries come with additional restrictions. In such cases, XNU cannot + * target an arbirary TTE at a given level; instead, XNU must target a TTE whose index is divisible + * by the page ratio, which is the quotient of the native page size (16K) and the page size of the + * geometry at hand (in this case, 4K). Upon this request, the SPTM will then go ahead and create + * as many mappings of the requested geometry's size as required to completely map a 16K page. In + * addition to this, the physical address in the TTE provided by XNU must also be aligned to the + * native page size. For example, if XNU requests a mapping at a VA that targets TTE index 4 at a + * given level, the SPTM will create four mappings, at TTE indices 4, 5, 6 and 7, each of which + * maps a subset of the 16K page provided in the TTE's physical address field, resulting in the + * 16K page getting mapped being fully utilized by all four mappings combined. In doing so, there + * is no memory wastage incurred by underutilized 16K pages when used as 4K page table pages, + * and there is also no need for individual FTE's for each of the 4K page table pages getting + * mapped, since their reference and in-flight counts are effectively common to all four at any given + * point in time. + * + * @param root_pt_paddr Physical address of the Root Page Table to insert the mapping + * into. + * @param vaddr Virtual address at which to insert the mapping. + * @param target_level Level in the page tables at which to insert the new Page Table. + * For example, when mapping a newly-created L3 table, [target_level] + * should be 2. + * @param new_tte TTE to write into the page table. + */ +#if !USE_UNSAFE_TYPES +void sptm_map_table( + sptm_paddr_t root_pt_paddr, + sptm_vaddr_t vaddr, + sptm_pt_level_t target_level, + sptm_tte_t new_tte); +#else +void sptm_map_table( + sptm_root_pt_u root_pt_U, + sptm_aligned_vaddr_u aligned_vaddr_U, + sptm_pt_level_u target_level_U, + sptm_tte_u new_tte_U); +#endif + +/** + * Unmap a page table page in an address space at the specified level. + * + * @note The page table page to be removed must pass a number of security checks in + * order to avoid triggering an SPTM violation: + * --If it is of type XNU_PAGE_TABLE_SHARED, [root_pt_paddr] must be of type + * XNU_SHARED_ROOT_TABLE. In other words, it is not permitted to use this + * API to remove a nested shared table from a user page table hierarchy. + * --Unless it is of type XNU_PAGE_TABLE_COMMPAGE, it must be nested only + * in the table hierarchy rooted at [root_pt_paddr]. + * For XNU_PAGE_TABLE_SHARED tables, this means all user mappings must have + * previously been removed via sptm_unnest_region(). + * --Kernel page tables may not be removed; that is, [root_pt_paddr] must not + * be the kernel root table. + * + * 4K page table geometries come with additional restrictions. In such cases, XNU cannot + * target an arbirary TTE at a given level; instead, XNU must target a TTE whose index is divisible + * by the page ratio, which is the quotient of the native page size (16K) and the page size of the + * geometry at hand (in this case, 4K). Upon this request, the SPTM will then go ahead and create + * as many mappings of the requested geometry's size as required to completely map a 16K page. In + * addition to this, the physical address in the TTE provided by XNU must also be aligned to the + * native page size. For example, if XNU requests a mapping at a VA that targets TTE index 4 at a + * given level, the SPTM will create four mappings, at TTE indices 4, 5, 6 and 7, each of which + * maps a subset of the 16K page provided in the TTE's physical address field, resulting in the + * 16K page getting mapped being fully utilized by all four mappings combined. In doing so, there + * is no memory wastage incurred by underutilized 16K pages when used as 4K page table pages, + * and there is also no need for individual FTE's for each of the 4K page table pages getting + * mapped, since their reference and in-flight counts are effectively common to all four at any given + * point in time. + * + * @param root_pt_paddr Physical address of the Root Page Table to remove the mapping + * from. + * @param vaddr Virtual address at which to remove the mapping. + * @param target_level Level in the page tables at which to remove the exiting Page Table. + * For example, when unmapping an L3 table, [target_level] should be 2. + */ +#if !USE_UNSAFE_TYPES +void sptm_unmap_table( + sptm_paddr_t root_pt_paddr, + sptm_vaddr_t vaddr, + sptm_pt_level_t target_level); +#else +void sptm_unmap_table( + sptm_root_pt_u root_pt_U, + sptm_aligned_vaddr_u aligned_vaddr_U, + sptm_pt_level_u target_level_U); +#endif + +/** + * Flags within the "mask" field used when updating already existing mappings. + * + * Note that key fields within the mapping like the PA and valid bit aren't + * represented in the mask. This is how we prevent those fields from changing + * during an update() call. + */ + +/** + * Represents whether a page is wired down. Updating this field does not require + * TLBI since software-reserved bits are ignored by the hardware. + */ +#define SPTM_UPDATE_SW_WIRED 0x1U + +/** + * Updates to the permissions and "was writable" fields have to occur together. + * + * WAS_WRITABLE: + * Mark that a mapping used to have write permissions, and that in a future + * update call, write permissions can be added back without going through the + * TXM. This field can ONLY be set if the permissions on the existing mapping + * are writable. Adding writability to a page in a future call requires that + * this field is already set in the current mapping and that the caller is also + * trying to clear it in the new mapping. + * + * PERMS: + * Represents all bits used to determine permissions: XN, PXN, AP[2:1]. Note + * that the software-reserved "TN" bits are not included in this. Those bits + * will always be zero. + */ +#define SPTM_UPDATE_PERMS_AND_WAS_WRITABLE 0x2U + +/* Not Global flag. This field can only be set, it can't be cleared. */ +#define SPTM_UPDATE_NG 0x4U + +/* Access Flag. */ +#define SPTM_UPDATE_AF 0x8U + +/* Shareability Domain. */ +#define SPTM_UPDATE_SH 0x10U + +/* Memory Attribute Index Register. */ +#define SPTM_UPDATE_MAIR 0x20U + +/** + * Update the in-memory PTE only w/o invalidating TLBI. + * + * @note Only supported by sptm_update_disjoint()/sptm_update_region(). + * + * @note Only supported on XNU_DEFAULT typed pages. The TLBI will be issued + * unconditionally for unsupported types of pages. + */ +#define SPTM_UPDATE_DEFER_TLBI 0x100U + +/** + * When looping over the list of mappings to update in an + * sptm_update_disjoint_multipage() call, avoid updating the PAPT mapping described + * by the "per_paddr_header" struct. This is useful when one physical page has more + * mappings than SPTM_MAPPING_LIMIT (which necessitates multiple SPTM calls to update + * all mappings to that physical page). This flag also useful in situations in which + * the PAPT doesn't need to be updated at all (which is basically anything besides a + * MAIR update). + * + * @note Only supported in the per_paddr_header.options field passed to + * sptm_update_disjoint_multipage(). + */ +#define SPTM_UPDATE_SKIP_PAPT 0x200U + +/** + * Mask representing all of the valid mask bits that can be passed to + * sptm_update_*(). + * + * The caller can pass other option bits like SPTM_UPDATE_DEFER_TLBI + * along with the mask bits. + */ +#define SPTM_UPDATE_MASK (SPTM_UPDATE_MAIR | SPTM_UPDATE_SH | SPTM_UPDATE_AF | \ + SPTM_UPDATE_NG | SPTM_UPDATE_PERMS_AND_WAS_WRITABLE | \ + SPTM_UPDATE_SW_WIRED) + +/** + * Update a contiguous set of mappings within a single leaf page table. + * + * TODO: Add list of security checks which must be passed for the mappings to + * get updated. This should be explicit at the API level. + * + * @param root_pt_paddr Physical address of the Root Page Table to update the + * mappings from. + * @param start_vaddr Virtual address of the first mapping to update. + * @param num_mappings Number of mappings to update starting at [start_vaddr]. + * @param pte_templates_pa Physical address of an array which represents what + * each mapping should get updated to. This array has to + * contain [num_mappings] number of entries. The fields + * denoted by [mask] will get copied out of this + * template and will be used to generate the new PTE. + * @param options The lower 8 bits is a bitmask representing which fields are + * being updated in this operation. Having a mask is required to + * be able to support multiple operations updating different + * fields within the same mapping. For instance, updating + * permissions at the same time as updating the memory type. + * + * @return SPTM_SUCCESS if the update succeeds and TLBIs are issued. + * SPTM_UPDATE_DELAYED_TLBI if the TLBIs are meant to be issued by the + * caller. + * + * @note In addition to the return value above, an array containing the values + * of the PTEs before modification is returned through the per-CPU scratch + * page. The array is located at the beginning of the scratch page and + * contiguously contains the previous PTEs starting with the one for + * [start_vaddr]. + */ +#if !USE_UNSAFE_TYPES +sptm_return_t sptm_update_region( + sptm_paddr_t root_pt_paddr, + sptm_vaddr_t start_vaddr, + unsigned int num_mappings, + sptm_paddr_t pte_templates_pa, + uint32_t options); +#else +sptm_return_t sptm_update_region( + sptm_root_pt_u root_pt_U, + sptm_aligned_vaddr_u aligned_vaddr_U, + sptm_page_count_u page_count_U, + sptm_managed_addr_u pte_templates_U, + uint32_t options); +#endif + +/** + * Structure representing the necessary information to update/unmap a single + * mapping within an arbitrary address space. An array of these entries will be + * passed into the disjoint operations to allow for mappings within multiple + * address spaces to be operated on within one SPTM call. + */ +typedef struct { + /* Physical address of the root page table. */ +#if !USE_UNSAFE_TYPES + sptm_paddr_t root_pt_paddr; +#else + sptm_root_pt_u root_pt_U; +#endif + + /** + * Virtual address of the mapping to update/unmap. The page table hierarchy + * will be walked using this VA to find the current page table entry. + */ +#if !USE_UNSAFE_TYPES + sptm_vaddr_t vaddr; +#else + sptm_aligned_vaddr_u vaddr_U; +#endif + + /** + * The mapping template used to replace the existing entry with. For update + * operations, the `mask` parameter will determine which bits within this + * entry will get copied over the existing entry. + * + * For unmap operations, only ARM_PTE_COMPRESSED and ARM_PTE_COMPRESSED_ALT + * are allowed to be set on invalid entries, so the mask is implicitly set + * to those two bits. + */ + sptm_pte_t pte_template; +} sptm_disjoint_op_t; + +/** + * Update a set of mappings to a single physical page across multiple address + * spaces. + * + * TODO: Add list of security checks which must be passed for the mappings to + * get updated. This should be explicit at the API level. + * + * @note This function can only operate on mappings to SPTM-managed memory. + * + * @note The number of mapping operations that can occur in a single call to + * this function is limited by SPTM_MAPPING_LIMIT so as to control latency + * when running within the SPTM's pre-emption disabled environment. + * + * @param paddr All existing mappings and new mappings must be mapping this + * physical address. The system will panic otherwise. + * @param disjoint_ops_pa Physical address to a structure that represents which + * mappings should be updated in which address spaces, + * and what the new mappings should be. All new mappings + * must be valid and contain the same physical address as + * the existing mapping, as well as match the [paddr]. + * @param num_mappings The number of requested mapping update operations passed + * in through [mapping_ops]. This can at most be + * SPTM_MAPPING_LIMIT. + * @param options The lower 8 bits is a bitmask representing which fields are + * being updated in this operation. Having a mask is required to + * be able to support multiple operations updating different + * fields within the same mapping. For instance, updating + * permissions at the same time as updating the memory type. + * You can also specify options like SPTM_UPDATE_DEFER_TLBI + * to modify the behavior of the function. + * + * @return SPTM_SUCCESS if the update succeeds and TLBIs are issued. + * SPTM_UPDATE_DELAYED_TLBI if the TLBIs are meant to be issued by the + * caller. + * + * @note An array containing the values of the PTEs before modification is returned + * through the per-CPU scratch page. The array is located at the beginning + * of the scratch page and contiguously contains the previous PTEs for each + * virtual address and root page table found in [disjoint_ops_pa]. + */ +#if !USE_UNSAFE_TYPES +sptm_return_t sptm_update_disjoint( + sptm_paddr_t paddr, + sptm_paddr_t disjoint_ops_pa, + unsigned int num_mappings, + uint32_t options); +#else +sptm_return_t sptm_update_disjoint( + sptm_managed_page_u paddr_U, + sptm_managed_addr_u disjoint_ops_U, + sptm_page_count_u page_count_U, + uint32_t options); +#endif + +/** + * Structure used to represent an entry in the cache attribute update ops + * table. + * + * The entries in a cache attribute updates ops table can either be a PAPT + * header or an sptm_disjoint_op_t. When representing an sptm_disjoint_op_t, + * it can be used the same way as a usual sptm_disjoint_op_t by functions like + * sptm_update_disjoint(). In fact, the function that consumes these entries, + * sptm_update_cache_attr(), calls into sptm_update_disjoint() for updating + * the mappings. + */ +typedef union { + /** + * Represents a header that contains information of the following disjoint + * ops for updating cache attributes of the mappings of a physical page. + */ + struct { + /* Physical address of the page. */ +#if !USE_UNSAFE_TYPES + sptm_paddr_t paddr; +#else + sptm_managed_page_u paddr_U; +#endif + + /** + * PAPT PTE template of the page to be updated. This field will + * be ignored if SPTM_UPDATE_SKIP_PAPT is passed in the [options] + * field below. + */ + sptm_pte_t papt_pte_template; + + /* Number of sptm_disjoint_op_t entries following this header. */ + unsigned int num_mappings; + + /** + * Options to be passed to the SPTM when updating the mappings + * associated with this physical address header. This is intended + * to be a mask of the regular SPTM_UPDATE_* flags. Note that if + * SPTM_UPDATE_SKIP_PAPT is not included in this field, then + * only SPTM_UPDATE_MAIR, SPTM_UPDATE_SH, and SPTM_UPDATE_DEFER_TLBI + * will be honored when updating the PAPT mapping; all other update + * flags will be ignored. + */ + uint32_t options; + } per_paddr_header; + + /** + * Represents an sptm_disjoint_op_t. See comments around sptm_disjoint_op_t + * for details. + */ + sptm_disjoint_op_t disjoint_op; +} sptm_update_disjoint_multipage_op_t; + +_Static_assert(sizeof(sptm_update_disjoint_multipage_op_t) == sizeof(sptm_disjoint_op_t), + "The size of sptm_update_disjoint_multipage_op_t has to be identical to sptm_disjoint_op_t " + "to ensure that parts of the structure can be directly passed into sptm_disjoint_op()."); + +/** + * Update multiple mappings, potentially spanning multiple physical pages. + * + * @note This function is different from the generic disjoint update function in + * that it allows mappings of multiple pages to be passed in via the + * same ops table, and it allows you to optionally update the PAPT mapping. + * + * @param multipage_ops_pa Physical address of the ops table. For each page + * whose mappings are to be updated, a PAPT header + * needs to precede all its disjoint ops, specifying + * the physical address of the page, the new PAPT + * PTE template, the number of mappings/disjoint + * ops following the header, and the update options + * to be used for the following sequence of disjoint + * ops. The following disjoint ops are basically the + * same as those consumed by sptm_update_disjoint(). + * See the definition of + * sptm_update_disjoint_multipage_op_t for more + * details about the layout of this array. + * + * @param num_entries The number of valid entries in the ops table, limited to + * SPTM_MAPPING_LIMIT. This includes all the PAPT headers + * and the disjoint ops. + * + * @return SPTM_SUCCESS if the update succeeds and TLBIs are issued. + * SPTM_UPDATE_DELAYED_TLBI if the TLB invalidations for any mapping + * were skipped due to the presence of SPTM_UPDATE_DEFER_TLBI in the + * update options for that mapping. + * + */ +#if !USE_UNSAFE_TYPES +sptm_return_t sptm_update_disjoint_multipage( + sptm_paddr_t multipage_ops_pa, + size_t num_entries); +#else +sptm_return_t sptm_update_disjoint_multipage( + sptm_managed_addr_u multipage_ops_U, + sptm_multipage_num_entries_u num_entries_U); +#endif + +/** + * Option that can be passed into sptm_unmap_region() as a flag denoting that + * compressed markings within invalid PTEs should get removed. + */ +#define SPTM_REMOVE_COMPRESSED 0x1 + +/** + * Remove a single mapping from an address space. + * + * TODO: Add list of security checks which must be passed for the mappings to + * get updated. This should be explicit at the API level. + * + * @param root_pt_paddr Physical address of the Root Page Table to remove the mapping + * from. + * @param start_vaddr Virtual address at which to remove the first mapping. + * @param num_mappings Number of mappings to remove. + * @param options The following options can be specified: + * - SPTM_REMOVE_COMPRESSED: Remove any compressed markers in invalid + * mappings. Without this option, compressed mappings won't be removed. + * + * @note While there is no direct return value, an array containing the values + * of the PTEs before modification is returned through the per-CPU scratch + * page. The array is located at the beginning of the scratch page and + * contiguously contains the previous PTEs starting with the one for + * [start_vaddr]. + */ +#if !USE_UNSAFE_TYPES +void sptm_unmap_region( + sptm_paddr_t root_pt_paddr, + sptm_vaddr_t start_vaddr, + unsigned int num_mappings, + uint32_t options); +#else +void sptm_unmap_region( + sptm_root_pt_u root_pt_U, + sptm_aligned_vaddr_u aligned_vaddr_U, + sptm_page_count_u page_count_U, + uint32_t options); +#endif + +/** + * Unmap a set of mappings (all mapping the same single physical page) across + * multiple address spaces. + * + * TODO: Add list of security checks which must be passed for the mappings to + * get updated. This should be explicit at the API level. + * + * @note This function can only operate on mappings to SPTM-managed memory. + * + * @note The number of mapping operations that can occur in a single call to + * this function is limited by SPTM_MAPPING_LIMIT so as to control latency + * when running within the SPTM's pre-emption disabled environment. + * + * @note Compressed markers in invalid mappings cannot be removed using this + * function. Use sptm_unmap_region() with the SPTM_REMOVE_COMRESSED option + * to remove compressed mappings. + * + * @param paddr All existing mappings must be mapping this physical address. The + * system will panic otherwise. + * @param disjoint_ops_pa Physical address to a structure that represents which + * mappings should be unmapped in which address spaces, + * and whether the invalid mappings should have flags set + * in them. The valid pte_template options are: + * ARM_PTE_EMPTY, ARM_PTE_COMPRESSED, + * ARM_PTE_COMPRESSED_ALT, or a combination of those + * three. + * @param num_mappings The number of requested mapping update operations passed + * in through [mapping_ops]. This can at most be + * SPTM_MAPPING_LIMIT. + * + * @note While there is no direct return value, an array containing the values + * of the PTEs before modification is returned through the per-CPU scratch + * page. The array is located at the beginning of the scratch page and + * contiguously contains the previous PTEs for each virtual address and + * root page table found in [disjoint_ops_pa]. + */ +#if !USE_UNSAFE_TYPES +void sptm_unmap_disjoint( + sptm_paddr_t paddr, + sptm_paddr_t disjoint_ops_pa, + unsigned int num_mappings); +#else +void sptm_unmap_disjoint( + sptm_managed_page_u paddr_U, + sptm_managed_addr_u disjoint_ops_U, + sptm_page_count_u page_count_U); +#endif + +/* Maximum size allowed for a shared region is 64GB */ +#define SPTM_MAX_SHARED_REGION_SIZE (1ULL << 36) + +/** + * Configure a shared region to be nested into one or more user address spaces. + * + * @note Once a page has been retyped to XNU_SHARED_ROOT_TABLE, this function must + * be called exactly once before the page may be used with sptm_nest_region()/ + * sptm_unnest_region(). + * + * @note Once this function has been called, sptm_nest_region() may be called any + * number of times with the same [shared_root_pt_paddr] but different user + * root tables. + * + * @note Each subsequent call to sptm_nest_region() against the same + * [shared_root_pt_paddr] may specify a different VA range to be nested, as long + * as the range is entirely encompassed by the [start_vaddr, start_vaddr + size) + * region specified here. + * + * @note The VA range defined by [start_vaddr, start_vaddr + size) cannot span + * a twig table boundary. + * + * @param shared_root_pt_paddr Physical address of the Root Page Table representing the + * region to be nested. This page must already have been + * retyped to XNU_SHARED_ROOT_TABLE. + * + * @param start_vaddr Page-aligned minimum virtual address at which nesting may begin. + * + * @param size Page-aligned maximum nesting size for this shared region. + */ +#if !USE_UNSAFE_TYPES +void sptm_configure_shared_region( + sptm_paddr_t shared_root_pt_paddr, + sptm_vaddr_t start_vaddr, + unsigned int page_count); +#else +void sptm_configure_shared_region( + sptm_shared_root_pt_u shared_root_pt_U, + sptm_aligned_vaddr_u aligned_vaddr_U, + sptm_page_count_u page_count_U); +#endif + +/** + * Copy a set of leaf tables from a Shared Root into a User Root. + * + * @note Each XNU_USER_ROOT_TABLE is only allowed to nest a single shared region. + * Only one nest operation can be performed for each XNU_USER_ROOT_TABLE, and + * this call will nest the entirety of the region specified by + * [start_vaddr, start_vaddr + size) as long as that region falls within + * the configured bounds of the shared region. + * + * @note sptm_configure_shared_region() must be called exactly once to configure + * [shared_root_pt_paddr] prior to any sptm_nest_region() call against the + * same [shared_root_pt_paddr]. + * + * @note For a given [shared_root_pt_paddr], all nesting operations across multiple + * user address spaces must specify some subset of the VA region specified + * in the prior call to sptm_configure_shared_region(). + * + * @note The VA range defined by [start_vaddr, start_vaddr + size) cannot span + * a twig table boundary. + * + * @note Both [start_vaddr] and [size] must be page-aligned. + * + * @param user_root_pt_paddr Physical address of the Root Page Table representing + * the user map. + * @param shared_root_pt_paddr Physical address of the Root Page Table representing + * the nested map. + * @param start_vaddr Virtual address at which to start nesting the region. + * @param size Size of the region to nest. + */ +#if !USE_UNSAFE_TYPES +void sptm_nest_region( + sptm_paddr_t user_root_pt_paddr, + sptm_paddr_t shared_root_pt_paddr, + sptm_vaddr_t start_vaddr, + unsigned int page_count); +#else +void sptm_nest_region( + sptm_user_root_pt_u user_root_pt_U, + sptm_shared_root_pt_u shared_root_pt_U, + sptm_aligned_vaddr_u aligned_vaddr_U, + sptm_page_count_u page_count_U); +#endif + +/** + * Remove a set of leaf tables from a User Root. + * + * @note The VA range defined by [start_vaddr, start_vaddr + size] must be covered + * by the specified shared region. + * + * @note Both [start_vaddr] and [size] must be page-aligned. + * + * @param user_root_pt_paddr Physical address of the Root Page Table representing + * the user map. + * @param shared_root_pt_paddr Physical address of the Root Page Table representing + * the nested map. + * @param start_vaddr Virtual address at which to start unnesting the region. + * @param size Size of the region to unnest. + */ +#if !USE_UNSAFE_TYPES +void sptm_unnest_region( + sptm_paddr_t user_root_pt_paddr, + sptm_paddr_t shared_root_pt_paddr, + sptm_vaddr_t start_vaddr, + unsigned int page_count); +#else +void sptm_unnest_region( + sptm_user_root_pt_u user_root_pt_U, + sptm_shared_root_pt_u shared_root_pt_U, + sptm_aligned_vaddr_u aligned_vaddr_U, + sptm_page_count_u page_count_U); +#endif + +/** + * Configure a given User Root PT. This changes the set of flags for a given + * User Root PT that determines what extra state needs to be switched at context + * switch time. + * + * @note This call cannot be made concurrently on the same User Root PT. + * + * @param root_pt_paddr Physical address of the Root PT to configure. + * Its associated FTE must be of type XNU_USER_ROOT_TABLE. + * @param flags Set of flags that determines the configuration of the Root PT. + * SPTM_ROOT_PT_FLAG_JIT: User Root is JIT-enabled. + * SPTM_ROOT_PT_FLAG_JOP: User Root is JOP-enabled. + * SPTM_ROOT_PT_FLAG_X86_64: User Root belongs to an x86_64-compatible process. + * SPTM_ROOT_PT_FLAG_TPRO: User Root is TPRO-enabled. + * @param mask Mask used to determine which flags need to be updated. When a given bit in [mask] is + * set, the corresponding bit in [flags] will be copied to the Root PT's flags. + */ +#if !USE_UNSAFE_TYPES +void sptm_configure_root( + sptm_paddr_t root_pt_paddr, + uint8_t flags, + uint8_t mask); +#else +void sptm_configure_root( + sptm_user_root_pt_u user_root_pt_U, + sptm_root_config_u flags_U, + sptm_root_config_u mask_U); +#endif + +/** + * Switch the current Root PT for the invoking CPU. + * + * The caller may also request that SPTM override one or more user Root PT flags when + * configuring the CPU. These overrides are not written back to the Root PT, + * so they only take effect until the next `sptm_switch_root` call on this CPU. + * + * @note The ASID to be programmed is inferred from the Root Page Table FTE. + * + * @param root_pt_paddr Physical address of the Root PT to switch to. + * Its associated FTE must be of type SPTM_KERNEL_ROOT_TABLE or + * XNU_USER_ROOT_TABLE. + * @param override_flags Set of flags that override the configuration stored in + * the user Root PT. This value must be 0 when [root_pt_addr] + * is of type SPTM_KERNEL_ROOT_TABLE. + * @param override_mask Mask used to determine which user Root PT flags are + * overridden. When a given bit in [override_mask] is set, + * the corresponding bit will be taken from + * [override_flags] instead of the Root PT's flags. This + * value must be 0 when [root_pt_addr] is of type + * SPTM_KERNEL_ROOT_TABLE. + * + * @return SPTM_SUCCESS or a combination of SPTM_SWITCH_RCTX_FLUSH and + * SPTM_SWITCH_ASID_TLBI_FLUSH when applicable. See the definition + * of these values for details. + */ +#if !USE_UNSAFE_TYPES +sptm_return_t sptm_switch_root( + sptm_paddr_t root_pt_paddr, + uint8_t override_flags, + uint8_t override_mask); +#else +sptm_return_t sptm_switch_root( + sptm_root_pt_u root_pt_U, + sptm_root_config_u override_flags_U, + sptm_root_config_u override_mask_U); +#endif + +/** + * Perform a guest virtual address to intermediate physical address translation. + * + * Enables the guest translation regime with the provided stage 2 translation + * table and performs a guest kernel mode stage 1 address translation with read permissions. + * After performing the address translation this function disables the guest translation + * regime. + * + * @note The appropriate guest stage 1 address translation regime registers (TTBRx_EL12, etc.) + * must be loaded by the hypervisor before calling this function. + * + * @param root_pt_paddr Physical address of the Root PT to switch to. + * Its associated FTE must be of type XNU_STAGE2_ROOT_TABLE. + * @param gva The guest virtual address to perform stage 1 address translation on. + * + * @return The result of the stage 1 address translation is an intermediate + * physical address (IPA), or UINT64_MAX if the address translation fails. + */ +#if !USE_UNSAFE_TYPES +uint64_t sptm_guest_va_to_ipa(sptm_paddr_t stage2_root_pt_paddr, uint64_t gva); +#else +uint64_t sptm_guest_va_to_ipa(sptm_stage2_root_pt_u stage2_root_pt_U, uint64_t gva); +#endif + +/** + * enumeration of `op` values accepted by sptm_guest_stage1_tlb_op() + * `SPTM_GUEST_S1_TLB_OP_` results in `TLBI ` + * + * These values must match those in the PMAP_S1_TLB_OP_- definitions in + * XNU's pmap.h. + * + * (Note that these are the inner-shareable TLBI instructions trapped by + * HCR_EL2.TTLB=1) + */ +typedef enum: uint8_t { + SPTM_GUEST_S1_TLB_OP_ASIDE1IS, + SPTM_GUEST_S1_TLB_OP_VAE1IS, + SPTM_GUEST_S1_TLB_OP_VAAE1IS, + SPTM_GUEST_S1_TLB_OP_VAALE1IS, + SPTM_GUEST_S1_TLB_OP_VALE1IS, + SPTM_GUEST_S1_TLB_OP_VMALLE1IS, + SPTM_GUEST_S1_TLB_OP_RVAE1IS, + SPTM_GUEST_S1_TLB_OP_RVAAE1IS, + SPTM_GUEST_S1_TLB_OP_RVAALE1IS, + SPTM_GUEST_S1_TLB_OP_RVALE1IS, + SPTM_GUEST_S1_TLB_OP_INVALID, +} sptm_guest_stage1_tlb_op_t; + +/** + * Perform a guest stage 1 TLB invalidate operation. + * + * Enables the guest translation regime with the provided stage 2 translation + * table and performs a stage 1 TLB invalidate operation. After performing the + * requested TLB operation, this function disables the guest translation regime. + * + * @note The appropriate guest stage 1 address translation regime registers (TTBRx_EL12, etc.) + * must be loaded by the hypervisor before calling this function. + * + * @param root_pt_paddr Physical address of the Root PT to switch to. + * Its associated FTE must be of type XNU_STAGE2_ROOT_TABLE. + * @param op The type of stage 1 TLB operation requested. + * @param param The argument, if necessary, to the TLB operation requested. + */ +#if !USE_UNSAFE_TYPES +void sptm_guest_stage1_tlb_op( + sptm_paddr_t stage2_root_pt_paddr, + sptm_guest_stage1_tlb_op_t op, + uint64_t param); +#else +void sptm_guest_stage1_tlb_op( + sptm_stage2_root_pt_u stage2_root_pt_U, + sptm_guest_stage1_tlb_op_t op, + uint64_t param); +#endif + +/** + * Perform a guest stage 2 TLB invalidate operation. + * + * Enables the guest translation regime with the provided stage 2 translation + * table and performs a stage 2 TLB invalidate operation for the given IPA range. + * After performing the requested TLB operation, this function disables the guest + * translation regime. + * + * @note This function performs the architecturally required guest stage 1 + * TLB invalidation as well. + * + * @param root_pt_paddr Physical address of the Root PT to switch to. + * Its associated FTE must be of type XNU_STAGE2_ROOT_TABLE. + * @param aligned_vaddr The starting page aligned IPA of the region being invalidated. + * @param num_mappings The number of pages for the IPA range of translations being invalidated. + * @param last_level_only Whether the invalidation is for the leaf level or all levels + * of the translation table. + */ +#if !USE_UNSAFE_TYPES +void sptm_guest_stage2_tlb_op( + sptm_paddr_t stage2_root_pt_paddr, + sptm_vaddr_t aligned_vaddr, + unsigned int num_mappings, + bool last_level_only); +#else +void sptm_guest_stage2_tlb_op( + sptm_stage2_root_pt_u stage2_root_pt_U, + sptm_aligned_vaddr_u aligned_vaddr_U, + sptm_page_count_u num_mappings, + bool last_level_only); +#endif + +/** + * Exit a guest VCPU EL0/EL1 translation regime and restores the normal EL0/EL2 translation + * regime for host OS operation. + * + * @note This call is the only way out of the special dispatch state machine state + * that disallows other SPTM calls. + * + * @param root_pt_paddr Physical address of the Root PT to switch from. + * Its associated FTE must be of type XNU_STAGE2_ROOT_TABLE. + */ +#if !USE_UNSAFE_TYPES +void sptm_guest_exit(sptm_paddr_t stage2_root_pt_paddr); +#else +void sptm_guest_exit(sptm_stage2_root_pt_u stage2_root_pt_U); +#endif + +/** + * Set up the EL0/EL1 translation regime and dispatch a guest VCPU. This call + * performs an sptm_guest_enter to setup the guest translation regime then loads + * all the non-banked system registers, NEON registers and GPRs required to start + * the guest VCPU. This call then performs a GEXIT to the guest VCPU and does not + * return. + * + * @note Due to special handling, this call moves the dispatch state machine + * into a state which does not allow any SPTM calls besides + * sptm_exit_guest() to be called to prevent any TLB maintenence while + * guest VCPU EL0/EL1 translation regime is enabled. + * + * @param guest_state_paddr Physical address of the guest dispatch structure containing all the + * info needed to dispatch the guest VPCU. + */ +#if !USE_UNSAFE_TYPES +void sptm_guest_dispatch(sptm_paddr_t guest_state_paddr); +#else +void sptm_guest_dispatch(sptm_managed_addr_u guest_state_paddr_U); +#endif + +#if HAS_APPLE_PAC +/** + * Sign a pointer using the user keys. + * + * @param value Pointer to sign. + * @param key Name of the key to sign the pointer with. + * @param discriminator Value to use as a diversifier. + * @param jop_key JOP key to use to sign the pointer. + * + * @return Signed pointer. + */ +void *sptm_sign_user_pointer( + void *value, + ptrauth_key key, + uint64_t discriminator, + uint64_t jop_key); + +/** + * Authenticate a pointer using the user keys. + * + * @note On failure, this function does not poison the pointer. Instead, it + * simply returns SPTM_AUTH_FAILURE, and the caller is responsible for + * doing the poisoning. + * + * @param value Pointer to authenticate. + * @param key Name of the key to authenticate the pointer with. + * @param discriminator Value to use as a diversifier. + * @param jop_key JOP key to use to authenticate the pointer. + * + * @return Authenticated pointer on success. + * SPTM_AUTH_FAILURE on failure. + */ +#define SPTM_AUTH_FAILURE (void *)-1 +void *sptm_auth_user_pointer( + void *value, + ptrauth_key key, + uint64_t discriminator, + uint64_t jop_key); +#endif /* HAS_APPLE_PAC */ + +/* The SPTM sysreg RW API is only exposed in DEVELOPMENT || DEBUG builds. */ +#if DEVELOPMENT + +/** + * SPTM-managed register identifiers. + * Test register documentation : for test purposes, the register + * SPTM_REG_PROD_TRC_STRM_BASE0_GL2 is used internally with a custom write + * protection mask to verify that the write mask check procedure works correctly. + * This feature is only enabled when BOARD_CONFIG_USERSPACE_TEST_ENV is defined, + * and should never be observed by xny. + */ +__enum_closed_decl(sptm_regid_t, uint8_t, { + SPTM_REG_VBAR_GL1 = 0, + + /** + * The following member is here to represent the number of supported + * register IDs. It does not represent a valid register ID. + */ + SPTM_REGS_NUM +}); + +/** + * Read the content of an sptm-managed register. + * + * @note If @regid is invalid, an sptm violation is generated. + * + * @note If @regid corresponds to a register that is not accessible in the + * current CPU (ex : accessing SPTM_REG_PROD_TRC_STRM_BASE0_GL2 in a Coll E CPU), + * a fault will occur. + * + * @param regid Identifier of the register to read. + * + * @return The content of the register. + */ +uint64_t +sptm_reg_read(sptm_regid_t regid); + +/** + * Write the content of an sptm-managed register. + * + * @note If regid is invalid, an sptm violation is generated. + * + * @note If the write modifies non-writeable bits, an sptm violation + * is generated. + * + * @param regid Identifier of the register to read. + * @param new_value Value to write. + */ +void +sptm_reg_write(sptm_regid_t regid, uint64_t new_value); + +/** + * Maps all SK_DOMAIN pages into PAPT with permissions that allow XNU to read + * the memory. + * + * @note This is required for on-device coredump of secure domain. + * + * @note Called late from XNU panic path when the system is running in single + * core mode with interrupts disabled (world is stopped). + */ +void +sptm_map_sk_domain(void); + +#endif /* DEVELOPMENT */ + +/** + * XNU must tell SPTM the vaddr of the SPTM exception return handler via this + * function. When handling an exception, SPTM will insert this address in the + * kernel mode ELR before handing control to XNU's exception vectors. When XNU + * is done handling the exception, it will ERET to this address. The exception + * return handler will then hand control back to SPTM by performing a GENTER + * letting SPTM know to resume where it was interrupted. + * + * @param return_addr The virtual address of XNU's SPTM exception return handler. + */ +void sptm_register_xnu_exc_return(sptm_vaddr_t return_addr); + +/** + * Register a CPU. + * + * This function is intended for XNU to call into as many times as CPUs are + * supported by the system on the boot CPU. This must be done before machine + * lockdown, the point at which the topology is set in stone. + * + * @note Order of registration determines the logical CPU ID for each of the + * CPUs, since they are allocated sequentially. + * + * @note The boot CPU must always be registered first. This is required because + * the SPTM assumes that logical ID 0 corresponds to the boot CPU. + * + * @param physical_id Should match the contents of MPIDR_EL1 for the CPU being + * registered. The SPTM will only bring up CPUs that have been + * registered by XNU, and to enforce this, it ensures that + * [physical_id] matches the real one. + */ +void sptm_register_cpu(uint64_t physical_id); + +/** + * Slides an XNU segment, either partially or completely. + * + * This function is intended for XNU to call into before lockdown occurs, and is required + * to make sure that memory that gets jettisoned is not mapped using CTRR-protected + * page tables. + * + * @note The SPTM decides where in the physical aperture the requested region is remapped; + * all that it guarantees is that the PTEs that map it can be modified post-lockdown via + * the various SPTM-provided page table management APIs. + * + * @note The SPTM enforces that only certain segments can be slid. This is to prevent XNU from + * sliding arbitrary memory, potentially memory that doesn't even belong to it. + * + * @param target_papt_start_U Current PAPT address of the memory that needs to be slid. + * @param num_mappings_U Number of frames that need to be remapped. + */ +#if !USE_UNSAFE_TYPES +void sptm_slide_region(sptm_papt_t target_papt_start, uint32_t num_mappings); +#else +void sptm_slide_region(sptm_papt_u target_papt_start_U, sptm_page_count_u num_mappings_U); +#endif + +/** + * Obtain the SPTM logical CPU ID associated with a given physical ID. + * + * This function is intended for XNU to call during early boot to associate its + * logical CPU IDs with per-CPU fields that are used by both SPTM and XNU. An + * example of this is the scratch page. + * + * @note This function is not performant, and XNU is expected to cache its + * result in the event that it requires this information on a hot path. + * + * @param physical_id Should match the contents of MPIDR_EL1 for the CPU being + * searched. + * + * @return The SPTM logical CPU ID associated with [physical_id]. + */ +uint16_t sptm_cpu_id(uint64_t physical_id); + +/** + * Request SPTM to write to a PIO register on a XNU_PROTECTED_IO page. + * + * This function queries the pmap-io-ranges table and the pmap-io-filter table + * to find out if the access defined by `paddr` and `width` is allowed. It + * performs the write if the access is allowed, but it will throw violations + * or panic if it is not. It is the caller's responsibility to request an + * allowed write. + * + * @param paddr The physical address to write to. It has to be aligned to + * `width` bytes. + * @param value The value to write. + * @param width The width of the write. It has to be 1, 2, 4 or 8. + */ +#if !USE_UNSAFE_TYPES +void sptm_iofilter_protected_write(sptm_paddr_t paddr, uint64_t value, uint64_t width); +#else +void sptm_iofilter_protected_write(sptm_io_filter_protected_paddr_u paddr, uint64_t value, sptm_io_filter_protected_write_size_u width); +#endif + +/** + * Enters TXM, invoking the function identified by the endpoint ID passed in, + * using arguments passed in via a sptm_call_regs_t structure. + * + * @param endpoint_id The function to invoke in the TXM domain. + * @param argsp A pointer to a structure containing the arguments for the + * specified endpoint ID function. + * + * @return The function's return depends on the endpoint ID passed in, and must + * be interpreted in that context. + */ +uint64_t txm_enter(uint32_t endpoint_id, sptm_call_regs_t *argsp); + +/** + * Entry point into TXM which is explicitly used to resume from an interrupt + * that interrupted during execution of the TXM. + * + * @note This function will never return. When TXM completes its call it will + * return to the original entry point into TXM (not this resume entry + * point). + * + * @param thread_stack_paddr The stack of the TXM thread to resume. + */ +__attribute__((noreturn)) void txm_resume(uint64_t thread_stack_paddr); + +/** + * Called by XNU after returning from an exception on a thread that was + * interrupted while running SPTM code. + * + * @note This function will never return. SPTM will resume operation from where + * it was interrupted. + */ +__attribute__((noreturn)) void sptm_resume_from_exception(void); + +/** + * Entry point into SK which is explicitly used to resume from an interrupt + * that interrupted during execution of the SK. + * + * @note This function will never return. When SK completes its call it will + * return to the original entry point into SK (not this resume entry + * point). + * + * @note XNU will tell SK which thread to resume via a shared memory + * interface, hence no parameters to this call. + */ +__attribute__((noreturn)) void sk_resume(void); + +/** + * Enters the SK, invoking the function identified by the endpoint ID passed in, + * using arguments passed in via a sptm_call_regs_t structure. + * + * @param endpoint_id The function to invoke in the SK domain. + * @param argsp A pointer to a structure containing the arguments for the + * specified endpoint ID function. + * + * @return The function's return depends on the endpoint ID passed in, and must + * be interpreted in that context. + */ +uint64_t sk_enter(uint32_t endpoint_id, sptm_call_regs_t *argsp); + + +/** + * Libsptm library function for checking whether an SPTM operation on a given + * page is in-flight. + * + * @note This function only works on SPTM-managed memory. + * + * @param paddr The physical address of the managed page against which to check + * for in-flight operations. + * @param is_inflightp An output parameter used to store whether or not the page + * has an in-flight SPTM operation. This will only get set + * when LIBPSPTM_SUCCESS is returned. + * + * @return LIBPSPTM_SUCCESS if the passed in page is SPTM-managed and + * [is_inflightp] was updated appropriately. + * LIBSPTM_INVALID_ARG if [is_inflightp] is NULL. + * LIBSPTM_FAILURE if the passed in page is not SPTM-managed memory. + */ +libsptm_error_t sptm_check_inflight(sptm_paddr_t paddr, bool *is_inflightp); + +/** + * Libsptm library function for querying the mapping count of a page table page. + * + * @note This function only works on SPTM-managed memory typed for use as an + * SPTM or XNU page table or root table, including shared tables. + * + * @param table_paddr The physical address of the page table page against which + * to query the mapping count. + * @param mapping_countp An output parameter used to store the mapping count. + * This will only be populated if LIBSPTM_SUCCESS is returned. + * + * @return LIBSPTM_SUCCESS if the passed in page is of an appropriate type and + * [mapping_countp] was updated appropriately. + * LIBSPTM_INVALID_ARG if [mapping_countp] is NULL. + * LIBSPTM_FAILURE if the passed in page is not SPTM-managed memory. + * LIBSPTM_TYPE_MISMATCH if the passed in page is not of a supported page + * table type. + */ +libsptm_error_t sptm_get_table_mapping_count(sptm_paddr_t table_paddr, uint16_t *mapping_countp); + +/** + * Prefetch the FTE associated with paddr to L1 cache. + * + * @param paddr The physical address whose associated FTE to prefetch. + * + * @return LIBSPTM_SUCCESS on successful prefetch. + * LIBSPTM_FAILURE if there's no FTE associated with paddr. + */ +libsptm_error_t sptm_prefetch_fte(sptm_paddr_t paddr); + +/** + * Copy the number of requested traces from the per-CPU trace buffer into XNU memory. + * + * @note [num_traces_copied] might be smaller than [max_num_traces]. This will happen if the number of traces + * available is smaller than [max_num_traces]. + * + * @note This function copies traces starting from the oldest one. If the number of traces in the target trace buffer is larger + * than [max_num_traces], only the oldest [max_num_traces] will be copied. + * + * @note Since the SPTM will overwrite old traces when the trace buffer is full, this function must be called often + * enough with large enough buffers in order for the SPTM to not drop old traces. + * + * @param sptm_cpu_id CPU ID of the CPU trace buffer to target. + * @param dst_buffer Pointer to the buffer where the traces should be copied into. The underlying memory + * must be XNU-writable. + * @param max_num_traces Maximum number of traces that the caller wants to get copied into the buffer. + * @param read_index Pointer to the read index associated with the CPU that owns the trace buffer being targeted. + * This will be updated upon consuming traces. + * @param num_traces_copied Pointer where the library will store the actual number of traces that were copied. + * + * @return LIBPSPTM_SUCCESS if the passed in pointers were successfully set. + * LIBSPTM_INVALID_ARG if either of the passed in pointers is NULL. + */ +libsptm_error_t +sptm_trace_copy_traces( + uint16_t sptm_cpu_id, + sptm_trace_t *dst_buffer, + unsigned int max_num_traces, + uint64_t *read_index, + unsigned int *num_traces_copied); + +/** + * Returns the number of new traces since [prev_state]. The SPTM populates [prev_state] every time this function + * gets called, and XNU should pass that value in a subsequent call to calculate the delta. + * + * @note It is expected that in some cases XNU will call this function for the sole purpose of capturing [prev_state], + * prior to a subsequent call to get the number of traces that were generated between both calls. In such cases, + * XNU is free to ignore [num_new_traces]. + * + * @param sptm_cpu_id CPU ID of the CPU trace buffer to target. + * @param prev_state Pointer to where the library will store a handle that XNU can pass on a subsequent call + * to obtain the delta for the number of traces generated. + * @param num_new_traces Pointer to where the library will store the number of traces that have been generated since + * the last call. + * + * @return LIBPSPTM_SUCCESS if the passed in pointers were successfully set. + * LIBSPTM_INVALID_ARG if either of the passed in pointers is NULL. + */ +libsptm_error_t +sptm_trace_num_new_traces( + uint16_t sptm_cpu_id, + uint64_t *prev_state, + unsigned int *num_new_traces); + +/** + * Retrieve the saved XNU state for a CPU which is in the panic loop. + * + * @param sptm_logical_cpu_id CPU ID of the CPU to target. + * @param regp Pointer to return saved registers into. + * + * @return LIBSPTM_SUCCESS if the passsed in pointers were successfully set, + * LIBSPTM_INVALID_ARG if the passed in pointer is NULL or the + * CPU ID requested is invalid, + * LIBSPTM_FAILURE if the requested CPU is not in the panic loop. + */ +libsptm_error_t +sptm_copy_callee_saved_state( + uint64_t sptm_logical_cpu_id, + xnu_saved_registers_t *regp); + +#endif /* __ASSEMBLER__ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/string.h b/Frameworks/Kernel.framework/Versions/A/Headers/string.h index f3c418de..d6702c91 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/string.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/string.h @@ -49,8 +49,10 @@ #ifndef _STRING_H_ #define _STRING_H_ 1 -#include #include +#include + +#include __BEGIN_DECLS @@ -75,7 +77,7 @@ __BEGIN_DECLS * * void bzero(void *dst, size_t n); * void *memset(void *s, int c, size_t n); - * int memset_s(void *s __sized_by(smax), size_t smax, int c, size_t n); + * int memset_s(void *s, size_t smax, int c, size_t n); * * void bcopy(const void *src, void *dst, size_t n); * void *memcpy(void *dst, const void *src, size_t n); @@ -89,20 +91,31 @@ __BEGIN_DECLS * * int strcmp(const char *s1, const char *s2); * int strncmp(const char *s1, const char *s2, size_t n); - * int strprefix(const char *s1, const char *s2) __stateful_pure; + * int strlcmp(const char *s1, const char *s2, size_t n); + * int strbufcmp(const char *s1, size_t n1, const char *s2, size_t n2); + * int strprefix(const char *s1, const char *s2); * int strcasecmp(const char *s1, const char *s2); * int strncasecmp(const char *s1, const char *s2, size_t n); + * int strlcasecmp(const char *s1, const char *s2, size_t n); + * int strbufcasecmp(const char *s1, size_t n1, const char *s2, size_t n2); * * char *strchr(const char *s, int c); * char *strrchr(const char *s, int c); * char *strnstr(const char *s, const char *find, size_t slen); * * size_t strlcpy(char *dst, const char *src, size_t n); + * const char *strbufcpy(char *dst, size_t dstlen, const char *src, size_t srclen); * size_t strlcat(char *dst, const char *src, size_t n); + * const char *strbufcat(char *dst, size_t dstlen, const char *src, size_t srclen); + * char * __null_terminated strlcpy_ret(char *dst, const char *src, size_t n); */ +#pragma mark _FORTIFY_SOURCE helpers + /* + * If _FORTIFY_SOURCE is undefined, it is assumed to be 1. + * * _FORTIFY_SOURCE > 0 will enable checked memory/string functions. * * _FORTIFY_SOURCE_STRICT will enable stricter checking (optional) @@ -110,48 +123,205 @@ __BEGIN_DECLS * past the end of a struct member. */ #if KASAN -# define XNU_USE_CHK_BUILTIN(n) 0 -# define XNU_USE_STRING_BUILTIN(n) 0 +# define __XNU_FORTIFY_SOURCE 0 /* kasan is a superset */ #elif defined (_FORTIFY_SOURCE) && _FORTIFY_SOURCE == 0 -# define XNU_USE_CHK_BUILTIN(n) 0 -# define XNU_USE_STRING_BUILTIN(n) __has_builtin(__builtin_##n) -#elif __has_ptrcheck -# define XNU_USE_CHK_BUILTIN(n) 0 -# define XNU_USE_STRING_BUILTIN(n) __has_builtin(__builtin_##n) -#elif defined(__cplusplus) && __has_include(<__xnu_libcxx_sentinel.h>) -# define XNU_USE_CHK_BUILTIN(n) 0 -# define XNU_USE_STRING_BUILTIN(n) 0 +# define __XNU_FORTIFY_SOURCE 0 /* forcefully disabled */ #elif XNU_KERNEL_PRIVATE || defined(_FORTIFY_SOURCE_STRICT) -# define XNU_USE_CHK_BUILTIN(n) __has_builtin(__builtin___##n##_chk) -# define XNU_USE_STRING_BUILTIN(n) __has_builtin(__builtin_##n) -# define __xnu_bos_default(ptr) __xnu_bos_strict(ptr) +# define __XNU_FORTIFY_SOURCE 2 #else -# define XNU_USE_CHK_BUILTIN(n) __has_builtin(__builtin___##n##_chk) -# define XNU_USE_STRING_BUILTIN(n) __has_builtin(__builtin_##n) -# define __xnu_bos_default(ptr) __xnu_bos_loose(ptr) +# define __XNU_FORTIFY_SOURCE 1 #endif +/* + * The overloadable attribute is load bearing in two major ways: + * - __builtin_${function} from ${function} would be infinite recursion and UB, + * - we need to still expose the regular prototype for people wanting to take + * its address. + */ +#define __xnu_string_inline \ + static inline __attribute__((__always_inline__, __overloadable__)) + +/* + * We want to allow certain functions like strlen() to constant fold + * at compile time (such as strlen("foo")). + * + * In order to do so, we need an overload that has a similar looking + * signature but is different from the regular function so that it can + * call its matching builtin without causing UB due to inifinite recursion. + * We abuse that the pass_object_size class of attributes gives us + * precisely that semantics. + */ +#define __xnu_force_overload __xnu_pass_object_size + +/* + * The object_size extension defines two kinds of size: the "struct size" and + * the "member size". The "struct size" is the size of the buffer from the + * starting address to the end of the largest enclosing object. The "member + * size" is the size of the buffer from the starting address to the end of the + * immediately enclosing array. For instance, given this: + * + * struct foo { + * char a[20]; + * char b[20]; + * } my_foo; + * + * The "struct size" for &my_foo.a[10] is 30 (`sizeof(struct foo) - + * offsetof(struct foo, a[10])`), and the "member size" for it is 10 + * (`sizeof(my_foo.a) - 10`). + * + * In general, you should use the member size for string operations (as it is + * always a mistake to go out of bounds of a char buffer with a string + * operation) and the struct size for bytewise operations (like bcopy, bzero, + * memset, etc). The object_size extension is intended to provide _some_ bounds + * safety at a low engineering cost, and various patterns intentionally + * overflowing from individual fields with bytewise operations have + * historically been tolerated both by engineers and the compiler (despite + * probably being undefined). + * + * As an important side note, -fbounds-safety does not allow naïvely + * overflowing from individual fields. -fbounds-safety bounds checks are always + * equivalent to checks against the member size. + */ + #if __has_builtin(__builtin_dynamic_object_size) -# define __xnu_bos_loose(ptr) __builtin_dynamic_object_size(ptr, 0) -# define __xnu_bos_strict(ptr) __builtin_dynamic_object_size(ptr, 1) +# define __xnu_pass_struct_size __attribute__((__pass_dynamic_object_size__(0))) +# define __xnu_pass_member_size __attribute__((__pass_dynamic_object_size__(1))) +# define __xnu_struct_size(ptr) __builtin_dynamic_object_size(ptr, 0) +# define __xnu_member_size(ptr) __builtin_dynamic_object_size(ptr, 1) +#else +# define __xnu_pass_struct_size __attribute__((__pass_object_size__(0))) +# define __xnu_pass_member_size __attribute__((__pass_object_size__(1))) +# define __xnu_struct_size(ptr) __builtin_object_size(ptr, 0) +# define __xnu_member_size(ptr) __builtin_object_size(ptr, 1) +#endif + +#if __XNU_FORTIFY_SOURCE == 0 || !__has_attribute(diagnose_if) +# define __xnu_struct_size_precondition(ptr, size, message) +# define __xnu_member_size_precondition(ptr, size, message) #else -# define __xnu_bos_loose(ptr) __builtin_object_size(ptr, 0) -# define __xnu_bos_strict(ptr) __builtin_object_size(ptr, 1) +# define __xnu_struct_size_precondition(ptr, size, message) \ + __attribute__((__diagnose_if__(__xnu_struct_size(ptr) < (size), message, "error"))) +# define __xnu_member_size_precondition(ptr, size, message) \ + __attribute__((__diagnose_if__(__xnu_member_size(ptr) < (size), message, "error"))) #endif +#if __XNU_FORTIFY_SOURCE > 1 +# define __xnu_object_size_precondition(...) \ + __xnu_member_size_precondition(__VA_ARGS__) +# define __xnu_object_size_check(...) \ + __xnu_member_size_check(__VA_ARGS__) +# define __xnu_pass_object_size __xnu_pass_member_size +#else +# define __xnu_object_size_precondition(...) \ + __xnu_struct_size_precondition(__VA_ARGS__) +# define __xnu_object_size_check(...) \ + __xnu_struct_size_check(__VA_ARGS__) +# define __xnu_pass_object_size __xnu_pass_struct_size +#endif + +#if __XNU_FORTIFY_SOURCE == 0 || __has_ptrcheck +#define __xnu_struct_size_check(ptr, size, how) ((void)0) +#define __xnu_member_size_check(ptr, size, how) ((void)0) +#else +__xnu_string_inline __cold __dead2 void +__xnu_fortify_trap_write(void) +{ + ml_fatal_trap(0xbffe); /* XNU_HARD_TRAP_STRING_CHK */ +} + +__xnu_string_inline __cold void +__xnu_fortify_trap_read(void) +{ + /* for now do not emit read traps yet */ +#if 0 + ml_recoverable_trap(0xfffe); /* XNU_SOFT_TRAP_STRING_CHK */ +#endif +} + +#define __xnu_struct_size_check(ptr, size, how) ({ \ + if (__xnu_struct_size(ptr) < (size)) { \ + __xnu_fortify_trap_ ## how(); \ + } \ +}) +#define __xnu_member_size_check(ptr, size, how) ({ \ + if (__xnu_member_size(ptr) < (size)) { \ + __xnu_fortify_trap_ ## how(); \ + } \ +}) +#endif + +/* + * Verifies at compile-time that an expression is an array (of any type). + */ +#if __has_builtin(__builtin_types_compatible_p) +#define __xnu_is_array(A) __builtin_types_compatible_p(typeof((A)[0])[], typeof(A)) +#else +#define __xnu_is_array(A) 1 +#endif +#define __xnu_assert_is_array(A, MSG) _Static_assert(__xnu_is_array(A), MSG) + +#define __xnu_count_args1(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, N, ...) N +#define __xnu_count_args(...) \ + __xnu_count_args1(, ##__VA_ARGS__, _9, _8, _7, _6, _5, _4, _3, _2, _1, _0) + +#define __xnu_argc_overload1(base, N, ...) __CONCAT(base, N)(__VA_ARGS__) +#define __xnu_argc_overload(base, ...) \ + __xnu_argc_overload1(base, __xnu_count_args(__VA_ARGS__), ##__VA_ARGS__) + #pragma mark memory functions + extern int bcmp(const void *s1 __sized_by(n), const void *s2 __sized_by(n), size_t n) __stateful_pure; -#if XNU_USE_STRING_BUILTIN(bcmp) -#define bcmp(s1, s2, n) __builtin_bcmp(s1, s2, n) + +__xnu_string_inline __stateful_pure +int +bcmp( + const void *const s1 __xnu_pass_struct_size __sized_by(n), + const void *const s2 __xnu_pass_struct_size __sized_by(n), + size_t n) +__xnu_struct_size_precondition(s1, n, "read overflow (first argument)") +__xnu_struct_size_precondition(s2, n, "read overflow (second argument)") +{ + extern int __xnu_bcmp( + const void * __sized_by(n), + const void * __sized_by(n), + size_t n) __asm("_bcmp"); + + __xnu_struct_size_check(s1, n, read); + __xnu_struct_size_check(s2, n, read); +#if __has_builtin(__builtin_bcmp) + return __builtin_bcmp(s1, s2, n); +#else + return __xnu_bcmp(s1, s2, n); #endif +} extern int memcmp(const void *s1 __sized_by(n), const void *s2 __sized_by(n), size_t n) __stateful_pure; -#if XNU_USE_STRING_BUILTIN(memcmp) -#define memcmp(s1, s2, n) __builtin_memcmp(s1, s2, n) + +__xnu_string_inline __stateful_pure +int +memcmp( + const void *const s1 __xnu_pass_struct_size __sized_by(n), + const void *const s2 __xnu_pass_struct_size __sized_by(n), + size_t n) +__xnu_struct_size_precondition(s1, n, "read overflow (first argument)") +__xnu_struct_size_precondition(s2, n, "read overflow (second argument)") +{ + extern int __xnu_memcmp( + const void *__sized_by(n), + const void *__sized_by(n), + size_t n) __asm("_memcmp"); + + __xnu_struct_size_check(s1, n, read); + __xnu_struct_size_check(s2, n, read); +#if __has_builtin(__builtin_memcmp) + return __builtin_memcmp(s1, s2, n); +#else + return __xnu_memcmp(s1, s2, n); #endif +} @@ -160,120 +330,556 @@ extern int timingsafe_bcmp(const void *b1 __sized_by(n), const void *b2 __sized_ extern void bzero(void *s __sized_by(n), size_t n); -#if XNU_USE_STRING_BUILTIN(bzero) -#define bzero(s, n) __builtin_bzero(s, n) + +__xnu_string_inline +void +bzero( + void *const s __xnu_pass_struct_size __sized_by(n), + size_t n) +__xnu_struct_size_precondition(s, n, "write overflow") +{ + extern void __xnu_bzero( + const void *__sized_by(n), + size_t n) __asm("_bzero"); + + __xnu_struct_size_check(s, n, write); +#if __has_builtin(__builtin_bzero) + __builtin_bzero(s, n); +#else + __xnu_bzero(s, n); #endif +} extern void *memset(void *s __sized_by(n), int c, size_t n); +__xnu_string_inline +void * +__sized_by(n) +memset( + void *const s __xnu_pass_object_size __sized_by(n), + int c, + size_t n) +__xnu_object_size_precondition(s, n, "write overflow") +{ + extern void __xnu_memset( + void *__sized_by(n), + int, + size_t n) __asm("_memset"); + + __xnu_object_size_check(s, n, write); +#if __has_builtin(__builtin_memset) + return __builtin_memset(s, c, n); +#else + return __xnu_memset(s, c, n); +#endif +} + extern int memset_s(void *s __sized_by(smax), size_t smax, int c, size_t n); -extern void *memcpy(void *dst __sized_by(n), const void *src __sized_by(n), size_t n); -#if XNU_USE_CHK_BUILTIN(memcpy) -#define memcpy(dst, src, n) __builtin___memcpy_chk(dst, src, n, __xnu_bos_default(dst)) -#define __nochk_memcpy(dst, src, n) __builtin___memcpy_chk(dst, src, n, __xnu_bos_loose(dst)) -#elif XNU_USE_STRING_BUILTIN(memcpy) -#define memcpy(dst, src, n) __builtin_memcpy(dst, src, n) -#define __nochk_memcpy(dst, src, n) memcpy(dst, src, n) +extern void *memmove(void *dst __sized_by(n), const void *src __sized_by(n), size_t n); + +__xnu_string_inline +void * +__sized_by(n) +memmove( + void *const dst __xnu_pass_object_size __sized_by(n), + const void *const src __xnu_pass_object_size __sized_by(n), + size_t n) +__xnu_object_size_precondition(dst, n, "write overflow") +__xnu_object_size_precondition(src, n, "read overflow") +{ + extern void *__xnu_memmove( + void *dst __sized_by(n), + const void *src __sized_by(n), + size_t n) __asm("_memmove"); + + __xnu_object_size_check(dst, n, write); + __xnu_object_size_check(src, n, read); +#if __has_builtin(__builtin_memmove) + return __builtin_memmove(dst, src, n); +#else + return __xnu_memmove(dst, src, n); +#endif +} + +__xnu_string_inline +void * +__sized_by(n) +__nochk_memmove( + void *const dst __xnu_pass_struct_size __sized_by(n), + const void *const src __xnu_pass_struct_size __sized_by(n), + size_t n) +__xnu_struct_size_precondition(dst, n, "write overflow") +__xnu_struct_size_precondition(src, n, "read overflow") +{ + extern void *__xnu_memmove( + void *dst __sized_by(n), + const void *src __sized_by(n), + size_t n) __asm("_memmove"); + + __xnu_struct_size_check(dst, n, write); + __xnu_struct_size_check(src, n, read); +#if __has_builtin(__builtin_memmove) + return __builtin_memmove(dst, src, n); #else -#define __nochk_memcpy(dst, src, n) memcpy(dst, src, n) + return __xnu_memmove(dst, src, n); #endif +} -extern void *memmove(void *dst __sized_by(n), const void *src __sized_by(n), size_t n); extern void bcopy(const void *src __sized_by(n), void *dst __sized_by(n), size_t n); -#if XNU_USE_CHK_BUILTIN(memmove) -#define memmove(dst, src, n) __builtin___memmove_chk(dst, src, n, __xnu_bos_default(dst)) -#define bcopy(src, dst, n) __builtin___memmove_chk(dst, src, n, __xnu_bos_default(dst)) -#define __nochk_memmove(dst, src, n) __builtin___memmove_chk(dst, src, n, __xnu_bos_loose(dst)) -#define __nochk_bcopy(src, dst, n) __builtin___memmove_chk(dst, src, n, __xnu_bos_loose(dst)) -#elif XNU_USE_STRING_BUILTIN(memmove) -#define memmove(dst, src, n) __builtin_memmove(dst, src, n) -#define bcopy(src, dst, n) __builtin_memmove(dst, src, n) -#define __nochk_memmove(dst, src, n) memmove(dst, src, n) -#define __nochk_bcopy(src, dst, n) bcopy(src, dst, n) -#else -#define __nochk_memmove(dst, src, n) memmove(dst, src, n) -#define __nochk_bcopy(src, dst, n) bcopy(src, dst, n) -#endif /* !XNU_USE_CHK_BUILTIN(memmove) */ + +__xnu_string_inline +void +bcopy( + const void *const src __xnu_pass_object_size __sized_by(n), + void *const dst __xnu_pass_object_size __sized_by(n), + size_t n) +__xnu_struct_size_precondition(dst, n, "write overflow") +__xnu_struct_size_precondition(src, n, "read overflow") +{ + (void)memmove(dst, src, n); +} + +__xnu_string_inline +void +__nochk_bcopy( + const void *const src __xnu_pass_struct_size __sized_by(n), + void *const dst __xnu_pass_struct_size __sized_by(n), + size_t n) +__xnu_struct_size_precondition(dst, n, "write overflow") +__xnu_struct_size_precondition(src, n, "read overflow") +{ + (void)__nochk_memmove(dst, src, n); +} + + +extern void *memcpy(void *dst __sized_by(n), const void *src __sized_by(n), size_t n); + +__xnu_string_inline +void * +__sized_by(n) +memcpy( + void *const dst __xnu_pass_object_size __sized_by(n), + const void *const src __xnu_pass_object_size __sized_by(n), + size_t n) +__xnu_struct_size_precondition(dst, n, "write overflow") +__xnu_struct_size_precondition(src, n, "read overflow") +{ + return memmove(dst, src, n); +} + +__xnu_string_inline +void * +__sized_by(n) +__nochk_memcpy( + void *const dst __xnu_pass_struct_size __sized_by(n), + const void *const src __xnu_pass_struct_size __sized_by(n), + size_t n) +__xnu_struct_size_precondition(dst, n, "write overflow") +__xnu_struct_size_precondition(src, n, "read overflow") +{ + return __nochk_memmove(dst, src, n); +} #pragma mark string functions extern size_t strlen(const char *__null_terminated s) __stateful_pure; -#if XNU_USE_STRING_BUILTIN(strlen) -#define strlen(s) __builtin_strlen(s) + +#if __has_builtin(__builtin_strlen) +__xnu_string_inline __stateful_pure +size_t +strlen(const char * /* __null_terminated */ const s __xnu_force_overload) +{ + return __builtin_strlen(s); +} #endif -extern size_t strnlen(const char *__null_terminated s, size_t n) __stateful_pure; -#if XNU_USE_STRING_BUILTIN(strnlen) -#define strnlen(s, n) __builtin_strnlen(s, n) +extern size_t strnlen(const char *__counted_by(n)s, size_t n) __stateful_pure; + +#if __has_builtin(__builtin_strnlen) +__xnu_string_inline __stateful_pure +size_t +strnlen(const char *const __counted_by(n) s __xnu_force_overload, size_t n) +{ + return __builtin_strnlen(s, n); +} #endif +/* strbuflen is the same as strnlen. */ +#define strbuflen_1(BUF) ({ \ + __xnu_assert_is_array(BUF, "argument is not an array"); \ + strnlen((BUF), sizeof(BUF)); \ +}) +#define strbuflen_2(BUF, LEN) strnlen(BUF, LEN) +#define strbuflen(...) __xnu_argc_overload(strbuflen, __VA_ARGS__) + + extern int strcmp(const char *__null_terminated s1, const char *__null_terminated s2) __stateful_pure; -#if XNU_USE_STRING_BUILTIN(strcmp) -#define strcmp(s1, s2) __builtin_strcmp(s1, s2) + +#if __has_builtin(__builtin_strcmp) +__xnu_string_inline __stateful_pure +int +strcmp( + const char *const /* __null_terminated */ s1 __xnu_force_overload, + const char *const __null_terminated s2) +{ + return __builtin_strcmp(s1, s2); +} +#else #endif -extern int strncmp(const char *__null_terminated s1, const char *__null_terminated s2, size_t n) __stateful_pure; -#if XNU_USE_STRING_BUILTIN(strncmp) -#define strncmp(s1, s2, n) __builtin_strncmp(s1, s2, n) +__ptrcheck_unavailable_r("strlcmp or strbufcmp") +extern int strncmp(const char *__unsafe_indexable s1, const char *__unsafe_indexable s2, size_t n) __stateful_pure; + +#if __has_builtin(__builtin_strncmp) +__ptrcheck_unavailable_r("strlcmp or strbufcmp") +__xnu_string_inline __stateful_pure +int +strncmp( + const char *const __unsafe_indexable s1 __xnu_force_overload, + const char *const __unsafe_indexable s2, size_t n) +{ + return __builtin_strncmp(s1, s2, n); +} #endif +/* + * Use strlcmp if you want to compare one string with a known length (with or + * without a NUL terminator) and one string with an unknown length (that always + * has a NUL terminator). + * See docs/primitives/string-handling.md for more information. + */ +extern int strlcmp(const char *__counted_by(n)s1, const char *s2, size_t n) __stateful_pure; + +#if __has_builtin(__builtin_strncmp) +__xnu_string_inline __stateful_pure +int +strlcmp( + const char *const __counted_by(s1len) s1 __xnu_force_overload, + const char *const s2, size_t s1len) +__xnu_member_size_precondition(s1, s1len, "read overflow") +{ + extern int __xnu_strlcmp( + const char * __counted_by(s1len) s1, + const char *__null_terminated s2, + size_t s1len) __asm("_strlcmp"); + + __xnu_member_size_check(s1, s1len, read); + return __xnu_strlcmp(s1, s2, s1len); +} +#endif + + +/* + * Use strbufcmp if you want to compare two strings and you know both of their + * lengths. See docs/primitives/string-handling.md for more information. + */ +extern int strbufcmp(const char *__counted_by(s1len)s1, size_t s1len, const char *__counted_by(s2len)s2, size_t s2len) __stateful_pure; + +__xnu_string_inline __stateful_pure +int +strbufcmp( + const char *const __counted_by(s1len) s1 __xnu_pass_member_size, size_t s1len, + const char *const __counted_by(s2len) s2 __xnu_pass_member_size, size_t s2len) +__xnu_member_size_precondition(s1, s1len, "read overflow") +__xnu_member_size_precondition(s2, s2len, "read overflow") +{ + extern int __xnu_strbufcmp( + const char * __counted_by(s1len) s1, + size_t s1len, + const char *__counted_by(s2len) s2, + size_t s2len) __asm("_strbufcmp"); + + __xnu_member_size_check(s1, s1len, read); + __xnu_member_size_check(s2, s2len, read); + return __xnu_strbufcmp(s1, s1len, s2, s2len); +} + +#define strbufcmp_2(A, B) ({ \ + __xnu_assert_is_array(A, "first argument is not an array"); \ + __xnu_assert_is_array(B, "second argument is not an array"); \ + (strbufcmp)((A), sizeof(A), (B), sizeof(B)); \ +}) +#define strbufcmp_4 (strbufcmp) +#define strbufcmp(...) __xnu_argc_overload(strbufcmp, __VA_ARGS__) + extern int strprefix(const char *__null_terminated s1, const char *__null_terminated s2) __stateful_pure; extern int strcasecmp(const char *__null_terminated s1, const char *__null_terminated s2) __stateful_pure; -#if XNU_USE_STRING_BUILTIN(strcasecmp) -#define strcasecmp(s1, s2) __builtin_strcasecmp(s1, s2) + +#if __has_builtin(__builtin_strcasecmp) +__xnu_string_inline __stateful_pure +int +strcasecmp( + const char *const /* __null_terminated */ s1 __xnu_force_overload, + const char *const __null_terminated s2) +{ + return __builtin_strcasecmp(s1, s2); +} #endif -extern int strncasecmp(const char *__null_terminated s1, const char *__null_terminated s2, size_t n) __stateful_pure; -#if XNU_USE_STRING_BUILTIN(strncasecmp) -#define strncasecmp(s1, s2, n) __builtin_strncasecmp(s1, s2, n) +__ptrcheck_unavailable_r("strlcasecmp or strbufcasecmp") +extern int strncasecmp(const char *__unsafe_indexable s1, const char *__unsafe_indexable s2, size_t n) __stateful_pure; + +#if __has_builtin(__builtin_strncasecmp) +__ptrcheck_unavailable_r("strlcasecmp or strbufcasecmp") +__xnu_string_inline __stateful_pure +int +strncasecmp( + const char *const __unsafe_indexable s1 __xnu_force_overload, + const char *const __unsafe_indexable s2, size_t n) +{ + return __builtin_strncasecmp(s1, s2, n); +} #endif +/* + * Use strlcasecmp if you want to compare one string with a known length (with + * or without a NUL terminator) and one string with an unknown length (that + * always has a NUL terminator). + * See docs/primitives/string-handling.md for more information. + */ +extern int strlcasecmp(const char *__counted_by(n)s1, const char *s2, size_t n) __stateful_pure; + +__xnu_string_inline __stateful_pure +int +strlcasecmp( + const char *const __counted_by(s1len) s1 __xnu_force_overload, + const char *__null_terminated const s2, size_t s1len) +__xnu_member_size_precondition(s1, s1len, "read overflow") +{ + extern int __xnu_strlcasecmp( + const char * __counted_by(s1len) s1, + const char *__null_terminated s2, + size_t s1len) __asm("_strlcasecmp"); + + __xnu_member_size_check(s1, s1len, read); + return __xnu_strlcasecmp(s1, s2, s1len); +} -extern char *__null_terminated strchr(const char *__null_terminated s, int c) __stateful_pure; -#if XNU_USE_STRING_BUILTIN(strchr) && !__has_ptrcheck /* rdar://103265304 */ -#define strchr(s, c) __builtin_strchr(s, c) + +/* + * Use strbufcmp if you want to compare two strings and you know both of their + * lengths. See docs/primitives/string-handling.md for more information. + */ +extern int strbufcasecmp(const char *__counted_by(s1len)s1, size_t s1len, const char *__counted_by(s2len)s2, size_t s2len) __stateful_pure; + +__xnu_string_inline __stateful_pure +int +strbufcasecmp( + const char *const __counted_by(s1len) s1 __xnu_pass_member_size, size_t s1len, + const char *const __counted_by(s2len) s2 __xnu_pass_member_size, size_t s2len) +__xnu_member_size_precondition(s1, s1len, "read overflow") +__xnu_member_size_precondition(s2, s2len, "read overflow") +{ + extern int __xnu_strbufcasecmp( + const char * __counted_by(s1len) s1, + size_t s1len, + const char *__counted_by(s2len) s2, + size_t s2len) __asm("_strbufcasecmp"); + + __xnu_member_size_check(s1, s1len, read); + __xnu_member_size_check(s2, s2len, read); + return __xnu_strbufcasecmp(s1, s1len, s2, s2len); +} + +#define strbufcasecmp_2(A, B) ({ \ + __xnu_assert_is_array(A, "first argument is not an array"); \ + __xnu_assert_is_array(B, "second argument is not an array"); \ + (strbufcasecmp)((A), sizeof(A), (B), sizeof(B)); \ +}) +#define strbufcasecmp_4 (strbufcasecmp) +#define strbufcasecmp(...) __xnu_argc_overload(strbufcasecmp, __VA_ARGS__) + + +#if __has_builtin(__builtin_strchr) +__xnu_string_inline +char *__null_terminated +strchr(const char *const /* __null_terminated */ s __xnu_force_overload, int c) +{ + return __unsafe_forge_null_terminated(char *, __builtin_strchr(s, c)); +} #endif extern char *__null_terminated strnstr(const char *__null_terminated s, const char *__null_terminated find, size_t slen) __stateful_pure; -#if XNU_USE_STRING_BUILTIN(strnstr) && !__has_ptrcheck /* rdar://103265304 */ -#define strnstr(s, find, slen) __builtin_strnstr(s, find, slen) -#endif -extern size_t strlcpy(char *__sized_by(n) dst, const char *__null_terminated src, size_t n); -#if XNU_USE_CHK_BUILTIN(strlcpy) -#define strlcpy(dst, src, n) __builtin___strlcpy_chk(dst, src, n, __xnu_bos_strict(dst)) -#elif XNU_USE_STRING_BUILTIN(strlcpy) -#define strlcpy(dst, src, n) __builtin_strlcpy(dst, src, n) +extern size_t strlcpy(char *__counted_by(n) dst, const char *__null_terminated src, size_t n); + +__xnu_string_inline +size_t +strlcpy( + char *const dst __xnu_pass_member_size __counted_by(n), + const char *const src __null_terminated, + size_t n) +__xnu_member_size_precondition(dst, n, "write overflow") +{ + extern size_t __xnu_strlcpy( + char * __counted_by(n), + const char *__null_terminated, + size_t n) __asm("_strlcpy"); + + __xnu_member_size_check(dst, n, write); +#if __has_builtin(__builtin_strlcpy) + return __builtin_strlcpy(dst, src, n); +#else + return __xnu_strlcpy(dst, src, n); #endif +} + +/* + * Use strlcpy_ret if all you want is the __null_terminated pointer + * to the resulting string. + * See docs/primitives/string-handling.md for more information. + */ +__xnu_string_inline +char * __null_terminated +strlcpy_ret( + char *const dst __xnu_pass_member_size __counted_by(n), + const char *const src __null_terminated, + size_t n) +__xnu_member_size_precondition(dst, n, "write overflow") +{ + size_t cnt = strlcpy(dst, src, n); + /* + * Like snprintf(3), the strlcpy() returns the total length of the string they tried to create, i.e. length of `src'. + */ + if (cnt >= n) { + /* + * The output string has been truncated. The terminating NUL is at `dst + (n - 1)'. + */ + return __unsafe_null_terminated_from_indexable(dst, dst + (n - 1)); + } else { + /* + * The output string hasn't been truncated. The terminating NUL is at `dst + cnt'; + */ + return __unsafe_null_terminated_from_indexable(dst, dst + cnt); + } +} -extern size_t strlcat(char *__sized_by(n) dst, const char *__null_terminated src, size_t n); -#if XNU_USE_CHK_BUILTIN(strlcat) -#define strlcat(dst, src, n) __builtin___strlcat_chk(dst, src, n, __xnu_bos_strict(dst)) -#elif XNU_USE_STRING_BUILTIN(strlcat) -#define strlcat(dst, src, n) __builtin_strlcat(dst, src, n) +/* + * strbufcpy returns its destination as a NUL-terminated string, which makes a + * difference when -fbounds-safety is enabled. + * See docs/primitives/string-handling.md for more information. + */ +extern const char *__null_terminated + strbufcpy( + char *__counted_by(dstsz) dst, + size_t dstsz, + const char *__counted_by(srcsz) src, + size_t srcsz); + +__xnu_string_inline +const char * +strbufcpy( + char *const dst __xnu_pass_member_size __counted_by(dstsz), + size_t dstsz, + const char *const src __xnu_pass_member_size __counted_by(srcsz), + size_t srcsz) +__xnu_member_size_precondition(dst, dstsz, "write overflow") +__xnu_member_size_precondition(src, srcsz, "read overflow") +{ + extern const char *__xnu_strbufcpy( + char *__counted_by(dstsz) dst, + size_t dstsz, + const char *__counted_by(srcsz) src, + size_t srcsz) __asm("_strbufcpy"); + + __xnu_member_size_check(dst, dstsz, write); + __xnu_member_size_check(src, srcsz, read); + return __xnu_strbufcpy(dst, dstsz, src, srcsz); +} + +#define strbufcpy_2(DST, SRC) ({ \ + __xnu_assert_is_array(DST, "dst is not an array"); \ + __xnu_assert_is_array(SRC, "src is not an array"); \ + (strbufcpy)((DST), sizeof(DST), (SRC), sizeof(SRC)); \ +}) +#define strbufcpy_4 (strbufcpy) +#define strbufcpy(...) __xnu_argc_overload(strbufcpy, __VA_ARGS__) + +extern size_t strlcat(char *__counted_by(n) dst, const char *__null_terminated src, size_t n); + +__xnu_string_inline +size_t +strlcat( + char *const dst __xnu_pass_member_size __counted_by(n), + const char *const src __null_terminated, + size_t n) +__xnu_member_size_precondition(dst, n, "write overflow") +{ + extern size_t __xnu_strlcat( + char * __sized_by(n), + const char *__null_terminated, + size_t n) __asm("_strlcat"); + + __xnu_member_size_check(dst, n, write); +#if __has_builtin(__builtin_strlcat) + return __builtin_strlcat(dst, src, n); +#else + return __xnu_strlcat(dst, src, n); #endif +} + +/* + * strbufcat returns its destination as a NUL-terminated string, which makes a + * difference when -fbounds-safety is enabled. + * See docs/primitives/string-handling.md for more information. + */ +extern const char *__null_terminated + strbufcat( + char *__counted_by(dstsz) dst, + size_t dstsz, + const char *__counted_by(srcsz) src, + size_t srcsz); + +__xnu_string_inline +const char * +strbufcat( + char *const dst __xnu_pass_member_size __counted_by(dstsz), + size_t dstsz, + const char *const src __xnu_pass_member_size __counted_by(srcsz), + size_t srcsz) +__xnu_member_size_precondition(dst, dstsz, "write overflow") +__xnu_member_size_precondition(src, srcsz, "read overflow") +{ + extern const char *__xnu_strbufcat( + char *__counted_by(dstsz) dst, + size_t dstsz, + const char *__counted_by(srcsz) src, + size_t srcsz) __asm("_strbufcat"); + + __xnu_member_size_check(dst, dstsz, write); + __xnu_member_size_check(src, srcsz, read); + return __xnu_strbufcat(dst, dstsz, src, srcsz); +} + +#define strbufcat_2(DST, SRC) ({ \ + __xnu_assert_is_array(DST, "dst is not an array"); \ + __xnu_assert_is_array(SRC, "src is not an array"); \ + (strbufcat)((DST), sizeof(DST), (SRC), sizeof(SRC)); \ +}) +#define strbufcat_4 (strbufcat) +#define strbufcat(...) __xnu_argc_overload(strbufcat, __VA_ARGS__) #pragma mark deprecated functions -#if !__has_ptrcheck +#if !__has_ptrcheck && !__has_include(<__xnu_libcxx_sentinel.h>) /* * char *strncat(char *dst, const char *src, size_t n); @@ -288,36 +894,36 @@ extern size_t strlcat(char *__sized_by(n) dst, const char *__null_terminated src __deprecated_msg("use strlcat") __kpi_deprecated_arm64_macos_unavailable extern char *strncat(char *dst, const char *src, size_t n); -#if XNU_USE_CHK_BUILTIN(strncat) -#define strncat(dst, src, n) __builtin___strncat_chk(dst, src, n, __xnu_bos_strict(dst)) +#if __XNU_FORTIFY_SOURCE && __has_builtin(__builtin___strncat_chk) +#define strncat(dst, src, n) __builtin___strncat_chk(dst, src, n, __xnu_member_size(dst)) #endif __deprecated_msg("use strlcpy") __kpi_deprecated_arm64_macos_unavailable extern char *strncpy(char *dst, const char *src, size_t n); -#if XNU_USE_CHK_BUILTIN(strncpy) -#define strncpy(dst, src, n) __builtin___strncpy_chk(dst, src, n, __xnu_bos_strict(dst)) +#if __XNU_FORTIFY_SOURCE && __has_builtin(__builtin___strncpy_chk) +#define strncpy(dst, src, n) __builtin___strncpy_chk(dst, src, n, __xnu_member_size(dst)) #endif __deprecated_msg("use strlcpy") __kpi_deprecated_arm64_macos_unavailable extern char *strcpy(char *, const char *); -#if XNU_USE_CHK_BUILTIN(strcpy) +#if __XNU_FORTIFY_SOURCE && __has_builtin(__builtin___strcpy_chk) /* rdar://103287225 */ -#define strcpy(dst, src, len) __builtin___strcpy_chk(dst, src, __xnu_bos_strict(dst)) +#define strcpy(dst, src, len) __builtin___strcpy_chk(dst, src, __xnu_member_size(dst)) #endif __deprecated_msg("use strlcat") __kpi_deprecated_arm64_macos_unavailable extern char *strcat(char *dst, const char *src); -#if XNU_USE_CHK_BUILTIN(strcat) -#define strcat(dst, src) __builtin___strcat_chk(dst, src, __xnu_bos_strict(dst)) +#if __XNU_FORTIFY_SOURCE && __has_builtin(__builtin___strcat_chk) +#define strcat(dst, src) __builtin___strcat_chk(dst, src, __xnu_member_size(dst)) #endif extern char *STRDUP(const char *, int); -#endif /* !__has_ptrcheck */ +#endif /* !__has_ptrcheck && !__has_include(<__xnu_libcxx_sentinel.h>) */ #if __has_include() #include diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/__endian.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/__endian.h new file mode 100644 index 00000000..c25d3295 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/__endian.h @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2004, 2006, 2023 Apple Computer, Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +/* + * Copyright (c) 1995 NeXT Computer, Inc. All rights reserved. + * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ +/* + * Copyright (c) 1987, 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _SYS___ENDIAN_H_ +#define _SYS___ENDIAN_H_ + +/* + * Definitions for byte order, according to byte significance from low + * address to high. + */ +#define __DARWIN_LITTLE_ENDIAN 1234 /* LSB first: i386, vax */ +#define __DARWIN_BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */ +#define __DARWIN_PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */ + + +#define LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN +#define BIG_ENDIAN __DARWIN_BIG_ENDIAN +#define PDP_ENDIAN __DARWIN_PDP_ENDIAN + +#endif /* !_SYS___ENDIAN_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_endian.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_endian.h index 0ebf6a03..bcac07f3 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_endian.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_endian.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2006 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004, 2006, 2023 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -91,7 +91,7 @@ #define _SYS__ENDIAN_H_ #include -#include +#include /* * Macros for network/external number representation conversion. @@ -117,12 +117,12 @@ __END_DECLS #define ntohll(x) ((__uint64_t)(x)) #define htonll(x) ((__uint64_t)(x)) -#define NTOHL(x) (x) -#define NTOHS(x) (x) -#define NTOHLL(x) (x) -#define HTONL(x) (x) -#define HTONS(x) (x) -#define HTONLL(x) (x) +#define NTOHL(x) (x) = (x) +#define NTOHS(x) (x) = (x) +#define NTOHLL(x) (x) = (x) +#define HTONL(x) (x) = (x) +#define HTONS(x) (x) = (x) +#define HTONLL(x) (x) = (x) #else /* __DARWIN_BYTE_ORDER == __DARWIN_LITTLE_ENDIAN */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types.h index 4b13dca6..5a56ee25 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types.h @@ -32,13 +32,21 @@ #include #include +#define USE_CLANG_TYPES 0 + +#if USE_CLANG_TYPES +#include +#endif + /* * Type definitions; takes common type definitions that must be used * in multiple header files due to [XSI], removes them from the system * space, and puts them in the implementation space. */ -#ifdef __cplusplus +#if USE_CLANG_TYPES +#define __DARWIN_NULL NULL +#elif defined(__cplusplus) #ifdef __GNUG__ #define __DARWIN_NULL __null #else /* ! __GNUG__ */ @@ -50,7 +58,7 @@ #endif /* __GNUG__ */ #else /* ! __cplusplus */ #define __DARWIN_NULL ((void *)0) -#endif /* __cplusplus */ +#endif typedef __int64_t __darwin_blkcnt_t; /* total blocks */ typedef __int32_t __darwin_blksize_t; /* preferred block size */ @@ -77,6 +85,8 @@ typedef __uint32_t __darwin_useconds_t; /* [???] microseconds */ typedef unsigned char __darwin_uuid_t[16]; typedef char __darwin_uuid_string_t[37]; +#undef USE_CLANG_TYPES + #if defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 5 || __GNUC__ > 3) #define __offsetof(type, field) __builtin_offsetof(type, field) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_caddr_t.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_caddr_t.h index 159e186d..ab601d9c 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_caddr_t.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_caddr_t.h @@ -29,3 +29,8 @@ #define _CADDR_T typedef char * caddr_t; #endif /* _CADDR_T */ + +#if !defined(_CADDR_UT) && !defined(VM_UNSAFE_TYPES) +#define _CADDR_UT +typedef caddr_t caddr_ut; +#endif /* !defined(_CADDR_UT) && !defined(VM_UNSAFE_TYPES) */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_clr.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_clr.h index eeb65b36..23fc4c25 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_clr.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_clr.h @@ -26,5 +26,6 @@ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ #ifndef FD_CLR +#include #define FD_CLR(n, p) __DARWIN_FD_CLR(n, p) #endif /* FD_CLR */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_copy.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_copy.h index d0e9c1ec..365ff080 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_copy.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_copy.h @@ -26,5 +26,6 @@ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ #ifndef FD_COPY +#include #define FD_COPY(f, t) __DARWIN_FD_COPY(f, t) #endif /* FD_COPY */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_isset.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_isset.h index e3b3d985..1377bda0 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_isset.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_isset.h @@ -26,5 +26,6 @@ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ #ifndef FD_ISSET +#include #define FD_ISSET(n, p) __DARWIN_FD_ISSET(n, p) #endif /* FD_ISSET */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_set.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_set.h index 67f4fa4d..41ed3c85 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_set.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_set.h @@ -26,5 +26,6 @@ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ #ifndef FD_SET +#include #define FD_SET(n, p) __DARWIN_FD_SET(n, p) #endif /* FD_SET */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_setsize.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_setsize.h index c5c3ec9d..53ba6616 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_setsize.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_setsize.h @@ -26,5 +26,6 @@ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ #ifndef FD_SETSIZE +#include #define FD_SETSIZE __DARWIN_FD_SETSIZE #endif /* FD_SETSIZE */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_zero.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_zero.h index 8363df3b..25d267df 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_zero.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_fd_zero.h @@ -26,5 +26,6 @@ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ #ifndef FD_ZERO +#include #define FD_ZERO(p) __DARWIN_FD_ZERO(p) #endif /* FD_ZERO */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_intptr_t.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_intptr_t.h index 0f494b9e..2076ef7c 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_intptr_t.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_intptr_t.h @@ -27,7 +27,7 @@ */ #ifndef _INTPTR_T #define _INTPTR_T -#include /* __darwin_intptr_t */ +#include /* __darwin_intptr_t */ typedef __darwin_intptr_t intptr_t; #endif /* _INTPTR_T */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_null.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_null.h index 9c21571e..397c92ed 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_null.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_null.h @@ -25,7 +25,26 @@ * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ +#define USE_CLANG_STDDEF 0 + +#if USE_CLANG_STDDEF + +#ifndef __NULL +#define __NULL + +#define __need_NULL +#include +#undef __need_NULL + +#endif /* __NULL */ + +#else + #ifndef NULL #include /* __DARWIN_NULL */ #define NULL __DARWIN_NULL #endif /* NULL */ + +#endif + +#undef USE_CLANG_STDDEF diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_offsetof.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_offsetof.h index fa831a51..5a8b1193 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_offsetof.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_offsetof.h @@ -25,6 +25,25 @@ * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ +#define USE_CLANG_STDDEF 0 + +#if USE_CLANG_STDDEF + +#ifndef __OFFSETOF +#define __OFFSETOF + +#define __need_offsetof +#include +#undef __need_offsetof + +#endif /* __OFFSETOF */ + +#else + #ifndef offsetof #define offsetof(type, field) __offsetof(type, field) #endif /* offsetof */ + +#endif + +#undef USE_CLANG_STDDEF diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_ptrdiff_t.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_ptrdiff_t.h index 31a06577..0bf54af8 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_ptrdiff_t.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_ptrdiff_t.h @@ -26,8 +26,27 @@ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ +#define USE_CLANG_STDDEF 0 + +#if USE_CLANG_STDDEF + +#ifndef __PTRDIFF_T +#define __PTRDIFF_T + +#define __need_ptrdiff_t +#include +#undef __need_ptrdiff_t + +#endif /* __PTRDIFF_T */ + +#else + #ifndef _PTRDIFF_T #define _PTRDIFF_T #include /* __darwin_ptrdiff_t */ typedef __darwin_ptrdiff_t ptrdiff_t; #endif /* _PTRDIFF_T */ + +#endif + +#undef USE_CLANG_STDDEF diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_rsize_t.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_rsize_t.h index 6aa2f6b3..065dbf5d 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_rsize_t.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_rsize_t.h @@ -25,8 +25,27 @@ * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ +#define USE_CLANG_STDDEF 0 + +#if USE_CLANG_STDDEF + +#ifndef __RSIZE_T +#define __RSIZE_T + +#define __need_rsize_t +#include +#undef __need_rsize_t + +#endif /* __RSIZE_T */ + +#else + #ifndef _RSIZE_T #define _RSIZE_T #include /* __darwin_size_t */ typedef __darwin_size_t rsize_t; #endif /* _RSIZE_T */ + +#endif + +#undef USE_CLANG_STDDEF diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_size_t.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_size_t.h index a14a8885..0ec526c0 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_size_t.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_size_t.h @@ -25,8 +25,32 @@ * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ +#define USE_CLANG_STDDEF 0 + +#if USE_CLANG_STDDEF + +#ifndef __SIZE_T +#define __SIZE_T + +#define __need_size_t +#include +#undef __need_size_t + +#endif /* __SIZE_T */ + +#else + #ifndef _SIZE_T #define _SIZE_T #include /* __darwin_size_t */ typedef __darwin_size_t size_t; #endif /* _SIZE_T */ + +#endif + +#if !defined(_SIZE_UT) && !defined(VM_UNSAFE_TYPES) +#define _SIZE_UT +typedef __typeof__(sizeof(int)) size_ut; +#endif /* !defined(_SIZE_UT) && !defined(VM_UNSAFE_TYPES) */ + +#undef USE_CLANG_STDDEF diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_va_list.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_va_list.h index f7687bae..23267eba 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_va_list.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_va_list.h @@ -28,6 +28,18 @@ #ifndef _VA_LIST_T #define _VA_LIST_T + +#define USE_CLANG_STDARG 0 + +#if USE_CLANG_STDARG +#define __need_va_list +#include +#undef __need_va_list +#else #include /* __darwin_va_list */ typedef __darwin_va_list va_list; +#endif + +#undef USE_CLANG_STDARG + #endif /* _VA_LIST_T */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_wchar_t.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_wchar_t.h index d67cfcdd..b27743b0 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_wchar_t.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/_types/_wchar_t.h @@ -26,6 +26,21 @@ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ +#define USE_CLANG_STDDEF 0 + +#if USE_CLANG_STDDEF + +#ifndef __WCHAR_T +#define __WCHAR_T + +#define __need_wchar_t +#include +#undef __need_wchar_t + +#endif /* __WCHAR_T */ + +#else + /* wchar_t is a built-in type in C++ */ #ifndef __cplusplus #ifndef _WCHAR_T @@ -34,3 +49,7 @@ typedef __darwin_wchar_t wchar_t; #endif /* _WCHAR_T */ #endif /* __cplusplus */ + +#endif + +#undef USE_CLANG_STDDEF diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/attr.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/attr.h index fc2b76be..c1c7812e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/attr.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/attr.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2018 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2018, 2023 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -129,6 +129,12 @@ typedef struct vol_capabilities_attr { */ #define ATTR_MAX_BUFFER 8192 + +/* + * Max size of attribute buffer if IOPOL_TYPE_VFS_SUPPORT_LONG_PATHS is enabled + */ +#define ATTR_MAX_BUFFER_LONGPATHS (ATTR_MAX_BUFFER - MAXPATHLEN + MAXLONGPATHLEN) + /* * VOL_CAP_FMT_PERSISTENTOBJECTIDS: When set, the volume has object IDs * that are persistent (retain their values even when the volume is @@ -249,6 +255,12 @@ typedef struct vol_capabilities_attr { * VOL_CAP_FMT_SEALED: When set, this volume is cryptographically sealed. * Any modifications to volume data or metadata will be detected and may * render the volume unusable. + * + * VOL_CAP_FMT_CLONE_MAPPING: When set, this volume supports full clone tracking. + * See ATTR_CMNEXT_CLONE_REFCNT and ATTR_CMNEXT_CLONEID for more details. + * Other features like extended directory statistics, for fast directory sizing, + * and attribution tags may be supported as well. + * See VOL_CAP_INT_ATTRIBUTION_TAG for more details related to tagging. */ #define VOL_CAP_FMT_PERSISTENTOBJECTIDS 0x00000001 #define VOL_CAP_FMT_SYMBOLICLINKS 0x00000002 @@ -276,6 +288,7 @@ typedef struct vol_capabilities_attr { #define VOL_CAP_FMT_SHARED_SPACE 0x00800000 #define VOL_CAP_FMT_VOL_GROUPS 0x01000000 #define VOL_CAP_FMT_SEALED 0x02000000 +#define VOL_CAP_FMT_CLONE_MAPPING 0x04000000 /* * VOL_CAP_INT_SEARCHFS: When set, the volume implements the @@ -349,6 +362,13 @@ typedef struct vol_capabilities_attr { * * VOL_CAP_INT_RENAME_SECLUDE: When set, the volume supports a * seclude rename operation. + * + * VOL_CAP_INT_ATTRIBUTION_TAG: When set, the volume supports establishing + * an owner relationship between a file (excluding small files) and a process + * on the first read/write/truncate/clone operation. + * + * VOL_CAP_INT_PUNCHHOLE: When set, the volume supports the F_PUNCHHOLE + * fcntl. */ #define VOL_CAP_INT_SEARCHFS 0x00000001 #define VOL_CAP_INT_ATTRLIST 0x00000002 @@ -371,6 +391,8 @@ typedef struct vol_capabilities_attr { #define VOL_CAP_INT_RENAME_EXCL 0x00080000 #define VOL_CAP_INT_RENAME_OPENFAIL 0x00100000 #define VOL_CAP_INT_RENAME_SECLUDE 0x00200000 +#define VOL_CAP_INT_ATTRIBUTION_TAG 0x00400000 +#define VOL_CAP_INT_PUNCHHOLE 0x00800000 typedef struct vol_attributes_attr { attribute_set_t validattr; @@ -472,15 +494,17 @@ typedef struct vol_attributes_attr { #define ATTR_VOL_ENCODINGSUSED 0x00010000 #define ATTR_VOL_CAPABILITIES 0x00020000 #define ATTR_VOL_UUID 0x00040000 +#define ATTR_VOL_MOUNTEXTFLAGS 0x00080000 #define ATTR_VOL_FSTYPENAME 0x00100000 #define ATTR_VOL_FSSUBTYPE 0x00200000 +#define ATTR_VOL_OWNER 0x00400000 #define ATTR_VOL_SPACEUSED 0x00800000 #define ATTR_VOL_QUOTA_SIZE 0x10000000 #define ATTR_VOL_RESERVED_SIZE 0x20000000 #define ATTR_VOL_ATTRIBUTES 0x40000000 #define ATTR_VOL_INFO 0x80000000 -#define ATTR_VOL_VALIDMASK 0xF0B7FFFF +#define ATTR_VOL_VALIDMASK 0xF0FFFFFF /* * The list of settable ATTR_VOL_* attributes include the following: @@ -628,4 +652,6 @@ struct searchstate { #define FST_EOF (-1) /* end-of-file offset */ #endif /* __APPLE_API_UNSTABLE */ + + #endif /* !_SYS_ATTR_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/buf.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/buf.h index e21694ff..b72381f3 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/buf.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/buf.h @@ -328,6 +328,8 @@ errno_t buf_map(buf_t bp, caddr_t *io_addr); * @abstract Get virtual mappings for buffer data. * @discussion Similar to buf_map but the focus is on a range * of the UPL. The b_uploffset and b_count control what part of the UPL will be mapped. + * This function is paired with buf_unmap_range which must be called from the same + * thread. * @param bp Buffer whose mapping to find or create. * @param io_addr Destination for mapping address. * @return 0 for success, ENOMEM if unable to map the buffer. @@ -339,6 +341,8 @@ errno_t buf_map_range(buf_t bp, caddr_t *io_addr); * @abstract Get virtual mappings for buffer data. * @discussion Similar to buf_map_range but also takes protection so that part of the UPL * will be mapped with the requested protection. + * This function is paired with buf_unmap_range which must be called from the same + * thread. * @param bp Buffer whose mapping to find or create. * @param io_addr Destination for mapping address. * @return 0 for success, ENOMEM if unable to map the buffer. @@ -365,6 +369,8 @@ errno_t buf_unmap(buf_t bp); * @abstract Release mappings for buffer data. * @discussion Similar to buf_unmap but the focus is on a range * of the UPL. The b_uploffset and b_count control what part of the UPL will be unmapped. + * This function must be called from the same thread that called the corresponding + * buf_map_range/buf_map_range_with_prot. * @param bp Buffer whose mapping to find or create. * @return 0 for success, EINVAL if unable to unmap buffer. */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/cdefs.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/cdefs.h index 7fe2c43d..e3b527f3 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/cdefs.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/cdefs.h @@ -97,6 +97,9 @@ #ifndef __has_attribute #define __has_attribute(x) 0 #endif +#ifndef __has_cpp_attribute +#define __has_cpp_attribute(x) 0 +#endif #ifndef __has_extension #define __has_extension(x) 0 #endif @@ -326,6 +329,19 @@ #define __swift_unavailable(_msg) #endif +/* + * Attributes to support Swift concurrency. + */ +#if __has_attribute(__swift_attr__) +#define __swift_unavailable_from_async(_msg) __attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" _msg "\")"))) +#define __swift_nonisolated __attribute__((__swift_attr__("nonisolated"))) +#define __swift_nonisolated_unsafe __attribute__((__swift_attr__("nonisolated(unsafe)"))) +#else +#define __swift_unavailable_from_async(_msg) +#define __swift_nonisolated +#define __swift_nonisolated_unsafe +#endif + /* * __abortlike is the attribute to put on functions like abort() that are * typically used to mark assertions. These optimize the codegen @@ -482,6 +498,94 @@ #endif #endif // __alloc_size +/* + * Facilities below assist adoption of -Wunsafe-buffer-usage, an off-by-default + * Clang compiler warning that helps the developer minimize unsafe, raw + * buffer manipulation in the code that may lead to buffer overflow + * vulnerabilities. + * + * They are primarily designed for modern C++ code where -Wunsafe-buffer-usage + * comes with automatic fix-it hints that help the developer transform + * their code to use modern C++ containers, which may be made bounds-safe by + * linking against a version of the C++ standard library that offers + * bounds-checked containers. + * They can be used in plain C, but -fbounds-safety is the preferred solution + * for plain C (see also ). + * + * Attribute __unsafe_buffer_usage can be used to label functions that should be + * avoided as they may perform or otherwise introduce unsafe buffer + * manipulation operations. + * + * Calls to such functions are flagged by -Wunsafe-buffer-usage, similarly to + * how unchecked buffer manipulation operations are flagged when observed + * by the compiler directly: + * + * // An unsafe function that needs to be avoided. + * __unsafe_buffer_usage + * void foo(int *buf, size_t size); + * + * // A safe alternative to foo(). + * void foo(std::span buf); + * + * void bar(size_t idx) { + * int array[5]; + * + * // Direct unsafe buffer manipulation through subscript operator: + * array[idx] = 3; // warning [-Wunsafe-buffer-usage] + * // Unsafe buffer manipulation through function foo(): + * foo(array, 5); // warning [-Wunsafe-buffer-usage] + * // Checked buffer manipulation, with bounds information automatically + * // preserved for the purposes of runtime checks in standard library: + * foo(array); // no warning + * } + * + * While annotating a function as __unsafe_buffer_usage has an effect similar + * to annotating it as __deprecated, the __unsafe_buffer_usage attribute + * should be used whenever the resulting warning needs to be controlled + * by the -Wunsafe-buffer-usage flag (which is turned off in codebases that + * don't attempt to achieve bounds safety this way) as opposed to -Wdeprecated + * (enabled in most codebases). + * + * The attribute does NOT suppress -Wunsafe-buffer-usage warnings inside + * the function's body; it simply introduces new warnings at each call site + * to help the developers avoid the function entirely. Most of the time + * it does not make sense to annotate a function as __unsafe_buffer_usage + * without providing the users with a safe alternative. + * + * Pragmas __unsafe_buffer_usage_begin and __unsafe_buffer_usage_end + * annotate a range of code as intentionally containing unsafe buffer + * operations. They suppress -Wunsafe-buffer-usage warnings + * for unsafe operations in range: + * + * __unsafe_buffer_usage_begin + * array[idx] = 3; // warning suppressed + * foo(array, 5); // warning suppressed + * __unsafe_buffer_usage_end + * + * These pragmas are NOT a way to mass-annotate functions with the attribute + * __unsafe_buffer_usage. Functions declared within the pragma range + * do NOT get annotated automatically. In some rare situations it makes sense + * to do all three: put the attribute on the function, put pragmas inside + * the body of the function, and put pragmas around some call sites. + */ +#if __has_cpp_attribute(clang::unsafe_buffer_usage) +#define __has_safe_buffers 1 +#define __unsafe_buffer_usage [[clang::unsafe_buffer_usage]] +#elif __has_attribute(unsafe_buffer_usage) +#define __has_safe_buffers 1 +#define __unsafe_buffer_usage __attribute__((__unsafe_buffer_usage__)) +#else +#define __has_safe_buffers 0 +#define __unsafe_buffer_usage +#endif +#if __has_safe_buffers +#define __unsafe_buffer_usage_begin _Pragma("clang unsafe_buffer_usage begin") +#define __unsafe_buffer_usage_end _Pragma("clang unsafe_buffer_usage end") +#else +#define __unsafe_buffer_usage_begin +#define __unsafe_buffer_usage_end +#endif + /* * COMPILATION ENVIRONMENTS -- see compat(5) for additional detail * @@ -806,6 +910,11 @@ #if __has_include() #include #else +#if __has_feature(bounds_safety) +#error -fbounds-safety is enabled, but is missing. \ + This will lead to difficult-to-diagnose compilation errors. +#endif /* __has_feature(bounds_safety) */ + /* * We intentionally define to nothing pointer attributes which do not have an * impact on the ABI. __indexable and __bidi_indexable are not defined because @@ -815,7 +924,9 @@ #define __single #define __unsafe_indexable #define __counted_by(N) +#define __counted_by_or_null(N) #define __sized_by(N) +#define __sized_by_or_null(N) #define __ended_by(E) #define __terminated_by(T) #define __null_terminated @@ -833,6 +944,8 @@ /* __unsafe_forge intrinsics are defined as regular C casts. */ #define __unsafe_forge_bidi_indexable(T, P, S) ((T)(P)) #define __unsafe_forge_single(T, P) ((T)(P)) +#define __unsafe_forge_terminated_by(T, P, E) ((T)(P)) +#define __unsafe_forge_null_terminated(T, P) ((T)(P)) #define __terminated_by_to_indexable(P) (P) #define __unsafe_terminated_by_to_indexable(P) (P) #define __null_terminated_to_indexable(P) (P) @@ -845,6 +958,10 @@ /* this is a write-once variable; not useful without pointer checks. */ #define __unsafe_late_const + +#define __ptrcheck_unavailable +#define __ptrcheck_unavailable_r(REPLACEMENT) + #endif /* !__has_include() */ #if KERNEL && !BOUND_CHECKS && !__has_ptrcheck @@ -977,4 +1094,23 @@ #endif /* defined(KERNEL) && __has_attribute(xnu_usage_semantics) */ +#if defined(KERNEL_PRIVATE) && \ + __has_attribute(xnu_data_size) && \ + __has_attribute(xnu_returns_data_pointer) +/* + * Annotate function parameters to specify that they semantically + * represent the size of a data-only backing storage. + */ +# define __xnu_data_size __attribute__((xnu_data_size)) +/* + * Annotate function declarations to specify that the pointer they return + * points to a data-only backing storage. + */ +# define __xnu_returns_data_pointer __attribute__((xnu_returns_data_pointer)) +#else +# define __xnu_data_size +# define __xnu_returns_data_pointer +#endif + + #endif /* !_CDEFS_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/conf.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/conf.h index c259afaf..83949ba8 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/conf.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/conf.h @@ -101,7 +101,8 @@ typedef int open_close_fcn_t(dev_t dev, int flags, int devtype, typedef struct tty *d_devtotty_t(dev_t dev); typedef void strategy_fcn_t(struct buf *bp); -typedef int ioctl_fcn_t(dev_t dev, u_long cmd, caddr_t data, +typedef int ioctl_fcn_t(dev_t dev, u_long cmd, + caddr_t __sized_by(IOCPARM_LEN(cmd)) data, int fflag, struct proc *p); typedef int dump_fcn_t(void); /* parameters vary by architecture */ typedef int psize_fcn_t(dev_t dev); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/constrained_ctypes.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/constrained_ctypes.h index b42e2a11..5d03a142 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/constrained_ctypes.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/constrained_ctypes.h @@ -375,21 +375,6 @@ * }; * * - * 3.4. Variable-size structures - * - * Constrained pointer instrumentation depends on knowing the size of the - * structures. If the structure contains a variable array, the array needs - * to be annotated by `__sized_by' or `__counted_by' attribute: - * - * Example: - * - * struct sockaddr { - * __uint8_t sa_len; - * sa_family_t sa_family; - * char sa_data[__counted_by(sa_len - 2)]; - * }; - * - * * 4. ABI Compatibility Considerations * * The pointer instrumentation process has ABI implications. diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/dirent.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/dirent.h index 83dbb3b0..9d2a1962 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/dirent.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/dirent.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2008 Apple Inc. All rights reserved. + * Copyright (c) 2000-2008, 2023 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/event.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/event.h index 3584e526..27dc647c 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/event.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/event.h @@ -77,7 +77,7 @@ #define EVFILT_VM (-12) /* Virtual memory events */ #define EVFILT_EXCEPT (-15) /* Exception events */ -#define EVFILT_SYSCOUNT 17 +#define EVFILT_SYSCOUNT 18 #define EVFILT_THREADMARKER EVFILT_SYSCOUNT /* Internal use only */ #pragma pack(4) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/fcntl.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/fcntl.h index 563643fc..54928ef8 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/fcntl.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/fcntl.h @@ -124,7 +124,9 @@ #define O_CREAT 0x00000200 /* create if nonexistant */ #define O_TRUNC 0x00000400 /* truncate to zero length */ #define O_EXCL 0x00000800 /* error if already exists */ -#define FMARK 0x00001000 /* mark during gc() */ +#define O_RESOLVE_BENEATH 0x00001000 /* only for open(2), same value as FMARK */ + +#define FMARK 0x00001000 /* mark during gc(), same value as O_RESOLVE_BENEATH */ #define FDEFER 0x00002000 /* defer for next gc pass */ #define FWASLOCKED 0x00004000 /* has or has had an advisory fcntl lock */ #define FHASLOCK FWASLOCKED /* obsolete compatibility name */ @@ -362,6 +364,8 @@ #define F_ATTRIBUTION_TAG 111 /* Based on flags, query/set/delete a file's attribution tag */ +#define F_ADDSIGS_MAIN_BINARY 113 /* add detached signatures for main binary -- development only */ + // FS-specific fcntl()'s numbers begin at 0x00010000 and go up #define FCNTL_FS_SPECIFIC_BASE 0x00010000 diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/imgact.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/imgact.h index 7389039a..6da0e710 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/imgact.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/imgact.h @@ -146,15 +146,21 @@ struct image_params { #define IMGPF_SPAWN 0x00000010 /* spawn (without setexec) */ #define IMGPF_DISABLE_ASLR 0x00000020 /* disable ASLR */ #define IMGPF_ALLOW_DATA_EXEC 0x00000040 /* forcibly disallow data execution */ +#if XNU_TARGET_OS_OSX +#define IMGPF_3P_PLUGINS 0x00000080 /* this platform binary might load third party plugins */ +#endif /* XNU_TARGET_OS_OSX */ #define IMGPF_EXEC 0x00000100 /* exec */ #define IMGPF_HIGH_BITS_ASLR 0x00000200 /* randomize high bits of ASLR slide */ #define IMGPF_IS_64BIT_DATA 0x00000400 /* exec to a 64Bit register state */ #define IMGPF_DRIVER 0x00000800 /* exec of a driver binary (no LC_MAIN) */ -#define IMGPF_RESLIDE 0x00001000 /* reslide the shared cache */ +#define IMGPF_RESLIDE 0x00001000 /* reslide the shared cache */ #define IMGPF_PLUGIN_HOST_DISABLE_A_KEYS 0x00002000 /* process hosts plugins, disable ptr auth A keys */ #define IMGPF_HW_TPRO 0x00004000 /* HW support for read-only/read-write trusted paths */ +#define IMGPF_HARDENED_HEAP 0x00008000 /* enable hardened-heap for the process */ +#define IMGPF_RESERVED_3 0x01000000 #define IMGPF_ROSETTA 0x10000000 /* load rosetta runtime */ #define IMGPF_ALT_ROSETTA 0x20000000 /* load alternative rosetta runtime */ +#define IMGPF_RESERVED_2 0x40000000 #define IMGPF_NOJOP 0x80000000 /* diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kauth.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kauth.h index 02350b96..2fb517fb 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kauth.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kauth.h @@ -178,8 +178,24 @@ extern void kauth_cred_unref(kauth_cred_t *credp); * * This function doesn't take a reference, and the returned pointer is valid * for the duration of the current syscall. + * + * This function returns cached credentials without a reference which are valid + * for the duration of a MACF hook. If a copy of this pointer has to be stashed, + * the credentials must be retained with kauth_cred_ref(). + * + * (this function should really be called @c current_thread_cred()) */ -extern kauth_cred_t kauth_cred_get(void); +extern kauth_cred_t kauth_cred_get(void) __pure2; +#define current_thread_cred() kauth_cred_get() + +/*! + * @brief + * Returns the current MAC label slot value for the thread assumed credentials. + * + * @discussion + * These might differ from the proc's credential if settid() has been called. + */ +extern intptr_t current_thread_cred_label_get(int slot) __pure2; /*! * @brief @@ -192,8 +208,61 @@ extern kauth_cred_t kauth_cred_get(void); * The caller must call kauth_cred_unref() to dispose of the returned value. * * This is equivalent to @c kauth_cred_ref(kauth_cred_get()) + * + * (this function should really be called @c current_thread_cred_ref()) */ extern kauth_cred_t kauth_cred_get_with_ref(void); +#define current_thread_cred_ref() kauth_cred_get_with_ref() + +/*! + * @brief + * Returns the current cached proc credentials. + * + * @discussion + * This function will panic if its argument is neither PROC_NULL nor + * current_proc() (this can be used to protect against programming mistakes + * assuming the incorrect context). + * + * Note that this function returns the credential the proc had + * at the time of the last syscall this thread performed. + * + * This function returns cached credentials without a reference which are valid + * for the duration of a syscall only. If a copy of this pointer has to be + * stashed, the credentials must be retained with kauth_cred_ref(). + * + * For the freshest credentials, kauth_cred_proc_ref() + * must be used against @c current_proc(). + * + * This never returns NULL/NOCRED. + */ +extern kauth_cred_t current_cached_proc_cred(proc_t) __pure2; + +/*! + * @brief + * Returns the current MAC label slot value for the cached proc credentials. + */ +extern intptr_t current_cached_proc_label_get(int slot) __pure2; + +/*! + * @brief + * Returns the current cached proc credentials, with a reference. + * + * @discussion + * This function will panic if its argument is neither PROC_NULL nor + * current_proc() (this can be used to protect against programming mistakes + * assuming the incorrect context). + * + * Note that this function returns the credential the proc had + * at the time of the last syscall this thread performed. + * + * For the freshest credentials, kauth_cred_proc_ref() + * must be used against @c current_proc(). + * + * The caller must call kauth_cred_unref() to dispose of the returned value. + * + * This never returns NULL/NOCRED. + */ +extern kauth_cred_t current_cached_proc_cred_ref(proc_t); /*! * @brief @@ -207,6 +276,24 @@ extern kauth_cred_t kauth_cred_get_with_ref(void); */ extern kauth_cred_t kauth_cred_proc_ref(proc_t procp); +/*! + * @brief + * Returns the specified proc credentials, with a reference, or NOCRED. + * + * @discussion + * The caller must call kauth_cred_unref() to dispose of the returned value. + */ +extern kauth_cred_t kauth_cred_proc_ref_for_pid(pid_t pid); + +/*! + * @brief + * Returns the specified proc credentials, with a reference, or NOCRED. + * + * @discussion + * The caller must call kauth_cred_unref() to dispose of the returned value. + */ +extern kauth_cred_t kauth_cred_proc_ref_for_pidversion(pid_t pid, uint32_t version); + /*! * @brief diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kdebug.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kdebug.h index 2e2f2e06..24cef751 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kdebug.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kdebug.h @@ -153,7 +153,11 @@ __BEGIN_DECLS #define DBG_MACH_EXCP_EMUL 0x0E // Instruction emulated #define DBG_MACH_IHDLR 0x10 // Interrupt Handlers #define DBG_MACH_IPC 0x20 // Inter Process Comm +#define DBG_MACH_SUSPENSION 0x21 // Task/thread suspend and resume #define DBG_MACH_RESOURCE 0x25 // tracing limits, etc +#define DBG_MACH_EXCLAVES 0x2A +#define DBG_MACH_EXCLAVES_SCHEDULER 0x2B +#define DBG_MACH_EPOCH_SYNC 0x2C // Epoch Sync #define DBG_MACH_VM 0x30 // Virtual Memory #define DBG_MACH_LEAKS 0x31 // alloc/free #define DBG_MACH_WORKINGSET 0x32 // private subclass for working set related debugging @@ -179,6 +183,7 @@ __BEGIN_DECLS #define DBG_MACH_KCOV 0xAD // Kernel coverage sanitizer #define DBG_MACH_MACHDEP_EXCP_SC_x86 0xAE // Machine Dependent System Calls on x86 #define DBG_MACH_MACHDEP_EXCP_SC_ARM 0xAF // Machine Dependent System Calls on arm +#define DBG_MACH_VM_RECLAIM 0xB0 // Deferred Memory Reclamation // Codes for DBG_MACH_IO #define DBC_MACH_IO_MMIO_READ 0x1 @@ -229,7 +234,7 @@ __BEGIN_DECLS #define MACH_SCHED_MAINTENANCE 0x1f /* periodic maintenance thread */ #define MACH_DISPATCH 0x20 /* context switch completed */ #define MACH_QUANTUM_HANDOFF 0x21 /* quantum handoff occurred */ -#define MACH_MULTIQ_DEQUEUE 0x22 /* Result of multiq dequeue */ +/* unused MACH_MULTIQ_DEQUEUE 0x22 was: Result of multiq dequeue */ #define MACH_SCHED_THREAD_SWITCH 0x23 /* attempt direct context switch to hinted thread */ #define MACH_SCHED_SMT_BALANCE 0x24 /* SMT load balancing ASTs */ #define MACH_REMOTE_DEFERRED_AST 0x25 /* Deferred AST started against remote processor */ @@ -285,6 +290,7 @@ __BEGIN_DECLS #define MACH_SCHED_WI_EXTERNAL_WAKEUP 0x61 /* WI thread woken by a thread outside its same work interval */ #define MACH_SCHED_AST_CHECK 0x62 /* run ast check interrupt handler */ #define MACH_SCHED_PREEMPT_TIMER_ACTIVE 0x63 /* preempt timer is armed */ +#define MACH_PROCESSOR_SHUTDOWN 0x64 /* processor was shut down */ /* Codes for Clutch/Edge Scheduler (DBG_MACH_SCHED_CLUTCH) */ #define MACH_SCHED_CLUTCH_ROOT_BUCKET_STATE 0x0 /* __unused */ @@ -319,27 +325,108 @@ __BEGIN_DECLS #define KCOV_STKSZ_THRESHOLD_BELOW 0x1 /* thread stack is below threshold */ #define KCOV_STKSZ_DELTA 0X2 /* thread stack change is larger than delta. */ -/* Variants for MACH_MULTIQ_DEQUEUE */ -#define MACH_MULTIQ_BOUND 1 -#define MACH_MULTIQ_GROUP 2 -#define MACH_MULTIQ_GLOBAL 3 - -/* Arguments for vm_fault (DBG_MACH_VM) */ -#define DBG_ZERO_FILL_FAULT 1 -#define DBG_PAGEIN_FAULT 2 -#define DBG_COW_FAULT 3 -#define DBG_CACHE_HIT_FAULT 4 -#define DBG_NZF_PAGE_FAULT 5 -#define DBG_GUARD_FAULT 6 -#define DBG_PAGEINV_FAULT 7 -#define DBG_PAGEIND_FAULT 8 -#define DBG_COMPRESSOR_FAULT 9 -#define DBG_COMPRESSOR_SWAPIN_FAULT 10 -#define DBG_COR_FAULT 11 +/* Codes for Mach Virtual Memory (DBG_MACH_VM) */ + +#define DBG_VM_VNODE_PAGEOUT 0x001 +#define DBG_VM_FAULT_INTERNAL 0x002 + +#define DBG_VM_PURGEABLE_TOKEN_ADD 0x040 +#define DBG_VM_PURGEABLE_TOKEN_DELETE 0x041 +#define DBG_VM_PURGEABLE_TOKEN_RIPEN 0x042 +#define DBG_VM_PURGEABLE_OBJECT_ADD 0x048 +#define DBG_VM_PURGEABLE_OBJECT_REMOVE 0x049 +#define DBG_VM_PURGEABLE_OBJECT_PURGE 0x04a +#define DBG_VM_PURGEABLE_OBJECT_PURGE_ALL 0x04b +#define DBG_VM_PURGEABLE_OBJECT_PURGE_ONE 0x04c +#define DBG_VM_PURGEABLE_OBJECT_PURGE_LOOP 0x04e + +#define DBG_VM_MAP_PARTIAL_REAP 0x054 +#define DBG_VM_MAP_WILLNEED 0x055 + +#define DBG_VM_FAULT_CHECK_ZFDELAY 0x100 +#define DBG_VM_FAULT_COWDELAY 0x101 +#define DBG_VM_FAULT_ZFDELAY 0x102 +#define DBG_VM_FAULT_COMPRESSORDELAY 0x103 + +#define DBG_VM_PAGEOUT_SCAN 0x104 +#define DBG_VM_PAGEOUT_BALANCE 0x105 +#define DBG_VM_PAGEOUT_FREELIST 0x106 +#define DBG_VM_PAGEOUT_PURGEONE 0x107 +#define DBG_VM_PAGEOUT_CACHE_EVICT 0x108 +#define DBG_VM_PAGEOUT_THREAD_BLOCK 0x109 +#define DBG_VM_PAGEOUT_JETSAM 0x10A +#define DBG_VM_INFO1 0x10B +#define DBG_VM_INFO2 0x10C +#define DBG_VM_INFO3 0x10D +#define DBG_VM_INFO4 0x10E +#define DBG_VM_INFO5 0x10F +#define DBG_VM_INFO6 0x110 +#define DBG_VM_INFO7 0x111 +#define DBG_VM_INFO8 0x112 +#define DBG_VM_INFO9 0x113 +#define DBG_VM_INFO10 0x114 + +#define DBG_VM_UPL_PAGE_WAIT 0x120 +#define DBG_VM_IOPL_PAGE_WAIT 0x121 +#define DBG_VM_PAGE_WAIT_BLOCK 0x122 +#define DBG_VM_PAGE_SLEEP 0x123 +#define DBG_VM_PAGE_EXPEDITE 0x124 +#define DBG_VM_PAGE_EXPEDITE_NO_MEMORY 0x125 +#define DBG_VM_PAGE_GRAB 0x126 +#define DBG_VM_PAGE_RELEASE 0x127 +#define DBG_VM_COMPRESSOR_COMPACT_AND_SWAP 0x128 +#define DBG_VM_COMPRESSOR_DELAYED_COMPACT 0x129 +#define DBG_VM_OBJECT_SLEEP 0x12a +#define DBG_VM_PAGE_WAKEUP 0x12b +#define DBG_VM_PAGE_WAKEUP_DONE 0x12c + +#define DBG_VM_PRESSURE_EVENT 0x130 +#define DBG_VM_EXECVE 0x131 +#define DBG_VM_WAKEUP_COMPACTOR_SWAPPER 0x132 +#define DBG_VM_UPL_REQUEST 0x133 +#define DBG_VM_IOPL_REQUEST 0x134 +#define DBG_VM_KERN_REQUEST 0x135 + +#define DBG_VM_DATA_WRITE 0x140 +#define DBG_VM_PRESSURE_LEVEL_CHANGE 0x141 +#define DBG_VM_PHYS_WRITE_ACCT 0x142 + +#define DBG_VM_MAP_LOOKUP_ENTRY_FAILURE 0x143 + + +/* + * Codes for Working Set Measurement (DBG_MACH_WORKINGSET) + */ +#define VM_DISCONNECT_ALL_PAGE_MAPPINGS 0x00 +#define VM_DISCONNECT_TASK_PAGE_MAPPINGS 0x01 +#define VM_REAL_FAULT_ADDR_INTERNAL 0x02 +#define VM_REAL_FAULT_ADDR_PURGABLE 0x03 +#define VM_REAL_FAULT_ADDR_EXTERNAL 0x04 +#define VM_REAL_FAULT_ADDR_SHAREDCACHE 0x05 +#define VM_REAL_FAULT_FAST 0x06 +#define VM_REAL_FAULT_SLOW 0x07 +#define VM_MAP_LOOKUP_OBJECT 0x08 + +/* + * Fault Type Enumeration (DBG_MACH_WORKINGSET) + * NB: These are *not* trace codes. They comprise an enumeration passed as an + * argument to real_fault events. + */ +#define DBG_ZERO_FILL_FAULT 0x01 +#define DBG_PAGEIN_FAULT 0x02 +#define DBG_COW_FAULT 0x03 +#define DBG_CACHE_HIT_FAULT 0x04 +#define DBG_NZF_PAGE_FAULT 0x05 +#define DBG_GUARD_FAULT 0x06 +#define DBG_PAGEINV_FAULT 0x07 +#define DBG_PAGEIND_FAULT 0x08 +#define DBG_COMPRESSOR_FAULT 0x09 +#define DBG_COMPRESSOR_SWAPIN_FAULT 0x0a +#define DBG_COR_FAULT 0x0b /* Codes for IPC (DBG_MACH_IPC) */ -#define MACH_TASK_SUSPEND 0x0 /* Suspended a task */ -#define MACH_TASK_RESUME 0x1 /* Resumed a task */ +/* unused MACH_TASK_SUSPEND 0x0 was: Suspended a task */ +/* unused MACH_TASK_RESUME 0x1 was: Resumed a task */ #define MACH_THREAD_SET_VOUCHER 0x2 #define MACH_IPC_MSG_SEND 0x3 /* mach msg send, uniq msg info */ #define MACH_IPC_MSG_RECV 0x4 /* mach_msg receive */ @@ -353,6 +440,50 @@ __BEGIN_DECLS #define MACH_IPC_PORT_ENTRY_MODIFY 0xc /* A port space gained or lost a port right (reference) */ #define MACH_IPC_DESTROY_GUARDED_DESC 0xd /* Unable to receive a guarded descriptor */ +/* Codes for Suspension (DBG_MACH_SUSPENSION) */ +#define MACH_TASK_SUSPEND 0x0 /* Suspended a task */ +#define MACH_TASK_RESUME 0x1 /* Resumed a task */ +#define MACH_THREAD_SUSPEND 0x2 /* Suspended a thread */ +#define MACH_THREAD_RESUME 0x3 /* Resumed a thread */ + + +#define MACH_EXCLAVES_SWITCH 0x0 +#define MACH_EXCLAVES_XNUPROXY 0x1 +#define MACH_EXCLAVES_RPC 0x2 +#define MACH_EXCLAVES_UPCALL 0x3 +#define MACH_EXCLAVES_BOOT_TASK 0x4 + + +#define MACH_EXCLAVES_SCHEDULER_YIELD 0x0 +#define MACH_EXCLAVES_SCHEDULER_SPAWNED 0x1 +#define MACH_EXCLAVES_SCHEDULER_TERMINATED 0x2 +#define MACH_EXCLAVES_SCHEDULER_WAIT 0x3 +#define MACH_EXCLAVES_SCHEDULER_WAKE 0x4 +#define MACH_EXCLAVES_SCHEDULER_SUSPENDED 0x5 +#define MACH_EXCLAVES_SCHEDULER_RESUMED 0x6 +#define MACH_EXCLAVES_SCHEDULER_INTERRUPTED 0x7 +#define MACH_EXCLAVES_SCHEDULER_NOTHING_SCHEDULED 0x8 +#define MACH_EXCLAVES_SCHEDULER_ALL_EXCLAVES_BOOTED 0x9 +#define MACH_EXCLAVES_SCHEDULER_EARLY_ALLOC 0xa +#define MACH_EXCLAVES_SCHEDULER_WATCHDOG_PANIC_COMPLETE 0xb +#define MACH_EXCLAVES_SCHEDULER_PANICKING 0xc +#define MACH_EXCLAVES_SCHEDULER_REQ_RESUME_WITH_HOSTID 0xd +#define MACH_EXCLAVES_SCHEDULER_REQ_INTERRUPT_WITH_HOSTID 0xe +#define MACH_EXCLAVES_SCHEDULER_REQ_UPDATE_TIMER_OFFSET 0xf +#define MACH_EXCLAVES_SCHEDULER_REQ_BOOT_EXCLAVES 0x10 +#define MACH_EXCLAVES_SCHEDULER_REQ_PMM_EARLY_ALLOC_RESPONSE 0x11 +#define MACH_EXCLAVES_SCHEDULER_REQ_WATCHDOG_PANIC 0x12 + + +/* Codes for Epoch Sync (DBG_MACH_EPOCH_SYNC) */ +#define MACH_EPOCH_SYNC_WAIT_STALE 0x0 +#define MACH_EPOCH_SYNC_WAIT 0x1 +#define MACH_EPOCH_SYNC_WAKE_NO_WAITERS 0x2 +#define MACH_EPOCH_SYNC_WAKE_ONE 0x3 +#define MACH_EPOCH_SYNC_WAKE_ALL 0x4 +#define MACH_EPOCH_SYNC_WAKE_ONE_WITH_OWNER 0x5 +#define MACH_EPOCH_SYNC_WAKE_THREAD 0x6 + /* Codes for thread groups (DBG_MACH_THREAD_GROUP) */ #define MACH_THREAD_GROUP_NEW 0x0 #define MACH_THREAD_GROUP_FREE 0x1 @@ -518,6 +649,20 @@ __BEGIN_DECLS #define HV_X86_VM_UNMAP_TRAP 0x2c #define HV_X86_TSC_OFFSET_SET 0x2d +#pragma mark Deferred Memory Reclamation Codes (DBG_MACH_VM_RECLAIM) + +#define VM_RECLAIM_UPDATE_ACCOUNTING 0x01 +#define VM_RECLAIM_TRIM 0x02 +#define VM_RECLAIM_CHUNK 0x03 +#define VM_RECLAIM_ENTRY 0x04 +#define VM_RECLAIM_DRAIN 0x05 + +#define VM_RECLAIM_INIT 0x07 +#define VM_RECLAIM_SAMPLE 0x08 + +#define VM_RECLAIM_RESIZE 0x0a +#define VM_RECLAIM_FLUSH 0x0b + /* **** The Kernel Debug Sub Classes for Network (DBG_NETWORK) **** */ #define DBG_NETIP 1 /* Internet Protocol */ #define DBG_NETARP 2 /* Address Resolution Protocol */ @@ -1039,6 +1184,9 @@ __BEGIN_DECLS #define MEMSTAT_CODE(code) BSDDBG_CODE(DBG_BSD_MEMSTAT, code) +#define VM_RECLAIM_CODE(code) MACHDBG_CODE(DBG_MACH_VM_RECLAIM, code) +#define VMDBG_CODE(code) MACHDBG_CODE(DBG_MACH_VM, code) + #define PMAP_CODE(code) MACHDBG_CODE(DBG_MACH_PMAP, code) #define IMPORTANCE_CODE(SubClass, code) KDBG_EVENTID(DBG_IMPORTANCE, (SubClass), (code)) @@ -1079,6 +1227,8 @@ __BEGIN_DECLS #define DECR_TIMER_RESCAN MACHDBG_CODE(DBG_MACH_EXCP_DECI,15) #define DECR_TIMER_PAUSE MACHDBG_CODE(DBG_MACH_EXCP_DECI,17) #define DECR_TIMER_POSTPONE MACHDBG_CODE(DBG_MACH_EXCP_DECI,18) +#define DECR_TIMER_SHUTDOWN MACHDBG_CODE(DBG_MACH_EXCP_DECI,19) +#define DECR_TIMER_EXPIRE_LOCAL MACHDBG_CODE(DBG_MACH_EXCP_DECI,20) #endif // __APPLE_API_UNSTABLE diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kdebug_kernel.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kdebug_kernel.h index 98f18052..283799b4 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kdebug_kernel.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kdebug_kernel.h @@ -33,6 +33,7 @@ #include #include #include +#include #include __BEGIN_DECLS diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kern_control.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kern_control.h index 99d0060f..04686e90 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kern_control.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kern_control.h @@ -408,7 +408,8 @@ ctl_deregister(kern_ctl_ref kctlref); * ENOBUFS - The queue is full or there are no free mbufs. */ errno_t -ctl_enqueuedata(kern_ctl_ref kctlref, u_int32_t unit, void *data, size_t len, u_int32_t flags); + ctl_enqueuedata(kern_ctl_ref kctlref, u_int32_t unit, void *__sized_by(len) data, + size_t len, u_int32_t flags); /*! * @function ctl_enqueuembuf diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_mbuf.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_mbuf.h index 268c3478..a8dddd3a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_mbuf.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_mbuf.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008-2017 Apple Inc. All rights reserved. + * Copyright (c) 2008-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -409,7 +409,7 @@ __NKE_API_DEPRECATED; * ENOMEM - Not enough memory available */ extern errno_t mbuf_attachcluster(mbuf_how_t how, mbuf_type_t type, - mbuf_t *mbuf, caddr_t extbuf, void (*extfree)(caddr_t, u_int, caddr_t), + mbuf_t *mbuf, caddr_t extbuf __sized_by_or_null(extsize), void (*extfree)(caddr_t, u_int, caddr_t), size_t extsize, caddr_t extarg) __NKE_API_DEPRECATED; @@ -436,7 +436,7 @@ __NKE_API_DEPRECATED; * In this case, the caller is advised to use 4096 bytes or * smaller during subseqent requests. */ -extern errno_t mbuf_alloccluster(mbuf_how_t how, size_t *size, caddr_t *addr) +extern errno_t mbuf_alloccluster(mbuf_how_t how, size_t *size, char * __sized_by_or_null(*size) * addr) __NKE_API_DEPRECATED; /*! @@ -801,7 +801,7 @@ __NKE_API_DEPRECATED; * @result 0 upon success otherwise the errno error. */ extern errno_t mbuf_copydata(const mbuf_t mbuf, size_t offset, size_t length, - void *out_data) + void *out_data __sized_by_or_null(length)) __NKE_API_DEPRECATED; /*! @@ -827,7 +827,7 @@ __NKE_API_DEPRECATED; * @result 0 upon success, EINVAL or ENOBUFS upon failure. */ extern errno_t mbuf_copyback(mbuf_t mbuf, size_t offset, size_t length, - const void *data, mbuf_how_t how) + const void *data __sized_by_or_null(length), mbuf_how_t how) __NKE_API_DEPRECATED; /*! @@ -1158,18 +1158,20 @@ __NKE_API_DEPRECATED; /*! * @function mbuf_get_tso_requested - * @discussion This function is used by the driver to determine which - * checksum operations should be performed in hardware. + * @discussion This function is used by the driver to determine + * whether TSO should be performed. * @param mbuf The mbuf containing the packet. - * @param request Flags indicating which values are being requested + * @param request Flags indicating which TSO offload is requested * for this packet. - * @param value The requested value. + * @param mss The returned MSS. * @result 0 upon success otherwise the errno error. */ extern errno_t mbuf_get_tso_requested(mbuf_t mbuf, - mbuf_tso_request_flags_t *request, u_int32_t *value) + mbuf_tso_request_flags_t *request, u_int32_t *mss) __NKE_API_DEPRECATED; + + /*! * @function mbuf_clear_csum_requested * @discussion This function clears the checksum request flags. diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_socket.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_socket.h index f6bdc262..09a8b4b3 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_socket.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_socket.h @@ -40,6 +40,7 @@ #include #include #include +#include #include #define __NKE_API_DEPRECATED __API_DEPRECATED("Network Kernel Extension KPI is deprecated", macos(10.4, 10.15)) @@ -94,7 +95,7 @@ typedef void (*sock_upcall)(socket_t so, void *cookie, int waitf); * socket for tracking the connection. * @result 0 on success otherwise the errno error. */ -extern errno_t sock_accept(socket_t so, struct sockaddr *from, int fromlen, +extern errno_t sock_accept(socket_t so, struct sockaddr *__sized_by(fromlen) from, int fromlen, int flags, sock_upcall callback, void *cookie, socket_t *new_so) __NKE_API_DEPRECATED; @@ -136,7 +137,7 @@ __NKE_API_DEPRECATED; * @param peernamelen Length of storage for the peer name. * @result 0 on success otherwise the errno error. */ -extern errno_t sock_getpeername(socket_t so, struct sockaddr *peername, +extern errno_t sock_getpeername(socket_t so, struct sockaddr *__sized_by(peernamelen) peername, int peernamelen) __NKE_API_DEPRECATED; @@ -149,7 +150,7 @@ __NKE_API_DEPRECATED; * @param socknamelen Length of storage for the socket name. * @result 0 on success otherwise the errno error. */ -extern errno_t sock_getsockname(socket_t so, struct sockaddr *sockname, +extern errno_t sock_getsockname(socket_t so, struct sockaddr *__sized_by(socknamelen) sockname, int socknamelen) __NKE_API_DEPRECATED; @@ -175,7 +176,7 @@ __NKE_API_DEPRECATED; * @param argp The argument. * @result 0 on success otherwise the errno error. */ -extern errno_t sock_ioctl(socket_t so, unsigned long request, void *argp) +extern errno_t sock_ioctl(socket_t so, unsigned long request, void *__sized_by(IOCPARM_LEN(request)) argp) __NKE_API_DEPRECATED; /*! diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_socketfilter.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_socketfilter.h index cf1fa07b..dd51fea2 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_socketfilter.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/kpi_socketfilter.h @@ -54,6 +54,7 @@ #include #include +#include #include #define __NKE_API_DEPRECATED __API_DEPRECATED("Network Kernel Extension KPI is deprecated", macos(10.4, 10.15)) @@ -451,7 +452,7 @@ typedef errno_t (*sf_listen_func)(void *cookie, socket_t so); * this error. */ typedef errno_t (*sf_ioctl_func)(void *cookie, socket_t so, - unsigned long request, const char* argp); + unsigned long request, const char*__sized_by(IOCPARM_LEN(request)) argp); /*! * @typedef sf_accept_func @@ -711,7 +712,7 @@ __NKE_API_DEPRECATED; * @param length The number of bytes to copy. * @result An errno error or zero upon success. */ -extern errno_t sockopt_copyin(sockopt_t sopt, void *data, size_t length) +extern errno_t sockopt_copyin(sockopt_t sopt, void *__sized_by(length) data, size_t length) __NKE_API_DEPRECATED; /*! @@ -722,7 +723,7 @@ __NKE_API_DEPRECATED; * @param length The number of bytes to copy. * @result An errno error or zero upon success. */ -extern errno_t sockopt_copyout(sockopt_t sopt, void *data, size_t length) +extern errno_t sockopt_copyout(sockopt_t sopt, void *__sized_by(length) data, size_t length) __NKE_API_DEPRECATED; #undef __NKE_API_DEPRECATED diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/mbuf.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/mbuf.h index 6ff96dcd..ac231680 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/mbuf.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/mbuf.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999-2021 Apple Inc. All rights reserved. + * Copyright (c) 1999-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -107,6 +107,25 @@ #define MT_TAG 16 /* volatile metadata associated to pkts */ #define MT_MAX 32 /* enough? */ +enum { + MTF_FREE = (1 << MT_FREE), + MTF_DATA = (1 << MT_DATA), + MTF_HEADER = (1 << MT_HEADER), + MTF_SOCKET = (1 << MT_SOCKET), + MTF_PCB = (1 << MT_PCB), + MTF_RTABLE = (1 << MT_RTABLE), + MTF_HTABLE = (1 << MT_HTABLE), + MTF_ATABLE = (1 << MT_ATABLE), + MTF_SONAME = (1 << MT_SONAME), + MTF_SOOPTS = (1 << MT_SOOPTS), + MTF_FTABLE = (1 << MT_FTABLE), + MTF_RIGHTS = (1 << MT_RIGHTS), + MTF_IFADDR = (1 << MT_IFADDR), + MTF_CONTROL = (1 << MT_CONTROL), + MTF_OOBDATA = (1 << MT_OOBDATA), + MTF_TAG = (1 << MT_TAG), +}; + /* * Mbuf statistics (legacy). @@ -181,7 +200,6 @@ typedef struct mb_class_stat { u_int32_t mbcl_mc_waiter_cnt; /* # waiters on the cache */ u_int32_t mbcl_mc_wretry_cnt; /* # of wait retries */ u_int32_t mbcl_mc_nwretry_cnt; /* # of no-wait retry attempts */ - u_int32_t mbcl_peak_reported; /* last usage peak reported */ u_int32_t mbcl_reserved[7]; /* for future use */ } mb_class_stat_t; @@ -191,6 +209,7 @@ typedef struct mb_class_stat { #define MCS_OFFLINE 3 /* cache is offline (resizing) */ + typedef struct mb_stat { u_int32_t mbs_cnt; /* number of classes */ u_int32_t mbs_pad; /* padding */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/mman.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/mman.h index 708fe452..95b5ba66 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/mman.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/mman.h @@ -175,6 +175,10 @@ /* * msync() flags + * + * When making a new MS_*, update tests vm_parameter_validation_[user|kern] + * and their expected results; they deliberately call VM functions with invalid + * msync values and you may be turning one of those invalid msyncs valid. */ #define MS_ASYNC 0x0001 /* [MF|SIO] return immediately */ #define MS_INVALIDATE 0x0002 /* [MF|SIO] invalidate all cached data */ @@ -189,6 +193,10 @@ /* * Advice to madvise + * + * When making a new MADV_*, update tests vm_parameter_validation_[user|kern] + * and their expected results; they deliberately call VM functions with invalid + * madvise values and you may be turning one of those invalid madvises valid. */ #define POSIX_MADV_NORMAL 0 /* [MC1] no further special treatment */ #define POSIX_MADV_RANDOM 1 /* [MC1] expect random page refs */ @@ -208,6 +216,7 @@ #define MADV_FREE_REUSE 8 /* caller wants to reuse those pages */ #define MADV_CAN_REUSE 9 #define MADV_PAGEOUT 10 /* page out now (internal only) */ +#define MADV_ZERO 11 /* zero pages without faulting in additional pages */ /* * Return bits from mincore diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/mount.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/mount.h index 5e1ea56e..01b33b88 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/mount.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/mount.h @@ -490,7 +490,8 @@ struct netfs_status { #define VQ_NEARLOWDISK 0x2000 /* Above lowdisk and below desired disk space */ #define VQ_DESIRED_DISK 0x4000 /* the desired disk space */ #define VQ_FREE_SPACE_CHANGE 0x8000 /* free disk space has significantly changed */ -#define VQ_FLAG10000 0x10000 /* placeholder */ +#define VQ_PURGEABLE_SPACE_CHANGE 0x10000 /* purgeable disk space has significantly changed */ +#define VQ_FLAG20000 0x20000 /* placeholder */ @@ -1292,7 +1293,7 @@ typedef struct fhandle fhandle_t; * cryptexes. We need to make sure we do not use the reserved values in each for a new authentication type. */ // bump up the version for any change that has kext dependency -#define CRYPTEX_AUTH_STRUCT_VERSION 1 +#define CRYPTEX_AUTH_STRUCT_VERSION 2 OS_ENUM(graftdmg_type, uint32_t, GRAFTDMG_CRYPTEX_BOOT = 1, GRAFTDMG_CRYPTEX_PREBOOT = 2, @@ -1301,8 +1302,9 @@ OS_ENUM(graftdmg_type, uint32_t, // Reserved: CRYPTEX1_AUTH_ENV_GENERIC_SUPPLEMENTAL = 5, GRAFTDMG_CRYPTEX_PDI_NONCE = 6, GRAFTDMG_CRYPTEX_EFFECTIVE_AP = 7, + GRAFTDMG_CRYPTEX_MOBILE_ASSET = 8, // Update this when a new type is added - GRAFTDMG_CRYPTEX_MAX = 7); + GRAFTDMG_CRYPTEX_MAX = 8); OS_ENUM(cryptex_auth_type, uint32_t, // Reserved: GRAFTDMG_CRYPTEX_BOOT = 1, @@ -1311,8 +1313,10 @@ OS_ENUM(cryptex_auth_type, uint32_t, CRYPTEX1_AUTH_ENV_GENERIC = 4, CRYPTEX1_AUTH_ENV_GENERIC_SUPPLEMENTAL = 5, CRYPTEX_AUTH_PDI_NONCE = 6, - // Reserved: GRAFTDMG_CRYPTEX_EFFECTIVE_AP = 7 + // Reserved: GRAFTDMG_CRYPTEX_EFFECTIVE_AP = 7, + CRYPTEX_AUTH_MOBILE_ASSET = 8, // Update this when a new type is added - CRYPTEX_AUTH_MAX = 7); + CRYPTEX_AUTH_MAX = 8); + #endif /* !_SYS_MOUNT_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/param.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/param.h index 9ab46b4a..c297e65e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/param.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/param.h @@ -208,7 +208,7 @@ #define isset(a, i) (((unsigned char *)(a))[(i)/NBBY] & (1u<<((i)%NBBY))) #define isclr(a, i) ((((unsigned char *)(a))[(i)/NBBY] & (1u<<((i)%NBBY))) == 0) -/* Macros for counting and rounding. */ +/* Macros for counting, rounding. */ #ifndef howmany #define howmany(x, y) ((((x) % (y)) == 0) ? ((x) / (y)) : (((x) / (y)) + 1)) #endif diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/perfmon_private.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/perfmon_private.h deleted file mode 100644 index 11e4c2f4..00000000 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/perfmon_private.h +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (c) 2020 Apple Inc. All rights reserved. -// -// @APPLE_OSREFERENCE_LICENSE_HEADER_START@ -// -// This file contains Original Code and/or Modifications of Original Code -// as defined in and that are subject to the Apple Public Source License -// Version 2.0 (the 'License'). You may not use this file except in -// compliance with the License. The rights granted to you under the License -// may not be used to create, or enable the creation or redistribution of, -// unlawful or unlicensed copies of an Apple operating system, or to -// circumvent, violate, or enable the circumvention or violation of, any -// terms of an Apple operating system software license agreement. -// -// Please obtain a copy of the License at -// http://www.opensource.apple.com/apsl/ and read it before using this file. -// -// The Original Code and all software distributed under the License are -// distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER -// EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, -// INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. -// Please see the License for the specific language governing rights and -// limitations under the License. -// -// @APPLE_OSREFERENCE_LICENSE_HEADER_END@ - -#ifndef BSD_PERFMON_PRIVATE_H -#define BSD_PERFMON_PRIVATE_H - -#include -#include -#include -#include - -__BEGIN_DECLS - -struct perfmon_layout { - unsigned short pl_counter_count; - unsigned short pl_fixed_offset; - unsigned short pl_fixed_count; - unsigned short pl_unit_count; - unsigned short pl_reg_count; - unsigned short pl_attr_count; -}; - -typedef char perfmon_name_t[16]; - -struct perfmon_event { - char pe_name[32]; - uint64_t pe_number; - unsigned short pe_counter; -}; - -struct perfmon_attr { - perfmon_name_t pa_name; - uint64_t pa_value; -}; - -struct perfmon_spec { - struct perfmon_event *ps_events; - struct perfmon_attr *ps_attrs; - unsigned short ps_event_count; - unsigned short ps_attr_count; -}; - - -__END_DECLS - -#include - -__BEGIN_DECLS - -// A perfmon file is initially mutable, where events can be added and -// attributes set. The fine-grained nature of this API gives clients insight -// into which specific configuration was erroneous and the associated overheads -// are taken only when the system is configured, at process startup. -enum perfmon_ioctl { - // PMU metadata, always allowed. - - // Immutable information about the PMU. - PERFMON_CTL_GET_LAYOUT = _IOR('P', 0, struct perfmon_layout), - PERFMON_CTL_LIST_ATTRS = _IO('P', 1), - PERFMON_CTL_LIST_REGS = _IO('P', 2), - - // Get diagnostic information by sampling the hardware registers. - PERFMON_CTL_SAMPLE_REGS = _IO('P', 3), - - // Set up a configuration, only allowed when open for writing and before - // configure. - - // Add an event to the configuration. - PERFMON_CTL_ADD_EVENT = _IOWR('P', 5, struct perfmon_event), - // Apply attributes to a given event, or globally. - PERFMON_CTL_SET_ATTR = _IOW('P', 6, struct perfmon_attr), - - // Control the state of the PMU, only allowed when open for writing. - - // Configure the monitor, no more settings can be adjusted after this is - // called, one time only. - PERFMON_CTL_CONFIGURE = _IO('P', 7), - // Start counting, only allowed after configuration and counting stopped. - PERFMON_CTL_START = _IO('P', 8), - // Stop counting, only allowed with counting started. - PERFMON_CTL_STOP = _IO('P', 9), - - // Query the confguration, only allowed when open for writing. - PERFMON_CTL_SPECIFY = _IOWR('P', 10, struct perfmon_spec), -}; - - - -__END_DECLS - -#endif // !defined(BSD_PERFMON_PRIVATE_H) diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/proc.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/proc.h index 9e998edd..f7327d77 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/proc.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/proc.h @@ -94,6 +94,8 @@ extern bool proc_is_alien(proc_t p); proc_t current_proc_EXTERNAL(void); +struct proc_ident; + /* * __unsafe_indexable is a workaround for * rdar://88409003 (PredefinedExpr trips C string detection) @@ -125,13 +127,15 @@ extern int proc_isinferior(int pid1, int pid2); void proc_name(int pid, char * buf, int size); /* returns the 32-byte name if it exists, otherwise returns the 16-byte name */ extern char *proc_best_name(proc_t p); -/* This routine is simillar to proc_name except it returns for current process */ +/* this routine is similar to proc_name except it returns for current process */ void proc_selfname(char * buf, int size); /* find a process with a given pid. This comes with a reference which needs to be dropped by proc_rele */ extern proc_t proc_find(int pid); /* find a process with a given process identity */ extern proc_t proc_find_ident(struct proc_ident const *i); +/* find a process with a given audit token */ +extern proc_t proc_find_audit_token(const audit_token_t token); /* returns a handle to current process which is referenced. The reference needs to be dropped with proc_rele */ extern proc_t proc_self(void); /* releases the held reference on the process */ @@ -142,6 +146,8 @@ extern int proc_pid(proc_t); extern int proc_ppid(proc_t); /* returns the original pid of the parent of a given process */ extern int proc_original_ppid(proc_t); +/* returns the pid version of the original parent of a given process */ +extern int proc_orig_ppidversion(proc_t); /* returns the start time of the given process */ extern int proc_starttime(proc_t, struct timeval *); /* returns whether the given process is on simulated platform */ @@ -175,7 +181,7 @@ extern int proc_in_teardown(proc_t); extern int proc_suser(proc_t p); /* returns the cred assicaited with the process; temporary api */ -__deprecated_msg("proc_ucred is unsafe, use kauth_cred_proc_ref()") +__deprecated_msg("proc_ucred is unsafe, use kauth_cred_proc_ref() or current_cached_proc_cred()") kauth_cred_t proc_ucred(proc_t p); /* returns 1 if the process is tainted by uid or gid changes,e else 0 */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/queue.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/queue.h index 4ae79ffc..2470343d 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/queue.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/queue.h @@ -118,30 +118,30 @@ * For details on the use of these macros, see the queue(3) manual page. * * - * SLIST LIST STAILQ TAILQ CIRCLEQ - * _HEAD + + + + + - * _HEAD_INITIALIZER + + + + - - * _ENTRY + + + + + - * _INIT + + + + + - * _EMPTY + + + + + - * _FIRST + + + + + - * _NEXT + + + + + - * _PREV - - - + + - * _LAST - - + + + - * _FOREACH + + + + + - * _FOREACH_SAFE + + + + - - * _FOREACH_REVERSE - - - + - - * _FOREACH_REVERSE_SAFE - - - + - - * _INSERT_HEAD + + + + + - * _INSERT_BEFORE - + - + + - * _INSERT_AFTER + + + + + - * _INSERT_TAIL - - + + + - * _CONCAT - - + + - - * _REMOVE_AFTER + - + - - - * _REMOVE_HEAD + - + - - - * _REMOVE_HEAD_UNTIL - - + - - - * _REMOVE + + + + + - * _SWAP - + + + - + * SLIST LIST STAILQ TAILQ CIRCLEQ + * _HEAD + + + + + + * _HEAD_INITIALIZER + + + + - + * _ENTRY + + + + + + * _INIT + + + + + + * _EMPTY + + + + + + * _FIRST + + + + + + * _NEXT + + + + + + * _PREV - - - + + + * _LAST - - + + + + * _FOREACH + + + + + + * _FOREACH_SAFE + + + + - + * _FOREACH_REVERSE - - - + - + * _FOREACH_REVERSE_SAFE - - - + - + * _INSERT_HEAD + + + + + + * _INSERT_BEFORE - + - + + + * _INSERT_AFTER + + + + + + * _INSERT_TAIL - - + + + + * _CONCAT - - + + - + * _REMOVE_AFTER + - + - - + * _REMOVE_HEAD + - + - - + * _REMOVE_HEAD_UNTIL - - + - - + * _REMOVE + + + + + + * _SWAP - + + + - * */ #ifdef QUEUE_MACRO_DEBUG diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/resource.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/resource.h index 2f652722..66325693 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/resource.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/resource.h @@ -105,7 +105,7 @@ typedef __uint64_t rlim_t; #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL #define PRIO_DARWIN_THREAD 3 /* Second argument is always 0 (current thread) */ #define PRIO_DARWIN_PROCESS 4 /* Second argument is a PID */ - +/* Additional private parameters to getpriority()/setpriority() are in resource_private.h */ /* * Range limitations for the value of the third parameter to setpriority(). @@ -410,7 +410,12 @@ struct rusage_info_v6 { uint64_t ri_pcycles; uint64_t ri_energy_nj; uint64_t ri_penergy_nj; - uint64_t ri_reserved[14]; + uint64_t ri_secure_time_in_system; + uint64_t ri_secure_ptime_in_system; + uint64_t ri_neural_footprint; + uint64_t ri_lifetime_max_neural_footprint; + uint64_t ri_interval_max_neural_footprint; + uint64_t ri_reserved[9]; }; typedef struct rusage_info_v6 rusage_info_current; @@ -550,7 +555,7 @@ struct proc_rlimit_control_wakeupmon { int32_t wm_rate; }; - +/* Additional private I/O policies are in resource_private.h */ /* I/O type */ #define IOPOL_TYPE_DISK 0 @@ -581,7 +586,6 @@ struct proc_rlimit_control_wakeupmon { #define IOPOL_APPLICATION IOPOL_STANDARD #define IOPOL_NORMAL IOPOL_IMPORTANT - #define IOPOL_ATIME_UPDATES_DEFAULT 0 #define IOPOL_ATIME_UPDATES_OFF 1 @@ -601,8 +605,9 @@ struct proc_rlimit_control_wakeupmon { #define IOPOL_VFS_IGNORE_PERMISSIONS_OFF 0 #define IOPOL_VFS_IGNORE_PERMISSIONS_ON 1 -#define IOPOL_VFS_SKIP_MTIME_UPDATE_OFF 0 -#define IOPOL_VFS_SKIP_MTIME_UPDATE_ON 1 +#define IOPOL_VFS_SKIP_MTIME_UPDATE_OFF 0 +#define IOPOL_VFS_SKIP_MTIME_UPDATE_ON 1 +#define IOPOL_VFS_SKIP_MTIME_UPDATE_IGNORE 2 #define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_OFF 0 #define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_ON 1 @@ -615,4 +620,6 @@ struct proc_rlimit_control_wakeupmon { #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ + + #endif /* !_SYS_RESOURCE_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/resource_private.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/resource_private.h index 0051e73e..a46f4569 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/resource_private.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/resource_private.h @@ -102,9 +102,69 @@ struct thsc_time_energy_cpi { /* Additional private parameters to getpriority()/setpriority( */ +#define PRIO_DARWIN_GPU 5 /* Second argument is a PID */ + +#define PRIO_DARWIN_GPU_ALLOW 0x1 +#define PRIO_DARWIN_GPU_DENY 0x2 + +#define PRIO_DARWIN_ROLE 6 /* Second argument is a PID */ + +#define PRIO_DARWIN_ROLE_DEFAULT 0x0 /* Reset to default state */ +#define PRIO_DARWIN_ROLE_UI_FOCAL 0x1 /* On screen, focal UI */ +#define PRIO_DARWIN_ROLE_UI 0x2 /* On screen UI, focal unknown */ +#define PRIO_DARWIN_ROLE_NON_UI 0x3 /* Off screen, non-focal UI */ +#define PRIO_DARWIN_ROLE_UI_NON_FOCAL 0x4 /* On screen, non-focal UI */ +#define PRIO_DARWIN_ROLE_TAL_LAUNCH 0x5 /* Throttled-launch (for OS X TAL resume) */ +#define PRIO_DARWIN_ROLE_DARWIN_BG 0x6 /* Throttled for running in the background */ + #define PRIO_DARWIN_GAME_MODE 7 /* Second argument is a PID */ +#define PRIO_DARWIN_CARPLAY_MODE 8 /* Second argument is a PID */ #define PRIO_DARWIN_GAME_MODE_OFF 0x0 #define PRIO_DARWIN_GAME_MODE_ON 0x1 +#define PRIO_DARWIN_CARPLAY_MODE_OFF 0x0 +#define PRIO_DARWIN_CARPLAY_MODE_ON 0x1 + +/* + * Flags for I/O monitor control. + */ +#define IOMON_ENABLE 0x01 +#define IOMON_DISABLE 0x02 + +/* Private I/O type */ +#define IOPOL_TYPE_VFS_HFS_CASE_SENSITIVITY 1 +#define IOPOL_TYPE_VFS_ALTLINK 11 +#define IOPOL_TYPE_VFS_NOCACHE_WRITE_FS_BLKSIZE 12 +#define IOPOL_TYPE_VFS_SUPPORT_LONG_PATHS 13 + +#define IOPOL_VFS_HFS_CASE_SENSITIVITY_DEFAULT 0 +#define IOPOL_VFS_HFS_CASE_SENSITIVITY_FORCE_CASE_SENSITIVE 1 + +#define IOPOL_VFS_ALTLINK_DISABLED 0 +#define IOPOL_VFS_ALTLINK_ENABLED 1 + +#define IOPOL_VFS_SUPPORT_LONG_PATHS_DEFAULT 0 +#define IOPOL_VFS_SUPPORT_LONG_PATHS_ON 1 + +/* + * Structures for use in communicating via iopolicysys() between Libc and the + * kernel. Not to be used by user programs directly. + */ + +/* + * the command to iopolicysys() + */ +#define IOPOL_CMD_GET 0x00000001 /* Get I/O policy */ +#define IOPOL_CMD_SET 0x00000002 /* Set I/O policy */ + +/* + * Second parameter to iopolicysys() + */ +struct _iopol_param_t { + int iop_scope; /* current process or a thread */ + int iop_iotype; + int iop_policy; +}; + #endif /* !defined(_SYS_RESOURCE_PRIVATE_H_) */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/socket.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/socket.h index af6078e3..e501e2dc 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/socket.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/socket.h @@ -79,8 +79,6 @@ #include - - /* * Definitions related to sockets: types, address families, options. */ @@ -188,6 +186,7 @@ #define SO_RESOLVER_SIGNATURE 0x1131 /* A signed data blob from the system resolver */ +#define SO_BINDTODEVICE 0x1134 /* bind socket to a network device (max valid option length IFNAMSIZ) */ /* When adding new socket-options, you need to make sure MPTCP supports these as well! */ @@ -345,7 +344,6 @@ struct so_np_extensions { #define SONPX_SETOPTSHUT 0x000000001 /* flag for allowing setsockopt after shutdown */ - #endif #endif @@ -415,11 +413,7 @@ struct so_np_extensions { struct sockaddr { __uint8_t sa_len; /* total length */ sa_family_t sa_family; /* [XSI] address family */ -#if __has_ptrcheck - char sa_data[__counted_by(sa_len - 2)]; -#else - char sa_data[14]; /* [XSI] addr value (actually smaller or larger) */ -#endif + char sa_data[14]; /* [XSI] addr value */ }; __CCT_DECLARE_CONSTRAINED_PTR_TYPES(struct sockaddr, sockaddr); @@ -529,10 +523,7 @@ __CCT_DECLARE_CONSTRAINED_PTR_TYPES(struct sockaddr_storage, sockaddr_storage); */ #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) #define NET_MAXID AF_MAX -#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ - -#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) /* * PF_ROUTE - Routing table * @@ -556,9 +547,6 @@ __CCT_DECLARE_CONSTRAINED_PTR_TYPES(struct sockaddr_storage, sockaddr_storage); #define NET_RT_MAXID 11 #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ - - - /* * Maximum queue length specifiable by listen. */ @@ -569,17 +557,15 @@ __CCT_DECLARE_CONSTRAINED_PTR_TYPES(struct sockaddr_storage, sockaddr_storage); * Used value-result for recvmsg, value only for sendmsg. */ struct msghdr { - void *msg_name; /* [XSI] optional address */ + void *__sized_by(msg_namelen) msg_name; /* [XSI] optional address */ socklen_t msg_namelen; /* [XSI] size of address */ struct iovec *msg_iov; /* [XSI] scatter/gather array */ int msg_iovlen; /* [XSI] # elements in msg_iov */ - void *msg_control; /* [XSI] ancillary data, see below */ + void *__sized_by(msg_controllen) msg_control; /* [XSI] ancillary data, see below */ socklen_t msg_controllen; /* [XSI] ancillary data buffer len */ int msg_flags; /* [XSI] flags on received message */ }; - - #define MSG_OOB 0x1 /* process out-of-band data */ #define MSG_PEEK 0x2 /* peek at incoming message */ #define MSG_DONTROUTE 0x4 /* send without using routing tables */ @@ -695,7 +681,6 @@ struct cmsgcred { #define SCM_CREDS 0x03 /* process creds (struct cmsgcred) */ #define SCM_TIMESTAMP_MONOTONIC 0x04 /* timestamp (uint64_t) */ - #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ /* @@ -745,7 +730,7 @@ struct user32_sf_hdtr { #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ - #include + #endif /* !_SYS_SOCKET_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/socketvar.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/socketvar.h index ba0d01cc..e7b0df58 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/socketvar.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/socketvar.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2020 Apple Inc. All rights reserved. + * Copyright (c) 2000-2020, 2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/sockio.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/sockio.h index 2acfa1e9..e69fef5e 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/sockio.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/sockio.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2021 Apple Inc. All rights reserved. + * Copyright (c) 2000-2023 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -66,6 +66,7 @@ #include +#include #include /* Socket ioctl's. */ @@ -77,9 +78,6 @@ #define SIOCSPGRP _IOW('s', 8, int) /* set process group */ #define SIOCGPGRP _IOR('s', 9, int) /* get process group */ -/* - * OSIOCGIF* ioctls are deprecated; they are kept for binary compatibility. - */ #define SIOCSIFADDR _IOW('i', 12, struct ifreq) /* set ifnet address */ #define SIOCSIFDSTADDR _IOW('i', 14, struct ifreq) /* set p-p address */ #define SIOCSIFFLAGS _IOW('i', 16, struct ifreq) /* set ifnet flags */ @@ -139,13 +137,11 @@ */ #define SIOCGIFXMEDIA _IOWR('i', 72, struct ifmediareq) /* get net extended media */ - #define SIOCSIFCAP _IOW('i', 90, struct ifreq) /* set IF features */ #define SIOCGIFCAP _IOWR('i', 91, struct ifreq) /* get IF features */ #define SIOCSIFMANAGEMENT _IOWR('i', 92, struct ifreq) /* set management interface */ - #define SIOCIFCREATE _IOWR('i', 120, struct ifreq) /* create clone if */ #define SIOCIFDESTROY _IOW('i', 121, struct ifreq) /* destroy clone if */ #define SIOCIFCREATE2 _IOWR('i', 122, struct ifreq) /* create clone if with data */ @@ -164,7 +160,6 @@ #define SIOCSIFASYNCMAP _IOW('i', 125, struct ifreq) /* set ppp asyncmap */ - #define SIOCGIFMAC _IOWR('i', 130, struct ifreq) /* deprecated */ #define SIOCSIFMAC _IOW('i', 131, struct ifreq) /* deprecated */ #define SIOCSIFKPI _IOW('i', 134, struct ifreq) /* set interface kext param - root only */ @@ -177,5 +172,7 @@ #define SIOCSIF6LOWPAN _IOW('i', 196, struct ifreq) /* set 6LOWPAN config */ #define SIOCGIF6LOWPAN _IOWR('i', 197, struct ifreq) /* get 6LOWPAN config */ +#define SIOCGIFDIRECTLINK _IOWR('i', 222, struct ifreq) /* get DIRECTLINK */ + #endif /* !_SYS_SOCKIO_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/syscall.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/syscall.h index ac44f8d2..f7a4ae6d 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/syscall.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/syscall.h @@ -104,8 +104,8 @@ /* 64 old getpagesize */ #define SYS_msync 65 #define SYS_vfork 66 - /* 67 old vread */ - /* 68 old vwrite */ +#define SYS_oslog_coproc_reg 67 +#define SYS_oslog_coproc 68 /* 69 old sbrk */ /* 70 old sstk */ /* 71 old mmap */ @@ -593,7 +593,9 @@ #define SYS_mkfifoat 553 #define SYS_mknodat 554 #define SYS_ungraftdmg 555 -#define SYS_MAXSYSCALL 556 +#define SYS_coalition_policy_set 556 +#define SYS_coalition_policy_get 557 +#define SYS_MAXSYSCALL 558 #define SYS_invalid 63 #endif /* __APPLE_API_PRIVATE */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/sysctl.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/sysctl.h index 45eb7c07..6a522b1a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/sysctl.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/sysctl.h @@ -955,13 +955,15 @@ extern struct loadavg averunnable; * In general is is better to use mach's or higher level timing services, but this value * is needed to convert the PPC Time Base registers to real time. * - * hw.cpufrequency - These values provide the current, min and max cpu frequency. The min and max are for - * hw.cpufrequency_max - all power management modes. The current frequency is the max frequency in the current mode. - * hw.cpufrequency_min - All frequencies are in Hz. + * hw.cpufrequency, hw.busfrequency and their min/max versions are deprecated because frequency isn't consistent. * - * hw.busfrequency - These values provide the current, min and max bus frequency. The min and max are for - * hw.busfrequency_max - all power management modes. The current frequency is the max frequency in the current mode. - * hw.busfrequency_min - All frequencies are in Hz. + * hw.cpufrequency - (deprecated) These values provide the current, min and max cpu frequency. The min and max are for + * hw.cpufrequency_max - (deprecated) all power management modes. The current frequency is the max frequency in the current mode. + * hw.cpufrequency_min - (deprecated) All frequencies are in Hz. + * + * hw.busfrequency - (deprecated) These values provide the current, min and max bus frequency. The min and max are for + * hw.busfrequency_max - (deprecated) all power management modes. The current frequency is the max frequency in the current mode. + * hw.busfrequency_min - (deprecated) All frequencies are in Hz. * * hw.cputype - These values provide the mach-o cpu type and subtype. A complete list is in * hw.cpusubtype - These values should be used to determine what processor family the running cpu is from so that diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/syslimits.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/syslimits.h index 1c2aa9a1..71ccc1c7 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/syslimits.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/syslimits.h @@ -88,6 +88,10 @@ #define LINK_MAX 32767 /* max file link count */ #define MAX_CANON 1024 /* max bytes in term canon input line */ #define MAX_INPUT 1024 /* max bytes in terminal input */ +/* + * NOTE: Many filesystems (including HFS & APFS) may support names longer than `NAME_MAX` bytes. + * See manpage for `getdirentries` and `readdir` for details. + */ #define NAME_MAX 255 /* max bytes in a file name */ #define NGROUPS_MAX 16 /* max supplemental group id's */ #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) @@ -120,6 +124,8 @@ /* range: -20 - 20 */ /* (PRIO_MIN - PRIO_MAX) */ #endif /* __DARWIN_UNIX03 */ + + #endif /* !_ANSI_SOURCE */ #endif /* !_SYS_SYSLIMITS_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/sysproto.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/sysproto.h index 273ac4f6..056a8001 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/sysproto.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/sysproto.h @@ -285,8 +285,8 @@ struct chroot_args { char path_l_[PADL_(user_addr_t)]; user_addr_t path; char path_r_[PADR_(user_addr_t)]; }; struct msync_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)]; }; #if CONFIG_VFORK @@ -295,23 +295,37 @@ struct vfork_args { }; #else #endif +struct oslog_coproc_reg_args { + char uuid_l_[PADL_(user_addr_t)]; user_addr_t uuid; char uuid_r_[PADR_(user_addr_t)]; + char file_path_l_[PADL_(user_addr_t)]; user_addr_t file_path; char file_path_r_[PADR_(user_addr_t)]; + char file_path_len_l_[PADL_(user_size_t)]; user_size_t file_path_len; char file_path_len_r_[PADR_(user_size_t)]; +}; +struct oslog_coproc_args { + char buff_l_[PADL_(user_addr_t)]; user_addr_t buff; char buff_r_[PADR_(user_addr_t)]; + char buff_len_l_[PADL_(uint64_t)]; uint64_t buff_len; char buff_len_r_[PADR_(uint64_t)]; + char type_l_[PADL_(uint32_t)]; uint32_t type; char type_r_[PADR_(uint32_t)]; + char uuid_l_[PADL_(user_addr_t)]; user_addr_t uuid; char uuid_r_[PADR_(user_addr_t)]; + char timestamp_l_[PADL_(uint64_t)]; uint64_t timestamp; char timestamp_r_[PADR_(uint64_t)]; + char offset_l_[PADL_(uint32_t)]; uint32_t offset; char offset_r_[PADR_(uint32_t)]; + char stream_log_l_[PADL_(uint32_t)]; uint32_t stream_log; char stream_log_r_[PADR_(uint32_t)]; +}; struct munmap_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; }; struct mprotect_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; char prot_l_[PADL_(int)]; int prot; char prot_r_[PADR_(int)]; }; struct madvise_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; char behav_l_[PADL_(int)]; int behav; char behav_r_[PADR_(int)]; }; struct mincore_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; char vec_l_[PADL_(user_addr_t)]; user_addr_t vec; char vec_r_[PADR_(user_addr_t)]; }; struct getgroups_args { @@ -681,8 +695,8 @@ struct getdirentries_args { char basep_l_[PADL_(user_addr_t)]; user_addr_t basep; char basep_r_[PADR_(user_addr_t)]; }; struct mmap_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; char prot_l_[PADL_(int)]; int prot; char prot_r_[PADR_(int)]; char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)]; char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; @@ -710,12 +724,12 @@ struct sysctl_args { char newlen_l_[PADL_(user_size_t)]; user_size_t newlen; char newlen_r_[PADR_(user_size_t)]; }; struct mlock_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; }; struct munlock_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; }; struct undelete_args { char path_l_[PADL_(user_addr_t)]; user_addr_t path; char path_r_[PADR_(user_addr_t)]; @@ -894,8 +908,8 @@ struct fhopen_args { #else #endif struct minherit_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; char inherit_l_[PADL_(int)]; int inherit; char inherit_r_[PADR_(int)]; }; #if SYSV_SEM @@ -1636,8 +1650,8 @@ struct accept_nocancel_args { #else #endif /* SOCKETS */ struct msync_nocancel_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)]; }; struct fcntl_nocancel_args { @@ -2124,8 +2138,8 @@ struct renameatx_np_args { }; #if CONFIG_CODE_DECRYPTION struct mremap_encrypted_args { - char addr_l_[PADL_(user_addr_t)]; user_addr_t addr; char addr_r_[PADR_(user_addr_t)]; - char len_l_[PADL_(user_size_t)]; user_size_t len; char len_r_[PADR_(user_size_t)]; + char addr_l_[PADL_(user_addr_ut)]; user_addr_ut addr; char addr_r_[PADR_(user_addr_ut)]; + char len_l_[PADL_(user_size_ut)]; user_size_ut len; char len_r_[PADR_(user_size_ut)]; char cryptid_l_[PADL_(uint32_t)]; uint32_t cryptid; char cryptid_r_[PADR_(uint32_t)]; char cputype_l_[PADL_(uint32_t)]; uint32_t cputype; char cputype_r_[PADR_(uint32_t)]; char cpusubtype_l_[PADL_(uint32_t)]; uint32_t cpusubtype; char cpusubtype_r_[PADR_(uint32_t)]; @@ -2416,7 +2430,7 @@ struct shared_region_map_and_slide_2_np_args { char files_count_l_[PADL_(uint32_t)]; uint32_t files_count; char files_count_r_[PADR_(uint32_t)]; char files_l_[PADL_(user_addr_t)]; user_addr_t files; char files_r_[PADR_(user_addr_t)]; char mappings_count_l_[PADL_(uint32_t)]; uint32_t mappings_count; char mappings_count_r_[PADR_(uint32_t)]; - char mappings_l_[PADL_(user_addr_t)]; user_addr_t mappings; char mappings_r_[PADR_(user_addr_t)]; + char mappings_u_l_[PADL_(user_addr_t)]; user_addr_t mappings_u; char mappings_u_r_[PADR_(user_addr_t)]; }; struct pivot_root_args { char new_rootfs_path_before_l_[PADL_(user_addr_t)]; user_addr_t new_rootfs_path_before; char new_rootfs_path_before_r_[PADR_(user_addr_t)]; @@ -2527,6 +2541,18 @@ struct ungraftdmg_args { char mountdir_l_[PADL_(user_addr_t)]; user_addr_t mountdir; char mountdir_r_[PADR_(user_addr_t)]; char flags_l_[PADL_(uint64_t)]; uint64_t flags; char flags_r_[PADR_(uint64_t)]; }; +#if CONFIG_COALITIONS +struct coalition_policy_set_args { + char cid_l_[PADL_(uint64_t)]; uint64_t cid; char cid_r_[PADR_(uint64_t)]; + char flavor_l_[PADL_(uint32_t)]; uint32_t flavor; char flavor_r_[PADR_(uint32_t)]; + char value_l_[PADL_(uint32_t)]; uint32_t value; char value_r_[PADR_(uint32_t)]; +}; +struct coalition_policy_get_args { + char cid_l_[PADL_(uint64_t)]; uint64_t cid; char cid_r_[PADR_(uint64_t)]; + char flavor_l_[PADL_(uint32_t)]; uint32_t flavor; char flavor_r_[PADR_(uint32_t)]; +}; +#else +#endif /* CONFIG_COALITIONS */ int nosys(struct proc *, struct nosys_args *, int *); void exit(struct proc *, struct exit_args *, int32_t *); int fork(struct proc *, struct fork_args *, int *); @@ -2537,8 +2563,8 @@ int sys_close(struct proc *, struct close_args *, int *); int wait4(struct proc *, struct wait4_args *, int *); int link(struct proc *, struct link_args *, int *); int unlink(struct proc *, struct unlink_args *, int *); -int chdir(struct proc *, struct chdir_args *, int *); -int fchdir(struct proc *, struct fchdir_args *, int *); +int sys_chdir(struct proc *, struct chdir_args *, int *); +int sys_fchdir(struct proc *, struct fchdir_args *, int *); int mknod(struct proc *, struct mknod_args *, int *); int chmod(struct proc *, struct chmod_args *, int *); int chown(struct proc *, struct chown_args *, int *); @@ -2588,6 +2614,8 @@ int msync(struct proc *, struct msync_args *, int *); int vfork(struct proc *, struct vfork_args *, int *); #else #endif +int oslog_coproc_reg(struct proc *, struct oslog_coproc_reg_args *, int *); +int oslog_coproc(struct proc *, struct oslog_coproc_args *, int *); int munmap(struct proc *, struct munmap_args *, int *); int mprotect(struct proc *, struct mprotect_args *, int *); int madvise(struct proc *, struct madvise_args *, int *); @@ -3120,6 +3148,11 @@ int sys_record_system_event(struct proc *, struct record_system_event_args *, in int mkfifoat(struct proc *, struct mkfifoat_args *, int *); int mknodat(struct proc *, struct mknodat_args *, int *); int ungraftdmg(struct proc *, struct ungraftdmg_args *, int *); +#if CONFIG_COALITIONS +int sys_coalition_policy_set(struct proc *, struct coalition_policy_set_args *, int *); +int sys_coalition_policy_get(struct proc *, struct coalition_policy_get_args *, int *); +#else +#endif /* CONFIG_COALITIONS */ __END_DECLS #undef PAD_ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/systm.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/systm.h index bc91ba43..240bdd06 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/systm.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/systm.h @@ -145,7 +145,7 @@ int suiword(user_addr_t addr, long word); #define susize(_a, _s) sulong((_a), (_s)) #define fuptr(a) ((user_addr_t)fulong(_a) #define suptr(_a, _p) sulong((_a), (_p)) -int useracc(user_addr_t addr, user_size_t len, int prot); +int useracc(user_addr_ut addr, user_size_ut len, int prot); typedef void (*timeout_fcn_t)(void *); void bsd_timeout(void (*)(void *), void *arg, struct timespec * ts); void bsd_untimeout(void (*)(void *), void *arg); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/uio.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/uio.h index ddd5cc17..16d2ca35 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/uio.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/uio.h @@ -118,9 +118,16 @@ enum uio_seg { UIO_SYSSPACE32 = 11 /* deprecated */ }; +enum { + UIOF_USERSPACE = (1 << UIO_USERSPACE), + UIOF_SYSSPACE = (1 << UIO_SYSSPACE), + UIOF_USERSPACE32 = (1 << UIO_USERSPACE32), + UIOF_USERSPACE64 = (1 << UIO_USERSPACE64), + UIOF_SYSSPACE32 = (1 << UIO_SYSSPACE32), +}; + #define UIO_SEG_IS_USER_SPACE( a_uio_seg ) \ - ( (a_uio_seg) == UIO_USERSPACE64 || (a_uio_seg) == UIO_USERSPACE32 || \ - (a_uio_seg) == UIO_USERSPACE ) + ((1 << a_uio_seg) & (UIOF_USERSPACE64 | UIOF_USERSPACE32 | UIOF_USERSPACE)) __BEGIN_DECLS @@ -154,6 +161,11 @@ void uio_reset( uio_t a_uio, */ uio_t uio_duplicate( uio_t a_uio ); +/* + * uio_restore - restore a uio to the state it was in the provided snapshot. + * returns 0 if it was successful else non zero. + */ +int uio_restore(uio_t uio, uio_t snapshot_uio); /* * uio_free - free a uio_t allocated via uio_create. @@ -245,7 +257,7 @@ user_size_t uio_curriovlen( uio_t a_uio ); #define UIO_MAXIOV 1024 /* max 1K of iov's */ #define UIO_SMALLIOV 8 /* 8 on stack, else malloc */ -extern int uiomove(const char * cp, int n, struct uio *uio); +extern int uiomove(const char *__sized_by(n) cp, int n, struct uio *uio); extern int uiomove64(const __uint64_t cp, int n, struct uio *uio); __END_DECLS diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/vnode.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/vnode.h index 84b11170..df3d9eaf 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/vnode.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/vnode.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2017 Apple Inc. All rights reserved. + * Copyright (c) 2000-2024 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -169,6 +169,8 @@ enum vtagtype { #define IO_SWAP_DISPATCH 0x200000 /* I/O was originated from the swap layer */ #define IO_SKIP_ENCRYPTION 0x400000 /* Skips en(de)cryption on the IO. Must be initiated from kernel */ #define IO_EVTONLY 0x800000 /* the i/o is being done on an fd that's marked O_EVTONLY */ +#define IO_NOCACHE_SYSSPACE 0x1000000 /* same as IO_NOCACHE but also for UIO_SYSSPACE */ +#define IO_NOCACHE_SWRITE 0x2000000 /* same as IO_NOCACHE but also lossens retrictions for nocache writes */ /* * Component Name: this structure describes the pathname @@ -573,6 +575,7 @@ extern int vttoif_tab[]; #define VNODE_REMOVE_SKIP_NAMESPACE_EVENT 0x0002 /* Do not upcall to userland handlers */ #define VNODE_REMOVE_NO_AUDIT_PATH 0x0004 /* Do not audit the path */ #define VNODE_REMOVE_DATALESS_DIR 0x0008 /* Special handling for removing a dataless directory without materialization */ +#define VNODE_REMOVE_SYSTEM_DISCARDED 0x0020 /* Update speculative telemetry with SYSTEM_DISCARDED use state (Default USER_DISCARDED use state) */ /* VNOP_READDIR flags: */ #define VNODE_READDIR_EXTENDED 0x0001 /* use extended directory entries */ @@ -591,6 +594,7 @@ struct vnodeop_desc; extern int desiredvnodes; /* number of vnodes desired */ +extern struct smr apfs_smr; /* SMR domain for apfs kext, equivalent to _vfs_smr */ /* * This structure is used to configure the new vnodeops vector. @@ -1375,6 +1379,16 @@ vnode_t vnode_drop(vnode_t vp); */ int vnode_recycle(vnode_t vp); +/*! + * @function vnode_ismonitored + * @abstract Check whether a file has watchers that would make it useful to query a server + * for file changes. + * @param vp Vnode to examine. + * @discussion Will not reenter the filesystem. + * @return Zero if not monitored, nonzero if monitored. + */ +int vnode_ismonitored(vnode_t vp); + #define VNODE_UPDATE_PARENT 0x01 #define VNODE_UPDATE_NAMEDSTREAM_PARENT VNODE_UPDATE_PARENT @@ -1502,6 +1516,7 @@ int vfs_get_notify_attributes(struct vnode_attr *vap); #define VNODE_LOOKUP_NOFOLLOW 0x01 #define VNODE_LOOKUP_NOCROSSMOUNT 0x02 #define VNODE_LOOKUP_CROSSMOUNTNOWAIT 0x04 +#define VNODE_LOOKUP_NOFOLLOW_ANY 0x08 /*! * @function vnode_lookup * @abstract Convert a path into a vnode. @@ -1509,6 +1524,7 @@ int vfs_get_notify_attributes(struct vnode_attr *vap); * it returns with an iocount held on the resulting vnode which must be dropped with vnode_put(). * @param path Path to look up. * @param flags VNODE_LOOKUP_NOFOLLOW: do not follow symbolic links. VNODE_LOOKUP_NOCROSSMOUNT: do not cross mount points. + * VNODE_LOOKUP_NOFOLLOW_ANY: no symlinks allowed in path * @return Results 0 for success or an error code. */ errno_t vnode_lookup(const char *path, int flags, vnode_t *vpp, vfs_context_t ctx); @@ -1702,6 +1718,27 @@ int vn_path_package_check(vnode_t vp, char *path, int pathlen, int *component); */ int vn_rdwr(enum uio_rw rw, struct vnode *vp, caddr_t base, int len, off_t offset, enum uio_seg segflg, int ioflg, kauth_cred_t cred, int *aresid, proc_t p); +/*! + * @function vn_rdwr_64 + * @abstract Read from or write to a file. + * @discussion vn_rdwr_64() abstracts the details of constructing a uio and picking a vnode operation to allow + * simple in-kernel file I/O. + * @param rw UIO_READ for a read, UIO_WRITE for a write. + * @param vp The vnode on which to perform I/O. + * @param base Start of buffer into which to read or from which to write data. + * @param len Length of buffer. + * @param offset Offset within the file at which to start I/O. + * @param segflg What kind of address "base" is. See uio_seg definition in sys/uio.h. UIO_SYSSPACE for kernelspace, UIO_USERSPACE for userspace. + * UIO_USERSPACE32 and UIO_USERSPACE64 are in general preferred, but vn_rdwr will make sure that has the correct address sizes. + * @param ioflg Defined in vnode.h, e.g. IO_NOAUTH, IO_NOCACHE. + * @param cred Credential to pass down to filesystem for authentication. + * @param aresid Destination for amount of requested I/O which was not completed, as with uio_resid(). + * @param p Process requesting I/O. + * @return 0 for success; errors from filesystem, and EIO if did not perform all requested I/O and the "aresid" parameter is NULL. + */ +int vn_rdwr_64(enum uio_rw rw, struct vnode *vp, uint64_t base, int64_t len, off_t offset, enum uio_seg segflg, int ioflg, kauth_cred_t cred, int64_t *aresid, struct proc *p); + + /*! * @function vnode_getname * @abstract Get the name of a vnode from the VFS namecache. diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/vnode_if.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/vnode_if.h index 2947f1bb..0fbe2ac6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/vnode_if.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/vnode_if.h @@ -136,6 +136,7 @@ extern struct vnodeop_desc vnop_offtoblk_desc; extern struct vnodeop_desc vnop_blockmap_desc; extern struct vnodeop_desc vnop_strategy_desc; extern struct vnodeop_desc vnop_bwrite_desc; +extern struct vnodeop_desc vnop_monitor_desc; #ifdef __APPLE_API_UNSTABLE @@ -1361,8 +1362,41 @@ struct vnop_kqfilt_remove_args { extern struct vnodeop_desc vnop_kqfilt_remove_desc; +#define VNODE_MONITOR_BEGIN 0x01 +#define VNODE_MONITOR_END 0x02 +#define VNODE_MONITOR_UPDATE 0x04 +struct vnop_monitor_args { + struct vnodeop_desc *a_desc; + vnode_t a_vp; + uint32_t a_events; + uint32_t a_flags; + void *a_handle; + vfs_context_t a_context; +}; +/*! + * @function VNOP_MONITOR + * @abstract Indicate to a filesystem that the number of watchers of a file has changed. + * @param vp The vnode whose watch state has changed. + * @param events Unused. Filesystems can ignore this parameter. + * @param flags Type of change to the watch state. VNODE_MONITOR_BEGIN is passed when the kernel + * begins tracking a new watcher of a file. VNODE_MONITOR_END is passed when a watcher stops watching a file. + * VNODE_MONITOR_UPDATE is currently unused. A filesystem is guaranteed that each VNODE_MONITOR_BEGIN + * will be matched by a VNODE_MONITOR_END with the same "handle" argument. + * @param handle Unique identifier for a given watcher. A VNODE_MONITOR_BEGIN for a given handle will be matched with a + * VNODE_MONITOR_END for the same handle; a filesystem need not consider this parameter unless + * it for some reason wants be able to match specific VNOP_MONITOR calls rather than just keeping + * a count. + * @param ctx The context which is starting to monitor a file or ending a watch on a file. A matching + * pair of VNODE_MONITOR_BEGIN and VNODE_MONITOR_END need not have the same context. + * @discussion VNOP_MONITOR() is intended to let networked filesystems know when they should bother + * listening for changes to files which occur remotely, so that they can post notifications using + * vnode_notify(). Local filesystems should not implement a monitor vnop. + * It is called when there is a new watcher for a file or when a watcher for a file goes away. + * Each BEGIN will be matched with an END with the same handle. Note that vnode_ismonitored() can + * be used to see if there are currently watchers for a file. + */ struct label; struct vnop_setlabel_args { diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/vsock.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/vsock.h index 853cbab0..b0b01702 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/vsock.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/vsock.h @@ -31,12 +31,12 @@ #include -__BEGIN_DECLS - #include #include #include +__BEGIN_DECLS + #define VMADDR_CID_ANY (-1U) #define VMADDR_CID_HYPERVISOR 0 #define VMADDR_CID_RESERVED 1 diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/wait.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/wait.h index f68f5fc0..a9221551 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/wait.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/wait.h @@ -202,8 +202,7 @@ union wait { w_Coredump:1, /* core dump indicator */ w_Retcode:8, /* exit code if w_termsig==0 */ w_Filler:16; /* upper bits filler */ -#endif -#if __DARWIN_BYTE_ORDER == __DARWIN_BIG_ENDIAN +#elif __DARWIN_BYTE_ORDER == __DARWIN_BIG_ENDIAN unsigned int w_Filler:16, /* upper bits filler */ w_Retcode:8, /* exit code if w_termsig==0 */ w_Coredump:1, /* core dump indicator */ @@ -220,8 +219,7 @@ union wait { unsigned int w_Stopval:8, /* == W_STOPPED if stopped */ w_Stopsig:8, /* signal that stopped us */ w_Filler:16; /* upper bits filler */ -#endif -#if __DARWIN_BYTE_ORDER == __DARWIN_BIG_ENDIAN +#elif __DARWIN_BYTE_ORDER == __DARWIN_BIG_ENDIAN unsigned int w_Filler:16, /* upper bits filler */ w_Stopsig:8, /* signal that stopped us */ w_Stopval:8; /* == W_STOPPED if stopped */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/sys/xattr.h b/Frameworks/Kernel.framework/Versions/A/Headers/sys/xattr.h index bb25cbd7..ea9b7668 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/sys/xattr.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/sys/xattr.h @@ -47,6 +47,9 @@ /* option for f/getxattr() and f/listxattr() to expose the HFS Compression extended attributes */ #define XATTR_SHOWCOMPRESSION 0x0020 +/* Options for pathname based xattr calls */ +#define XATTR_NOFOLLOW_ANY 0x0040 /* Don't follow any symbolic links in the path */ + #define XATTR_MAXNAMELEN 127 /* See the ATTR_CMN_FNDRINFO section of getattrlist(2) for details on FinderInfo */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vBasicOps.h b/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vBasicOps.h index c886128d..f878fdd0 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vBasicOps.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vBasicOps.h @@ -3,9 +3,9 @@ Contains: Basic Algebraic Operations for AltiVec - Version: vecLib-1041.0 + Version: vecLib-1068.100 - Copyright: Copyright (c) 1999-2023 by Apple Inc. All rights reserved. + Copyright: Copyright (c) 1999-2025 by Apple Inc. All rights reserved. Bugs: For bug reports, consult the following page on the World Wide Web: @@ -22,7 +22,7 @@ #include -#if !0 +#if !0 && !0 #if __has_include() # include diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vDSP.h b/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vDSP.h index 349b730f..64f4b412 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vDSP.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vDSP.h @@ -3,9 +3,9 @@ Contains: AltiVec DSP Interfaces - Version: vecLib-1041.0 + Version: vecLib-1068.100 - Copyright: Copyright (c) 2000-2023 by Apple Inc. All rights reserved. + Copyright: Copyright (c) 2000-2025 by Apple Inc. All rights reserved. For vDSP documentation, search for "vDSP" at or search for one of the routine names below. @@ -255,8 +255,8 @@ extern "C" { vDSP_Version0 is a major version number. vDSP_Version1 is a minor version number. */ -#define vDSP_Version0 1041 -#define vDSP_Version1 0 +#define vDSP_Version0 1068 +#define vDSP_Version1 100 /* Define types: diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vForce.h b/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vForce.h index 94558706..c2b91ea6 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vForce.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vForce.h @@ -1,6 +1,6 @@ /* -vForce.h (from vecLib-1041.0) -Copyright (c) 1999-2023 by Apple Inc. All rights reserved. +vForce.h (from vecLib-1068.100) +Copyright (c) 1999-2025 by Apple Inc. All rights reserved. @APPLE_LICENSE_HEADER_START@ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vecLib.h b/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vecLib.h index a4a58bae..5468f71c 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vecLib.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vecLib.h @@ -3,9 +3,9 @@ Contains: Master include for vecLib framework - Version: vecLib-1041.0 + Version: vecLib-1068.100 - Copyright: Copyright (c) 2000-2023 by Apple Inc. All rights reserved. + Copyright: Copyright (c) 2000-2025 by Apple Inc. All rights reserved. Bugs: For bug reports, consult the following page on the World Wide Web: @@ -19,10 +19,10 @@ #ifndef __VECLIBTYPES__ #include #endif - #ifndef __VBASICOPS__ #include #endif + #ifndef __VDSP__ #include #endif diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vecLibTypes.h b/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vecLibTypes.h index 5dfbc68f..30b9bee0 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vecLibTypes.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vecLib/vecLibTypes.h @@ -3,9 +3,9 @@ Contains: Master include for vecLib framework - Version: vecLib-1041.0 + Version: vecLib-1068.100 - Copyright: Copyright (c) 2000-2023 by Apple Inc. All rights reserved. + Copyright: Copyright (c) 2000-2025 by Apple Inc. All rights reserved. Bugs: For bug reports, consult the following page on the World Wide Web: diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vfs/vfs_support.h b/Frameworks/Kernel.framework/Versions/A/Headers/vfs/vfs_support.h index e47a4672..995568b0 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vfs/vfs_support.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vfs/vfs_support.h @@ -176,6 +176,10 @@ extern int err_offtoblk(struct vnop_offtoblk_args *ap); extern int nop_blockmap(struct vnop_blockmap_args *ap); extern int err_blockmap(struct vnop_blockmap_args *ap); + +extern int nop_monitor(struct vnop_monitor_args *ap); +extern int err_monitor(struct vnop_monitor_args *ap); + __END_DECLS #endif /* _VFS_VFS_SUPPORT_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vm/memory_types.h b/Frameworks/Kernel.framework/Versions/A/Headers/vm/memory_types.h index a9184627..fe78116c 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vm/memory_types.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vm/memory_types.h @@ -40,4 +40,22 @@ #define VM_WIMG_USE_DEFAULT 0x80 #define VM_WIMG_MASK 0xFF +#if HAS_MTE +/* + * Specifies default cacheability. + */ +#define HAS_DEFAULT_CACHEABILITY(attr) \ + ( \ + ((attr) == VM_WIMG_MTE) || \ + ((attr) == VM_WIMG_USE_DEFAULT) || \ + ((attr) == VM_WIMG_DEFAULT) \ + ) +#else /* !HAS_MTE */ +#define HAS_DEFAULT_CACHEABILITY(attr) \ + ( \ + ((attr) == VM_WIMG_USE_DEFAULT) || \ + ((attr) == VM_WIMG_DEFAULT) \ + ) +#endif /* HAS_MTE */ + #endif /* _VM_MEMORY_TYPES_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_compressor_algorithms.h b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_compressor_algorithms.h index 91d93862..f25189eb 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_compressor_algorithms.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_compressor_algorithms.h @@ -27,4 +27,3 @@ */ #pragma once - diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_dyld_pager.h b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_dyld_pager.h index 2108e75b..0f3b3e6a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_dyld_pager.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_dyld_pager.h @@ -39,4 +39,4 @@ #include -#endif /* _VM_DYLD_PAGER_H_ */ +#endif /* _VM_DYLD_PAGER_H_ */ diff --git a/include/os/_workgroup.h b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_far.h similarity index 57% rename from include/os/_workgroup.h rename to Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_far.h index 2ebf6c8a..e2e54f7f 100644 --- a/include/os/_workgroup.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_far.h @@ -1,14 +1,19 @@ /* - * Copyright (c) 2020 Apple Inc. All rights reserved. + * Copyright (c) 2024 Apple Inc. All rights reserved. * - * @APPLE_LICENSE_HEADER_START@ + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER @@ -18,19 +23,7 @@ * Please see the License for the specific language governing rights and * limitations under the License. * - * @APPLE_LICENSE_HEADER_END@ + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ -#ifndef ___WORKGROUP_H__ -#define ___WORKGROUP_H__ - -#if !defined(__has_feature) -# define __has_feature(x) 0 -#endif -#if (!__has_feature(modules)) - #error "Do not include this header directly, please include instead" -#endif - -#include - -#endif /* ___WORKGROUP_H__ */ +#pragma once diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_fault.h b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_fault.h index bfee1597..4e298943 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_fault.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_fault.h @@ -72,4 +72,5 @@ #include + #endif /* _VM_VM_FAULT_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_kern.h b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_kern.h index 254d0ede..aedf0b8f 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_kern.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_kern.h @@ -71,28 +71,89 @@ #include #include -__BEGIN_DECLS - -#pragma mark - the kmem subsystem +__BEGIN_DECLS -#pragma mark - kernel address obfuscation / hashhing for logging -extern vm_offset_t vm_kernel_addrperm_ext; +#pragma mark - kernel address obfuscation / hashing for logging +/*! + * @function vm_kernel_addrhide() + * + * @brief + * Unslides a kernel pointer. + * + * @discussion + * This is exporting the VM_KERNEL_ADDRHIDE() functionality to kernel + * extensions. + * + * @param addr the kernel address to unslide + * @param hide_addr the unslid value of @c addr if it was part of a slid + * region of the kernel. + * + * 0 on release kernels if @c addr is not part of a slid + * region of the kernel. + * + * @c addr on development kernels if @c addr is not part of + * a slid region of the kernel. + */ extern void vm_kernel_addrhide( vm_offset_t addr, vm_offset_t *hide_addr); + +/*! + * @function vm_kernel_addrperm_external() + * + * @brief + * Unslides or "permutate" a kernel pointer. + * + * @discussion + * This is exporting the VM_KERNEL_ADDRPERM() functionality to kernel + * extensions. + * + * The level of "hiding" of heap kernel pointers done by this function is + * insufficient. Using @c vm_kernel_addrhash() is preferred when possible. + * + * Note that this function might cause lazy allocation to preserve the floating + * point register state on Intel and is generally unsafe to call under lock. + * + * @param addr the kernel address to unslide + * @param perm_addr the unslid value of @c addr if it was part of a slid + * region of the kernel. + */ extern void vm_kernel_addrperm_external( vm_offset_t addr, vm_offset_t *perm_addr); + +/*! + * @function vm_kernel_unslide_or_perm_external() + * + * @brief + * Equivalent to vm_kernel_addrperm_external(). + */ extern void vm_kernel_unslide_or_perm_external( vm_offset_t addr, - vm_offset_t *up_addr); + vm_offset_t *perm_addr); +/*! + * @function vm_kernel_addrhash() + * + * @brief + * Unslides or hashes a kernel pointer. + * + * @discussion + * This is exporting the VM_KERNEL_ADDRHASH() functionality to kernel + * extensions. + * + * @param addr the kernel address to unslide + * @returns the unslid value of @c addr if it was part of a slid + * region of the kernel. + * + * a hashed value of @c addr otherwise. + */ extern vm_offset_t vm_kernel_addrhash( vm_offset_t addr); diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_map.h b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_map.h index eac231ec..30e3f3cb 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_map.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_map.h @@ -84,6 +84,7 @@ #include #include + __BEGIN_DECLS diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_memtag.h b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_memtag.h index 9cfc9188..67d0ba0a 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_memtag.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_memtag.h @@ -29,87 +29,145 @@ #define _MACH_VM_MEMTAG_H_ +#if __arm64__ +#include +#endif /* __arm64__ */ + +#include #include +#include + + +#if KASAN_TBI +#define ENABLE_MEMTAG_INTERFACES 1 +#define ENABLE_MEMTAG_MANIPULATION_API 1 +#endif + +#if HAS_MTE_EMULATION_SHIMS +#define ENABLE_MEMTAG_MANIPULATION_API 1 +#endif -#if CONFIG_KERNEL_TAGGING +#if HAS_MTE && HAS_MTE_EMULATION_SHIMS +#error HAS_MTE and HAS_MTE_EMULATION_SHIMS is not a supported configuration +#endif /* HAS_MTE && HAS_MTE_EMULATION_SHIMS */ -/* Zero-out a tagged memory region. */ -extern void vm_memtag_bzero(void *tagged_buf, vm_size_t n); +#if HAS_MTE_EMULATION_SHIMS && KASAN_TBI +#error HAS_MTE_EUMATION_SHIMS and KASAN_TBI is not a supported configuration +#endif /* KASAN_TBI && HAS_MTE_EMULATION_SHIMS */ -/* Retrieve the tag metadata associated to the target memory address */ -extern uint8_t vm_memtag_get_tag(vm_offset_t address); +#if defined(ENABLE_MEMTAG_INTERFACES) + +__BEGIN_DECLS + +/* Zero-out a tagged memory region performing the minimum set of mandatory checks. */ +extern void vm_memtag_fast_checked_bzero(void *tagged_buf, vm_size_t n); /* * Given a naked address, extract the metadata from memory and add it to * the correct pointer metadata. */ -extern vm_offset_t vm_memtag_fixup_ptr(vm_offset_t naked_address); +extern vm_map_address_t vm_memtag_load_tag(vm_map_address_t naked_address); /* * Given a tagged pointer and a size, update the associated backing metadata * to match the pointer metadata. */ extern void -vm_memtag_set_tag(vm_offset_t tagged_address, vm_offset_t size); +vm_memtag_store_tag(caddr_t tagged_address, vm_size_t size); -/* - * Randomly assign a tag to the current chunk of memory. Memory metadata is - * not updated yet and must be committed through a call to vm_memtag_set_tag(). - * This helper will implement a basic randomization algorithm that picks a - * random valid value for the tagging mechanism excluding the current and - * left/right adjacent metadata value. This approach is fault-conservative and - * only checks the adjacent memory locations if they fit within the same page. - */ -extern vm_offset_t -vm_memtag_assign_tag(vm_offset_t address, vm_size_t size); +/* Randomly assign a tag to the current chunk of memory. */ +extern caddr_t +vm_memtag_generate_and_store_tag(caddr_t address, vm_size_t size); /* * When passed a tagged pointer, verify that the pointer metadata matches * the backing storage metadata. */ extern void -vm_memtag_verify_tag(vm_offset_t tagged_address); +vm_memtag_verify_tag(vm_map_address_t tagged_address); /* - * Temporarily enable/disable memtag checking. + * Copy metadata between two mappings whenever we are relocating memory. */ extern void +vm_memtag_relocate_tags(vm_address_t new_address, vm_address_t old_address, vm_size_t size); + +/* Temporarily enable/disable memtag checking. */ +extern void vm_memtag_enable_checking(void); extern void vm_memtag_disable_checking(void); +/* + * Zeroing operations traditionally happen on large amount of memory (often pages) + * and tend to span over several different regions with different memtags. Implement + * variants of bzero that capture both performing this operation without checking + * (vm_memtag_bzero_unchecked) and by optimizing checking behavior (vm_memtag_bzero_fast_checked) + */ +extern void +vm_memtag_bzero_fast_checked(void *tagged_buf, vm_size_t n); +extern void +vm_memtag_bzero_unchecked(void *tagged_buf, vm_size_t n); + +__END_DECLS + +#else /* ENABLE_MEMTAG_INTERFACES */ + + +#if KASAN_TBI +#error "vm_memtag interfaces should be defined whenever KASAN-TBI is enabled" +#endif /* KASAN_TBI */ + +#define vm_memtag_fast_checked_bzero(p, s) bzero(p, s) +#define vm_memtag_load_tag(a) (a) +#define vm_memtag_store_tag(a, s) do { } while (0) +#define vm_memtag_generate_and_store_tag(a, s) (a) +#define vm_memtag_relocate_tags(n, o, l) do { } while (0) +#define vm_memtag_enable_checking() do { } while (0) +#define vm_memtag_disable_checking() do { } while (0) +#define vm_memtag_bzero_fast_checked(b, n) bzero(b, n) +#define vm_memtag_bzero_unchecked(b, n) bzero(b, n) + +#endif /* ENABLE_MEMTAG_INTERFACES */ + +#if defined(ENABLE_MEMTAG_MANIPULATION_API) + +__BEGIN_DECLS /* * Helper functions to manipulate tagged pointers. If more implementors of * the vm_memtag interface beyond KASAN-TBI were to come, then these definitions * should be ifdef guarded properly. */ + #define VM_MEMTAG_PTR_SIZE 56 #define VM_MEMTAG_TAG_SIZE 4 #define VM_MEMTAG_UPPER_SIZE 4 +typedef uint8_t vm_memtag_t; + union vm_memtag_ptr { long value; struct { long ptr_bits: VM_MEMTAG_PTR_SIZE; - uint8_t ptr_tag: VM_MEMTAG_TAG_SIZE; + vm_memtag_t ptr_tag: VM_MEMTAG_TAG_SIZE; long ptr_upper: VM_MEMTAG_UPPER_SIZE; }; }; -static inline vm_offset_t -vm_memtag_add_ptr_tag(vm_offset_t naked_ptr, uint8_t tag) +static inline vm_map_address_t +vm_memtag_insert_tag(vm_map_address_t naked_ptr, vm_memtag_t tag) { union vm_memtag_ptr p = { .value = (long)naked_ptr, }; p.ptr_tag = tag; - return (vm_offset_t)p.value; + return (vm_map_address_t)p.value; } -static inline uint8_t -vm_memtag_extract_tag(vm_offset_t tagged_ptr) +static inline vm_memtag_t +vm_memtag_extract_tag(vm_map_address_t tagged_ptr) { union vm_memtag_ptr p = { .value = (long)tagged_ptr, @@ -124,22 +182,28 @@ vm_memtag_extract_tag(vm_offset_t tagged_ptr) * (e.g. when packing VM pointers), the following definition hardcodes the * tag value to achieve optimal codegen and no external calls. */ -#define vm_memtag_canonicalize_address(addr) vm_memtag_add_ptr_tag(addr, 0xF) +#define vm_memtag_canonicalize_kernel(addr) vm_memtag_insert_tag(addr, 0xF) +#define vm_memtag_canonicalize_user(addr) vm_memtag_insert_tag(addr, 0x0) + +extern vm_map_address_t +vm_memtag_canonicalize(vm_map_t map, vm_map_address_t addr); + +__END_DECLS -#else /* CONFIG_KERNEL_TAGGING */ +#else /* ENABLE_MEMTAG_MANIPULATION_API */ -#define vm_memtag_bzero(p, s) bzero(p, s) -#define vm_memtag_get_tag(a) (0xF) -#define vm_memtag_fixup_ptr(a) (a) -#define vm_memtag_set_tag(a, s) do { } while (0) -#define vm_memtag_assign_tag(a, s) (a) -#define vm_memtag_add_ptr_tag(p, t) (p) + +#if KASAN_TBI +#error "vm_memtag manipulation APIs should be defined whenever KASAN-TBI is enabled" +#endif /* KASAN_TBI */ + +#define vm_memtag_insert_tag(p, t) (p) #define vm_memtag_extract_tag(p) (0xF) -#define vm_memtag_canonicalize_address(a) (a) -#define vm_memtag_enable_checking() do { } while (0) -#define vm_memtag_disable_checking() do { } while (0) +#define vm_memtag_canonicalize(m, a) (a) +#define vm_memtag_canonicalize_user(a) (a) +#define vm_memtag_canonicalize_kernel(a) (a) -#endif /* CONFIG_KERNEL_TAGGING */ +#endif /* ENABLE_MEMTAG_MANIPULATION_API */ #endif /* _MACH_VM_MEMTAG_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_options.h b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_options.h index 046056a4..1ac117b7 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_options.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_options.h @@ -29,7 +29,7 @@ #ifndef __VM_VM_OPTIONS_H__ #define __VM_VM_OPTIONS_H__ -#define UPL_DEBUG DEBUG +#define UPL_DEBUG (DEVELOPMENT || DEBUG) // #define VM_PIP_DEBUG #define VM_PAGE_BUCKETS_CHECK DEBUG @@ -46,4 +46,6 @@ #define FBDP_DEBUG_OBJECT_NO_PAGER (DEVELOPMENT || DEBUG) +#define PAGE_SLEEP_WITH_INHERITOR (1) + #endif /* __VM_VM_OPTIONS_H__ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_pageout.h b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_pageout.h index db77da8b..a547a461 100644 --- a/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_pageout.h +++ b/Frameworks/Kernel.framework/Versions/A/Headers/vm/vm_pageout.h @@ -67,4 +67,5 @@ #define _VM_VM_PAGEOUT_H_ + #endif /* _VM_VM_PAGEOUT_H_ */ diff --git a/Frameworks/Kernel.framework/Versions/A/Headers/x86_64/static_if.h b/Frameworks/Kernel.framework/Versions/A/Headers/x86_64/static_if.h new file mode 100644 index 00000000..e1952495 --- /dev/null +++ b/Frameworks/Kernel.framework/Versions/A/Headers/x86_64/static_if.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2021 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef _MACHINE_STATIC_IF_H +#error "do not include this file directly, use " +#else + +#define STATIC_IF_RELATIVE 0 +#define STATIC_IF_INSN_SIZE 5 + +typedef long static_if_offset_t; + +struct static_if_entry { + static_if_offset_t sie_base; + static_if_offset_t sie_target; + unsigned long sie_link; +}; + +/* generates a struct static_if_entry */ +#define STATIC_IF_ENTRY(n) \ + ".pushsection " STATIC_IF_SEGSECT ",regular,live_support" "\n\t" \ + ".align 3" "\n\t" \ + ".quad 1b" "\n\t" \ + ".quad %l1" "\n\t" \ + ".quad _" #n "_jump_key + %c0" "\n\t" \ + ".popsection" + +/* From "Recommended Multi-Byte Sequence of NOP Instruction" */ +#define STATIC_IF_NOP(n, label) \ + asm goto("1: .byte 0x0F,0x1F,0x44,0x00,0x00" "\n\t" \ + STATIC_IF_ENTRY(n) : : "i"(0) : : label) + +/* 32-bit jump */ +#define STATIC_IF_BRANCH(n, label) \ + asm goto("1: .byte 0xE9; .long %l1 - 2f; 2:" "\n\t" \ + STATIC_IF_ENTRY(n) : : "i"(1) : : label) + +#endif /* _MACHINE_STATIC_IF_H */ diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLAccelerationStructure.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLAccelerationStructure.h index 026541d2..c8bcb64b 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLAccelerationStructure.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLAccelerationStructure.h @@ -74,6 +74,18 @@ typedef NS_OPTIONS(uint32_t, MTLAccelerationStructureInstanceOptions) { MTLAccelerationStructureInstanceOptionNonOpaque = (1 << 3), } API_AVAILABLE(macos(11.0), ios(14.0)); +typedef NS_ENUM(NSInteger, MTLMatrixLayout) { + /** + * @brief Column-major order + */ + MTLMatrixLayoutColumnMajor = 0, + + /** + * @brief Row-major order + */ + MTLMatrixLayoutRowMajor = 1, +} API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.1), visionos(2.1)); + /** * @brief Base class for acceleration structure descriptors. Do not use this class directly. Use * one of the derived classes instead. @@ -255,6 +267,11 @@ MTL_EXPORT API_AVAILABLE(macos(11.0), ios(14.0)) */ @property (nonatomic) NSUInteger transformationMatrixBufferOffset API_AVAILABLE(macos(13.0), ios(16.0)); +/** + * @brief Matrix layout for the transformation matrix in the transformation + * matrix buffer. Defaults to MTLMatrixLayoutColumnMajor. + */ +@property (nonatomic) MTLMatrixLayout transformationMatrixLayout API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.1), visionos(2.1)); + (instancetype)descriptor; @end @@ -368,6 +385,11 @@ MTL_EXPORT API_AVAILABLE(macos(12.0), ios(15.0)) */ @property (nonatomic) NSUInteger transformationMatrixBufferOffset API_AVAILABLE(macos(13.0), ios(16.0)); +/** + * @brief Matrix layout for the transformation matrix in the transformation + * matrix buffer. Defaults to MTLMatrixLayoutColumnMajor. + */ +@property (nonatomic) MTLMatrixLayout transformationMatrixLayout API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.1), visionos(2.1)); + (instancetype)descriptor; @end @@ -950,6 +972,21 @@ typedef struct { float motionEndTime; } MTLIndirectAccelerationStructureMotionInstanceDescriptor API_AVAILABLE(macos(14.0), ios(17.0)); +typedef NS_ENUM(NSInteger, MTLTransformType) { + /** + * @brief A tightly packed matrix with 4 columns and 3 rows. The full transform is assumed + * to be a 4x4 matrix with the last row being (0, 0, 0, 1). + */ + MTLTransformTypePackedFloat4x3 = 0, + + /** + * @brief A transformation represented by individual components such as translation and + * rotation. The rotation is represented by a quaternion, allowing for correct motion + * interpolation. + */ + MTLTransformTypeComponent = 1, +} API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.1), visionos(2.1)); + /** * @brief Descriptor for an instance acceleration structure */ @@ -1006,6 +1043,23 @@ MTL_EXPORT API_AVAILABLE(macos(11.0), ios(14.0)) */ @property (nonatomic) NSUInteger motionTransformCount API_AVAILABLE(macos(12.0), ios(15.0)); +/** + * Matrix layout of the transformation matrices in the instance descriptors + * in the instance descriptor buffer and the transformation matrices in the + * transformation matrix buffer. Defaults to MTLMatrixLayoutColumnMajor. + */ +@property (nonatomic) MTLMatrixLayout instanceTransformationMatrixLayout API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.1), visionos(2.1)); + +/** + * @brief Type of motion transforms. Defaults to MTLTransformTypePackedFloat4x3. + */ +@property (nonatomic) MTLTransformType motionTransformType API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.1), visionos(2.1)); +/** + * @brief Motion transform stride. Defaults to 0, indicating that transforms are tightly packed according to the + * motion transform type. + */ +@property (nonatomic) NSUInteger motionTransformStride API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.1), visionos(2.1)); + + (instancetype)descriptor; @end @@ -1087,6 +1141,24 @@ MTL_EXPORT API_AVAILABLE(macos(14.0), ios(17.0)) */ @property (nonatomic) NSUInteger motionTransformCountBufferOffset; +/** + * Matrix layout of the transformation matrices in the instance descriptors + * in the instance descriptor buffer and the transformation matrices in the + * transformation matrix buffer. Defaults to MTLMatrixLayoutColumnMajor. + */ +@property (nonatomic) MTLMatrixLayout instanceTransformationMatrixLayout API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.1), visionos(2.1)); + +/** + * @brief Type of motion transforms. Defaults to MTLTransformTypePackedFloat4x3. + */ +@property (nonatomic) MTLTransformType motionTransformType API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.1), visionos(2.1)); + +/** + * @brief Motion transform stride. Defaults to 0, indicating that transforms are tightly packed according to the + * motion transform type. + */ +@property (nonatomic) NSUInteger motionTransformStride API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.1), visionos(2.1)); + + (instancetype)descriptor; @end diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLAccelerationStructureTypes.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLAccelerationStructureTypes.h index e8afa64f..7fd3f99f 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLAccelerationStructureTypes.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLAccelerationStructureTypes.h @@ -2,6 +2,7 @@ #import typedef metal::packed_float3 MTLPackedFloat3; +typedef metal::packed_float4 MTLPackedFloatQuaternion; #else #include #import @@ -46,6 +47,47 @@ MTL_INLINE MTLPackedFloat3 MTLPackedFloat3Make(float x, float y, float z) return packedFloat3; } +typedef struct MTLPackedFloatQuaternion { + float x; + float y; + float z; + float w; + +#ifdef __cplusplus + MTLPackedFloatQuaternion() + : x(0.0f), y(0.0f), z(0.0f), w(1.0f) + { + } + + MTLPackedFloatQuaternion(float x, float y, float z, float w) + : x(x), y(y), z(z), w(w) + { + } + + float & operator[](int idx) { + float *elements = &x; + + return elements[idx]; + } + + const float & operator[](int idx) const { + const float *elements = &x; + + return elements[idx]; + } +#endif +} MTLPackedFloatQuaternion; + +MTL_INLINE MTLPackedFloatQuaternion MTLPackedFloatQuaternionMake(float x, float y, float z, float w) +{ + MTLPackedFloatQuaternion packedQuaternion; + packedQuaternion.x = x; + packedQuaternion.y = y; + packedQuaternion.z = z; + packedQuaternion.w = w; + return packedQuaternion; +} + #endif typedef struct _MTLPackedFloat4x3 { @@ -137,3 +179,38 @@ typedef struct _MTLAxisAlignedBoundingBox { } #endif } MTLAxisAlignedBoundingBox; + +/** + * @brief A transformation represented by individual components such as translation and + * rotation. The rotation is represented by a quaternion, allowing for correct motion + * interpolation. + */ +typedef struct { + /** + * @brief The scale of the instance applied before rotation alongside shear and pivot + */ + MTLPackedFloat3 scale; + + /** + * @brief The shear of the instance applied before rotation alongside scale and pivot + */ + MTLPackedFloat3 shear; + + /** + * @brief Translation applied before rotation alongside scale and shear. Allows + * rotation to pivot around a point. + */ + MTLPackedFloat3 pivot; + + /** + * @brief The rotation of the instance as a normalized quaternion. Applied after scale, + * shear, and pivot and before translation + */ + MTLPackedFloatQuaternion rotation; + + /** + * @brief The translation of the instance. Applied after rotation. Typically contains + * the composition of object translation and the inverse of the pivot translation. + */ + MTLPackedFloat3 translation; +} MTLComponentTransform; \ No newline at end of file diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLAllocation.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLAllocation.h new file mode 100644 index 00000000..24123b9a --- /dev/null +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLAllocation.h @@ -0,0 +1,16 @@ +// +// MTLAllocation.h +// Metal +// +// Copyright (c) 2024 Apple Inc. All rights reserved. +// + +#import +#import + + +API_AVAILABLE(macos(15.0), ios(18.0)) +@protocol MTLAllocation +@property (readonly) NSUInteger allocatedSize API_AVAILABLE(macos(15.0), ios(18.0)); +@end + diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLArgument.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLArgument.h index 2d7e13c3..79bb02ee 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLArgument.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLArgument.h @@ -128,6 +128,7 @@ typedef NS_ENUM(NSUInteger, MTLDataType) { MTLDataTypeBFloat2 API_AVAILABLE(macos(14.0), ios(17.0)) = 122, MTLDataTypeBFloat3 API_AVAILABLE(macos(14.0), ios(17.0)) = 123, MTLDataTypeBFloat4 API_AVAILABLE(macos(14.0), ios(17.0)) = 124, + } API_AVAILABLE(macos(10.11), ios(8.0)); @class MTLArgument; diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLBinaryArchive.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLBinaryArchive.h index 2e4eefeb..492698b6 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLBinaryArchive.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLBinaryArchive.h @@ -99,6 +99,24 @@ API_AVAILABLE(macos(11.0), ios(14.0)) */ - (BOOL) addTileRenderPipelineFunctionsWithDescriptor:(MTLTileRenderPipelineDescriptor*)descriptor error:(NSError**)error API_AVAILABLE(tvos(14.5)); +/*! + @method addMeshRenderPipelineFunctionsWithDescriptor:error: + @abstract Add the function(s) from a mesh render pipeline state to the archive. + @param descriptor The descriptor from which function(s) will be added. + @param error If the function fails, this will be set to describe the failure. This can be (but is not required to be) an error from the MTLBinaryArchiveDomain domain. + @return Whether or not the addition succeeded. Functions referenced multiple times are silently accepted. + */ +- (BOOL) addMeshRenderPipelineFunctionsWithDescriptor:(MTLMeshRenderPipelineDescriptor*)descriptor error:(NSError**)error API_AVAILABLE(macos(15.0), ios(18.0)); + + +/*! + @method addLibraryWithDescriptor:error: + @abstract Add the function(s) from a stitched library to the archive. + @param descriptor The stitched library descriptor from which function(s) will be added. + @param error If the function fails, this will be set to describe the failure. This can be (but is not required to be) an error from the MTLBinaryArchiveDomain domain. + @return Whether or not the addition succeeded. Functions referenced multiple times are silently accepted. + */ +- (BOOL) addLibraryWithDescriptor:(MTLStitchedLibraryDescriptor *)descriptor error:(NSError **)error API_AVAILABLE(macos(15.0), ios(18.0)); /*! @method serializeToURL:error: @abstract Write the contents of a MTLBinaryArchive to a file. diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLCommandBuffer.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLCommandBuffer.h index 800837a4..236a28ed 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLCommandBuffer.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLCommandBuffer.h @@ -20,6 +20,7 @@ NS_ASSUME_NONNULL_BEGIN @protocol MTLCommandBuffer; @protocol MTLEvent; @protocol MTLLogContainer; +@protocol MTLLogState; @protocol MTLResourceStateCommandEncoder; @protocol MTLAccelerationStructureCommandEncoder; @class MTLRenderPassDescriptor; @@ -27,6 +28,7 @@ NS_ASSUME_NONNULL_BEGIN @class MTLBlitPassDescriptor; @class MTLResourceStatePassDescriptor; @class MTLAccelerationStructurePassDescriptor; +@protocol MTLResidencySet; /*! @enum MTLCommandBufferStatus @@ -183,6 +185,13 @@ MTL_EXPORT API_AVAILABLE(macos(11.0), ios(14.0)) */ @property (readwrite, nonatomic) MTLCommandBufferErrorOption errorOptions; +/*! + @property logState + @abstract Contains information related to shader logging. +*/ +@property (readwrite, nonatomic, nullable, retain) id logState + API_AVAILABLE(macos(15.0), ios(18.0)); + @end // MTLCommandBufferDescriptor /*! @@ -431,6 +440,19 @@ API_AVAILABLE(macos(10.11), ios(8.0)) */ - (void)popDebugGroup API_AVAILABLE(macos(10.13), ios(11.0)); +/*! + @method useResidencySet + @abstract Marks the residency set as part of the current command buffer execution. This ensures that the residency set is resident during execution of the command buffer. + */ +- (void)useResidencySet:(id )residencySet + API_AVAILABLE(macos(15.0), ios(18.0)); +/*! + @method useResidencySets + @abstract Marks the residency sets as part of the current command buffer execution. This ensures that the residency sets are resident during execution of the command buffer. + */ +- (void)useResidencySets:(const id _Nonnull[_Nonnull])residencySets + count:(NSUInteger)count + API_AVAILABLE(macos(15.0), ios(18.0)); @end NS_ASSUME_NONNULL_END diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLCommandQueue.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLCommandQueue.h index 595d6788..834f1d6d 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLCommandQueue.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLCommandQueue.h @@ -11,6 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @protocol MTLDevice; @protocol MTLCommandBuffer; +@protocol MTLResidencySet; /*! @protocol MTLCommandQueue @@ -53,6 +54,49 @@ API_AVAILABLE(macos(10.11), ios(8.0)) */ - (void)insertDebugCaptureBoundary API_DEPRECATED("Use MTLCaptureScope instead", macos(10.11, 10.13), ios(8.0, 11.0)); +/*! + @method addResidencySet + @abstract Marks the residency set as part of the command queue execution. This ensures that the residency set is resident during execution of all the command buffers within the queue. + */ +- (void)addResidencySet:(id )residencySet + API_AVAILABLE(macos(15.0), ios(18.0)); +/*! + @method addResidencySets + @abstract Marks the residency sets as part of the command queue execution. This ensures that the residency sets are resident during execution of all the command buffers within the queue. + */ +- (void)addResidencySets:(const id _Nonnull[_Nonnull])residencySets + count:(NSUInteger)count + API_AVAILABLE(macos(15.0), ios(18.0)); + +/*! + @method removeResidencySet + @abstract Removes the residency set from the command queue execution. This ensures that only the remaining residency sets are resident during execution of all the command buffers within the queue. + */ +- (void)removeResidencySet:(id )residencySet + API_AVAILABLE(macos(15.0), ios(18.0)); + +/*! + @method removeResidencySets + @abstract Removes the residency sets from the command queue execution. This ensures that only the remaining residency sets are resident during execution of all the command buffers within the queue. + */ +- (void)removeResidencySets:(const id _Nonnull[_Nonnull])residencySets + count:(NSUInteger)count +API_AVAILABLE(macos(15.0), ios(18.0)); + @end +MTL_EXPORT API_AVAILABLE(macos(15.0), ios(18.0)) +@interface MTLCommandQueueDescriptor : NSObject +/*! + @property maxCommandBufferCount + @ Specify upper bound on uncompleted command buffers that may be enqueued on this queue + */ +@property (readwrite, nonatomic) NSUInteger maxCommandBufferCount; + +/*! + @property logState + @ Specify the MTLLogState to enable shader logging + */ +@property (readwrite, nonatomic, nullable, retain) id logState; +@end NS_ASSUME_NONNULL_END diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLComputePipeline.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLComputePipeline.h index eacdd4f8..d9b5eb86 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLComputePipeline.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLComputePipeline.h @@ -136,6 +136,13 @@ MTL_EXPORT API_AVAILABLE(macos(10.11), ios(9.0)) +/*! + @property shaderValidation + @abstract Toggle that determines whether Metal Shader Validation should be enabled or disabled for the pipeline. + @discussion The value can be overridden using `MTL_SHADER_VALIDATION_ENABLE_PIPELINES` or `MTL_SHADER_VALIDATION_DISABLE_PIPELINES` Environment Variables. + */ +@property (readwrite, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0)); + @end /*! @@ -220,6 +227,11 @@ API_AVAILABLE(macos(10.11), ios(8.0)) - (nullable id )newIntersectionFunctionTableWithDescriptor:(MTLIntersectionFunctionTableDescriptor * _Nonnull)descriptor API_AVAILABLE(macos(11.0), ios(14.0)); +/*! + @property shaderValidation + @abstract Current state of Shader Validation for the pipeline. + */ +@property (readonly, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0)); @end NS_ASSUME_NONNULL_END diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLDevice.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLDevice.h index 4730b558..fca88fd0 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLDevice.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLDevice.h @@ -69,7 +69,11 @@ NS_ASSUME_NONNULL_BEGIN @protocol MTLIntersectionFunctionTable; @class MTLIntersectionFunctionTableDescriptor; @class MTLStitchedLibraryDescriptor; +@protocol MTLLogState; +@class MTLLogStateDescriptor; @protocol MTLArgumentEncoder; +@class MTLResidencySetDescriptor; +@protocol MTLResidencySet; @protocol MTLIOFileHandle; @protocol MTLIOCommandQueue; @@ -85,7 +89,6 @@ typedef NS_ENUM(NSInteger, MTLIOCompressionMethod) { }; - /*! @brief Returns a reference to the preferred system default Metal device. @discussion On Mac OS X systems that support automatic graphics switching, calling @@ -97,11 +100,10 @@ MTL_EXTERN id __nullable MTLCreateSystemDefaultDevice(void) API_AVAI /*! @brief Returns all Metal devices in the system. - @discussion This API will not cause the system to switch devices and leaves the - decision about which GPU to use up to the application based on whatever criteria - it deems appropriate. + @discussion On macOS and macCatalyst, this API will not cause the system to switch devices and leaves the decision about which GPU to use up to the application based on whatever criteria it deems appropriate. + On iOS, tvOS and visionOS, this API returns an array containing the same device that MTLCreateSystemDefaultDevice would have returned, or an empty array if it would have failed. */ -MTL_EXTERN NSArray > *MTLCopyAllDevices(void) API_AVAILABLE(macos(10.11), macCatalyst(13.0)) API_UNAVAILABLE(ios) NS_RETURNS_RETAINED; +MTL_EXTERN NSArray > *MTLCopyAllDevices(void) API_AVAILABLE(macos(10.11), macCatalyst(13.0), ios(18.0)) NS_RETURNS_RETAINED; /*! @brief Type for device notifications @@ -239,7 +241,8 @@ typedef NS_ENUM(NSUInteger, MTLDeviceLocation) typedef NS_OPTIONS(NSUInteger, MTLPipelineOption) { MTLPipelineOptionNone = 0, - MTLPipelineOptionArgumentInfo = 1 << 0, + MTLPipelineOptionArgumentInfo API_DEPRECATED_WITH_REPLACEMENT("MTLPipelineOptionBindingInfo", macos(10.11, 13.0), ios(8.0, 16.0)) = 1 << 0, + MTLPipelineOptionBindingInfo = 1 << 0, MTLPipelineOptionBufferTypeInfo = 1 << 1, MTLPipelineOptionFailOnBinaryArchiveMiss API_AVAILABLE(macos(11.0), ios(14.0)) = 1 << 2, } API_AVAILABLE(macos(10.11), ios(8.0)); @@ -600,6 +603,12 @@ API_AVAILABLE(macos(10.11), ios(8.0)) +/*! + @method newLogStateWithDescriptor + @abstract This method will create a new MTLLogState. + */ +- (nullable id ) newLogStateWithDescriptor:(MTLLogStateDescriptor* _Nonnull) descriptor error:(__autoreleasing NSError* _Nullable *)error API_AVAILABLE(macos(15.0), ios(18.0)); + /*! @method newCommandQueue @brief Create and return a new command queue. Command Queues created via this method will only allow up to 64 non-completed command buffers. @@ -614,6 +623,12 @@ API_AVAILABLE(macos(10.11), ios(8.0)) */ - (nullable id )newCommandQueueWithMaxCommandBufferCount:(NSUInteger)maxCommandBufferCount; +/*! + @method newCommandQueueWithDescriptor: + @brief Create a MTLCommandQueue according to MTLCommandQueueDescriptor. + */ +- (nullable id )newCommandQueueWithDescriptor:(MTLCommandQueueDescriptor *)descriptor API_AVAILABLE(macos(15.0), ios(18.0)); + /*! @method heapTextureSizeAndAlignWithDescriptor: @abstract Determine the byte size of textures when sub-allocated from a heap. @@ -1276,5 +1291,14 @@ typedef uint64_t MTLTimestamp; */ @property (readonly) NSUInteger maximumConcurrentCompilationTaskCount API_AVAILABLE(macos(13.3)) API_UNAVAILABLE(ios); + +/*! + @method newResidencySetWithDescriptor + @abstract Creates a new residency set with a descriptor. + */ +- (nullable id) newResidencySetWithDescriptor:(MTLResidencySetDescriptor *)desc + error:(NSError *__nullable*)error + API_AVAILABLE(macos(15.0), ios(18.0)); + @end NS_ASSUME_NONNULL_END diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLDeviceCertification.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLDeviceCertification.h new file mode 100644 index 00000000..744f3b93 --- /dev/null +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLDeviceCertification.h @@ -0,0 +1,29 @@ +// +// MTLDeviceCertification.h +// Metal +// +// Copyright (c) 2014-2024 Apple Inc. All rights reserved. +// + +#import +#import + + +typedef NSInteger NSDeviceCertification NS_TYPED_ENUM API_AVAILABLE(ios(18.0), macos(15.0)); +API_AVAILABLE(ios(18.0), macos(15.0)) extern NSDeviceCertification const NSDeviceCertificationiPhonePerformanceGaming; + +typedef NSInteger NSProcessPerformanceProfile NS_TYPED_ENUM API_AVAILABLE(ios(18.0), macos(15.0)); +API_AVAILABLE(ios(18.0), macos(15.0)) extern NSProcessPerformanceProfile const NSProcessPerformanceProfileDefault; +API_AVAILABLE(ios(18.0), macos(15.0)) extern NSProcessPerformanceProfile const NSProcessPerformanceProfileSustained; + +API_AVAILABLE(ios(18.0), macos(15.0)) extern const NSNotificationName NSProcessInfoPerformanceProfileDidChangeNotification; + +API_AVAILABLE(ios(18.0), macos(15.0)) +@interface NSProcessInfo (NSDeviceCertification) + +- (BOOL)isDeviceCertifiedFor:(NSDeviceCertification)performanceTier; + +- (BOOL)hasPerformanceProfile:(NSProcessPerformanceProfile)performanceProfile; + +@end + diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLEvent.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLEvent.h index d6917887..a0e73f92 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLEvent.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLEvent.h @@ -53,6 +53,10 @@ API_AVAILABLE(macos(10.14), ios(12.0)) // Convenience method for creating a shared event handle that may be passed to other processes via XPC. - (MTLSharedEventHandle *)newSharedEventHandle; +// Synchronously wait for the signaledValue to be greater than or equal to 'value', with a timeout +// specified in milliseconds. Returns YES if the value was signaled before the timeout, otherwise NO. +- (BOOL)waitUntilSignaledValue:(uint64_t)value timeoutMS:(uint64_t)milliseconds API_AVAILABLE(macos(12.0), ios(15.0)); + @property (readwrite) uint64_t signaledValue; // Read or set signaled value @end diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionDescriptor.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionDescriptor.h index 8698458d..29e0b0f3 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionDescriptor.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionDescriptor.h @@ -25,11 +25,19 @@ typedef NS_OPTIONS(NSUInteger, MTLFunctionOptions) { */ MTLFunctionOptionCompileToBinary API_AVAILABLE(macos(11.0), ios(14.0)) = 1 << 0, /** - * @brief stores and tracks this function in a MetalScript + * @brief stores and tracks this function in a Metal Pipelines Script * This flag is optional and only supported in the context of binary archives. * @discussion This flag is required for inspecting and consuming binary archives with specialized MTLFunctions via the metal-source tool. It is not required for recompilation, nor for storing functions in binary archives. Set this flag only if you intend to use metal-source on a serialized binary archive. */ - MTLFunctionOptionStoreFunctionInMetalScript API_AVAILABLE(macos(14.0), ios(17.0)) = 1 << 1, + MTLFunctionOptionStoreFunctionInMetalPipelinesScript API_AVAILABLE(macos(15.0), ios(18.0)) = 1 << 1, + MTLFunctionOptionStoreFunctionInMetalScript API_DEPRECATED_WITH_REPLACEMENT("MTLFunctionOptionStoreFunctionInMetalPipelinesScript", macos(14.0, 15.0), ios(17.0, 18.0), tvos(17.0, 18.0)) = 1 << 1, + + /** + * @brief Function creation fails (i.e nil is returned) if: + * - A lookup binary archive has been specified + * - The function has not been found in the archive + */ + MTLFunctionOptionFailOnBinaryArchiveMiss API_AVAILABLE(macos(15.0), ios(18.0)) = 1 << 2, } API_AVAILABLE(macos(11.0), ios(14.0)); MTL_EXPORT API_AVAILABLE(macos(11.0), ios(14.0)) diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionLog.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionLog.h index 592054d9..25379899 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionLog.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionLog.h @@ -16,7 +16,7 @@ typedef NS_ENUM(NSUInteger, MTLFunctionLogType) { }; API_AVAILABLE(macos(11.0), ios(14.0)) -@protocol MTLLogContainer +@protocol MTLLogContainer @end API_AVAILABLE(macos(11.0), ios(14.0)) diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionStitching.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionStitching.h index 1080dc77..8b21b368 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionStitching.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLFunctionStitching.h @@ -17,6 +17,28 @@ NS_ASSUME_NONNULL_BEGIN +/*! + @abstract + A bitfield of options to create a stitched library + */ +typedef NS_OPTIONS(NSUInteger, MTLStitchedLibraryOptions) +{ + MTLStitchedLibraryOptionNone = 0, + + /** + * @brief Library creation fails (i.e nil is returned) if: + * - A lookup binary archive has been specified + * - The library has not been found in the archive + */ + MTLStitchedLibraryOptionFailOnBinaryArchiveMiss = 1 << 0, + /** + * @brief stores and tracks this library in a Metal Pipelines Script + * This flag is optional and only supported in the context of binary archives. + * @discussion This flag is required for inspecting and consuming binary archives with stitched libraries via the metal-source tool. It is not required for recompilation, nor for storing stitched libraries in binary archives. Set this flag only if you intend to use metal-source on a serialized binary archive. + */ + MTLStitchedLibraryOptionStoreLibraryInMetalPipelinesScript = 1 << 1, +} API_AVAILABLE(macos(15.0), ios(18.0)); + /*! @protocol MTLFunctionStitchingAttribute @abstract An attribute to be applied to the produced stitched function. @@ -74,7 +96,7 @@ MTL_EXPORT API_AVAILABLE(macos(12.0), ios(15.0)) @interface MTLFunctionStitchingGraph : NSObject @property (readwrite, copy, nonnull, nonatomic) NSString* functionName; @property (readwrite, copy, nonnull, nonatomic) NSArray* nodes; -@property (readwrite, copy, nullable, nonatomic) MTLFunctionStitchingFunctionNode* outputNode; +@property (readwrite, retain, nullable, nonatomic) MTLFunctionStitchingFunctionNode* outputNode; @property (readwrite, copy, nonnull, nonatomic) NSArray>* attributes; - (instancetype)initWithFunctionName:(nonnull NSString*)functionName nodes:(nonnull NSArray*)nodes @@ -90,6 +112,19 @@ MTL_EXPORT API_AVAILABLE(macos(12.0), ios(15.0)) @interface MTLStitchedLibraryDescriptor : NSObject @property (readwrite, copy, nonnull, nonatomic) NSArray* functionGraphs; @property (readwrite, copy, nonnull, nonatomic) NSArray>* functions; + +/*! +@property binaryArchives +@abstract The array of archives to be searched. +@discussion Binary archives to be searched for precompiled stitched libraries during the compilation of this library. +*/ +@property (readwrite, copy, nonnull, nonatomic) NSArray>* binaryArchives API_AVAILABLE(macos(15.0), ios(18.0)); + +/*! +* @property options +* @abstract The options to use for this new MTLLibrary. +*/ +@property (readwrite, nonatomic) MTLStitchedLibraryOptions options API_AVAILABLE(macos(15.0), ios(18.0)); @end diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLHeap.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLHeap.h index 53bc5fb1..f9161fb2 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLHeap.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLHeap.h @@ -7,6 +7,7 @@ #import #import +#import #import #import #import @@ -105,7 +106,7 @@ MTL_EXPORT API_AVAILABLE(macos(10.13), ios(10.0)) @protocol MTLHeap */ API_AVAILABLE(macos(10.13), ios(10.0)) -@protocol MTLHeap +@protocol MTLHeap /*! @property label diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLIndirectCommandBuffer.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLIndirectCommandBuffer.h index 4765f5e6..4129fbf3 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLIndirectCommandBuffer.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLIndirectCommandBuffer.h @@ -25,8 +25,8 @@ typedef NS_OPTIONS(NSUInteger, MTLIndirectCommandType) { MTLIndirectCommandTypeConcurrentDispatch API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(13.0)) = (1 << 5), /* Dispatch threadgroups with concurrent execution */ MTLIndirectCommandTypeConcurrentDispatchThreads API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(13.0)) = (1 << 6), /* Dispatch threads with concurrent execution */ - MTLIndirectCommandTypeDrawMeshThreadgroups API_AVAILABLE(macos(14.0), ios(17.0)) = (1 << 7), - MTLIndirectCommandTypeDrawMeshThreads API_AVAILABLE(macos(14.0), ios(17.0)) = (1 << 8), + MTLIndirectCommandTypeDrawMeshThreadgroups API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)) = (1 << 7), + MTLIndirectCommandTypeDrawMeshThreads API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)) = (1 << 8), } API_AVAILABLE(macos(10.14), ios(12.0)); @@ -72,6 +72,7 @@ MTL_EXPORT API_AVAILABLE(macos(10.14), ios(12.0)) */ @property (readwrite, nonatomic) BOOL inheritBuffers; + /*! @abstract The maximum bind index of vertex argument buffers that can be set per command. @@ -101,20 +102,19 @@ MTL_EXPORT API_AVAILABLE(macos(10.14), ios(12.0)) @abstract The maximum bind index of object stage buffers that can be set per render command. */ -@property (readwrite, nonatomic) NSUInteger maxObjectBufferBindCount API_AVAILABLE(macos(14.0), ios(17.0)); - +@property (readwrite, nonatomic) NSUInteger maxObjectBufferBindCount API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); /*! @abstract The maximum bind index of mesh stage buffers that can be set per render command. */ -@property (readwrite, nonatomic) NSUInteger maxMeshBufferBindCount API_AVAILABLE(macos(14.0), ios(17.0)); +@property (readwrite, nonatomic) NSUInteger maxMeshBufferBindCount API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); /*! @abstract The maximum bind index of object threadgroup memory that can be set per render command. The default value is 0. */ -@property (readwrite, nonatomic) NSUInteger maxObjectThreadgroupMemoryBindCount API_AVAILABLE(macos(14.0), ios(17.0)); +@property (readwrite, nonatomic) NSUInteger maxObjectThreadgroupMemoryBindCount API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); /*! @abstract diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLIndirectCommandEncoder.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLIndirectCommandEncoder.h index 8018a2b1..636389fc 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLIndirectCommandEncoder.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLIndirectCommandEncoder.h @@ -50,17 +50,19 @@ tessellationFactorBufferOffset:(NSUInteger)offset tessellationFactorBufferInstan - (void)drawPrimitives:(MTLPrimitiveType)primitiveType vertexStart:(NSUInteger)vertexStart vertexCount:(NSUInteger)vertexCount instanceCount:(NSUInteger)instanceCount baseInstance:(NSUInteger)baseInstance; - (void)drawIndexedPrimitives:(MTLPrimitiveType)primitiveType indexCount:(NSUInteger)indexCount indexType:(MTLIndexType)indexType indexBuffer:(id )indexBuffer indexBufferOffset:(NSUInteger)indexBufferOffset instanceCount:(NSUInteger)instanceCount baseVertex:(NSInteger)baseVertex baseInstance:(NSUInteger)baseInstance; -- (void)setObjectThreadgroupMemoryLength:(NSUInteger)length atIndex:(NSUInteger)index API_AVAILABLE(macos(14.0), ios(17.0)); -- (void)setObjectBuffer:(id )buffer offset:(NSUInteger)offset atIndex:(NSUInteger)index API_AVAILABLE(macos(14.0), ios(17.0)); -- (void)setMeshBuffer:(id )buffer offset:(NSUInteger)offset atIndex:(NSUInteger)index API_AVAILABLE(macos(14.0), ios(17.0)); +- (void)setObjectThreadgroupMemoryLength:(NSUInteger)length atIndex:(NSUInteger)index API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); +- (void)setObjectBuffer:(id )buffer offset:(NSUInteger)offset atIndex:(NSUInteger)index API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); +- (void)setMeshBuffer:(id )buffer offset:(NSUInteger)offset atIndex:(NSUInteger)index API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); - (void)drawMeshThreadgroups:(MTLSize)threadgroupsPerGrid // MTLIndirectCommandTypeDrawMeshThreadgroups threadsPerObjectThreadgroup:(MTLSize)threadsPerObjectThreadgroup - threadsPerMeshThreadgroup:(MTLSize)threadsPerMeshThreadgroup API_AVAILABLE(macos(14.0), ios(17.0)); + threadsPerMeshThreadgroup:(MTLSize)threadsPerMeshThreadgroup API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); - (void) drawMeshThreads:(MTLSize)threadsPerGrid // MTLIndirectCommandTypeDrawMeshThreads threadsPerObjectThreadgroup:(MTLSize)threadsPerObjectThreadgroup - threadsPerMeshThreadgroup:(MTLSize)threadsPerMeshThreadgroup API_AVAILABLE(macos(14.0), ios(17.0)); -- (void)setBarrier API_AVAILABLE(macos(14.0), ios(17.0)); -- (void)clearBarrier API_AVAILABLE(macos(14.0), ios(17.0)); + threadsPerMeshThreadgroup:(MTLSize)threadsPerMeshThreadgroup API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); +- (void)setBarrier API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); +- (void)clearBarrier API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); + + - (void)reset; diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLLibrary.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLLibrary.h index 91c8c152..786490c6 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLLibrary.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLLibrary.h @@ -193,6 +193,8 @@ typedef NS_ENUM(NSUInteger, MTLLanguageVersion) { (3 << 16) + 0, MTLLanguageVersion3_1 API_AVAILABLE(macos(14.0), ios(17.0)) = (3 << 16) + 1, + MTLLanguageVersion3_2 API_AVAILABLE(macos(15.0), ios(18.0)) = + (3 << 16) + 2, } API_AVAILABLE(macos(10.11), ios(9.0)); typedef NS_ENUM(NSInteger, MTLLibraryType) { @@ -223,6 +225,42 @@ typedef NS_ENUM(NSInteger, MTLCompileSymbolVisibility) MTLCompileSymbolVisibilityHidden = 1, } API_AVAILABLE(macos(13.3), ios(16.4)); +/*! + @enum MTLMathMode + @abstract An enum to indicate if the compiler can perform optimizations for floating-point arithmetic that may violate the IEEE 754 standard + + @constant MTLMathModeSafe + Disables unsafe floating-point optimizations + + @constant MTLMathModeRelaxed + Allows aggressive, unsafe floating-point optimizations but preserves infs and nans + + @constant MTLMathModeFast + Allows aggressive, unsafe floating-point optimizations + */ +typedef NS_ENUM(NSInteger, MTLMathMode) +{ + MTLMathModeSafe = 0, + MTLMathModeRelaxed = 1, + MTLMathModeFast = 2, +}; + +/*! + @enum MTLMathFloatingPointFunctions + @abstract An enum to indicate the default math functions for single precision floating-point + + @constant MTLMathFloatingPointFunctionsFast + Sets the default math functions for single precision floating-point to the corresponding functions in `metal::fast` namespace + + @constant MTLMathFloatingPointFunctionsPrecise + Sets the default math functions for single precision floating-point to the corresponding functions in 'metal::precise' namespace + */ +typedef NS_ENUM(NSInteger, MTLMathFloatingPointFunctions) +{ + MTLMathFloatingPointFunctionsFast = 0, + MTLMathFloatingPointFunctionsPrecise = 1, +}; + MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0)) @interface MTLCompileOptions : NSObject @@ -241,7 +279,19 @@ MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0)) @property fastMathEnabled @abstract If YES, enables the compiler to perform optimizations for floating-point arithmetic that may violate the IEEE 754 standard. It also enables the high precision variant of math functions for single precision floating-point scalar and vector types. fastMathEnabled defaults to YES. */ -@property (readwrite, nonatomic) BOOL fastMathEnabled; +@property (readwrite, nonatomic) BOOL fastMathEnabled API_DEPRECATED("Use mathMode instead", macos(10.11, 15.0), ios(8.0, 18.0)); + + /*! + @property mathMode + @abstract Sets the floating-point arithmetic optimizations. Default depends on the language standard version. + */ +@property (readwrite, nonatomic) MTLMathMode mathMode API_AVAILABLE(macos(15.0), ios(18.0)); + + /*! + @property mathFloatingPointFunctions + @abstract Sets the default math functions for single precision floating-point. Default is `MTLMathFloatingPointFunctionsFast`. + */ +@property (nonatomic) MTLMathFloatingPointFunctions mathFloatingPointFunctions API_AVAILABLE(macos(15.0), ios(18.0)); /*! @property languageVersion @@ -315,6 +365,11 @@ MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0)) */ @property (readwrite, nonatomic) NSUInteger maxTotalThreadsPerThreadgroup API_AVAILABLE(macos(13.3), ios(16.4)); +/*! + @property enableLogging + @abstract If YES, set the compiler to enable any logging in the shader. The default is false. + */ +@property (readwrite, nonatomic) BOOL enableLogging API_AVAILABLE(macos(15.0), ios(18.0)); @end /*! diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLLogState.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLLogState.h new file mode 100644 index 00000000..b69bc87d --- /dev/null +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLLogState.h @@ -0,0 +1,65 @@ +// +// MTLLogState.h +// Metal +// +// Copyright © 2024 Apple, Inc. All rights reserved. +// + +#import + +#import + +NS_ASSUME_NONNULL_BEGIN +/*! + * @enum MTLLogLevel + * + * @abstract + * The level of the log entry. + */ + +typedef NS_ENUM(NSInteger, MTLLogLevel) +{ + MTLLogLevelUndefined, + MTLLogLevelDebug, // A log level that captures diagnostic information. + MTLLogLevelInfo, // The log level that captures additional information. + MTLLogLevelNotice, // The log level that captures notifications. + MTLLogLevelError, // The log level that captures errors. + MTLLogLevelFault, // The log level that captures fault information. +} +API_AVAILABLE(macos(15.0), ios(18.0)); + +API_AVAILABLE(macos(15.0), ios(18.0)) +@protocol MTLLogState +/*! +@method addLogHandler +@abstract Add a function block to handle log message output. +In the absence of any handlers, log messages go through the default handler. +*/ +- (void)addLogHandler:(void(^)(NSString* __nullable subSystem, NSString* __nullable category, MTLLogLevel logLevel, NSString* message))block; +@end + +MTL_EXPORT API_AVAILABLE(macos(15.0), ios(18.0)) +@interface MTLLogStateDescriptor : NSObject +/*! +@abstract level indicates the minimum level of the logs that will be printed. +@description All the logs with level less than given level will be skipped on the GPU Side. + */ +@property (assign, readwrite) MTLLogLevel level; + +/*! + * @abstract bufferSize indicates the size of the buffer where GPU will store the logging content from shaders. Minimum value is 1KB + */ +@property (assign, readwrite) NSInteger bufferSize; +@end + +API_AVAILABLE(macos(15.0), ios(18.0)) +MTL_EXTERN NSErrorDomain const MTLLogStateErrorDomain; +/*! + @enum + @abstract NSErrors raised when creating a logstate. + */ +typedef NS_ENUM(NSUInteger, MTLLogStateError) { + MTLLogStateErrorInvalidSize = 1, + MTLLogStateErrorInvalid = 2 +} API_AVAILABLE(macos(15.0), ios(18.0)); +NS_ASSUME_NONNULL_END diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLPipeline.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLPipeline.h index eabf36d4..45b10188 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLPipeline.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLPipeline.h @@ -23,6 +23,13 @@ typedef NS_ENUM(NSUInteger, MTLMutability) } API_AVAILABLE(macos(10.13), ios(11.0)); +typedef NS_ENUM(NSInteger, MTLShaderValidation) +{ + MTLShaderValidationDefault = 0, + MTLShaderValidationEnabled = 1, + MTLShaderValidationDisabled = 2, +} API_AVAILABLE(macos(15.0), ios(18.0)); + MTL_EXPORT API_AVAILABLE(macos(10.13), ios(11.0)) @interface MTLPipelineBufferDescriptor : NSObject diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLPixelFormat.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLPixelFormat.h index 73c11924..b006038a 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLPixelFormat.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLPixelFormat.h @@ -122,14 +122,14 @@ typedef NS_ENUM(NSUInteger, MTLPixelFormat) MTLPixelFormatBC7_RGBAUnorm_sRGB API_AVAILABLE(macos(10.11), macCatalyst(13.0), ios(16.4)) = 153, /* PVRTC */ - MTLPixelFormatPVRTC_RGB_2BPP API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(8.0)) = 160, - MTLPixelFormatPVRTC_RGB_2BPP_sRGB API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(8.0)) = 161, - MTLPixelFormatPVRTC_RGB_4BPP API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(8.0)) = 162, - MTLPixelFormatPVRTC_RGB_4BPP_sRGB API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(8.0)) = 163, - MTLPixelFormatPVRTC_RGBA_2BPP API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(8.0)) = 164, - MTLPixelFormatPVRTC_RGBA_2BPP_sRGB API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(8.0)) = 165, - MTLPixelFormatPVRTC_RGBA_4BPP API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(8.0)) = 166, - MTLPixelFormatPVRTC_RGBA_4BPP_sRGB API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(8.0)) = 167, + MTLPixelFormatPVRTC_RGB_2BPP API_DEPRECATED("Usage of ASTC/ETC2/BC formats is recommended instead.", macos(11.0,15.0), macCatalyst(14.0,18.0), ios(8.0,18.0)) = 160, + MTLPixelFormatPVRTC_RGB_2BPP_sRGB API_DEPRECATED("Usage of ASTC/ETC2/BC formats is recommended instead.", macos(11.0,15.0), macCatalyst(14.0,18.0), ios(8.0,18.0)) = 161, + MTLPixelFormatPVRTC_RGB_4BPP API_DEPRECATED("Usage of ASTC/ETC2/BC formats is recommended instead.", macos(11.0,15.0), macCatalyst(14.0,18.0), ios(8.0,18.0)) = 162, + MTLPixelFormatPVRTC_RGB_4BPP_sRGB API_DEPRECATED("Usage of ASTC/ETC2/BC formats is recommended instead.", macos(11.0,15.0), macCatalyst(14.0,18.0), ios(8.0,18.0)) = 163, + MTLPixelFormatPVRTC_RGBA_2BPP API_DEPRECATED("Usage of ASTC/ETC2/BC formats is recommended instead.", macos(11.0,15.0), macCatalyst(14.0,18.0), ios(8.0,18.0)) = 164, + MTLPixelFormatPVRTC_RGBA_2BPP_sRGB API_DEPRECATED("Usage of ASTC/ETC2/BC formats is recommended instead.", macos(11.0,15.0), macCatalyst(14.0,18.0), ios(8.0,18.0)) = 165, + MTLPixelFormatPVRTC_RGBA_4BPP API_DEPRECATED("Usage of ASTC/ETC2/BC formats is recommended instead.", macos(11.0,15.0), macCatalyst(14.0,18.0), ios(8.0,18.0)) = 166, + MTLPixelFormatPVRTC_RGBA_4BPP_sRGB API_DEPRECATED("Usage of ASTC/ETC2/BC formats is recommended instead.", macos(11.0,15.0), macCatalyst(14.0,18.0), ios(8.0,18.0)) = 167, /* ETC2 */ MTLPixelFormatEAC_R11Unorm API_AVAILABLE(macos(11.0), macCatalyst(14.0), ios(8.0)) = 170, diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLRenderCommandEncoder.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLRenderCommandEncoder.h index 7896c2da..5a036a61 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLRenderCommandEncoder.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLRenderCommandEncoder.h @@ -318,6 +318,7 @@ API_AVAILABLE(macos(14.0), ios(17.0)); */ - (void)setDepthBias:(float)depthBias slopeScale:(float)slopeScale clamp:(float)clamp; + /*! @method setScissorRect: @brief Specifies a rectangle for a fragment scissor test. All fragments outside of this rectangle are discarded. diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLRenderPipeline.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLRenderPipeline.h index 9b61427d..2688b4f5 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLRenderPipeline.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLRenderPipeline.h @@ -262,6 +262,13 @@ API_AVAILABLE(macos(12.0), ios(15.0)); */ - (void)reset; +/*! + @property shaderValidation + @abstract Toggle that determines whether Metal Shader Validation should be enabled or disabled for the pipeline. + @discussion The value can be overridden using `MTL_SHADER_VALIDATION_ENABLE_PIPELINES` or `MTL_SHADER_VALIDATION_DISABLE_PIPELINES` Environment Variables. + */ +@property (readwrite, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0)); + @end MTL_EXPORT API_AVAILABLE(macos(12.0), ios(15.0)) @@ -393,6 +400,12 @@ API_AVAILABLE(macos(10.11), ios(8.0)) */ - (nullable id )newRenderPipelineStateWithAdditionalBinaryFunctions:(nonnull MTLRenderPipelineFunctionsDescriptor *)additionalBinaryFunctions error:(__autoreleasing NSError **)error API_AVAILABLE(macos(12.0), ios(15.0)); +/*! + @property shaderValidation + @abstract Current state of Shader Validation for the pipeline. + */ +@property (readonly, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0)); + @end MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0)) @@ -507,6 +520,13 @@ API_AVAILABLE(macos(12.0), ios(15.0)); - (void)reset; +/*! + @property shaderValidation + @abstract Toggle that determines whether Metal Shader Validation should be enabled or disabled for the pipeline. + @discussion The value can be overridden using `MTL_SHADER_VALIDATION_ENABLE_PIPELINES` or `MTL_SHADER_VALIDATION_DISABLE_PIPELINES` Environment Variables. + */ +@property (readwrite, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0)); + @end @@ -680,7 +700,15 @@ MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0)) @abstract Whether this pipeline will support being used by commands in an indirect command buffer. @discussion The default value is NO. */ -@property (readwrite, nonatomic) BOOL supportIndirectCommandBuffers API_AVAILABLE(macos(14.0), ios(17.0)); +@property (readwrite, nonatomic) BOOL supportIndirectCommandBuffers API_AVAILABLE(macos(14.0), ios(17.0), tvos(18.1), visionos(2.1)); + +/*! + @property binaryArchives + @abstract The set of MTLBinaryArchive to search for compiled code when creating the pipeline state. + @discussion Accelerate pipeline state creation by providing archives of compiled code such that no compilation needs to happen on the fast path. + @see MTLBinaryArchive + */ +@property (readwrite, nullable, nonatomic, copy) NSArray> *binaryArchives API_AVAILABLE(macos(15.0), ios(18.0)); /*! @@ -710,6 +738,13 @@ MTL_EXPORT API_AVAILABLE(macos(13.0), ios(16.0)) */ - (void)reset; +/*! + @property shaderValidation + @abstract Toggle that determines whether Metal Shader Validation should be enabled or disabled for the pipeline. + @discussion The value can be overridden using `MTL_SHADER_VALIDATION_ENABLE_PIPELINES` or `MTL_SHADER_VALIDATION_DISABLE_PIPELINES` Environment Variables. + */ +@property (readwrite, nonatomic) MTLShaderValidation shaderValidation API_AVAILABLE(macos(15.0), ios(18.0)); + @end diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLResidencySet.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLResidencySet.h new file mode 100644 index 00000000..be55d052 --- /dev/null +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLResidencySet.h @@ -0,0 +1,141 @@ +// +// MTLResidencySet.h +// Framework +// +// Copyright © 2023 Apple, Inc. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol MTLDevice; +@protocol MTLAllocation; +@protocol MTLResource; +@protocol MTLHeap; + +/*! + @interface MTLResidencySetDescriptor + @abstract Specifies the parameters for MTLResidencySet creation. + */ +API_AVAILABLE(macos(15.0), ios(18.0)) +@interface MTLResidencySetDescriptor : NSObject +/*! + @property label + @abstract An optional label for the MTLResidencySet. + */ +@property (nullable, copy, nonatomic) NSString *label; + +/*! + @property initialCapacity + @abstract If non-zero, defines the number of allocations for which to initialize the internal arrays. Defaults to zero. + */ +@property (nonatomic) NSUInteger initialCapacity; + + +@end + +/*! + @protocol MTLResidencySet + @abstract A residency set is responsible for managing resource and heap residency and is referenced + by a command buffer or command queue in order to ensure that resources and heaps are resident. + Resources and heaps are added and removed uncommitted and a subsequent commit call applies all + of the changes in bulk. + */ +API_AVAILABLE(macos(15.0), ios(18.0)) +@protocol MTLResidencySet +/*! + @property device + @abstract The device that created the residency set + */ +@property (readonly) id _Nonnull device; + +/*! + @property label + @abstract The label specified at creation. + */ +@property (readonly, nullable) NSString* label; + +/*! + @property allocatedSize + @abstract The memory footprint of the set in bytes at the last commit operation. This may include internal allocations as well. + */ +@property (readonly) uint64_t allocatedSize; + +/*! + @method requestResidency + @abstract Requests that the set and all the committed resources and heaps are made resident. + */ +- (void)requestResidency; + +/*! + @method endResidency + @abstract Requests that the set and all the committed resources and heaps are made non-resident. +*/ +- (void)endResidency; + +/*! + @method addAllocation + @abstract Adds one allocation to the set, leaving it uncommitted until commit is called. + */ +- (void)addAllocation:(id)allocation; + +/*! + @method addAllocations + @abstract Adds allocations to the set, leaving them uncommitted until commit is called. + */ +- (void)addAllocations:(const id _Nonnull[_Nonnull])allocations + count:(NSUInteger)count; + +/*! + @method removeAllocation + @abstract Marks an allocation to be removed from the set on the next commit call. + */ +- (void)removeAllocation:(id)allocation; + +/*! + @method removeAllocations + @abstract Marks allocations to be removed from the set on the next commit call. + */ +- (void)removeAllocations:(const id _Nonnull[_Nonnull])allocations + count:(NSUInteger)count; + +/*! + @method removeAllAllocations + @abstract Marks all allocations to be removed from the set on the next commit call. + */ +- (void)removeAllAllocations; + +/*! + @method containsAllocation + @abstract Returns a boolean indicating whether the allocation is present in the set or not. + @discussion This check includes non-committed allocations in the set. + */ +- (BOOL)containsAllocation:(id)anAllocation; + +/*! + @property allAllocations + @abstract Array of all allocations associated with the set. + @discussion This property includes non-committed allocations in the set. + */ +@property (readonly, copy, nonnull) NSArray> *allAllocations; + +/*! + @property allocationCount + @abstract Returns the current number of unique allocations present in the set. + @discussion This property includes non-committed allocations in the set. + */ +@property (readonly) NSUInteger allocationCount; + +/*! + @method commit + @abstract Commits any pending adds/removes. + @discussion If the residency set is resident, this will try to make added resources and heaps resident instantly, and make removed resources and heaps non-resident. + */ +- (void)commit; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLResource.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLResource.h index d2eeadb0..b3a6b76a 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLResource.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLResource.h @@ -7,6 +7,8 @@ #import #import +#import +#import NS_ASSUME_NONNULL_BEGIN /*! @@ -194,7 +196,7 @@ typedef NS_OPTIONS(NSUInteger, MTLResourceOptions) @abstract Common APIs available for MTLBuffer and MTLTexture instances */ API_AVAILABLE(macos(10.11), ios(8.0)) -@protocol MTLResource +@protocol MTLResource /*! @property label @@ -282,6 +284,11 @@ API_AVAILABLE(macos(10.11), ios(8.0)) */ -(BOOL) isAliasable API_AVAILABLE(macos(10.13), ios(10.0)); +/*! + @method setOwnerWithIdentity: + @abstract Assigns ownership of the resource's underlying memory to another task for the purposes of VM accounting. +*/ +- (kern_return_t)setOwnerWithIdentity:(task_id_token_t)task_id_token API_AVAILABLE(ios(17.4), watchos(10.4), tvos(17.4), macos(14.4)); @end diff --git a/Frameworks/Metal.framework/Versions/A/Headers/MTLSampler.h b/Frameworks/Metal.framework/Versions/A/Headers/MTLSampler.h index e47da57a..981a685d 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/MTLSampler.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/MTLSampler.h @@ -89,6 +89,7 @@ typedef NS_ENUM(NSUInteger, MTLSamplerBorderColor) { MTLSamplerBorderColorOpaqueWhite = 2, // {1,1,1,1} } API_AVAILABLE(macos(10.12), ios(14.0)); + /*! @class MTLSamplerDescriptor @abstract A mutable descriptor used to configure a sampler. When complete, this can be used to create an immutable MTLSamplerState. @@ -148,6 +149,7 @@ MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0)) */ @property (nonatomic) MTLSamplerBorderColor borderColor API_AVAILABLE(macos(10.12), ios(14.0)); + /*! @property normalizedCoordinates. @abstract If YES, texture coordates are from 0 to 1. If NO, texture coordinates are 0..width, 0..height. @@ -176,6 +178,8 @@ MTL_EXPORT API_AVAILABLE(macos(10.11), ios(8.0)) */ @property (nonatomic) BOOL lodAverage API_AVAILABLE(ios(9.0), macos(11.0), macCatalyst(14.0)); + + /*! @property compareFunction @abstract Set the comparison function used when sampling shadow maps. The default value is MTLCompareFunctionNever. diff --git a/Frameworks/Metal.framework/Versions/A/Headers/Metal.h b/Frameworks/Metal.framework/Versions/A/Headers/Metal.h index 9d35ff6c..15eade3b 100644 --- a/Frameworks/Metal.framework/Versions/A/Headers/Metal.h +++ b/Frameworks/Metal.framework/Versions/A/Headers/Metal.h @@ -8,12 +8,15 @@ #import #import #import +#import +#import #import #import #import #import #import #import +#import #import #import #import @@ -44,6 +47,7 @@ #import #import #import +#import #import #import #import @@ -52,3 +56,5 @@ #import #import #import +#import + diff --git a/Frameworks/Metal.framework/Versions/A/Metal.tbd b/Frameworks/Metal.framework/Versions/A/Metal.tbd index ebe78281..d5d9163d 100644 --- a/Frameworks/Metal.framework/Versions/A/Metal.tbd +++ b/Frameworks/Metal.framework/Versions/A/Metal.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/Metal.framework/Versions/A/Metal' -current-version: 341.35 +current-version: 368.11.4 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -63,9 +63,10 @@ exports: _MTLGetGPUFamilyFromFeatureSet, _MTLGetMaximumCompilerProcessesCount, _MTLGetModulesCachePath, _MTLGetOptimalCompilerProcessesCount, _MTLGetOverridenDeviceCreationFlags, _MTLGetPackFloatFunction, - _MTLGetPackSintFunction, _MTLGetPackUintFunction, _MTLGetReportFailureBlock, - _MTLGetShaderCachePath, _MTLGetTextureLevelInfoForDevice, - _MTLGetTextureLevelInfoForDeviceWithOptions, _MTLGetWarningMode, + _MTLGetPackSintFunction, _MTLGetPackUintFunction, _MTLGetProcessName, + _MTLGetReportFailureBlock, _MTLGetShaderCachePath, _MTLGetTextureLevelInfoForDevice, + _MTLGetTextureLevelInfoForDeviceWithOptions, _MTLGetUnpackFloatFunction, + _MTLGetUnpackSintFunction, _MTLGetUnpackUintFunction, _MTLGetWarningMode, _MTLHazardTrackingModeString, _MTLIOAccelCommandBufferStorageAllocResourceAtIndex, _MTLIOAccelCommandBufferStorageBeginKernelCommands, _MTLIOAccelCommandBufferStorageBeginSegment, _MTLIOAccelCommandBufferStorageCreate, _MTLIOAccelCommandBufferStorageCreateExt, @@ -91,28 +92,29 @@ exports: _MTLLibraryErrorDomain, _MTLLibraryPerformanceKeyCachedLibrary, _MTLLibraryPerformanceKeyCoreImageSPI, _MTLLibraryPerformanceKeyFunctionNames, _MTLLibraryPerformanceKeyFunctionSpecialization, _MTLLibraryPerformanceKeyTotalFrontendTotalTime, - _MTLMakeShaderCacheWritableByAllUsers, _MTLMessageArrayKey, - _MTLOverrideDeviceCreationFlags, _MTLPackColor, _MTLPipelinePerformanceKeyALUCount, - _MTLPipelinePerformanceKeyBranchCount, _MTLPipelinePerformanceKeyCompilationTime, - _MTLPipelinePerformanceKeyCompileTimeStatistics, _MTLPipelinePerformanceKeyDeviceAtomicCount, - _MTLPipelinePerformanceKeyDeviceLoadCount, _MTLPipelinePerformanceKeyDeviceStoreCount, - _MTLPipelinePerformanceKeyFP16InstructionCount, _MTLPipelinePerformanceKeyFP32InstructionCount, - _MTLPipelinePerformanceKeyFragmentShader, _MTLPipelinePerformanceKeyINT16InstructionCount, - _MTLPipelinePerformanceKeyINT32InstructionCount, _MTLPipelinePerformanceKeyInstructionCount, - _MTLPipelinePerformanceKeyLoopCount, _MTLPipelinePerformanceKeyMaxTemporaryRegisters, - _MTLPipelinePerformanceKeyMaxTheoreticalOccupancy, _MTLPipelinePerformanceKeyMaxThreadgroupMemory, - _MTLPipelinePerformanceKeyMaxUniformRegisters, _MTLPipelinePerformanceKeyMeshShader, - _MTLPipelinePerformanceKeyObjectShader, _MTLPipelinePerformanceKeyRemarks, - _MTLPipelinePerformanceKeySpillsCount, _MTLPipelinePerformanceKeyTemporaryRegisterCount, - _MTLPipelinePerformanceKeyTextureReadCount, _MTLPipelinePerformanceKeyTextureWriteCount, - _MTLPipelinePerformanceKeyThreadInvariantSpillsCount, _MTLPipelinePerformanceKeyThreadgroupAtomicCount, - _MTLPipelinePerformanceKeyThreadgroupLoadCount, _MTLPipelinePerformanceKeyThreadgroupMemory, - _MTLPipelinePerformanceKeyThreadgroupStoreCount, _MTLPipelinePerformanceKeyUniformRegisterCount, - _MTLPipelinePerformanceKeyVertexShader, _MTLPipelinePerformanceKeyWaitCount, - _MTLPixelFormatCompatibilityString, _MTLPixelFormatComputeTotalSizeUsed, - _MTLPixelFormatComputeiOSTotalSizeUsed, _MTLPixelFormatGetInfo, - _MTLPixelFormatGetInfoForDevice, _MTLPixelFormatGetName, _MTLProgressBinsEnableVirtualSubstreams, - _MTLProgressBinsForceBarrier, _MTLProgressBinsFree, _MTLProgressBinsGetActiveSubstream, + _MTLLogStateErrorDomain, _MTLMakeShaderCacheWritableByAllUsers, + _MTLMessageArrayKey, _MTLOverrideDeviceCreationFlags, _MTLPackColor, + _MTLPipelinePerformanceKeyALUCount, _MTLPipelinePerformanceKeyBranchCount, + _MTLPipelinePerformanceKeyCompilationTime, _MTLPipelinePerformanceKeyCompileTimeStatistics, + _MTLPipelinePerformanceKeyDeviceAtomicCount, _MTLPipelinePerformanceKeyDeviceLoadCount, + _MTLPipelinePerformanceKeyDeviceStoreCount, _MTLPipelinePerformanceKeyFP16InstructionCount, + _MTLPipelinePerformanceKeyFP32InstructionCount, _MTLPipelinePerformanceKeyFragmentShader, + _MTLPipelinePerformanceKeyINT16InstructionCount, _MTLPipelinePerformanceKeyINT32InstructionCount, + _MTLPipelinePerformanceKeyInstructionCount, _MTLPipelinePerformanceKeyLoopCount, + _MTLPipelinePerformanceKeyMaxTemporaryRegisters, _MTLPipelinePerformanceKeyMaxTheoreticalOccupancy, + _MTLPipelinePerformanceKeyMaxThreadgroupMemory, _MTLPipelinePerformanceKeyMaxUniformRegisters, + _MTLPipelinePerformanceKeyMeshShader, _MTLPipelinePerformanceKeyObjectShader, + _MTLPipelinePerformanceKeyRemarks, _MTLPipelinePerformanceKeySpillsCount, + _MTLPipelinePerformanceKeyTemporaryRegisterCount, _MTLPipelinePerformanceKeyTextureReadCount, + _MTLPipelinePerformanceKeyTextureWriteCount, _MTLPipelinePerformanceKeyThreadInvariantSpillsCount, + _MTLPipelinePerformanceKeyThreadgroupAtomicCount, _MTLPipelinePerformanceKeyThreadgroupLoadCount, + _MTLPipelinePerformanceKeyThreadgroupMemory, _MTLPipelinePerformanceKeyThreadgroupStoreCount, + _MTLPipelinePerformanceKeyUniformRegisterCount, _MTLPipelinePerformanceKeyVertexShader, + _MTLPipelinePerformanceKeyWaitCount, _MTLPixelFormatCompatibilityString, + _MTLPixelFormatComputeTotalSizeUsed, _MTLPixelFormatComputeiOSTotalSizeUsed, + _MTLPixelFormatGetInfo, _MTLPixelFormatGetInfoForDevice, _MTLPixelFormatGetName, + _MTLProgressBinsEnableVirtualSubstreams, _MTLProgressBinsForceBarrier, + _MTLProgressBinsFree, _MTLProgressBinsGetActiveSubstream, _MTLProgressBinsGetNumberOfSubstreams, _MTLProgressBinsMake, _MTLProgressBinsReset, _MTLProgressBinsSelectSubstreamWithBufferWriteSize, _MTLProgressBinsSelectSubstreamWithDescriptor, _MTLProgressBinsSelectSubstreamWithPrimitiveCount, @@ -133,23 +135,22 @@ exports: _MTLTextureSwizzleChannelsToKey, _MTLTextureSwizzleKeyToChannels, _MTLTextureSwizzleString, _MTLTextureSwizzleViewSwizzle, _MTLTextureTypeString, _MTLTextureUsageString, _MTLTraceEnabled, _MTLTraceEnabledSPI, - _MTLTraceEventSPI, _MTLUnsupportedLinkedFunctionsUsedInArchive, - _MTLValidateFeatureSupport, _MTLValidateFeatureSupportWithContext, - _MTLValidationEnabled, _MTLValidationErrorDomain, _MTLVertexAmplificationModeString, + _MTLTraceEventSPI, _MTLUnpackColor, _MTLValidateFeatureSupport, + _MTLValidateFeatureSupportWithContext, _MTLValidationEnabled, + _MTLValidationErrorDomain, _MTLVertexAmplificationModeString, + _NSDeviceCertificationiPhonePerformanceGaming, _NSProcessInfoPerformanceProfileDidChangeNotification, + _NSProcessPerformanceProfileDefault, _NSProcessPerformanceProfileSustained, __MTLAddCompileBinaryFunctionPerformanceStatistics, __MTLAddCompileDynamicLibraryPerformanceStatistics, __MTLAddCompileLibraryPerformanceStatistics, __MTLAddCompilePipelinePerformanceStatistics, __MTLAddCompilerServiceCompileTimeStats, __MTLAdjustMTLSize, __MTLCompatibleTextureDataTypeAndPixelFormat, __MTLCompatibleTextureDataTypeAndPixelFormatInfo, __MTLCompilePerformanceStatisticsEnabled, __MTLCompileTimeStatistics, - __MTLConstantDataSize, __MTLDebugBuildAccelerationStructureDescriptor, - __MTLDebugCopyAccelerationStructureDescriptor, __MTLDebugCreateAccelerationStructureCommandEncoder, - __MTLDebugEndEncodingAccelerationStructureCommandEncoder, - __MTLDebugRefitAccelerationStructureDescriptor, __MTLDecodeLinkingInfo, - __MTLDeviceRemoveRequested, __MTLDeviceTerminated, __MTLEncodeLinkingInfo, - __MTLFeatureSetDictionary, __MTLGLLabel, __MTLGPUFamilyString, - __MTLGetAttachmentSize, __MTLGetSerializedVertexFormat, __MTLHashState, - __MTLInvalidResourceIndex, __MTLLibraryTypeString, __MTLMessageContextBegin_, - __MTLMessageContextEnd, __MTLMessageContextPush_, __MTLMessageTypeFromFailureType, + __MTLConstantDataSize, __MTLDecodeLinkingInfo, __MTLDeviceRemoveRequested, + __MTLDeviceTerminated, __MTLEncodeLinkingInfo, __MTLFeatureSetDictionary, + __MTLGLLabel, __MTLGPUFamilyString, __MTLGetAttachmentSize, + __MTLGetSerializedVertexFormat, __MTLHashState, __MTLInvalidResourceIndex, + __MTLLibraryTypeString, __MTLMessageContextBegin_, __MTLMessageContextEnd, + __MTLMessageContextPush_, __MTLMessageTypeFromFailureType, __MTLNotifyDeviceRemovalRequested, __MTLNotifyDeviceWasAdded, __MTLNotifyDeviceWasRemoved, __MTLNotifyMessageObservers, __MTLOverrideCurrentPreferredDevice, __MTLSetCompileTimeStatisticsEnabled, @@ -192,18 +193,20 @@ exports: MTLBufferLayoutDescriptor, MTLBufferLayoutDescriptorArray, MTLBufferRelocation, MTLCaptureDescriptor, MTLCaptureManager, MTLCaptureScope, MTLCommandBufferDescriptor, MTLCommandQueueDescriptor, - MTLCompileFunctionRequestData, MTLCompileOptions, MTLCompiler, - MTLComputePassDescriptor, MTLComputePassSampleBufferAttachmentDescriptor, - MTLComputePassSampleBufferAttachmentDescriptorArray, MTLComputePipelineDescriptor, - MTLComputePipelineReflection, MTLConstantRelocation, MTLCounterInternal, - MTLCounterSampleBufferDescriptor, MTLCounterSampleBufferDescriptorInternal, - MTLCounterSetInternal, MTLDebugInstrumentationData, MTLDepthStencilDescriptor, - MTLDynamicLibraryDescriptorSPI, MTLEmulationIndirectArgumentBufferLayout, - MTLFunctionConstant, MTLFunctionConstantValues, MTLFunctionDescriptor, - MTLFunctionReflectionInternal, MTLFunctionStitchingAttributeAlwaysInline, + MTLCommandQueueDescriptorInternal, MTLCompileFunctionRequestData, + MTLCompileOptions, MTLCompiler, MTLComputePassDescriptor, + MTLComputePassSampleBufferAttachmentDescriptor, MTLComputePassSampleBufferAttachmentDescriptorArray, + MTLComputePipelineDescriptor, MTLComputePipelineReflection, + MTLConstantRelocation, MTLCounterInternal, MTLCounterSampleBufferDescriptor, + MTLCounterSampleBufferDescriptorInternal, MTLCounterSetInternal, + MTLDebugInstrumentationData, MTLDepthStencilDescriptor, MTLDynamicLibraryDescriptorSPI, + MTLEmulationIndirectArgumentBufferLayout, MTLFunctionConstant, + MTLFunctionConstantValues, MTLFunctionDescriptor, MTLFunctionReflectionInternal, + MTLFunctionStitchingAttributeAlwaysInline, MTLFunctionStitchingAttributeKernel, MTLFunctionStitchingBuiltinThreadPositionInGrid, MTLFunctionStitchingBuiltinThreadPositionInThreadgroup, - MTLFunctionStitchingFunctionNode, MTLFunctionStitchingFunctionNodeSPI, - MTLFunctionStitchingGraph, MTLFunctionStitchingGraphSPI, MTLFunctionStitchingInputBuffer, + MTLFunctionStitchingEarlyReturnNode, MTLFunctionStitchingFunctionNode, + MTLFunctionStitchingFunctionNodeSPI, MTLFunctionStitchingGraph, + MTLFunctionStitchingGraphSPI, MTLFunctionStitchingInputBuffer, MTLFunctionStitchingInputBufferAddress, MTLFunctionStitchingInputImageblock, MTLFunctionStitchingInputNode, MTLFunctionStitchingInputSampler, MTLFunctionStitchingInputTexture, MTLFunctionStitchingInputThreadgroup, @@ -225,10 +228,11 @@ exports: MTLIndirectConstantArgument, MTLIndirectInstanceAccelerationStructureDescriptor, MTLInstanceAccelerationStructureDescriptor, MTLIntersectionFunctionDescriptor, MTLIntersectionFunctionTableDescriptor, MTLLinkedFunctions, - MTLMeshRenderPipelineDescriptor, MTLMessage, MTLMessageFilter, - MTLMotionKeyframeData, MTLPipelineBufferDescriptor, MTLPipelineBufferDescriptorArray, - MTLPointerType, MTLPrecompiledData, MTLPrimitiveAccelerationStructureDescriptor, - MTLProfileControl, MTLRasterizationRateLayerArray, MTLRasterizationRateLayerArrayInternal, + MTLLogStateDescriptor, MTLMeshRenderPipelineDescriptor, MTLMessage, + MTLMessageFilter, MTLMotionKeyframeData, MTLPipelineBufferDescriptor, + MTLPipelineBufferDescriptorArray, MTLPointerType, MTLPrecompiledData, + MTLPrimitiveAccelerationStructureDescriptor, MTLProfileControl, + MTLRasterizationRateLayerArray, MTLRasterizationRateLayerArrayInternal, MTLRasterizationRateLayerDescriptor, MTLRasterizationRateLayerDescriptorInternal, MTLRasterizationRateMapDescriptor, MTLRasterizationRateSampleArray, MTLRasterizationRateSampleArrayInternal, MTLRenderPassAttachmentDescriptor, @@ -238,9 +242,9 @@ exports: MTLRenderPassStencilAttachmentDescriptor, MTLRenderPipelineColorAttachmentDescriptor, MTLRenderPipelineColorAttachmentDescriptorArray, MTLRenderPipelineDescriptor, MTLRenderPipelineFunctionsDescriptor, MTLRenderPipelineReflection, - MTLResourceAllocationInfo, MTLResourceList, MTLResourceListPool, - MTLResourceStatePassDescriptor, MTLResourceStatePassSampleBufferAttachmentDescriptor, - MTLResourceStatePassSampleBufferAttachmentDescriptorArray, + MTLResidencySetDescriptor, MTLResourceAddressRangeArray, MTLResourceAllocationInfo, + MTLResourceList, MTLResourceListPool, MTLResourceStatePassDescriptor, + MTLResourceStatePassSampleBufferAttachmentDescriptor, MTLResourceStatePassSampleBufferAttachmentDescriptorArray, MTLSamplerDescriptor, MTLSharedEventHandle, MTLSharedEventListener, MTLSharedTextureHandle, MTLStageInputOutputDescriptor, MTLStencilDescriptor, MTLStitchedLibraryDescriptor, MTLStitchedLibraryDescriptorSPI, @@ -251,7 +255,7 @@ exports: MTLVertexAttributeDescriptorArray, MTLVertexBufferLayoutDescriptor, MTLVertexBufferLayoutDescriptorArray, MTLVertexDescriptor, MTLVisibleFunctionTableDescriptor, _MTLAccelerationStructureCommandEncoder, - _MTLBinaryArchive, _MTLCommandBuffer, _MTLCommandBufferDescriptor, + _MTLAllocation, _MTLBinaryArchive, _MTLCommandBuffer, _MTLCommandBufferDescriptor, _MTLCommandBufferEncoderInfo, _MTLCommandEncoder, _MTLCommandQueue, _MTLComputePipelineState, _MTLDebugCommandEncoder, _MTLDepthStencilState, _MTLDevice, _MTLDynamicLibrary, _MTLFence, _MTLFunction, _MTLFunctionHandle, @@ -263,9 +267,9 @@ exports: _MTLIndirectDrawIndexedArguments, _MTLIndirectDrawIndexedPatchesArguments, _MTLIndirectDrawMeshThreadgroupsArguments, _MTLIndirectDrawMeshThreadsArguments, _MTLIndirectDrawPatchesArguments, _MTLIndirectRenderCommand, - _MTLIndirectTessellationFactorArguments, _MTLLibrary, _MTLObjectWithLabel, - _MTLParallelRenderCommandEncoder, _MTLPipelineCache, _MTLPipelineStateBinary, - _MTLProgramAddressTable, _MTLProgramAddressTableMappedBinary, + _MTLIndirectTessellationFactorArguments, _MTLLibrary, _MTLLogState, + _MTLObjectWithLabel, _MTLParallelRenderCommandEncoder, _MTLPipelineCache, + _MTLPipelineStateBinary, _MTLProgramAddressTable, _MTLProgramAddressTableMappedBinary, _MTLRasterizationRateMap, _MTLRenderPipelineState, _MTLResource, _MTLSWRaytracingAccelerationStructureCommandEncoder, _MTLSamplerState, _MTLSharedEvent, _PipelineLibrarySerializer ] @@ -296,48 +300,54 @@ exports: MTLIOAccelHeap._resource, MTLIOAccelResource._res, MTLIOAccelTexture._allowGPUOptimizedContents, MTLIOAccelTexture._arrayLength, MTLIOAccelTexture._buffer, MTLIOAccelTexture._bufferBytesPerRow, MTLIOAccelTexture._bufferOffset, - MTLIOAccelTexture._depth, MTLIOAccelTexture._framebufferOnly, - MTLIOAccelTexture._height, MTLIOAccelTexture._iosurface, MTLIOAccelTexture._iosurfacePlane, + MTLIOAccelTexture._deallocator, MTLIOAccelTexture._depth, + MTLIOAccelTexture._framebufferOnly, MTLIOAccelTexture._height, + MTLIOAccelTexture._iosurface, MTLIOAccelTexture._iosurfacePlane, MTLIOAccelTexture._isCompressed, MTLIOAccelTexture._isDrawable, MTLIOAccelTexture._length, MTLIOAccelTexture._masterBuffer, MTLIOAccelTexture._masterBufferIndex, MTLIOAccelTexture._masterBufferOffset, MTLIOAccelTexture._masterHeapIndex, MTLIOAccelTexture._mipmapLevelCount, MTLIOAccelTexture._numFaces, MTLIOAccelTexture._parentRelativeLevel, MTLIOAccelTexture._parentRelativeSlice, MTLIOAccelTexture._parentTexture, - MTLIOAccelTexture._pixelFormat, MTLIOAccelTexture._rootResourceIsSuballocatedBuffer, - MTLIOAccelTexture._rotation, MTLIOAccelTexture._sampleCount, - MTLIOAccelTexture._shareable, MTLIOAccelTexture._swizzle, - MTLIOAccelTexture._textureType, MTLIOAccelTexture._usage, - MTLIOAccelTexture._width, MTLIOAccelTexture._writeSwizzleEnabled, + MTLIOAccelTexture._pixelFormat, MTLIOAccelTexture._pointer, + MTLIOAccelTexture._rootResourceIsSuballocatedBuffer, MTLIOAccelTexture._rotation, + MTLIOAccelTexture._sampleCount, MTLIOAccelTexture._shareable, + MTLIOAccelTexture._swizzle, MTLIOAccelTexture._textureType, + MTLIOAccelTexture._usage, MTLIOAccelTexture._width, MTLIOAccelTexture._writeSwizzleEnabled, MTLIndirectConstantArgument._alignment, MTLIndirectConstantArgument._aluType, MTLIndirectConstantArgument._dataSize, MTLIndirectConstantArgument._dataType, MTLIndirectConstantArgument._pixelFormat, MTLPrecompiledData._type, + MTLResourceAddressRangeArray._count, MTLResourceAddressRangeArray._ranges, MTLSharedEventHandle._priv, MTLSharedTextureHandle._priv, - _MTLCommandBuffer._StatEnabled, _MTLCommandBuffer._StatLocations, - _MTLCommandBuffer._StatOptions, _MTLCommandBuffer._commitTime, - _MTLCommandBuffer._completedCallbacksDone, _MTLCommandBuffer._completedDispatchList, + _MTLAllocation._allocationType, _MTLCommandBuffer._StatEnabled, + _MTLCommandBuffer._StatLocations, _MTLCommandBuffer._StatOptions, + _MTLCommandBuffer._commitTime, _MTLCommandBuffer._completedCallbacksDone, + _MTLCommandBuffer._completedCond, _MTLCommandBuffer._completedDispatchList, _MTLCommandBuffer._completedDispatchListTail, _MTLCommandBuffer._completionHandlerEnqueueTime, _MTLCommandBuffer._completionHandlerExecutionTime, _MTLCommandBuffer._completionInterruptTime, - _MTLCommandBuffer._cond, _MTLCommandBuffer._creatingProgressEncoder, - _MTLCommandBuffer._creationTime, _MTLCommandBuffer._currentCommandEncoder, - _MTLCommandBuffer._currentSample, _MTLCommandBuffer._deadlineProfile, + _MTLCommandBuffer._creatingProgressEncoder, _MTLCommandBuffer._creationTime, + _MTLCommandBuffer._currentCommandEncoder, _MTLCommandBuffer._currentSample, + _MTLCommandBuffer._deadlineProfile, _MTLCommandBuffer._didComplete, _MTLCommandBuffer._encoderInfos, _MTLCommandBuffer._enqueueTime, _MTLCommandBuffer._error, _MTLCommandBuffer._globalTraceObjectID, _MTLCommandBuffer._gpuEndTime, _MTLCommandBuffer._gpuStartTime, _MTLCommandBuffer._hasPresent, _MTLCommandBuffer._internalCounterSampleSize, _MTLCommandBuffer._kernelEndTime, _MTLCommandBuffer._kernelStartTime, _MTLCommandBuffer._labelTraceID, _MTLCommandBuffer._listIndex, - _MTLCommandBuffer._logs, _MTLCommandBuffer._mutex, _MTLCommandBuffer._needsCommandBufferSemaphoreSignal, - _MTLCommandBuffer._needsFrameworkAssistedErrorTracking, _MTLCommandBuffer._numEncoders, - _MTLCommandBuffer._numInternalSampleCounters, _MTLCommandBuffer._numPresentWaits, - _MTLCommandBuffer._numRequestedCounters, _MTLCommandBuffer._numThisCommandBuffer, - _MTLCommandBuffer._ownedByParallelEncoder, _MTLCommandBuffer._perfSampleHandlerBlock, + _MTLCommandBuffer._logState, _MTLCommandBuffer._logs, _MTLCommandBuffer._mutex, + _MTLCommandBuffer._needsCommandBufferSemaphoreSignal, _MTLCommandBuffer._needsFrameworkAssistedErrorTracking, + _MTLCommandBuffer._numEncoders, _MTLCommandBuffer._numInternalSampleCounters, + _MTLCommandBuffer._numPresentWaits, _MTLCommandBuffer._numRequestedCounters, + _MTLCommandBuffer._numThisCommandBuffer, _MTLCommandBuffer._ownedByParallelEncoder, + _MTLCommandBuffer._perfSampleHandlerBlock, _MTLCommandBuffer._privateData, + _MTLCommandBuffer._privateDataOffset, _MTLCommandBuffer._privateLoggingBuffer, _MTLCommandBuffer._profilingEnabled, _MTLCommandBuffer._profilingResults, _MTLCommandBuffer._progressBuffer, _MTLCommandBuffer._progressOffset, - _MTLCommandBuffer._queue, _MTLCommandBuffer._retainedObjects, - _MTLCommandBuffer._retainedReferences, _MTLCommandBuffer._sampleLock, - _MTLCommandBuffer._sampleStorage, _MTLCommandBuffer._samples, - _MTLCommandBuffer._samplesPerStorageBlock, _MTLCommandBuffer._scheduledCallbacksDone, + _MTLCommandBuffer._queue, _MTLCommandBuffer._requiresBindingLogState, + _MTLCommandBuffer._retainedObjects, _MTLCommandBuffer._retainedReferences, + _MTLCommandBuffer._sampleLock, _MTLCommandBuffer._sampleStorage, + _MTLCommandBuffer._samples, _MTLCommandBuffer._samplesPerStorageBlock, + _MTLCommandBuffer._scheduledCallbacksDone, _MTLCommandBuffer._scheduledCond, _MTLCommandBuffer._scheduledDispatchList, _MTLCommandBuffer._scheduledDispatchListTail, _MTLCommandBuffer._sharedIndirectionTable, _MTLCommandBuffer._skipRender, _MTLCommandBuffer._statCommandBuffer, _MTLCommandBuffer._status, @@ -357,24 +367,30 @@ exports: _MTLCommandQueue._commandBufferSemaphore, _MTLCommandQueue._commandQueueBacktraceInfo, _MTLCommandQueue._commandQueueDispatch, _MTLCommandQueue._commandQueueEventSource, _MTLCommandQueue._commitQueue, _MTLCommandQueue._commitSynchronously, - _MTLCommandQueue._completionQueue, _MTLCommandQueue._completionQueueDispatch, - _MTLCommandQueue._counterInfo, _MTLCommandQueue._dev, _MTLCommandQueue._disableCrossQueueHazardTracking, + _MTLCommandQueue._commitsWithQoS, _MTLCommandQueue._completionQueue, + _MTLCommandQueue._completionQueueDispatch, _MTLCommandQueue._counterInfo, + _MTLCommandQueue._dev, _MTLCommandQueue._disableCrossQueueHazardTracking, _MTLCommandQueue._executionEnabled, _MTLCommandQueue._forceImmediateSubmissionOnCommitThread, _MTLCommandQueue._globalTraceObjectID, _MTLCommandQueue._hasLoggedTelemetry, _MTLCommandQueue._labelTraceID, _MTLCommandQueue._listIndex, - _MTLCommandQueue._maxCommandBufferCount, _MTLCommandQueue._numCommandBuffers, - _MTLCommandQueue._numInternalSampleCounters, _MTLCommandQueue._numRequestedCounters, - _MTLCommandQueue._openGLQueue, _MTLCommandQueue._pendingQueue, - _MTLCommandQueue._pendingQueueLock, _MTLCommandQueue._perfSampleHandlerBlock, - _MTLCommandQueue._presentScheduledSemaphore, _MTLCommandQueue._profilingEnabled, + _MTLCommandQueue._logState, _MTLCommandQueue._maxCommandBufferCount, + _MTLCommandQueue._numCommandBuffers, _MTLCommandQueue._numInternalSampleCounters, + _MTLCommandQueue._numRequestedCounters, _MTLCommandQueue._openGLQueue, + _MTLCommandQueue._pendingQueue, _MTLCommandQueue._pendingQueueLock, + _MTLCommandQueue._perfSampleHandlerBlock, _MTLCommandQueue._presentScheduledSemaphore, + _MTLCommandQueue._privateDataTable, _MTLCommandQueue._profilingEnabled, _MTLCommandQueue._qosLevel, _MTLCommandQueue._skipRender, _MTLCommandQueue._submittedGroup, _MTLCommandQueue._submittedQueue, _MTLCommandQueue._submittedQueueLock, _MTLDepthStencilState._device, _MTLDepthStencilState._label, _MTLDevice._commandQueueCount, + _MTLDevice._commandQueueID, _MTLDevice._commandQueueWaitLock, _MTLDevice._emulationMeshPrefixSum1PSO, _MTLDevice._emulationMeshPrefixSum2PSO, _MTLDevice._emulationMeshPrefixSum3PSO, _MTLDevice._emulationNoObjectPrefixSumPSO, _MTLDevice._emulationObjectPrefixSumPSO, _MTLDevice._featureQueries, - _MTLDevice._globalTraceObjectID, _MTLDevice._limits, _MTLDevice._needsEncoderTypeMatchingProgressBlits, + _MTLDevice._globalTraceObjectID, _MTLDevice._kRateLimitCriticalCommandQueues, + _MTLDevice._kRateLimitEnabled, _MTLDevice._kRateLimitShouldOnlyLogOnce, + _MTLDevice._kRateLimitTimePenalty, _MTLDevice._limits, _MTLDevice._logStateDescriptor, + _MTLDevice._needsEncoderTypeMatchingProgressBlits, _MTLDevice._nextCommandQueueAllowedDateBuffer, _MTLDevice._progressTrackBufferStack, _MTLDevice._progressTrackComputePipeline, _MTLDevice._progressTrackRenderPipeline, _MTLFunction._debugInstrumentationData, _MTLFunction._device, _MTLFunction._functionConstantDictionary, @@ -423,7 +439,10 @@ exports: _MTLIndirectDrawPatchesArguments._patchIndexBufferVirtualAddress, _MTLIndirectDrawPatchesArguments._patchStart, _MTLIndirectTessellationFactorArguments._GPUVirtualAddress, _MTLIndirectTessellationFactorArguments._instanceStride, _MTLIndirectTessellationFactorArguments._scale, - _MTLIndirectTessellationFactorArguments._virtualAddress, _MTLParallelRenderCommandEncoder._StatEnabled, + _MTLIndirectTessellationFactorArguments._virtualAddress, _MTLLogState._handlers, + _MTLLogState._logBuffer, _MTLLogState._logBufferLock, _MTLLogState._logBufferResidencySet, + _MTLLogState._logBufferSize, _MTLLogState._logHandlerLock, + _MTLLogState._logLevel, _MTLParallelRenderCommandEncoder._StatEnabled, _MTLParallelRenderCommandEncoder._StatLocations, _MTLParallelRenderCommandEncoder._StatOptions, _MTLParallelRenderCommandEncoder._commandBuffer, _MTLParallelRenderCommandEncoder._commandBuffers, _MTLParallelRenderCommandEncoder._commandBuffersCount, _MTLParallelRenderCommandEncoder._commandBuffersSize, diff --git a/Frameworks/OpenGL.framework/Versions/A/Libraries/3425AMD/libCoreVMClient.mono.tbd b/Frameworks/OpenGL.framework/Versions/A/Libraries/3425AMD/libCoreVMClient.mono.tbd index f26e8494..4ba21ce5 100644 --- a/Frameworks/OpenGL.framework/Versions/A/Libraries/3425AMD/libCoreVMClient.mono.tbd +++ b/Frameworks/OpenGL.framework/Versions/A/Libraries/3425AMD/libCoreVMClient.mono.tbd @@ -1,7 +1,7 @@ --- !tapi-tbd tbd-version: 4 targets: [ x86_64h-macos, x86_64h-maccatalyst ] -install-name: '/AppleInternal/Library/BuildRoots/0032d1ee-80fd-11ee-8227-6aecfccc70fe/Library/Caches/com.apple.xbs/Binaries/CVMS/install/Symbols/Release/libCoreVMClient.mono3425AMD.dylib' +install-name: '/AppleInternal/Library/BuildRoots/01adf19d-fba1-11ef-a947-f2a857e00a32/Library/Caches/com.apple.xbs/Binaries/CVMS/install/Symbols/Release/libCoreVMClient.mono3425AMD.dylib' current-version: 0 compatibility-version: 0 exports: diff --git a/Frameworks/OpenGL.framework/Versions/A/Libraries/3600/libCoreVMClient.mono.tbd b/Frameworks/OpenGL.framework/Versions/A/Libraries/3600/libCoreVMClient.mono.tbd index 72b5ecf9..43996fa0 100644 --- a/Frameworks/OpenGL.framework/Versions/A/Libraries/3600/libCoreVMClient.mono.tbd +++ b/Frameworks/OpenGL.framework/Versions/A/Libraries/3600/libCoreVMClient.mono.tbd @@ -2,7 +2,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] -install-name: '/AppleInternal/Library/BuildRoots/0032d1ee-80fd-11ee-8227-6aecfccc70fe/Library/Caches/com.apple.xbs/Binaries/CVMS/install/Symbols/Release/libCoreVMClient.mono600.dylib' +install-name: '/AppleInternal/Library/BuildRoots/01adf19d-fba1-11ef-a947-f2a857e00a32/Library/Caches/com.apple.xbs/Binaries/CVMS/install/Symbols/Release/libCoreVMClient.mono600.dylib' current-version: 0 compatibility-version: 0 exports: diff --git a/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.tbd b/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.tbd index ba481266..dc5fed0d 100644 --- a/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.tbd +++ b/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.tbd @@ -1,9 +1,11 @@ --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib' exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ _cvmAddModularFunctionToCache, _cvmBuildModularFunctionDeferred, _cvmBuildModularFunctionSync, _cvmCancelFunctionPointerArrayWrite, _cvmCreateCVMObject, _cvmCreateHashMachine, _cvmCreateModularFunction, diff --git a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.tbd b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.tbd index 555c5b0e..d8f5a882 100644 --- a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.tbd +++ b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.tbd @@ -1,9 +1,11 @@ --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib' exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ _gfxAllocateTextureLevel, _gfxAnnotateAddDataSource, _gfxAnnotateBuffer, _gfxAnnotateRemoveDataSource, _gfxAnnotateTexture, _gfxClearSyncObjectsInHash, _gfxCompareSharedState, _gfxCreateGLSyncFromCLEvent, _gfxCreatePluginBuffer, diff --git a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.tbd b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.tbd index d35aa2fd..0e1de6ae 100644 --- a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.tbd +++ b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.tbd @@ -1,9 +1,11 @@ --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib' exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ _CGLGetCurrentContext, _CGLSetCurrentContext, _glAccum, _glActiveShaderProgram, _glActiveStencilFaceEXT, _glActiveTexture, _glActiveTextureARB, _glAlphaFunc, _glAreTexturesResident, _glArrayElement, _glAttachObjectARB, diff --git a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.tbd b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.tbd index 86e8c176..76d9b13e 100644 --- a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.tbd +++ b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.tbd @@ -1,9 +1,11 @@ --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib' exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ _glgCompress, _glgConvertPixelHeightToBlocks, _glgConvertPixelWidthToBlocks, _glgConvertPixels, _glgConvertType, _glgCreateProcessor, _glgDecompress, _glgDestroyProcessor, _glgGetCompressedBlockBytes, _glgGetCompressedBlockHeight, diff --git a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.tbd b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.tbd index 171d5376..d016a6a7 100644 --- a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.tbd +++ b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.tbd @@ -1,9 +1,11 @@ --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib' exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ _PPParserAttachLLVMIR, _PPParserAttachStream, _PPParserAttachString, _PPParserBuildErrorString, _PPParserCreate, _PPParserFree, _PPParserGetErrorString, _PPParserGetImageUnitsUsed, _PPParserGetLimits, diff --git a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.tbd b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.tbd index 2ff8aca8..07143ba9 100644 --- a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.tbd +++ b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.tbd @@ -1,9 +1,11 @@ --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib' exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ _gluBeginCurve, _gluBeginPolygon, _gluBeginSurface, _gluBeginTrim, _gluBuild1DMipmapLevels, _gluBuild1DMipmapLevelsCTX, _gluBuild1DMipmaps, _gluBuild1DMipmapsCTX, _gluBuild2DMipmapLevels, _gluBuild2DMipmapLevelsCTX, diff --git a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLVMPlugin.tbd b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLVMPlugin.tbd index 88a648c5..8074614d 100644 --- a/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLVMPlugin.tbd +++ b/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLVMPlugin.tbd @@ -1,9 +1,11 @@ --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLVMPlugin.dylib' exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ _cvmsPluginElementBuild, _cvmsPluginServiceInitialize, _cvmsPluginServiceTerminate, _glpLLVMCGTopLevel, _oglCodeGenServiceGenerateIR, _oglCodeGenServiceInitialize, _oglCodeGenServiceTerminate ] diff --git a/Frameworks/OpenGL.framework/Versions/A/OpenGL.tbd b/Frameworks/OpenGL.framework/Versions/A/OpenGL.tbd index 87abec9e..85cb730f 100644 --- a/Frameworks/OpenGL.framework/Versions/A/OpenGL.tbd +++ b/Frameworks/OpenGL.framework/Versions/A/OpenGL.tbd @@ -1,13 +1,16 @@ --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL' reexported-libraries: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] libraries: [ '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib', '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib' ] exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ _CGLAreContextsShared, _CGLBackDispatch, _CGLChoosePixelFormat, _CGLClearDrawable, _CGLCopyContext, _CGLCreateContext, _CGLCreatePBuffer, _CGLDescribePBuffer, _CGLDescribePixelFormat, _CGLDescribeRenderer, @@ -34,10 +37,12 @@ exports: _glcPluginCount, _glcPluginDisconnect, _glcRecordError ] --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib' exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ _CGLGetCurrentContext, _CGLSetCurrentContext, _glAccum, _glActiveShaderProgram, _glActiveStencilFaceEXT, _glActiveTexture, _glActiveTextureARB, _glAlphaFunc, _glAreTexturesResident, _glArrayElement, _glAttachObjectARB, @@ -425,10 +430,12 @@ exports: _glWindowPos3sv, _glWindowPos3svARB, _gll_noop ] --- !tapi-tbd tbd-version: 4 -targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] +targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib' exports: - - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ] + - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, + arm64e-macos, arm64e-maccatalyst ] symbols: [ _gluBeginCurve, _gluBeginPolygon, _gluBeginSurface, _gluBeginTrim, _gluBuild1DMipmapLevels, _gluBuild1DMipmapLevelsCTX, _gluBuild1DMipmaps, _gluBuild1DMipmapsCTX, _gluBuild2DMipmapLevels, _gluBuild2DMipmapLevelsCTX, diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAAnimation.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAAnimation.h index 909ddbff..5b470e80 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAAnimation.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAAnimation.h @@ -12,16 +12,16 @@ @class NSArray, NSString, CAMediaTimingFunction, CAValueFunction; @protocol CAAnimationDelegate; -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -typedef NSString * CAAnimationCalculationMode NS_TYPED_ENUM; -typedef NSString * CAAnimationRotationMode NS_TYPED_ENUM; -typedef NSString * CATransitionType NS_TYPED_ENUM; -typedef NSString * CATransitionSubtype NS_TYPED_ENUM; +typedef NSString * CAAnimationCalculationMode NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * CAAnimationRotationMode NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * CATransitionType NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * CATransitionSubtype NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /** The base animation class. **/ -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAAnimation : NSObject { @@ -61,12 +61,13 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) with other animation sources. */ @property CAFrameRateRange preferredFrameRateRange - API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)); + API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); @end /* Delegate methods for CAAnimation. */ +API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos) @protocol CAAnimationDelegate @optional @@ -86,7 +87,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /** Subclass for property-based animations. **/ -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAPropertyAnimation : CAAnimation /* Creates a new animation object with its `keyPath' property set to @@ -125,7 +126,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /** Subclass for basic (single-keyframe) animations. **/ -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CABasicAnimation : CAPropertyAnimation /* The objects defining the property values being interpolated between. @@ -161,7 +162,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /** General keyframe animation class. **/ -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAKeyframeAnimation : CAPropertyAnimation /* An array of objects providing the value of the animation function for @@ -235,26 +236,26 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /* `calculationMode' strings. */ CA_EXTERN CAAnimationCalculationMode const kCAAnimationLinear - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAAnimationCalculationMode const kCAAnimationDiscrete - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAAnimationCalculationMode const kCAAnimationPaced - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAAnimationCalculationMode const kCAAnimationCubic - API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAAnimationCalculationMode const kCAAnimationCubicPaced - API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* `rotationMode' strings. */ CA_EXTERN CAAnimationRotationMode const kCAAnimationRotateAuto - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAAnimationRotationMode const kCAAnimationRotateAutoReverse - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /** Subclass for mass-spring animations. */ -API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CASpringAnimation : CABasicAnimation /* The mass of the object attached to the end of the spring. Must be greater @@ -284,7 +285,7 @@ API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) * damped). Defaults to false. */ @property BOOL allowsOverdamping - API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)); + API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos); /* Returns the estimated duration required for the spring system to be * considered at rest. The duration is evaluated for the current animation @@ -299,12 +300,12 @@ API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) - (instancetype)initWithPerceptualDuration:(CFTimeInterval)perceptualDuration bounce:(CGFloat)bounce - API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)); + API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos); /* The perceptual duration, which defines the pace of the spring. */ @property(readonly) CFTimeInterval perceptualDuration - API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)); + API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos); /* How bouncy the spring is. A value of 0 indicates no bounces (a critically * damped spring), positive values indicate increasing amounts of bounce (with @@ -312,13 +313,13 @@ API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) * overdamped springs (with typical values being between 0.0 and -1.0). */ @property(readonly) CGFloat bounce - API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)); + API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos); @end /** Transition animation subclass. **/ -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CATransition : CAAnimation /* The name of the transition. Current legal transition types include @@ -341,6 +342,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) @property float startProgress; @property float endProgress; + /* An optional filter object implementing the transition. When set the * `type' and `subtype' properties are ignored. The filter must * implement `inputImage', `inputTargetImage' and `inputTime' input @@ -350,34 +352,35 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) @property(nullable, strong) id filter; + @end /* Common transition types. */ CA_EXTERN CATransitionType const kCATransitionFade - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATransitionType const kCATransitionMoveIn - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATransitionType const kCATransitionPush - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATransitionType const kCATransitionReveal - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Common transition subtypes. */ CA_EXTERN CATransitionSubtype const kCATransitionFromRight - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATransitionSubtype const kCATransitionFromLeft - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATransitionSubtype const kCATransitionFromTop - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATransitionSubtype const kCATransitionFromBottom - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /** Animation subclass for grouped animations. **/ -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAAnimationGroup : CAAnimation /* An array of CAAnimation objects. Each member of the array will run @@ -388,6 +391,6 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CABase.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CABase.h index c2265017..470bd957 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CABase.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CABase.h @@ -22,30 +22,6 @@ #include #include -#if TARGET_OS_OSX -# define CA_OSX_VERSION(v) ((__MAC_##v) > 0 && __MAC_OS_X_VERSION_MAX_ALLOWED >= (__MAC_##v)) -#else -# define CA_OSX_VERSION(v) (0) -#endif - -#if TARGET_OS_IOS -# define CA_IOS_VERSION(v) ((__IPHONE_##v) > 0 && __IPHONE_OS_VERSION_MIN_REQUIRED >= (__IPHONE_##v)) -#else -# define CA_IOS_VERSION(v) (0) -#endif - -#if TARGET_OS_TV -# define CA_TV_VERSION(v) ((__TVOS_##v) > 0 && __TV_OS_VERSION_MIN_REQUIRED >= (__TVOS_##v)) -#else -# define CA_TV_VERSION(v) (0) -#endif - -#if TARGET_OS_WATCH -# define CA_WATCH_VERSION(v) ((__WATCHOS_##v) > 0 && __WATCH_OS_VERSION_MIN_REQUIRED >= (__WATCHOS_##v)) -#else -# define CA_WATCH_VERSION(v) (0) -#endif - #ifdef __cplusplus # define CA_EXTERN_C_BEGIN extern "C" { # define CA_EXTERN_C_END } @@ -117,6 +93,14 @@ # endif #endif +#ifndef CA_NOINLINE +# if CA_GNUC (3, 0) +# define CA_NOINLINE __attribute__ ((noinline)) +# else +# define CA_NOINLINE /* no noinline */ +# endif +#endif + #ifndef CA_WARN_DEPRECATED # define CA_WARN_DEPRECATED 1 #endif @@ -141,7 +125,7 @@ CA_EXTERN_C_BEGIN * calling mach_absolute_time () and converting the units to seconds. */ CA_EXTERN CFTimeInterval CACurrentMediaTime (void) - API_AVAILABLE (macos(10.5), ios(2.0)); + API_AVAILABLE(macos(10.5), ios(2.0)) API_UNAVAILABLE(watchos); CA_EXTERN_C_END diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAConstraintLayoutManager.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAConstraintLayoutManager.h index 330a9d8b..f4c70d6a 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAConstraintLayoutManager.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAConstraintLayoutManager.h @@ -40,7 +40,7 @@ typedef NS_ENUM (int, CAConstraintAttribute) @class CAConstraint; -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) /** The additions to CALayer for constraint layout. **/ @@ -111,6 +111,6 @@ API_AVAILABLE(macos(10.5)) @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CADisplayLink.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CADisplayLink.h index a59d9017..cf3e04d8 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CADisplayLink.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CADisplayLink.h @@ -11,10 +11,10 @@ @class NSString, NSRunLoop; -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) /** Class representing a timer bound to the display vsync. **/ -API_AVAILABLE(ios(3.1), watchos(2.0), tvos(9.0)) +API_AVAILABLE(ios(3.1), tvos(9.0)) API_UNAVAILABLE(watchos) API_AVAILABLE(macos(14.0)) @@ -61,7 +61,7 @@ API_AVAILABLE(macos(14.0)) /* The next timestamp that the client should target their render for. */ @property(readonly, nonatomic) CFTimeInterval targetTimestamp - API_AVAILABLE(ios(10.0), watchos(3.0), tvos(10.0)); + API_AVAILABLE(ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos); /* When true the object is prevented from firing. Initial state is * false. */ @@ -76,9 +76,8 @@ API_AVAILABLE(macos(14.0)) * DEPRECATED - use preferredFramesPerSecond. */ @property(nonatomic) NSInteger frameInterval - API_DEPRECATED("preferredFramesPerSecond", ios(3.1, 10.0), - watchos(2.0, 3.0), tvos(9.0, 10.0)) - API_UNAVAILABLE(macos); + API_DEPRECATED("preferredFramesPerSecond", ios(3.1, 10.0), tvos(9.0, 10.0)) + API_UNAVAILABLE(macos, watchos); /* Defines the desired callback rate in frames-per-second for this display * link. If set to zero, the default value, the display link will fire at the @@ -88,9 +87,8 @@ API_AVAILABLE(macos(14.0)) @property(nonatomic) NSInteger preferredFramesPerSecond API_DEPRECATED_WITH_REPLACEMENT ("preferredFrameRateRange", ios(10.0, API_TO_BE_DEPRECATED), - watchos(3.0, API_TO_BE_DEPRECATED), tvos(10.0, API_TO_BE_DEPRECATED)) - API_UNAVAILABLE(macos); + API_UNAVAILABLE(macos, watchos); /* Defines the range of desired callback rate in frames-per-second for this display link. If the range contains the same minimum and maximum frame rate, @@ -99,10 +97,10 @@ API_AVAILABLE(macos(14.0)) animation sources. */ @property(nonatomic) CAFrameRateRange preferredFrameRateRange - API_AVAILABLE(ios(15.0), watchos(8.0), tvos(15.0)); + API_AVAILABLE(ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEDRMetadata.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEDRMetadata.h index 203fee8a..c3e3c424 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEDRMetadata.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEDRMetadata.h @@ -7,13 +7,14 @@ #define CAEDRMetadata_h + #ifdef __OBJC__ #include -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -API_AVAILABLE(macos(10.15), ios(16.0)) +API_AVAILABLE(macos(10.15), ios(16.0)) API_UNAVAILABLE(watchos) @interface CAEDRMetadata : NSObject { @private @@ -22,6 +23,8 @@ API_AVAILABLE(macos(10.15), ios(16.0)) /* Use one of the class methods to instantiate CAEDRMetadata. */ ++ (instancetype)new NS_UNAVAILABLE; + - (instancetype)init NS_UNAVAILABLE; /* The following two selectors are for static mastering display color volume and @@ -109,9 +112,10 @@ API_AVAILABLE(macos(10.15), ios(16.0)) @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif /* __OBJC__ */ + #endif /* CAEDRMetadata_h */ diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEmitterCell.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEmitterCell.h index 6eb0a3d7..195e986b 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEmitterCell.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEmitterCell.h @@ -7,9 +7,9 @@ #import -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAEmitterCell : NSObject { @private @@ -148,6 +148,6 @@ API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)) @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEmitterLayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEmitterLayer.h index adf4a23c..986fcf20 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEmitterLayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAEmitterLayer.h @@ -18,15 +18,15 @@ #import -typedef NSString * CAEmitterLayerEmitterShape NS_TYPED_ENUM; -typedef NSString * CAEmitterLayerEmitterMode NS_TYPED_ENUM; -typedef NSString * CAEmitterLayerRenderMode NS_TYPED_ENUM; +typedef NSString * CAEmitterLayerEmitterShape NS_TYPED_ENUM API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * CAEmitterLayerEmitterMode NS_TYPED_ENUM API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * CAEmitterLayerRenderMode NS_TYPED_ENUM API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); @class CAEmitterCell; -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAEmitterLayer : CALayer /* The array of emitter cells attached to the layer. Each object must @@ -110,42 +110,42 @@ API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)) /** `emitterShape' values. **/ CA_EXTERN CAEmitterLayerEmitterShape const kCAEmitterLayerPoint - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerEmitterShape const kCAEmitterLayerLine - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerEmitterShape const kCAEmitterLayerRectangle - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerEmitterShape const kCAEmitterLayerCuboid - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerEmitterShape const kCAEmitterLayerCircle - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerEmitterShape const kCAEmitterLayerSphere - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); /** `emitterMode' values. **/ CA_EXTERN CAEmitterLayerEmitterMode const kCAEmitterLayerPoints - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerEmitterMode const kCAEmitterLayerOutline - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerEmitterMode const kCAEmitterLayerSurface - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerEmitterMode const kCAEmitterLayerVolume - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); /** `renderMode' values. **/ CA_EXTERN CAEmitterLayerRenderMode const kCAEmitterLayerUnordered - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerRenderMode const kCAEmitterLayerOldestFirst - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerRenderMode const kCAEmitterLayerOldestLast - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerRenderMode const kCAEmitterLayerBackToFront - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAEmitterLayerRenderMode const kCAEmitterLayerAdditive - API_AVAILABLE(macos(10.6), ios(5.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAFrameRateRange.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAFrameRateRange.h index 16b83c97..9e7a875c 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAFrameRateRange.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAFrameRateRange.h @@ -13,26 +13,26 @@ struct CAFrameRateRange { float minimum; float maximum; float preferred CF_REFINED_FOR_SWIFT; -} API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)); +} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); typedef struct CAFrameRateRange CAFrameRateRange - API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)); + API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos); CA_EXTERN_C_BEGIN CA_EXTERN const CAFrameRateRange CAFrameRateRangeDefault - API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)) + API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) CF_SWIFT_NAME(CAFrameRateRange.default); CA_EXTERN CAFrameRateRange CAFrameRateRangeMake(float minimum, float maximum, float preferred) - API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)) + API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) CF_SWIFT_UNAVAILABLE("Use CAFrameRateRange.init(minimum:maximum:preferred) instead"); CA_EXTERN bool CAFrameRateRangeIsEqualToRange(CAFrameRateRange range, CAFrameRateRange other) - API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)) + API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) CF_REFINED_FOR_SWIFT; CA_EXTERN_C_END diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAGradientLayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAGradientLayer.h index 62f3b121..4d486b3d 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAGradientLayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAGradientLayer.h @@ -12,11 +12,11 @@ #import #import -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -typedef NSString * CAGradientLayerType NS_TYPED_ENUM; +typedef NSString * CAGradientLayerType NS_TYPED_ENUM API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); -API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAGradientLayer : CALayer /* The array of CGColorRef objects defining the color of each gradient @@ -54,7 +54,7 @@ API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)) /** `type' values. **/ CA_EXTERN CAGradientLayerType const kCAGradientLayerAxial - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Radial gradient. The gradient is defined as an ellipse with its * center at 'startPoint' and its width and height defined by @@ -62,7 +62,7 @@ CA_EXTERN CAGradientLayerType const kCAGradientLayerAxial * 2' respectively. */ CA_EXTERN CAGradientLayerType const kCAGradientLayerRadial - API_AVAILABLE(macos(10.6), ios(3.2), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); /* Conic gradient. The gradient is centered at 'startPoint' and its 0-degrees * direction is defined by a vector spanned between 'startPoint' and @@ -71,8 +71,8 @@ CA_EXTERN CAGradientLayerType const kCAGradientLayerRadial * positive x-axis towards positive y-axis. */ CA_EXTERN CAGradientLayerType const kCAGradientLayerConic - API_AVAILABLE(macos(10.14), ios(12.0), watchos(5.0), tvos(12.0)); + API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CALayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CALayer.h index c6001765..99541fc0 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CALayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CALayer.h @@ -14,14 +14,17 @@ @class NSEnumerator, CAAnimation, CALayerArray; @protocol CAAction, CALayerDelegate; + @protocol CALayoutManager; -NS_ASSUME_NONNULL_BEGIN -typedef NSString * CALayerContentsGravity NS_TYPED_ENUM; -typedef NSString * CALayerContentsFormat NS_TYPED_ENUM; -typedef NSString * CALayerContentsFilter NS_TYPED_ENUM; -typedef NSString * CALayerCornerCurve NS_TYPED_ENUM; +NS_HEADER_AUDIT_BEGIN(nullability, sendability) + +typedef NSString * CALayerContentsGravity NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * CALayerContentsFormat NS_TYPED_ENUM API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos); +typedef NSString * CALayerContentsFilter NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * CALayerCornerCurve NS_TYPED_ENUM API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); + /* Bit definitions for `autoresizingMask' property. */ @@ -36,6 +39,27 @@ typedef NS_OPTIONS (unsigned int, CAAutoresizingMask) kCALayerMaxYMargin = 1U << 5 }; + + +/* Options that control when to tone map CALayer contents and + CAMetalLayer drawables. Defaults to CAToneMapModeAutomatic. */ +typedef NSString * CAToneMapMode NS_TYPED_ENUM NS_SWIFT_NAME(CALayer.ToneMapMode) +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), visionos(2.0)) API_UNAVAILABLE(watchos); + +/* Let the OS decide whether to tone map. */ +extern CAToneMapMode const CAToneMapModeAutomatic NS_SWIFT_NAME(automatic) +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), visionos(2.0)) API_UNAVAILABLE(watchos); + +/* Never tone map contents. */ +extern CAToneMapMode const CAToneMapModeNever NS_SWIFT_NAME(never) +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), visionos(2.0)) API_UNAVAILABLE(watchos); + +/* Tone map whenever supported by the OS. This includes + PQ, HLG and extended-range contents for CALayer + and CAMetalLayers. */ +extern CAToneMapMode const CAToneMapModeIfSupported NS_SWIFT_NAME(ifSupported) +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), visionos(2.0)) API_UNAVAILABLE(watchos); + /* Bit definitions for `edgeAntialiasingMask' property. */ typedef NS_OPTIONS (unsigned int, CAEdgeAntialiasingMask) @@ -44,7 +68,7 @@ typedef NS_OPTIONS (unsigned int, CAEdgeAntialiasingMask) kCALayerRightEdge = 1U << 1, /* Maximum X edge. */ kCALayerBottomEdge = 1U << 2, /* Minimum Y edge. */ kCALayerTopEdge = 1U << 3, /* Maximum Y edge. */ -}; +} API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Bit definitions for `maskedCorners' property. */ @@ -54,11 +78,11 @@ typedef NS_OPTIONS (NSUInteger, CACornerMask) kCALayerMaxXMinYCorner = 1U << 1, kCALayerMinXMaxYCorner = 1U << 2, kCALayerMaxXMaxYCorner = 1U << 3, -}; +} API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos); /** The base layer class. **/ -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CALayer : NSObject /** Layer creation and initialization. **/ @@ -104,6 +128,24 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /** Property methods. **/ + + + + + + + + + + + + + + + + + + /* CALayer implements the standard NSKeyValueCoding protocol for all * Objective C properties defined by the class and its subclasses. It * dynamically implements missing accessor methods for properties @@ -121,6 +163,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) * CGAffineTransform NSAffineTransform * CATransform3D NSValue */ + /* Returns the default value of the named property, or nil if no * default value is known. Subclasses that override this method to * define default values for their own properties should call `super' @@ -349,7 +392,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) * as large as the layer bounds). Defaults to one. Animatable. */ @property CGFloat contentsScale - API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* A rectangle in normalized image coordinates defining the scaled * center part of the `contents' image. @@ -377,7 +420,8 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) * does not affect the interpretation of the `contents' property directly. */ @property(copy) CALayerContentsFormat contentsFormat - API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0), tvos(10.0)); + API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos); + /* If YES, contents of the layer can be displayed up to its NSScreen's * maximumExtendedDynamicRangeColorComponentValue or UIScreen's @@ -391,6 +435,21 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) API_AVAILABLE(macos(14.0), ios(17.0), macCatalyst(17.0)) API_UNAVAILABLE(tvos, watchos); +/* Options that control when to tone map CALayer contents and + CAMetalLayer drawables. */ +@property(copy) CAToneMapMode toneMapMode +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), visionos(2.0)) API_UNAVAILABLE(watchos); + + +/* If YES, allows the layer's content to render at arbitrary integer scales + to preserve high-quality vector graphics. This only affects content drawn + through -drawLayerInContext or -drawInContext. Changing this value will + trigger an explicit `setNeedsDisplay`. The default value is NO. */ + +@property BOOL wantsDynamicContentScaling + API_AVAILABLE(visionos(1.0)) API_UNAVAILABLE(macos, ios, tvos, watchos); + + /* The filter types to use when rendering the `contents' property of * the layer. The minification filter is used when to reduce the size @@ -447,7 +506,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) * default value is NO. */ @property BOOL drawsAsynchronously - API_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.8), ios(6.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Called via the -display method when the `contents' property is being * updated. Default implementation does nothing. The context may be @@ -476,6 +535,14 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) @property CAEdgeAntialiasingMask edgeAntialiasingMask; + + + + + + + + /* When true this layer is allowed to antialias its edges, as requested * by the edgeAntialiasingMask. * @@ -485,8 +552,9 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) * instead. If no value is found in the Info.plist the default value is * YES on macOS and NO on iOS. */ + @property BOOL allowsEdgeAntialiasing - API_AVAILABLE(macos(10.10), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.10), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* The background color of the layer. Default value is nil. Colors * created from tiled patterns are supported. Animatable. */ @@ -503,19 +571,19 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) * `cornerRadius' property. Defaults to all four corners. */ @property CACornerMask maskedCorners - API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)); + API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos); /* Defines the curve used for rendering the rounded corners of the layer. * Defaults to 'kCACornerCurveCircular'. */ @property(copy) CALayerCornerCurve cornerCurve - API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); + API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); /* Expansion scale factor applied to the rounded corner bounding box size * when specific corner curve is used. */ + (CGFloat)cornerCurveExpansionFactor:(CALayerCornerCurve)curve - API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); + API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); /* The width of the layer's border, inset from the layer bounds. The * border is composited above the layer's content and sublayers and @@ -535,6 +603,18 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) @property float opacity; + + + + + + + + + + + + /* When true, and the layer's opacity property is less than one, the * layer is allowed to composite itself as a group separate from its * parent. This gives the correct results when the layer contains @@ -546,8 +626,9 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) * If no value is found in the Info.plist the default value is YES on * macOS and NO on iOS. */ + @property BOOL allowsGroupOpacity - API_AVAILABLE(macos(10.10), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.10), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* A filter object used to composite the layer with its (possibly * filtered) background. Default value is nil, which implies source- @@ -628,12 +709,15 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /** Layout methods. **/ + /* A bitmask defining how the layer is resized when the bounds of its * superlayer changes. See the CAAutoresizingMask enum for the bit * definitions. Default value is zero. */ @property CAAutoresizingMask autoresizingMask; + + /* The object responsible for assigning frame rects to sublayers, * should implement methods from the CALayoutManager informal protocol. * When nil (the default value) only the autoresizing style of layout @@ -641,6 +725,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) @property(nullable, strong) id layoutManager; + /* Returns the preferred frame size of the layer in the coordinate * space of the superlayer. The default implementation calls the layout * manager if one exists and it implements the -preferredSizeOfLayer: @@ -679,6 +764,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) - (void)layoutSublayers; + /* NSView-style springs and struts layout. -resizeSublayersWithOldSize: * is called when the layer's bounds rect is changed. It calls * -resizeWithOldSuperlayerSize: to resize the sublayer's frame to @@ -688,6 +774,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) - (void)resizeSublayersWithOldSize:(CGSize)size; - (void)resizeWithOldSuperlayerSize:(CGSize)size; + /** Action methods. **/ /* An "action" is an object that responds to an "event" via the @@ -812,6 +899,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) @end + /** Layout manager protocol. **/ @protocol CALayoutManager @@ -836,8 +924,10 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) @end + /** Action (event handler) protocol. **/ +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @protocol CAAction /* Called to trigger the event named 'path' on the receiver. The object @@ -852,12 +942,14 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /** NSNull protocol conformance. **/ +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface NSNull (CAActionAdditions) @end /** Delegate methods. **/ +API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos) @protocol CALayerDelegate @optional @@ -877,7 +969,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) * be called if the delegate implements -displayLayer. */ - (void)layerWillDraw:(CALayer *)layer - API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0), tvos(10.0)); + API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos); /* Called by the default -layoutSublayers implementation before the layout * manager is checked. Note that if the delegate method is invoked, the @@ -899,72 +991,72 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /** Layer `contentsGravity' values. **/ CA_EXTERN CALayerContentsGravity const kCAGravityCenter - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityTop - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityBottom - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityLeft - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityRight - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityTopLeft - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityTopRight - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityBottomLeft - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityBottomRight - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityResize - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityResizeAspect - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsGravity const kCAGravityResizeAspectFill - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /** Layer `contentsFormat` values. **/ CA_EXTERN CALayerContentsFormat const kCAContentsFormatRGBA8Uint /* RGBA UInt8 per component */ - API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0), tvos(10.0)); + API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsFormat const kCAContentsFormatRGBA16Float /* RGBA half-float 16-bit per component */ - API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0), tvos(10.0)); + API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsFormat const kCAContentsFormatGray8Uint /* Grayscale with alpha (if not opaque) UInt8 per component */ - API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0), tvos(10.0)); + API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos); /** Contents filter names. **/ CA_EXTERN CALayerContentsFilter const kCAFilterNearest - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerContentsFilter const kCAFilterLinear - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Trilinear minification filter. Enables mipmap generation. Some * renderers may ignore this, or impose additional restrictions, such * as source images requiring power-of-two dimensions. */ CA_EXTERN CALayerContentsFilter const kCAFilterTrilinear - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); /** Corner curve names. **/ CA_EXTERN CALayerCornerCurve const kCACornerCurveCircular - API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); + API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); CA_EXTERN CALayerCornerCurve const kCACornerCurveContinuous - API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); + API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); /** Layer event names. **/ CA_EXTERN NSString * const kCAOnOrderIn - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN NSString * const kCAOnOrderOut - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /** The animation key used for transitions. **/ CA_EXTERN NSString * const kCATransition - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMediaTiming.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMediaTiming.h index 3fd981bf..d3b9f5fe 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMediaTiming.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMediaTiming.h @@ -29,10 +29,11 @@ @class NSString; -typedef NSString * CAMediaTimingFillMode NS_TYPED_ENUM; +typedef NSString * CAMediaTimingFillMode NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @protocol CAMediaTiming /* The begin time of the object, in relation to its parent object, if @@ -83,14 +84,14 @@ NS_ASSUME_NONNULL_BEGIN /* `fillMode' options. */ CA_EXTERN CAMediaTimingFillMode const kCAFillModeForwards - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAMediaTimingFillMode const kCAFillModeBackwards - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAMediaTimingFillMode const kCAFillModeBoth - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAMediaTimingFillMode const kCAFillModeRemoved - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMediaTimingFunction.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMediaTimingFunction.h index 06ef977e..7fdaad59 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMediaTimingFunction.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMediaTimingFunction.h @@ -10,9 +10,9 @@ @class NSArray, NSString; -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -typedef NSString * CAMediaTimingFunctionName NS_TYPED_ENUM; +typedef NSString * CAMediaTimingFunctionName NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Represents one segment of a function describing a timing curve. The * function maps an input time normalized to the range [0,1] to an @@ -20,7 +20,7 @@ typedef NSString * CAMediaTimingFunctionName NS_TYPED_ENUM; * to define the pacing of an animation over its duration (or over the * duration of one keyframe). */ -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAMediaTimingFunction : NSObject { @private @@ -52,16 +52,16 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /** Timing function names. **/ CA_EXTERN CAMediaTimingFunctionName const kCAMediaTimingFunctionLinear - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAMediaTimingFunctionName const kCAMediaTimingFunctionEaseIn - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAMediaTimingFunctionName const kCAMediaTimingFunctionEaseOut - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAMediaTimingFunctionName const kCAMediaTimingFunctionEaseInEaseOut - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAMediaTimingFunctionName const kCAMediaTimingFunctionDefault - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMetalDisplayLink.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMetalDisplayLink.h index 416ff370..a6639321 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMetalDisplayLink.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMetalDisplayLink.h @@ -5,16 +5,18 @@ #ifdef __OBJC__ +#if __has_include() + #import #import #import #import -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) @class CAMetalDisplayLink; -API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)) +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos) CF_SWIFT_NAME(CAMetalDisplayLink.Update) @interface CAMetalDisplayLinkUpdate : NSObject @property(readonly, nonatomic) id drawable; @@ -22,12 +24,12 @@ CF_SWIFT_NAME(CAMetalDisplayLink.Update) @property(readonly, nonatomic) CFTimeInterval targetPresentationTimestamp; @end -API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)) +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos) @protocol CAMetalDisplayLinkDelegate - (void)metalDisplayLink:(CAMetalDisplayLink *)link needsUpdate:(CAMetalDisplayLinkUpdate *)update; @end -API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)) +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos) @interface CAMetalDisplayLink : NSObject - (instancetype)initWithMetalLayer:(CAMetalLayer *)layer; @@ -48,6 +50,8 @@ API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)) @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) + +#endif /* __has_include() */ -#endif +#endif /* __OBJC__ */ diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMetalLayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMetalLayer.h index 538f98bc..e243ec06 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMetalLayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAMetalLayer.h @@ -5,8 +5,14 @@ #ifdef __OBJC__ +#if __has_include() + #import + + #import + + #import #import @@ -16,7 +22,7 @@ @class CAMetalLayer, NSDictionary; -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) /* CAMetalDrawable represents a displayable buffer that vends an object * that conforms to the MTLTexture protocol that may be used to create @@ -43,7 +49,11 @@ NS_ASSUME_NONNULL_BEGIN /* Note: The default value of the `opaque' property for CAMetalLayer * instances is true. */ -API_AVAILABLE(macos(10.11), ios(8.0), watchos(2.0), tvos(9.0)) + +API_AVAILABLE(macos(10.11), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) + + + @interface CAMetalLayer : CALayer { @private @@ -61,7 +71,7 @@ API_AVAILABLE(macos(10.11), ios(8.0), watchos(2.0), tvos(9.0)) /* This property returns the preferred MTLDevice for this CAMetalLayer. */ @property(nullable, readonly) id preferredDevice - API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); + API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); /* This property controls the pixel format of the MTLTexture objects. * The two supported values are MTLPixelFormatBGRA8Unorm and @@ -114,6 +124,7 @@ API_AVAILABLE(macos(10.11), ios(8.0), watchos(2.0), tvos(9.0)) @property (nullable) CGColorSpaceRef colorspace; + /* If any rendering context on the screen has this enabled, all content will be * clamped to its NSScreen’s maximumExtendedDynamicRangeColorComponentValue * rather than 1.0. The default is NO. */ @@ -121,26 +132,33 @@ API_AVAILABLE(macos(10.11), ios(8.0), watchos(2.0), tvos(9.0)) @property BOOL wantsExtendedDynamicRangeContent API_AVAILABLE(macos(10.11), ios(16.0), macCatalyst(16.0)) API_UNAVAILABLE(tvos, watchos); + + + /* Metadata describing extended dynamic range content in the layer's drawable. * Must be set before calling nextDrawable. If non-nil, content may be * tone mapped to match the current display characteristics. If nil, samples * will be rendered without tone mapping and values above the maximum EDR value * -[NSScreen maximumExtendedDynamicRangeColorComponentValue] may be clamped. * Defaults to nil. */ -@property (strong, nullable) CAEDRMetadata *EDRMetadata API_AVAILABLE(macos(10.15), ios(16.0)); +@property (strong, nullable) CAEDRMetadata *EDRMetadata API_AVAILABLE(macos(10.15), ios(16.0)) API_UNAVAILABLE(watchos); + + + /* This property controls if this layer and its drawables will be synchronized * to the display's Vsync. The default value is YES. */ @property BOOL displaySyncEnabled API_AVAILABLE(macos(10.13)); + /* Controls if `-nextDrawable' is allowed to timeout after 1 second and return * nil if * the system does not have a free drawable available. The default * value is YES. If set to NO, then `-nextDrawable' will block forever until a * free drawable is available. */ @property BOOL allowsNextDrawableTimeout - API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)); + API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos); /* When non-nil, controls the options of developer HUD. Defaults to nil. */ @@ -149,6 +167,7 @@ API_AVAILABLE(macos(10.11), ios(16.0), macCatalyst(16.0)) API_UNAVAILABLE(tvos, @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) -#endif +#endif /* __has_include() */ +#endif /* __OBJC__ */ diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAOpenGLLayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAOpenGLLayer.h index b401f0ea..3fe654d1 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAOpenGLLayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAOpenGLLayer.h @@ -9,7 +9,7 @@ #import #import -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) #ifndef GL_SILENCE_DEPRECATION API_DEPRECATED("OpenGL is deprecated", macos(10.5, 10.14)) @@ -81,14 +81,16 @@ API_AVAILABLE(macos(10.5)) @property (nullable) CGColorSpaceRef colorspace; + /* If any rendering context on the screen has this enabled, all content will be * clamped to its NSScreen’s maximumExtendedDynamicRangeColorComponentValue * rather than 1.0. The default is NO. */ @property BOOL wantsExtendedDynamicRangeContent; + @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CARemoteLayerClient.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CARemoteLayerClient.h index 9af42159..25f83692 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CARemoteLayerClient.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CARemoteLayerClient.h @@ -11,7 +11,7 @@ @class CALayer; -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) API_AVAILABLE(macos(10.7)) @interface CARemoteLayerClient : NSObject @@ -42,6 +42,6 @@ API_AVAILABLE(macos(10.7)) @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CARemoteLayerServer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CARemoteLayerServer.h index 7c877858..ff062846 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CARemoteLayerServer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CARemoteLayerServer.h @@ -9,7 +9,7 @@ #import #import -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) API_AVAILABLE(macos(10.7)) @interface CARemoteLayerServer : NSObject @@ -38,6 +38,6 @@ API_AVAILABLE(macos(10.7)) @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CARenderer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CARenderer.h index c9d173a2..43153554 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CARenderer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CARenderer.h @@ -3,6 +3,7 @@ Copyright (c) 2007-2022, Apple Inc. All rights reserved. */ + /* This class lets an application manually drive the rendering of a * layer tree into an OpenGL rendering context. This is _not_ the * best solution for real-time output, use an NSView to host a layer @@ -29,6 +30,7 @@ * from the -render method, the default values will be preserved. */ + #ifdef __OBJC__ #import @@ -38,15 +40,16 @@ @class NSDictionary, CALayer; @protocol MTLTexture; -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CARenderer : NSObject { @private struct CARendererPriv *_priv; } + /* Create a new renderer object. Its render target is the specified * Core OpenGL context. 'dict' is an optional dictionary of parameters. */ @@ -59,12 +62,13 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) #endif + /* Create a new renderer object. Its render target is the specified * texture. 'dict' is an optional dictionary of parameters. */ + (CARenderer *)rendererWithMTLTexture:(id)tex options:(nullable NSDictionary *)dict - API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)); + API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos); /* The root layer associated with the renderer. */ @@ -115,7 +119,7 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /* The CGColorSpaceRef object defining the output color space. */ CA_EXTERN NSString * const kCARendererColorSpace - API_AVAILABLE(macos(10.6), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* The Metal Command Queue object against which to submit work. * @@ -127,8 +131,8 @@ CA_EXTERN NSString * const kCARendererColorSpace * automatically commits and waitUntilScheduled. */ CA_EXTERN NSString * const kCARendererMetalCommandQueue - API_AVAILABLE(macos(10.14), ios(12.0), watchos(5.0), tvos(12.0)); + API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAReplicatorLayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAReplicatorLayer.h index 1a1eaa6b..a5abf733 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAReplicatorLayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAReplicatorLayer.h @@ -7,7 +7,7 @@ #import -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) /* The replicator layer creates a specified number of copies of its * sublayers, each copy potentially having geometric, temporal and @@ -17,7 +17,7 @@ NS_ASSUME_NONNULL_BEGIN * instance of z replicator layer's sublayers. This may change in the * future. */ -API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAReplicatorLayer : CALayer /* The number of copies to create, including the source object. @@ -60,6 +60,6 @@ API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)) @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAScrollLayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAScrollLayer.h index a5390959..894d66e4 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAScrollLayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAScrollLayer.h @@ -7,11 +7,11 @@ #import -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -typedef NSString * CAScrollLayerScrollMode NS_TYPED_ENUM; +typedef NSString * CAScrollLayerScrollMode NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAScrollLayer : CALayer /* Changes the origin of the layer to point 'p'. */ @@ -51,14 +51,14 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /* `scrollMode' values. */ CA_EXTERN CAScrollLayerScrollMode const kCAScrollNone - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAScrollLayerScrollMode const kCAScrollVertically - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAScrollLayerScrollMode const kCAScrollHorizontally - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAScrollLayerScrollMode const kCAScrollBoth - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAShapeLayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAShapeLayer.h index 42ff0cc4..2fb02ab0 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAShapeLayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAShapeLayer.h @@ -7,11 +7,11 @@ #import -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -typedef NSString * CAShapeLayerFillRule NS_TYPED_ENUM; -typedef NSString * CAShapeLayerLineJoin NS_TYPED_ENUM; -typedef NSString * CAShapeLayerLineCap NS_TYPED_ENUM; +typedef NSString * CAShapeLayerFillRule NS_TYPED_ENUM API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * CAShapeLayerLineJoin NS_TYPED_ENUM API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * CAShapeLayerLineCap NS_TYPED_ENUM API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* The shape layer draws a cubic Bezier spline in its coordinate space. * @@ -36,7 +36,7 @@ typedef NSString * CAShapeLayerLineCap NS_TYPED_ENUM; * Note: rasterization may favor speed over accuracy, e.g. pixels with * multiple intersecting path segments may not give exact results. */ -API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAShapeLayer : CALayer /* The path defining the shape to be rendered. If the path extends @@ -108,28 +108,28 @@ API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)) /* `fillRule' values. */ CA_EXTERN CAShapeLayerFillRule const kCAFillRuleNonZero - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAShapeLayerFillRule const kCAFillRuleEvenOdd - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* `lineJoin' values. */ CA_EXTERN CAShapeLayerLineJoin const kCALineJoinMiter - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAShapeLayerLineJoin const kCALineJoinRound - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAShapeLayerLineJoin const kCALineJoinBevel - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* `lineCap' values. */ CA_EXTERN CAShapeLayerLineCap const kCALineCapButt - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAShapeLayerLineCap const kCALineCapRound - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAShapeLayerLineCap const kCALineCapSquare - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CATextLayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CATextLayer.h index 79ecc3e7..035393f4 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CATextLayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CATextLayer.h @@ -11,12 +11,12 @@ * or attributed strings. The first line is aligned to the top of the * layer. */ -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -typedef NSString * CATextLayerTruncationMode NS_TYPED_ENUM; -typedef NSString * CATextLayerAlignmentMode NS_TYPED_ENUM; +typedef NSString * CATextLayerTruncationMode NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); +typedef NSString * CATextLayerAlignmentMode NS_TYPED_ENUM API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CATextLayer : CALayer { @private @@ -28,11 +28,18 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) @property(nullable, copy) id string; + /* The font to use, currently may be either a CTFontRef (toll-free * bridged from NSFont), a CGFontRef, or a string naming the font. * Defaults to the Helvetica font. Only used when the `string' property * is not an NSAttributedString. */ + + + + + + @property(nullable) CFTypeRef font; /* The font size. Defaults to 36. Only used when the `string' property @@ -73,27 +80,27 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /* Truncation modes. */ CA_EXTERN CATextLayerTruncationMode const kCATruncationNone - API_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATextLayerTruncationMode const kCATruncationStart - API_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATextLayerTruncationMode const kCATruncationEnd - API_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATextLayerTruncationMode const kCATruncationMiddle - API_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); /* Alignment modes. */ CA_EXTERN CATextLayerAlignmentMode const kCAAlignmentNatural - API_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATextLayerAlignmentMode const kCAAlignmentLeft - API_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATextLayerAlignmentMode const kCAAlignmentRight - API_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATextLayerAlignmentMode const kCAAlignmentCenter - API_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CATextLayerAlignmentMode const kCAAlignmentJustified - API_AVAILABLE(macos(10.5), ios(3.2), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(3.2), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CATiledLayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CATiledLayer.h index 11bb247b..396d112e 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CATiledLayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CATiledLayer.h @@ -26,9 +26,9 @@ #import -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CATiledLayer : CALayer /* The time in seconds that newly added images take to "fade-in" to the @@ -62,6 +62,6 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransaction.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransaction.h index 418df7ac..2b07bdec 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransaction.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransaction.h @@ -28,17 +28,16 @@ @class CAMediaTimingFunction; -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CATransaction : NSObject /* Begin a new transaction for the current thread; nests. */ + (void)begin; -/* Commit all changes made during the current transaction. Raises an - * exception if no current transaction exists. */ +/* Commit all changes made during the current transaction. */ + (void)commit; @@ -86,10 +85,8 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) * committed (or the completion block is set to a different value), the * block will be invoked immediately. Added in Mac OS X 10.6. */ -#if __BLOCKS__ + (nullable void (^)(void))completionBlock; + (void)setCompletionBlock:(nullable void (^)(void))block; -#endif /* Associate arbitrary keyed-data with the current transaction (i.e. * with the current thread). @@ -114,14 +111,14 @@ API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) /** Transaction property ids. **/ CA_EXTERN NSString * const kCATransactionAnimationDuration - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN NSString * const kCATransactionDisableActions - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN NSString * const kCATransactionAnimationTimingFunction - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN NSString * const kCATransactionCompletionBlock - API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(4.0), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransform3D.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransform3D.h index dcb16f86..cf478a27 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransform3D.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransform3D.h @@ -20,41 +20,41 @@ struct CATransform3D CGFloat m21, m22, m23, m24; CGFloat m31, m32, m33, m34; CGFloat m41, m42, m43, m44; -}; +} API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); -typedef struct CA_BOXABLE CATransform3D CATransform3D; +typedef struct CA_BOXABLE CATransform3D CATransform3D API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN_C_BEGIN /* The identity transform: [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]. */ CA_EXTERN const CATransform3D CATransform3DIdentity - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Returns true if 't' is the identity transform. */ CA_EXTERN bool CATransform3DIsIdentity (CATransform3D t) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Returns true if 'a' is exactly equal to 'b'. */ CA_EXTERN bool CATransform3DEqualToTransform (CATransform3D a, CATransform3D b) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Returns a transform that translates by '(tx, ty, tz)': * t' = [1 0 0 0; 0 1 0 0; 0 0 1 0; tx ty tz 1]. */ CA_EXTERN CATransform3D CATransform3DMakeTranslation (CGFloat tx, CGFloat ty, CGFloat tz) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Returns a transform that scales by `(sx, sy, sz)': * t' = [sx 0 0 0; 0 sy 0 0; 0 0 sz 0; 0 0 0 1]. */ CA_EXTERN CATransform3D CATransform3DMakeScale (CGFloat sx, CGFloat sy, CGFloat sz) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Returns a transform that rotates by 'angle' radians about the vector * '(x, y, z)'. If the vector has length zero the identity transform is @@ -62,21 +62,21 @@ CA_EXTERN CATransform3D CATransform3DMakeScale (CGFloat sx, CGFloat sy, CA_EXTERN CATransform3D CATransform3DMakeRotation (CGFloat angle, CGFloat x, CGFloat y, CGFloat z) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Translate 't' by '(tx, ty, tz)' and return the result: * t' = translate(tx, ty, tz) * t. */ CA_EXTERN CATransform3D CATransform3DTranslate (CATransform3D t, CGFloat tx, CGFloat ty, CGFloat tz) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Scale 't' by '(sx, sy, sz)' and return the result: * t' = scale(sx, sy, sz) * t. */ CA_EXTERN CATransform3D CATransform3DScale (CATransform3D t, CGFloat sx, CGFloat sy, CGFloat sz) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Rotate 't' by 'angle' radians about the vector '(x, y, z)' and return * the result. If the vector has zero length the behavior is undefined: @@ -84,35 +84,35 @@ CA_EXTERN CATransform3D CATransform3DScale (CATransform3D t, CGFloat sx, CA_EXTERN CATransform3D CATransform3DRotate (CATransform3D t, CGFloat angle, CGFloat x, CGFloat y, CGFloat z) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Concatenate 'b' to 'a' and return the result: t' = a * b. */ CA_EXTERN CATransform3D CATransform3DConcat (CATransform3D a, CATransform3D b) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Invert 't' and return the result. Returns the original matrix if 't' * has no inverse. */ CA_EXTERN CATransform3D CATransform3DInvert (CATransform3D t) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Return a transform with the same effect as affine transform 'm'. */ CA_EXTERN CATransform3D CATransform3DMakeAffineTransform (CGAffineTransform m) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Returns true if 't' can be represented exactly by an affine transform. */ CA_EXTERN bool CATransform3DIsAffine (CATransform3D t) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* Returns the affine transform represented by 't'. If 't' can not be * represented exactly by an affine transform the returned value is * undefined. */ CA_EXTERN CGAffineTransform CATransform3DGetAffineTransform (CATransform3D t) - API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN_C_END @@ -120,8 +120,9 @@ CA_EXTERN_C_END #ifdef __OBJC__ -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) +API_AVAILABLE(macos(10.5), ios(2.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface NSValue (CATransform3DAdditions) + (NSValue *)valueWithCATransform3D:(CATransform3D)t; @@ -130,7 +131,7 @@ NS_ASSUME_NONNULL_BEGIN @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif /* __OBJC__ */ diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransformLayer.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransformLayer.h index 9eac69fd..d6a7793c 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransformLayer.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CATransformLayer.h @@ -7,7 +7,7 @@ #import -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) /* "Transform" layers are used to create true 3D layer hierarchies. * @@ -31,10 +31,10 @@ NS_ASSUME_NONNULL_BEGIN * their sublayers, applying the effects of the transform layer's * geometry when hit-testing each sublayer. */ -API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CATransformLayer : CALayer @end -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAValueFunction.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAValueFunction.h index 1cb2a302..78238af1 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CAValueFunction.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CAValueFunction.h @@ -8,11 +8,11 @@ #import #import -typedef NSString * CAValueFunctionName NS_TYPED_ENUM; +typedef NSString * CAValueFunctionName NS_TYPED_ENUM API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_BEGIN +NS_HEADER_AUDIT_BEGIN(nullability, sendability) -API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)) +API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos) @interface CAValueFunction : NSObject { @protected @@ -33,46 +33,46 @@ API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)) * corresponding rotation matrix. */ CA_EXTERN CAValueFunctionName const kCAValueFunctionRotateX - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAValueFunctionName const kCAValueFunctionRotateY - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAValueFunctionName const kCAValueFunctionRotateZ - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* The `scale' function takes three input values and constructs a * 4x4 matrix representing the corresponding scale matrix. */ CA_EXTERN CAValueFunctionName const kCAValueFunctionScale - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* The `scaleX', `scaleY', `scaleZ' functions take a single input value * and construct a 4x4 matrix representing the corresponding scaling * matrix. */ CA_EXTERN CAValueFunctionName const kCAValueFunctionScaleX - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAValueFunctionName const kCAValueFunctionScaleY - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAValueFunctionName const kCAValueFunctionScaleZ - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* The `translate' function takes three input values and constructs a * 4x4 matrix representing the corresponding scale matrix. */ CA_EXTERN CAValueFunctionName const kCAValueFunctionTranslate - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); /* The `translateX', `translateY', `translateZ' functions take a single * input value and construct a 4x4 matrix representing the corresponding * translation matrix. */ CA_EXTERN CAValueFunctionName const kCAValueFunctionTranslateX - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAValueFunctionName const kCAValueFunctionTranslateY - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); CA_EXTERN CAValueFunctionName const kCAValueFunctionTranslateZ - API_AVAILABLE(macos(10.6), ios(3.0), watchos(2.0), tvos(9.0)); + API_AVAILABLE(macos(10.6), ios(3.0), tvos(9.0)) API_UNAVAILABLE(watchos); -NS_ASSUME_NONNULL_END +NS_HEADER_AUDIT_END(nullability, sendability) #endif diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/CoreAnimation.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/CoreAnimation.h index 4f840c97..b53c7a1d 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/CoreAnimation.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/CoreAnimation.h @@ -14,8 +14,13 @@ #endif #import + #import + #import + + + #import #import #import @@ -25,9 +30,13 @@ #import #import #import + #import + + #import #import + #import #import #import @@ -38,6 +47,10 @@ #import #import #import + + #import + + #endif /* COREANIMATION_H */ diff --git a/Frameworks/QuartzCore.framework/Versions/A/Headers/QuartzCore.h b/Frameworks/QuartzCore.framework/Versions/A/Headers/QuartzCore.h index 5a49b7de..036072c7 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/Headers/QuartzCore.h +++ b/Frameworks/QuartzCore.framework/Versions/A/Headers/QuartzCore.h @@ -6,13 +6,17 @@ #ifndef QUARTZCORE_H #define QUARTZCORE_H + #if !__has_feature(modules) #include #endif + + #if !__has_feature(modules) #include #endif + #include #endif /* QUARTZCORE_H */ diff --git a/Frameworks/QuartzCore.framework/Versions/A/QuartzCore.tbd b/Frameworks/QuartzCore.framework/Versions/A/QuartzCore.tbd index d7d69dee..07fe9911 100644 --- a/Frameworks/QuartzCore.framework/Versions/A/QuartzCore.tbd +++ b/Frameworks/QuartzCore.framework/Versions/A/QuartzCore.tbd @@ -137,29 +137,29 @@ exports: _CACodingImageFormat, _CAColorMatrixConcat, _CAColorMatrixIdentity, _CAColorMatrixMakeBrightness, _CAColorMatrixMakeColorSourceOver, _CAColorMatrixMakeContrast, _CAColorMatrixMakeMultiplyColor, - _CAColorMatrixMakeSaturation, _CACornerRadiiEqualToRadii, + _CAColorMatrixMakePlusD, _CAColorMatrixMakePlusL, _CAColorMatrixMakeSaturation, + _CACopyColorSpaceFromBulkAttachments, _CACornerRadiiEqualToRadii, _CACornerRadiiZero, _CACurrentMediaTime, _CADebugClientOptionAtIndex, _CADebugClientOptionCount, _CADebugColorOptionAtIndex, _CADebugColorOptionCount, _CADebugFeatureOptionAtIndex, _CADebugFeatureOptionCount, - _CADebugGlobalOptionAtIndex, _CADebugGlobalOptionCount, _CADebugLayerRelease, - _CADebugOptionIsClient, _CADebugOptionIsColor, _CADebugOptionIsFeature, - _CADebugOptionIsGlobal, _CADebugOptionIsPrint, _CADebugPrintOptionAtIndex, - _CADebugPrintOptionCount, _CADecrementDebugValue, _CADisplayGetCurrentHeadroom, - _CADisplayGetPotentialHeadroom, _CADisplayGetReferenceHeadroom, - _CAEncodeBackingStores, _CAEncodeIOSurfacesAsCGImages, _CAEncodeLayerTree, - _CAEncodeLayerTreeToFile, _CAEncodeLayerTreeToFileWithInfo, - _CAEncodeLayerTreeWithInfo, _CAFenceBatchWaitLockAcquire, - _CAFenceBatchWaitLockRelease, _CAFrameRateRangeDefault, _CAFrameRateRangeDefaultDoNotUse, + _CADebugLayerRelease, _CADebugOptionForceWalkTree, _CADebugOptionIsClient, + _CADebugOptionIsColor, _CADebugOptionIsFeature, _CADebugOptionIsPrint, + _CADebugPrintOptionAtIndex, _CADebugPrintOptionCount, _CADecrementDebugValue, + _CADisplayGetCurrentHeadroom, _CADisplayGetPotentialHeadroom, + _CADisplayGetReferenceHeadroom, _CADisplayPrintDisplays, _CAEncodeBackingStores, + _CAEncodeIOSurfacesAsCGImages, _CAEncodeLayerTree, _CAEncodeLayerTreeToFile, + _CAEncodeLayerTreeToFileWithInfo, _CAEncodeLayerTreeWithInfo, + _CAFenceBatchWaitLockAcquire, _CAFenceBatchWaitLockRelease, + _CAFrameRateRangeDefault, _CAFrameRateRangeDefaultDoNotUse, _CAFrameRateRangeIsEqualToRange, _CAFrameRateRangeIsValid, _CAFrameRateRangeMake, _CAFramingSlotCreate, _CAFramingSlotGetData, - _CAFramingSlotGetImage, _CAFramingSlotGetTypeID, _CAGetColorSpaceFromBulkAttachments, - _CAGetCurrentImageBytes, _CAGetDebugFlags, _CAGetDebugMessage, - _CAGetDebugMessageColor, _CAGetDebugOption, _CAGetDebugOptionEnvVariableName, - _CAGetDebugValue, _CAGetDebugValueEnvVariableName, _CAGetDebugValueFloat, - _CAGetDebugValueOSType, _CAGetFrameCounter, _CAGetLUTFile, - _CAGetMaximumImageBytes, _CAGetRuntimeSeparatedVersion, _CAGetScreenTelemetryInterval, - _CAGetScreenTelemetryParameters, _CAGetTransactionCounter, - _CAIOSurfaceContextVTable, _CAIOSurfaceCreate, _CAIOSurfaceCreateDefault, + _CAFramingSlotGetImage, _CAFramingSlotGetTypeID, _CAGetCurrentImageBytes, + _CAGetDebugFlags, _CAGetDebugMessage, _CAGetDebugMessageColor, + _CAGetDebugOption, _CAGetDebugOptionEnvVariableName, _CAGetDebugValue, + _CAGetDebugValueEnvVariableName, _CAGetDebugValueFloat, _CAGetDebugValueOSType, + _CAGetFrameCounter, _CAGetLUTFile, _CAGetMaximumImageBytes, + _CAGetRuntimeSeparatedVersion, _CAGetTransactionCounter, _CAIOSurfaceContextVTable, + _CAIOSurfaceCreate, _CAIOSurfaceCreateDefault, _CAIOSurfaceGetIOSurface, _CAIOSurfaceGetTypeID, _CAIOSurfaceRetainFrontTexture, _CAIOSurfaceWriteToFile, _CAIOSurfaceWriteToFileWithSuffix, _CAImageProviderCreate, _CAImageProviderDraw, _CAImageProviderGetFillColor, _CAImageProviderGetFlags, @@ -190,10 +190,10 @@ exports: _CAImageQueueSetMediaTiming, _CAImageQueueSetMediaTimingClamped, _CAImageQueueSetOwner, _CAImageQueueSetReducedPollingTimeRange, _CAImageQueueSetSize, _CAImageQueueUnregisterBuffer, _CAInternAtom, - _CAInvalidRenderId, _CAIsScreenTelemetryEnabled, _CALayerEncodeAllAnimations, - _CALayerFrameAffineTransform, _CALayerFrameTransform, _CALayerGetContext, - _CALayerGetDelegate, _CALayerGetRenderId, _CALayerGetSuperlayer, - _CALayerMapGeometry, _CALayerRegisterSeparatedCallbacks, _CALayerShouldInvokeAnimationCallbacksTheOldWay, + _CAInvalidRenderId, _CALayerEncodeAllAnimations, _CALayerFrameAffineTransform, + _CALayerFrameTransform, _CALayerGetContext, _CALayerGetDelegate, + _CALayerGetRenderId, _CALayerGetSuperlayer, _CALayerMapGeometry, + _CALayerRegisterSeparatedCallbacks, _CALayerShouldInvokeAnimationCallbacksTheOldWay, _CALinearMaskContextClearRect, _CALinearMaskContextConcatCTM, _CALinearMaskContextDrawGlyphs, _CALinearMaskContextGetCTM, _CAMLEncodeLayerTreeToPathWithInfo, _CAMLEncodeLayerTreeToPathWithOptions, @@ -209,31 +209,26 @@ exports: _CARenderContextCopyBoundsRegion, _CARenderContextCopyClientAnnotation, _CARenderContextCopyOpaqueRegion, _CARenderContextCopyPayload, _CARenderContextCopyProcessPath, _CARenderContextDestroy, - _CARenderContextGetBeginTime, _CARenderContextGetChangedSeed, - _CARenderContextGetColorspace, _CARenderContextGetCommitSeed, - _CARenderContextGetDisplayInfo, _CARenderContextGetEventMask, - _CARenderContextGetGPURegistryID, _CARenderContextGetGeometrySeed, - _CARenderContextGetHostContextId, _CARenderContextGetId, _CARenderContextGetInputTime, - _CARenderContextGetLayerGeometryParams, _CARenderContextGetLevel, - _CARenderContextGetOptions, _CARenderContextGetPayloadSeed, + _CARenderContextGetAuditToken, _CARenderContextGetBeginTime, + _CARenderContextGetChangedSeed, _CARenderContextGetColorspace, + _CARenderContextGetCommitSeed, _CARenderContextGetDisplayInfo, + _CARenderContextGetEventMask, _CARenderContextGetGPURegistryID, + _CARenderContextGetGeometrySeed, _CARenderContextGetHostContextId, + _CARenderContextGetId, _CARenderContextGetInputTime, _CARenderContextGetLayerGeometryParams, + _CARenderContextGetLevel, _CARenderContextGetOptions, _CARenderContextGetPayloadSeed, _CARenderContextGetProcessId, _CARenderContextGetRequestsFrameStallSkip, _CARenderContextGetRootContextId, _CARenderContextGetRootLayer, _CARenderContextGetServerPort, _CARenderContextGetTaskIdToken, _CARenderContextGetTransactionSeed, _CARenderContextHitTest, - _CARenderContextHitTestForHostedContextSeparated, _CARenderContextHitTest_, - _CARenderContextInvalidateRect, _CARenderContextIsHosted, - _CARenderContextLock, _CARenderContextNeedsDeferUpdate, _CARenderContextNew, - _CARenderContextScheduleSerializeSnapshot, _CARenderContextSeparatedHitTest, - _CARenderContextSerializeFullSnapshot, _CARenderContextSetBeginTimeThreshold, + _CARenderContextHitTestForHostedContextSeparated, _CARenderContextInvalidateRect, + _CARenderContextIsHosted, _CARenderContextLock, _CARenderContextNeedsDeferUpdate, + _CARenderContextNew, _CARenderContextSeparatedHitTest, _CARenderContextSetBeginTimeThreshold, _CARenderContextSetCanZombify, _CARenderContextSetChameleonColor, - _CARenderContextSetDisplayInfo, _CARenderContextSetGPURegistryID, + _CARenderContextSetDisplayInfo, _CARenderContextSetEscapedLayerBlock, + _CARenderContextSetGPURegistryID, _CARenderContextSetReportFramingLayerBlock, _CARenderContextSetReportFramingPortsBlock, _CARenderContextSetSWSActive, _CARenderContextSetSeparatedShadowDirection, _CARenderContextSetSeparationEnabled, - _CARenderContextSetSerializer, _CARenderContextSetVisible, - _CARenderContextUnlock, _CARenderDeserializeAndReplaceAsset, - _CARenderDeserializeAsset, _CARenderDeserializeAssets, _CARenderDeserializeBytes, - _CARenderDeserializerDestroy, _CARenderDeserializerGetPayloadVersion, - _CARenderDeserializerNew, _CARenderDeserializerSetSeparatedIdModifier, + _CARenderContextSetVisible, _CARenderContextUnlock, _CARenderCopyStatistics, _CARenderGetGlobalFeatureFlags, _CARenderHitTestTreeDestroy, _CARenderHitTestTreeFetchRemoteEffectsInHierarchy, _CARenderHitTestTreeGetLayerGeometryParams, _CARenderHitTestTreeSeparatedHitTest, _CARenderImageBitsPerComponent, @@ -262,34 +257,28 @@ exports: _CARenderOGLSetScale, _CARenderOGLSetUpdateRect, _CARenderOGLSetUpdateRegion, _CARenderOGLWarmup, _CARenderPresentAcquire, _CARenderPresentRelease, _CARenderRegisterPluginVTable, _CARenderRelease, _CARenderRetain, - _CARenderSerializeRemoteToLocalContextId, _CARenderSerializerDebugString, - _CARenderSerializerDestroy, _CARenderSerializerDisableSerialization, - _CARenderSerializerEnableSerialization, _CARenderSerializerFreeAllEncodeAssets, - _CARenderSerializerFreeDebugString, _CARenderSerializerFreeEncodeAsset, - _CARenderSerializerFreeEncodeBytes, _CARenderSerializerGetEncodedAsset, - _CARenderSerializerGetOptions, _CARenderSerializerNew, _CARenderSerializerSetMode, - _CARenderSerializerSetOptions, _CARenderServerCaptureDisplay, - _CARenderServerCaptureDisplayClientList, _CARenderServerCaptureDisplayClientListWithTransform, - _CARenderServerCaptureDisplayClientListWithTransformList, + _CARenderServerCaptureDisplay, _CARenderServerCaptureDisplayClientList, + _CARenderServerCaptureDisplayClientListWithTransform, _CARenderServerCaptureDisplayClientListWithTransformList, _CARenderServerCaptureDisplayLayerWithTransformTimeOffsetAndFlags, _CARenderServerCaptureDisplayWithTransform, _CARenderServerCaptureLayer, _CARenderServerCaptureLayerWithTransform, _CARenderServerCaptureLayerWithTransformAndTimeOffset, _CARenderServerClearColorDebugOptions, _CARenderServerClearDebugOptions, - _CARenderServerContextRecorderAddContext, _CARenderServerContextRecorderConnectRemote, - _CARenderServerContextRecorderRemoveContext, _CARenderServerCopyODStatistics, - _CARenderServerCopyUpdateHistograms, _CARenderServerCreateSnapshots, - _CARenderServerDebugBrightness, _CARenderServerDebugFrameInfo, - _CARenderServerDebugPreset, _CARenderServerGetClientPort, + _CARenderServerCopyODStatistics, _CARenderServerCopyUpdateHistograms, + _CARenderServerCreateSnapshots, _CARenderServerDebugBrightness, + _CARenderServerDebugDisplayStateOldInterface, _CARenderServerDebugFrameInfo, + _CARenderServerDebugPreset, _CARenderServerFlushIRDC, _CARenderServerGetClientPort, _CARenderServerGetClientProcessId, _CARenderServerGetDebugFlags, _CARenderServerGetDebugOption, _CARenderServerGetDebugValue, _CARenderServerGetDebugValueFloat, _CARenderServerGetDirtyFrameCount, _CARenderServerGetDirtyFrameCountByIndex, _CARenderServerGetDisplayLogicalBounds, _CARenderServerGetFrameCounter, _CARenderServerGetFrameCounterByIndex, - _CARenderServerGetInfo, _CARenderServerGetMaxRenderableIOSurfaceSize, - _CARenderServerGetNeededAlignment, _CARenderServerGetPerformanceInfo, - _CARenderServerGetPort, _CARenderServerGetServerPort, _CARenderServerGetStatistics, - _CARenderServerIsRunning, _CARenderServerPostPowerLog, _CARenderServerPurgeServer, - _CARenderServerRegister, _CARenderServerRenderDisplay, _CARenderServerRenderDisplayClientList, + _CARenderServerGetInfo, _CARenderServerGetLocalArchivedLayerTree, + _CARenderServerGetMaxRenderableIOSurfaceSize, _CARenderServerGetNeededAlignment, + _CARenderServerGetPerformanceInfo, _CARenderServerGetPort, + _CARenderServerGetServerPort, _CARenderServerGetStatistics, + _CARenderServerGetVsyncOffSupportsRGBCompression, _CARenderServerIsRunning, + _CARenderServerPostPowerLog, _CARenderServerPurgeServer, _CARenderServerRegister, + _CARenderServerRenderDisplay, _CARenderServerRenderDisplayClientList, _CARenderServerRenderDisplayClientListWithTransform, _CARenderServerRenderDisplayClientListWithTransformList, _CARenderServerRenderDisplayLayerWithTransformAndTimeOffset, _CARenderServerRenderDisplayLayerWithTransformTimeOffsetAndFlags, @@ -298,7 +287,6 @@ exports: _CARenderServerSetCacheAsynchronousSurfaces, _CARenderServerSetDebugFlags, _CARenderServerSetDebugMessage, _CARenderServerSetDebugOption, _CARenderServerSetDebugValue, _CARenderServerSetDebugValueFloat, - _CARenderServerSetFlipBookEnabled, _CARenderServerSetFlipBookSuppressed, _CARenderServerSetMessageFile, _CARenderServerSetOverdriveLUTFile, _CARenderServerSetRootQueue, _CARenderServerSetScreenTelemetryParameters, _CARenderServerShutdown, _CARenderServerSnapshot, _CARenderServerStart, @@ -322,33 +310,33 @@ exports: _CARenderUpdateGetBeginTime, _CARenderUpdateGetBounds, _CARenderUpdateGetFlags, _CARenderUpdateGetMaxBitsPerChannel, _CARenderUpdateGetNextTime, _CARenderUpdateGetPrepareLayer0Count, _CARenderUpdateGetPrepareLayerCount, - _CARenderUpdateGetProtectionOptions, _CARenderUpdateGetProxyLayerCount, - _CARenderUpdateGetProxyLayerInfo, _CARenderUpdateGetSeed, + _CARenderUpdateGetProtectionOptions, _CARenderUpdateGetSeed, _CARenderUpdateGetTime, _CARenderUpdateGetTimeStamp, _CARenderUpdateGetUnobscuredRegionOfInterest, - _CARenderUpdateGetVersionedProxyLayerInfo, _CARenderUpdateGetWindowServerAwareBackdropCount, - _CARenderUpdateHasChameleonLayers, _CARenderUpdateInvalidateBackdrops, - _CARenderUpdateInvalidateDetachedLayers, _CARenderUpdatePrintTrees, - _CARenderUpdateRemoveContextNode, _CARenderUpdateResetNextTime, - _CARenderUpdateSetActiveRemoteEffectLayersForContext, _CARenderUpdateSetAllowsHostedContexts, - _CARenderUpdateSetCurrentRenderSeparatedId, _CARenderUpdateSetDirtyHandles, - _CARenderUpdateSetDisplayAttributes, _CARenderUpdateSetDisplayType, - _CARenderUpdateSetDisplays, _CARenderUpdateSetEDRAttributes, - _CARenderUpdateSetExcludedLayerIdentifiers, _CARenderUpdateSetInterval, - _CARenderUpdateSetIsDisplayStream, _CARenderUpdateSetIsolated, - _CARenderUpdateSetProtectionOptions, _CARenderUpdateSetRect, - _CARenderUpdateSetRegion, _CARenderUpdateSetRegionAndInvalidateBackdrops, + _CARenderUpdateGetWindowServerAwareBackdropCount, _CARenderUpdateHasChameleonLayers, + _CARenderUpdateInvalidateBackdrops, _CARenderUpdateInvalidateDetachedLayers, + _CARenderUpdatePrintTrees, _CARenderUpdateRemoveContextNode, + _CARenderUpdateResetNextTime, _CARenderUpdateSetActiveRemoteEffectLayersForContext, + _CARenderUpdateSetAllowsHostedContexts, _CARenderUpdateSetCurrentRenderSeparatedId, + _CARenderUpdateSetDirtyHandles, _CARenderUpdateSetDisplayAttributes, + _CARenderUpdateSetDisplayType, _CARenderUpdateSetDisplays, + _CARenderUpdateSetEDRAttributes, _CARenderUpdateSetExcludedLayerIdentifiers, + _CARenderUpdateSetInterval, _CARenderUpdateSetIsDisplayStream, + _CARenderUpdateSetIsolated, _CARenderUpdateSetProtectionOptions, + _CARenderUpdateSetRect, _CARenderUpdateSetRegion, _CARenderUpdateSetRegionAndInvalidateBackdrops, _CARenderUpdateSetSkipsBackdropCollect, _CARenderUpdateSetStartTime, - _CARenderUpdateSetVBLTime, _CARenderUpdateSetVRRMinRate, _CARenderUpdateValidateRestrictedLayerHosts, + _CARenderUpdateSetTonemapAccelerator, _CARenderUpdateSetVBLTime, + _CARenderUpdateSetVRRMinRate, _CARenderUpdateValidateRestrictedLayerHosts, _CASeparatedOptionMetadataCreate, _CASeparatedOptionMetadataGetDefaultValue, _CASeparatedOptionMetadataGetName, _CASeparatedProxyCreate, _CASeparatedProxyGetFlags, _CASeparatedProxyGetTypeID, _CASeparatedProxyGetUserData, _CASeparatedProxyGetValidID, _CASeparatedProxySetValidID, _CASetDebugFlags, _CASetDebugMessage, _CASetDebugOption, _CASetDebugValue, _CASetDebugValueFloat, _CASetDebugValueOSType, _CASetLUTFile, - _CASetMessageFile, _CASetMessageFunction, _CASetScreenTelemetryInterval, - _CASetScreenTelemetryParameters, _CATransform3DConcat, _CATransform3DConcatAffineTransform, - _CATransform3DConcatAffineTransform_, _CATransform3DConcat_, - _CATransform3DEqualToTransform, _CATransform3DEqualToTransform_, + _CASetMessageFile, _CASetMessageFunction, _CASupportsFeature, + _CASupportsFullyOpaqueIgnoringEscapement, _CAToneMapModeAutomatic, + _CAToneMapModeIfSupported, _CAToneMapModeNever, _CATransform3DConcat, + _CATransform3DConcatAffineTransform, _CATransform3DConcatAffineTransform_, + _CATransform3DConcat_, _CATransform3DEqualToTransform, _CATransform3DEqualToTransform_, _CATransform3DGetAffineTransform, _CATransform3DGetAffineTransform_, _CATransform3DGetDecomposition_, _CATransform3DGetSIMDDouble3x3, _CATransform3DGetSIMDDouble4x4, _CATransform3DGetSIMDFloat3x3, @@ -361,26 +349,29 @@ exports: _CATransform3DMakeWithSIMDDouble3x3, _CATransform3DMakeWithSIMDDouble4x4, _CATransform3DMakeWithSIMDFloat3x3, _CATransform3DMakeWithSIMDFloat4x4, _CATransform3DRotate, _CATransform3DRotate_, _CATransform3DScale, - _CATransform3DScale_, _CATransform3DTranslate, _CATransform3DTranslateRight, - _CATransform3DTranslateRight_, _CATransform3DTranslate_, _CAViewBeginDraw, - _CAViewCreate, _CAViewDestroy, _CAViewDisableAsyncDrawing, - _CAViewDraw, _CAViewEnableAsyncDrawing, _CAViewEndDraw, _CAViewGetCIFilterBehavior, - _CAViewGetColorSpace, _CAViewGetContext, _CAViewGetGlobalFlags, - _CAViewGetLayer, _CAViewGetPixelFormat, _CAViewGetRendererFeatures, - _CAViewGetTypeID, _CAViewInvalidateRect, _CAViewSetCIFilterBehavior, - _CAViewSetColorSpace, _CAViewSetGlobalFlags, _CAViewSetLayer, - _CAViewSetPixelFormat, _CAViewSetRendererFeatures, _CAViewUpdate, - _CAViewUpdate2, _CAWindowContextDelegateCreate, _CAXPCImageQueueCommandForMessage, + _CATransform3DScale_, _CATransform3DSetDecomposition_, _CATransform3DTranslate, + _CATransform3DTranslateRight, _CATransform3DTranslateRight_, + _CATransform3DTranslate_, _CAViewBeginDraw, _CAViewCreate, + _CAViewDestroy, _CAViewDisableAsyncDrawing, _CAViewDraw, _CAViewEnableAsyncDrawing, + _CAViewEndDraw, _CAViewGetCIFilterBehavior, _CAViewGetColorSpace, + _CAViewGetContext, _CAViewGetGlobalFlags, _CAViewGetLayer, + _CAViewGetPixelFormat, _CAViewGetRendererFeatures, _CAViewGetTypeID, + _CAViewInvalidateRect, _CAViewSetCIFilterBehavior, _CAViewSetColorSpace, + _CAViewSetGlobalFlags, _CAViewSetLayer, _CAViewSetPixelFormat, + _CAViewSetRendererFeatures, _CAViewUpdate, _CAViewUpdate2, + _CAWindowContextDelegateCreate, _CAXPCImageQueueCommandForMessage, _CAXPCImageQueueCreate, _CAXPCImageQueueReceiverCreate, _CAXPCImageQueueReceiverCreateSampleForTime, _CAXPCImageQueueReceiverGetIdentifier, _CAXPCImageQueueReceiverGetImageCount, _CAXPCImageQueueReceiverProcessMessage, _CAXPCImageQueueReceiverSetDisplayedPixelCount, _CAXPCImageQueueReceiverSetProperty, _CAXPCImageQueueSampleFinish, _CAXPCImageQueueSampleGetDisplayCount, _CAXPCImageQueueSampleGetIOSurface, - _CAXPCImageQueueSampleGetTimestamp, _CA_CGPointApplyTransform, - _CA_CGPointApplyTransform_, _CA_CGPointUnapplyInverseTransform, + _CAXPCImageQueueSampleGetTimestamp, _CAXPCImageQueueSampleIsLowLatency, + _CA_CGPointApplyTransform, _CA_CGPointApplyTransform_, _CA_CGPointUnapplyInverseTransform, _CA_CGPointUnapplyInverseTransform_, _CA_CGRectApplyTransform, _CA_CGRectApplyTransform_, _CA_CGRectUnapplyInverseTransform, - _CA_CGRectUnapplyInverseTransform_, _QuartzCoreVersionNumber, + _CA_CGRectUnapplyInverseTransform_, _NSStringFromCADisplayPowerAssertionReason, + _NSStringFromCADisplayPowerState, _NSStringFromCADisplayState, + _NSStringFromCADisplayStateTransitionStatus, _QuartzCoreVersionNumber, _QuartzCoreVersionString, _kCAAlignmentCenter, _kCAAlignmentJustified, _kCAAlignmentLeft, _kCAAlignmentNatural, _kCAAlignmentRight, _kCAAnimationAbsolute, _kCAAnimationCubic, _kCAAnimationCubicPaced, @@ -397,24 +388,25 @@ exports: _kCABrightnessNotificationPowerOn, _kCABrightnessNotificationRequestEDR, _kCABrightnessRequestEDRHeadroom, _kCABrightnessRequestRampDuration, _kCABrightnessSyncNotificationDidChangeFlipBookState, _kCABrightnessSyncNotificationDidChangePowerState, - _kCABrightnessSyncNotificationEventState, _kCABrightnessSyncNotificationWillChangeFlipBookState, - _kCABrightnessSyncNotificationWillChangePowerState, _kCABrightnessTransactionPresentationTime, - _kCACFAnimationCubic, _kCACFAnimationCubicPaced, _kCACFAnimationDiscrete, - _kCACFAnimationGroup, _kCACFAnimationLinear, _kCACFAnimationPaced, - _kCACFAnimationRotateAuto, _kCACFAnimationRotateAutoReverse, - _kCACFBasicAnimation, _kCACFContentsFormatGray8, _kCACFContentsFormatRGBA8, - _kCACFContentsFormatRGBAh, _kCACFContentsScalingRepeat, _kCACFContentsScalingStretch, - _kCACFContextBitsPerComponentHint, _kCACFContextDefinesDisplayBounds, - _kCACFContextDisplayFilter, _kCACFContextDisplayId, _kCACFContextDisplayName, - _kCACFContextIgnoresHitTest, _kCACFContextPortName, _kCACFContextPortNumber, - _kCACFFillModeBackwards, _kCACFFillModeBoth, _kCACFFillModeForwards, - _kCACFFillModeRemoved, _kCACFFilterLanczos, _kCACFFilterLinear, - _kCACFFilterNearest, _kCACFFilterTrilinear, _kCACFGravityBottom, - _kCACFGravityBottomLeft, _kCACFGravityBottomRight, _kCACFGravityCenter, - _kCACFGravityLeft, _kCACFGravityResize, _kCACFGravityResizeAspect, - _kCACFGravityResizeAspectFill, _kCACFGravityRight, _kCACFGravityTop, - _kCACFGravityTopLeft, _kCACFGravityTopRight, _kCACFKeyframeAnimation, - _kCACFLayer, _kCACFLayerHost, _kCACFPluginLayer, _kCACFSpringAnimation, + _kCABrightnessSyncNotificationEventState, _kCABrightnessSyncNotificationFromHotplug, + _kCABrightnessSyncNotificationWillChangeFlipBookState, _kCABrightnessSyncNotificationWillChangePowerState, + _kCABrightnessTransactionPresentationTime, _kCACFAnimationCubic, + _kCACFAnimationCubicPaced, _kCACFAnimationDiscrete, _kCACFAnimationGroup, + _kCACFAnimationLinear, _kCACFAnimationPaced, _kCACFAnimationRotateAuto, + _kCACFAnimationRotateAutoReverse, _kCACFBasicAnimation, _kCACFContentsFormatGray8, + _kCACFContentsFormatRGBA8, _kCACFContentsFormatRGBAh, _kCACFContentsScalingRepeat, + _kCACFContentsScalingStretch, _kCACFContextBitsPerComponentHint, + _kCACFContextDefinesDisplayBounds, _kCACFContextDisplayFilter, + _kCACFContextDisplayId, _kCACFContextDisplayName, _kCACFContextIgnoresHitTest, + _kCACFContextPortName, _kCACFContextPortNumber, _kCACFFillModeBackwards, + _kCACFFillModeBoth, _kCACFFillModeForwards, _kCACFFillModeRemoved, + _kCACFFilterLanczos, _kCACFFilterLinear, _kCACFFilterNearest, + _kCACFFilterTrilinear, _kCACFGravityBottom, _kCACFGravityBottomLeft, + _kCACFGravityBottomRight, _kCACFGravityCenter, _kCACFGravityLeft, + _kCACFGravityResize, _kCACFGravityResizeAspect, _kCACFGravityResizeAspectFill, + _kCACFGravityRight, _kCACFGravityTop, _kCACFGravityTopLeft, + _kCACFGravityTopRight, _kCACFKeyframeAnimation, _kCACFLayer, + _kCACFLayerHost, _kCACFPluginLayer, _kCACFSpringAnimation, _kCACFTimingFunctionDefault, _kCACFTimingFunctionEaseIn, _kCACFTimingFunctionEaseInEaseOut, _kCACFTimingFunctionEaseOut, _kCACFTimingFunctionLinear, _kCACFTransformLayer, _kCACFTransition, _kCACFTransitionFade, _kCACFTransitionFromBottom, @@ -443,20 +435,22 @@ exports: _kCAContextRegisterSeparatedCallbacksCreateCache, _kCAContextRegisterSeparatedCallbacksDrawInContext, _kCAContextRegisterSeparatedCallbacksFinalizeContext, _kCAContextReversesContentsAreFlippedInCatalystEnvironment, _kCAContextSecure, _kCAContextSerializeLayerCreateCache, _kCAContextSerializeLayerDrawInContext, - _kCAContextSerializeLayerFinalizeContext, _kCACornerCurveCircular, - _kCACornerCurveContinuous, _kCACornerCurveID0, _kCADebugOptionsDidChange, - _kCADepthNormalizationAverage, _kCADepthNormalizationHeight, - _kCADepthNormalizationMax, _kCADepthNormalizationMin, _kCADepthNormalizationNone, - _kCADepthNormalizationWidth, _kCADisplayAuto, _kCADisplayClonedFrameCount, - _kCADisplayDeviceName, _kCADisplayDirtyFrameCount, _kCADisplayDolbyVision, - _kCADisplayDolbyVisionLowLatency, _kCADisplayDolbyVisionNative, - _kCADisplayDolbyVisionTunneled, _kCADisplayFrameCount, _kCADisplayHDR10RGBFullRange, - _kCADisplayHDR10YCbCr420, _kCADisplayHDR10YCbCr420LimitedRange, - _kCADisplayHDR10YCbCr422, _kCADisplayHDR10YCbCr422LimitedRange, - _kCADisplayHDR10YCbCr444LimitedRange, _kCADisplayId, _kCADisplayInsetBounds, - _kCADisplayModeDolby, _kCADisplayModeGamutBT2020, _kCADisplayModeGamutP3, - _kCADisplayModeGamutSRGB, _kCADisplayModeHDR10, _kCADisplayModeHLG, - _kCADisplayModeSDR, _kCADisplayName, _kCADisplayNone, _kCADisplayOrientationRotation0, + _kCAContextSerializeLayerFinalizeContext, _kCAContextStartValidatingSecurityOfSuperlayers, + _kCAContextStopValidatingSecurityOfSuperlayers, _kCACornerCurveCircular, + _kCACornerCurveContinuous, _kCACornerCurveID0, _kCACornerCurveID1, + _kCADebugOptionsDidChange, _kCADepthNormalizationAverage, + _kCADepthNormalizationHeight, _kCADepthNormalizationMax, _kCADepthNormalizationMin, + _kCADepthNormalizationNone, _kCADepthNormalizationWidth, _kCADisplayAuto, + _kCADisplayClonedFrameCount, _kCADisplayDeviceName, _kCADisplayDirtyFrameCount, + _kCADisplayDolbyVision, _kCADisplayDolbyVisionLowLatency, + _kCADisplayDolbyVisionNative, _kCADisplayDolbyVisionTunneled, + _kCADisplayFrameCount, _kCADisplayHDR10RGBFullRange, _kCADisplayHDR10YCbCr420, + _kCADisplayHDR10YCbCr420LimitedRange, _kCADisplayHDR10YCbCr422, + _kCADisplayHDR10YCbCr422LimitedRange, _kCADisplayHDR10YCbCr444LimitedRange, + _kCADisplayId, _kCADisplayInsetBounds, _kCADisplayModeDolby, + _kCADisplayModeGamutBT2020, _kCADisplayModeGamutP3, _kCADisplayModeGamutSRGB, + _kCADisplayModeHDR10, _kCADisplayModeHLG, _kCADisplayModeSDR, + _kCADisplayName, _kCADisplayNone, _kCADisplayOrientationRotation0, _kCADisplayOrientationRotation180, _kCADisplayOrientationRotation270, _kCADisplayOrientationRotation90, _kCADisplayRGBFullRange, _kCADisplayRGBLimitedRange, _kCADisplayScaleContent, _kCADisplaySkippedClonedFrameCount, @@ -483,44 +477,47 @@ exports: _kCAEmitterLayerVolume, _kCAFillModeBackwards, _kCAFillModeBoth, _kCAFillModeForwards, _kCAFillModeFrozen, _kCAFillModeRemoved, _kCAFillRuleEvenOdd, _kCAFillRuleNonZero, _kCAFilterASG, _kCAFilterASG77, - _kCAFilterAlphaThreshold, _kCAFilterAverageColor, _kCAFilterBias, - _kCAFilterBox, _kCAFilterBox16Taps, _kCAFilterBox8Taps, _kCAFilterClear, + _kCAFilterAlphaSmoothThreshold, _kCAFilterAlphaThreshold, + _kCAFilterAverageColor, _kCAFilterBias, _kCAFilterBox, _kCAFilterBox16Taps, + _kCAFilterBox8Taps, _kCAFilterChromaticAberration, _kCAFilterClear, _kCAFilterColorAdd, _kCAFilterColorBlendMode, _kCAFilterColorBrightness, _kCAFilterColorBurnBlendMode, _kCAFilterColorContrast, _kCAFilterColorDodgeBlendMode, _kCAFilterColorHueRotate, _kCAFilterColorInvert, _kCAFilterColorMatrix, _kCAFilterColorMonochrome, _kCAFilterColorSaturate, _kCAFilterColorSubtract, _kCAFilterCompressLuminance, _kCAFilterCopy, _kCAFilterCubic, _kCAFilterCurves, _kCAFilterDarkenBlendMode, _kCAFilterDarkenSourceOver, - _kCAFilterDest, _kCAFilterDestAtop, _kCAFilterDestIn, _kCAFilterDestOut, - _kCAFilterDestOutPassthrough, _kCAFilterDestOver, _kCAFilterDifferenceBlendMode, - _kCAFilterDistanceField, _kCAFilterDivideBlendMode, _kCAFilterEDRGain, - _kCAFilterEDRGainMultiply, _kCAFilterExclusionBlendMode, _kCAFilterGaussianBlur, - _kCAFilterHardLightBlendMode, _kCAFilterHueBlendMode, _kCAFilterInputAddWhite, - _kCAFilterInputAllowsGroup, _kCAFilterInputAlphaValues, _kCAFilterInputAmount, - _kCAFilterInputAngle, _kCAFilterInputAspectRatio, _kCAFilterInputBackColor0, - _kCAFilterInputBackColor1, _kCAFilterInputBackEnabled, _kCAFilterInputBias, - _kCAFilterInputBlueValues, _kCAFilterInputBounds, _kCAFilterInputColor, - _kCAFilterInputColor0, _kCAFilterInputColor1, _kCAFilterInputColorMap, - _kCAFilterInputColorMatrix, _kCAFilterInputDither, _kCAFilterInputEndAngle, - _kCAFilterInputFrontColor, _kCAFilterInputFrontEnabled, _kCAFilterInputGreenValues, - _kCAFilterInputHSVSpace, _kCAFilterInputHardEdges, _kCAFilterInputIntermediateBitDepth, + _kCAFilterDest, _kCAFilterDestAtop, _kCAFilterDestIn, _kCAFilterDestLuminosityClamp, + _kCAFilterDestOut, _kCAFilterDestOutPassthrough, _kCAFilterDestOver, + _kCAFilterDifferenceBlendMode, _kCAFilterDistanceField, _kCAFilterDivideBlendMode, + _kCAFilterEDRGain, _kCAFilterEDRGainMultiply, _kCAFilterExclusionBlendMode, + _kCAFilterGaussianBlur, _kCAFilterHardLightBlendMode, _kCAFilterHueBlendMode, + _kCAFilterInputAddWhite, _kCAFilterInputAllowsGroup, _kCAFilterInputAlphaValues, + _kCAFilterInputAmount, _kCAFilterInputAngle, _kCAFilterInputAspectRatio, + _kCAFilterInputBackColor0, _kCAFilterInputBackColor1, _kCAFilterInputBackEnabled, + _kCAFilterInputBias, _kCAFilterInputBlueOffset, _kCAFilterInputBlueValues, + _kCAFilterInputBounds, _kCAFilterInputColor, _kCAFilterInputColor0, + _kCAFilterInputColor1, _kCAFilterInputColorMap, _kCAFilterInputColorMatrix, + _kCAFilterInputDither, _kCAFilterInputEnd, _kCAFilterInputEndAngle, + _kCAFilterInputExtendEdges, _kCAFilterInputFrontColor, _kCAFilterInputFrontEnabled, + _kCAFilterInputGreenOffset, _kCAFilterInputGreenValues, _kCAFilterInputHSVSpace, + _kCAFilterInputHardEdges, _kCAFilterInputIntermediateBitDepth, _kCAFilterInputLinear, _kCAFilterInputNormalizeEdges, _kCAFilterInputNormalizeEdgesTransparent, _kCAFilterInputOverlayOpacity, _kCAFilterInputPremultipliedValues, - _kCAFilterInputQuality, _kCAFilterInputRadius, _kCAFilterInputRedValues, - _kCAFilterInputReversed, _kCAFilterInputScale, _kCAFilterInputShadowBounds, - _kCAFilterInputShadowColor, _kCAFilterInputStartAngle, _kCAFilterInputTime, - _kCAFilterInputValues, _kCAFilterInputValuesTransparent, _kCAFilterLanczos, - _kCAFilterLanczosResize, _kCAFilterLightenBlendMode, _kCAFilterLightenSourceOver, - _kCAFilterLimitAveragePixelLuminance, _kCAFilterLinear, _kCAFilterLinearBurnBlendMode, - _kCAFilterLinearDodgeBlendMode, _kCAFilterLinearLightBlendMode, - _kCAFilterLinearlySampledLinear, _kCAFilterLuminanceCurveMap, - _kCAFilterLuminanceMap, _kCAFilterLuminanceToAlpha, _kCAFilterLuminosityBlendMode, - _kCAFilterLut, _kCAFilterMaximum, _kCAFilterMeteor, _kCAFilterMinimum, - _kCAFilterMultiply, _kCAFilterMultiplyBlendMode, _kCAFilterMultiplyColor, - _kCAFilterNearest, _kCAFilterNormalBlendMode, _kCAFilterOpacityPair, - _kCAFilterOverlayBlendMode, _kCAFilterPageCurl, _kCAFilterPinLightBlendMode, - _kCAFilterPlusD, _kCAFilterPlusDIgnoreAlpha, _kCAFilterPlusL, - _kCAFilterPlusLIgnoreAlpha, _kCAFilterPlusLIgnoreAlphaSourceOverBlend, + _kCAFilterInputQuality, _kCAFilterInputRadius, _kCAFilterInputRedOffset, + _kCAFilterInputRedValues, _kCAFilterInputReversed, _kCAFilterInputScale, + _kCAFilterInputShadowBounds, _kCAFilterInputShadowColor, _kCAFilterInputStart, + _kCAFilterInputStartAngle, _kCAFilterInputTime, _kCAFilterInputValues, + _kCAFilterInputValuesTransparent, _kCAFilterLanczos, _kCAFilterLanczosResize, + _kCAFilterLightenBlendMode, _kCAFilterLightenSourceOver, _kCAFilterLimitAveragePixelLuminance, + _kCAFilterLinear, _kCAFilterLinearBurnBlendMode, _kCAFilterLinearDodgeBlendMode, + _kCAFilterLinearLightBlendMode, _kCAFilterLinearlySampledLinear, + _kCAFilterLuminanceCurveMap, _kCAFilterLuminanceMap, _kCAFilterLuminanceToAlpha, + _kCAFilterLuminosityBlendMode, _kCAFilterLut, _kCAFilterMaximum, + _kCAFilterMeteor, _kCAFilterMinimum, _kCAFilterMultiply, _kCAFilterMultiplyBlendMode, + _kCAFilterMultiplyColor, _kCAFilterNearest, _kCAFilterNormalBlendMode, + _kCAFilterOpacityPair, _kCAFilterOverlayBlendMode, _kCAFilterPageCurl, + _kCAFilterPinLightBlendMode, _kCAFilterPlusD, _kCAFilterPlusDIgnoreAlpha, + _kCAFilterPlusL, _kCAFilterPlusLIgnoreAlpha, _kCAFilterPlusLIgnoreAlphaSourceOverBlend, _kCAFilterSDRNormalize, _kCAFilterSRL, _kCAFilterSaturationBlendMode, _kCAFilterScreenBlendMode, _kCAFilterSoftLightBlendMode, _kCAFilterSourceAtop, _kCAFilterSourceIn, _kCAFilterSourceOut, _kCAFilterSourceOver, @@ -535,12 +532,13 @@ exports: _kCAGravityRight, _kCAGravityTop, _kCAGravityTopLeft, _kCAGravityTopRight, _kCAImageQueueCapacity, _kCAImageQueueIdentifier, _kCAImageQueueReceiverDisplayRefreshRate, _kCALayerContentsSwizzleAAAA, _kCALayerContentsSwizzleRGBA, - _kCALayerOptimizationDescription, _kCALayerOptimizationName, - _kCALayerOptimizationType, _kCALayerRegisterSeparatedCallbacksKeyAddedToNewSuperlayer, + _kCALayerCornerRadiusAutomaticPill, _kCALayerOptimizationDescription, + _kCALayerOptimizationName, _kCALayerOptimizationType, _kCALayerRegisterSeparatedCallbacksKeyAddedToNewSuperlayer, _kCALayerRegisterSeparatedCallbacksKeyRemoveFromSuperlayer, _kCALayerRegisterSeparatedCallbacksKeyReplaceSublayerWith, _kCALayerRegisterSeparatedCallbacksKeySetHidden, _kCALayerRegisterSeparatedCallbacksKeySetSeparated, _kCALayerRegisterSeparatedCallbacksKeySetSeparatedState, _kCALayerRegisterSeparatedCallbacksKeySetSublayers, + _kCALayerRegisterSeparatedCallbacksKeyTransformRelatedPropertyModified, _kCALayerReverseSerializationOptionContextColorspace, _kCALayerSecurityModeInsecure, _kCALayerSecurityModeSecure, _kCALayerSecurityModeUnrestricted, _kCALayerSeparatedOptionBifurcationScale, _kCALayerSeparatedOptionContextData, @@ -548,17 +546,16 @@ exports: _kCALayerSeparatedOptionMarkerId, _kCALayerSeparatedOptionPorts, _kCALayerSeparatedOptionSeparatedId, _kCALineCapButt, _kCALineCapRound, _kCALineCapSquare, _kCALineJoinBevel, _kCALineJoinMiter, _kCALineJoinRound, - _kCAMLWriterSrc, _kCAMediaTimingFunctionDefault, _kCAMediaTimingFunctionEaseIn, - _kCAMediaTimingFunctionEaseInEaseOut, _kCAMediaTimingFunctionEaseOut, - _kCAMediaTimingFunctionLinear, _kCAMetalLayerPresentTimeInterval, - _kCAMetalLayerPresentationMode, _kCAOnOrderIn, _kCAOnOrderOut, - _kCAPackageOptionPrepareContents, _kCAPackageTypeArchive, - _kCAPackageTypeCAMLBundle, _kCAPackageTypeCAMLFile, _kCAProxyLayerActive, - _kCAProxyLayerBlendMode, _kCAProxyLayerLevel, _kCAProxyLayerMaterial, - _kCAProxyLayerSaturation, _kCAProxyLayerSelectionTintColor, + _kCAMLWriterLoadAsHDR, _kCAMLWriterSrc, _kCAMediaTimingFunctionDefault, + _kCAMediaTimingFunctionEaseIn, _kCAMediaTimingFunctionEaseInEaseOut, + _kCAMediaTimingFunctionEaseOut, _kCAMediaTimingFunctionLinear, + _kCAMetalLayerPresentTimeInterval, _kCAMetalLayerPresentationMode, + _kCAOnOrderIn, _kCAOnOrderOut, _kCAPackageOptionPrepareContents, + _kCAPackageTypeArchive, _kCAPackageTypeCAMLBundle, _kCAPackageTypeCAMLFile, + _kCAProxyLayerActive, _kCAProxyLayerBlendMode, _kCAProxyLayerLevel, + _kCAProxyLayerMaterial, _kCAProxyLayerSaturation, _kCAProxyLayerSelectionTintColor, _kCARemoteEffectStateIdle, _kCARenderCGLCallbacks, _kCARenderCGLCallbacksRef, - _kCARenderCGLSCallbacks, _kCARenderCGLSCallbacksRef, _kCARenderMetalCallbacks, - _kCARenderMetalCallbacksRef, _kCARenderMetalServerCallbacks, + _kCARenderMetalCallbacks, _kCARenderMetalCallbacksRef, _kCARenderMetalServerCallbacks, _kCARenderMetalServerCallbacksRef, _kCARenderNullCallbacksRef, _kCARenderSoftwareCallbacks, _kCARenderSoftwareCallbacksRef, _kCARendererClearsDestination, _kCARendererColorSpace, _kCARendererDeepBuffers, @@ -568,8 +565,9 @@ exports: _kCASecureModeViolationLayerNames, _kCASecureModeViolationProcessId, _kCASnapshotBeforeSlotId, _kCASnapshotBottomLeftOrigin, _kCASnapshotContextId, _kCASnapshotContextList, _kCASnapshotDestination, _kCASnapshotDisplayName, - _kCASnapshotEnableIgnoreAlphaFilters, _kCASnapshotEnforceSecureMode, - _kCASnapshotFormatOpaque, _kCASnapshotFormatWideGamut, _kCASnapshotIgnoreDisableUpdateMasks, + _kCASnapshotDisplaySystemIdentifier, _kCASnapshotEnableIgnoreAlphaFilters, + _kCASnapshotEnforceSecureMode, _kCASnapshotFormatOpaque, _kCASnapshotFormatWideGamut, + _kCASnapshotIgnoreContextualAssistanceLayers, _kCASnapshotIgnoreDisableUpdateMasks, _kCASnapshotIgnoreLayerFixup, _kCASnapshotIgnoreRootAccessibilityFilters, _kCASnapshotIgnoreSublayers, _kCASnapshotLayerId, _kCASnapshotMapCacheAttribute, _kCASnapshotMode, _kCASnapshotModeDisplay, _kCASnapshotModeExcludeContextList, @@ -578,28 +576,29 @@ exports: _kCASnapshotOriginX, _kCASnapshotOriginY, _kCASnapshotReuseBackdropContents, _kCASnapshotSelfGenerated, _kCASnapshotSizeHeight, _kCASnapshotSizeWidth, _kCASnapshotTimeOffset, _kCASnapshotTrackBackdropReuseFailures, - _kCASnapshotTransform, _kCASubtypeAngle, _kCASubtypeBool, - _kCASubtypeColorMatrix, _kCASubtypeCornerRadii, _kCASubtypeDistance, - _kCASubtypeEnum, _kCASubtypeFloat, _kCASubtypeInt, _kCASubtypePercentage, - _kCASubtypePoint, _kCASubtypePoint3D, _kCASubtypeRect, _kCASubtypeSize, - _kCASubtypeTime, _kCASubtypeTimeInterval, _kCASubtypeTransform, - _kCATiledLayerDisableFade, _kCATiledLayerOnlyIfNull, _kCATiledLayerRemoveImmediately, - _kCATiledLayerUncollectable, _kCATransactionAnimatesFromModelValues, - _kCATransactionAnimationDelegate, _kCATransactionAnimationDuration, - _kCATransactionAnimationTimingFunction, _kCATransactionCommitTime, - _kCATransactionCompletionBlock, _kCATransactionDisableActions, - _kCATransactionEarliestAutomaticCommitTime, _kCATransactionInputTime, - _kCATransition, _kCATransitionFade, _kCATransitionFromBottom, - _kCATransitionFromLeft, _kCATransitionFromRight, _kCATransitionFromTop, - _kCATransitionMoveIn, _kCATransitionPush, _kCATransitionReveal, - _kCATruncationEnd, _kCATruncationMiddle, _kCATruncationNone, - _kCATruncationStart, _kCAValueFunctionRotateX, _kCAValueFunctionRotateY, - _kCAValueFunctionRotateZ, _kCAValueFunctionScale, _kCAValueFunctionScaleX, - _kCAValueFunctionScaleXY, _kCAValueFunctionScaleXYZ, _kCAValueFunctionScaleY, - _kCAValueFunctionScaleZ, _kCAValueFunctionTranslate, _kCAValueFunctionTranslateX, - _kCAValueFunctionTranslateY, _kCAValueFunctionTranslateZ, - _kCAVirtualDisplayHeight, _kCAVirtualDisplayPixelFormat, _kCAVirtualDisplayPixelFormatFollowsMode, - _kCAVirtualDisplayUpdateRate, _kCAVirtualDisplayWidth, _kCAWindowServerClone_CaptureDisplay, + _kCASnapshotTransform, _kCASnapshotWantsHDR, _kCASubtypeAngle, + _kCASubtypeBool, _kCASubtypeColorMatrix, _kCASubtypeCornerRadii, + _kCASubtypeDistance, _kCASubtypeEnum, _kCASubtypeFloat, _kCASubtypeInt, + _kCASubtypePercentage, _kCASubtypePoint, _kCASubtypePoint3D, + _kCASubtypeRect, _kCASubtypeSize, _kCASubtypeTime, _kCASubtypeTimeInterval, + _kCASubtypeTransform, _kCATiledLayerDisableFade, _kCATiledLayerOnlyIfNull, + _kCATiledLayerRemoveImmediately, _kCATiledLayerUncollectable, + _kCATransactionAnimatesFromModelValues, _kCATransactionAnimationDelegate, + _kCATransactionAnimationDuration, _kCATransactionAnimationTimingFunction, + _kCATransactionCommitTime, _kCATransactionCompletionBlock, + _kCATransactionDisableActions, _kCATransactionEarliestAutomaticCommitTime, + _kCATransactionInputTime, _kCATransition, _kCATransitionFade, + _kCATransitionFromBottom, _kCATransitionFromLeft, _kCATransitionFromRight, + _kCATransitionFromTop, _kCATransitionMoveIn, _kCATransitionPush, + _kCATransitionReveal, _kCATruncationEnd, _kCATruncationMiddle, + _kCATruncationNone, _kCATruncationStart, _kCAValueFunctionRotateX, + _kCAValueFunctionRotateY, _kCAValueFunctionRotateZ, _kCAValueFunctionScale, + _kCAValueFunctionScaleX, _kCAValueFunctionScaleXY, _kCAValueFunctionScaleXYZ, + _kCAValueFunctionScaleY, _kCAValueFunctionScaleZ, _kCAValueFunctionTranslate, + _kCAValueFunctionTranslateX, _kCAValueFunctionTranslateY, + _kCAValueFunctionTranslateZ, _kCAVirtualDisplayHeight, _kCAVirtualDisplayPixelFormat, + _kCAVirtualDisplayPixelFormatFollowsMode, _kCAVirtualDisplayUpdateRate, + _kCAVirtualDisplayWidth, _kCAWindowServerClone_CaptureDisplay, _kCAWindowServerClone_DisableOverscan, _kCAWindowServerClone_DisableRotation, _kCAWindowServerClone_DisableScaling, _kCAWindowServerClone_DisableYUV, _kCAWindowServerClone_NoReplayScaling, _kCAWindowServerClone_ReplayContexts, @@ -636,46 +635,52 @@ exports: _kCAWindowServerTVSignalType_None, _kCAXPCImageQueueSampleDisplayCount, _kCAXPCImageQueueSampleDisplayInterval, _kCAXPCImageQueueSampleDuration, _kCAXPCImageQueueSampleHostMachTime, _kCAXPCImageQueueSampleLocalLayerTime, - _kCAXPCImageQueueSamplePresentationMachTime ] + _kCAXPCImageQueueSamplePresentationMachTime, _save_iosurface_as_png ] objc-classes: [ CAAnimation, CAAnimationGroup, CABackdropLayer, CABasicAnimation, - CABoxLayoutManager, CAChameleonLayer, CAConstraint, CAConstraintLayoutManager, - CAContentStream, CAContentStreamFrame, CAContentStreamOptions, - CAContext, CADisplay, CADisplayAttributes, CADisplayLink, - CADisplayMode, CADisplayModeCriteria, CADisplayPreferences, - CADisplayProperties, CADistanceFieldLayer, CAEAGLLayer, CAEDRMetadata, - CAEmitterBehavior, CAEmitterCell, CAEmitterLayer, CAExternalAnimation, - CAFenceHandle, CAFilter, CAFrameRateRangeGroup, CAGradientLayer, - CAKeyframeAnimation, CALayer, CALayerHost, CALinearMaskLayer, - CALocalDisplay, CAMLParser, CAMLWriter, CAMatchMoveAnimation, - CAMatchPropertyAnimation, CAMediaTimingFunction, CAMeshTransform, - CAMetalDisplayLink, CAMetalDisplayLinkUpdate, CAMetalDrawable, - CAMetalLayer, CAMutableDisplayPreferences, CAMutableMeshTransform, - CAOpenGLLayer, CAPackage, CAPluginLayer, CAPortalLayer, CAPresentationModifier, - CAPresentationModifierGroup, CAPropertyAnimation, CAProxyLayer, - CARemoteEffect, CARemoteEffectGroup, CARemoteExternalEffect, - CARemoteLayerClient, CARemoteLayerServer, CARemotePropertyEffect, - CARenderer, CAReplicatorLayer, CAScrollLayer, CAScrollLayoutManager, - CAShapeLayer, CASmoothedTextLayer, CASpringAnimation, CAState, - CAStateAddAnimation, CAStateAddElement, CAStateController, - CAStateElement, CAStateRemoveAnimation, CAStateRemoveElement, - CAStateSetValue, CAStateTransition, CAStateTransitionElement, - CATableLayoutManager, CATextLayer, CATiledLayer, CATransaction, - CATransactionCompletionItem, CATransformLayer, CATransition, - CAValueFunction, CAWindowServer, CAWindowServerDisplay, CAWindowServerVirtualDisplay, - CAWrappedLayoutManager ] + CABatchHandle, CABatchInfo, CABoxLayoutManager, CAChameleonLayer, + CAConstraint, CAConstraintLayoutManager, CAContentStream, + CAContentStreamFrame, CAContentStreamOptions, CAContext, CADisplay, + CADisplayAttributes, CADisplayLink, CADisplayMode, CADisplayModeCriteria, + CADisplayPowerAssertion, CADisplayPreferences, CADisplayProperties, + CADisplayStateControl, CADistanceFieldLayer, CAEAGLLayer, + CAEDRMetadata, CAEmitterBehavior, CAEmitterCell, CAEmitterLayer, + CAExternalAnimation, CAFenceHandle, CAFilter, CAFrameRateRangeGroup, + CAGradientLayer, CAKeyframeAnimation, CALayer, CALayerHost, + CALinearMaskLayer, CALocalDisplay, CAMLParser, CAMLWriter, + CAMatchMoveAnimation, CAMatchPropertyAnimation, CAMediaLayer, + CAMediaTimingFunction, CAMeshTransform, CAMetalDisplayLink, + CAMetalDisplayLinkUpdate, CAMetalDrawable, CAMetalLayer, CAMutableDisplayPreferences, + CAMutableMeshTransform, CAOpenGLLayer, CAPackage, CAPluginLayer, + CAPortalLayer, CAPresentationModifier, CAPresentationModifierGroup, + CAPropertyAnimation, CAProxyLayer, CARemoteEffect, CARemoteEffectGroup, + CARemoteExternalEffect, CARemoteLayerClient, CARemoteLayerServer, + CARemotePropertyEffect, CARenderer, CAReplicatorLayer, CAScrollLayer, + CAScrollLayoutManager, CAShapeLayer, CASmoothedTextLayer, + CASpringAnimation, CAState, CAStateAddAnimation, CAStateAddElement, + CAStateController, CAStateElement, CAStateRemoveAnimation, + CAStateRemoveElement, CAStateSetValue, CAStateTransition, + CAStateTransitionElement, CATableLayoutManager, CATextLayer, + CATiledLayer, CATransaction, CATransactionCompletionItem, + CATransformLayer, CATransition, CAValueFunction, CAWindowServer, + CAWindowServerDisplay, CAWindowServerVirtualDisplay, CAWrappedLayoutManager ] objc-ivars: [ CAStateAddElement._beforeObject, CAStateAddElement._keyPath, CAStateAddElement._object, CAStateElement._source, CAStateElement._target, CAStateRemoveElement._keyPath, CAStateRemoveElement._object, CAValueFunction._impl, CAValueFunction._string ] - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] - symbols: [ _CADeferLockAcquire, _CADeferLockRelease, _CARenderContextGetDisplayId, - _CARenderContextGetDisplayMask, _CARenderContextGetRemoteInputMachTime, - _CARenderContextSetDisplayId, _CARenderContextSetDisplayMask, - _CARenderUpdateAddedAllContextsWithOptions, _CARenderUpdateCameraCaptureTime, - _CARenderUpdateGetPluginLayerIds, _CARenderUpdateGetPluginLayerIdsCount, - _CARenderUpdateGetPortalLayerAtIndex, _CARenderUpdateGetPortalLayerCount, - _CARenderUpdateSetIsSnapshot, _kCAContentsFormatAutomaticAppKit ] + symbols: [ _CADeferLockAcquire, _CADeferLockRelease, _CALayerRetainFlattenedSurface, + _CARenderContextGetDisplayId, _CARenderContextGetDisplayMask, + _CARenderContextGetRemoteInputMachTime, _CARenderContextSetDisplayId, + _CARenderContextSetDisplayMask, _CARenderUpdateAddedAllContextsWithOptions, + _CARenderUpdateCameraCaptureTime, _CARenderUpdateCopyAllLayerHostBindingsRenderReport, + _CARenderUpdateCopyContextLayerHostBindingsRenderReport, _CARenderUpdateGetLayerComplexity, + _CARenderUpdateGetMaxDesiredHeadroom, _CARenderUpdateGetPluginLayerIds, + _CARenderUpdateGetPluginLayerIdsCount, _CARenderUpdateGetPortalLayerAtIndex, + _CARenderUpdateGetPortalLayerCount, _CARenderUpdateSetIsSnapshot, + _CARenderUpdateSetUseSkylightDisplayAttributes, _CARenderUpdateSetWantsSwapAnnouncement, + _kCAContentsFormatAutomaticAppKit ] + objc-classes: [ CADisplayWallConfiguration, CADisplayWallGroup, CALayerHostBindingsRenderReport, + CAWindowServerDisplayManager ] - targets: [ x86_64-maccatalyst, arm64-maccatalyst, arm64e-maccatalyst ] - symbols: [ _kCAContextStartValidatingSecurityOfSuperlayers, _kCAContextStopValidatingSecurityOfSuperlayers ] objc-classes: [ CACarPlayRegionLayer, CACloningTerminatorLayer, CADynamicFrameRateSource ] ... diff --git a/Frameworks/Security.framework/Versions/A/Headers/CSCommon.h b/Frameworks/Security.framework/Versions/A/Headers/CSCommon.h index c7d83f94..e58b6a31 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/CSCommon.h +++ b/Frameworks/Security.framework/Versions/A/Headers/CSCommon.h @@ -31,13 +31,12 @@ #include #include +#include #ifdef __cplusplus extern "C" { #endif -#include - /* * Some macOS API's use the old style defined name CSSM_DATA and CSSM_OID. * These are just typedefs for SecAsn* which are available for iOS. We complete @@ -245,6 +244,7 @@ typedef CF_OPTIONS(uint32_t, SecCSFlags) { kSecCSQuickCheck = 1 << 26, /* (internal) */ kSecCSApplyEmbeddedPolicy = 1 << 25, /* Apply Embedded (iPhone) policy regardless of the platform we're running on */ kSecCSStripDisallowedXattrs = 1 << 24, /* Strip disallowed xattrs, such as com.apple.FinderInfo and com.apple.ResourceFork */ + kSecCSMatchGuestRequirementInKernel = 1 << 23, /* Request matching the provided requirement in kernel against the running guest rather than on disk*/ }; diff --git a/Frameworks/Security.framework/Versions/A/Headers/CipherSuite.h b/Frameworks/Security.framework/Versions/A/Headers/CipherSuite.h index a4e737ff..e8a4b1cd 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/CipherSuite.h +++ b/Frameworks/Security.framework/Versions/A/Headers/CipherSuite.h @@ -122,7 +122,8 @@ CF_ENUM(SSLCipherSuite) TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA = 0xC036, /* ChaCha20-Poly1305 Cipher Suites for Transport Layer Security (TLS), RFC 7905 */ - TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xCCAB, + TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xCCAB, + TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xCCAC, /* TLS 1.2 addenda, RFC 5246 */ diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecAccessControl.h b/Frameworks/Security.framework/Versions/A/Headers/SecAccessControl.h index 5d54f581..4af00379 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecAccessControl.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecAccessControl.h @@ -72,8 +72,11 @@ __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0); Constraint: Device passcode @constant kSecAccessControlWatch - Constraint: Watch + Deprecated, please use kSecAccessControlCompanion instead. + @constant kSecAccessControlCompanion + Constraint: Paired companion device + @constant kSecAccessControlOr Constraint logic operation: when using more than one constraint, at least one of them must be satisfied. @@ -94,7 +97,8 @@ typedef CF_OPTIONS(CFOptionFlags, SecAccessControlCreateFlags) { kSecAccessControlBiometryCurrentSet API_AVAILABLE(macos(10.13.4), ios(11.3)) = 1u << 3, kSecAccessControlTouchIDCurrentSet API_DEPRECATED_WITH_REPLACEMENT("kSecAccessControlBiometryCurrentSet", macos(10.12.1, 10.13.4), ios(9.0, 11.3)) = 1u << 3, kSecAccessControlDevicePasscode API_AVAILABLE(macos(10.11), ios(9.0)) = 1u << 4, - kSecAccessControlWatch API_AVAILABLE(macos(10.15), ios(NA), macCatalyst(13.0)) = 1u << 5, + kSecAccessControlWatch API_DEPRECATED_WITH_REPLACEMENT("kSecAccessControlCompanion", macos(10.15, 15.0), ios(NA, NA), macCatalyst(13.0, 18.0)) = 1u << 5, + kSecAccessControlCompanion API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0)) = 1u << 5, kSecAccessControlOr API_AVAILABLE(macos(10.12.1), ios(9.0)) = 1u << 14, kSecAccessControlAnd API_AVAILABLE(macos(10.12.1), ios(9.0)) = 1u << 15, kSecAccessControlPrivateKeyUsage API_AVAILABLE(macos(10.12.1), ios(9.0)) = 1u << 30, diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecBase.h b/Frameworks/Security.framework/Versions/A/Headers/SecBase.h index 1ba0db0e..0940cde6 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecBase.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecBase.h @@ -706,6 +706,7 @@ CF_ENUM(OSStatus) errSecCertificateValidityPeriodTooLong = -67901, /* The validity period in the certificate exceeds the maximum allowed. */ errSecCertificateIsCA = -67902, /* The verified certificate is a CA rather than an end-entity */ errSecCertificateDuplicateExtension = -67903, /* The certificate contains multiple extensions with the same extension ID. */ + errSecMissingQualifiedCertStatement = -67904, /* A qualified certificate statement was expected but missing. */ }; diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecCertificate.h b/Frameworks/Security.framework/Versions/A/Headers/SecCertificate.h index 74f11c84..bdeddad8 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecCertificate.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecCertificate.h @@ -200,6 +200,29 @@ __nullable CFDataRef SecCertificateCopySerialNumberData(SecCertificateRef certificate, CFErrorRef *error) API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)); +/*! + @function SecCertificateCopyNotValidBeforeDate + @abstract Obtain the starting date of the given certificate. + @param certificate The certificate from which to get values. + @result Returns the absolute time at which the given certificate becomes valid, + or NULL if this value could not be obtained. The caller must CFRelease the value returned. + */ +__nullable +CFDateRef SecCertificateCopyNotValidBeforeDate(SecCertificateRef certificate) + API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +/*! + @function SecCertificateCopyNotValidAfterDate + @abstract Obtain the expiration date of the given certificate. + @param certificate The certificate from which to get values. + @result Returns the absolute time at which the given certificate expires, + or NULL if this value could not be obtained. The caller must CFRelease the value returned. + */ +__nullable +CFDateRef SecCertificateCopyNotValidAfterDate(SecCertificateRef certificate) + API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + + #if TARGET_OS_IPHONE /*! @function SecCertificateCopySerialNumber @@ -227,7 +250,7 @@ CFDataRef SecCertificateCopySerialNumber(SecCertificateRef certificate, CFErrorR #endif /* - * Legacy functions (OS X only) + * Legacy functions (macOS only) */ #if SEC_OS_OSX /*! diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecCustomTransform.h b/Frameworks/Security.framework/Versions/A/Headers/SecCustomTransform.h index 1e83a74a..947c9fc7 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecCustomTransform.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecCustomTransform.h @@ -320,7 +320,7 @@ typedef CF_ENUM(CFIndex, SecTransformMetaAttributeType) kSecTransformMetaAttributeExternalize, kSecTransformMetaAttributeHasOutboundConnections, kSecTransformMetaAttributeHasInboundConnection -} API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +} API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @typedef SecTransformAttributeRef @@ -331,7 +331,7 @@ typedef CF_ENUM(CFIndex, SecTransformMetaAttributeType) it up by name. */ typedef CFTypeRef SecTransformAttributeRef -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @@ -341,7 +341,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, a SecTransformAttributeRef may be used. */ typedef CFTypeRef SecTransformStringOrAttributeRef -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @@ -407,7 +407,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, */ typedef CFTypeRef __nullable (^SecTransformActionBlock)(void) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @typedef SecTransformAttributeActionBlock @@ -432,7 +432,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, typedef CFTypeRef __nullable (^SecTransformAttributeActionBlock)( SecTransformAttributeRef attribute, CFTypeRef value) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @typedef SecTransformDataBlock @@ -540,7 +540,7 @@ CFErrorRef SecTransformSetAttributeAction(SecTransformImplementationRef ref, CFStringRef action, SecTransformStringOrAttributeRef __nullable attribute, SecTransformAttributeActionBlock newAction) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformSetDataAction @@ -594,7 +594,7 @@ CF_EXPORT __nullable CFErrorRef SecTransformSetDataAction(SecTransformImplementationRef ref, CFStringRef action, SecTransformDataBlock newAction) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /* @function SecTransformSetTransformAction @@ -645,7 +645,7 @@ CF_EXPORT __nullable CFErrorRef SecTransformSetTransformAction(SecTransformImplementationRef ref, CFStringRef action, SecTransformActionBlock newAction) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTranformCustomGetAttribute @@ -692,7 +692,7 @@ CF_EXPORT __nullable CFTypeRef SecTransformCustomGetAttribute(SecTransformImplementationRef ref, SecTransformStringOrAttributeRef attribute, SecTransformMetaAttributeType type) __asm__("_SecTranformCustomGetAttribute") -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformCustomSetAttribute @@ -724,7 +724,7 @@ CFTypeRef SecTransformCustomSetAttribute(SecTransformImplementationRef ref, SecTransformStringOrAttributeRef attribute, SecTransformMetaAttributeType type, CFTypeRef __nullable value) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformPushbackAttribute @@ -749,7 +749,7 @@ CF_EXPORT __nullable CFTypeRef SecTransformPushbackAttribute(SecTransformImplementationRef ref, SecTransformStringOrAttributeRef attribute, CFTypeRef value) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @typedef SecTransformCreateFP @@ -781,7 +781,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, typedef SecTransformInstanceBlock __nonnull (*SecTransformCreateFP)(CFStringRef name, SecTransformRef newTransform, SecTransformImplementationRef ref) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /************** custom Transform transform override actions **************/ @@ -797,7 +797,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, stipulating the error. */ CF_EXPORT const CFStringRef kSecTransformActionCanExecute -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecTransformActionStartingExecution Overrides the standard behavior that occurs just before starting @@ -806,7 +806,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, SecTransformOverrideTransformAction block. */ CF_EXPORT const CFStringRef kSecTransformActionStartingExecution -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecTransformActionFinalize @@ -816,7 +816,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, SecTransformOverrideTransformAction block. */ CF_EXPORT const CFStringRef kSecTransformActionFinalize -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @@ -828,7 +828,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, a version number of a custom transform. */ CF_EXPORT const CFStringRef kSecTransformActionExternalizeExtraData -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecTransformActionProcessData @@ -838,7 +838,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, is used with the SecTransformOverrideAttributeAction block. */ CF_EXPORT const CFStringRef kSecTransformActionProcessData -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecTransformActionInternalizeExtraData @@ -852,7 +852,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, externalized custom transform. */ CF_EXPORT const CFStringRef kSecTransformActionInternalizeExtraData -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant SecTransformActionAttributeNotification @@ -865,7 +865,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, SecTransformCustomSetAttribute to update and other attribute. */ CF_EXPORT const CFStringRef kSecTransformActionAttributeNotification -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecTransformActionAttributeValidation @@ -876,7 +876,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, */ CF_EXPORT const CFStringRef kSecTransformActionAttributeValidation -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformRegister @@ -905,7 +905,7 @@ CF_EXPORT Boolean SecTransformRegister(CFStringRef uniqueName, SecTransformCreateFP createTransformFunction, CFErrorRef* error) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformCreate @@ -926,7 +926,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, */ CF_EXPORT __nullable SecTransformRef SecTransformCreate(CFStringRef name, CFErrorRef *error) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @Function SecTransformNoData @@ -957,7 +957,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, */ CF_EXPORT CFTypeRef SecTransformNoData(void) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); CF_IMPLICIT_BRIDGING_DISABLED CF_ASSUME_NONNULL_END diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecDecodeTransform.h b/Frameworks/Security.framework/Versions/A/Headers/SecDecodeTransform.h index 03ce3b7e..a7ee6d13 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecDecodeTransform.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecDecodeTransform.h @@ -63,7 +63,7 @@ CF_IMPLICIT_BRIDGING_ENABLED SecTransformRef SecDecodeTransformCreate(CFTypeRef DecodeType, CFErrorRef* error ) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); CF_IMPLICIT_BRIDGING_DISABLED CF_ASSUME_NONNULL_END diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecDigestTransform.h b/Frameworks/Security.framework/Versions/A/Headers/SecDigestTransform.h index fc8dd9bb..297fadae 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecDigestTransform.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecDigestTransform.h @@ -39,56 +39,56 @@ CF_IMPLICIT_BRIDGING_ENABLED Specifies an MD2 digest */ extern const CFStringRef kSecDigestMD2 -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies an MD4 digest */ extern const CFStringRef kSecDigestMD4 -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies an MD5 digest */ extern const CFStringRef kSecDigestMD5 -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies a SHA1 digest */ extern const CFStringRef kSecDigestSHA1 -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies a SHA2 digest. */ extern const CFStringRef kSecDigestSHA2 -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies an HMAC using the MD5 digest algorithm. */ extern const CFStringRef kSecDigestHMACMD5 -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies an HMAC using the SHA1 digest algorithm. */ extern const CFStringRef kSecDigestHMACSHA1 -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies an HMAC using one of the SHA2 digest algorithms. */ extern const CFStringRef kSecDigestHMACSHA2 -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @@ -97,7 +97,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, Returns one of the strings defined in the previous section. */ extern const CFStringRef kSecDigestTypeAttribute -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecDigestLengthAttribute @@ -105,7 +105,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, Returns a CFNumberRef that contains the length in bytes. */ extern const CFStringRef kSecDigestLengthAttribute -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecDigestHMACKeyAttribute @@ -115,7 +115,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, a zero length key. */ extern const CFStringRef kSecDigestHMACKeyAttribute -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecDigestTransformCreate @@ -142,7 +142,7 @@ SecTransformRef SecDigestTransformCreate(CFTypeRef __nullable digestType, CFIndex digestLength, CFErrorRef* error ) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @@ -152,7 +152,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, */ CFTypeID SecDigestTransformGetTypeID(void) - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); CF_IMPLICIT_BRIDGING_DISABLED CF_ASSUME_NONNULL_END diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecEncodeTransform.h b/Frameworks/Security.framework/Versions/A/Headers/SecEncodeTransform.h index 4b2b57c9..a59a536b 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecEncodeTransform.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecEncodeTransform.h @@ -36,17 +36,17 @@ CF_IMPLICIT_BRIDGING_ENABLED /*! @abstract Specifies a base 64 encoding */ -extern const CFStringRef kSecBase64Encoding API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +extern const CFStringRef kSecBase64Encoding API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies a base 32 encoding */ -extern const CFStringRef kSecBase32Encoding API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +extern const CFStringRef kSecBase32Encoding API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies a compressed encoding. */ -extern const CFStringRef kSecZLibEncoding API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +extern const CFStringRef kSecZLibEncoding API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecEncodeTypeAttribute @@ -54,11 +54,11 @@ extern const CFStringRef kSecZLibEncoding API_DEPRECATED("SecTransform is no lon Returns one of the strings defined in the previous section. */ -extern const CFStringRef kSecEncodeTypeAttribute API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +extern const CFStringRef kSecEncodeTypeAttribute API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); -extern const CFStringRef kSecLineLength64 API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); -extern const CFStringRef kSecLineLength76 API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +extern const CFStringRef kSecLineLength64 API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); +extern const CFStringRef kSecLineLength76 API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecEncodeLineLengthAttribute @@ -76,9 +76,9 @@ extern const CFStringRef kSecLineLength76 API_DEPRECATED("SecTransform is no lon (RFC1421), or kSecLineLength76 (RFC2045) may be used to set line lengths of 64 or 76 bytes. */ -extern const CFStringRef kSecEncodeLineLengthAttribute API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +extern const CFStringRef kSecEncodeLineLengthAttribute API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); -extern const CFStringRef kSecCompressionRatio API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +extern const CFStringRef kSecCompressionRatio API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecEncodeTransformCreate @@ -102,7 +102,7 @@ __nullable SecTransformRef SecEncodeTransformCreate(CFTypeRef encodeType, CFErrorRef* error ) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); CF_IMPLICIT_BRIDGING_DISABLED CF_ASSUME_NONNULL_END diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecEncryptTransform.h b/Frameworks/Security.framework/Versions/A/Headers/SecEncryptTransform.h index 9ceea30c..db02cdc7 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecEncryptTransform.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecEncryptTransform.h @@ -47,41 +47,41 @@ CF_IMPLICIT_BRIDGING_ENABLED /*! @abstract Indicates that no padding will be used when encrypting or decrypting. */ extern const CFStringRef kSecPaddingNoneKey - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! Indicates that PKCS1 padding will be used when encrypting or decrypting. */ extern const CFStringRef kSecPaddingPKCS1Key - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! Indicates that PKCS5 padding will be used when encrypting or decrypting. */ extern const CFStringRef kSecPaddingPKCS5Key - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! Indicates that PKCS7 padding will be used when encrypting or decrypting. */ extern const CFStringRef kSecPaddingPKCS7Key - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! Indicates that PKCS7 padding will be used when encrypting or decrypting. */ extern const CFStringRef kSecPaddingOAEPKey - API_DEPRECATED("SecTransform is no longer supported", macos(10.8, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.8, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! Indicates that no mode will be used when encrypting or decrypting. */ extern const CFStringRef kSecModeNoneKey - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! Indicates that ECB mode will be used when encrypting or decrypting. */ extern const CFStringRef kSecModeECBKey - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! Indicates that CBC mode will be used when encrypting or decrypting. */ extern const CFStringRef kSecModeCBCKey - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! Indicates that CFB mode will be used when encrypting or decrypting. */ extern const CFStringRef kSecModeCFBKey - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! Indicates that OFB mode will be used when encrypting or decrypting. */ extern const CFStringRef kSecModeOFBKey - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract This attribute holds the encryption key for the transform. (ReadOnly) */ extern const CFStringRef kSecEncryptKey - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract @@ -91,7 +91,7 @@ CF_IMPLICIT_BRIDGING_ENABLED an appropriate value will be supplied for you. */ extern const CFStringRef kSecPaddingKey - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract @@ -101,7 +101,7 @@ CF_IMPLICIT_BRIDGING_ENABLED value for this key, an appropriate value will be supplied for you. */ extern const CFStringRef kSecIVKey - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract @@ -111,7 +111,7 @@ CF_IMPLICIT_BRIDGING_ENABLED an appropriate value will be supplied for you. */ extern const CFStringRef kSecEncryptionMode - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract @@ -122,7 +122,7 @@ CF_IMPLICIT_BRIDGING_ENABLED will be added. It is ignored when the padding mode is not OAEP. */ extern const CFStringRef kSecOAEPMessageLengthAttributeName - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies the OAEP encoding paramaters @@ -132,7 +132,7 @@ CF_IMPLICIT_BRIDGING_ENABLED OAEP padding modes. */ extern const CFStringRef kSecOAEPEncodingParametersAttributeName - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @abstract Specifies the OAEP MGF1 digest algorithm. @@ -141,7 +141,7 @@ CF_IMPLICIT_BRIDGING_ENABLED If unset SHA1 is used. It is ifnored by non OAEP padding modes. */ extern const CFStringRef kSecOAEPMGF1DigestAlgorithmAttributeName - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecEncryptTransformCreate @@ -159,7 +159,7 @@ CF_IMPLICIT_BRIDGING_ENABLED SecTransformRef SecEncryptTransformCreate(SecKeyRef keyRef, CFErrorRef* error) - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecDecryptTransformCreate @@ -177,7 +177,7 @@ CF_IMPLICIT_BRIDGING_ENABLED SecTransformRef SecDecryptTransformCreate(SecKeyRef keyRef, CFErrorRef* error) - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecDecryptTransformGetTypeID @@ -186,7 +186,7 @@ CF_IMPLICIT_BRIDGING_ENABLED */ CFTypeID SecDecryptTransformGetTypeID(void) - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecEncryptTransformGetTypeID @@ -195,7 +195,7 @@ CF_IMPLICIT_BRIDGING_ENABLED */ CFTypeID SecEncryptTransformGetTypeID(void) - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); CF_IMPLICIT_BRIDGING_DISABLED CF_ASSUME_NONNULL_END diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecImportExport.h b/Frameworks/Security.framework/Versions/A/Headers/SecImportExport.h index ee5d2b7e..6d0dd032 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecImportExport.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecImportExport.h @@ -647,8 +647,9 @@ OSStatus SecItemImport( @enum Import/Export options @discussion Predefined key constants used when passing dictionary-based arguments to import/export functions. @constant kSecImportExportPassphrase Specifies a passphrase represented by a CFStringRef to be used when exporting to (or importing from) PKCS#12 format. - @constant kSecImportExportKeychain On OSX, specifies a keychain represented by a SecKeychainRef to be used as the target when importing from PKCS#12 format. - @constant kSecImportExportAccess On OSX, specifies an access represented by a SecAccessRef for the initial access (ACL) of a key imported from PKCS#12 format. + @constant kSecImportExportKeychain On macOS, specifies a keychain represented by a SecKeychainRef to be used as the target when importing from PKCS#12 format. + @constant kSecImportExportAccess On macOS, specifies an access represented by a SecAccessRef for the initial access (ACL) of a key imported from PKCS#12 format. + @constant kSecImportToMemoryOnly Specifies (with a value of kCFBooleanTrue) that items imported from PKCS#12 format should be kept in process memory only and not permanently stored in the keychain. This can be specified on either macOS or iOS, though it is already default behavior on iOS. If this key is provided, keychain-related import options are ignored since the keychain will not be used. */ extern const CFStringRef kSecImportExportPassphrase API_AVAILABLE(macos(10.6), ios(2.0)); @@ -656,6 +657,8 @@ extern const CFStringRef kSecImportExportKeychain API_AVAILABLE(macos(10.7), ios(NA)); extern const CFStringRef kSecImportExportAccess API_AVAILABLE(macos(10.7), ios(NA)); +extern const CFStringRef kSecImportToMemoryOnly + API_AVAILABLE(macos(15.0), ios(18.0)); /*! @enum Import/Export item description @@ -669,7 +672,7 @@ extern const CFStringRef kSecImportExportAccess the SHA-1 digest of the public key. @constant kSecImportItemIdentity a SecIdentityRef representing the identity. @constant kSecImportItemTrust a SecTrustRef set up with all relevant - certificates. Not guaranteed to succesfully evaluate. + certificates. Not guaranteed to successfully evaluate. @constant kSecImportItemCertChain a CFArrayRef holding all relevant certificates for this item's identity */ @@ -698,6 +701,15 @@ extern const CFStringRef kSecImportItemIdentity @result errSecSuccess in case of success. errSecDecode means either the blob can't be read or it is malformed. errSecAuthFailed means an incorrect password was supplied, or data in the container is damaged. + @discussion The normal behavior of this function is to import items into process + memory on iOS, and into the default keychain on macOS. You can modify this behavior + with entries in the options dictionary. To specify a file-based keychain and + legacy access control on macOS, provide kSecImportExportKeychain with a SecKeychainRef + value, and/or kSecImportExportAccess with a SecAccessRef value. In macOS 14 and later, + it is possible to specify the data protection keychain instead of a file-based keychain + by including kSecUseDataProtectionKeychain with a value of kCFBooleanTrue. Starting with + macOS 15 and iOS 18, kSecImportToMemoryOnly (with a value of kCFBooleanTrue) allows you + to skip importing to the keychain on macOS and explicitly specify iOS behavior. */ OSStatus SecPKCS12Import(CFDataRef pkcs12_data, CFDictionaryRef options, CFArrayRef * __nonnull CF_RETURNS_RETAINED items) API_AVAILABLE(macos(10.6), ios(2.0)); diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecItem.h b/Frameworks/Security.framework/Versions/A/Headers/SecItem.h index 6c52df00..93b097ef 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecItem.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecItem.h @@ -83,10 +83,10 @@ extern const CFStringRef kSecClassIdentity below lists the currently defined attributes for each item class: kSecClassGenericPassword item attributes: - kSecAttrAccess (OS X only) + kSecAttrAccess (macOS only) kSecAttrAccessControl - kSecAttrAccessGroup (iOS; also OS X if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) - kSecAttrAccessible (iOS; also OS X if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) + kSecAttrAccessGroup (iOS; also macOS if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) + kSecAttrAccessible (iOS; also macOS if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) kSecAttrCreationDate kSecAttrModificationDate kSecAttrDescription @@ -102,10 +102,10 @@ extern const CFStringRef kSecClassIdentity kSecAttrSynchronizable kSecClassInternetPassword item attributes: - kSecAttrAccess (OS X only) + kSecAttrAccess (macOS only) kSecAttrAccessControl - kSecAttrAccessGroup (iOS; also OS X if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) - kSecAttrAccessible (iOS; also OS X if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) + kSecAttrAccessGroup (iOS; also macOS if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) + kSecAttrAccessible (iOS; also macOS if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) kSecAttrCreationDate kSecAttrModificationDate kSecAttrDescription @@ -139,19 +139,19 @@ extern const CFStringRef kSecClassIdentity kSecAttrSynchronizable kSecClassKey item attributes: - kSecAttrAccess (OS X only) + kSecAttrAccess (macOS only) kSecAttrAccessControl - kSecAttrAccessGroup (iOS; also OS X if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) - kSecAttrAccessible (iOS; also OS X if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) + kSecAttrAccessGroup (iOS; also macOS if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) + kSecAttrAccessible (iOS; also macOS if kSecAttrSynchronizable and/or kSecUseDataProtectionKeychain set) kSecAttrKeyClass kSecAttrLabel kSecAttrApplicationLabel kSecAttrIsPermanent kSecAttrApplicationTag kSecAttrKeyType - kSecAttrPRF (OS X only) - kSecAttrSalt (OS X only) - kSecAttrRounds (OS X only) + kSecAttrPRF (macOS only) + kSecAttrSalt (macOS only) + kSecAttrRounds (macOS only) kSecAttrKeySizeInBits kSecAttrEffectiveKeySize kSecAttrCanEncrypt @@ -182,9 +182,9 @@ extern const CFStringRef kSecClassIdentity needs to allow the system to protect that item in the best way possible. See the "kSecAttrAccessible Value Constants" section for a list of values which can be specified. - IMPORTANT: This attribute is currently not supported for OS X keychain + IMPORTANT: This attribute is currently not supported for macOS keychain items, unless the kSecAttrSynchronizable attribute is also present. If - both attributes are specified on either OS X or iOS, the value for the + both attributes are specified on either macOS or iOS, the value for the kSecAttrAccessible key may only be one whose name does not end with "ThisDeviceOnly", as those cannot sync to another device. @@ -196,7 +196,7 @@ extern const CFStringRef kSecClassIdentity @constant kSecAttrAccess Specifies a dictionary key whose value is a SecAccessRef describing the access control settings for this item. - This key is available on OS X only. + This key is available on macOS only. @constant kSecAttrAccessGroup Specifies a dictionary key whose value is a CFStringRef indicating which access group a item is in. The access @@ -361,13 +361,13 @@ extern const CFStringRef kSecClassIdentity a value of type CFNumberRef that denotes the certificate type (On iOS, currently the value of this attribute must be equal to the version of the X509 certificate. So, 1 for v1, 2 for v2, and 3 for v3 - certificates). (On OSX, see the CSSM_CERT_TYPE enum in cssmtype.h). + certificates). (On macOS, see the CSSM_CERT_TYPE enum in cssmtype.h). Only items of class kSecClassCertificate have this attribute. @constant kSecAttrCertificateEncoding (read-only) Specifies a dictionary key whose value is the item's certificate encoding. You use this key to get a value of type CFNumberRef that denotes the certificate encoding (On iOS, currently only the value 3 meaning - kSecAttrCertificateEncodingDER is supported). On OSX, see the + kSecAttrCertificateEncodingDER is supported). On macOS, see the CSSM_CERT_ENCODING enum in cssmtype.h. Only items of class kSecClassCertificate have this attribute. @constant kSecAttrKeyClass (read only) Specifies a dictionary key whose @@ -385,25 +385,25 @@ extern const CFStringRef kSecClassIdentity permanently. @constant kSecAttrIsSensitive Specifies a dictionary key whose value is a CFBooleanRef indicating that the key in question can only be exported - in a wrapped (encrypted) format. OS X only. + in a wrapped (encrypted) format. macOS only. @constant kSecAttrIsExtractable Specifies a dictionary key whose value is a CFBooleanRef indicating whether the key in question can be exported from - its keychain container. OS X only. + its keychain container. macOS only. @constant kSecAttrApplicationTag Specifies a dictionary key whose value is a CFDataRef containing private tag data. @constant kSecAttrKeyType Specifies a dictionary key whose value is a CFNumberRef indicating the algorithm associated with this key (On iOS, currently only the value 42 is supported, alternatively you can use - kSecAttrKeyTypeRSA). (On OSX, see the CSSM_ALGORITHMS enum in cssmtype.h). + kSecAttrKeyTypeRSA). (On macOS, see the CSSM_ALGORITHMS enum in cssmtype.h). @constant kSecAttrPRF Specifies a dictionary key whose value is the PRF (pseudo-random function) for this key (see "kSecAttrPRF Value Constants".) - OS X only. + macOS only. @constant kSecAttrSalt Specifies a dictionary key whose value is a - CFData containing the salt to use for this key. OS X only. + CFData containing the salt to use for this key. macOS only. @constant kSecAttrRounds Specifies a dictionary key whose value is the number of rounds for the pseudo-random function specified by kSecAttrPRF. - OS X only. + macOS only. @constant kSecAttrKeySizeInBits Specifies a dictionary key whose value is a CFNumberRef indicating the number of bits in this key. @constant kSecAttrEffectiveKeySize Specifies a dictionary key whose value @@ -772,13 +772,13 @@ extern const CFStringRef kSecAttrKeyClassSymmetric @constant kSecAttrKeyTypeECSECPrimeRandom. The used curve is P-192, P-256, P-384 or P-521. The size is specified by kSecAttrKeySizeInBits attribute. Curves are defined in FIPS PUB 186-4 standard. @constant kSecAttrKeyTypeEC This is the legacy name for kSecAttrKeyTypeECSECPrimeRandom, new applications should not use it. - @constant kSecAttrKeyTypeDSA (OSX only) - @constant kSecAttrKeyTypeAES (OSX only) - @constant kSecAttrKeyType3DES (OSX only) - @constant kSecAttrKeyTypeRC4 (OSX only) - @constant kSecAttrKeyTypeRC2 (OSX only) - @constant kSecAttrKeyTypeCAST (OSX only) - @constant kSecAttrKeyTypeECDSA (deprecated; use kSecAttrKeyTypeECSECPrimeRandom instead.) (OSX only) + @constant kSecAttrKeyTypeDSA (macOS only) + @constant kSecAttrKeyTypeAES (macOS only) + @constant kSecAttrKeyType3DES (macOS only) + @constant kSecAttrKeyTypeRC4 (macOS only) + @constant kSecAttrKeyTypeRC2 (macOS only) + @constant kSecAttrKeyTypeCAST (macOS only) + @constant kSecAttrKeyTypeECDSA (deprecated; use kSecAttrKeyTypeECSECPrimeRandom instead.) (macOS only) */ extern const CFStringRef kSecAttrKeyTypeRSA API_AVAILABLE(macos(10.7), ios(2.0)); @@ -806,7 +806,7 @@ extern const CFStringRef kSecAttrKeyTypeECSECPrimeRandom /* @enum kSecAttrPRF Value Constants @discussion Predefined item attribute constants used to specify the PRF - to use with SecKeyDeriveFromPassword. OS X only. + to use with SecKeyDeriveFromPassword. macOS only. @constant kSecAttrPRFHmacAlgSHA1 @constant kSecAttrPRFHmacAlgSHA224 @constant kSecAttrPRFHmacAlgSHA256 @@ -834,7 +834,7 @@ extern const CFStringRef kSecAttrPRFHmacAlgSHA512 @constant kSecMatchPolicy Specifies a dictionary key whose value is a SecPolicyRef. If provided, returned certificates or identities must verify with this policy. - @constant kSecMatchItemList OS X only. Specifies a dictionary key whose value is a + @constant kSecMatchItemList macOS only. Specifies a dictionary key whose value is a CFArray of SecKeychainItemRef items. If provided, returned items will be limited to the subset which are contained in this list. @constant kSecMatchSearchList Specifies a dictionary key whose value is a @@ -851,22 +851,26 @@ extern const CFStringRef kSecAttrPRFHmacAlgSHA512 @constant kSecMatchSubjectContains Specifies a dictionary key whose value is a CFStringRef. If provided, returned certificates or identities will be limited to those containing this string in the subject. - @constant kSecMatchSubjectStartsWith OS X only. Specifies a dictionary key whose value + @constant kSecMatchHostOrSubdomainOfHost Specifies a dictionary key whose value + is a CFStringRef. If provided, returned internet passwords will be limited to those which + have a server host that is equal to or a subdomain of this string. This filter only works on + the Data Protection Keychain on macOS. + @constant kSecMatchSubjectStartsWith macOS only. Specifies a dictionary key whose value is a CFStringRef. If provided, returned certificates or identities will be limited to those with subject names that start with this string. - @constant kSecMatchSubjectEndsWith OS X only. Specifies a dictionary key whose value + @constant kSecMatchSubjectEndsWith macOS only. Specifies a dictionary key whose value is a CFStringRef. If provided, returned certificates or identities will be limited to those with subject names that end with this string. - @constant kSecMatchSubjectWholeString OS X only. Specifies a dictionary key whose + @constant kSecMatchSubjectWholeString macOS only. Specifies a dictionary key whose value is a CFStringRef. If provided, returned certificates or identities will be limited to those matching this string exactly in the subject. @constant kSecMatchCaseInsensitive Specifies a dictionary key whose value is a CFBooleanRef. If this value is kCFBooleanFalse, or is not provided, then case-sensitive string matching is performed. - @constant kSecMatchDiacriticInsensitive OS X only. Specifies a dictionary key whose + @constant kSecMatchDiacriticInsensitive macOS only. Specifies a dictionary key whose value is a CFBooleanRef. If this value is kCFBooleanFalse, or is not provided, then diacritic-sensitive string matching is performed. - @constant kSecMatchWidthInsensitive OS X only. Specifies a dictionary key whose + @constant kSecMatchWidthInsensitive macOS only. Specifies a dictionary key whose value is a CFBooleanRef. If this value is kCFBooleanFalse, or is not provided, then string matching is width-sensitive (e.g. 'a' != 0xFF41). @constant kSecMatchTrustedOnly Specifies a dictionary key whose value is @@ -901,6 +905,8 @@ extern const CFStringRef kSecMatchEmailAddressIfPresent API_AVAILABLE(macos(10.6), ios(2.0)); extern const CFStringRef kSecMatchSubjectContains API_AVAILABLE(macos(10.6), ios(2.0)); +extern const CFStringRef kSecMatchHostOrSubdomainOfHost + API_AVAILABLE(macos(15.0), ios(18.0)); extern const CFStringRef kSecMatchSubjectStartsWith API_AVAILABLE(macos(10.7), ios(NA)); extern const CFStringRef kSecMatchSubjectEndsWith @@ -1000,14 +1006,14 @@ extern const CFStringRef kSecValuePersistentRef SecCertificateRef, SecIdentityRef, or CFDataRef (for a persistent item reference.) The items in the array must all be of the same type. When this attribute is provided, no keychains are searched. - @constant kSecUseKeychain OS X only. Specifies a dictionary key whose value is a + @constant kSecUseKeychain macOS only. Specifies a dictionary key whose value is a keychain reference. You use this key to specify a value of type SecKeychainRef to which SecItemAdd will add the provided item(s). @constant kSecUseOperationPrompt Specifies a dictionary key whose value is a CFStringRef that represents a user-visible string describing the operation for which the application is attempting to authenticate. The application is responsible for the text localization. - @constant kSecUseNoAuthenticationUI OS X only. Specifies a dictionary key whose value + @constant kSecUseNoAuthenticationUI macOS only. Specifies a dictionary key whose value is a CFBooleanRef. If provided with a value of kCFBooleanTrue, the error errSecInteractionNotAllowed will be returned if the item is attempting to authenticate with UI. @@ -1162,7 +1168,7 @@ extern const CFStringRef kSecAttrAccessGroupToken specify a kSecValuePersistentRef whose value a CFDataRef (the persistent reference), and a kSecReturnRef whose value is kCFBooleanTrue. - On OSX, to convert from persistent item references to normal item references, + On macOS, to convert from persistent item references to normal item references, specify a kSecMatchItemList whose value is a CFArray containing one or more CFDataRef elements (the persistent reference), and a kSecReturnRef whose value is kCFBooleanTrue. The objects in the provided array must be @@ -1188,7 +1194,7 @@ OSStatus SecItemCopyMatching(CFDictionaryRef query, CFTypeRef * __nullable CF_RE at once use the kSecUseItemList key with an array of items as its value. This is currently only supported for non password items. - On OSX, To add an item to a particular keychain, supply kSecUseKeychain + On macOS, to add an item to a particular keychain, supply kSecUseKeychain with a SecKeychainRef as its value. On iOS, watchOS & tvOS, Certificate, Key, and Identity items may be @@ -1215,7 +1221,7 @@ OSStatus SecItemCopyMatching(CFDictionaryRef query, CFTypeRef * __nullable CF_RE * If more than one of these result types is specified, the result is returned as a CFDictionaryRef containing all the requested data. * On iOS, if a result type is not specified, no results are returned. - On OSX, the added item is returned. + On macOS, the added item is returned. */ OSStatus SecItemAdd(CFDictionaryRef attributes, CFTypeRef * __nullable CF_RETURNS_RETAINED result) API_AVAILABLE(macos(10.6), ios(2.0)); @@ -1254,12 +1260,12 @@ OSStatus SecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate You can change this behavior by specifying one of the follow keys: * To delete an item identified by a transient reference, on iOS, specify - kSecValueRef with a item reference. On OS X, give a kSecMatchItemList + kSecValueRef with a item reference. On macOS, give a kSecMatchItemList containing an item reference. * To delete an item identified by a persistent reference, on iOS, specify kSecValuePersistentRef with a persistent reference returned by using the kSecReturnPersistentRef key to SecItemCopyMatching or - SecItemAdd. on OSX, use kSecMatchItemList with a persistent reference + SecItemAdd. On macOS, use kSecMatchItemList with a persistent reference returned by using the kSecReturnPersistentRef key with SecItemCopyMatching or SecItemAdd. * To delete multiple items specify kSecMatchItemList with an array diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecKey.h b/Frameworks/Security.framework/Versions/A/Headers/SecKey.h index 2c4d2a98..ce65f152 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecKey.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecKey.h @@ -27,7 +27,7 @@ type of keychain item that represents a key. A key can be stored in a keychain, but a key can also be a transient object. - On OSX, you can use a SecKey as a SecKeychainItem in most functions. + On macOS, you can use a SecKey as a SecKeychainItem in most functions. */ #ifndef _SECURITY_SECKEY_H_ diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecKeychainItem.h b/Frameworks/Security.framework/Versions/A/Headers/SecKeychainItem.h index b677fd4d..4f6fcfa6 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecKeychainItem.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecKeychainItem.h @@ -47,7 +47,7 @@ CF_ASSUME_NONNULL_BEGIN @constant kSecInternetPasswordItemClass Indicates that the item is an Internet password. @constant kSecGenericPasswordItemClass Indicates that the item is a generic password. @constant kSecAppleSharePasswordItemClass Indicates that the item is an AppleShare password. - Note: AppleShare passwords are no longer used by OS X, starting in Leopard (10.5). Use of this item class is deprecated in OS X 10.9 and later; kSecInternetPasswordItemClass should be used instead when storing or looking up passwords for an Apple Filing Protocol (AFP) server. + Note: AppleShare passwords are no longer used by macOS, starting in Leopard (10.5). Use of this item class is deprecated in OS X 10.9 and later; kSecInternetPasswordItemClass should be used instead when storing or looking up passwords for an Apple Filing Protocol (AFP) server. @constant kSecCertificateItemClass Indicates that the item is a digital certificate. @constant kSecPublicKeyItemClass Indicates that the item is a public key. @constant kSecPrivateKeyItemClass Indicates that the item is a private key. @@ -78,7 +78,7 @@ typedef CF_ENUM(FourCharCode, SecItemClass) @constant kSecLabelItemAttr Identifies the label attribute. You use this tag to set or get a value of type string that represents a user-editable string containing the label for this item. @constant kSecInvisibleItemAttr Identifies the invisible attribute. You use this tag to set or get a value of type Boolean that indicates whether the item is invisible (i.e. should not be displayed). @constant kSecNegativeItemAttr Identifies the negative attribute. You use this tag to set or get a value of type Boolean that indicates whether there is a valid password associated with this keychain item. This is useful if your application doesn't want a password for some particular service to be stored in the keychain, but prefers that it always be entered by the user. The item (typically invisible and with zero-length data) acts as a placeholder to say "don't use me." - @constant kSecCustomIconItemAttr Identifies the custom icon attribute. You use this tag to set or get a value of type Boolean that indicates whether the item has an application-specific icon. To do this, you must also set the attribute value identified by the tag kSecTypeItemAttr to a file type for which there is a corresponding icon in the desktop database, and set the attribute value identified by the tag kSecCreatorItemAttr to an appropriate application creator type. If a custom icon corresponding to the item's type and creator can be found in the desktop database, it will be displayed by Keychain Access. Otherwise, default icons are used. (Note: use of this attribute is deprecated; custom icons for keychain items are not supported in Mac OS X.) + @constant kSecCustomIconItemAttr Identifies the custom icon attribute. You use this tag to set or get a value of type Boolean that indicates whether the item has an application-specific icon. To do this, you must also set the attribute value identified by the tag kSecTypeItemAttr to a file type for which there is a corresponding icon in the desktop database, and set the attribute value identified by the tag kSecCreatorItemAttr to an appropriate application creator type. If a custom icon corresponding to the item's type and creator can be found in the desktop database, it will be displayed by Keychain Access. Otherwise, default icons are used. (Note: use of this attribute is deprecated; custom icons for keychain items are not supported in macOS.) @constant kSecAccountItemAttr Identifies the account attribute. You use this tag to set or get a string that represents the user account. This attribute applies to generic, Internet, and AppleShare password items. @constant kSecServiceItemAttr Identifies the service attribute. You use this tag to set or get a string that represents the service associated with this item. This attribute is unique to generic password items. @constant kSecGenericItemAttr Identifies the generic attribute. You use this tag to set or get a value of untyped bytes that represents a user-defined attribute. This attribute is unique to generic password items. @@ -87,9 +87,9 @@ typedef CF_ENUM(FourCharCode, SecItemClass) @constant kSecAuthenticationTypeItemAttr Identifies the authentication type attribute. You use this tag to set or get a value of type SecAuthenticationType that represents the Internet authentication scheme. This attribute is unique to Internet password items. @constant kSecPortItemAttr Identifies the port attribute. You use this tag to set or get a value of type UInt32 that represents the Internet port number. This attribute is unique to Internet password items. @constant kSecPathItemAttr Identifies the path attribute. You use this tag to set or get a string value that represents the path. This attribute is unique to Internet password items. - @constant kSecVolumeItemAttr Identifies the volume attribute. You use this tag to set or get a string value that represents the AppleShare volume. This attribute is unique to AppleShare password items. Note: AppleShare passwords are no longer used by OS X as of Leopard (10.5); Internet password items are used instead. - @constant kSecAddressItemAttr Identifies the address attribute. You use this tag to set or get a string value that represents the AppleTalk zone name, or the IP or domain name that represents the server address. This attribute is unique to AppleShare password items. Note: AppleShare passwords are no longer used by OS X as of Leopard (10.5); Internet password items are used instead. - @constant kSecSignatureItemAttr Identifies the server signature attribute. You use this tag to set or get a value of type SecAFPServerSignature that represents the server signature block. This attribute is unique to AppleShare password items. Note: AppleShare passwords are no longer used by OS X as of Leopard (10.5); Internet password items are used instead. + @constant kSecVolumeItemAttr Identifies the volume attribute. You use this tag to set or get a string value that represents the AppleShare volume. This attribute is unique to AppleShare password items. Note: AppleShare passwords are no longer used by macOS as of Leopard (10.5); Internet password items are used instead. + @constant kSecAddressItemAttr Identifies the address attribute. You use this tag to set or get a string value that represents the AppleTalk zone name, or the IP or domain name that represents the server address. This attribute is unique to AppleShare password items. Note: AppleShare passwords are no longer used by macOS as of Leopard (10.5); Internet password items are used instead. + @constant kSecSignatureItemAttr Identifies the server signature attribute. You use this tag to set or get a value of type SecAFPServerSignature that represents the server signature block. This attribute is unique to AppleShare password items. Note: AppleShare passwords are no longer used by macOS as of Leopard (10.5); Internet password items are used instead. @constant kSecProtocolItemAttr Identifies the protocol attribute. You use this tag to set or get a value of type SecProtocolType that represents the Internet protocol. This attribute applies to AppleShare and Internet password items. @constant kSecCertificateType Indicates a CSSM_CERT_TYPE type. @constant kSecCertificateEncoding Indicates a CSSM_CERT_ENCODING type. diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecPolicy.h b/Frameworks/Security.framework/Versions/A/Headers/SecPolicy.h index 84afb7dc..6a0fcb47 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecPolicy.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecPolicy.h @@ -93,6 +93,19 @@ extern const CFStringRef kSecPolicyApplePassbookSigning __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0); extern const CFStringRef kSecPolicyApplePayIssuerEncryption __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0); +extern const CFStringRef kSecPolicyAppleSSLServer + API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4)); +extern const CFStringRef kSecPolicyAppleSSLClient + API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4)); +extern const CFStringRef kSecPolicyAppleEAPServer + API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4)); +extern const CFStringRef kSecPolicyAppleEAPClient + API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4)); +extern const CFStringRef kSecPolicyAppleIPSecServer + API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4)); +extern const CFStringRef kSecPolicyAppleIPSecClient + API_AVAILABLE(macos(15.4), ios(18.4), watchos(11.4), tvos(18.4)); + /*! @enum Policy Value Constants @@ -253,7 +266,7 @@ CF_IMPLICIT_BRIDGING_DISABLED CF_ASSUME_NONNULL_END /* - * Legacy functions (OS X only) + * Legacy functions (macOS only) */ #if TARGET_OS_OSX @@ -261,7 +274,7 @@ CF_ASSUME_NONNULL_BEGIN CF_IMPLICIT_BRIDGING_ENABLED /*! - @enum Policy Value Constants (OS X) + @enum Policy Value Constants (macOS) @discussion Predefined property key constants used to get or set values in a dictionary for a policy instance. diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecProtocolTypes.h b/Frameworks/Security.framework/Versions/A/Headers/SecProtocolTypes.h index 57cae7be..9a65e73f 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecProtocolTypes.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecProtocolTypes.h @@ -99,17 +99,17 @@ typedef CF_ENUM(uint16_t, tls_protocol_version_t) { * @constant tls_ciphersuite_CHACHA20_POLY1305_SHA256 */ typedef CF_ENUM(uint16_t, tls_ciphersuite_t) { - tls_ciphersuite_RSA_WITH_3DES_EDE_CBC_SHA CF_SWIFT_NAME(RSA_WITH_3DES_EDE_CBC_SHA) = 0x000A, + tls_ciphersuite_RSA_WITH_3DES_EDE_CBC_SHA CF_ENUM_DEPRECATED(10_15, 15_0, 13_0, 18_0) CF_SWIFT_NAME(RSA_WITH_3DES_EDE_CBC_SHA) = 0x000A, tls_ciphersuite_RSA_WITH_AES_128_CBC_SHA CF_SWIFT_NAME(RSA_WITH_AES_128_CBC_SHA) = 0x002F, tls_ciphersuite_RSA_WITH_AES_256_CBC_SHA CF_SWIFT_NAME(RSA_WITH_AES_256_CBC_SHA) = 0x0035, tls_ciphersuite_RSA_WITH_AES_128_GCM_SHA256 CF_SWIFT_NAME(RSA_WITH_AES_128_GCM_SHA256) = 0x009C, tls_ciphersuite_RSA_WITH_AES_256_GCM_SHA384 CF_SWIFT_NAME(RSA_WITH_AES_256_GCM_SHA384) = 0x009D, tls_ciphersuite_RSA_WITH_AES_128_CBC_SHA256 CF_SWIFT_NAME(RSA_WITH_AES_128_CBC_SHA256) = 0x003C, tls_ciphersuite_RSA_WITH_AES_256_CBC_SHA256 CF_SWIFT_NAME(RSA_WITH_AES_256_CBC_SHA256) = 0x003D, - tls_ciphersuite_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA CF_SWIFT_NAME(ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA) = 0xC008, + tls_ciphersuite_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA CF_ENUM_DEPRECATED(10_15, 15_0, 13_0, 18_0) CF_SWIFT_NAME(ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA) = 0xC008, tls_ciphersuite_ECDHE_ECDSA_WITH_AES_128_CBC_SHA CF_SWIFT_NAME(ECDHE_ECDSA_WITH_AES_128_CBC_SHA) = 0xC009, tls_ciphersuite_ECDHE_ECDSA_WITH_AES_256_CBC_SHA CF_SWIFT_NAME(ECDHE_ECDSA_WITH_AES_256_CBC_SHA) = 0xC00A, - tls_ciphersuite_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA CF_SWIFT_NAME(ECDHE_RSA_WITH_3DES_EDE_CBC_SHA) = 0xC012, + tls_ciphersuite_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA CF_ENUM_DEPRECATED(10_15, 15_0, 13_0, 18_0) CF_SWIFT_NAME(ECDHE_RSA_WITH_3DES_EDE_CBC_SHA) = 0xC012, tls_ciphersuite_ECDHE_RSA_WITH_AES_128_CBC_SHA CF_SWIFT_NAME(ECDHE_RSA_WITH_AES_128_CBC_SHA) = 0xC013, tls_ciphersuite_ECDHE_RSA_WITH_AES_256_CBC_SHA CF_SWIFT_NAME(ECDHE_RSA_WITH_AES_256_CBC_SHA) = 0xC014, tls_ciphersuite_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 CF_SWIFT_NAME(ECDHE_ECDSA_WITH_AES_128_CBC_SHA256) = 0xC023, diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecSignVerifyTransform.h b/Frameworks/Security.framework/Versions/A/Headers/SecSignVerifyTransform.h index ef4305af..beba0a1e 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecSignVerifyTransform.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecSignVerifyTransform.h @@ -36,9 +36,9 @@ extern "C" { CF_ASSUME_NONNULL_BEGIN CF_IMPLICIT_BRIDGING_ENABLED - extern const CFStringRef kSecKeyAttributeName, kSecSignatureAttributeName, kSecInputIsAttributeName API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + extern const CFStringRef kSecKeyAttributeName, kSecSignatureAttributeName, kSecInputIsAttributeName API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); // WARNING: kSecInputIsRaw is frequently cryptographically unsafe (for example if you don't blind a DSA or ECDSA signature you give away the key very quickly), please only use it if you really know the math. - extern const CFStringRef kSecInputIsPlainText, kSecInputIsDigest, kSecInputIsRaw API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + extern const CFStringRef kSecInputIsPlainText, kSecInputIsDigest, kSecInputIsRaw API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); // Supported optional attributes: kSecDigestTypeAttribute (kSecDigestMD2, kSecDigestMD4, kSecDigestMD5, kSecDigestSHA1, kSecDigestSHA2), kSecDigestLengthAttribute /*! @@ -62,7 +62,7 @@ extern "C" { SecTransformRef SecSignTransformCreate(SecKeyRef key, CFErrorRef* error ) - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecVerifyTransformCreate @@ -89,7 +89,7 @@ extern "C" { CFDataRef __nullable signature, CFErrorRef* error ) - API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); + API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); CF_IMPLICIT_BRIDGING_DISABLED CF_ASSUME_NONNULL_END diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecTransform.h b/Frameworks/Security.framework/Versions/A/Headers/SecTransform.h index 71495f3c..b6848dc2 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecTransform.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecTransform.h @@ -199,12 +199,12 @@ CF_ENUM(CFIndex) kSecTransformErrorAborted = 20, kSecTransformInvalidArgument = 21 -} API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +} API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); typedef CFTypeRef SecTransformRef -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); typedef CFTypeRef SecGroupTransformRef -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformGetTypeID @@ -213,7 +213,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, */ CF_EXPORT CFTypeID SecTransformGetTypeID(void) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecGroupTransformGetTypeID @@ -223,7 +223,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, CF_EXPORT CFTypeID SecGroupTransformGetTypeID(void) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /**************** Transform Attribute Names ****************/ @@ -232,14 +232,14 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, The name of the input attribute. */ CF_EXPORT const CFStringRef kSecTransformInputAttributeName -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecTransformOutputAttributeName The name of the output attribute. */ CF_EXPORT const CFStringRef kSecTransformOutputAttributeName -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecTransformDebugAttributeName @@ -251,21 +251,21 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, stderr. */ CF_EXPORT const CFStringRef kSecTransformDebugAttributeName -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecTransformTransformName The name of the transform. */ CF_EXPORT const CFStringRef kSecTransformTransformName -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @constant kSecTransformAbortAttributeName The name of the abort attribute. */ CF_EXPORT const CFStringRef kSecTransformAbortAttributeName -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformCreateFromExternalRepresentation @@ -290,7 +290,7 @@ CF_EXPORT __nullable SecTransformRef SecTransformCreateFromExternalRepresentation( CFDictionaryRef dictionary, CFErrorRef *error) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformCopyExternalRepresentation @@ -314,7 +314,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, CF_EXPORT CFDictionaryRef SecTransformCopyExternalRepresentation( SecTransformRef transformRef) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformCreateGroupTransform @@ -339,7 +339,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, */ CF_EXPORT SecGroupTransformRef SecTransformCreateGroupTransform(void) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformConnectTransforms @@ -444,7 +444,7 @@ SecGroupTransformRef SecTransformConnectTransforms(SecTransformRef sourceTransfo CFStringRef destinationAttributeName, SecGroupTransformRef group, CFErrorRef *error) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformSetAttribute @@ -480,7 +480,7 @@ Boolean SecTransformSetAttribute(SecTransformRef transformRef, CFStringRef key, CFTypeRef value, CFErrorRef *error) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformGetAttribute @@ -503,7 +503,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, CF_EXPORT __nullable CFTypeRef SecTransformGetAttribute(SecTransformRef transformRef, CFStringRef key) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformFindByName @@ -528,7 +528,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, CF_EXPORT __nullable SecTransformRef SecTransformFindByName(SecGroupTransformRef transform, CFStringRef name) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @function SecTransformExecute @@ -568,7 +568,7 @@ API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, CF_EXPORT CF_RETURNS_RETAINED CFTypeRef SecTransformExecute(SecTransformRef transformRef, CFErrorRef* errorRef) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); /*! @typedef SecMessageBlock @@ -621,7 +621,7 @@ CF_EXPORT void SecTransformExecuteAsync(SecTransformRef transformRef, dispatch_queue_t deliveryQueue, SecMessageBlock deliveryBlock) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 12.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); CF_IMPLICIT_BRIDGING_DISABLED CF_ASSUME_NONNULL_END diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecTransformReadTransform.h b/Frameworks/Security.framework/Versions/A/Headers/SecTransformReadTransform.h index 1ab323ca..fe172cde 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecTransformReadTransform.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecTransformReadTransform.h @@ -59,7 +59,7 @@ CF_IMPLICIT_BRIDGING_ENABLED */ SecTransformRef SecTransformCreateReadTransformWithReadStream(CFReadStreamRef inputStream) -API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0), ios(NA, NA), tvos(NA, NA), watchos(NA, NA), macCatalyst(NA, NA)); +API_DEPRECATED("SecTransform is no longer supported", macos(10.7, 13.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst); CF_IMPLICIT_BRIDGING_DISABLED CF_ASSUME_NONNULL_END diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecTrust.h b/Frameworks/Security.framework/Versions/A/Headers/SecTrust.h index 2574c7c5..af53979b 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecTrust.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecTrust.h @@ -135,6 +135,15 @@ extern const CFStringRef kSecPropertyTypeError field is meant to be displayed to the user as the validated name of the company or entity that owns the certificate if the kSecTrustExtendedValidation key is present. + @constant kSecTrustQCStatements + This key will be present and have a value of CFStringRef if + the leaf certificate contains qualified certificate statements. + The string can be displayed to the user as a representation + of a qualified certificate's purpose. + @constant kSecTrustQWACValidation + This key will be present and have a value of kCFBooleanTrue + if this chain was successfully validated as a Qualified Website + Authentication Certificate. @constant kSecTrustResultValue This key will be present if a trust evaluation has been performed. Its value is a CFNumberRef representing the SecTrustResultType result @@ -181,6 +190,10 @@ extern const CFStringRef kSecTrustCertificateTransparency __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0); extern const CFStringRef kSecTrustCertificateTransparencyWhiteList __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12, __MAC_10_13, __IPHONE_10_0, __IPHONE_11_0); +extern const CFStringRef kSecTrustQCStatements + API_AVAILABLE(macos(15.4), ios(18.4), tvos(18.4), watchos(11.4)); +extern const CFStringRef kSecTrustQWACValidation + API_AVAILABLE(macos(15.4), ios(18.4), tvos(18.4), watchos(11.4)); #ifdef __BLOCKS__ /*! @@ -647,7 +660,7 @@ CF_IMPLICIT_BRIDGING_DISABLED CF_ASSUME_NONNULL_END /* - * Legacy functions (OS X only) + * Legacy functions (macOS only) */ #if TARGET_OS_OSX @@ -660,7 +673,7 @@ CF_IMPLICIT_BRIDGING_ENABLED @discussion Deprecated in OS X 10.9. User trust settings are managed by functions in SecTrustSettings.h (starting with OS X 10.5), and by the SecTrustCopyExceptions and SecTrustSetExceptions functions (starting with - iOS 4 and OS X 10.9). The latter two functions are recommended for both OS X + iOS 4 and OS X 10.9). The latter two functions are recommended for both macOS and iOS, as they avoid the need to explicitly specify these values. */ typedef SecTrustResultType SecTrustUserSetting diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecTrustSettings.h b/Frameworks/Security.framework/Versions/A/Headers/SecTrustSettings.h index 48a2eb74..0ad08be6 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecTrustSettings.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecTrustSettings.h @@ -65,7 +65,7 @@ CF_ASSUME_NONNULL_BEGIN * -- Locally administered, system-wide. Administrator privileges are required * to make changes to this domain. * -- System. These Trust Settings are immutable and comprise the set of trusted - * root certificates supplied in Mac OS X. + * root certificates supplied in macOS. * * Per-user Trust Settings override locally administered Trust Settings, which * in turn override the System Trust Settings. @@ -75,7 +75,7 @@ CF_ASSUME_NONNULL_BEGIN * Usage Constraints. Each Usage Constraints dictionary contains zero or one of * each the following components: * - * key = kSecTrustSettingsPolicy On OSX, value = SecPolicyRef + * key = kSecTrustSettingsPolicy On macOS, value = SecPolicyRef On iOS, value = policy OID as CFString * * key = kSecTrustSettingsApplication value = SecTrustedApplicationRef diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecureDownload.h b/Frameworks/Security.framework/Versions/A/Headers/SecureDownload.h index 64b4855a..f3eaa4b4 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecureDownload.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecureDownload.h @@ -36,7 +36,7 @@ extern "C" { @header SecureDownload @abstract Used by clients to implement Apple's Verified Download System. - Please note that a succesful check does not guarantee anything about + Please note that a successful check does not guarantee anything about the safety of the file being downloaded. Rather, it simply checks to make sure that the contents of the file being downloaded exactly matches the contents of the file when the ticket was originally generated. diff --git a/Frameworks/Security.framework/Versions/A/Headers/SecureTransport.h b/Frameworks/Security.framework/Versions/A/Headers/SecureTransport.h index a3fe705e..7dbf0d4c 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/SecureTransport.h +++ b/Frameworks/Security.framework/Versions/A/Headers/SecureTransport.h @@ -287,7 +287,7 @@ __SECURETRANSPORT_API_DEPRECATED(macos(10.2, 10.13), ios(5.0, 11.0)); * and earlier versions, a new context is created using SSLNewContext, * and is disposed by calling SSLDisposeContext. * - * On i0S 5.0 and later, as well as Mac OS X versions after 10.7, the + * On i0S 5.0 and later, as well as macOS versions after 10.7, the * SSLContextRef is a true CFType object with retain-release semantics. * New code should create a new context using SSLCreateContext (instead * of SSLNewContext), and dispose the context by calling CFRelease @@ -324,10 +324,10 @@ SSLCreateContext(CFAllocatorRef __nullable alloc, SSLProtocolSide protocolSide, * @note * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * NOTE: this function is not available on iOS, and should be considered - * deprecated on Mac OS X. Your code should use SSLCreateContext instead. + * deprecated on macOS. Your code should use SSLCreateContext instead. * * @param isServer Flag indicating if the context is for the server (true) or client (false). * @param contextPtr Pointer to SSLContextRef where result will be stored. @@ -344,10 +344,10 @@ SSLNewContext (Boolean isServer, * @note * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * NOTE: this function is not available on iOS, and should be considered - * deprecated on Mac OS X. Your code should use CFRelease to dispose a session + * deprecated on macOS. Your code should use CFRelease to dispose a session * created with SSLCreateContext. * * @param context A SSLContextRef to deallocate and destroy. @@ -357,7 +357,7 @@ OSStatus SSLDisposeContext (SSLContextRef context) __SECURETRANSPORT_API_DEPRECATED(macos(10.2, 10.9)); -#endif /* MAC OS X */ +#endif /* MACOS */ /* * @function SSLGetSessionState @@ -524,10 +524,10 @@ SSLGetProtocolVersionMax (SSLContextRef context, * kSSLProtocolAll * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note this function is not available on iOS, and should be considered - * deprecated on Mac OS X. You can use SSLSetProtocolVersionMin and/or + * deprecated on macOS. You can use SSLSetProtocolVersionMin and/or * SSLSetProtocolVersionMax to specify which protocols are enabled. * @param context A valid SSLContextRef. * @param protocol A SSLProtocol enumerated value. @@ -544,10 +544,10 @@ SSLSetProtocolVersionEnabled (SSLContextRef context, * Obtain a value specified in SSLSetProtocolVersionEnabled. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * NOTE: this function is not available on iOS, and should be considered - * deprecated on Mac OS X. You can use SSLGetProtocolVersionMin and/or + * deprecated on macOS. You can use SSLGetProtocolVersionMin and/or * SSLGetProtocolVersionMax to check whether a protocol is enabled. */ OSStatus @@ -564,7 +564,7 @@ SSLGetProtocolVersionEnabled(SSLContextRef context, * @discussion SSLSetProtocolVersion cannot be called when a session is active. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note this function is not available on iOS, and deprecated on Mac OS X 10.8. * Use SSLSetProtocolVersionMin and/or SSLSetProtocolVersionMax to specify @@ -587,7 +587,7 @@ SSLSetProtocolVersion (SSLContextRef context, * SSL2 and TLS1 enabled, SSL3 disabled). * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note this function is not available on iOS, and deprecated on Mac OS X 10.8. * Use SSLGetProtocolVersionMin and/or SSLGetProtocolVersionMax to check @@ -601,7 +601,7 @@ SSLGetProtocolVersion (SSLContextRef context, SSLProtocol *protocol) /* RETURNED */ __SECURETRANSPORT_API_DEPRECATED(macos(10.2, 10.8)); -#endif /* MAC OS X */ +#endif /* MACOS */ /* * @function SSLSetCertificate @@ -906,10 +906,10 @@ SSLSetSessionTicketsEnabled (SSLContextRef context, * chain before proceeding with data transfer. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. To disable peer certificate chain validation, you + * deprecated on macOS. To disable peer certificate chain validation, you * can instead use SSLSetSessionOption to set kSSLSessionOptionBreakOnServerAuth * to true. This will disable verification and cause SSLHandshake to return with * an errSSLServerAuthCompleted result when the peer certificates have been @@ -929,10 +929,10 @@ SSLSetEnableCertVerify (SSLContextRef context, * @abstract Check whether peer certificate chain validation is enabled. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. To check whether peer certificate chain validation + * deprecated on macOS. To check whether peer certificate chain validation * is enabled in a context, call SSLGetSessionOption to obtain the value of * the kSSLSessionOptionBreakOnServerAuth session option flag. If the value * of this option flag is true, then verification is disabled. @@ -952,10 +952,10 @@ SSLGetEnableCertVerify (SSLContextRef context, * flag is false, meaning expired certs result in an errSSLCertExpired error. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. To ignore expired certificate errors, first disable + * deprecated on macOS. To ignore expired certificate errors, first disable * Secure Transport's automatic verification of peer certificates by calling * SSLSetSessionOption to set kSSLSessionOptionBreakOnServerAuth to true. When * SSLHandshake subsequently returns an errSSLServerAuthCompleted result, @@ -1020,10 +1020,10 @@ SSLSetAllowsExpiredCerts (SSLContextRef context, * @abstract Obtain the current value of an SSLContext's "allowExpiredCerts" flag. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. + * deprecated on macOS. * @param context A valid SSLContextRef. * @param allowsExpired Pointer to Boolean where the expired certificate allowance Boolean is stored. * @result errSecSuccess on success, alternative error on failure. @@ -1041,10 +1041,10 @@ SSLGetAllowsExpiredCerts (SSLContextRef context, * errSSLCertExpired error. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. To ignore expired certificate errors, first disable + * deprecated on macOS. To ignore expired certificate errors, first disable * Secure Transport's automatic verification of peer certificates by calling * SSLSetSessionOption to set kSSLSessionOptionBreakOnServerAuth to true. When * SSLHandshake subsequently returns an errSSLServerAuthCompleted result, @@ -1070,10 +1070,10 @@ SSLSetAllowsExpiredRoots (SSLContextRef context, * @abstract Obtain the current value of an SSLContext's "allow expired roots" flag. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. + * deprecated on macOS. * @param context A valid SSLContextRef. * @param allowsExpired Pointer to Boolean where the expired root certificate allowance * Boolean is stored. @@ -1101,10 +1101,10 @@ SSLGetAllowsExpiredRoots (SSLContextRef context, * true, allowing connection to a totally untrusted peer. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. To ignore unknown root cert errors, first disable + * deprecated on macOS. To ignore unknown root cert errors, first disable * Secure Transport's automatic verification of peer certificates by calling * SSLSetSessionOption to set kSSLSessionOptionBreakOnServerAuth to true. When * SSLHandshake subsequently returns an errSSLServerAuthCompleted result, @@ -1129,10 +1129,10 @@ SSLSetAllowsAnyRoot (SSLContextRef context, * @abstract Obtain the current value of an SSLContext's "allow any root" flag. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. + * deprecated on macOS. * @param context A valid SSLContextRef. * @param anyRoot Pointer to Boolean to store any root allowance Boolean. * @result errSecSuccess on success, alternative error on failure. @@ -1157,10 +1157,10 @@ SSLGetAllowsAnyRoot (SSLContextRef context, * The trustedRoots array contains SecCertificateRefs. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. To trust specific roots in a session, first disable + * deprecated on macOS. To trust specific roots in a session, first disable * Secure Transport's automatic verification of peer certificates by calling * SSLSetSessionOption to set kSSLSessionOptionBreakOnServerAuth to true. When * SSLHandshake subsequently returns an errSSLServerAuthCompleted result, @@ -1191,10 +1191,10 @@ SSLSetTrustedRoots (SSLContextRef context, * Caller must CFRelease the returned CFArray. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. To get the current set of trusted roots, call the + * deprecated on macOS. To get the current set of trusted roots, call the * SSLCopyPeerTrust function to obtain the SecTrustRef for the peer certificate * chain, then SecTrustCopyCustomAnchorCertificates (see SecTrust.h). * @param context A valid SSLContextRef. @@ -1218,10 +1218,10 @@ SSLCopyTrustedRoots (SSLContextRef context, * the end of the returned array. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. To get peer certificates, call SSLCopyPeerTrust + * deprecated on macOS. To get peer certificates, call SSLCopyPeerTrust * to obtain the SecTrustRef for the peer certificate chain, then use the * SecTrustCopyCertificateChain to retrieve individual certificates in * the chain (see SecTrust.h). @@ -1234,7 +1234,7 @@ SSLCopyPeerCertificates (SSLContextRef context, CFArrayRef * __nonnull CF_RETURNS_RETAINED certs) /* RETURNED */ __SECURETRANSPORT_API_DEPRECATED(macos(10.5, 10.9)); -#endif /* MAC OS X */ +#endif /* MACOS */ /* * @function SSLCopyPeerTrust @@ -1469,7 +1469,7 @@ SSLCopyCertificateAuthorities(SSLContextRef context, CFArrayRef * __nonnull CF_RETURNS_RETAINED certificates) /* RETURNED */ __SECURETRANSPORT_API_DEPRECATED(macos(10.5, 10.15)); -#endif /* MAC OS X */ +#endif /* MACOS */ /* * @function SSLCopyDistinguishedNames @@ -1549,10 +1549,10 @@ SSLGetDiffieHellmanParams (SSLContextRef context, * enabled. * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. RSA blinding is enabled unconditionally, as + * deprecated on macOS. RSA blinding is enabled unconditionally, as * it prevents a known way for an attacker to recover the private key, * and the performance gain of disabling it is negligible. * @param context A valid SSLContextRef. @@ -1570,10 +1570,10 @@ SSLSetRsaBlinding (SSLContextRef context, * @discussion See SSLSetRsaBlinding(). * * ========================== - * MAC OS X ONLY (DEPRECATED) + * MACOS ONLY (DEPRECATED) * ========================== * @note This function is not available on iOS, and should be considered - * deprecated on Mac OS X. + * deprecated on macOS. * @param context A valid SSLContextRef. * @param blinding Pointer to Boolean storage for RSA blinding state. * @result errSecSuccess on success, alternative error on failure. @@ -1583,7 +1583,7 @@ SSLGetRsaBlinding (SSLContextRef context, Boolean *blinding) __SECURETRANSPORT_API_DEPRECATED(macos(10.2, 10.9)); -#endif /* MAC OS X */ +#endif /* MACOS */ /******************************* ******** I/O Functions ******** diff --git a/Frameworks/Security.framework/Versions/A/Headers/cssmapple.h b/Frameworks/Security.framework/Versions/A/Headers/cssmapple.h index 8fcb7582..dc4b3ec4 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/cssmapple.h +++ b/Frameworks/Security.framework/Versions/A/Headers/cssmapple.h @@ -154,8 +154,8 @@ enum { /* Parameters and structures for Apple-defined ACL subjects and samples */ enum { /* types of code signatures - item 1 of CSSM_ACL_SUBJECT_TYPE_CODE_SIGNATURE subjects */ - CSSM_ACL_CODE_SIGNATURE_INVALID = 0, /* standard OS X code signature */ - CSSM_ACL_CODE_SIGNATURE_OSX = 1 /* standard OS X code signature */ + CSSM_ACL_CODE_SIGNATURE_INVALID = 0, /* standard macOS code signature */ + CSSM_ACL_CODE_SIGNATURE_OSX = 1 /* standard macOS code signature */ }; /* ACL subjects of type PROCESS */ @@ -735,7 +735,14 @@ enum * Key is specified in CSSM_CSP_CreatePassThroughContext. * Hash is allocated bythe CSP, in the App's memory, and returned * in *outData. */ - CSSM_APPLECSP_KEYDIGEST = 0x100 + CSSM_APPLECSP_KEYDIGEST = 0x100, + + /* Given a private CSSM_KEY_PTR in any format, obtain its + * public key data blob. + * Key is specified in CSSM_CSP_CreatePassThroughContext. + * Public key data is allocated by CSP, in the App's memory, and returned + * in *outData. */ + CSSM_APPLECSP_PUBKEY = 0x101, }; diff --git a/Frameworks/Security.framework/Versions/A/Headers/oidsbase.h b/Frameworks/Security.framework/Versions/A/Headers/oidsbase.h index ba77883d..8ac2a8c7 100644 --- a/Frameworks/Security.framework/Versions/A/Headers/oidsbase.h +++ b/Frameworks/Security.framework/Versions/A/Headers/oidsbase.h @@ -464,7 +464,7 @@ representation is implied */ #define APPLE_EXTENSION_ESCROW_SERVICE_LENGTH APPLE_EXTENSION_OID_LENGTH + 2 /* - * Apple OS X Provisioning Profile Signing Marker + * Apple macOS Provisioning Profile Signing Marker * (note this is unfortunately under the EKU arc although it's used as a cert extension) */ #define APPLE_EXTENSION_PROVISIONING_PROFILE_SIGNING APPLE_EKU_OID, 11 diff --git a/Frameworks/Security.framework/Versions/A/Security.tbd b/Frameworks/Security.framework/Versions/A/Security.tbd index 2fcf4b86..b32cb648 100644 --- a/Frameworks/Security.framework/Versions/A/Security.tbd +++ b/Frameworks/Security.framework/Versions/A/Security.tbd @@ -3,7 +3,7 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/Security.framework/Versions/A/Security' -current-version: 61040.61.1 +current-version: 61439.101.1 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] @@ -41,17 +41,18 @@ exports: _CMSEncoderSetAppleExpirationTime, _CMSEncoderSetCertificateChainMode, _CMSEncoderSetEncapsulatedContentTypeOID, _CMSEncoderSetEncoder, _CMSEncoderSetHasDetachedContent, _CMSEncoderSetSignerAlgorithm, - _CMSEncoderSetSigningTime, _CMSEncoderUpdateContent, _ClearSOSCompatibilityModeOverride, - _CopyCurrentScopePlist, _CreateArrayOfPeerInfoWithXPCObject, - _CreateCFDataFromBase64CFString, _CreatePrivateKeyMatchingQuery, - _CreateXPCObjectWithArrayOfPeerInfo, _CreateXPCObjectWithCFSetRef, - _CuttlefishErrorDomain, _CuttlefishErrorRetryAfterKey, _GenerateECPair, - _GeneratePermanentECPair, _KCSharingLogObject, _KCSharingSetupInvitationNotificationProtocol, - _KCSharingSetupMessagingdServerProtocol, _KCSharingSetupServerProtocol, - _LKABackupReportEnd, _LKABackupReportStart, _LKAEventStash, - _LKAEventStashLoad, _LKAEventUpgrade, _LKAForceClose, _LKAReportKeychainUpgradeOutcome, - _LKAReportKeychainUpgradeOutcomeWithError, _MDS_InstallFile, - _MDS_RemoveSubservice, _MS_SecCMSCertificatesOnlyMessageCopyCertificates, + _CMSEncoderSetSigningTime, _CMSEncoderUpdateContent, _ClearRollOctagonIdentityEnabledOverride, + _ClearSOSCompatibilityModeOverride, _CopyCurrentScopePlist, + _CreateArrayOfPeerInfoWithXPCObject, _CreateCFDataFromBase64CFString, + _CreatePrivateKeyMatchingQuery, _CreateXPCObjectWithArrayOfPeerInfo, + _CreateXPCObjectWithCFSetRef, _CuttlefishErrorDomain, _CuttlefishErrorRetryAfterKey, + _GenerateECPair, _GeneratePermanentECPair, _IsRollOctagonIdentityEnabled, + _KCSharingGroupsUpdatedNotification, _KCSharingLogObject, + _KCSharingSetupInvitationNotificationProtocol, _KCSharingSetupMessagingdServerProtocol, + _KCSharingSetupServerProtocol, _LKABackupReportEnd, _LKABackupReportStart, + _LKAEventStash, _LKAEventStashLoad, _LKAEventUpgrade, _LKAForceClose, + _LKAReportKeychainUpgradeOutcome, _LKAReportKeychainUpgradeOutcomeWithError, + _MDS_InstallFile, _MDS_RemoveSubservice, _MS_SecCMSCertificatesOnlyMessageCopyCertificates, _MS_SecCMSDecodeSignedData, _MS_SecCMSDecryptEnvelopedData, _MS_SecCMSVerifySignedData_internal, _NtlmCreateClientRequest, _NtlmCreateClientResponse, _NtlmGeneratePasswordHashes, _NtlmGeneratorCreate, @@ -78,33 +79,33 @@ exports: _SFAnalyticsTableHardFailures, _SFAnalyticsTableNotes, _SFAnalyticsTableRockwell, _SFAnalyticsTableSamples, _SFAnalyticsTableSchema, _SFAnalyticsTableSoftFailures, _SFAnalyticsTableSuccessCount, _SFAnalyticsTopicCloudServices, - _SFAnalyticsTopicKeySync, _SFAnalyticsTopicNetworking, _SFAnalyticsTopicTransparency, - _SFAnalyticsTopicTrust, _SFAnalyticsUserDefaultsSuite, _SFSQLiteJournalSuffixes, - _SOSBKSBKeyIsInKeyBag, _SOSBKSBPeerBackupKeyIsInKeyBag, _SOSBKSBPrefixedKeyIsInKeyBag, - _SOSBSKBAllPeersBackupKeysAreInKeyBag, _SOSBSKBCopyAKSBag, - _SOSBSKBCopyEncoded, _SOSBSKBCopyRecoveryKey, _SOSBSKBCountPeers, - _SOSBSKBGetPeers, _SOSBSKBHasRecoveryKey, _SOSBSKBHasThisRecoveryKey, - _SOSBSKBIsDirect, _SOSBSKBIsGoodBackupPublic, _SOSBSKBLoadAndUnlockWithDirectSecret, - _SOSBSKBLoadAndUnlockWithPeerIDAndSecret, _SOSBSKBLoadAndUnlockWithPeerSecret, - _SOSBSKBLoadAndUnlockWithWrappingSecret, _SOSBSKBLoadLocked, - _SOSBSKBPeerIsInKeyBag, _SOSBSKBRemoveRecoveryKey, _SOSBackupSliceKeyBagCreate, - _SOSBackupSliceKeyBagCreateDirect, _SOSBackupSliceKeyBagCreateFromData, - _SOSBackupSliceKeyBagCreateWithAdditionalKeys, _SOSCCAcceptApplicants, - _SOSCCAccountGetKeyCircleGeneration, _SOSCCAccountGetPublicKey, - _SOSCCAccountHasPublicKey, _SOSCCAccountSetToNew, _SOSCCBailFromCircle_BestEffort, - _SOSCCCanAuthenticate, _SOSCCCircleHash, _SOSCCCleanupKVSKeys, - _SOSCCCopyApplicantPeerInfo, _SOSCCCopyApplication, _SOSCCCopyCircleJoiningBlob, - _SOSCCCopyConcurringPeerPeerInfo, _SOSCCCopyGenerationPeerInfo, - _SOSCCCopyInitialSyncData, _SOSCCCopyMyPeerInfo, _SOSCCCopyMyPeerWithNewDeviceRecoverySecret, - _SOSCCCopyNotValidPeerPeerInfo, _SOSCCCopyPeerPeerInfo, _SOSCCCopyRecoveryPublicKey, - _SOSCCCopyRetirementPeerInfo, _SOSCCCopyValidPeerPeerInfo, - _SOSCCCopyViewUnawarePeerInfo, _SOSCCCredentialQueue, _SOSCCFetchCompatibilityMode, - _SOSCCFetchCompatibilityModeCachedValue, _SOSCCForEachEngineStateAsString, - _SOSCCForEachEngineStateAsStringFromArray, _SOSCCGetLastDepartureReason, - _SOSCCGetStatusDescription, _SOSCCGetViewResultDescription, - _SOSCCGhostBust, _SOSCCGhostBustInfo, _SOSCCGhostBustTriggerTimed, - _SOSCCIsAppleTVSyncing, _SOSCCIsContinuityUnlockSyncing, _SOSCCIsHomeKitSyncing, - _SOSCCIsIcloudKeychainSyncing, _SOSCCIsSOSTrustAndSyncingEnabled, + _SFAnalyticsTopicKeySync, _SFAnalyticsTopicNetworking, _SFAnalyticsTopicSWTransparency, + _SFAnalyticsTopicTransparency, _SFAnalyticsTopicTrust, _SFAnalyticsUserDefaultsSuite, + _SFSQLiteJournalSuffixes, _SOSBKSBKeyIsInKeyBag, _SOSBKSBPeerBackupKeyIsInKeyBag, + _SOSBKSBPrefixedKeyIsInKeyBag, _SOSBSKBAllPeersBackupKeysAreInKeyBag, + _SOSBSKBCopyAKSBag, _SOSBSKBCopyEncoded, _SOSBSKBCopyRecoveryKey, + _SOSBSKBCountPeers, _SOSBSKBGetPeers, _SOSBSKBHasRecoveryKey, + _SOSBSKBHasThisRecoveryKey, _SOSBSKBIsDirect, _SOSBSKBIsGoodBackupPublic, + _SOSBSKBLoadAndUnlockWithDirectSecret, _SOSBSKBLoadAndUnlockWithPeerIDAndSecret, + _SOSBSKBLoadAndUnlockWithPeerSecret, _SOSBSKBLoadAndUnlockWithWrappingSecret, + _SOSBSKBLoadLocked, _SOSBSKBPeerIsInKeyBag, _SOSBSKBRemoveRecoveryKey, + _SOSBackupSliceKeyBagCreate, _SOSBackupSliceKeyBagCreateDirect, + _SOSBackupSliceKeyBagCreateFromData, _SOSBackupSliceKeyBagCreateWithAdditionalKeys, + _SOSCCAcceptApplicants, _SOSCCAccountGetKeyCircleGeneration, + _SOSCCAccountGetPublicKey, _SOSCCAccountHasPublicKey, _SOSCCAccountSetToNew, + _SOSCCBailFromCircle_BestEffort, _SOSCCCanAuthenticate, _SOSCCCircleHash, + _SOSCCCleanupKVSKeys, _SOSCCCopyApplicantPeerInfo, _SOSCCCopyApplication, + _SOSCCCopyCircleJoiningBlob, _SOSCCCopyConcurringPeerPeerInfo, + _SOSCCCopyGenerationPeerInfo, _SOSCCCopyInitialSyncData, _SOSCCCopyMyPeerInfo, + _SOSCCCopyMyPeerWithNewDeviceRecoverySecret, _SOSCCCopyNotValidPeerPeerInfo, + _SOSCCCopyPeerPeerInfo, _SOSCCCopyRecoveryPublicKey, _SOSCCCopyRetirementPeerInfo, + _SOSCCCopyValidPeerPeerInfo, _SOSCCCopyViewUnawarePeerInfo, + _SOSCCCredentialQueue, _SOSCCFetchCompatibilityMode, _SOSCCFetchCompatibilityModeCachedValue, + _SOSCCForEachEngineStateAsString, _SOSCCForEachEngineStateAsStringFromArray, + _SOSCCGetLastDepartureReason, _SOSCCGetStatusDescription, + _SOSCCGetViewResultDescription, _SOSCCGhostBust, _SOSCCGhostBustInfo, + _SOSCCGhostBustTriggerTimed, _SOSCCIsAppleTVSyncing, _SOSCCIsContinuityUnlockSyncing, + _SOSCCIsHomeKitSyncing, _SOSCCIsIcloudKeychainSyncing, _SOSCCIsSOSTrustAndSyncingEnabled, _SOSCCIsSOSTrustAndSyncingEnabledCachedValue, _SOSCCIsSafariSyncing, _SOSCCIsWiFiSyncing, _SOSCCJoinWithCircleJoiningBlob, _SOSCCLoggedIntoAccount, _SOSCCLoggedOutOfAccount, _SOSCCMessageFromPeerIsPending, @@ -296,11 +297,12 @@ exports: _SSLWrite, _SecABCTrigger, _SecASN1PrintableString, _SecASN1UTF8String, _SecAbsoluteTimeFromDateContent, _SecAbsoluteTimeFromDateContentWithError, _SecAccessConstraintCreateBiometryAny, _SecAccessConstraintCreateBiometryCurrentSet, - _SecAccessConstraintCreateKofN, _SecAccessConstraintCreatePasscode, - _SecAccessConstraintCreatePolicy, _SecAccessConstraintCreateTouchIDAny, - _SecAccessConstraintCreateTouchIDCurrentSet, _SecAccessConstraintCreateWatch, - _SecAccessControlAddConstraintForOperation, _SecAccessControlCopyConstraintData, - _SecAccessControlCopyData, _SecAccessControlCreate, _SecAccessControlCreateFromData, + _SecAccessConstraintCreateCompanion, _SecAccessConstraintCreateKofN, + _SecAccessConstraintCreatePasscode, _SecAccessConstraintCreatePolicy, + _SecAccessConstraintCreateTouchIDAny, _SecAccessConstraintCreateTouchIDCurrentSet, + _SecAccessConstraintCreateWatch, _SecAccessControlAddConstraintForOperation, + _SecAccessControlCopyConstraintData, _SecAccessControlCopyData, + _SecAccessControlCreate, _SecAccessControlCreateFromData, _SecAccessControlCreateWithFlags, _SecAccessControlGetConstraint, _SecAccessControlGetConstraints, _SecAccessControlGetProtection, _SecAccessControlGetRequirePassword, _SecAccessControlGetTypeID, @@ -312,22 +314,24 @@ exports: _SecAsn1Decode, _SecAsn1DecodeData, _SecAsn1EncodeItem, _SecAsn1Malloc, _SecAsn1OidCompare, _SecAsn1TaggedTemplateChooser, _SecAssessmentControl, _SecAssessmentCopyResult, _SecAssessmentCopyUpdate, _SecAssessmentCreate, - _SecAssessmentGetTypeID, _SecAssessmentLegacyCheck, _SecAssessmentRegisterPackageTicket, - _SecAssessmentTicketLookup, _SecAssessmentTicketRegister, - _SecAssessmentUpdate, _SecBackupKeybagAdd, _SecBackupKeybagDelete, - _SecBase64Decode, _SecBase64Decode2, _SecBase64Encode, _SecBase64Encode2, - _SecCFAllocatorZeroize, _SecCMSCertificatesOnlyMessageCopyCertificates, - _SecCMSCreateCertificatesOnlyMessage, _SecCMSCreateCertificatesOnlyMessageIAP, - _SecCMSCreateEnvelopedData, _SecCMSCreateSignedData, _SecCMSDecodeSignedData, - _SecCMSDecryptEnvelopedData, _SecCMSSignDataAndAttributes, - _SecCMSSignDigestAndAttributes, _SecCMSVerify, _SecCMSVerifyCopyDataAndAttributes, - _SecCMSVerifySignedData, _SecCertificateAppendToXPCArray, - _SecCertificateArrayCopyXPCArray, _SecCertificateCopyAppleExternalRoots, - _SecCertificateCopyAttributeDictionary, _SecCertificateCopyCTLogForKeyID, - _SecCertificateCopyCommonName, _SecCertificateCopyCommonNames, - _SecCertificateCopyCompanyName, _SecCertificateCopyComponentAttributes, - _SecCertificateCopyComponentType, _SecCertificateCopyCompressedMFiCert, - _SecCertificateCopyCountry, _SecCertificateCopyDNSNames, _SecCertificateCopyDNSNamesFromSAN, + _SecAssessmentGetTypeID, _SecAssessmentLegacyCheck, _SecAssessmentRegisterFunctions, + _SecAssessmentRegisterPackageTicket, _SecAssessmentTicketLookup, + _SecAssessmentTicketRegister, _SecAssessmentUpdate, _SecBackupKeybagAdd, + _SecBackupKeybagDelete, _SecBase64Decode, _SecBase64Decode2, + _SecBase64Encode, _SecBase64Encode2, _SecCFAllocatorZeroize, + _SecCMSCertificatesOnlyMessageCopyCertificates, _SecCMSCreateCertificatesOnlyMessage, + _SecCMSCreateCertificatesOnlyMessageIAP, _SecCMSCreateEnvelopedData, + _SecCMSCreateSignedData, _SecCMSDecodeSignedData, _SecCMSDecryptEnvelopedData, + _SecCMSSignDataAndAttributes, _SecCMSSignDigestAndAttributes, + _SecCMSVerify, _SecCMSVerifyCopyDataAndAttributes, _SecCMSVerifySignedData, + _SecCertificateAppendToXPCArray, _SecCertificateArrayCopyXPCArray, + _SecCertificateCopyAnchorLookupKey, _SecCertificateCopyAppleCorporateRoots, + _SecCertificateCopyAppleExternalRoots, _SecCertificateCopyAttributeDictionary, + _SecCertificateCopyCTLogForKeyID, _SecCertificateCopyCommonName, + _SecCertificateCopyCommonNames, _SecCertificateCopyCompanyName, + _SecCertificateCopyComponentAttributes, _SecCertificateCopyComponentType, + _SecCertificateCopyCompressedMFiCert, _SecCertificateCopyCountry, + _SecCertificateCopyDNSNames, _SecCertificateCopyDNSNamesFromSAN, _SecCertificateCopyData, _SecCertificateCopyEmailAddresses, _SecCertificateCopyEscrowRoots, _SecCertificateCopyExtendedKeyUsage, _SecCertificateCopyExtensionValue, _SecCertificateCopyIPAddressDatas, @@ -337,26 +341,28 @@ exports: _SecCertificateCopyKeychainItem, _SecCertificateCopyLegacyProperties, _SecCertificateCopyLocalizedProperties, _SecCertificateCopyNTPrincipalNames, _SecCertificateCopyNormalizedIssuerSequence, _SecCertificateCopyNormalizedSubjectSequence, + _SecCertificateCopyNotValidAfterDate, _SecCertificateCopyNotValidBeforeDate, _SecCertificateCopyOrganization, _SecCertificateCopyOrganizationFromX501NameContent, _SecCertificateCopyOrganizationalUnit, _SecCertificateCopyPEMRepresentation, _SecCertificateCopyPrecertTBS, _SecCertificateCopyProperties, _SecCertificateCopyPublicKeySHA1Digest, _SecCertificateCopyPublicKeySHA256Digest, - _SecCertificateCopyPublicKey_ios, _SecCertificateCopyRFC822Names, - _SecCertificateCopyRFC822NamesFromSAN, _SecCertificateCopyRFC822NamesFromSubject, - _SecCertificateCopySHA256Digest, _SecCertificateCopySerialNumberData, - _SecCertificateCopySerialNumber_ios, _SecCertificateCopySignedCertificateTimestamps, - _SecCertificateCopySubjectAttributeValue, _SecCertificateCopySubjectPublicKeyInfoSHA1Digest, - _SecCertificateCopySubjectPublicKeyInfoSHA256Digest, _SecCertificateCopySubjectSequence, - _SecCertificateCopySubjectString, _SecCertificateCopySubjectSummary, - _SecCertificateCopySummaryProperties, _SecCertificateCopyTrustedCTLogs, - _SecCertificateCopyURIs, _SecCertificateCopyiAPAuthCapabilities, - _SecCertificateCopyiAPSWAuthCapabilities, _SecCertificateCopyiPhoneDeviceCAChain, - _SecCertificateCreateFromAttributeDictionary, _SecCertificateCreateOidDataFromString, - _SecCertificateCreateWithBytes, _SecCertificateCreateWithCompressedMFiCert, - _SecCertificateCreateWithData, _SecCertificateCreateWithKeychainItem, - _SecCertificateCreateWithPEM, _SecCertificateCreateWithXPCArrayAtIndex, - _SecCertificateGetAuthorityKeyID, _SecCertificateGetBasicConstraints, - _SecCertificateGetBytePtr, _SecCertificateGetCAIssuers, _SecCertificateGetCRLDistributionPoints, + _SecCertificateCopyPublicKey_ios, _SecCertificateCopyQualifiedCertificateStatements, + _SecCertificateCopyRFC822Names, _SecCertificateCopyRFC822NamesFromSAN, + _SecCertificateCopyRFC822NamesFromSubject, _SecCertificateCopySHA256Digest, + _SecCertificateCopySerialNumberData, _SecCertificateCopySerialNumber_ios, + _SecCertificateCopySignedCertificateTimestamps, _SecCertificateCopySubjectAttributeValue, + _SecCertificateCopySubjectPublicKeyInfoSHA1Digest, _SecCertificateCopySubjectPublicKeyInfoSHA256Digest, + _SecCertificateCopySubjectSequence, _SecCertificateCopySubjectString, + _SecCertificateCopySubjectSummary, _SecCertificateCopySummaryProperties, + _SecCertificateCopyTrustedCTLogs, _SecCertificateCopyURIs, + _SecCertificateCopyiAPAuthCapabilities, _SecCertificateCopyiAPSWAuthCapabilities, + _SecCertificateCopyiPhoneDeviceCAChain, _SecCertificateCreateFromAttributeDictionary, + _SecCertificateCreateOidDataFromString, _SecCertificateCreateWithBytes, + _SecCertificateCreateWithCompressedMFiCert, _SecCertificateCreateWithData, + _SecCertificateCreateWithKeychainItem, _SecCertificateCreateWithPEM, + _SecCertificateCreateWithXPCArrayAtIndex, _SecCertificateGetAuthorityKeyID, + _SecCertificateGetBasicConstraints, _SecCertificateGetBytePtr, + _SecCertificateGetCAIssuers, _SecCertificateGetCRLDistributionPoints, _SecCertificateGetCertificatePolicies, _SecCertificateGetDeveloperIDDate, _SecCertificateGetDuplicateExtension, _SecCertificateGetExcludedSubtrees, _SecCertificateGetExtensionValue, _SecCertificateGetInhibitAnyPolicySkipCerts, @@ -430,18 +436,17 @@ exports: _SecDigestCreate, _SecDistinguishedNameCopyNormalizedContent, _SecDistinguishedNameCopyNormalizedSequence, _SecECDoWithFullKey, _SecECDoWithPubKey, _SecECKeyCopyPublicBits, _SecECKeyGetNamedCurve, - _SecErrorGetOSStatus, _SecErrorIsNestedErrorCappingEnabled, - _SecErrorSetOverrideNestedErrorCappingIsEnabled, _SecEscrowRequestHavePrecord, - _SecEscrowRequestOptionFederationMove, _SecEscrowRequestPendingCertificate, - _SecEscrowRequestPendingPasscode, _SecEscrowRequestSetupControlProtocol, - _SecFDERecoveryUnwrapCRSKWithPrivKey, _SecFDERecoveryWrapCRSKWithPubKey, - _SecFrameworkCopyIPAddressData, _SecFrameworkCopyLocalizedString, + _SecErrorGetOSStatus, _SecEscrowRequestHavePrecord, _SecEscrowRequestOptionFederationMove, + _SecEscrowRequestPendingCertificate, _SecEscrowRequestPendingPasscode, + _SecEscrowRequestSetupControlProtocol, _SecFDERecoveryUnwrapCRSKWithPrivKey, + _SecFDERecoveryWrapCRSKWithPubKey, _SecFrameworkCopyIPAddressData, + _SecFrameworkCopyLocalizedString, _SecFrameworkGetBundle, _SecFrameworkIsDNSName, _SecFrameworkIsIPAddress, _SecFrameworkIsRunningInXcode, _SecGenerateCertificateRequest, _SecGenerateCertificateRequestSubject, _SecGenerateCertificateRequestWithParameters, _SecGenerateSelfSignedCertificate, - _SecGetCurrentServerLoggingInfo, _SecIdentityCopyCertificate, - _SecIdentityCopyPrivateKey, _SecIdentityCreate, _SecIdentityGetTypeID, - _SecIdentitySignCertificate, _SecIdentitySignCertificateWithAlgorithm, + _SecGenerateSelfSignedCertificateWithError, _SecGetCurrentServerLoggingInfo, + _SecIdentityCopyCertificate, _SecIdentityCopyPrivateKey, _SecIdentityCreate, + _SecIdentityGetTypeID, _SecIdentitySignCertificate, _SecIdentitySignCertificateWithAlgorithm, _SecIdentitySignCertificateWithParameters, _SecIsInternalRelease, _SecItemAdd, _SecItemBackupCreateManifest, _SecItemBackupRestore, _SecItemBackupSetConfirmedManifest, _SecItemBackupWithChanges, @@ -450,6 +455,7 @@ exports: _SecItemCopyParentCertificates_ios, _SecItemDelete, _SecItemDeleteAll, _SecItemDeleteAllWithAccessGroups, _SecItemDeleteKeychainItemsForAppClip, _SecItemFetchCurrentItemAcrossAllDevices, _SecItemFetchCurrentItemDataAcrossAllDevices, + _SecItemFetchCurrentItemOutOfBand, _SecItemFetchPCSIdentityOutOfBand, _SecItemPersistKeychainWritesAtHighPerformanceCost, _SecItemPromoteAppClipItemsToParentApp, _SecItemSetCurrentItemAcrossAllDevices, _SecItemShareWithGroup, _SecItemUnsetCurrentItemsAcrossAllDevices, _SecItemUpdate, @@ -460,8 +466,9 @@ exports: _SecKeyCopyModulus, _SecKeyCopyPersistentRef, _SecKeyCopyPublicBytes, _SecKeyCopyPublicKey, _SecKeyCopyPublicKeyHash, _SecKeyCopySubjectPublicKeyInfo, _SecKeyCopySystemKey, _SecKeyCreate, _SecKeyCreateAttestation, - _SecKeyCreateDecryptedData, _SecKeyCreateDecryptedDataWithParameters, - _SecKeyCreateDuplicate, _SecKeyCreateECPrivateKey, _SecKeyCreateECPublicKey, + _SecKeyCreateDecapsulatedKey, _SecKeyCreateDecryptedData, + _SecKeyCreateDecryptedDataWithParameters, _SecKeyCreateDuplicate, + _SecKeyCreateECPrivateKey, _SecKeyCreateECPublicKey, _SecKeyCreateEncapsulatedKey, _SecKeyCreateEncryptedData, _SecKeyCreateEncryptedDataWithParameters, _SecKeyCreateFromAttributeDictionary, _SecKeyCreateFromPublicBytes, _SecKeyCreateFromPublicData, _SecKeyCreateFromSubjectPublicKeyInfoData, @@ -507,37 +514,39 @@ exports: _SecPolicyCheckCertSubjectCommonNamePrefix, _SecPolicyCheckCertSubjectCommonNameTEST, _SecPolicyCheckCertSubjectCountry, _SecPolicyCheckCertSubjectOrganization, _SecPolicyCheckCertSubjectOrganizationalUnit, _SecPolicyCheckCertTemporalValidity, - _SecPolicyCheckCertUnparseableExtension, _SecPolicyCheckCertWeakKeySize, - _SecPolicyCheckCertWeakSignature, _SecPolicyCopyProperties, - _SecPolicyCreateAggregateMetricEncryption, _SecPolicyCreateAggregateMetricTransparency, - _SecPolicyCreateAlisha, _SecPolicyCreateAppleAST2Service, - _SecPolicyCreateAppleATVVPNProfileSigning, _SecPolicyCreateAppleAccessoryUpdateSigning, - _SecPolicyCreateAppleAppTransportSecurity, _SecPolicyCreateAppleAssetReceipt, - _SecPolicyCreateAppleBasicAttestationSystem, _SecPolicyCreateAppleBasicAttestationUser, - _SecPolicyCreateAppleCHIPUpdateSigning, _SecPolicyCreateAppleCompatibilityEscrowProxyService, - _SecPolicyCreateAppleCompatibilityMMCSService, _SecPolicyCreateAppleCompatibilityiCloudSetupService, - _SecPolicyCreateAppleComponentCertificate, _SecPolicyCreateAppleDeveloperIDPlusTicket, - _SecPolicyCreateAppleEscrowProxyService, _SecPolicyCreateAppleExternalDeveloper, - _SecPolicyCreateAppleExternalDeveloperOptionalExpiry, _SecPolicyCreateAppleFDRProvisioning, - _SecPolicyCreateAppleFMiPService, _SecPolicyCreateAppleGSService, - _SecPolicyCreateAppleHomeKitServerAuth, _SecPolicyCreateAppleIDAuthorityPolicy, - _SecPolicyCreateAppleIDSService, _SecPolicyCreateAppleIDSServiceContext, - _SecPolicyCreateAppleIDValidationRecordSigningPolicy, _SecPolicyCreateAppleIDValidationShortcutSigningPolicy, - _SecPolicyCreateAppleKeyTransparency, _SecPolicyCreateAppleMMCSService, - _SecPolicyCreateApplePPQService, _SecPolicyCreateApplePPQSigning, - _SecPolicyCreateApplePackageSigning, _SecPolicyCreateApplePayIssuerEncryption, - _SecPolicyCreateApplePayModelSigning, _SecPolicyCreateApplePayQRCodeEncryption, - _SecPolicyCreateApplePayQRCodeSigning, _SecPolicyCreateApplePinned, - _SecPolicyCreateApplePushService, _SecPolicyCreateApplePushServiceLegacy, - _SecPolicyCreateAppleSMPEncryption, _SecPolicyCreateAppleSSLPinned, - _SecPolicyCreateAppleSSLService, _SecPolicyCreateAppleSWUpdateSigning, - _SecPolicyCreateAppleSecureIOStaticAsset, _SecPolicyCreateAppleSoftwareSigning, - _SecPolicyCreateAppleTVOSApplicationSigning, _SecPolicyCreateAppleTimeStamping, - _SecPolicyCreateAppleUniqueDeviceCertificate, _SecPolicyCreateAppleWarsaw, - _SecPolicyCreateAppleXROSApplicationSigning, _SecPolicyCreateAppleiCloudSetupService, - _SecPolicyCreateBasicX509, _SecPolicyCreateCodeSigning, _SecPolicyCreateConfigurationProfileSigner, - _SecPolicyCreateDemoDigitalCatalogSigning, _SecPolicyCreateDeveloperIDInstaller, - _SecPolicyCreateEAP, _SecPolicyCreateEscrowServiceIdKeySigning, + _SecPolicyCheckCertUnparseableExtension, _SecPolicyCheckCertValidLeaf, + _SecPolicyCheckCertWeakKeySize, _SecPolicyCheckCertWeakSignature, + _SecPolicyCopyProperties, _SecPolicyCreate3PMobileAsset, _SecPolicyCreateAggregateMetricEncryption, + _SecPolicyCreateAggregateMetricTransparency, _SecPolicyCreateAlisha, + _SecPolicyCreateAppleAST2Service, _SecPolicyCreateAppleATVVPNProfileSigning, + _SecPolicyCreateAppleAccessoryUpdateSigning, _SecPolicyCreateAppleAppTransportSecurity, + _SecPolicyCreateAppleAssetReceipt, _SecPolicyCreateAppleBasicAttestationSystem, + _SecPolicyCreateAppleBasicAttestationUser, _SecPolicyCreateAppleCHIPUpdateSigning, + _SecPolicyCreateAppleCompatibilityEscrowProxyService, _SecPolicyCreateAppleCompatibilityMMCSService, + _SecPolicyCreateAppleCompatibilityiCloudSetupService, _SecPolicyCreateAppleComponentCertificate, + _SecPolicyCreateAppleDeveloperIDPlusTicket, _SecPolicyCreateAppleEscrowProxyService, + _SecPolicyCreateAppleExternalDeveloper, _SecPolicyCreateAppleExternalDeveloperOptionalExpiry, + _SecPolicyCreateAppleFDRProvisioning, _SecPolicyCreateAppleFMiPService, + _SecPolicyCreateAppleGSService, _SecPolicyCreateAppleHomeKitServerAuth, + _SecPolicyCreateAppleIDAuthorityPolicy, _SecPolicyCreateAppleIDSService, + _SecPolicyCreateAppleIDSServiceContext, _SecPolicyCreateAppleIDValidationRecordSigningPolicy, + _SecPolicyCreateAppleIDValidationShortcutSigningPolicy, _SecPolicyCreateAppleKeyTransparency, + _SecPolicyCreateAppleMMCSService, _SecPolicyCreateApplePPQService, + _SecPolicyCreateApplePPQSigning, _SecPolicyCreateApplePackageSigning, + _SecPolicyCreateApplePayIssuerEncryption, _SecPolicyCreateApplePayModelSigning, + _SecPolicyCreateApplePayQRCodeEncryption, _SecPolicyCreateApplePayQRCodeSigning, + _SecPolicyCreateApplePinned, _SecPolicyCreateApplePushService, + _SecPolicyCreateApplePushServiceLegacy, _SecPolicyCreateAppleSMPEncryption, + _SecPolicyCreateAppleSSLPinned, _SecPolicyCreateAppleSSLService, + _SecPolicyCreateAppleSWUpdateSigning, _SecPolicyCreateAppleSecureIOStaticAsset, + _SecPolicyCreateAppleSoftwareSigning, _SecPolicyCreateAppleTVOSApplicationSigning, + _SecPolicyCreateAppleTimeStamping, _SecPolicyCreateAppleUniqueDeviceCertificate, + _SecPolicyCreateAppleWarsaw, _SecPolicyCreateAppleXROSApplicationSigning, + _SecPolicyCreateAppleiCloudSetupService, _SecPolicyCreateBasicX509, + _SecPolicyCreateCodeSigning, _SecPolicyCreateConfigurationProfileSigner, + _SecPolicyCreateDCAttestation, _SecPolicyCreateDemoDigitalCatalogSigning, + _SecPolicyCreateDeveloperIDInstaller, _SecPolicyCreateEAP, + _SecPolicyCreateEDPSigning, _SecPolicyCreateEscrowServiceIdKeySigning, _SecPolicyCreateEscrowServiceSigner, _SecPolicyCreateFactoryDeviceCertificate, _SecPolicyCreateIPSec, _SecPolicyCreateLockdownPairing, _SecPolicyCreateMDLTerminalAuth, _SecPolicyCreateMacAppStoreInstaller, _SecPolicyCreateMacAppStoreReceipt, @@ -548,29 +557,33 @@ exports: _SecPolicyCreateOSXProvisioningProfileSigning, _SecPolicyCreateOTATasking, _SecPolicyCreateOrderBundleSigner, _SecPolicyCreatePCSEscrowServiceIdKeySigning, _SecPolicyCreatePCSEscrowServiceSigner, _SecPolicyCreatePPMAggregatorConfigSigning, + _SecPolicyCreateParakeetService, _SecPolicyCreateParakeetSigning, _SecPolicyCreatePassbookCardSigner, _SecPolicyCreatePrivacyConfigurationProfileSigner, - _SecPolicyCreateQAConfigurationProfileSigner, _SecPolicyCreateQiSigning, - _SecPolicyCreateRevocation, _SecPolicyCreateSMIME, _SecPolicyCreateSSL, - _SecPolicyCreateSSLWithATSPinning, _SecPolicyCreateSSLWithKeyUsage, + _SecPolicyCreateQAConfigurationProfileSigner, _SecPolicyCreateQWAC, + _SecPolicyCreateQiSigning, _SecPolicyCreateRevocation, _SecPolicyCreateSMIME, + _SecPolicyCreateSSL, _SecPolicyCreateSSLWithATSPinning, _SecPolicyCreateSSLWithKeyUsage, _SecPolicyCreateTestApplePPQSigning, _SecPolicyCreateTestAppleSMPEncryption, _SecPolicyCreateTestMobileStoreSigner, _SecPolicyCreateURLBag, - _SecPolicyCreateWithProperties, _SecPolicyCreateiAP, _SecPolicyCreateiAPSWAuth, + _SecPolicyCreateVerifiedMark, _SecPolicyCreateWithProperties, + _SecPolicyCreateiAP, _SecPolicyCreateiAPAuthV4, _SecPolicyCreateiAPSWAuth, _SecPolicyCreateiAPSWAuthWithExpiration, _SecPolicyCreateiPhoneActivation, _SecPolicyCreateiPhoneApplicationSigning, _SecPolicyCreateiPhoneDeviceCertificate, _SecPolicyCreateiPhoneProfileApplicationSigning, _SecPolicyCreateiPhoneProvisioningProfileSigning, _SecPolicyCreateiPhoneVPNApplicationSigning, _SecPolicyCreateiTunesStoreURLBag, - _SecPolicyGetName, _SecPolicyGetOidString, _SecPolicyGetTypeID, - _SecPolicyReconcilePinningRequiredIfInfoSpecified, _SecPolicySetName, - _SecPolicySetOptionsValue, _SecPolicySetSHA256Pins, _SecPolicyXPCArrayCopyArray, + _SecPolicyGetCompatibilityOidString, _SecPolicyGetName, _SecPolicyGetOidString, + _SecPolicyGetTypeID, _SecPolicyReconcilePinningRequiredIfInfoSpecified, + _SecPolicySetATSPinning, _SecPolicySetName, _SecPolicySetOptionsValue, + _SecPolicySetSHA256Pins, _SecPolicySetSSLHostname, _SecPolicyUsesAppleAnchors, + _SecPolicyUsesConstrainedAnchors, _SecPolicyXPCArrayCopyArray, _SecRKCopyAccountRecoveryPassword, _SecRKCopyAccountRecoveryVerifier, _SecRKCopyBackupFullKey, _SecRKCopyBackupPublicKey, _SecRKCreateRecoveryKey, _SecRKCreateRecoveryKeyString, _SecRKCreateRecoveryKeyWithError, _SecRKRegisterBackupPublicKey, _SecRandomCopyBytes, _SecRequestClientIdentity, _SecRequestSharedWebCredential, _SecRequirementCopyData, _SecRequirementCopyString, _SecRequirementCreateGroup, _SecRequirementCreateWithData, - _SecRequirementCreateWithResource, _SecRequirementCreateWithString, - _SecRequirementCreateWithStringAndErrors, _SecRequirementEvaluate, - _SecRequirementGetTypeID, _SecRequirementsCopyRequirements, + _SecRequirementCreateWithLightweightCodeRequirementData, _SecRequirementCreateWithResource, + _SecRequirementCreateWithString, _SecRequirementCreateWithStringAndErrors, + _SecRequirementEvaluate, _SecRequirementGetTypeID, _SecRequirementsCopyRequirements, _SecRequirementsCopyString, _SecRequirementsCreateFromRequirements, _SecRequirementsCreateWithString, _SecSCEPCertifyRequest, _SecSCEPCertifyRequestWithAlgorithms, _SecSCEPCreateTemporaryIdentity, @@ -593,17 +606,19 @@ exports: _SecTaskCopyValuesForEntitlements, _SecTaskCreateFromSelf, _SecTaskCreateWithAuditToken, _SecTaskCreateWithXPCMessage, _SecTaskEntitlementsValidated, _SecTaskGetCodeSignStatus, - _SecTaskGetTypeID, _SecTokenItemValueCopy, _SecTranslocateAppLaunchCheckin, - _SecTranslocateCreateGeneric, _SecTranslocateCreateOriginalPathForURL, - _SecTranslocateCreateSecureDirectoryForURL, _SecTranslocateDeleteSecureDirectory, - _SecTranslocateIsTranslocatedURL, _SecTranslocateStartListening, - _SecTranslocateStartListeningWithOptions, _SecTranslocateURLShouldRunTranslocated, - _SecTrustAddToInputCertificates, _SecTrustCopyCertificateChain, - _SecTrustCopyCustomAnchorCertificates, _SecTrustCopyDetailedPropertiesAtIndex, - _SecTrustCopyExceptions, _SecTrustCopyFailureDescription, - _SecTrustCopyFilteredDetails, _SecTrustCopyInfo, _SecTrustCopyInputCertificates, - _SecTrustCopyKey, _SecTrustCopyPolicies, _SecTrustCopyProperties_ios, - _SecTrustCopyPublicKey, _SecTrustCopyResult, _SecTrustCopySummaryPropertiesAtIndex, + _SecTaskGetTypeID, _SecTaskValidateForLightweightCodeRequirementData, + _SecTokenItemValueCopy, _SecTranslocateAppLaunchCheckin, _SecTranslocateCreateGeneric, + _SecTranslocateCreateOriginalPathForURL, _SecTranslocateCreateSecureDirectoryForURL, + _SecTranslocateDeleteSecureDirectory, _SecTranslocateIsTranslocatedURL, + _SecTranslocateStartListening, _SecTranslocateStartListeningWithOptions, + _SecTranslocateURLShouldRunTranslocated, _SecTrustAddToInputCertificates, + _SecTrustCopyCertificateChain, _SecTrustCopyCustomAnchorCertificates, + _SecTrustCopyDetailedPropertiesAtIndex, _SecTrustCopyExceptions, + _SecTrustCopyFailureDescription, _SecTrustCopyFilteredDetails, + _SecTrustCopyInfo, _SecTrustCopyInputCertificates, _SecTrustCopyKey, + _SecTrustCopyPolicies, _SecTrustCopyProperties_ios, _SecTrustCopyPublicKey, + _SecTrustCopyResult, _SecTrustCopySummaryPropertiesAtIndex, + _SecTrustCopyTrustStoreAssetVersion, _SecTrustCopyTrustStoreContentDigest, _SecTrustCreateWithCertificates, _SecTrustDeserialize, _SecTrustEvaluate, _SecTrustEvaluateAsync, _SecTrustEvaluateAsyncWithError, _SecTrustEvaluateFastAsync, _SecTrustEvaluateLeafOnly, _SecTrustEvaluateWithError, _SecTrustFlushResponseCache, @@ -631,19 +646,20 @@ exports: _SecTrustSettingsPurgeCache, _SecTrustSettingsPurgeUserAdminCertsCache, _SecTrustSettingsRemoveTrustSettings, _SecTrustSettingsSetTrustSettings, _SecTrustSettingsUserAdminDomainsContain, _SecTrustSettingsXPCMigrate, - _SecTrustStoreContains, _SecTrustStoreCopyAll, _SecTrustStoreCopyCARevocationAdditions, - _SecTrustStoreCopyCTExceptions, _SecTrustStoreCopyTransparentConnectionPins, - _SecTrustStoreCopyUsageConstraints, _SecTrustStoreDomainName, - _SecTrustStoreForDomain, _SecTrustStoreGetSettingsAssetVersionNumber, + _SecTrustStoreContains, _SecTrustStoreCopyAll, _SecTrustStoreCopyAnchors, + _SecTrustStoreCopyCARevocationAdditions, _SecTrustStoreCopyCTExceptions, + _SecTrustStoreCopyTransparentConnectionPins, _SecTrustStoreCopyUsageConstraints, + _SecTrustStoreDomainName, _SecTrustStoreForDomain, _SecTrustStoreGetSettingsAssetVersionNumber, _SecTrustStoreGetSettingsVersionNumber, _SecTrustStoreRemoveAll, _SecTrustStoreRemoveCertificate, _SecTrustStoreSetCARevocationAdditions, _SecTrustStoreSetCTExceptions, _SecTrustStoreSetTransparentConnectionPins, _SecTrustStoreSetTrustSettings, _SecTrustTriggerValidUpdate, _SecVerifyCertificateRequest, _SessionCreate, _SessionGetDistinguishedUser, _SessionGetInfo, _SessionSetDistinguishedUser, _SessionSetUserPreferences, - _SetSOSCompatibilityMode, __NtlmCreateClientResponse, __OctagonSignpostCreate, - __OctagonSignpostGetNanoseconds, __OctagonSignpostLogSystem, - __SOSControlSetupInterface, __SSLProtocolVersionToWireFormatValue, + _SetRollOctagonIdentityEnabled, _SetSOSCompatibilityMode, + _TrustedPeersHelperErrorDomain, _TrustedPeersHelperRecoveryKeySetErrorDomain, + __NtlmCreateClientResponse, __OctagonSignpostCreate, __OctagonSignpostGetNanoseconds, + __OctagonSignpostLogSystem, __SOSControlSetupInterface, __SSLProtocolVersionToWireFormatValue, __SecItemAddAndNotifyOnSync, __SecItemCreatePersistentRef, __SecItemCreateUUIDBasedPersistentRef, __SecItemFetchDigests, __SecItemParsePersistentRef, __SecKeyCopyUnwrapKey, __SecKeyCopyWrapKey, @@ -674,20 +690,19 @@ exports: _kSOSCCCircleChangedNotification, _kSOSCCCircleOctagonKeysChangedNotification, _kSOSCCEngineStateCoderKey, _kSOSCCEngineStateManifestCountKey, _kSOSCCEngineStateManifestHashKey, _kSOSCCEngineStatePeerIDKey, - _kSOSCCEngineStateSyncSetKey, _kSOSCCHoldLockForInitialSync, - _kSOSCCInitialSyncChangedNotification, _kSOSCCPeerAvailable, - _kSOSCCRecoveryKeyChanged, _kSOSCCSOSIsNowOFF, _kSOSCCViewMembershipChangedNotification, - _kSOSCountKey, _kSOSDSIDKey, _kSOSErrorDomain, _kSOSHsaCrKeyDictionary, - _kSOSInternalAccessGroup, _kSOSKVSAccountChangedKey, _kSOSKVSInitialSyncKey, - _kSOSKVSKeyParametersKey, _kSOSKVSLastCleanupTimestampKey, - _kSOSKVSOTRConfigVersion, _kSOSKVSOfficialDSIDKey, _kSOSKVSRequiredKey, - _kSOSKVSWroteLastKeyParams, _kSOSNoCachedValue, _kSOSPeerSetCallbacks, - _kSOSViewAccessoryPairing, _kSOSViewAppleTV, _kSOSViewAutofillPasswords, - _kSOSViewAutofillPasswords_tomb, _kSOSViewBackupBagV0, _kSOSViewBackupBagV0_tomb, - _kSOSViewContinuityUnlock, _kSOSViewHintAppleTV, _kSOSViewHintHomeKit, - _kSOSViewHintPCSCloudKit, _kSOSViewHintPCSEscrow, _kSOSViewHintPCSFDE, - _kSOSViewHintPCSMailDrop, _kSOSViewHintPCSMasterKey, _kSOSViewHintPCSNotes, - _kSOSViewHintPCSPhotos, _kSOSViewHintPCSiCloudBackup, _kSOSViewHintPCSiCloudDrive, + _kSOSCCEngineStateSyncSetKey, _kSOSCCRecoveryKeyChanged, _kSOSCCSOSIsNowOFF, + _kSOSCCViewMembershipChangedNotification, _kSOSCountKey, _kSOSDSIDKey, + _kSOSErrorDomain, _kSOSHsaCrKeyDictionary, _kSOSInternalAccessGroup, + _kSOSKVSAccountChangedKey, _kSOSKVSInitialSyncKey, _kSOSKVSKeyParametersKey, + _kSOSKVSLastCleanupTimestampKey, _kSOSKVSOTRConfigVersion, + _kSOSKVSOfficialDSIDKey, _kSOSKVSRequiredKey, _kSOSKVSWroteLastKeyParams, + _kSOSNoCachedValue, _kSOSPeerSetCallbacks, _kSOSViewAccessoryPairing, + _kSOSViewAppleTV, _kSOSViewAutofillPasswords, _kSOSViewAutofillPasswords_tomb, + _kSOSViewBackupBagV0, _kSOSViewBackupBagV0_tomb, _kSOSViewContinuityUnlock, + _kSOSViewHintAppleTV, _kSOSViewHintHomeKit, _kSOSViewHintPCSCloudKit, + _kSOSViewHintPCSEscrow, _kSOSViewHintPCSFDE, _kSOSViewHintPCSMailDrop, + _kSOSViewHintPCSMasterKey, _kSOSViewHintPCSNotes, _kSOSViewHintPCSPhotos, + _kSOSViewHintPCSiCloudBackup, _kSOSViewHintPCSiCloudDrive, _kSOSViewHintPCSiMessage, _kSOSViewHomeKit, _kSOSViewKeychainV0, _kSOSViewKeychainV0_tomb, _kSOSViewNanoRegistry, _kSOSViewOtherSyncable, _kSOSViewOtherSyncable_tomb, _kSOSViewPCSCloudKit, _kSOSViewPCSEscrow, @@ -803,15 +818,16 @@ exports: _kSecAssessmentUpdateKeyRemarks, _kSecAssessmentUpdateKeyRow, _kSecAssessmentUpdateOperationAdd, _kSecAssessmentUpdateOperationDisable, _kSecAssessmentUpdateOperationEnable, _kSecAssessmentUpdateOperationFind, - _kSecAssessmentUpdateOperationRemove, _kSecAttestationIdentity, - _kSecAttestationOids, _kSecAttrAFPServerSignature, _kSecAttrAccessControl, - _kSecAttrAccessGroup, _kSecAttrAccessGroupToken, _kSecAttrAccessible, - _kSecAttrAccessibleAfterFirstUnlock, _kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly, - _kSecAttrAccessibleAlways, _kSecAttrAccessibleAlwaysPrivate, - _kSecAttrAccessibleAlwaysThisDeviceOnly, _kSecAttrAccessibleAlwaysThisDeviceOnlyPrivate, - _kSecAttrAccessibleUntilReboot, _kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, - _kSecAttrAccessibleWhenUnlocked, _kSecAttrAccessibleWhenUnlockedThisDeviceOnly, - _kSecAttrAccount, _kSecAttrAddress, _kSecAttrAlias, _kSecAttrApplicationLabel, + _kSecAssessmentUpdateOperationRemove, _kSecAttestationChain, + _kSecAttestationIdentity, _kSecAttestationKey, _kSecAttestationOids, + _kSecAttrAFPServerSignature, _kSecAttrAccessControl, _kSecAttrAccessGroup, + _kSecAttrAccessGroupToken, _kSecAttrAccessible, _kSecAttrAccessibleAfterFirstUnlock, + _kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly, _kSecAttrAccessibleAlways, + _kSecAttrAccessibleAlwaysPrivate, _kSecAttrAccessibleAlwaysThisDeviceOnly, + _kSecAttrAccessibleAlwaysThisDeviceOnlyPrivate, _kSecAttrAccessibleUntilReboot, + _kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, _kSecAttrAccessibleWhenUnlocked, + _kSecAttrAccessibleWhenUnlockedThisDeviceOnly, _kSecAttrAccount, + _kSecAttrAddress, _kSecAttrAlias, _kSecAttrApplicationLabel, _kSecAttrApplicationTag, _kSecAttrAuthenticationType, _kSecAttrAuthenticationTypeDPA, _kSecAttrAuthenticationTypeDefault, _kSecAttrAuthenticationTypeHTMLForm, _kSecAttrAuthenticationTypeHTTPBasic, _kSecAttrAuthenticationTypeHTTPDigest, @@ -828,38 +844,40 @@ exports: _kSecAttrIsNegative, _kSecAttrIsPermanent, _kSecAttrIsPrivate, _kSecAttrIsSensitive, _kSecAttrIssuer, _kSecAttrKeyClass, _kSecAttrKeyClassPrivate, _kSecAttrKeyClassPublic, _kSecAttrKeyClassSymmetric, - _kSecAttrKeyCreator, _kSecAttrKeySizeInBits, _kSecAttrKeyType, - _kSecAttrKeyTypeEC, _kSecAttrKeyTypeECSECPrimeRandom, _kSecAttrKeyTypeECSECPrimeRandomPKA, - _kSecAttrKeyTypeEd25519, _kSecAttrKeyTypeEd448, _kSecAttrKeyTypeRSA, - _kSecAttrKeyTypeSecureEnclaveAnonymousAttestation, _kSecAttrKeyTypeSecureEnclaveAttestation, - _kSecAttrKeyTypeX25519, _kSecAttrKeyTypeX448, _kSecAttrLabel, - _kSecAttrModificationDate, _kSecAttrMultiUser, _kSecAttrNoLegacy, - _kSecAttrPCSPlaintextPublicIdentity, _kSecAttrPCSPlaintextPublicKey, - _kSecAttrPCSPlaintextServiceIdentifier, _kSecAttrPath, _kSecAttrPersistantReference, - _kSecAttrPersistentReference, _kSecAttrPort, _kSecAttrProtocol, - _kSecAttrProtocolAFP, _kSecAttrProtocolAppleTalk, _kSecAttrProtocolDAAP, - _kSecAttrProtocolEPPC, _kSecAttrProtocolFTP, _kSecAttrProtocolFTPAccount, - _kSecAttrProtocolFTPProxy, _kSecAttrProtocolFTPS, _kSecAttrProtocolHTTP, - _kSecAttrProtocolHTTPProxy, _kSecAttrProtocolHTTPS, _kSecAttrProtocolHTTPSProxy, - _kSecAttrProtocolIMAP, _kSecAttrProtocolIMAPS, _kSecAttrProtocolIPP, - _kSecAttrProtocolIRC, _kSecAttrProtocolIRCS, _kSecAttrProtocolLDAP, - _kSecAttrProtocolLDAPS, _kSecAttrProtocolNNTP, _kSecAttrProtocolNNTPS, - _kSecAttrProtocolPOP3, _kSecAttrProtocolPOP3S, _kSecAttrProtocolRTSP, - _kSecAttrProtocolRTSPProxy, _kSecAttrProtocolSMB, _kSecAttrProtocolSMTP, - _kSecAttrProtocolSOCKS, _kSecAttrProtocolSSH, _kSecAttrProtocolTelnet, - _kSecAttrProtocolTelnetS, _kSecAttrPublicKeyHash, _kSecAttrSHA1, - _kSecAttrScriptCode, _kSecAttrSecureEnclaveKeyBlob, _kSecAttrSecurityDomain, - _kSecAttrSerialNumber, _kSecAttrServer, _kSecAttrService, - _kSecAttrSharingGroup, _kSecAttrSharingGroupNone, _kSecAttrStartDate, - _kSecAttrSubject, _kSecAttrSubjectKeyID, _kSecAttrSyncViewHint, - _kSecAttrSynchronizable, _kSecAttrSynchronizableAny, _kSecAttrSysBound, - _kSecAttrTokenID, _kSecAttrTokenIDAppleKeyStore, _kSecAttrTokenIDSecureElement, - _kSecAttrTokenIDSecureEnclave, _kSecAttrTokenOID, _kSecAttrTombstone, - _kSecAttrType, _kSecAttrUUID, _kSecAttrViewHintAccessoryPairing, - _kSecAttrViewHintApplePay, _kSecAttrViewHintAppleTV, _kSecAttrViewHintAutoUnlock, - _kSecAttrViewHintContacts, _kSecAttrViewHintContinuityUnlock, - _kSecAttrViewHintEngram, _kSecAttrViewHintGroups, _kSecAttrViewHintHealth, - _kSecAttrViewHintHome, _kSecAttrViewHintHomeKit, _kSecAttrViewHintLimitedPeersAllowed, + _kSecAttrKeyCreator, _kSecAttrKeySizeInBits, _kSecAttrKeySizeKyber1024, + _kSecAttrKeySizeKyber768, _kSecAttrKeyType, _kSecAttrKeyTypeEC, + _kSecAttrKeyTypeECSECPrimeRandom, _kSecAttrKeyTypeECSECPrimeRandomPKA, + _kSecAttrKeyTypeEd25519, _kSecAttrKeyTypeEd448, _kSecAttrKeyTypeKyber, + _kSecAttrKeyTypeRSA, _kSecAttrKeyTypeSecureEnclaveAnonymousAttestation, + _kSecAttrKeyTypeSecureEnclaveAttestation, _kSecAttrKeyTypeX25519, + _kSecAttrKeyTypeX448, _kSecAttrLabel, _kSecAttrModificationDate, + _kSecAttrMultiUser, _kSecAttrNoLegacy, _kSecAttrPCSPlaintextPublicIdentity, + _kSecAttrPCSPlaintextPublicKey, _kSecAttrPCSPlaintextServiceIdentifier, + _kSecAttrPath, _kSecAttrPersistantReference, _kSecAttrPersistentReference, + _kSecAttrPort, _kSecAttrProtocol, _kSecAttrProtocolAFP, _kSecAttrProtocolAppleTalk, + _kSecAttrProtocolDAAP, _kSecAttrProtocolEPPC, _kSecAttrProtocolFTP, + _kSecAttrProtocolFTPAccount, _kSecAttrProtocolFTPProxy, _kSecAttrProtocolFTPS, + _kSecAttrProtocolHTTP, _kSecAttrProtocolHTTPProxy, _kSecAttrProtocolHTTPS, + _kSecAttrProtocolHTTPSProxy, _kSecAttrProtocolIMAP, _kSecAttrProtocolIMAPS, + _kSecAttrProtocolIPP, _kSecAttrProtocolIRC, _kSecAttrProtocolIRCS, + _kSecAttrProtocolLDAP, _kSecAttrProtocolLDAPS, _kSecAttrProtocolNNTP, + _kSecAttrProtocolNNTPS, _kSecAttrProtocolPOP3, _kSecAttrProtocolPOP3S, + _kSecAttrProtocolRTSP, _kSecAttrProtocolRTSPProxy, _kSecAttrProtocolSMB, + _kSecAttrProtocolSMTP, _kSecAttrProtocolSOCKS, _kSecAttrProtocolSSH, + _kSecAttrProtocolTelnet, _kSecAttrProtocolTelnetS, _kSecAttrPublicKeyHash, + _kSecAttrSHA1, _kSecAttrScriptCode, _kSecAttrSecureEnclaveKeyBlob, + _kSecAttrSecurityDomain, _kSecAttrSerialNumber, _kSecAttrServer, + _kSecAttrService, _kSecAttrSharingGroup, _kSecAttrSharingGroupNone, + _kSecAttrStartDate, _kSecAttrSubject, _kSecAttrSubjectKeyID, + _kSecAttrSyncViewHint, _kSecAttrSynchronizable, _kSecAttrSynchronizableAny, + _kSecAttrSysBound, _kSecAttrTokenID, _kSecAttrTokenIDAppleKeyStore, + _kSecAttrTokenIDSecureElement, _kSecAttrTokenIDSecureEnclave, + _kSecAttrTokenOID, _kSecAttrTombstone, _kSecAttrType, _kSecAttrUUID, + _kSecAttrViewHintAccessoryPairing, _kSecAttrViewHintApplePay, + _kSecAttrViewHintAppleTV, _kSecAttrViewHintAutoUnlock, _kSecAttrViewHintContacts, + _kSecAttrViewHintContinuityUnlock, _kSecAttrViewHintEngram, + _kSecAttrViewHintGroups, _kSecAttrViewHintHealth, _kSecAttrViewHintHome, + _kSecAttrViewHintHomeKit, _kSecAttrViewHintLimitedPeersAllowed, _kSecAttrViewHintMFi, _kSecAttrViewHintMail, _kSecAttrViewHintManatee, _kSecAttrViewHintNanoRegistry, _kSecAttrViewHintPCSCloudKit, _kSecAttrViewHintPCSEscrow, _kSecAttrViewHintPCSFDE, _kSecAttrViewHintPCSFeldspar, @@ -917,11 +935,11 @@ exports: _kSecCodeSignerApplicationData, _kSecCodeSignerDetached, _kSecCodeSignerDigestAlgorithm, _kSecCodeSignerDryRun, _kSecCodeSignerEditCMS, _kSecCodeSignerEditCpuSubtype, _kSecCodeSignerEditCpuType, _kSecCodeSignerEntitlements, _kSecCodeSignerFlags, - _kSecCodeSignerIdentifier, _kSecCodeSignerIdentifierPrefix, - _kSecCodeSignerIdentity, _kSecCodeSignerLaunchConstraintParent, - _kSecCodeSignerLaunchConstraintResponsible, _kSecCodeSignerLaunchConstraintSelf, - _kSecCodeSignerLibraryConstraint, _kSecCodeSignerOmitAdhocFlag, - _kSecCodeSignerPageSize, _kSecCodeSignerPlatformIdentifier, + _kSecCodeSignerForceLibraryEntitlements, _kSecCodeSignerIdentifier, + _kSecCodeSignerIdentifierPrefix, _kSecCodeSignerIdentity, + _kSecCodeSignerLaunchConstraintParent, _kSecCodeSignerLaunchConstraintResponsible, + _kSecCodeSignerLaunchConstraintSelf, _kSecCodeSignerLibraryConstraint, + _kSecCodeSignerOmitAdhocFlag, _kSecCodeSignerPageSize, _kSecCodeSignerPlatformIdentifier, _kSecCodeSignerPreserveAFSC, _kSecCodeSignerPreserveMetadata, _kSecCodeSignerRequireTimestamp, _kSecCodeSignerRequirements, _kSecCodeSignerResourceRules, _kSecCodeSignerRuntimeVersion, @@ -941,25 +959,26 @@ exports: _kSecGuestAttributeMachPort, _kSecGuestAttributePid, _kSecGuestAttributeSubarchitecture, _kSecImportExportPassphrase, _kSecImportItemCertChain, _kSecImportItemIdentity, _kSecImportItemKeyID, _kSecImportItemLabel, _kSecImportItemTrust, - _kSecInputIsDigest, _kSecInputIsPlainText, _kSecKeyAlgorithmECDHKeyExchangeCofactor, - _kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA1, _kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA224, - _kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA256, _kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA384, - _kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA512, _kSecKeyAlgorithmECDHKeyExchangeStandard, - _kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA1, _kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA224, - _kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA256, _kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA384, - _kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA512, _kSecKeyAlgorithmECDSASignatureDigestRFC4754, - _kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA1, _kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA224, - _kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA256, _kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA384, - _kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA512, _kSecKeyAlgorithmECDSASignatureDigestX962, - _kSecKeyAlgorithmECDSASignatureDigestX962SHA1, _kSecKeyAlgorithmECDSASignatureDigestX962SHA224, - _kSecKeyAlgorithmECDSASignatureDigestX962SHA256, _kSecKeyAlgorithmECDSASignatureDigestX962SHA384, - _kSecKeyAlgorithmECDSASignatureDigestX962SHA512, _kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA1, - _kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA224, _kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA256, - _kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA384, _kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA512, - _kSecKeyAlgorithmECDSASignatureMessageX962SHA1, _kSecKeyAlgorithmECDSASignatureMessageX962SHA224, - _kSecKeyAlgorithmECDSASignatureMessageX962SHA256, _kSecKeyAlgorithmECDSASignatureMessageX962SHA384, - _kSecKeyAlgorithmECDSASignatureMessageX962SHA512, _kSecKeyAlgorithmECDSASignatureRFC4754, - _kSecKeyAlgorithmECIESEncryptionAKSSmartCard, _kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA224AESGCM, + _kSecImportToMemoryOnly, _kSecInputIsDigest, _kSecInputIsPlainText, + _kSecKeyAlgorithmECDHKeyExchangeCofactor, _kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA1, + _kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA224, _kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA256, + _kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA384, _kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA512, + _kSecKeyAlgorithmECDHKeyExchangeStandard, _kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA1, + _kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA224, _kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA256, + _kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA384, _kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA512, + _kSecKeyAlgorithmECDSASignatureDigestRFC4754, _kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA1, + _kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA224, _kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA256, + _kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA384, _kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA512, + _kSecKeyAlgorithmECDSASignatureDigestX962, _kSecKeyAlgorithmECDSASignatureDigestX962SHA1, + _kSecKeyAlgorithmECDSASignatureDigestX962SHA224, _kSecKeyAlgorithmECDSASignatureDigestX962SHA256, + _kSecKeyAlgorithmECDSASignatureDigestX962SHA384, _kSecKeyAlgorithmECDSASignatureDigestX962SHA512, + _kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA1, _kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA224, + _kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA256, _kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA384, + _kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA512, _kSecKeyAlgorithmECDSASignatureMessageX962SHA1, + _kSecKeyAlgorithmECDSASignatureMessageX962SHA224, _kSecKeyAlgorithmECDSASignatureMessageX962SHA256, + _kSecKeyAlgorithmECDSASignatureMessageX962SHA384, _kSecKeyAlgorithmECDSASignatureMessageX962SHA512, + _kSecKeyAlgorithmECDSASignatureRFC4754, _kSecKeyAlgorithmECIESEncryptionAKSSmartCard, + _kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA224AESGCM, _kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA256AESGCM, _kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA384AESGCM, _kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA512AESGCM, @@ -976,30 +995,32 @@ exports: _kSecKeyAlgorithmECIESEncryptionStandardX963SHA384AESGCM, _kSecKeyAlgorithmECIESEncryptionStandardX963SHA512AESGCM, _kSecKeyAlgorithmEdDSASignatureMessageCurve25519SHA512, _kSecKeyAlgorithmEdDSASignatureMessageCurve448SHAKE256, - _kSecKeyAlgorithmRSAEncryptionOAEPSHA1, _kSecKeyAlgorithmRSAEncryptionOAEPSHA1AESGCM, - _kSecKeyAlgorithmRSAEncryptionOAEPSHA224, _kSecKeyAlgorithmRSAEncryptionOAEPSHA224AESGCM, - _kSecKeyAlgorithmRSAEncryptionOAEPSHA256, _kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM, - _kSecKeyAlgorithmRSAEncryptionOAEPSHA384, _kSecKeyAlgorithmRSAEncryptionOAEPSHA384AESGCM, - _kSecKeyAlgorithmRSAEncryptionOAEPSHA512, _kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM, - _kSecKeyAlgorithmRSAEncryptionPKCS1, _kSecKeyAlgorithmRSAEncryptionRaw, - _kSecKeyAlgorithmRSAEncryptionRawCCUnit, _kSecKeyAlgorithmRSASignatureDigestPKCS1v15MD5, - _kSecKeyAlgorithmRSASignatureDigestPKCS1v15Raw, _kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA1, - _kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA224, _kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA256, - _kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA384, _kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA512, - _kSecKeyAlgorithmRSASignatureDigestPSSSHA1, _kSecKeyAlgorithmRSASignatureDigestPSSSHA224, - _kSecKeyAlgorithmRSASignatureDigestPSSSHA256, _kSecKeyAlgorithmRSASignatureDigestPSSSHA384, - _kSecKeyAlgorithmRSASignatureDigestPSSSHA512, _kSecKeyAlgorithmRSASignatureMessagePKCS1v15MD5, - _kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA1, _kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA224, - _kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA256, _kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA384, - _kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA512, _kSecKeyAlgorithmRSASignatureMessagePSSSHA1, - _kSecKeyAlgorithmRSASignatureMessagePSSSHA224, _kSecKeyAlgorithmRSASignatureMessagePSSSHA256, - _kSecKeyAlgorithmRSASignatureMessagePSSSHA384, _kSecKeyAlgorithmRSASignatureMessagePSSSHA512, - _kSecKeyAlgorithmRSASignatureRaw, _kSecKeyAlgorithmRSASignatureRawCCUnit, - _kSecKeyApplePayEnabled, _kSecKeyAttributeName, _kSecKeyEncryptionParameterRecryptCertificate, + _kSecKeyAlgorithmKEMKyber, _kSecKeyAlgorithmRSAEncryptionOAEPSHA1, + _kSecKeyAlgorithmRSAEncryptionOAEPSHA1AESGCM, _kSecKeyAlgorithmRSAEncryptionOAEPSHA224, + _kSecKeyAlgorithmRSAEncryptionOAEPSHA224AESGCM, _kSecKeyAlgorithmRSAEncryptionOAEPSHA256, + _kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM, _kSecKeyAlgorithmRSAEncryptionOAEPSHA384, + _kSecKeyAlgorithmRSAEncryptionOAEPSHA384AESGCM, _kSecKeyAlgorithmRSAEncryptionOAEPSHA512, + _kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM, _kSecKeyAlgorithmRSAEncryptionPKCS1, + _kSecKeyAlgorithmRSAEncryptionRaw, _kSecKeyAlgorithmRSAEncryptionRawCCUnit, + _kSecKeyAlgorithmRSASignatureDigestPKCS1v15MD5, _kSecKeyAlgorithmRSASignatureDigestPKCS1v15Raw, + _kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA1, _kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA224, + _kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA256, _kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA384, + _kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA512, _kSecKeyAlgorithmRSASignatureDigestPSSSHA1, + _kSecKeyAlgorithmRSASignatureDigestPSSSHA224, _kSecKeyAlgorithmRSASignatureDigestPSSSHA256, + _kSecKeyAlgorithmRSASignatureDigestPSSSHA384, _kSecKeyAlgorithmRSASignatureDigestPSSSHA512, + _kSecKeyAlgorithmRSASignatureMessagePKCS1v15MD5, _kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA1, + _kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA224, _kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA256, + _kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA384, _kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA512, + _kSecKeyAlgorithmRSASignatureMessagePSSSHA1, _kSecKeyAlgorithmRSASignatureMessagePSSSHA224, + _kSecKeyAlgorithmRSASignatureMessagePSSSHA256, _kSecKeyAlgorithmRSASignatureMessagePSSSHA384, + _kSecKeyAlgorithmRSASignatureMessagePSSSHA512, _kSecKeyAlgorithmRSASignatureRaw, + _kSecKeyAlgorithmRSASignatureRawCCUnit, _kSecKeyApplePayEnabled, + _kSecKeyAttributeName, _kSecKeyEncryptionParameterRecryptCertificate, _kSecKeyEncryptionParameterRecryptParameters, _kSecKeyEncryptionParameterSymmetricAAD, _kSecKeyEncryptionParameterSymmetricKeySizeInBits, _kSecKeyKeyExchangeParameterRequestedSize, - _kSecKeyKeyExchangeParameterSharedInfo, _kSecKeyParameterSETokenAttestationNonce, - _kSecLocalIssuerIdentity, _kSecMatchCaseInsensitive, _kSecMatchEmailAddressIfPresent, + _kSecKeyKeyExchangeParameterSharedInfo, _kSecKeyOSBound, _kSecKeyParameterSETokenAttestationNonce, + _kSecKeySealedHashesBound, _kSecLocalIssuerIdentity, _kSecMatchCaseInsensitive, + _kSecMatchEmailAddressIfPresent, _kSecMatchHostOrSubdomainOfHost, _kSecMatchIssuers, _kSecMatchItemList, _kSecMatchLimit, _kSecMatchLimitAll, _kSecMatchLimitOne, _kSecMatchPolicy, _kSecMatchSearchList, _kSecMatchSubjectContains, _kSecMatchTrustedOnly, _kSecMatchValidOnDate, @@ -1021,42 +1042,46 @@ exports: _kSecPolicyAppleAssetReceipt, _kSecPolicyAppleBasicAttestationSystem, _kSecPolicyAppleBasicAttestationUser, _kSecPolicyAppleCHIPUpdateSigning, _kSecPolicyAppleCodeSigning, _kSecPolicyAppleComponentCertificate, - _kSecPolicyAppleDemoDigitalCatalog, _kSecPolicyAppleDeveloperIDInstaller, - _kSecPolicyAppleDeveloperIDPlusTicket, _kSecPolicyAppleEAP, - _kSecPolicyAppleEscrowProxyCompatibilityServerAuth, _kSecPolicyAppleEscrowProxyServerAuth, - _kSecPolicyAppleEscrowService, _kSecPolicyAppleEscrowServiceIdKeySigning, - _kSecPolicyAppleExternalDeveloper, _kSecPolicyAppleFMiPServerAuth, - _kSecPolicyAppleFactoryDeviceCertificate, _kSecPolicyAppleGSService, - _kSecPolicyAppleGenericApplePinned, _kSecPolicyAppleGenericAppleSSLPinned, - _kSecPolicyAppleHomeKitServerAuth, _kSecPolicyAppleIDAuthority, - _kSecPolicyAppleIDSService, _kSecPolicyAppleIDSServiceContext, + _kSecPolicyAppleDCAttestation, _kSecPolicyAppleDemoDigitalCatalog, + _kSecPolicyAppleDeveloperIDInstaller, _kSecPolicyAppleDeveloperIDPlusTicket, + _kSecPolicyAppleEAP, _kSecPolicyAppleEAPClient, _kSecPolicyAppleEAPServer, + _kSecPolicyAppleEDPSigning, _kSecPolicyAppleEscrowProxyCompatibilityServerAuth, + _kSecPolicyAppleEscrowProxyServerAuth, _kSecPolicyAppleEscrowService, + _kSecPolicyAppleEscrowServiceIdKeySigning, _kSecPolicyAppleExternalDeveloper, + _kSecPolicyAppleFMiPServerAuth, _kSecPolicyAppleFactoryDeviceCertificate, + _kSecPolicyAppleGSService, _kSecPolicyAppleGenericApplePinned, + _kSecPolicyAppleGenericAppleSSLPinned, _kSecPolicyAppleHomeKitServerAuth, + _kSecPolicyAppleIDAuthority, _kSecPolicyAppleIDSService, _kSecPolicyAppleIDSServiceContext, _kSecPolicyAppleIDValidation, _kSecPolicyAppleIDValidationRecordSigning, - _kSecPolicyAppleIDValidationShortcutSigning, _kSecPolicyAppleIPsec, - _kSecPolicyAppleKeyTransparency, _kSecPolicyAppleLegacyPushService, - _kSecPolicyAppleLockdownPairing, _kSecPolicyAppleMDLTerminalAuth, - _kSecPolicyAppleMMCSCompatibilityServerAuth, _kSecPolicyAppleMMCService, - _kSecPolicyAppleMacAppStoreInstaller, _kSecPolicyAppleMacDistributionInstaller, - _kSecPolicyAppleMacOSProfileApplicationSigning, _kSecPolicyAppleMeasuredBootPolicySigning, - _kSecPolicyAppleMobileAsset, _kSecPolicyAppleMobileAssetDevelopment, - _kSecPolicyAppleMobileSoftwareUpdate, _kSecPolicyAppleMobileStore, - _kSecPolicyAppleOCSPSigner, _kSecPolicyAppleOSXProvisioningProfileSigning, + _kSecPolicyAppleIDValidationShortcutSigning, _kSecPolicyAppleIPSecClient, + _kSecPolicyAppleIPSecServer, _kSecPolicyAppleIPsec, _kSecPolicyAppleKeyTransparency, + _kSecPolicyAppleLegacyPushService, _kSecPolicyAppleLockdownPairing, + _kSecPolicyAppleMDLTerminalAuth, _kSecPolicyAppleMMCSCompatibilityServerAuth, + _kSecPolicyAppleMMCService, _kSecPolicyAppleMacAppStoreInstaller, + _kSecPolicyAppleMacDistributionInstaller, _kSecPolicyAppleMacOSProfileApplicationSigning, + _kSecPolicyAppleMeasuredBootPolicySigning, _kSecPolicyAppleMobileAsset, + _kSecPolicyAppleMobileAssetDevelopment, _kSecPolicyAppleMobileSoftwareUpdate, + _kSecPolicyAppleMobileStore, _kSecPolicyAppleOCSPSigner, _kSecPolicyAppleOSXProvisioningProfileSigning, _kSecPolicyAppleOTATasking, _kSecPolicyAppleOrderBundleSigner, _kSecPolicyApplePCSEscrowService, _kSecPolicyApplePCSEscrowServiceIdKeySigning, _kSecPolicyApplePPMAggregatorConfigSigning, _kSecPolicyApplePPQService, _kSecPolicyApplePPQSigning, _kSecPolicyApplePackageSigning, + _kSecPolicyAppleParakeetService, _kSecPolicyAppleParakeetSigning, _kSecPolicyApplePassbookSigning, _kSecPolicyApplePayIssuerEncryption, _kSecPolicyApplePayModelSigning, _kSecPolicyApplePayQRCodeEncryption, _kSecPolicyApplePayQRCodeSigning, _kSecPolicyAppleProfileSigner, _kSecPolicyApplePushService, _kSecPolicyAppleQAProfileSigner, - _kSecPolicyAppleQiSigning, _kSecPolicyAppleRevocation, _kSecPolicyAppleSMIME, - _kSecPolicyAppleSMPEncryption, _kSecPolicyAppleSSL, _kSecPolicyAppleSWUpdateSigning, + _kSecPolicyAppleQWAC, _kSecPolicyAppleQiSigning, _kSecPolicyAppleRevocation, + _kSecPolicyAppleSMIME, _kSecPolicyAppleSMPEncryption, _kSecPolicyAppleSSL, + _kSecPolicyAppleSSLClient, _kSecPolicyAppleSSLServer, _kSecPolicyAppleSWUpdateSigning, _kSecPolicyAppleSecureIOStaticAsset, _kSecPolicyAppleServerAuthentication, _kSecPolicyAppleSoftwareSigning, _kSecPolicyAppleTVOSApplicationSigning, _kSecPolicyAppleTestMobileStore, _kSecPolicyAppleTestPPQSigning, _kSecPolicyAppleTestSMPEncryption, _kSecPolicyAppleTimeStamping, _kSecPolicyAppleURLBag, _kSecPolicyAppleUniqueDeviceIdentifierCertificate, - _kSecPolicyAppleWarsaw, _kSecPolicyAppleX509Basic, _kSecPolicyAppleXROSApplicationSigning, - _kSecPolicyAppleiAP, _kSecPolicyAppleiAPSWAuth, _kSecPolicyAppleiCloudSetupCompatibilityServerAuth, + _kSecPolicyAppleVerifiedMark, _kSecPolicyAppleWarsaw, _kSecPolicyAppleX509Basic, + _kSecPolicyAppleXROSApplicationSigning, _kSecPolicyAppleiAP, + _kSecPolicyAppleiAPAuthV4, _kSecPolicyAppleiAPSWAuth, _kSecPolicyAppleiCloudSetupCompatibilityServerAuth, _kSecPolicyAppleiCloudSetupServerAuth, _kSecPolicyAppleiPhoneActivation, _kSecPolicyAppleiPhoneApplicationSigning, _kSecPolicyAppleiPhoneDeviceCertificate, _kSecPolicyAppleiPhoneProfileApplicationSigning, _kSecPolicyAppleiPhoneProvisioningProfileSigning, @@ -1076,52 +1101,56 @@ exports: _kSecPolicyCheckIntermediateEKU, _kSecPolicyCheckIntermediateMarkerOid, _kSecPolicyCheckIntermediateMarkerOidWithoutValueCheck, _kSecPolicyCheckIntermediateOrganization, _kSecPolicyCheckIntermediateSPKISHA256, _kSecPolicyCheckIssuerCommonName, - _kSecPolicyCheckIssuerNameConstraints, _kSecPolicyCheckIssuerPolicyConstraints, - _kSecPolicyCheckKeySize, _kSecPolicyCheckKeyUsage, _kSecPolicyCheckLeafMarkerOid, - _kSecPolicyCheckLeafMarkerOidWithoutValueCheck, _kSecPolicyCheckLeafMarkersProdAndQA, - _kSecPolicyCheckLeafSPKISHA256, _kSecPolicyCheckMissingIntermediate, + _kSecPolicyCheckIssuerCommonNamePrefix, _kSecPolicyCheckIssuerNameConstraints, + _kSecPolicyCheckIssuerPolicyConstraints, _kSecPolicyCheckKeySize, + _kSecPolicyCheckKeyUsage, _kSecPolicyCheckLeafMarkerOid, _kSecPolicyCheckLeafMarkerOidWithoutValueCheck, + _kSecPolicyCheckLeafMarkersProdAndQA, _kSecPolicyCheckLeafSPKISHA256, + _kSecPolicyCheckMarkRepresentation, _kSecPolicyCheckMissingIntermediate, _kSecPolicyCheckNameConstraints, _kSecPolicyCheckNoNetworkAccess, _kSecPolicyCheckNonEmptySubject, _kSecPolicyCheckNonTlsCTRequired, _kSecPolicyCheckNotCA, _kSecPolicyCheckNotValidBefore, _kSecPolicyCheckOtherTrustValidityPeriod, _kSecPolicyCheckPinningRequired, _kSecPolicyCheckPolicyConstraints, - _kSecPolicyCheckRevocation, _kSecPolicyCheckRevocationAny, + _kSecPolicyCheckQWAC, _kSecPolicyCheckRevocation, _kSecPolicyCheckRevocationAny, _kSecPolicyCheckRevocationCRL, _kSecPolicyCheckRevocationDbIgnored, _kSecPolicyCheckRevocationIfTrusted, _kSecPolicyCheckRevocationOCSP, _kSecPolicyCheckRevocationOnline, _kSecPolicyCheckRevocationResponseRequired, _kSecPolicyCheckSSLHostname, _kSecPolicyCheckServerAuthEKU, - _kSecPolicyCheckSignatureHashAlgorithms, _kSecPolicyCheckSubjectCommonName, - _kSecPolicyCheckSubjectCommonNamePrefix, _kSecPolicyCheckSubjectCommonNameTEST, - _kSecPolicyCheckSubjectOrganization, _kSecPolicyCheckSubjectOrganizationalUnit, - _kSecPolicyCheckSystemTrustValidityPeriod, _kSecPolicyCheckSystemTrustedCTRequired, - _kSecPolicyCheckSystemTrustedWeakHash, _kSecPolicyCheckSystemTrustedWeakKey, - _kSecPolicyCheckTemporalValidity, _kSecPolicyCheckUnparseableExtension, - _kSecPolicyCheckUsageConstraints, _kSecPolicyCheckValidRoot, - _kSecPolicyCheckValidityPeriodMaximums, _kSecPolicyCheckWeakKeySize, - _kSecPolicyCheckWeakSignature, _kSecPolicyClient, _kSecPolicyContext, - _kSecPolicyIntermediateMarkerOid, _kSecPolicyLeafMarkerOid, - _kSecPolicyLeafMarkerProd, _kSecPolicyLeafMarkerQA, _kSecPolicyMacAppStoreReceipt, - _kSecPolicyName, _kSecPolicyNameAppleAIDCService, _kSecPolicyNameAppleAMPService, - _kSecPolicyNameAppleAST2Service, _kSecPolicyNameAppleEscrowProxyService, - _kSecPolicyNameAppleFMiPService, _kSecPolicyNameAppleGSService, - _kSecPolicyNameAppleHealthProviderService, _kSecPolicyNameAppleHomeAppClipUploadService, - _kSecPolicyNameAppleHomeKitService, _kSecPolicyNameAppleIDSService, - _kSecPolicyNameAppleMMCSService, _kSecPolicyNameAppleMacOSSoftwareUpdate, - _kSecPolicyNameAppleMapsService, _kSecPolicyNameApplePPQService, - _kSecPolicyNameAppleParsecService, _kSecPolicyNameApplePotluckService, - _kSecPolicyNameApplePushCertPortal, _kSecPolicyNameApplePushService, - _kSecPolicyNameAppleSiriService, _kSecPolicyNameAppleUpdatesService, - _kSecPolicyNameAppleiCloudSetupService, _kSecPolicyNameCodeSigning, - _kSecPolicyNameEAPClient, _kSecPolicyNameEAPServer, _kSecPolicyNameIPSecClient, - _kSecPolicyNameIPSecServer, _kSecPolicyNameOCSPSigner, _kSecPolicyNameSMIME, - _kSecPolicyNameSSLClient, _kSecPolicyNameSSLServer, _kSecPolicyNameTimeStamping, - _kSecPolicyNameX509Basic, _kSecPolicyOid, _kSecPolicyPolicyName, - _kSecPolicyRevocationFlags, _kSecPolicyRootDigest, _kSecPolicyTeamIdentifier, - _kSecPrivateKeyAttrs, _kSecPropertyKeyLabel, _kSecPropertyKeyLocalizedLabel, - _kSecPropertyKeyType, _kSecPropertyKeyValue, _kSecPropertyTypeArray, - _kSecPropertyTypeData, _kSecPropertyTypeDate, _kSecPropertyTypeError, - _kSecPropertyTypeNumber, _kSecPropertyTypeSection, _kSecPropertyTypeString, - _kSecPropertyTypeSuccess, _kSecPropertyTypeTitle, _kSecPropertyTypeURL, - _kSecPropertyTypeWarning, _kSecPublicKeyAttrs, _kSecRVIterations, + _kSecPolicyCheckSignatureHashAlgorithms, _kSecPolicyCheckSinglePurposeChainEKU, + _kSecPolicyCheckSubjectCommonName, _kSecPolicyCheckSubjectCommonNamePrefix, + _kSecPolicyCheckSubjectCommonNameTEST, _kSecPolicyCheckSubjectOrganization, + _kSecPolicyCheckSubjectOrganizationalUnit, _kSecPolicyCheckSystemTrustValidityPeriod, + _kSecPolicyCheckSystemTrustedCTRequired, _kSecPolicyCheckSystemTrustedWeakHash, + _kSecPolicyCheckSystemTrustedWeakKey, _kSecPolicyCheckTemporalValidity, + _kSecPolicyCheckUnparseableExtension, _kSecPolicyCheckUsageConstraints, + _kSecPolicyCheckValidLeaf, _kSecPolicyCheckValidRoot, _kSecPolicyCheckValidityPeriodMaximums, + _kSecPolicyCheckWeakKeySize, _kSecPolicyCheckWeakSignature, + _kSecPolicyClient, _kSecPolicyContext, _kSecPolicyIntermediateMarkerOid, + _kSecPolicyLeafMarkerOid, _kSecPolicyLeafMarkerProd, _kSecPolicyLeafMarkerQA, + _kSecPolicyMacAppStoreReceipt, _kSecPolicyName, _kSecPolicyNameAppleAIDCService, + _kSecPolicyNameAppleAMPService, _kSecPolicyNameAppleAST2Service, + _kSecPolicyNameAppleEscrowProxyService, _kSecPolicyNameAppleFMiPService, + _kSecPolicyNameAppleGSService, _kSecPolicyNameAppleHealthProviderService, + _kSecPolicyNameAppleHomeAppClipUploadService, _kSecPolicyNameAppleHomeKitService, + _kSecPolicyNameAppleIDSService, _kSecPolicyNameAppleIssued, + _kSecPolicyNameAppleIssuedTransparent, _kSecPolicyNameAppleMMCSService, + _kSecPolicyNameAppleMacOSSoftwareUpdate, _kSecPolicyNameAppleMapsService, + _kSecPolicyNameApplePPQService, _kSecPolicyNameAppleParsecService, + _kSecPolicyNameApplePotluckService, _kSecPolicyNameApplePushCertPortal, + _kSecPolicyNameApplePushService, _kSecPolicyNameAppleSiriService, + _kSecPolicyNameAppleUpdatesService, _kSecPolicyNameAppleiCloudSetupService, + _kSecPolicyNameCodeSigning, _kSecPolicyNameEAPClient, _kSecPolicyNameEAPServer, + _kSecPolicyNameIPSecClient, _kSecPolicyNameIPSecServer, _kSecPolicyNameOCSPSigner, + _kSecPolicyNameSMIME, _kSecPolicyNameSSLClient, _kSecPolicyNameSSLServer, + _kSecPolicyNameTimeStamping, _kSecPolicyNameX509Basic, _kSecPolicyOid, + _kSecPolicyPolicyName, _kSecPolicyRevocationFlags, _kSecPolicyRootDigest, + _kSecPolicyTeamIdentifier, _kSecPrivateKeyAttrs, _kSecPropertyKeyLabel, + _kSecPropertyKeyLocalizedLabel, _kSecPropertyKeyType, _kSecPropertyKeyValue, + _kSecPropertyTypeArray, _kSecPropertyTypeData, _kSecPropertyTypeDate, + _kSecPropertyTypeError, _kSecPropertyTypeNumber, _kSecPropertyTypeSection, + _kSecPropertyTypeString, _kSecPropertyTypeSuccess, _kSecPropertyTypeTitle, + _kSecPropertyTypeURL, _kSecPropertyTypeWarning, _kSecPublicKeyAttrs, + _kSecQCStatementCompliance, _kSecQCStatementType, _kSecQCStatementTypeEseal, + _kSecQCStatementTypeEsign, _kSecQCStatementTypeWeb, _kSecRVIterations, _kSecRVMasterID, _kSecRVProtocol, _kSecRVSalt, _kSecRVVerifier, _kSecRandomDefault, _kSecRecIV, _kSecRecLocale, _kSecRecQuestions, _kSecRecVersionNumber, _kSecRecWrappedPassword, _kSecRequirementKeyChecksumAlgorithm, @@ -1129,19 +1158,21 @@ exports: _kSecRequirementKeyInfoPlist, _kSecRequirementKeyPackageChecksum, _kSecRequirementKeySecureTimestamp, _kSecRequirementKeyTeamIdentifier, _kSecReturnAttributes, _kSecReturnData, _kSecReturnPersistentRef, - _kSecReturnRef, _kSecSharedPassword, _kSecSignatureAttributeName, - _kSecSignatureDigestAlgorithmUnknown, _kSecSubjectAltName, - _kSecSubjectAltNameDNSName, _kSecSubjectAltNameEmailAddress, + _kSecReturnRef, _kSecSFAErrorDomain, _kSecSharedPassword, + _kSecSignatureAttributeName, _kSecSignatureDigestAlgorithmUnknown, + _kSecSubjectAltName, _kSecSubjectAltNameDNSName, _kSecSubjectAltNameEmailAddress, _kSecSubjectAltNameNTPrincipalName, _kSecSubjectAltNameURI, _kSecTransformAbortOriginatorKey, _kSecTransformErrorDomain, _kSecTransformPreviousErrorKey, _kSecTrustCertificateTransparency, _kSecTrustCertificateTransparencyWhiteList, _kSecTrustEvaluationDate, _kSecTrustExtendedValidation, _kSecTrustInfoCertificateTransparencyKey, _kSecTrustInfoCompanyNameKey, _kSecTrustInfoExtendedValidationKey, + _kSecTrustInfoQCStatementsKey, _kSecTrustInfoQWACValidationKey, _kSecTrustInfoResultNotAfter, _kSecTrustInfoResultNotBefore, _kSecTrustInfoRevocationKey, _kSecTrustInfoRevocationValidUntilKey, - _kSecTrustOrganizationName, _kSecTrustResultDetails, _kSecTrustResultValue, - _kSecTrustRevocationChecked, _kSecTrustRevocationReason, _kSecTrustRevocationValidUntilDate, + _kSecTrustOrganizationName, _kSecTrustQCStatements, _kSecTrustQWACValidation, + _kSecTrustResultDetails, _kSecTrustResultValue, _kSecTrustRevocationChecked, + _kSecTrustRevocationReason, _kSecTrustRevocationValidUntilDate, _kSecTrustStoreHashAlgorithmKey, _kSecTrustStoreSPKIHashKey, _kSecUseAuthenticationContext, _kSecUseAuthenticationUI, _kSecUseAuthenticationUIAllow, _kSecUseAuthenticationUIFail, _kSecUseAuthenticationUISkip, @@ -1186,12 +1217,17 @@ exports: _sec_experiment_create, _sec_experiment_run, _sec_experiment_run_async, _sec_experiment_run_async_with_sampling_disabled, _sec_experiment_run_with_sampling_disabled, _sec_experiment_set_sampling_disabled, _sec_identity_access_certificates, + _sec_identity_copy_SPAKE2PLUSV1_client_identity, _sec_identity_copy_SPAKE2PLUSV1_client_password_verifier, + _sec_identity_copy_SPAKE2PLUSV1_context, _sec_identity_copy_SPAKE2PLUSV1_registration_record, + _sec_identity_copy_SPAKE2PLUSV1_server_identity, _sec_identity_copy_SPAKE2PLUSV1_server_password_verifier, _sec_identity_copy_certificates_ref, _sec_identity_copy_private_key_decrypt_block, _sec_identity_copy_private_key_queue, _sec_identity_copy_private_key_sign_block, - _sec_identity_copy_ref, _sec_identity_create, _sec_identity_create_with_certificates, - _sec_identity_create_with_certificates_and_external_private_key, + _sec_identity_copy_ref, _sec_identity_copy_type, _sec_identity_create, + _sec_identity_create_client_SPAKE2PLUSV1_identity, _sec_identity_create_server_SPAKE2PLUSV1_identity, + _sec_identity_create_with_certificates, _sec_identity_create_with_certificates_and_external_private_key, _sec_identity_has_certificates, _sec_protocol_configuration_builder_create, _sec_protocol_configuration_copy_singleton, _sec_protocol_configuration_copy_transformed_options, + _sec_protocol_configuration_copy_transformed_options_for_address, _sec_protocol_configuration_copy_transformed_options_for_host, _sec_protocol_configuration_create_with_builder, _sec_protocol_configuration_set_ats_overrides, _sec_protocol_configuration_tls_required, _sec_protocol_configuration_tls_required_for_address, @@ -1222,9 +1258,9 @@ exports: _sec_protocol_metadata_get_ticket_received, _sec_protocol_metadata_get_tls_certificate_compression_algorithm, _sec_protocol_metadata_get_tls_certificate_compression_used, _sec_protocol_metadata_get_tls_false_start_used, _sec_protocol_metadata_get_tls_negotiated_group, - _sec_protocol_metadata_peers_are_equal, _sec_protocol_metadata_serialize_with_options, - _sec_protocol_options_access_handle, _sec_protocol_options_add_pre_shared_key, - _sec_protocol_options_add_server_raw_public_key_certificate, + _sec_protocol_metadata_get_tls_negotiated_pake, _sec_protocol_metadata_peers_are_equal, + _sec_protocol_metadata_serialize_with_options, _sec_protocol_options_access_handle, + _sec_protocol_options_add_pre_shared_key, _sec_protocol_options_add_server_raw_public_key_certificate, _sec_protocol_options_add_tls_application_protocol, _sec_protocol_options_add_tls_ciphersuite, _sec_protocol_options_add_tls_ciphersuite_group, _sec_protocol_options_add_tls_key_exchange_group, _sec_protocol_options_add_tls_key_exchange_group_set, _sec_protocol_options_add_transport_specific_application_protocol, @@ -1238,9 +1274,9 @@ exports: _sec_protocol_options_get_default_min_dtls_protocol_version, _sec_protocol_options_get_default_min_tls_protocol_version, _sec_protocol_options_get_eap_method, _sec_protocol_options_get_enable_encrypted_client_hello, - _sec_protocol_options_get_quic_use_legacy_codepoint, _sec_protocol_options_matches_config, - _sec_protocol_options_set_allow_unknown_alpn_protos, _sec_protocol_options_set_challenge_block, - _sec_protocol_options_set_client_raw_public_key_certificates, + _sec_protocol_options_get_pqtls_mode, _sec_protocol_options_get_quic_use_legacy_codepoint, + _sec_protocol_options_matches_config, _sec_protocol_options_set_allow_unknown_alpn_protos, + _sec_protocol_options_set_challenge_block, _sec_protocol_options_set_client_raw_public_key_certificates, _sec_protocol_options_set_connection_id, _sec_protocol_options_set_eap_method, _sec_protocol_options_set_eddsa_enabled, _sec_protocol_options_set_enable_encrypted_client_hello, _sec_protocol_options_set_enforce_ev, _sec_protocol_options_set_experiment_identifier, @@ -1249,11 +1285,11 @@ exports: _sec_protocol_options_set_min_tls_protocol_version, _sec_protocol_options_set_new_session_ticket_request, _sec_protocol_options_set_nw_protocol_joining_context, _sec_protocol_options_set_output_handler_access_block, _sec_protocol_options_set_peer_authentication_optional, _sec_protocol_options_set_peer_authentication_required, - _sec_protocol_options_set_pre_shared_key_selection_block, + _sec_protocol_options_set_pqtls_mode, _sec_protocol_options_set_pre_shared_key_selection_block, _sec_protocol_options_set_private_key_blocks, _sec_protocol_options_set_quic_early_data_context, _sec_protocol_options_set_quic_transport_parameters, _sec_protocol_options_set_quic_use_legacy_codepoint, _sec_protocol_options_set_resumed_session_ticket_request, - _sec_protocol_options_set_server_raw_public_key_certificates, + _sec_protocol_options_set_sec_protocol_configuration, _sec_protocol_options_set_server_raw_public_key_certificates, _sec_protocol_options_set_session_state, _sec_protocol_options_set_session_update_block, _sec_protocol_options_set_tls_block_length_padding, _sec_protocol_options_set_tls_certificate_compression_enabled, _sec_protocol_options_set_tls_delegated_credentials_enabled, @@ -1273,8 +1309,10 @@ exports: _securityd_message_no_error, _securityd_message_with_reply_sync, _securityd_send_async_and_do, _securityd_send_sync_and_do, _useMessageSecurityEnabled ] - objc-classes: [ CKKSControl, CKKSExternalKey, CKKSExternalTLKShare, KCSharingDaemonConnection, - KCSharingGroup, KCSharingGroupCreateRequest, KCSharingGroupDeleteRequest, + objc-classes: [ CKKSControl, CKKSCurrentItemQuery, CKKSCurrentItemQueryResult, + CKKSExternalKey, CKKSExternalTLKShare, CKKSPCSIdentityQuery, + CKKSPCSIdentityQueryResult, KCSharingDaemonConnection, KCSharingGroup, + KCSharingGroupCreateRequest, KCSharingGroupDeleteRequest, KCSharingGroupFetchRequest, KCSharingGroupInvite, KCSharingGroupLeaveRequest, KCSharingGroupManager, KCSharingGroupUpdateInfo, KCSharingGroupUpdateRequest, KCSharingMessagingdConnection, KCSharingParticipant, LocalKeychainAnalytics, @@ -1628,16 +1666,16 @@ exports: _SecKeyGenerate, _SecKeyGeneratePairAsync, _SecKeyGeneratePair_ios, _SecKeyGenerateSymmetric, _SecKeyGetAlgorithmID, _SecKeyGetCSPHandle, _SecKeyGetCSSMKey, _SecKeyGetCredentials, _SecKeyImportPair, - _SecKeyRawSign_macOS, _SecKeyRawVerify_macOS, _SecKeyUnwrapSymmetric, - _SecKeyWrapSymmetric, _SecKeychainAddCallback, _SecKeychainAddDBToKeychainList, - _SecKeychainAddGenericPassword, _SecKeychainAddInternetPassword, - _SecKeychainAttemptMigrationWithMasterKey, _SecKeychainAttributeInfoForItemID, - _SecKeychainChangeKeyStorePassphrase, _SecKeychainChangePassword, - _SecKeychainCleanupHandles, _SecKeychainCopyAccess, _SecKeychainCopyBlob, - _SecKeychainCopyDefault, _SecKeychainCopyDomainDefault, _SecKeychainCopyDomainSearchList, - _SecKeychainCopyLogin, _SecKeychainCopySearchList, _SecKeychainCopySettings, - _SecKeychainCopySignature, _SecKeychainCreate, _SecKeychainCreateNew, - _SecKeychainCreateWithBlob, _SecKeychainDBIsInKeychainList, + _SecKeyIsLegacyInstance, _SecKeyRawSign_macOS, _SecKeyRawVerify_macOS, + _SecKeyUnwrapSymmetric, _SecKeyWrapSymmetric, _SecKeychainAddCallback, + _SecKeychainAddDBToKeychainList, _SecKeychainAddGenericPassword, + _SecKeychainAddInternetPassword, _SecKeychainAttemptMigrationWithMasterKey, + _SecKeychainAttributeInfoForItemID, _SecKeychainChangeKeyStorePassphrase, + _SecKeychainChangePassword, _SecKeychainCleanupHandles, _SecKeychainCopyAccess, + _SecKeychainCopyBlob, _SecKeychainCopyDefault, _SecKeychainCopyDomainDefault, + _SecKeychainCopyDomainSearchList, _SecKeychainCopyLogin, _SecKeychainCopySearchList, + _SecKeychainCopySettings, _SecKeychainCopySignature, _SecKeychainCreate, + _SecKeychainCreateNew, _SecKeychainCreateWithBlob, _SecKeychainDBIsInKeychainList, _SecKeychainDelete, _SecKeychainEraseUnlockKeyWithPubKeyHash, _SecKeychainErrFromOSStatus, _SecKeychainFindGenericPassword, _SecKeychainFindInternetPassword, _SecKeychainFreeAttributeInfo, diff --git a/Frameworks/Symbols.framework/Versions/A/Headers/NSSymbolEffect.h b/Frameworks/Symbols.framework/Versions/A/Headers/NSSymbolEffect.h index 0dd1c928..74adde5e 100644 --- a/Frameworks/Symbols.framework/Versions/A/Headers/NSSymbolEffect.h +++ b/Frameworks/Symbols.framework/Versions/A/Headers/NSSymbolEffect.h @@ -14,8 +14,66 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability) #pragma mark - Options +/// The behavior of repetition to use when a symbol effect is animating. +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)) NS_REFINED_FOR_SWIFT +@interface NSSymbolEffectOptionsRepeatBehavior: NSObject + ++ (instancetype)new NS_UNAVAILABLE; +- (instancetype)init NS_UNAVAILABLE; + +/// Creates and returns a repeat behavior that prefers to repeat indefinitely using periodic animations. +/// Periodic animations play the effect at regular intervals starting and stopping each time. +/// +/// - Returns: A new behavior that prefers to repeat indefinitely using periodic animations. ++ (instancetype)behaviorPeriodic; + +/// Creates and returns a repeat behavior with a preferred play count using periodic animations. +/// Periodic animations play the effect at regular intervals starting and stopping each time. +/// +/// - Parameter count: The preferred number of times to play the +/// effect. Very +/// large or small values may be clamped. +/// +/// - Returns: A new behavior with the preferred +/// play count using periodic animations. ++ (instancetype)behaviorPeriodicWithCount:(NSInteger)count; + +/// Creates and returns a repeat behavior with a preferred repeat delay using periodic animations. +/// Periodic animations play the effect at regular intervals starting and stopping each time. +/// +/// - Parameter delay: The preferred delay between repetitions, +/// in seconds. +/// +/// - Returns: A new behavior that prefers to repeat indefinitely +/// with a specified delay using periodic animations. ++ (instancetype)behaviorPeriodicWithDelay:(double)delay; + +/// Creates and returns a repeat behavior with a preferred play count and delay using periodic animations. +/// Periodic animations play the effect at regular intervals starting and stopping each time. +/// +/// - Parameter count: The preferred number of times to play the +/// effect. Very +/// large or small values may be clamped. +/// +/// - Parameter delay: The preferred delay between repetitions, +/// in seconds. +/// +/// - Returns: A new behavior with the preferred +/// play count and delay using periodic animations. ++ (instancetype)behaviorPeriodicWithCount:(NSInteger)count delay:(double)delay; + +/// Creates and returns a repeat behavior that prefers to repeat indefinitely, +/// using continuous animations if available. +/// Continuous animations have an intro, a body that runs as long as the effect is enabled, and an outro. +/// If available these animations provide a smoother animation when an effect repeats indefinitely. +/// +/// - Returns: A new behavior that prefers to repeat indefinitely with continuous animations. ++ (instancetype)behaviorContinuous; + +@end + /// Options configuring how symbol effects apply to symbol views. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolEffectOptions : NSObject + (instancetype)new NS_UNAVAILABLE; @@ -25,10 +83,10 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ + (instancetype)options; /// Convenience initializer that prefers to repeat indefinitely. -+ (instancetype)optionsWithRepeating; ++ (instancetype)optionsWithRepeating API_DEPRECATED_WITH_REPLACEMENT("[NSSymbolEffectOptionsRepeatBehavior behaviorPeriodic]", macos(14.0, API_TO_BE_DEPRECATED), ios(17.0, API_TO_BE_DEPRECATED), tvos(17.0, API_TO_BE_DEPRECATED), watchos(10.0, API_TO_BE_DEPRECATED), visionos(1.0, API_TO_BE_DEPRECATED)); /// Return a copy of the options that prefers to repeat indefinitely. -- (instancetype)optionsWithRepeating; +- (instancetype)optionsWithRepeating API_DEPRECATED_WITH_REPLACEMENT("[NSSymbolEffectOptionsRepeatBehavior behaviorPeriodic]", macos(14.0, API_TO_BE_DEPRECATED), ios(17.0, API_TO_BE_DEPRECATED), tvos(17.0, API_TO_BE_DEPRECATED), watchos(10.0, API_TO_BE_DEPRECATED), visionos(1.0, API_TO_BE_DEPRECATED)); /// Convenience initializer that prefers not to repeat. + (instancetype)optionsWithNonRepeating; @@ -42,7 +100,7 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ /// effect. Very large or small values may be clamped. /// /// - Returns: A new options object with the preferred repeat count. -+ (instancetype)optionsWithRepeatCount:(NSInteger)count; ++ (instancetype)optionsWithRepeatCount:(NSInteger)count API_DEPRECATED_WITH_REPLACEMENT("[NSSymbolEffectOptionsRepeatBehavior behaviorPeriodicWithCount:]", macos(14.0, API_TO_BE_DEPRECATED), ios(17.0, API_TO_BE_DEPRECATED), tvos(17.0, API_TO_BE_DEPRECATED), watchos(10.0, API_TO_BE_DEPRECATED), visionos(1.0, API_TO_BE_DEPRECATED)); /// Return a copy of the options setting a preferred repeat count. /// @@ -50,7 +108,7 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ /// effect. Very large or small values may be clamped. /// /// - Returns: A new options object with the preferred repeat count. -- (instancetype)optionsWithRepeatCount:(NSInteger)count; +- (instancetype)optionsWithRepeatCount:(NSInteger)count API_DEPRECATED_WITH_REPLACEMENT("[NSSymbolEffectOptionsRepeatBehavior behaviorPeriodicWithCount:]", macos(14.0, API_TO_BE_DEPRECATED), ios(17.0, API_TO_BE_DEPRECATED), tvos(17.0, API_TO_BE_DEPRECATED), watchos(10.0, API_TO_BE_DEPRECATED), visionos(1.0, API_TO_BE_DEPRECATED)); /// Convenience initializer setting the preferred speed multiplier. /// @@ -70,6 +128,20 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ /// - Returns: A new instance with the preferred speed multiplier. - (instancetype)optionsWithSpeed:(double)speed; +/// Convenience initializer setting a preferred repeat behavior. +/// +/// - Parameter behavior: The preferred behavior when the effect is repeated. +/// +/// - Returns: A new options object with the preferred repeat behavior. ++ (instancetype)optionsWithRepeatBehavior:(NSSymbolEffectOptionsRepeatBehavior *)behavior API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); + +/// Return a copy of the options setting a preferred repeat behavior. +/// +/// - Parameter behavior: The preferred behavior when the effect is repeated. +/// +/// - Returns: A new options object with the preferred repeat behavior. +- (instancetype)optionsWithRepeatBehavior:(NSSymbolEffectOptionsRepeatBehavior *)behavior API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); + @end #pragma mark - Base Effect @@ -77,7 +149,7 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ /// An abstract base class for effects that can be applied to both NSImageViews and UIImageViews that have symbol-based images. /// /// Don't use this class directly, instead use any of the concrete subclasses. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolEffect : NSObject + (instancetype)new NS_UNAVAILABLE; @@ -92,7 +164,7 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ /// /// The Pulse animation fades the opacity of either all layers in /// the symbol, or of a subset of the layers in the symbol. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolPulseEffect : NSSymbolEffect /// The default pulse effect, determined by the system. @@ -112,7 +184,7 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ /// symbol images. /// /// The Bounce animation applies a transitory scaling effect to the symbol. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolBounceEffect : NSSymbolEffect /// The default bounce effect, determined by the system. @@ -141,7 +213,7 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ /// layers in the symbol by a possibly repeating pattern that moves /// up and possibly back down the variable layers. It has no effect /// for non-variable color symbol images. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolVariableColorEffect : NSSymbolEffect /// The default variable color effect, determined by the system. @@ -171,7 +243,7 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ #pragma mark - Scale Effect /// A symbol effect that scales symbol images. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolScaleEffect : NSSymbolEffect /// The default scaling effect, determined by the system. @@ -198,7 +270,7 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ /// /// The Appear animation makes the symbol visible either as a whole, /// or one motion group at a time. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolAppearEffect : NSSymbolEffect /// The default appear effect, determined by the system. @@ -225,7 +297,7 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ /// /// The Disappear animation makes the symbol visible either as a whole, /// or one motion group at a time. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolDisappearEffect : NSSymbolEffect /// The default disappear effect, determined by the system. @@ -245,13 +317,126 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ @end +#pragma mark - Wiggle Effect + +/// A symbol effect that applies the Wiggle animation to symbol images. +/// +/// The Wiggle animation applies a transitory translation or rotation effect +/// to the symbol. +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)) NS_REFINED_FOR_SWIFT +@interface NSSymbolWiggleEffect : NSSymbolEffect + +/// The default wiggle effect, determined by the system. ++ (instancetype)effect; + +/// Convenience initializer for a wiggle effect that +/// rotates back and forth, starting by rotating clockwise. ++ (instancetype)wiggleClockwiseEffect; + +/// Convenience initializer for a wiggle effect that +/// rotates back and forth, starting by rotating counter-clockwise. ++ (instancetype)wiggleCounterClockwiseEffect; + +/// Convenience initializer for a wiggle effect that +/// moves back and forth horizontally, starting by moving left. ++ (instancetype)wiggleLeftEffect; + +/// Convenience initializer for a wiggle effect that +/// moves back and forth horizontally, starting by moving right. ++ (instancetype)wiggleRightEffect; + +/// Convenience initializer for a wiggle effect that +/// moves back and forth vertically, starting by moving up. ++ (instancetype)wiggleUpEffect; + +/// Convenience initializer for a wiggle effect that +/// moves back and forth vertically, starting by moving down. ++ (instancetype)wiggleDownEffect; + +/// Convenience initializer for a wiggle effect that moves back and forth +/// horizontally based on the current locale, starting by moving forward. ++ (instancetype)wiggleForwardEffect; + +/// Convenience initializer for a wiggle effect that moves back and forth +/// horizontally based on the current locale, starting by moving backward. ++ (instancetype)wiggleBackwardEffect; + +/// Convenience initializer for a wiggle effect that moves back and forth +/// along an axis, starting by moving toward a custom angle. +/// +/// The angle is in degrees moving clockwise from the positive x-axis. ++ (instancetype)wiggleCustomAngleEffect:(double)angle; + +/// Returns a copy of the effect that animates incrementally, by layer. +- (instancetype)effectWithByLayer; + +/// Returns a copy of the effect that animates all layers of the symbol simultaneously. +- (instancetype)effectWithWholeSymbol; + +@end + +#pragma mark - Rotate Effect + +/// A symbol effect that applies the Rotate animation to +/// symbol images. +/// +/// The Rotate animation rotates parts of a symbol around a +/// symbol-provided anchor point. +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)) NS_REFINED_FOR_SWIFT +@interface NSSymbolRotateEffect : NSSymbolEffect + +/// The default rotate effect, determined by the system. ++ (instancetype)effect; + +/// Convenience initializer for a rotate effect that rotates clockwise. ++ (instancetype)rotateClockwiseEffect; + +/// Convenience initializer for a rotate effect that rotates counter-clockwise. ++ (instancetype)rotateCounterClockwiseEffect; + +/// Returns a copy of the effect that animates incrementally, by layer. +- (instancetype)effectWithByLayer; + +/// Returns a copy of the effect that animates all layers of the symbol simultaneously. +- (instancetype)effectWithWholeSymbol; + +@end + +#pragma mark - Breathe Effect + +/// A symbol effect that applies the Breathe animation to +/// symbol images. +/// +/// The Breathe animation smoothly scales a symbol up and down. +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)) NS_REFINED_FOR_SWIFT +@interface NSSymbolBreatheEffect : NSSymbolEffect + +/// The default breathe effect, determined by the system. ++ (instancetype)effect; + +/// Convenience initializer for a breathe effect that +/// pulses layers as they breathe. ++ (instancetype)breathePulseEffect; + +/// Convenience initializer for a breathe effect that makes +/// the symbol breathe with no other styling. ++ (instancetype)breathePlainEffect; + +/// Returns a copy of the effect that animates incrementally, by layer. +- (instancetype)effectWithByLayer; + +/// Returns a copy of the effect that animates all layers of the symbol simultaneously. +- (instancetype)effectWithWholeSymbol; + +@end + #pragma mark - Base Content Transitions /// An abstract base class for transitions that can be applied to both NSImageViews and /// UIImageViews that have symbol-based images. /// /// Don't use this class directly, instead use any of the concrete subclasses. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolContentTransition : NSObject + (instancetype)new NS_UNAVAILABLE; @@ -261,9 +446,20 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ #pragma mark - Replace Content Transition +#pragma mark - MagicReplace Content Transition + +/// A symbol effect applies the MagicReplace animation to +/// symbol images. +/// +/// The MagicReplace effect animates common elements across +/// symbol images. +API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)) NS_REFINED_FOR_SWIFT +@interface NSSymbolMagicReplaceContentTransition : NSSymbolContentTransition +@end + /// A symbol effect that animates the replacement of one symbol image /// with another. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolReplaceContentTransition : NSSymbolContentTransition /// The default replace transition, determined by the system. @@ -287,13 +483,16 @@ API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_ /// Returns a copy of the content transition that animates all layers of the symbol simultaneously. - (instancetype)transitionWithWholeSymbol; +/// Convenience initializer for a MagicReplace content transition with a configured Replace fallback. ++ (NSSymbolMagicReplaceContentTransition *)magicTransitionWithFallback:(NSSymbolReplaceContentTransition *)fallback API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)); + @end #pragma mark - Automatic Content Transition /// The default symbol transition, resolves to a particular transition in a /// context-sensitive manner. -API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)) NS_REFINED_FOR_SWIFT +API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0), visionos(1.0)) NS_REFINED_FOR_SWIFT @interface NSSymbolAutomaticContentTransition : NSSymbolContentTransition /// The default automatic transition, determined by the system. diff --git a/Frameworks/Symbols.framework/Versions/A/Symbols.tbd b/Frameworks/Symbols.framework/Versions/A/Symbols.tbd index a8917024..9556ef3e 100644 --- a/Frameworks/Symbols.framework/Versions/A/Symbols.tbd +++ b/Frameworks/Symbols.framework/Versions/A/Symbols.tbd @@ -3,16 +3,11 @@ tbd-version: 4 targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] install-name: '/System/Library/Frameworks/Symbols.framework/Versions/A/Symbols' -current-version: 135.2 +current-version: 167.4 swift-abi-version: 7 exports: - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ] - objc-classes: [ NSSymbolAppearEffect, NSSymbolAutomaticContentTransition, - NSSymbolBounceEffect, NSSymbolContentTransition, NSSymbolDisappearEffect, - NSSymbolEffect, NSSymbolEffectOptions, NSSymbolPulseEffect, - NSSymbolReplaceContentTransition, NSSymbolScaleEffect, NSSymbolVariableColorEffect ] - - targets: [ x86_64-macos, arm64-macos, arm64e-macos ] symbols: [ '_$s7Symbols12SymbolEffectMp', '_$s7Symbols12SymbolEffectP13configurationAA0bC13ConfigurationVvgTj', '_$s7Symbols12SymbolEffectP13configurationAA0bC13ConfigurationVvgTq', '_$s7Symbols12SymbolEffectPAAE04objcC0So08NSSymbolC0CSgvg', @@ -88,8 +83,107 @@ exports: '_$s7Symbols18BounceSymbolEffectVACycfC', '_$s7Symbols18BounceSymbolEffectVMa', '_$s7Symbols18BounceSymbolEffectVMn', '_$s7Symbols18BounceSymbolEffectVN', '_$s7Symbols18BounceSymbolEffectVSHAAMc', '_$s7Symbols18BounceSymbolEffectVSQAAMc', - '_$s7Symbols19ReplaceSymbolEffectV05wholeC0ACvg', '_$s7Symbols19ReplaceSymbolEffectV05wholeC0ACvpMV', - '_$s7Symbols19ReplaceSymbolEffectV0B5StyleO2eeoiySbAE_AEtFZ', + '_$s7Symbols18RotateSymbolEffectV05wholeC0ACvg', '_$s7Symbols18RotateSymbolEffectV05wholeC0ACvpMV', + '_$s7Symbols18RotateSymbolEffectV11isClockwiseSbSgvM', '_$s7Symbols18RotateSymbolEffectV11isClockwiseSbSgvg', + '_$s7Symbols18RotateSymbolEffectV11isClockwiseSbSgvpMV', '_$s7Symbols18RotateSymbolEffectV11isClockwiseSbSgvs', + '_$s7Symbols18RotateSymbolEffectV13configurationAA0cD13ConfigurationVvg', + '_$s7Symbols18RotateSymbolEffectV13configurationAA0cD13ConfigurationVvpMV', + '_$s7Symbols18RotateSymbolEffectV16counterClockwiseACvg', + '_$s7Symbols18RotateSymbolEffectV16counterClockwiseACvpMV', + '_$s7Symbols18RotateSymbolEffectV18objcRepresentationSo08NSSymbolbD0Cvg', + '_$s7Symbols18RotateSymbolEffectV18objcRepresentationSo08NSSymbolbD0CvpMV', + '_$s7Symbols18RotateSymbolEffectV2eeoiySbAC_ACtFZ', '_$s7Symbols18RotateSymbolEffectV4hash4intoys6HasherVz_tF', + '_$s7Symbols18RotateSymbolEffectV7byLayerACvg', '_$s7Symbols18RotateSymbolEffectV7byLayerACvpMV', + '_$s7Symbols18RotateSymbolEffectV9clockwiseACvg', '_$s7Symbols18RotateSymbolEffectV9clockwiseACvpMV', + '_$s7Symbols18RotateSymbolEffectV9hashValueSivg', '_$s7Symbols18RotateSymbolEffectV9hashValueSivpMV', + '_$s7Symbols18RotateSymbolEffectV9isLayeredSbSgvM', '_$s7Symbols18RotateSymbolEffectV9isLayeredSbSgvg', + '_$s7Symbols18RotateSymbolEffectV9isLayeredSbSgvpMV', '_$s7Symbols18RotateSymbolEffectV9isLayeredSbSgvs', + '_$s7Symbols18RotateSymbolEffectVAA0cD0AAMc', '_$s7Symbols18RotateSymbolEffectVAA0cD0AAWP', + '_$s7Symbols18RotateSymbolEffectVACycfC', '_$s7Symbols18RotateSymbolEffectVMa', + '_$s7Symbols18RotateSymbolEffectVMn', '_$s7Symbols18RotateSymbolEffectVN', + '_$s7Symbols18RotateSymbolEffectVSHAAMc', '_$s7Symbols18RotateSymbolEffectVSQAAMc', + '_$s7Symbols18WiggleSymbolEffectV05wholeC0ACvg', '_$s7Symbols18WiggleSymbolEffectV05wholeC0ACvpMV', + '_$s7Symbols18WiggleSymbolEffectV0B5StyleO10rotationalyAESbcAEmFWC', + '_$s7Symbols18WiggleSymbolEffectV0B5StyleO2eeoiySbAE_AEtFZ', + '_$s7Symbols18WiggleSymbolEffectV0B5StyleO4hash4intoys6HasherVz_tF', + '_$s7Symbols18WiggleSymbolEffectV0B5StyleO6linearyAESdcAEmFWC', + '_$s7Symbols18WiggleSymbolEffectV0B5StyleO9hashValueSivg', + '_$s7Symbols18WiggleSymbolEffectV0B5StyleO9hashValueSivpMV', + '_$s7Symbols18WiggleSymbolEffectV0B5StyleO9localizedyAESbcAEmFWC', + '_$s7Symbols18WiggleSymbolEffectV0B5StyleOMa', '_$s7Symbols18WiggleSymbolEffectV0B5StyleOMn', + '_$s7Symbols18WiggleSymbolEffectV0B5StyleON', '_$s7Symbols18WiggleSymbolEffectV0B5StyleOSHAAMc', + '_$s7Symbols18WiggleSymbolEffectV0B5StyleOSQAAMc', '_$s7Symbols18WiggleSymbolEffectV13configurationAA0cD13ConfigurationVvg', + '_$s7Symbols18WiggleSymbolEffectV13configurationAA0cD13ConfigurationVvpMV', + '_$s7Symbols18WiggleSymbolEffectV16counterClockwiseACvg', + '_$s7Symbols18WiggleSymbolEffectV16counterClockwiseACvpMV', + '_$s7Symbols18WiggleSymbolEffectV18objcRepresentationSo08NSSymbolbD0Cvg', + '_$s7Symbols18WiggleSymbolEffectV18objcRepresentationSo08NSSymbolbD0CvpMV', + '_$s7Symbols18WiggleSymbolEffectV2eeoiySbAC_ACtFZ', '_$s7Symbols18WiggleSymbolEffectV2upACvg', + '_$s7Symbols18WiggleSymbolEffectV2upACvpMV', '_$s7Symbols18WiggleSymbolEffectV4downACvg', + '_$s7Symbols18WiggleSymbolEffectV4downACvpMV', '_$s7Symbols18WiggleSymbolEffectV4hash4intoys6HasherVz_tF', + '_$s7Symbols18WiggleSymbolEffectV4leftACvg', '_$s7Symbols18WiggleSymbolEffectV4leftACvpMV', + '_$s7Symbols18WiggleSymbolEffectV5rightACvg', '_$s7Symbols18WiggleSymbolEffectV5rightACvpMV', + '_$s7Symbols18WiggleSymbolEffectV5styleAC0B5StyleOSgvM', '_$s7Symbols18WiggleSymbolEffectV5styleAC0B5StyleOSgvg', + '_$s7Symbols18WiggleSymbolEffectV5styleAC0B5StyleOSgvpMV', + '_$s7Symbols18WiggleSymbolEffectV5styleAC0B5StyleOSgvs', '_$s7Symbols18WiggleSymbolEffectV6custom5angleACSd_tF', + '_$s7Symbols18WiggleSymbolEffectV7byLayerACvg', '_$s7Symbols18WiggleSymbolEffectV7byLayerACvpMV', + '_$s7Symbols18WiggleSymbolEffectV7forwardACvg', '_$s7Symbols18WiggleSymbolEffectV7forwardACvpMV', + '_$s7Symbols18WiggleSymbolEffectV8backwardACvg', '_$s7Symbols18WiggleSymbolEffectV8backwardACvpMV', + '_$s7Symbols18WiggleSymbolEffectV9clockwiseACvg', '_$s7Symbols18WiggleSymbolEffectV9clockwiseACvpMV', + '_$s7Symbols18WiggleSymbolEffectV9hashValueSivg', '_$s7Symbols18WiggleSymbolEffectV9hashValueSivpMV', + '_$s7Symbols18WiggleSymbolEffectV9isLayeredSbSgvM', '_$s7Symbols18WiggleSymbolEffectV9isLayeredSbSgvg', + '_$s7Symbols18WiggleSymbolEffectV9isLayeredSbSgvpMV', '_$s7Symbols18WiggleSymbolEffectV9isLayeredSbSgvs', + '_$s7Symbols18WiggleSymbolEffectVAA0cD0AAMc', '_$s7Symbols18WiggleSymbolEffectVAA0cD0AAWP', + '_$s7Symbols18WiggleSymbolEffectVACycfC', '_$s7Symbols18WiggleSymbolEffectVMa', + '_$s7Symbols18WiggleSymbolEffectVMn', '_$s7Symbols18WiggleSymbolEffectVN', + '_$s7Symbols18WiggleSymbolEffectVSHAAMc', '_$s7Symbols18WiggleSymbolEffectVSQAAMc', + '_$s7Symbols19BreatheSymbolEffectV05wholeC0ACvg', '_$s7Symbols19BreatheSymbolEffectV05wholeC0ACvpMV', + '_$s7Symbols19BreatheSymbolEffectV0B5StyleO2eeoiySbAE_AEtFZ', + '_$s7Symbols19BreatheSymbolEffectV0B5StyleO3dimyA2EmFWC', + '_$s7Symbols19BreatheSymbolEffectV0B5StyleO4hash4intoys6HasherVz_tF', + '_$s7Symbols19BreatheSymbolEffectV0B5StyleO5scaleyA2EmFWC', + '_$s7Symbols19BreatheSymbolEffectV0B5StyleO9hashValueSivg', + '_$s7Symbols19BreatheSymbolEffectV0B5StyleO9hashValueSivpMV', + '_$s7Symbols19BreatheSymbolEffectV0B5StyleOMa', '_$s7Symbols19BreatheSymbolEffectV0B5StyleOMn', + '_$s7Symbols19BreatheSymbolEffectV0B5StyleON', '_$s7Symbols19BreatheSymbolEffectV0B5StyleOSHAAMc', + '_$s7Symbols19BreatheSymbolEffectV0B5StyleOSQAAMc', '_$s7Symbols19BreatheSymbolEffectV13configurationAA0cD13ConfigurationVvg', + '_$s7Symbols19BreatheSymbolEffectV13configurationAA0cD13ConfigurationVvpMV', + '_$s7Symbols19BreatheSymbolEffectV18objcRepresentationSo08NSSymbolbD0Cvg', + '_$s7Symbols19BreatheSymbolEffectV18objcRepresentationSo08NSSymbolbD0CvpMV', + '_$s7Symbols19BreatheSymbolEffectV2eeoiySbAC_ACtFZ', '_$s7Symbols19BreatheSymbolEffectV3dimACvg', + '_$s7Symbols19BreatheSymbolEffectV3dimACvpMV', '_$s7Symbols19BreatheSymbolEffectV4hash4intoys6HasherVz_tF', + '_$s7Symbols19BreatheSymbolEffectV5plainACvg', '_$s7Symbols19BreatheSymbolEffectV5plainACvpMV', + '_$s7Symbols19BreatheSymbolEffectV5pulseACvg', '_$s7Symbols19BreatheSymbolEffectV5pulseACvpMV', + '_$s7Symbols19BreatheSymbolEffectV5scaleACvg', '_$s7Symbols19BreatheSymbolEffectV5scaleACvpMV', + '_$s7Symbols19BreatheSymbolEffectV5styleAC0B5StyleOSgvM', + '_$s7Symbols19BreatheSymbolEffectV5styleAC0B5StyleOSgvg', + '_$s7Symbols19BreatheSymbolEffectV5styleAC0B5StyleOSgvpMV', + '_$s7Symbols19BreatheSymbolEffectV5styleAC0B5StyleOSgvs', + '_$s7Symbols19BreatheSymbolEffectV7byLayerACvg', '_$s7Symbols19BreatheSymbolEffectV7byLayerACvpMV', + '_$s7Symbols19BreatheSymbolEffectV9hashValueSivg', '_$s7Symbols19BreatheSymbolEffectV9hashValueSivpMV', + '_$s7Symbols19BreatheSymbolEffectV9isLayeredSbSgvM', '_$s7Symbols19BreatheSymbolEffectV9isLayeredSbSgvg', + '_$s7Symbols19BreatheSymbolEffectV9isLayeredSbSgvpMV', '_$s7Symbols19BreatheSymbolEffectV9isLayeredSbSgvs', + '_$s7Symbols19BreatheSymbolEffectVAA0cD0AAMc', '_$s7Symbols19BreatheSymbolEffectVAA0cD0AAWP', + '_$s7Symbols19BreatheSymbolEffectVACycfC', '_$s7Symbols19BreatheSymbolEffectVMa', + '_$s7Symbols19BreatheSymbolEffectVMn', '_$s7Symbols19BreatheSymbolEffectVN', + '_$s7Symbols19BreatheSymbolEffectVSHAAMc', '_$s7Symbols19BreatheSymbolEffectVSQAAMc', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V13configurationAA0cD13ConfigurationVvg', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V13configurationAA0cD13ConfigurationVvpMV', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V18objcRepresentationSo08NSSymboleB17ContentTransitionCvg', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V18objcRepresentationSo08NSSymboleB17ContentTransitionCvpMV', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V2eeoiySbAE_AEtFZ', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V4hash4intoys6HasherVz_tF', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V8fallbackACvM', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V8fallbackACvg', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V8fallbackACvpMV', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V8fallbackACvs', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V9hashValueSivg', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0V9hashValueSivpMV', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0VAA0cD0AAMc', '_$s7Symbols19ReplaceSymbolEffectV05MagicB0VAA0cD0AAWP', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0VMa', '_$s7Symbols19ReplaceSymbolEffectV05MagicB0VMn', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0VN', '_$s7Symbols19ReplaceSymbolEffectV05MagicB0VSHAAMc', + '_$s7Symbols19ReplaceSymbolEffectV05MagicB0VSQAAMc', '_$s7Symbols19ReplaceSymbolEffectV05wholeC0ACvg', + '_$s7Symbols19ReplaceSymbolEffectV05wholeC0ACvpMV', '_$s7Symbols19ReplaceSymbolEffectV0B5StyleO2eeoiySbAE_AEtFZ', '_$s7Symbols19ReplaceSymbolEffectV0B5StyleO4hash4intoys6HasherVz_tF', '_$s7Symbols19ReplaceSymbolEffectV0B5StyleO4upUpyA2EmFWC', '_$s7Symbols19ReplaceSymbolEffectV0B5StyleO5offUpyA2EmFWC', @@ -103,13 +197,18 @@ exports: '_$s7Symbols19ReplaceSymbolEffectV18objcRepresentationSo08NSSymbolB17ContentTransitionCvg', '_$s7Symbols19ReplaceSymbolEffectV18objcRepresentationSo08NSSymbolB17ContentTransitionCvpMV', '_$s7Symbols19ReplaceSymbolEffectV2eeoiySbAC_ACtFZ', '_$s7Symbols19ReplaceSymbolEffectV4hash4intoys6HasherVz_tF', - '_$s7Symbols19ReplaceSymbolEffectV4upUpACvg', '_$s7Symbols19ReplaceSymbolEffectV4upUpACvpMV', - '_$s7Symbols19ReplaceSymbolEffectV5offUpACvg', '_$s7Symbols19ReplaceSymbolEffectV5offUpACvpMV', + '_$s7Symbols19ReplaceSymbolEffectV4upUpACvg', '_$s7Symbols19ReplaceSymbolEffectV4upUpACvgZ', + '_$s7Symbols19ReplaceSymbolEffectV4upUpACvpMV', '_$s7Symbols19ReplaceSymbolEffectV4upUpACvpZMV', + '_$s7Symbols19ReplaceSymbolEffectV5magic8fallbackAA05MagicbcD0VAC_tF', + '_$s7Symbols19ReplaceSymbolEffectV5magic8fallbackAC05MagicB0VAC_tF', + '_$s7Symbols19ReplaceSymbolEffectV5offUpACvg', '_$s7Symbols19ReplaceSymbolEffectV5offUpACvgZ', + '_$s7Symbols19ReplaceSymbolEffectV5offUpACvpMV', '_$s7Symbols19ReplaceSymbolEffectV5offUpACvpZMV', '_$s7Symbols19ReplaceSymbolEffectV5styleAC0B5StyleOSgvM', '_$s7Symbols19ReplaceSymbolEffectV5styleAC0B5StyleOSgvg', '_$s7Symbols19ReplaceSymbolEffectV5styleAC0B5StyleOSgvpMV', '_$s7Symbols19ReplaceSymbolEffectV5styleAC0B5StyleOSgvs', - '_$s7Symbols19ReplaceSymbolEffectV6downUpACvg', '_$s7Symbols19ReplaceSymbolEffectV6downUpACvpMV', + '_$s7Symbols19ReplaceSymbolEffectV6downUpACvg', '_$s7Symbols19ReplaceSymbolEffectV6downUpACvgZ', + '_$s7Symbols19ReplaceSymbolEffectV6downUpACvpMV', '_$s7Symbols19ReplaceSymbolEffectV6downUpACvpZMV', '_$s7Symbols19ReplaceSymbolEffectV7byLayerACvg', '_$s7Symbols19ReplaceSymbolEffectV7byLayerACvpMV', '_$s7Symbols19ReplaceSymbolEffectV9hashValueSivg', '_$s7Symbols19ReplaceSymbolEffectV9hashValueSivpMV', '_$s7Symbols19ReplaceSymbolEffectV9isLayeredSbSgvM', '_$s7Symbols19ReplaceSymbolEffectV9isLayeredSbSgvg', @@ -118,7 +217,9 @@ exports: '_$s7Symbols19ReplaceSymbolEffectVACycfC', '_$s7Symbols19ReplaceSymbolEffectVMa', '_$s7Symbols19ReplaceSymbolEffectVMn', '_$s7Symbols19ReplaceSymbolEffectVN', '_$s7Symbols19ReplaceSymbolEffectVSHAAMc', '_$s7Symbols19ReplaceSymbolEffectVSQAAMc', - '_$s7Symbols19SymbolEffectOptionsV12RepeatOptionO10indefiniteyA2EmFWC', + '_$s7Symbols19SymbolEffectOptionsV11repeatDelaySdSgvM', '_$s7Symbols19SymbolEffectOptionsV11repeatDelaySdSgvg', + '_$s7Symbols19SymbolEffectOptionsV11repeatDelaySdSgvpMV', + '_$s7Symbols19SymbolEffectOptionsV11repeatDelaySdSgvs', '_$s7Symbols19SymbolEffectOptionsV12RepeatOptionO10indefiniteyA2EmFWC', '_$s7Symbols19SymbolEffectOptionsV12RepeatOptionO2eeoiySbAE_AEtFZ', '_$s7Symbols19SymbolEffectOptionsV12RepeatOptionO4hash4intoys6HasherVz_tF', '_$s7Symbols19SymbolEffectOptionsV12RepeatOptionO5countyAESicAEmFWC', @@ -127,8 +228,26 @@ exports: '_$s7Symbols19SymbolEffectOptionsV12RepeatOptionOMa', '_$s7Symbols19SymbolEffectOptionsV12RepeatOptionOMn', '_$s7Symbols19SymbolEffectOptionsV12RepeatOptionON', '_$s7Symbols19SymbolEffectOptionsV12RepeatOptionOSHAAMc', '_$s7Symbols19SymbolEffectOptionsV12RepeatOptionOSQAAMc', - '_$s7Symbols19SymbolEffectOptionsV12nonRepeatingACvg', '_$s7Symbols19SymbolEffectOptionsV12nonRepeatingACvgZ', - '_$s7Symbols19SymbolEffectOptionsV12nonRepeatingACvpMV', '_$s7Symbols19SymbolEffectOptionsV18objcRepresentationSo08NSSymbolcD0Cvg', + '_$s7Symbols19SymbolEffectOptionsV12_RepeatStyleV10continuousAEvgZ', + '_$s7Symbols19SymbolEffectOptionsV12_RepeatStyleV10continuousAEvpZMV', + '_$s7Symbols19SymbolEffectOptionsV12_RepeatStyleV8periodicAEvgZ', + '_$s7Symbols19SymbolEffectOptionsV12_RepeatStyleV8periodicAEvpZMV', + '_$s7Symbols19SymbolEffectOptionsV12_RepeatStyleV8periodic_5delayAESiSg_SdSgtFZ', + '_$s7Symbols19SymbolEffectOptionsV12_RepeatStyleVMa', '_$s7Symbols19SymbolEffectOptionsV12_RepeatStyleVMn', + '_$s7Symbols19SymbolEffectOptionsV12_RepeatStyleVN', '_$s7Symbols19SymbolEffectOptionsV12nonRepeatingACvg', + '_$s7Symbols19SymbolEffectOptionsV12nonRepeatingACvgZ', '_$s7Symbols19SymbolEffectOptionsV12nonRepeatingACvpMV', + '_$s7Symbols19SymbolEffectOptionsV12nonRepeatingACvpZMV', + '_$s7Symbols19SymbolEffectOptionsV14RepeatBehaviorV10continuousAEvgZ', + '_$s7Symbols19SymbolEffectOptionsV14RepeatBehaviorV10continuousAEvpZMV', + '_$s7Symbols19SymbolEffectOptionsV14RepeatBehaviorV8periodicAEvgZ', + '_$s7Symbols19SymbolEffectOptionsV14RepeatBehaviorV8periodicAEvpZMV', + '_$s7Symbols19SymbolEffectOptionsV14RepeatBehaviorV8periodic_5delayAESiSg_SdSgtFZ', + '_$s7Symbols19SymbolEffectOptionsV14RepeatBehaviorVMa', '_$s7Symbols19SymbolEffectOptionsV14RepeatBehaviorVMn', + '_$s7Symbols19SymbolEffectOptionsV14RepeatBehaviorVN', '_$s7Symbols19SymbolEffectOptionsV17prefersContinuousSbvM', + '_$s7Symbols19SymbolEffectOptionsV17prefersContinuousSbvg', + '_$s7Symbols19SymbolEffectOptionsV17prefersContinuousSbvpMV', + '_$s7Symbols19SymbolEffectOptionsV17prefersContinuousSbvs', + '_$s7Symbols19SymbolEffectOptionsV18objcRepresentationSo08NSSymbolcD0Cvg', '_$s7Symbols19SymbolEffectOptionsV18objcRepresentationSo08NSSymbolcD0CvpMV', '_$s7Symbols19SymbolEffectOptionsV2eeoiySbAC_ACtFZ', '_$s7Symbols19SymbolEffectOptionsV4hash4intoys6HasherVz_tF', '_$s7Symbols19SymbolEffectOptionsV5speedSdvM', '_$s7Symbols19SymbolEffectOptionsV5speedSdvg', @@ -138,10 +257,19 @@ exports: '_$s7Symbols19SymbolEffectOptionsV6repeatAC12RepeatOptionOSgvg', '_$s7Symbols19SymbolEffectOptionsV6repeatAC12RepeatOptionOSgvpMV', '_$s7Symbols19SymbolEffectOptionsV6repeatAC12RepeatOptionOSgvs', + '_$s7Symbols19SymbolEffectOptionsV6repeat_5delayACSiSg_SdtF', + '_$s7Symbols19SymbolEffectOptionsV6repeat_5delayACSiSg_SdtFZ', + '_$s7Symbols19SymbolEffectOptionsV6repeatyA2C14RepeatBehaviorVF', + '_$s7Symbols19SymbolEffectOptionsV6repeatyA2C14RepeatBehaviorVFZ', '_$s7Symbols19SymbolEffectOptionsV6repeatyACSiSgF', '_$s7Symbols19SymbolEffectOptionsV6repeatyACSiSgFZ', - '_$s7Symbols19SymbolEffectOptionsV7defaultACvgZ', '_$s7Symbols19SymbolEffectOptionsV9hashValueSivg', - '_$s7Symbols19SymbolEffectOptionsV9hashValueSivpMV', '_$s7Symbols19SymbolEffectOptionsV9repeatingACvg', - '_$s7Symbols19SymbolEffectOptionsV9repeatingACvgZ', '_$s7Symbols19SymbolEffectOptionsV9repeatingACvpMV', + '_$s7Symbols19SymbolEffectOptionsV7_repeatyA2C12_RepeatStyleVF', + '_$s7Symbols19SymbolEffectOptionsV7_repeatyA2C12_RepeatStyleVFZ', + '_$s7Symbols19SymbolEffectOptionsV7defaultACvgZ', '_$s7Symbols19SymbolEffectOptionsV7defaultACvpZMV', + '_$s7Symbols19SymbolEffectOptionsV9hashValueSivg', '_$s7Symbols19SymbolEffectOptionsV9hashValueSivpMV', + '_$s7Symbols19SymbolEffectOptionsV9repeating5delayACSd_tF', + '_$s7Symbols19SymbolEffectOptionsV9repeating5delayACSd_tFZ', + '_$s7Symbols19SymbolEffectOptionsV9repeatingACvg', '_$s7Symbols19SymbolEffectOptionsV9repeatingACvgZ', + '_$s7Symbols19SymbolEffectOptionsV9repeatingACvpMV', '_$s7Symbols19SymbolEffectOptionsV9repeatingACvpZMV', '_$s7Symbols19SymbolEffectOptionsVMa', '_$s7Symbols19SymbolEffectOptionsVMn', '_$s7Symbols19SymbolEffectOptionsVN', '_$s7Symbols19SymbolEffectOptionsVSHAAMc', '_$s7Symbols19SymbolEffectOptionsVSQAAMc', '_$s7Symbols21AutomaticSymbolEffectV13configurationAA0cD13ConfigurationVvg', @@ -172,6 +300,23 @@ exports: '_$s7Symbols21DisappearSymbolEffectVACycfC', '_$s7Symbols21DisappearSymbolEffectVMa', '_$s7Symbols21DisappearSymbolEffectVMn', '_$s7Symbols21DisappearSymbolEffectVN', '_$s7Symbols21DisappearSymbolEffectVSHAAMc', '_$s7Symbols21DisappearSymbolEffectVSQAAMc', + '_$s7Symbols24MagicReplaceSymbolEffectV13configurationAA0dE13ConfigurationVvg', + '_$s7Symbols24MagicReplaceSymbolEffectV13configurationAA0dE13ConfigurationVvpMV', + '_$s7Symbols24MagicReplaceSymbolEffectV18objcRepresentationSo08NSSymbolbC17ContentTransitionCvg', + '_$s7Symbols24MagicReplaceSymbolEffectV18objcRepresentationSo08NSSymbolbC17ContentTransitionCvpMV', + '_$s7Symbols24MagicReplaceSymbolEffectV2eeoiySbAC_ACtFZ', + '_$s7Symbols24MagicReplaceSymbolEffectV4hash4intoys6HasherVz_tF', + '_$s7Symbols24MagicReplaceSymbolEffectV7replaceAA0cdE0VvgZ', + '_$s7Symbols24MagicReplaceSymbolEffectV7replaceAA0cdE0VvpZMV', + '_$s7Symbols24MagicReplaceSymbolEffectV8fallbackAA0cdE0VvM', + '_$s7Symbols24MagicReplaceSymbolEffectV8fallbackAA0cdE0Vvg', + '_$s7Symbols24MagicReplaceSymbolEffectV8fallbackAA0cdE0VvpMV', + '_$s7Symbols24MagicReplaceSymbolEffectV8fallbackAA0cdE0Vvs', + '_$s7Symbols24MagicReplaceSymbolEffectV9hashValueSivg', '_$s7Symbols24MagicReplaceSymbolEffectV9hashValueSivpMV', + '_$s7Symbols24MagicReplaceSymbolEffectVAA0dE0AAMc', '_$s7Symbols24MagicReplaceSymbolEffectVAA0dE0AAWP', + '_$s7Symbols24MagicReplaceSymbolEffectVMa', '_$s7Symbols24MagicReplaceSymbolEffectVMn', + '_$s7Symbols24MagicReplaceSymbolEffectVN', '_$s7Symbols24MagicReplaceSymbolEffectVSHAAMc', + '_$s7Symbols24MagicReplaceSymbolEffectVSQAAMc', '_$s7Symbols25SymbolEffectConfigurationV0C0O12magicReplaceyAeA05MagicfbC0VcAEmFWC', '_$s7Symbols25SymbolEffectConfigurationV0C0O13variableColoryAeA08VariablefbC0VcAEmFWC', '_$s7Symbols25SymbolEffectConfigurationV0C0O2eeoiySbAE_AEtFZ', '_$s7Symbols25SymbolEffectConfigurationV0C0O4hash4intoys6HasherVz_tF', @@ -179,6 +324,9 @@ exports: '_$s7Symbols25SymbolEffectConfigurationV0C0O5scaleyAeA05ScalebC0VcAEmFWC', '_$s7Symbols25SymbolEffectConfigurationV0C0O6appearyAeA06AppearbC0VcAEmFWC', '_$s7Symbols25SymbolEffectConfigurationV0C0O6bounceyAeA06BouncebC0VcAEmFWC', + '_$s7Symbols25SymbolEffectConfigurationV0C0O6rotateyAeA06RotatebC0VcAEmFWC', + '_$s7Symbols25SymbolEffectConfigurationV0C0O6wiggleyAeA06WigglebC0VcAEmFWC', + '_$s7Symbols25SymbolEffectConfigurationV0C0O7breatheyAeA07BreathebC0VcAEmFWC', '_$s7Symbols25SymbolEffectConfigurationV0C0O7replaceyAeA07ReplacebC0VcAEmFWC', '_$s7Symbols25SymbolEffectConfigurationV0C0O9automaticyAeA09AutomaticbC0VcAEmFWC', '_$s7Symbols25SymbolEffectConfigurationV0C0O9disappearyAeA09DisappearbC0VcAEmFWC', @@ -234,4 +382,11 @@ exports: '_$s7Symbols25VariableColorSymbolEffectVACycfC', '_$s7Symbols25VariableColorSymbolEffectVMa', '_$s7Symbols25VariableColorSymbolEffectVMn', '_$s7Symbols25VariableColorSymbolEffectVN', '_$s7Symbols25VariableColorSymbolEffectVSHAAMc', '_$s7Symbols25VariableColorSymbolEffectVSQAAMc' ] + objc-classes: [ NSSymbolAppearEffect, NSSymbolAutomaticContentTransition, + NSSymbolBounceEffect, NSSymbolBreatheEffect, NSSymbolContentTransition, + NSSymbolDisappearEffect, NSSymbolEffect, NSSymbolEffectOptions, + NSSymbolEffectOptionsRepeatBehavior, NSSymbolMagicReplaceContentTransition, + NSSymbolPulseEffect, NSSymbolReplaceContentTransition, NSSymbolRotateEffect, + NSSymbolScaleEffect, NSSymbolVariableColorEffect, NSSymbolWiggleEffect, + _NSSymbolEffectOptionsRepeatStyle ] ... diff --git a/build.zig.zon b/build.zig.zon new file mode 100644 index 00000000..8eb362f7 --- /dev/null +++ b/build.zig.zon @@ -0,0 +1,18 @@ +.{ + .name = .macos_sdk, + .fingerprint = 0xb4c27c1efbfc8499, // changing this has trust and security implications + .version = "0.0.0", + .paths = .{ + "build.zig", + "build.zig.zon", + "Frameworks", + "include", + "lib", + "LICENSE", + "README.md", + "stub.c", + "update.sh", + "verify.sh", + }, + .dependencies = .{}, +} diff --git a/include/AppleArchive/AAEntryACLBlob.h b/include/AppleArchive/AAEntryACLBlob.h index e0079cd5..8b10b88b 100644 --- a/include/AppleArchive/AAEntryACLBlob.h +++ b/include/AppleArchive/AAEntryACLBlob.h @@ -32,7 +32,7 @@ APPLE_ARCHIVE_ENUM(AAACEQualifierTypes, uint32_t) { } APPLE_ARCHIVE_SWIFT_PRIVATE; // tag, permissions, flags for each ACL entry (ACE) -typedef acl_tag_t AAACETag APPLE_ARCHIVE_SWIFT_PRIVATE; +typedef uint32_t AAACETag APPLE_ARCHIVE_SWIFT_PRIVATE; typedef uint64_t AAACEPermSet APPLE_ARCHIVE_SWIFT_PRIVATE; typedef uint64_t AAACEFlagSet APPLE_ARCHIVE_SWIFT_PRIVATE; diff --git a/include/AppleArchive/AppleArchive.h b/include/AppleArchive/AppleArchive.h index 4eed8afd..6b96c694 100644 --- a/include/AppleArchive/AppleArchive.h +++ b/include/AppleArchive/AppleArchive.h @@ -12,7 +12,6 @@ #include #include #include -#include // All the API headers will use these macros diff --git a/include/AppleEXR.h b/include/AppleEXR.h index d9899da7..333d8433 100644 --- a/include/AppleEXR.h +++ b/include/AppleEXR.h @@ -1609,7 +1609,7 @@ __nonnull axr_encoder_t axr_encoder_create( axr_flags_t flags ) AXR_RETURNS_RETA * @param tileHeight The height of the tile. Will be ignored for axr_compression_none/zips/rle, in which case it is 1. If 0, AppleEXR will pick a value. * @param levelMode {ripmap/mipmap/one_level} | {round_up / round_down}. Must be axr_level_mode_one_level for axr_compression_none/zips/rle * @return on success, a valid axr_part_t owned by the encoder. You should not release this object unless you have also retained it. */ -__nonnull axr_part_t axr_encoder_append_part(__nonnull axr_encoder_t encoder, +__nullable axr_part_t axr_encoder_append_part(__nonnull axr_encoder_t encoder, const char * __nonnull partName, // "name" attribute const char * __nullable viewName, // "view" attribute axr_compression_t compression, diff --git a/include/AssertMacros.h b/include/AssertMacros.h index 5fc9bc03..6408a53c 100644 --- a/include/AssertMacros.h +++ b/include/AssertMacros.h @@ -133,6 +133,9 @@ * * If you do not define DEBUG_ASSERT_PRODUCTION_CODE, the default value 1 will be used * (production code = no assertion code and no messages). + * + * If you are building with modules modules this must be defined via a commandline + * flag (i.e. -DDEBUG_ASSERT_PRODUCTION_CODE=1) in order to work correctly. */ #ifndef DEBUG_ASSERT_PRODUCTION_CODE #define DEBUG_ASSERT_PRODUCTION_CODE !DEBUG @@ -218,18 +221,32 @@ #ifdef KERNEL #include #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \ - printf( "AssertMacros: %s, %s file: %s, line: %d, value: %ld\n", assertion, (message!=0) ? message : "", file, line, (long) (value)); + printf( "AssertMacros: %s, %s file: %s, line: %d, value: %lld\n", assertion, (message!=0) ? message : "", file, line, (long long) (value)); #elif TARGET_OS_DRIVERKIT #include #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \ - os_log(OS_LOG_DEFAULT, "AssertMacros: %s, %s file: %s, line: %d, value: %ld\n", assertion, (message!=0) ? message : "", file, line, (long) (value)); + os_log(OS_LOG_DEFAULT, "AssertMacros: %s, %s file: %s, line: %d, value: %lld\n", assertion, (message!=0) ? message : "", file, line, (long long) (value)); #else #include #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \ - fprintf(stderr, "AssertMacros: %s, %s file: %s, line: %d, value: %ld\n", assertion, (message!=0) ? message : "", file, line, (long) (value)); + fprintf(stderr, "AssertMacros: %s, %s file: %s, line: %d, value: %lld\n", assertion, (message!=0) ? message : "", file, line, (long long) (value)); #endif #endif +/* + * DEBUG_ASSERT_FORCE_64_BIT_ERROR_CODE + * + * Summary: + * By default the errorCode passed to DEBUG_ASSERT_MESSAGE will be the system word + * length. If DEBUG_ASSERT_FORCE_64_BIT_ERROR_CODE is set then it will be changed + * to a 64 bit integer, even on 32 bit platforms. + */ +#ifndef DEBUG_ASSERT_FORCE_64_BIT_ERROR_CODE + #define DEBUG_ASSERT_ERROR_TYPE long +#else + #define DEBUG_ASSERT_ERROR_TYPE long long +#endif + @@ -361,7 +378,7 @@ #define __Check_noErr(errorCode) \ do \ { \ - long evalOnceErrorCode = (errorCode); \ + DEBUG_ASSERT_ERROR_TYPE evalOnceErrorCode = (errorCode); \ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \ { \ DEBUG_ASSERT_MESSAGE( \ @@ -397,7 +414,7 @@ #define __Check_noErr_String(errorCode, message) \ do \ { \ - long evalOnceErrorCode = (errorCode); \ + DEBUG_ASSERT_ERROR_TYPE evalOnceErrorCode = (errorCode); \ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \ { \ DEBUG_ASSERT_MESSAGE( \ @@ -523,7 +540,7 @@ #define __Verify_noErr(errorCode) \ do \ { \ - long evalOnceErrorCode = (errorCode); \ + DEBUG_ASSERT_ERROR_TYPE evalOnceErrorCode = (errorCode); \ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \ { \ DEBUG_ASSERT_MESSAGE( \ @@ -565,7 +582,7 @@ #define __Verify_noErr_String(errorCode, message) \ do \ { \ - long evalOnceErrorCode = (errorCode); \ + DEBUG_ASSERT_ERROR_TYPE evalOnceErrorCode = (errorCode); \ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \ { \ DEBUG_ASSERT_MESSAGE( \ @@ -605,7 +622,7 @@ #else #define __Verify_noErr_Action(errorCode, action) \ do { \ - long evalOnceErrorCode = (errorCode); \ + DEBUG_ASSERT_ERROR_TYPE evalOnceErrorCode = (errorCode); \ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) { \ DEBUG_ASSERT_MESSAGE( \ DEBUG_ASSERT_COMPONENT_NAME_STRING, \ @@ -970,7 +987,7 @@ #define __Require_noErr(errorCode, exceptionLabel) \ do \ { \ - long evalOnceErrorCode = (errorCode); \ + DEBUG_ASSERT_ERROR_TYPE evalOnceErrorCode = (errorCode); \ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \ { \ DEBUG_ASSERT_MESSAGE( \ @@ -1022,7 +1039,7 @@ #define __Require_noErr_Action(errorCode, exceptionLabel, action) \ do \ { \ - long evalOnceErrorCode = (errorCode); \ + DEBUG_ASSERT_ERROR_TYPE evalOnceErrorCode = (errorCode); \ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \ { \ DEBUG_ASSERT_MESSAGE( \ @@ -1131,7 +1148,7 @@ #define __Require_noErr_String(errorCode, exceptionLabel, message) \ do \ { \ - long evalOnceErrorCode = (errorCode); \ + DEBUG_ASSERT_ERROR_TYPE evalOnceErrorCode = (errorCode); \ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \ { \ DEBUG_ASSERT_MESSAGE( \ @@ -1186,7 +1203,7 @@ #define __Require_noErr_Action_String(errorCode, exceptionLabel, action, message) \ do \ { \ - long evalOnceErrorCode = (errorCode); \ + DEBUG_ASSERT_ERROR_TYPE evalOnceErrorCode = (errorCode); \ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \ { \ DEBUG_ASSERT_MESSAGE( \ diff --git a/include/Availability.h b/include/Availability.h index 4c94f77e..71db7d4d 100644 --- a/include/Availability.h +++ b/include/Availability.h @@ -26,8 +26,8 @@ /* These macros are for use in OS header files. They enable function prototypes and Objective-C methods to be tagged with the OS version in which they - were first available; and, if applicable, the OS version in which they - became deprecated. + were first available; and, if applicable, the OS versions in which they + became deprecated and obsoleted. The desktop Mac OS X and iOS each have different version numbers. The __OSX_AVAILABLE_STARTING() macro allows you to specify both the desktop @@ -135,25 +135,38 @@ #ifndef __API_TO_BE_DEPRECATED_MACOS #define __API_TO_BE_DEPRECATED_MACOS 100000 #endif +#ifndef __API_TO_BE_DEPRECATED_MACOSAPPLICATIONEXTENSION +#define __API_TO_BE_DEPRECATED_MACOSAPPLICATIONEXTENSION 100000 +#endif #ifndef __API_TO_BE_DEPRECATED_IOS #define __API_TO_BE_DEPRECATED_IOS 100000 #endif +#ifndef __API_TO_BE_DEPRECATED_IOSAPPLICATIONEXTENSION +#define __API_TO_BE_DEPRECATED_IOSAPPLICATIONEXTENSION 100000 +#endif #ifndef __API_TO_BE_DEPRECATED_MACCATALYST #define __API_TO_BE_DEPRECATED_MACCATALYST 100000 #endif +#ifndef __API_TO_BE_DEPRECATED_MACCATALYSTAPPLICATIONEXTENSION +#define __API_TO_BE_DEPRECATED_MACCATALYSTAPPLICATIONEXTENSION 100000 +#endif #ifndef __API_TO_BE_DEPRECATED_WATCHOS #define __API_TO_BE_DEPRECATED_WATCHOS 100000 #endif +#ifndef __API_TO_BE_DEPRECATED_WATCHOSAPPLICATIONEXTENSION +#define __API_TO_BE_DEPRECATED_WATCHOSAPPLICATIONEXTENSION 100000 +#endif #ifndef __API_TO_BE_DEPRECATED_TVOS #define __API_TO_BE_DEPRECATED_TVOS 100000 #endif +#ifndef __API_TO_BE_DEPRECATED_TVOSAPPLICATIONEXTENSION +#define __API_TO_BE_DEPRECATED_TVOSAPPLICATIONEXTENSION 100000 +#endif -#ifndef __API_TO_BE_DEPRECATED_BRIDGEOS -#endif #ifndef __API_TO_BE_DEPRECATED_DRIVERKIT #define __API_TO_BE_DEPRECATED_DRIVERKIT 100000 @@ -162,6 +175,17 @@ #ifndef __API_TO_BE_DEPRECATED_VISIONOS #define __API_TO_BE_DEPRECATED_VISIONOS 100000 #endif +#ifndef __API_TO_BE_DEPRECATED_VISIONOSAPPLICATIONEXTENSION +#define __API_TO_BE_DEPRECATED_VISIONOSAPPLICATIONEXTENSION 100000 +#endif + +#ifndef __API_TO_BE_DEPRECATED_EXCLAVEKIT + +#endif + +#ifndef __API_TO_BE_DEPRECATED_KERNELKIT +#define __API_TO_BE_DEPRECATED_KERNELKIT 100000 +#endif @@ -171,6 +195,10 @@ #include #include +#include +#if __has_include() + #include +#endif #ifdef __IPHONE_OS_VERSION_MIN_REQUIRED #define __OSX_AVAILABLE_STARTING(_osx, _ios) __AVAILABILITY_INTERNAL##_ios @@ -416,7 +444,9 @@ * Use to specify the release that a particular API became available. * * Platform names: - * macos, ios, tvos, watchos + * macos, macOSApplicationExtension, macCatalyst, macCatalystApplicationExtension, + * ios, iOSApplicationExtension, tvos, tvOSApplicationExtension, watchos, + * watchOSApplicationExtension, driverkit, visionos, visionOSApplicationExtension * * Examples: * __API_AVAILABLE(macos(10.10)) @@ -424,36 +454,48 @@ * __API_AVAILABLE(macos(10.4), ios(8.0), watchos(2.0), tvos(10.0)) * __API_AVAILABLE(driverkit(19.0)) */ - #define __API_AVAILABLE(...) __API_AVAILABLE_GET_MACRO(__VA_ARGS__,__API_AVAILABLE7,__API_AVAILABLE6,__API_AVAILABLE5,__API_AVAILABLE4,__API_AVAILABLE3,__API_AVAILABLE2,__API_AVAILABLE1,__API_AVAILABLE0,0)(__VA_ARGS__) + #define __API_AVAILABLE(...) __API_AVAILABLE_GET_MACRO_93585900(__VA_ARGS__,__API_AVAILABLE15,__API_AVAILABLE14,__API_AVAILABLE13,__API_AVAILABLE12,__API_AVAILABLE11,__API_AVAILABLE10,__API_AVAILABLE9,__API_AVAILABLE8,__API_AVAILABLE7,__API_AVAILABLE6,__API_AVAILABLE5,__API_AVAILABLE4,__API_AVAILABLE3,__API_AVAILABLE2,__API_AVAILABLE1,__API_AVAILABLE0,0)(__VA_ARGS__) - #define __API_AVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_AVAILABLE_BEGIN_GET_MACRO(__VA_ARGS__,__API_AVAILABLE_BEGIN7,__API_AVAILABLE_BEGIN6,__API_AVAILABLE_BEGIN5,__API_AVAILABLE_BEGIN4,__API_AVAILABLE_BEGIN3,__API_AVAILABLE_BEGIN2,__API_AVAILABLE_BEGIN1,__API_AVAILABLE_BEGIN0,0)(__VA_ARGS__) + #define __API_AVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_AVAILABLE_BEGIN_GET_MACRO_93585900(__VA_ARGS__,__API_AVAILABLE_BEGIN15,__API_AVAILABLE_BEGIN14,__API_AVAILABLE_BEGIN13,__API_AVAILABLE_BEGIN12,__API_AVAILABLE_BEGIN11,__API_AVAILABLE_BEGIN10,__API_AVAILABLE_BEGIN9,__API_AVAILABLE_BEGIN8,__API_AVAILABLE_BEGIN7,__API_AVAILABLE_BEGIN6,__API_AVAILABLE_BEGIN5,__API_AVAILABLE_BEGIN4,__API_AVAILABLE_BEGIN3,__API_AVAILABLE_BEGIN2,__API_AVAILABLE_BEGIN1,__API_AVAILABLE_BEGIN0,0)(__VA_ARGS__) #define __API_AVAILABLE_END _Pragma("clang attribute pop") /* * API Deprecations * - * Use to specify the release that a particular API became unavailable. + * Use to specify the release that a particular API became deprecated. * * Platform names: - * macos, ios, tvos, watchos + * macos, macOSApplicationExtension, macCatalyst, macCatalystApplicationExtension, + * ios, iOSApplicationExtension, tvos, tvOSApplicationExtension, watchos, + * watchOSApplicationExtension, driverkit, visionos, visionOSApplicationExtension * * Examples: * - * __API_DEPRECATED("No longer supported", macos(10.4, 10.8)) - * __API_DEPRECATED("No longer supported", macos(10.4, 10.8), ios(2.0, 3.0), watchos(2.0, 3.0), tvos(9.0, 10.0)) + * __API_DEPRECATED("Deprecated", macos(10.4, 10.8)) + * __API_DEPRECATED("Deprecated", macos(10.4, 10.8), ios(2.0, 3.0), watchos(2.0, 3.0), tvos(9.0, 10.0)) * * __API_DEPRECATED_WITH_REPLACEMENT("-setName:", tvos(10.0, 10.4), ios(9.0, 10.0)) * __API_DEPRECATED_WITH_REPLACEMENT("SomeClassName", macos(10.4, 10.6), watchos(2.0, 3.0)) */ - #define __API_DEPRECATED(...) __API_DEPRECATED_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_MSG7,__API_DEPRECATED_MSG6,__API_DEPRECATED_MSG5,__API_DEPRECATED_MSG4,__API_DEPRECATED_MSG3,__API_DEPRECATED_MSG2,__API_DEPRECATED_MSG1,__API_DEPRECATED_MSG0,0,0)(__VA_ARGS__) - #define __API_DEPRECATED_WITH_REPLACEMENT(...) __API_DEPRECATED_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_REP7,__API_DEPRECATED_REP6,__API_DEPRECATED_REP5,__API_DEPRECATED_REP4,__API_DEPRECATED_REP3,__API_DEPRECATED_REP2,__API_DEPRECATED_REP1,__API_DEPRECATED_REP0,0,0)(__VA_ARGS__) + #define __API_DEPRECATED(...) __API_DEPRECATED_MSG_GET_MACRO_93585900(__VA_ARGS__,__API_DEPRECATED_MSG15,__API_DEPRECATED_MSG14,__API_DEPRECATED_MSG13,__API_DEPRECATED_MSG12,__API_DEPRECATED_MSG11,__API_DEPRECATED_MSG10,__API_DEPRECATED_MSG9,__API_DEPRECATED_MSG8,__API_DEPRECATED_MSG7,__API_DEPRECATED_MSG6,__API_DEPRECATED_MSG5,__API_DEPRECATED_MSG4,__API_DEPRECATED_MSG3,__API_DEPRECATED_MSG2,__API_DEPRECATED_MSG1,__API_DEPRECATED_MSG0,0,0)(__VA_ARGS__) + #define __API_DEPRECATED_WITH_REPLACEMENT(...) __API_DEPRECATED_REP_GET_MACRO_93585900(__VA_ARGS__,__API_DEPRECATED_REP15,__API_DEPRECATED_REP14,__API_DEPRECATED_REP13,__API_DEPRECATED_REP12,__API_DEPRECATED_REP11,__API_DEPRECATED_REP10,__API_DEPRECATED_REP9,__API_DEPRECATED_REP8,__API_DEPRECATED_REP7,__API_DEPRECATED_REP6,__API_DEPRECATED_REP5,__API_DEPRECATED_REP4,__API_DEPRECATED_REP3,__API_DEPRECATED_REP2,__API_DEPRECATED_REP1,__API_DEPRECATED_REP0,0,0)(__VA_ARGS__) - #define __API_DEPRECATED_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_BEGIN_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_BEGIN7,__API_DEPRECATED_BEGIN6,__API_DEPRECATED_BEGIN5,__API_DEPRECATED_BEGIN4,__API_DEPRECATED_BEGIN3,__API_DEPRECATED_BEGIN2,__API_DEPRECATED_BEGIN1,__API_DEPRECATED_BEGIN0,0,0)(__VA_ARGS__) + #define __API_DEPRECATED_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_BEGIN_GET_MACRO_93585900(__VA_ARGS__,__API_DEPRECATED_BEGIN15,__API_DEPRECATED_BEGIN14,__API_DEPRECATED_BEGIN13,__API_DEPRECATED_BEGIN12,__API_DEPRECATED_BEGIN11,__API_DEPRECATED_BEGIN10,__API_DEPRECATED_BEGIN9,__API_DEPRECATED_BEGIN8,__API_DEPRECATED_BEGIN7,__API_DEPRECATED_BEGIN6,__API_DEPRECATED_BEGIN5,__API_DEPRECATED_BEGIN4,__API_DEPRECATED_BEGIN3,__API_DEPRECATED_BEGIN2,__API_DEPRECATED_BEGIN1,__API_DEPRECATED_BEGIN0,0,0)(__VA_ARGS__) #define __API_DEPRECATED_END _Pragma("clang attribute pop") - #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_WITH_REPLACEMENT_BEGIN_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN7,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN6,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN5,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN4,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN3,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN2,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN1,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN0,0,0)(__VA_ARGS__) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_WITH_REPLACEMENT_BEGIN_GET_MACRO_93585900(__VA_ARGS__,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN15,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN14,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN13,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN12,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN11,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN10,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN9,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN8,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN7,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN6,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN5,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN4,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN3,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN2,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN1,__API_DEPRECATED_WITH_REPLACEMENT_BEGIN0,0,0)(__VA_ARGS__) #define __API_DEPRECATED_WITH_REPLACEMENT_END _Pragma("clang attribute pop") + + #define __API_OBSOLETED(...) __API_OBSOLETED_MSG_GET_MACRO_93585900(__VA_ARGS__,__API_OBSOLETED_MSG15,__API_OBSOLETED_MSG14,__API_OBSOLETED_MSG13,__API_OBSOLETED_MSG12,__API_OBSOLETED_MSG11,__API_OBSOLETED_MSG10,__API_OBSOLETED_MSG9,__API_OBSOLETED_MSG8,__API_OBSOLETED_MSG7,__API_OBSOLETED_MSG6,__API_OBSOLETED_MSG5,__API_OBSOLETED_MSG4,__API_OBSOLETED_MSG3,__API_OBSOLETED_MSG2,__API_OBSOLETED_MSG1,__API_OBSOLETED_MSG0,0,0)(__VA_ARGS__) + #define __API_OBSOLETED_WITH_REPLACEMENT(...) __API_OBSOLETED_REP_GET_MACRO_93585900(__VA_ARGS__,__API_OBSOLETED_REP15,__API_OBSOLETED_REP14,__API_OBSOLETED_REP13,__API_OBSOLETED_REP12,__API_OBSOLETED_REP11,__API_OBSOLETED_REP10,__API_OBSOLETED_REP9,__API_OBSOLETED_REP8,__API_OBSOLETED_REP7,__API_OBSOLETED_REP6,__API_OBSOLETED_REP5,__API_OBSOLETED_REP4,__API_OBSOLETED_REP3,__API_OBSOLETED_REP2,__API_OBSOLETED_REP1,__API_OBSOLETED_REP0,0,0)(__VA_ARGS__) + + #define __API_OBSOLETED_BEGIN(...) _Pragma("clang attribute push") __API_OBSOLETED_BEGIN_GET_MACRO_93585900(__VA_ARGS__,__API_OBSOLETED_BEGIN15,__API_OBSOLETED_BEGIN14,__API_OBSOLETED_BEGIN13,__API_OBSOLETED_BEGIN12,__API_OBSOLETED_BEGIN11,__API_OBSOLETED_BEGIN10,__API_OBSOLETED_BEGIN9,__API_OBSOLETED_BEGIN8,__API_OBSOLETED_BEGIN7,__API_OBSOLETED_BEGIN6,__API_OBSOLETED_BEGIN5,__API_OBSOLETED_BEGIN4,__API_OBSOLETED_BEGIN3,__API_OBSOLETED_BEGIN2,__API_OBSOLETED_BEGIN1,__API_OBSOLETED_BEGIN0,0,0)(__VA_ARGS__) + #define __API_OBSOLETED_END _Pragma("clang attribute pop") + + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN(...) _Pragma("clang attribute push") __API_OBSOLETED_WITH_REPLACEMENT_BEGIN_GET_MACRO_93585900(__VA_ARGS__,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN15,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN14,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN13,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN12,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN11,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN10,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN9,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN8,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN7,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN6,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN5,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN4,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN3,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN2,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN1,__API_OBSOLETED_WITH_REPLACEMENT_BEGIN0,0,0)(__VA_ARGS__) + #define __API_OBSOLETED_WITH_REPLACEMENT_END _Pragma("clang attribute pop") + /* * API Unavailability * Use to specify that an API is unavailable for a particular platform. @@ -462,9 +504,9 @@ * __API_UNAVAILABLE(macos) * __API_UNAVAILABLE(watchos, tvos) */ - #define __API_UNAVAILABLE(...) __API_UNAVAILABLE_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE7,__API_UNAVAILABLE6,__API_UNAVAILABLE5,__API_UNAVAILABLE4,__API_UNAVAILABLE3,__API_UNAVAILABLE2,__API_UNAVAILABLE1,__API_UNAVAILABLE0,0)(__VA_ARGS__) + #define __API_UNAVAILABLE(...) __API_UNAVAILABLE_GET_MACRO_93585900(__VA_ARGS__,__API_UNAVAILABLE15,__API_UNAVAILABLE14,__API_UNAVAILABLE13,__API_UNAVAILABLE12,__API_UNAVAILABLE11,__API_UNAVAILABLE10,__API_UNAVAILABLE9,__API_UNAVAILABLE8,__API_UNAVAILABLE7,__API_UNAVAILABLE6,__API_UNAVAILABLE5,__API_UNAVAILABLE4,__API_UNAVAILABLE3,__API_UNAVAILABLE2,__API_UNAVAILABLE1,__API_UNAVAILABLE0,0)(__VA_ARGS__) - #define __API_UNAVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_UNAVAILABLE_BEGIN_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE_BEGIN7,__API_UNAVAILABLE_BEGIN6,__API_UNAVAILABLE_BEGIN5,__API_UNAVAILABLE_BEGIN4,__API_UNAVAILABLE_BEGIN3,__API_UNAVAILABLE_BEGIN2,__API_UNAVAILABLE_BEGIN1,__API_UNAVAILABLE_BEGIN0,0)(__VA_ARGS__) + #define __API_UNAVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_UNAVAILABLE_BEGIN_GET_MACRO_93585900(__VA_ARGS__,__API_UNAVAILABLE_BEGIN15,__API_UNAVAILABLE_BEGIN14,__API_UNAVAILABLE_BEGIN13,__API_UNAVAILABLE_BEGIN12,__API_UNAVAILABLE_BEGIN11,__API_UNAVAILABLE_BEGIN10,__API_UNAVAILABLE_BEGIN9,__API_UNAVAILABLE_BEGIN8,__API_UNAVAILABLE_BEGIN7,__API_UNAVAILABLE_BEGIN6,__API_UNAVAILABLE_BEGIN5,__API_UNAVAILABLE_BEGIN4,__API_UNAVAILABLE_BEGIN3,__API_UNAVAILABLE_BEGIN2,__API_UNAVAILABLE_BEGIN1,__API_UNAVAILABLE_BEGIN0,0)(__VA_ARGS__) #define __API_UNAVAILABLE_END _Pragma("clang attribute pop") #endif /* __has_attribute(availability) */ #endif /* #if defined(__has_feature) && defined(__has_attribute) */ @@ -509,6 +551,30 @@ #define __API_DEPRECATED_WITH_REPLACEMENT_END(...) #endif +#ifndef __API_OBSOLETED + #define __API_OBSOLETED(...) +#endif + +#ifndef __API_OBSOLETED_BEGIN + #define __API_OBSOLETED_BEGIN(...) +#endif + +#ifndef __API_OBSOLETED_END + #define __API_OBSOLETED_END(...) +#endif + +#ifndef __API_OBSOLETED_WITH_REPLACEMENT + #define __API_OBSOLETED_WITH_REPLACEMENT(...) +#endif + +#ifndef __API_OBSOLETED_WITH_REPLACEMENT_BEGIN + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN(...) +#endif + +#ifndef __API_OBSOLETED_WITH_REPLACEMENT_END + #define __API_OBSOLETED_WITH_REPLACEMENT_END(...) +#endif + #ifndef __API_UNAVAILABLE #define __API_UNAVAILABLE(...) #endif @@ -529,6 +595,14 @@ #define __SPI_AVAILABLE(...) #endif +#ifndef __SPI_AVAILABLE_BEGIN + #define __SPI_AVAILABLE_BEGIN(...) +#endif + +#ifndef __SPI_AVAILABLE_END + #define __SPI_AVAILABLE_END(...) +#endif + #ifndef __SPI_DEPRECATED #define __SPI_DEPRECATED(...) #endif @@ -539,3 +613,13 @@ #endif /* __AVAILABILITY__ */ +#ifndef __OPEN_SOURCE__ +// This is explicitly outside the header guard +#ifndef __AVAILABILITY_VERSIONS_VERSION_HASH +#define __AVAILABILITY_VERSIONS_VERSION_HASH 93585900U +#define __AVAILABILITY_VERSIONS_VERSION_STRING "Local" +#define __AVAILABILITY_FILE "Availability.h" +#elif __AVAILABILITY_VERSIONS_VERSION_HASH != 93585900U +#pragma GCC error "Already found AvailabilityVersions version " __AVAILABILITY_FILE " from " __AVAILABILITY_VERSIONS_VERSION_STRING ", which is incompatible with Availability.h from Local. Mixing and matching Availability from different SDKs is not supported" +#endif /* __AVAILABILITY_VERSIONS_VERSION_HASH */ +#endif /* __OPEN_SOURCE__ */ diff --git a/include/AvailabilityInternal.h b/include/AvailabilityInternal.h index ab908f9c..dfce2b38 100644 --- a/include/AvailabilityInternal.h +++ b/include/AvailabilityInternal.h @@ -30,19 +30,17 @@ #ifndef __AVAILABILITY_INTERNAL__ #define __AVAILABILITY_INTERNAL__ -#if __has_include() - #include -#endif +#include #ifndef __MAC_OS_X_VERSION_MIN_REQUIRED #if defined(__has_builtin) && __has_builtin(__is_target_os) #if __is_target_os(macos) #define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ - #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_14_2 + #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_15_4 #endif #elif __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ #define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_14_2 + #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_15_4 #endif /* __has_builtin(__is_target_os) && __is_target_os(macos) */ #endif /* __MAC_OS_X_VERSION_MIN_REQUIRED */ @@ -50,11 +48,11 @@ #if defined(__has_builtin) && __has_builtin(__is_target_os) #if __is_target_os(ios) #define __IPHONE_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ - #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_17_2 + #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_18_4 #endif #elif __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ #define __IPHONE_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ - #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_17_2 + #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_18_4 #endif /* __has_builtin(__is_target_os) && __is_target_os(ios) */ #endif /* __IPHONE_OS_VERSION_MIN_REQUIRED */ @@ -62,13 +60,13 @@ #if defined(__has_builtin) && __has_builtin(__is_target_os) #if __is_target_os(watchos) #define __WATCH_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ - #define __WATCH_OS_VERSION_MAX_ALLOWED __WATCHOS_10_2 + #define __WATCH_OS_VERSION_MAX_ALLOWED __WATCHOS_11_4 /* for compatibility with existing code. New code should use platform specific checks */ #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_9_0 #endif #elif __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ #define __WATCH_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ - #define __WATCH_OS_VERSION_MAX_ALLOWED __WATCHOS_10_2 + #define __WATCH_OS_VERSION_MAX_ALLOWED __WATCHOS_11_4 /* for compatibility with existing code. New code should use platform specific checks */ #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_9_0 #endif /* __has_builtin(__is_target_os) && __is_target_os(watchos) */ @@ -78,34 +76,25 @@ #if defined(__has_builtin) && __has_builtin(__is_target_os) #if __is_target_os(tvos) #define __TV_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ - #define __TV_OS_VERSION_MAX_ALLOWED __TVOS_17_2 + #define __TV_OS_VERSION_MAX_ALLOWED __TVOS_18_4 /* for compatibility with existing code. New code should use platform specific checks */ #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_9_0 #endif #elif __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ #define __TV_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ - #define __TV_OS_VERSION_MAX_ALLOWED __TVOS_17_2 + #define __TV_OS_VERSION_MAX_ALLOWED __TVOS_18_4 /* for compatibility with existing code. New code should use platform specific checks */ #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_9_0 #endif /* __has_builtin(__is_target_os) && __is_target_os(tvos) */ #endif /* __TV_OS_VERSION_MIN_REQUIRED */ -#ifndef __BRIDGE_OS_VERSION_MIN_REQUIRED - #if defined(__has_builtin) && __has_builtin(__is_target_os) - #if __is_target_os(bridgeos) - #define __BRIDGE_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ - #define __BRIDGE_OS_VERSION_MAX_ALLOWED __BRIDGEOS_8_2 - /* for compatibility with existing code. New code should use platform specific checks */ - #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_11_0 - #endif - #endif -#endif /* __BRIDGE_OS_VERSION_MIN_REQUIRED */ + #ifndef __DRIVERKIT_VERSION_MIN_REQUIRED #if defined(__has_builtin) && __has_builtin(__is_target_os) #if __is_target_os(driverkit) #define __DRIVERKIT_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ - #define __DRIVERKIT_VERSION_MAX_ALLOWED __DRIVERKIT_23_2 + #define __DRIVERKIT_VERSION_MAX_ALLOWED __DRIVERKIT_24_4 #endif #endif /* __has_builtin(__is_target_os) && __is_target_os(driverkit) */ #endif /* __DRIVERKIT_VERSION_MIN_REQUIRED */ @@ -114,7 +103,7 @@ #if defined(__has_builtin) && __has_builtin(__is_target_os) #if __is_target_os(visionos) #define __VISION_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ - #define __VISION_OS_VERSION_MAX_ALLOWED __VISIONOS_1_0 + #define __VISION_OS_VERSION_MAX_ALLOWED __VISIONOS_2_4 /* for compatibility with existing code. New code should use platform specific checks */ #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_17_1 #endif @@ -122,25 +111,6 @@ #endif /* __VISION_OS_VERSION_MIN_REQUIRED */ -//FIXME: Workaround for rdar://116062344 -#ifndef __VISION_OS_VERSION_MIN_REQUIRED - #if defined(__has_builtin) && __has_builtin(__is_target_os) - #if __is_target_os(xros) - #define __VISION_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ - // Hardcoded these since until compiler fix for rdar://116062344 will land - #if defined(__VISIONOS_2_0) - #define __VISION_OS_VERSION_MAX_ALLOWED __VISIONOS_2_0 - #elif defined(__VISION_OS_1_1) - #define __VISION_OS_VERSION_MAX_ALLOWED __VISIONOS_1_1 - #elif defined(__VISION_OS_1_0) - #define __VISION_OS_VERSION_MAX_ALLOWED __VISIONOS_1_0 - #endif - /* for compatibility with existing code. New code should use platform specific checks */ - #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_17_1 - #endif - #endif /* __has_builtin(__is_target_os) && __is_target_os(visionos) */ -#endif /* __VISION_OS_VERSION_MIN_REQUIRED */ - #ifndef __OPEN_SOURCE__ #endif /* __OPEN_SOURCE__ */ @@ -173,46 +143,74 @@ #define __AVAILABILITY_INTERNAL_WEAK_IMPORT __attribute__((weak_import)) #define __AVAILABILITY_INTERNAL_REGULAR -#include - #if defined(__has_feature) && defined(__has_attribute) #if __has_attribute(availability) #define __API_AVAILABLE_PLATFORM_macos(x) macos,introduced=x #define __API_DEPRECATED_PLATFORM_macos(x,y) macos,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_macos(x,y,z) macos,introduced=x,deprecated=y,obsoleted=z #define __API_UNAVAILABLE_PLATFORM_macos macos,unavailable #define __API_AVAILABLE_PLATFORM_macosx(x) macos,introduced=x #define __API_DEPRECATED_PLATFORM_macosx(x,y) macos,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_macosx(x,y,z) macos,introduced=x,deprecated=y,obsoleted=z #define __API_UNAVAILABLE_PLATFORM_macosx macos,unavailable + #define __API_AVAILABLE_PLATFORM_macOSApplicationExtension(x) macOSApplicationExtension,introduced=x + #define __API_DEPRECATED_PLATFORM_macOSApplicationExtension(x,y) macOSApplicationExtension,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_macOSApplicationExtension(x,y,z) macOSApplicationExtension,introduced=x,deprecated=y,obsoleted=z + #define __API_UNAVAILABLE_PLATFORM_macOSApplicationExtension macOSApplicationExtension,unavailable #define __API_AVAILABLE_PLATFORM_ios(x) ios,introduced=x #define __API_DEPRECATED_PLATFORM_ios(x,y) ios,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_ios(x,y,z) ios,introduced=x,deprecated=y,obsoleted=z #define __API_UNAVAILABLE_PLATFORM_ios ios,unavailable + #define __API_AVAILABLE_PLATFORM_iOSApplicationExtension(x) iOSApplicationExtension,introduced=x + #define __API_DEPRECATED_PLATFORM_iOSApplicationExtension(x,y) iOSApplicationExtension,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_iOSApplicationExtension(x,y,z) iOSApplicationExtension,introduced=x,deprecated=y,obsoleted=z + #define __API_UNAVAILABLE_PLATFORM_iOSApplicationExtension iOSApplicationExtension,unavailable #define __API_AVAILABLE_PLATFORM_macCatalyst(x) macCatalyst,introduced=x #define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) macCatalyst,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_macCatalyst(x,y,z) macCatalyst,introduced=x,deprecated=y,obsoleted=z #define __API_UNAVAILABLE_PLATFORM_macCatalyst macCatalyst,unavailable - #define __API_AVAILABLE_PLATFORM_macCatalyst(x) macCatalyst,introduced=x - #define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) macCatalyst,introduced=x,deprecated=y - #define __API_UNAVAILABLE_PLATFORM_macCatalyst macCatalyst,unavailable + #define __API_AVAILABLE_PLATFORM_macCatalystApplicationExtension(x) macCatalystApplicationExtension,introduced=x + #define __API_DEPRECATED_PLATFORM_macCatalystApplicationExtension(x,y) macCatalystApplicationExtension,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_macCatalystApplicationExtension(x,y,z) macCatalystApplicationExtension,introduced=x,deprecated=y,obsoleted=z + #define __API_UNAVAILABLE_PLATFORM_macCatalystApplicationExtension macCatalystApplicationExtension,unavailable #define __API_AVAILABLE_PLATFORM_watchos(x) watchos,introduced=x #define __API_DEPRECATED_PLATFORM_watchos(x,y) watchos,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_watchos(x,y,z) watchos,introduced=x,deprecated=y,obsoleted=z #define __API_UNAVAILABLE_PLATFORM_watchos watchos,unavailable + #define __API_AVAILABLE_PLATFORM_watchOSApplicationExtension(x) watchOSApplicationExtension,introduced=x + #define __API_DEPRECATED_PLATFORM_watchOSApplicationExtension(x,y) watchOSApplicationExtension,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_watchOSApplicationExtension(x,y,z) watchOSApplicationExtension,introduced=x,deprecated=y,obsoleted=z + #define __API_UNAVAILABLE_PLATFORM_watchOSApplicationExtension watchOSApplicationExtension,unavailable #define __API_AVAILABLE_PLATFORM_tvos(x) tvos,introduced=x #define __API_DEPRECATED_PLATFORM_tvos(x,y) tvos,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_tvos(x,y,z) tvos,introduced=x,deprecated=y,obsoleted=z #define __API_UNAVAILABLE_PLATFORM_tvos tvos,unavailable - - - + #define __API_AVAILABLE_PLATFORM_tvOSApplicationExtension(x) tvOSApplicationExtension,introduced=x + #define __API_DEPRECATED_PLATFORM_tvOSApplicationExtension(x,y) tvOSApplicationExtension,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_tvOSApplicationExtension(x,y,z) tvOSApplicationExtension,introduced=x,deprecated=y,obsoleted=z + #define __API_UNAVAILABLE_PLATFORM_tvOSApplicationExtension tvOSApplicationExtension,unavailable + #define __API_AVAILABLE_PLATFORM_driverkit(x) driverkit,introduced=x #define __API_DEPRECATED_PLATFORM_driverkit(x,y) driverkit,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_driverkit(x,y,z) driverkit,introduced=x,deprecated=y,obsoleted=z #define __API_UNAVAILABLE_PLATFORM_driverkit driverkit,unavailable #define __API_AVAILABLE_PLATFORM_visionos(x) visionos,introduced=x #define __API_DEPRECATED_PLATFORM_visionos(x,y) visionos,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_visionos(x,y,z) visionos,introduced=x,deprecated=y,obsoleted=z #define __API_UNAVAILABLE_PLATFORM_visionos visionos,unavailable - #define __API_AVAILABLE_PLATFORM_xros(x) visionos,introduced=x - #define __API_DEPRECATED_PLATFORM_xros(x,y) visionos,introduced=x,deprecated=y - #define __API_UNAVAILABLE_PLATFORM_xros visionos,unavailable + #define __API_AVAILABLE_PLATFORM_visionOSApplicationExtension(x) visionOSApplicationExtension,introduced=x + #define __API_DEPRECATED_PLATFORM_visionOSApplicationExtension(x,y) visionOSApplicationExtension,introduced=x,deprecated=y + #define __API_OBSOLETED_PLATFORM_visionOSApplicationExtension(x,y,z) visionOSApplicationExtension,introduced=x,deprecated=y,obsoleted=z + #define __API_UNAVAILABLE_PLATFORM_visionOSApplicationExtension visionOSApplicationExtension,unavailable + + #define __API_UNAVAILABLE_PLATFORM_kernelkit kernelkit,unavailable #endif /* __has_attribute(availability) */ #endif /* defined(__has_feature) && defined(__has_attribute) */ +#ifndef __OPEN_SOURCE__ + +#endif /* __OPEN_SOURCE__ */ + #if defined(__has_feature) && defined(__has_attribute) #if __has_attribute(availability) #define __API_APPLY_TO any(record, enum, enum_constant, function, objc_method, objc_category, objc_protocol, objc_interface, objc_property, type_alias, variable, field) @@ -241,7 +239,15 @@ #define __API_AVAILABLE5(arg0,arg1,arg2,arg3,arg4,arg5) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) #define __API_AVAILABLE6(arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) #define __API_AVAILABLE7(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7) - #define __API_AVAILABLE_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME + #define __API_AVAILABLE8(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7) __API_A(arg8) + #define __API_AVAILABLE9(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7) __API_A(arg8) __API_A(arg9) + #define __API_AVAILABLE10(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7) __API_A(arg8) __API_A(arg9) __API_A(arg10) + #define __API_AVAILABLE11(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7) __API_A(arg8) __API_A(arg9) __API_A(arg10) __API_A(arg11) + #define __API_AVAILABLE12(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7) __API_A(arg8) __API_A(arg9) __API_A(arg10) __API_A(arg11) __API_A(arg12) + #define __API_AVAILABLE13(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7) __API_A(arg8) __API_A(arg9) __API_A(arg10) __API_A(arg11) __API_A(arg12) __API_A(arg13) + #define __API_AVAILABLE14(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7) __API_A(arg8) __API_A(arg9) __API_A(arg10) __API_A(arg11) __API_A(arg12) __API_A(arg13) __API_A(arg14) + #define __API_AVAILABLE15(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7) __API_A(arg8) __API_A(arg9) __API_A(arg10) __API_A(arg11) __API_A(arg12) __API_A(arg13) __API_A(arg14) __API_A(arg15) + #define __API_AVAILABLE_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,NAME,...) NAME #define __API_A_BEGIN(x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_AVAILABLE_PLATFORM_##x))), apply_to = __API_APPLY_TO))) @@ -253,7 +259,15 @@ #define __API_AVAILABLE_BEGIN5(arg0,arg1,arg2,arg3,arg4,arg5) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) #define __API_AVAILABLE_BEGIN6(arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) #define __API_AVAILABLE_BEGIN7(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7) - #define __API_AVAILABLE_BEGIN_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME + #define __API_AVAILABLE_BEGIN8(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7) __API_A_BEGIN(arg8) + #define __API_AVAILABLE_BEGIN9(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7) __API_A_BEGIN(arg8) __API_A_BEGIN(arg9) + #define __API_AVAILABLE_BEGIN10(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7) __API_A_BEGIN(arg8) __API_A_BEGIN(arg9) __API_A_BEGIN(arg10) + #define __API_AVAILABLE_BEGIN11(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7) __API_A_BEGIN(arg8) __API_A_BEGIN(arg9) __API_A_BEGIN(arg10) __API_A_BEGIN(arg11) + #define __API_AVAILABLE_BEGIN12(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7) __API_A_BEGIN(arg8) __API_A_BEGIN(arg9) __API_A_BEGIN(arg10) __API_A_BEGIN(arg11) __API_A_BEGIN(arg12) + #define __API_AVAILABLE_BEGIN13(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7) __API_A_BEGIN(arg8) __API_A_BEGIN(arg9) __API_A_BEGIN(arg10) __API_A_BEGIN(arg11) __API_A_BEGIN(arg12) __API_A_BEGIN(arg13) + #define __API_AVAILABLE_BEGIN14(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7) __API_A_BEGIN(arg8) __API_A_BEGIN(arg9) __API_A_BEGIN(arg10) __API_A_BEGIN(arg11) __API_A_BEGIN(arg12) __API_A_BEGIN(arg13) __API_A_BEGIN(arg14) + #define __API_AVAILABLE_BEGIN15(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7) __API_A_BEGIN(arg8) __API_A_BEGIN(arg9) __API_A_BEGIN(arg10) __API_A_BEGIN(arg11) __API_A_BEGIN(arg12) __API_A_BEGIN(arg13) __API_A_BEGIN(arg14) __API_A_BEGIN(arg15) + #define __API_AVAILABLE_BEGIN_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,NAME,...) NAME @@ -267,7 +281,15 @@ #define __API_DEPRECATED_MSG5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) #define __API_DEPRECATED_MSG6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) #define __API_DEPRECATED_MSG7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7) - #define __API_DEPRECATED_MSG_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME + #define __API_DEPRECATED_MSG8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7) __API_D(msg,arg8) + #define __API_DEPRECATED_MSG9(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7) __API_D(msg,arg8) __API_D(msg,arg9) + #define __API_DEPRECATED_MSG10(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7) __API_D(msg,arg8) __API_D(msg,arg9) __API_D(msg,arg10) + #define __API_DEPRECATED_MSG11(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7) __API_D(msg,arg8) __API_D(msg,arg9) __API_D(msg,arg10) __API_D(msg,arg11) + #define __API_DEPRECATED_MSG12(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7) __API_D(msg,arg8) __API_D(msg,arg9) __API_D(msg,arg10) __API_D(msg,arg11) __API_D(msg,arg12) + #define __API_DEPRECATED_MSG13(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7) __API_D(msg,arg8) __API_D(msg,arg9) __API_D(msg,arg10) __API_D(msg,arg11) __API_D(msg,arg12) __API_D(msg,arg13) + #define __API_DEPRECATED_MSG14(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7) __API_D(msg,arg8) __API_D(msg,arg9) __API_D(msg,arg10) __API_D(msg,arg11) __API_D(msg,arg12) __API_D(msg,arg13) __API_D(msg,arg14) + #define __API_DEPRECATED_MSG15(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7) __API_D(msg,arg8) __API_D(msg,arg9) __API_D(msg,arg10) __API_D(msg,arg11) __API_D(msg,arg12) __API_D(msg,arg13) __API_D(msg,arg14) __API_D(msg,arg15) + #define __API_DEPRECATED_MSG_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,NAME,...) NAME #define __API_D_BEGIN(msg, x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg))), apply_to = __API_APPLY_TO))) @@ -279,39 +301,153 @@ #define __API_DEPRECATED_BEGIN5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) #define __API_DEPRECATED_BEGIN6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) #define __API_DEPRECATED_BEGIN7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7) - #define __API_DEPRECATED_BEGIN_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME + #define __API_DEPRECATED_BEGIN8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7) __API_D_BEGIN(msg,arg8) + #define __API_DEPRECATED_BEGIN9(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7) __API_D_BEGIN(msg,arg8) __API_D_BEGIN(msg,arg9) + #define __API_DEPRECATED_BEGIN10(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7) __API_D_BEGIN(msg,arg8) __API_D_BEGIN(msg,arg9) __API_D_BEGIN(msg,arg10) + #define __API_DEPRECATED_BEGIN11(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7) __API_D_BEGIN(msg,arg8) __API_D_BEGIN(msg,arg9) __API_D_BEGIN(msg,arg10) __API_D_BEGIN(msg,arg11) + #define __API_DEPRECATED_BEGIN12(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7) __API_D_BEGIN(msg,arg8) __API_D_BEGIN(msg,arg9) __API_D_BEGIN(msg,arg10) __API_D_BEGIN(msg,arg11) __API_D_BEGIN(msg,arg12) + #define __API_DEPRECATED_BEGIN13(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7) __API_D_BEGIN(msg,arg8) __API_D_BEGIN(msg,arg9) __API_D_BEGIN(msg,arg10) __API_D_BEGIN(msg,arg11) __API_D_BEGIN(msg,arg12) __API_D_BEGIN(msg,arg13) + #define __API_DEPRECATED_BEGIN14(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7) __API_D_BEGIN(msg,arg8) __API_D_BEGIN(msg,arg9) __API_D_BEGIN(msg,arg10) __API_D_BEGIN(msg,arg11) __API_D_BEGIN(msg,arg12) __API_D_BEGIN(msg,arg13) __API_D_BEGIN(msg,arg14) + #define __API_DEPRECATED_BEGIN15(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7) __API_D_BEGIN(msg,arg8) __API_D_BEGIN(msg,arg9) __API_D_BEGIN(msg,arg10) __API_D_BEGIN(msg,arg11) __API_D_BEGIN(msg,arg12) __API_D_BEGIN(msg,arg13) __API_D_BEGIN(msg,arg14) __API_D_BEGIN(msg,arg15) + #define __API_DEPRECATED_BEGIN_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,NAME,...) NAME #if __has_feature(attribute_availability_with_replacement) - #define __API_R(rep,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep))) + #define __API_DR(rep,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep))) #else - #define __API_R(rep,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x))) + #define __API_DR(rep,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x))) #endif - #define __API_DEPRECATED_REP0(msg,arg0) __API_R(msg,arg0) - #define __API_DEPRECATED_REP1(msg,arg0,arg1) __API_R(msg,arg0) __API_R(msg,arg1) - #define __API_DEPRECATED_REP2(msg,arg0,arg1,arg2) __API_R(msg,arg0) __API_R(msg,arg1) __API_R(msg,arg2) - #define __API_DEPRECATED_REP3(msg,arg0,arg1,arg2,arg3) __API_R(msg,arg0) __API_R(msg,arg1) __API_R(msg,arg2) __API_R(msg,arg3) - #define __API_DEPRECATED_REP4(msg,arg0,arg1,arg2,arg3,arg4) __API_R(msg,arg0) __API_R(msg,arg1) __API_R(msg,arg2) __API_R(msg,arg3) __API_R(msg,arg4) - #define __API_DEPRECATED_REP5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_R(msg,arg0) __API_R(msg,arg1) __API_R(msg,arg2) __API_R(msg,arg3) __API_R(msg,arg4) __API_R(msg,arg5) - #define __API_DEPRECATED_REP6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_R(msg,arg0) __API_R(msg,arg1) __API_R(msg,arg2) __API_R(msg,arg3) __API_R(msg,arg4) __API_R(msg,arg5) __API_R(msg,arg6) - #define __API_DEPRECATED_REP7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_R(msg,arg0) __API_R(msg,arg1) __API_R(msg,arg2) __API_R(msg,arg3) __API_R(msg,arg4) __API_R(msg,arg5) __API_R(msg,arg6) __API_R(msg,arg7) - #define __API_DEPRECATED_REP_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME + #define __API_DEPRECATED_REP0(msg,arg0) __API_DR(msg,arg0) + #define __API_DEPRECATED_REP1(msg,arg0,arg1) __API_DR(msg,arg0) __API_DR(msg,arg1) + #define __API_DEPRECATED_REP2(msg,arg0,arg1,arg2) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) + #define __API_DEPRECATED_REP3(msg,arg0,arg1,arg2,arg3) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) + #define __API_DEPRECATED_REP4(msg,arg0,arg1,arg2,arg3,arg4) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) + #define __API_DEPRECATED_REP5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) + #define __API_DEPRECATED_REP6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) __API_DR(msg,arg6) + #define __API_DEPRECATED_REP7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) __API_DR(msg,arg6) __API_DR(msg,arg7) + #define __API_DEPRECATED_REP8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) __API_DR(msg,arg6) __API_DR(msg,arg7) __API_DR(msg,arg8) + #define __API_DEPRECATED_REP9(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) __API_DR(msg,arg6) __API_DR(msg,arg7) __API_DR(msg,arg8) __API_DR(msg,arg9) + #define __API_DEPRECATED_REP10(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) __API_DR(msg,arg6) __API_DR(msg,arg7) __API_DR(msg,arg8) __API_DR(msg,arg9) __API_DR(msg,arg10) + #define __API_DEPRECATED_REP11(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) __API_DR(msg,arg6) __API_DR(msg,arg7) __API_DR(msg,arg8) __API_DR(msg,arg9) __API_DR(msg,arg10) __API_DR(msg,arg11) + #define __API_DEPRECATED_REP12(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) __API_DR(msg,arg6) __API_DR(msg,arg7) __API_DR(msg,arg8) __API_DR(msg,arg9) __API_DR(msg,arg10) __API_DR(msg,arg11) __API_DR(msg,arg12) + #define __API_DEPRECATED_REP13(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) __API_DR(msg,arg6) __API_DR(msg,arg7) __API_DR(msg,arg8) __API_DR(msg,arg9) __API_DR(msg,arg10) __API_DR(msg,arg11) __API_DR(msg,arg12) __API_DR(msg,arg13) + #define __API_DEPRECATED_REP14(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) __API_DR(msg,arg6) __API_DR(msg,arg7) __API_DR(msg,arg8) __API_DR(msg,arg9) __API_DR(msg,arg10) __API_DR(msg,arg11) __API_DR(msg,arg12) __API_DR(msg,arg13) __API_DR(msg,arg14) + #define __API_DEPRECATED_REP15(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_DR(msg,arg0) __API_DR(msg,arg1) __API_DR(msg,arg2) __API_DR(msg,arg3) __API_DR(msg,arg4) __API_DR(msg,arg5) __API_DR(msg,arg6) __API_DR(msg,arg7) __API_DR(msg,arg8) __API_DR(msg,arg9) __API_DR(msg,arg10) __API_DR(msg,arg11) __API_DR(msg,arg12) __API_DR(msg,arg13) __API_DR(msg,arg14) __API_DR(msg,arg15) + #define __API_DEPRECATED_REP_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,NAME,...) NAME #if __has_feature(attribute_availability_with_replacement) - #define __API_R_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep))), apply_to = __API_APPLY_TO))) + #define __API_DR_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep))), apply_to = __API_APPLY_TO))) #else - #define __API_R_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x))), apply_to = __API_APPLY_TO))) + #define __API_DR_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x))), apply_to = __API_APPLY_TO))) #endif - #define __API_DEPRECATED_BEGIN_REP0(msg,arg0) __API_R_BEGIN(msg,arg0) - #define __API_DEPRECATED_BEGIN_REP1(msg,arg0,arg1) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) - #define __API_DEPRECATED_BEGIN_REP2(msg,arg0,arg1,arg2) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) - #define __API_DEPRECATED_BEGIN_REP3(msg,arg0,arg1,arg2,arg3) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) - #define __API_DEPRECATED_BEGIN_REP4(msg,arg0,arg1,arg2,arg3,arg4) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) - #define __API_DEPRECATED_BEGIN_REP5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) - #define __API_DEPRECATED_BEGIN_REP6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) - #define __API_DEPRECATED_BEGIN_REP7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) - #define __API_DEPRECATED_BEGIN_REP_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN0(msg,arg0) __API_DR_BEGIN(msg,arg0) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN1(msg,arg0,arg1) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN2(msg,arg0,arg1,arg2) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN3(msg,arg0,arg1,arg2,arg3) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN4(msg,arg0,arg1,arg2,arg3,arg4) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) __API_DR_BEGIN(msg,arg6) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) __API_DR_BEGIN(msg,arg6) __API_DR_BEGIN(msg,arg7) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) __API_DR_BEGIN(msg,arg6) __API_DR_BEGIN(msg,arg7) __API_DR_BEGIN(msg,arg8) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN9(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) __API_DR_BEGIN(msg,arg6) __API_DR_BEGIN(msg,arg7) __API_DR_BEGIN(msg,arg8) __API_DR_BEGIN(msg,arg9) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN10(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) __API_DR_BEGIN(msg,arg6) __API_DR_BEGIN(msg,arg7) __API_DR_BEGIN(msg,arg8) __API_DR_BEGIN(msg,arg9) __API_DR_BEGIN(msg,arg10) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN11(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) __API_DR_BEGIN(msg,arg6) __API_DR_BEGIN(msg,arg7) __API_DR_BEGIN(msg,arg8) __API_DR_BEGIN(msg,arg9) __API_DR_BEGIN(msg,arg10) __API_DR_BEGIN(msg,arg11) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN12(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) __API_DR_BEGIN(msg,arg6) __API_DR_BEGIN(msg,arg7) __API_DR_BEGIN(msg,arg8) __API_DR_BEGIN(msg,arg9) __API_DR_BEGIN(msg,arg10) __API_DR_BEGIN(msg,arg11) __API_DR_BEGIN(msg,arg12) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN13(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) __API_DR_BEGIN(msg,arg6) __API_DR_BEGIN(msg,arg7) __API_DR_BEGIN(msg,arg8) __API_DR_BEGIN(msg,arg9) __API_DR_BEGIN(msg,arg10) __API_DR_BEGIN(msg,arg11) __API_DR_BEGIN(msg,arg12) __API_DR_BEGIN(msg,arg13) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN14(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) __API_DR_BEGIN(msg,arg6) __API_DR_BEGIN(msg,arg7) __API_DR_BEGIN(msg,arg8) __API_DR_BEGIN(msg,arg9) __API_DR_BEGIN(msg,arg10) __API_DR_BEGIN(msg,arg11) __API_DR_BEGIN(msg,arg12) __API_DR_BEGIN(msg,arg13) __API_DR_BEGIN(msg,arg14) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN15(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_DR_BEGIN(msg,arg0) __API_DR_BEGIN(msg,arg1) __API_DR_BEGIN(msg,arg2) __API_DR_BEGIN(msg,arg3) __API_DR_BEGIN(msg,arg4) __API_DR_BEGIN(msg,arg5) __API_DR_BEGIN(msg,arg6) __API_DR_BEGIN(msg,arg7) __API_DR_BEGIN(msg,arg8) __API_DR_BEGIN(msg,arg9) __API_DR_BEGIN(msg,arg10) __API_DR_BEGIN(msg,arg11) __API_DR_BEGIN(msg,arg12) __API_DR_BEGIN(msg,arg13) __API_DR_BEGIN(msg,arg14) __API_DR_BEGIN(msg,arg15) + #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,NAME,...) NAME + + + +#define __API_O(msg,x) __attribute__((availability(__API_OBSOLETED_PLATFORM_##x,message=msg))) + + #define __API_OBSOLETED_MSG0(msg,arg0) __API_O(msg,arg0) + #define __API_OBSOLETED_MSG1(msg,arg0,arg1) __API_O(msg,arg0) __API_O(msg,arg1) + #define __API_OBSOLETED_MSG2(msg,arg0,arg1,arg2) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) + #define __API_OBSOLETED_MSG3(msg,arg0,arg1,arg2,arg3) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) + #define __API_OBSOLETED_MSG4(msg,arg0,arg1,arg2,arg3,arg4) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) + #define __API_OBSOLETED_MSG5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) + #define __API_OBSOLETED_MSG6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) __API_O(msg,arg6) + #define __API_OBSOLETED_MSG7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) __API_O(msg,arg6) __API_O(msg,arg7) + #define __API_OBSOLETED_MSG8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) __API_O(msg,arg6) __API_O(msg,arg7) __API_O(msg,arg8) + #define __API_OBSOLETED_MSG9(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) __API_O(msg,arg6) __API_O(msg,arg7) __API_O(msg,arg8) __API_O(msg,arg9) + #define __API_OBSOLETED_MSG10(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) __API_O(msg,arg6) __API_O(msg,arg7) __API_O(msg,arg8) __API_O(msg,arg9) __API_O(msg,arg10) + #define __API_OBSOLETED_MSG11(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) __API_O(msg,arg6) __API_O(msg,arg7) __API_O(msg,arg8) __API_O(msg,arg9) __API_O(msg,arg10) __API_O(msg,arg11) + #define __API_OBSOLETED_MSG12(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) __API_O(msg,arg6) __API_O(msg,arg7) __API_O(msg,arg8) __API_O(msg,arg9) __API_O(msg,arg10) __API_O(msg,arg11) __API_O(msg,arg12) + #define __API_OBSOLETED_MSG13(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) __API_O(msg,arg6) __API_O(msg,arg7) __API_O(msg,arg8) __API_O(msg,arg9) __API_O(msg,arg10) __API_O(msg,arg11) __API_O(msg,arg12) __API_O(msg,arg13) + #define __API_OBSOLETED_MSG14(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) __API_O(msg,arg6) __API_O(msg,arg7) __API_O(msg,arg8) __API_O(msg,arg9) __API_O(msg,arg10) __API_O(msg,arg11) __API_O(msg,arg12) __API_O(msg,arg13) __API_O(msg,arg14) + #define __API_OBSOLETED_MSG15(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_O(msg,arg0) __API_O(msg,arg1) __API_O(msg,arg2) __API_O(msg,arg3) __API_O(msg,arg4) __API_O(msg,arg5) __API_O(msg,arg6) __API_O(msg,arg7) __API_O(msg,arg8) __API_O(msg,arg9) __API_O(msg,arg10) __API_O(msg,arg11) __API_O(msg,arg12) __API_O(msg,arg13) __API_O(msg,arg14) __API_O(msg,arg15) + #define __API_OBSOLETED_MSG_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,NAME,...) NAME + +#define __API_O_BEGIN(msg, x, y) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_OBSOLETED_PLATFORM_##x,message=msg))), apply_to = __API_APPLY_TO))) + + #define __API_OBSOLETED_BEGIN0(msg,arg0) __API_O_BEGIN(msg,arg0) + #define __API_OBSOLETED_BEGIN1(msg,arg0,arg1) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) + #define __API_OBSOLETED_BEGIN2(msg,arg0,arg1,arg2) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) + #define __API_OBSOLETED_BEGIN3(msg,arg0,arg1,arg2,arg3) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) + #define __API_OBSOLETED_BEGIN4(msg,arg0,arg1,arg2,arg3,arg4) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) + #define __API_OBSOLETED_BEGIN5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) + #define __API_OBSOLETED_BEGIN6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) __API_O_BEGIN(msg,arg6) + #define __API_OBSOLETED_BEGIN7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) __API_O_BEGIN(msg,arg6) __API_O_BEGIN(msg,arg7) + #define __API_OBSOLETED_BEGIN8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) __API_O_BEGIN(msg,arg6) __API_O_BEGIN(msg,arg7) __API_O_BEGIN(msg,arg8) + #define __API_OBSOLETED_BEGIN9(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) __API_O_BEGIN(msg,arg6) __API_O_BEGIN(msg,arg7) __API_O_BEGIN(msg,arg8) __API_O_BEGIN(msg,arg9) + #define __API_OBSOLETED_BEGIN10(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) __API_O_BEGIN(msg,arg6) __API_O_BEGIN(msg,arg7) __API_O_BEGIN(msg,arg8) __API_O_BEGIN(msg,arg9) __API_O_BEGIN(msg,arg10) + #define __API_OBSOLETED_BEGIN11(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) __API_O_BEGIN(msg,arg6) __API_O_BEGIN(msg,arg7) __API_O_BEGIN(msg,arg8) __API_O_BEGIN(msg,arg9) __API_O_BEGIN(msg,arg10) __API_O_BEGIN(msg,arg11) + #define __API_OBSOLETED_BEGIN12(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) __API_O_BEGIN(msg,arg6) __API_O_BEGIN(msg,arg7) __API_O_BEGIN(msg,arg8) __API_O_BEGIN(msg,arg9) __API_O_BEGIN(msg,arg10) __API_O_BEGIN(msg,arg11) __API_O_BEGIN(msg,arg12) + #define __API_OBSOLETED_BEGIN13(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) __API_O_BEGIN(msg,arg6) __API_O_BEGIN(msg,arg7) __API_O_BEGIN(msg,arg8) __API_O_BEGIN(msg,arg9) __API_O_BEGIN(msg,arg10) __API_O_BEGIN(msg,arg11) __API_O_BEGIN(msg,arg12) __API_O_BEGIN(msg,arg13) + #define __API_OBSOLETED_BEGIN14(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) __API_O_BEGIN(msg,arg6) __API_O_BEGIN(msg,arg7) __API_O_BEGIN(msg,arg8) __API_O_BEGIN(msg,arg9) __API_O_BEGIN(msg,arg10) __API_O_BEGIN(msg,arg11) __API_O_BEGIN(msg,arg12) __API_O_BEGIN(msg,arg13) __API_O_BEGIN(msg,arg14) + #define __API_OBSOLETED_BEGIN15(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_O_BEGIN(msg,arg0) __API_O_BEGIN(msg,arg1) __API_O_BEGIN(msg,arg2) __API_O_BEGIN(msg,arg3) __API_O_BEGIN(msg,arg4) __API_O_BEGIN(msg,arg5) __API_O_BEGIN(msg,arg6) __API_O_BEGIN(msg,arg7) __API_O_BEGIN(msg,arg8) __API_O_BEGIN(msg,arg9) __API_O_BEGIN(msg,arg10) __API_O_BEGIN(msg,arg11) __API_O_BEGIN(msg,arg12) __API_O_BEGIN(msg,arg13) __API_O_BEGIN(msg,arg14) __API_O_BEGIN(msg,arg15) + #define __API_OBSOLETED_BEGIN_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,NAME,...) NAME + +#if __has_feature(attribute_availability_with_replacement) + #define __API_OR(rep,x) __attribute__((availability(__API_OBSOLETED_PLATFORM_##x,replacement=rep))) +#else + #define __API_OR(rep,x) __attribute__((availability(__API_OBSOLETED_PLATFORM_##x))) +#endif + + #define __API_OBSOLETED_REP0(msg,arg0) __API_OR(msg,arg0) + #define __API_OBSOLETED_REP1(msg,arg0,arg1) __API_OR(msg,arg0) __API_OR(msg,arg1) + #define __API_OBSOLETED_REP2(msg,arg0,arg1,arg2) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) + #define __API_OBSOLETED_REP3(msg,arg0,arg1,arg2,arg3) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) + #define __API_OBSOLETED_REP4(msg,arg0,arg1,arg2,arg3,arg4) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) + #define __API_OBSOLETED_REP5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) + #define __API_OBSOLETED_REP6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) __API_OR(msg,arg6) + #define __API_OBSOLETED_REP7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) __API_OR(msg,arg6) __API_OR(msg,arg7) + #define __API_OBSOLETED_REP8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) __API_OR(msg,arg6) __API_OR(msg,arg7) __API_OR(msg,arg8) + #define __API_OBSOLETED_REP9(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) __API_OR(msg,arg6) __API_OR(msg,arg7) __API_OR(msg,arg8) __API_OR(msg,arg9) + #define __API_OBSOLETED_REP10(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) __API_OR(msg,arg6) __API_OR(msg,arg7) __API_OR(msg,arg8) __API_OR(msg,arg9) __API_OR(msg,arg10) + #define __API_OBSOLETED_REP11(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) __API_OR(msg,arg6) __API_OR(msg,arg7) __API_OR(msg,arg8) __API_OR(msg,arg9) __API_OR(msg,arg10) __API_OR(msg,arg11) + #define __API_OBSOLETED_REP12(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) __API_OR(msg,arg6) __API_OR(msg,arg7) __API_OR(msg,arg8) __API_OR(msg,arg9) __API_OR(msg,arg10) __API_OR(msg,arg11) __API_OR(msg,arg12) + #define __API_OBSOLETED_REP13(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) __API_OR(msg,arg6) __API_OR(msg,arg7) __API_OR(msg,arg8) __API_OR(msg,arg9) __API_OR(msg,arg10) __API_OR(msg,arg11) __API_OR(msg,arg12) __API_OR(msg,arg13) + #define __API_OBSOLETED_REP14(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) __API_OR(msg,arg6) __API_OR(msg,arg7) __API_OR(msg,arg8) __API_OR(msg,arg9) __API_OR(msg,arg10) __API_OR(msg,arg11) __API_OR(msg,arg12) __API_OR(msg,arg13) __API_OR(msg,arg14) + #define __API_OBSOLETED_REP15(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_OR(msg,arg0) __API_OR(msg,arg1) __API_OR(msg,arg2) __API_OR(msg,arg3) __API_OR(msg,arg4) __API_OR(msg,arg5) __API_OR(msg,arg6) __API_OR(msg,arg7) __API_OR(msg,arg8) __API_OR(msg,arg9) __API_OR(msg,arg10) __API_OR(msg,arg11) __API_OR(msg,arg12) __API_OR(msg,arg13) __API_OR(msg,arg14) __API_OR(msg,arg15) + #define __API_OBSOLETED_REP_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,NAME,...) NAME + +#if __has_feature(attribute_availability_with_replacement) + #define __API_OR_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_OBSOLETED_PLATFORM_##x,replacement=rep))), apply_to = __API_APPLY_TO))) +#else + #define __API_OR_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_OBSOLETED_PLATFORM_##x))), apply_to = __API_APPLY_TO))) +#endif + + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN0(msg,arg0) __API_R_BEGIN(msg,arg0) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN1(msg,arg0,arg1) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN2(msg,arg0,arg1,arg2) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN3(msg,arg0,arg1,arg2,arg3) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN4(msg,arg0,arg1,arg2,arg3,arg4) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) __API_R_BEGIN(msg,arg8) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN9(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) __API_R_BEGIN(msg,arg8) __API_R_BEGIN(msg,arg9) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN10(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) __API_R_BEGIN(msg,arg8) __API_R_BEGIN(msg,arg9) __API_R_BEGIN(msg,arg10) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN11(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) __API_R_BEGIN(msg,arg8) __API_R_BEGIN(msg,arg9) __API_R_BEGIN(msg,arg10) __API_R_BEGIN(msg,arg11) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN12(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) __API_R_BEGIN(msg,arg8) __API_R_BEGIN(msg,arg9) __API_R_BEGIN(msg,arg10) __API_R_BEGIN(msg,arg11) __API_R_BEGIN(msg,arg12) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN13(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) __API_R_BEGIN(msg,arg8) __API_R_BEGIN(msg,arg9) __API_R_BEGIN(msg,arg10) __API_R_BEGIN(msg,arg11) __API_R_BEGIN(msg,arg12) __API_R_BEGIN(msg,arg13) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN14(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) __API_R_BEGIN(msg,arg8) __API_R_BEGIN(msg,arg9) __API_R_BEGIN(msg,arg10) __API_R_BEGIN(msg,arg11) __API_R_BEGIN(msg,arg12) __API_R_BEGIN(msg,arg13) __API_R_BEGIN(msg,arg14) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN15(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) __API_R_BEGIN(msg,arg8) __API_R_BEGIN(msg,arg9) __API_R_BEGIN(msg,arg10) __API_R_BEGIN(msg,arg11) __API_R_BEGIN(msg,arg12) __API_R_BEGIN(msg,arg13) __API_R_BEGIN(msg,arg14) __API_R_BEGIN(msg,arg15) + #define __API_OBSOLETED_WITH_REPLACEMENT_BEGIN_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,NAME,...) NAME /* * API Unavailability @@ -332,7 +468,15 @@ #define __API_UNAVAILABLE5(arg0,arg1,arg2,arg3,arg4,arg5) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) #define __API_UNAVAILABLE6(arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) #define __API_UNAVAILABLE7(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7) - #define __API_UNAVAILABLE_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME + #define __API_UNAVAILABLE8(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7) __API_U(arg8) + #define __API_UNAVAILABLE9(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7) __API_U(arg8) __API_U(arg9) + #define __API_UNAVAILABLE10(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7) __API_U(arg8) __API_U(arg9) __API_U(arg10) + #define __API_UNAVAILABLE11(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7) __API_U(arg8) __API_U(arg9) __API_U(arg10) __API_U(arg11) + #define __API_UNAVAILABLE12(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7) __API_U(arg8) __API_U(arg9) __API_U(arg10) __API_U(arg11) __API_U(arg12) + #define __API_UNAVAILABLE13(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7) __API_U(arg8) __API_U(arg9) __API_U(arg10) __API_U(arg11) __API_U(arg12) __API_U(arg13) + #define __API_UNAVAILABLE14(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7) __API_U(arg8) __API_U(arg9) __API_U(arg10) __API_U(arg11) __API_U(arg12) __API_U(arg13) __API_U(arg14) + #define __API_UNAVAILABLE15(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7) __API_U(arg8) __API_U(arg9) __API_U(arg10) __API_U(arg11) __API_U(arg12) __API_U(arg13) __API_U(arg14) __API_U(arg15) + #define __API_UNAVAILABLE_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,NAME,...) NAME #define __API_U_BEGIN(x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_UNAVAILABLE_PLATFORM_##x))), apply_to = __API_APPLY_TO))) @@ -344,7 +488,15 @@ #define __API_UNAVAILABLE_BEGIN5(arg0,arg1,arg2,arg3,arg4,arg5) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) #define __API_UNAVAILABLE_BEGIN6(arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) #define __API_UNAVAILABLE_BEGIN7(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7) - #define __API_UNAVAILABLE_BEGIN_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME + #define __API_UNAVAILABLE_BEGIN8(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7) __API_U_BEGIN(arg8) + #define __API_UNAVAILABLE_BEGIN9(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7) __API_U_BEGIN(arg8) __API_U_BEGIN(arg9) + #define __API_UNAVAILABLE_BEGIN10(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7) __API_U_BEGIN(arg8) __API_U_BEGIN(arg9) __API_U_BEGIN(arg10) + #define __API_UNAVAILABLE_BEGIN11(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7) __API_U_BEGIN(arg8) __API_U_BEGIN(arg9) __API_U_BEGIN(arg10) __API_U_BEGIN(arg11) + #define __API_UNAVAILABLE_BEGIN12(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7) __API_U_BEGIN(arg8) __API_U_BEGIN(arg9) __API_U_BEGIN(arg10) __API_U_BEGIN(arg11) __API_U_BEGIN(arg12) + #define __API_UNAVAILABLE_BEGIN13(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7) __API_U_BEGIN(arg8) __API_U_BEGIN(arg9) __API_U_BEGIN(arg10) __API_U_BEGIN(arg11) __API_U_BEGIN(arg12) __API_U_BEGIN(arg13) + #define __API_UNAVAILABLE_BEGIN14(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7) __API_U_BEGIN(arg8) __API_U_BEGIN(arg9) __API_U_BEGIN(arg10) __API_U_BEGIN(arg11) __API_U_BEGIN(arg12) __API_U_BEGIN(arg13) __API_U_BEGIN(arg14) + #define __API_UNAVAILABLE_BEGIN15(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7) __API_U_BEGIN(arg8) __API_U_BEGIN(arg9) __API_U_BEGIN(arg10) __API_U_BEGIN(arg11) __API_U_BEGIN(arg12) __API_U_BEGIN(arg13) __API_U_BEGIN(arg14) __API_U_BEGIN(arg15) + #define __API_UNAVAILABLE_BEGIN_GET_MACRO_93585900(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,NAME,...) NAME #endif /* __has_attribute(availability) */ #endif /* #if defined(__has_feature) && defined(__has_attribute) */ @@ -369,12 +521,16 @@ #define __swift_compiler_version_at_least(...) 1 #endif -/* - * If __SPI_AVAILABLE has not been defined elsewhere, disable it. - */ - -#ifndef __SPI_AVAILABLE - #define __SPI_AVAILABLE(...) -#endif - #endif /* __AVAILABILITY_INTERNAL__ */ + + +#ifndef __OPEN_SOURCE__ +// This is explicitly outside the header guard +#ifndef __AVAILABILITY_VERSIONS_VERSION_HASH +#define __AVAILABILITY_VERSIONS_VERSION_HASH 93585900U +#define __AVAILABILITY_VERSIONS_VERSION_STRING "Local" +#define __AVAILABILITY_FILE "AvailabilityInternal.h" +#elif __AVAILABILITY_VERSIONS_VERSION_HASH != 93585900U +#pragma GCC error "Already found AvailabilityVersions version " __AVAILABILITY_FILE " from " __AVAILABILITY_VERSIONS_VERSION_STRING ", which is incompatible with AvailabilityInternal.h from Local. Mixing and matching Availability from different SDKs is not supported" +#endif /* __AVAILABILITY_VERSIONS_VERSION_HASH */ +#endif /* __OPEN_SOURCE__ */ diff --git a/include/AvailabilityInternalLegacy.h b/include/AvailabilityInternalLegacy.h index 8ac4cc8c..9226c576 100644 --- a/include/AvailabilityInternalLegacy.h +++ b/include/AvailabilityInternalLegacy.h @@ -31,6 +31,8 @@ #ifndef __AVAILABILITY_INTERNAL_LEGACY__ #define __AVAILABILITY_INTERNAL_LEGACY__ +#include + #if defined(__has_builtin) #if __has_builtin(__is_target_arch) #if __has_builtin(__is_target_vendor) diff --git a/include/AvailabilityMacros.h b/include/AvailabilityMacros.h index 6dc97266..37fed18a 100644 --- a/include/AvailabilityMacros.h +++ b/include/AvailabilityMacros.h @@ -83,11 +83,12 @@ */ -#include - #ifndef __AVAILABILITYMACROS__ #define __AVAILABILITYMACROS__ +#include +#include + /* * If min OS not specified, assume 10.4 for intel * Note: compiler driver may set _ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED_ based on MACOSX_DEPLOYMENT_TARGET environment variable diff --git a/include/AvailabilityVersions.h b/include/AvailabilityVersions.h index 095f2737..9eb89589 100644 --- a/include/AvailabilityVersions.h +++ b/include/AvailabilityVersions.h @@ -80,9 +80,20 @@ #define __MAC_13_4 130400 #define __MAC_13_5 130500 #define __MAC_13_6 130600 +#define __MAC_13_7 130700 #define __MAC_14_0 140000 #define __MAC_14_1 140100 #define __MAC_14_2 140200 +#define __MAC_14_3 140300 +#define __MAC_14_4 140400 +#define __MAC_14_5 140500 +#define __MAC_14_6 140600 +#define __MAC_14_7 140700 +#define __MAC_15_0 150000 +#define __MAC_15_1 150100 +#define __MAC_15_2 150200 +#define __MAC_15_3 150300 +#define __MAC_15_4 150400 /* __MAC__NA is not defined to a value but is used as a token by macros to indicate that the API is unavailable */ #define __IPHONE_2_0 20000 @@ -149,6 +160,8 @@ #define __IPHONE_15_4 150400 #define __IPHONE_15_5 150500 #define __IPHONE_15_6 150600 +#define __IPHONE_15_7 150700 +#define __IPHONE_15_8 150800 #define __IPHONE_16_0 160000 #define __IPHONE_16_1 160100 #define __IPHONE_16_2 160200 @@ -160,6 +173,16 @@ #define __IPHONE_17_0 170000 #define __IPHONE_17_1 170100 #define __IPHONE_17_2 170200 +#define __IPHONE_17_3 170300 +#define __IPHONE_17_4 170400 +#define __IPHONE_17_5 170500 +#define __IPHONE_17_6 170600 +#define __IPHONE_17_7 170700 +#define __IPHONE_18_0 180000 +#define __IPHONE_18_1 180100 +#define __IPHONE_18_2 180200 +#define __IPHONE_18_3 180300 +#define __IPHONE_18_4 180400 /* __IPHONE__NA is not defined to a value but is used as a token by macros to indicate that the API is unavailable */ #define __WATCHOS_1_0 10000 @@ -195,6 +218,7 @@ #define __WATCHOS_8_5 80500 #define __WATCHOS_8_6 80600 #define __WATCHOS_8_7 80700 +#define __WATCHOS_8_8 80800 #define __WATCHOS_9_0 90000 #define __WATCHOS_9_1 90100 #define __WATCHOS_9_2 90200 @@ -205,6 +229,16 @@ #define __WATCHOS_10_0 100000 #define __WATCHOS_10_1 100100 #define __WATCHOS_10_2 100200 +#define __WATCHOS_10_3 100300 +#define __WATCHOS_10_4 100400 +#define __WATCHOS_10_5 100500 +#define __WATCHOS_10_6 100600 +#define __WATCHOS_10_7 100700 +#define __WATCHOS_11_0 110000 +#define __WATCHOS_11_1 110100 +#define __WATCHOS_11_2 110200 +#define __WATCHOS_11_3 110300 +#define __WATCHOS_11_4 110400 /* __WATCHOS__NA is not defined to a value but is used as a token by macros to indicate that the API is unavailable */ #define __TVOS_9_0 90000 @@ -252,6 +286,15 @@ #define __TVOS_17_0 170000 #define __TVOS_17_1 170100 #define __TVOS_17_2 170200 +#define __TVOS_17_3 170300 +#define __TVOS_17_4 170400 +#define __TVOS_17_5 170500 +#define __TVOS_17_6 170600 +#define __TVOS_18_0 180000 +#define __TVOS_18_1 180100 +#define __TVOS_18_2 180200 +#define __TVOS_18_3 180300 +#define __TVOS_18_4 180400 /* __TVOS__NA is not defined to a value but is used as a token by macros to indicate that the API is unavailable */ #define __BRIDGEOS_2_0 20000 @@ -278,6 +321,15 @@ #define __BRIDGEOS_8_0 80000 #define __BRIDGEOS_8_1 80100 #define __BRIDGEOS_8_2 80200 +#define __BRIDGEOS_8_3 80300 +#define __BRIDGEOS_8_4 80400 +#define __BRIDGEOS_8_5 80500 +#define __BRIDGEOS_8_6 80600 +#define __BRIDGEOS_9_0 90000 +#define __BRIDGEOS_9_1 90100 +#define __BRIDGEOS_9_2 90200 +#define __BRIDGEOS_9_3 90300 +#define __BRIDGEOS_9_4 90400 #define __DRIVERKIT_19_0 190000 @@ -290,12 +342,33 @@ #define __DRIVERKIT_23_0 230000 #define __DRIVERKIT_23_1 230100 #define __DRIVERKIT_23_2 230200 +#define __DRIVERKIT_23_3 230300 +#define __DRIVERKIT_23_4 230400 +#define __DRIVERKIT_23_5 230500 +#define __DRIVERKIT_23_6 230600 +#define __DRIVERKIT_24_0 240000 +#define __DRIVERKIT_24_1 240100 +#define __DRIVERKIT_24_2 240200 +#define __DRIVERKIT_24_3 240300 +#define __DRIVERKIT_24_4 240400 /* __DRIVERKIT__NA is not defined to a value but is used as a token by macros to indicate that the API is unavailable */ #define __VISIONOS_1_0 10000 +#define __VISIONOS_1_1 10100 +#define __VISIONOS_1_2 10200 +#define __VISIONOS_1_3 10300 +#define __VISIONOS_2_0 20000 +#define __VISIONOS_2_1 20100 +#define __VISIONOS_2_2 20200 +#define __VISIONOS_2_3 20300 +#define __VISIONOS_2_4 20400 /* __VISIONOS__NA is not defined to a value but is used as a token by macros to indicate that the API is unavailable */ + +/* __KERNELKIT__NA is not defined to a value but is used as a token by macros to indicate that the API is unavailable */ + + #ifndef __OPEN_SOURCE__ #endif /* __OPEN_SOURCE__ */ @@ -362,11 +435,32 @@ #define MAC_OS_VERSION_13_4 __MAC_13_4 #define MAC_OS_VERSION_13_5 __MAC_13_5 #define MAC_OS_VERSION_13_6 __MAC_13_6 +#define MAC_OS_VERSION_13_7 __MAC_13_7 #define MAC_OS_VERSION_14_0 __MAC_14_0 #define MAC_OS_VERSION_14_1 __MAC_14_1 #define MAC_OS_VERSION_14_2 __MAC_14_2 +#define MAC_OS_VERSION_14_3 __MAC_14_3 +#define MAC_OS_VERSION_14_4 __MAC_14_4 +#define MAC_OS_VERSION_14_5 __MAC_14_5 +#define MAC_OS_VERSION_14_6 __MAC_14_6 +#define MAC_OS_VERSION_14_7 __MAC_14_7 +#define MAC_OS_VERSION_15_0 __MAC_15_0 +#define MAC_OS_VERSION_15_1 __MAC_15_1 +#define MAC_OS_VERSION_15_2 __MAC_15_2 +#define MAC_OS_VERSION_15_3 __MAC_15_3 +#define MAC_OS_VERSION_15_4 __MAC_15_4 #endif /* #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE) */ #endif /* __AVAILABILITY_VERSIONS__ */ +#ifndef __OPEN_SOURCE__ +// This is explicitly outside the header guard +#ifndef __AVAILABILITY_VERSIONS_VERSION_HASH +#define __AVAILABILITY_VERSIONS_VERSION_HASH 93585900U +#define __AVAILABILITY_VERSIONS_VERSION_STRING "Local" +#define __AVAILABILITY_FILE "AvailabilityVersions.h" +#elif __AVAILABILITY_VERSIONS_VERSION_HASH != 93585900U +#pragma GCC error "Already found AvailabilityVersions version " __AVAILABILITY_FILE " from " __AVAILABILITY_VERSIONS_VERSION_STRING ", which is incompatible with AvailabilityVersions.h from Local. Mixing and matching Availability from different SDKs is not supported" +#endif /* __AVAILABILITY_VERSIONS_VERSION_HASH */ +#endif /* __OPEN_SOURCE__ */ diff --git a/include/Block.h b/include/Block.h index 153871c9..14f8a5bc 100644 --- a/include/Block.h +++ b/include/Block.h @@ -18,12 +18,6 @@ # endif #endif -#if __has_include() -#include -#else -#define __OSX_AVAILABLE_STARTING(m,i) -#endif - #include #include @@ -34,28 +28,20 @@ extern "C" { // Create a heap based copy of a Block or simply add a reference to an existing one. // This must be paired with Block_release to recover memory, even when running // under Objective-C Garbage Collection. -BLOCK_EXPORT void *__single _Block_copy(const void *__single aBlock) - __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +BLOCK_EXPORT void *__single _Block_copy(const void *__single aBlock); // Lose the reference, and if heap based and last reference, recover the memory -BLOCK_EXPORT void _Block_release(const void *__single aBlock) - __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); - +BLOCK_EXPORT void _Block_release(const void *__single aBlock); // Used by the compiler. Do not call this function yourself. -BLOCK_EXPORT void _Block_object_assign(void *, const void *, const int) - __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +BLOCK_EXPORT void _Block_object_assign(void *, const void *, const int); // Used by the compiler. Do not call this function yourself. -BLOCK_EXPORT void _Block_object_dispose(const void *, const int) - __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +BLOCK_EXPORT void _Block_object_dispose(const void *, const int); // Used by the compiler. Do not use these variables yourself. -BLOCK_EXPORT void * _NSConcreteGlobalBlock[32] - __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); -BLOCK_EXPORT void * _NSConcreteStackBlock[32] - __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); - +BLOCK_EXPORT void * _NSConcreteGlobalBlock[32]; +BLOCK_EXPORT void * _NSConcreteStackBlock[32]; #if __cplusplus } diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt deleted file mode 100644 index 51065d68..00000000 --- a/include/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -set(files - __libunwind_config.h - libunwind.h - libunwind.modulemap - mach-o/compact_unwind_encoding.h - mach-o/compact_unwind_encoding.modulemap - unwind_arm_ehabi.h - unwind_itanium.h - unwind.h - ) - -add_library(unwind-headers INTERFACE) -target_include_directories(unwind-headers INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) - -if(LIBUNWIND_INSTALL_HEADERS) - foreach(file ${files}) - get_filename_component(dir ${file} DIRECTORY) - install(FILES ${file} - DESTINATION "${LIBUNWIND_INSTALL_INCLUDE_DIR}/${dir}" - COMPONENT unwind-headers - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ - ) - endforeach() - - if(NOT CMAKE_CONFIGURATION_TYPES) - add_custom_target(install-unwind-headers - DEPENDS unwind-headers - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=unwind-headers - -P "${LIBUNWIND_BINARY_DIR}/cmake_install.cmake") - add_custom_target(install-unwind-headers-stripped DEPENDS install-unwind-headers) - endif() -endif() diff --git a/include/EndpointSecurity/ESClient.h b/include/EndpointSecurity/ESClient.h index b269a5fa..a37435e1 100644 --- a/include/EndpointSecurity/ESClient.h +++ b/include/EndpointSecurity/ESClient.h @@ -32,9 +32,10 @@ __BEGIN_DECLS * risking watchdog timeout panics. */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_subscribe(es_client_t * _Nonnull client, const es_event_type_t * _Nonnull events, uint32_t event_count); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_subscribe(es_client_t *_Nonnull client, const es_event_type_t *_Nonnull events, uint32_t event_count); /** * Unsubscribe from some set of events @@ -45,9 +46,10 @@ es_subscribe(es_client_t * _Nonnull client, const es_event_type_t * _Nonnull eve * @note Events not included in the given `events` array that were previously subscribed to will continue to be subscribed to */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_unsubscribe(es_client_t * _Nonnull client, const es_event_type_t * _Nonnull events, uint32_t event_count); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_unsubscribe(es_client_t *_Nonnull client, const es_event_type_t *_Nonnull events, uint32_t event_count); /** * Unsubscribe from all events @@ -55,9 +57,8 @@ es_unsubscribe(es_client_t * _Nonnull client, const es_event_type_t * _Nonnull e * @return es_return_t indicating success or error */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_unsubscribe_all(es_client_t * _Nonnull client); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos) es_return_t es_unsubscribe_all(es_client_t *_Nonnull client); /** * List subscriptions @@ -68,10 +69,11 @@ es_unsubscribe_all(es_client_t * _Nonnull client); * @brief The caller takes ownership of the memory at `*subscriptions` and must free it */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) es_return_t -es_subscriptions(es_client_t * _Nonnull client, size_t * _Nonnull count, - es_event_type_t * _Nonnull * _Nullable subscriptions); +es_subscriptions(es_client_t *_Nonnull client, size_t *_Nonnull count, es_event_type_t *_Nonnull *_Nullable subscriptions); /** * Respond to an auth event that requires an es_auth_result_t response @@ -85,12 +87,15 @@ es_subscriptions(es_client_t * _Nonnull client, size_t * _Nonnull count, * while still producing a NOTIFY event normally. * The cache argument is ignored for events that do not support caching. * @return es_respond_result_t indicating success or an error - * @brief Some events must be responded to with `es_respond_flags_result`. Responding to flags events with this function will fail. + * @brief Some events must be responded to with `es_respond_flags_result`. Responding to flags events with this function will + * fail. */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) es_respond_result_t -es_respond_auth_result(es_client_t * _Nonnull client, const es_message_t * _Nonnull message, es_auth_result_t result, bool cache); +es_respond_auth_result(es_client_t *_Nonnull client, const es_message_t *_Nonnull message, es_auth_result_t result, bool cache); /** * Respond to an auth event that requires an uint32_t flags response @@ -118,9 +123,12 @@ es_respond_auth_result(es_client_t * _Nonnull client, const es_message_t * _Nonn * that were not set in the cached authorized_flags. */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_respond_result_t -es_respond_flags_result(es_client_t * _Nonnull client, const es_message_t * _Nonnull message, uint32_t authorized_flags, bool cache); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_respond_result_t es_respond_flags_result( + es_client_t *_Nonnull client, const es_message_t *_Nonnull message, uint32_t authorized_flags, bool cache +); /** * @brief Suppress all events from the process described by the given `audit_token` @@ -133,9 +141,10 @@ es_respond_flags_result(es_client_t * _Nonnull client, const es_message_t * _Non * @see es_mute_process_events */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_mute_process(es_client_t * _Nonnull client, const audit_token_t * _Nonnull audit_token); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_mute_process(es_client_t *_Nonnull client, const audit_token_t *_Nonnull audit_token); /** * @brief Suppress a subset of events from the process described by the given `audit_token` @@ -150,9 +159,15 @@ es_mute_process(es_client_t * _Nonnull client, const audit_token_t * _Nonnull au * @see es_mute_process */ OS_EXPORT -API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_mute_process_events(es_client_t * _Nonnull client, const audit_token_t * _Nonnull audit_token, const es_event_type_t * _Nonnull events, size_t event_count); +API_AVAILABLE(macos(12.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_mute_process_events( + es_client_t *_Nonnull client, + const audit_token_t *_Nonnull audit_token, + const es_event_type_t *_Nonnull events, + size_t event_count +); /** * @brief Unmute a process for all event types @@ -165,9 +180,10 @@ es_mute_process_events(es_client_t * _Nonnull client, const audit_token_t * _Non * @see es_unmute_process_events */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_unmute_process(es_client_t * _Nonnull client, const audit_token_t *_Nonnull audit_token); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_unmute_process(es_client_t *_Nonnull client, const audit_token_t *_Nonnull audit_token); /** * @brief Unmute a process for a subset of event types. @@ -182,9 +198,15 @@ es_unmute_process(es_client_t * _Nonnull client, const audit_token_t *_Nonnull a * @see es_unmute_path */ OS_EXPORT -API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_unmute_process_events(es_client_t * _Nonnull client, const audit_token_t * _Nonnull audit_token, const es_event_type_t * _Nonnull events, size_t event_count); +API_AVAILABLE(macos(12.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_unmute_process_events( + es_client_t *_Nonnull client, + const audit_token_t *_Nonnull audit_token, + const es_event_type_t *_Nonnull events, + size_t event_count +); /** * List muted processes @@ -203,7 +225,7 @@ OS_EXPORT API_DEPRECATED("Please use es_muted_processes_events.", macos(10.15, 12.0)) API_UNAVAILABLE(ios, tvos, watchos) es_return_t -es_muted_processes(es_client_t * _Nonnull client, size_t * _Nonnull count, audit_token_t * _Nonnull * _Nullable audit_tokens); +es_muted_processes(es_client_t *_Nonnull client, size_t *_Nonnull count, audit_token_t *_Nonnull *_Nullable audit_tokens); /** * @brief Retrieve a list of all muted processes. @@ -218,9 +240,10 @@ es_muted_processes(es_client_t * _Nonnull client, size_t * _Nonnull count, audit * @see es_release_muted_processes */ OS_EXPORT -API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_muted_processes_events(es_client_t * _Nonnull client, es_muted_processes_t * _Nullable * _Nonnull muted_processes); +API_AVAILABLE(macos(12.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_muted_processes_events(es_client_t *_Nonnull client, es_muted_processes_t *_Nullable *_Nonnull muted_processes); /** * @brief Delete a set of muted processes obtained from `es_muted_processes_events`, freeing resources. @@ -230,9 +253,11 @@ es_muted_processes_events(es_client_t * _Nonnull client, es_muted_processes_t * * @see es_muted_processes_all_events */ OS_EXPORT -API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos) -void -es_release_muted_processes(es_muted_processes_t * _Nonnull muted_processes); +API_AVAILABLE(macos(12.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) + +void es_release_muted_processes(es_muted_processes_t *_Nonnull muted_processes); /** * @brief Suppress all events matching a path. @@ -253,13 +278,12 @@ es_release_muted_processes(es_muted_processes_t * _Nonnull muted_processes); * paths you are observing. * * @see es_mute_path_events - * @discussion When using the path types ES_MUTE_PATH_TYPE_TARGET_PREFIX and ES_MUTE_PATH_TYPE_TARGET_LITERAL Not all events are supported. - * Furthermore the interpretation of target path is contextual. - * For events with more than one target path (such as exchangedata) the behavior depends on the mute inversion state - * Under normal muting the event is suppressed only if ALL paths are muted - * When target path muting is inverted the event is selected if ANY target path is muted - * For example a rename will be suppressed if and only if both the source path and destination path are muted. - * Supported events are listed below. For each event the target path is defined as: + * @discussion When using the path types ES_MUTE_PATH_TYPE_TARGET_PREFIX and ES_MUTE_PATH_TYPE_TARGET_LITERAL Not all events are + * supported. Furthermore the interpretation of target path is contextual. For events with more than one target path (such as + * exchangedata) the behavior depends on the mute inversion state Under normal muting the event is suppressed only if ALL paths + * are muted When target path muting is inverted the event is selected if ANY target path is muted For example a rename will be + * suppressed if and only if both the source path and destination path are muted. Supported events are listed below. For each + * event the target path is defined as: * * EXEC: The file being executed * OPEN: The file being opened @@ -307,9 +331,10 @@ es_release_muted_processes(es_muted_processes_t * _Nonnull muted_processes); * COPYFILE: The path to the source file and the path to either the new file to be created or the existing file to be overwritten */ OS_EXPORT -API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_mute_path(es_client_t * _Nonnull client, const char * _Nonnull path, es_mute_path_type_t type); +API_AVAILABLE(macos(12.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_mute_path(es_client_t *_Nonnull client, const char *_Nonnull path, es_mute_path_type_t type); /** * @brief Suppress a subset of events matching a path. @@ -330,9 +355,16 @@ es_mute_path(es_client_t * _Nonnull client, const char * _Nonnull path, es_mute_ * See es_mute_path for the list of events that support target path muting. */ OS_EXPORT -API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_mute_path_events(es_client_t * _Nonnull client, const char * _Nonnull path, es_mute_path_type_t type, const es_event_type_t * _Nonnull events, size_t event_count); +API_AVAILABLE(macos(12.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_mute_path_events( + es_client_t *_Nonnull client, + const char *_Nonnull path, + es_mute_path_type_t type, + const es_event_type_t *_Nonnull events, + size_t event_count +); /** * Suppress events matching a path prefix @@ -346,8 +378,7 @@ es_mute_path_events(es_client_t * _Nonnull client, const char * _Nonnull path, e OS_EXPORT API_DEPRECATED("Please use es_mute_path or es_mute_path_events.", macos(10.15, 12.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_mute_path_prefix(es_client_t * _Nonnull client, const char * _Nonnull path_prefix); +es_return_t es_mute_path_prefix(es_client_t *_Nonnull client, const char *_Nonnull path_prefix); /** * Suppress events matching a path literal @@ -364,8 +395,7 @@ es_mute_path_prefix(es_client_t * _Nonnull client, const char * _Nonnull path_pr OS_EXPORT API_DEPRECATED("Please use es_mute_path or es_mute_path_events.", macos(10.15, 12.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_mute_path_literal(es_client_t * _Nonnull client, const char * _Nonnull path_literal); +es_return_t es_mute_path_literal(es_client_t *_Nonnull client, const char *_Nonnull path_literal); /** * Unmute all paths @@ -375,9 +405,8 @@ es_mute_path_literal(es_client_t * _Nonnull client, const char * _Nonnull path_l * @note Only unmutes executable paths. To unmute target paths see: `es_unmute_all_target_paths`. */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_unmute_all_paths(es_client_t * _Nonnull client); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos) es_return_t es_unmute_all_paths(es_client_t *_Nonnull client); /** * Unmute all target paths @@ -385,9 +414,8 @@ es_unmute_all_paths(es_client_t * _Nonnull client); * @return es_return_t indicating success or error */ OS_EXPORT -API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_unmute_all_target_paths(es_client_t * _Nonnull client); +API_AVAILABLE(macos(13.0)) +API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos) es_return_t es_unmute_all_target_paths(es_client_t *_Nonnull client); /** * @brief Unmute a path for all event types. @@ -408,9 +436,10 @@ es_unmute_all_target_paths(es_client_t * _Nonnull client); * @see es_unmute_path_events */ OS_EXPORT -API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_unmute_path(es_client_t * _Nonnull client, const char * _Nonnull path, es_mute_path_type_t type); +API_AVAILABLE(macos(12.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_unmute_path(es_client_t *_Nonnull client, const char *_Nonnull path, es_mute_path_type_t type); /** * @brief Unmute a path for a subset of event types. @@ -426,10 +455,16 @@ es_unmute_path(es_client_t * _Nonnull client, const char * _Nonnull path, es_mut * @see es_unmute_path */ OS_EXPORT -API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_unmute_path_events(es_client_t * _Nonnull client, const char * _Nonnull path, es_mute_path_type_t type, - const es_event_type_t * _Nonnull events, size_t event_count); +API_AVAILABLE(macos(12.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_unmute_path_events( + es_client_t *_Nonnull client, + const char *_Nonnull path, + es_mute_path_type_t type, + const es_event_type_t *_Nonnull events, + size_t event_count +); /** * @brief Retrieve a list of all muted paths. @@ -443,9 +478,10 @@ es_unmute_path_events(es_client_t * _Nonnull client, const char * _Nonnull path, * @see es_release_muted_paths */ OS_EXPORT -API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_muted_paths_events(es_client_t * _Nonnull client, es_muted_paths_t * _Nonnull * _Nullable muted_paths); +API_AVAILABLE(macos(12.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_return_t es_muted_paths_events(es_client_t *_Nonnull client, es_muted_paths_t *_Nonnull *_Nullable muted_paths); /** * @brief Delete a set of muted paths obtained from `es_muted_paths_events`, freeing resources. @@ -455,9 +491,8 @@ es_muted_paths_events(es_client_t * _Nonnull client, es_muted_paths_t * _Nonnull * @see es_muted_paths_events */ OS_EXPORT -API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos) -void -es_release_muted_paths(es_muted_paths_t * _Nonnull muted_paths); +API_AVAILABLE(macos(12.0)) +API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos) void es_release_muted_paths(es_muted_paths_t *_Nonnull muted_paths); /* * @brief Invert the mute state of a given mute dimension @@ -544,18 +579,17 @@ es_release_muted_paths(es_muted_paths_t * _Nonnull muted_paths); * When a new `es_client_t` is created certain paths are muted by default. * This is known as "the default mute set". * The default mute set exists to protect ES clients from deadlocks, and to prevent watchdog timeout panics. - * Creating a new client and calling `es_invert_muting(c, ES_MUTE_INVERSION_TYPE_PATH)` will result in the default mute set being selected rather than muted. - * In most cases this is unintended. - * Consider calling `es_unmute_all_paths` before inverting process path muting. - * Consider calling `es_unmute_all_target_paths` before inverting target path muting. - * Make sure the client has no auth subscriptions before doing so. - * If desired the default mute set can be saved using `es_muted_paths_events` and then restored after inverting again. + * Creating a new client and calling `es_invert_muting(c, ES_MUTE_INVERSION_TYPE_PATH)` will result in the default mute set being + * selected rather than muted. In most cases this is unintended. Consider calling `es_unmute_all_paths` before inverting process + * path muting. Consider calling `es_unmute_all_target_paths` before inverting target path muting. Make sure the client has no + * auth subscriptions before doing so. If desired the default mute set can be saved using `es_muted_paths_events` and then + * restored after inverting again. * */ OS_EXPORT -API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_invert_muting(es_client_t * _Nonnull client, es_mute_inversion_type_t mute_type); +API_AVAILABLE(macos(13.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) es_return_t es_invert_muting(es_client_t *_Nonnull client, es_mute_inversion_type_t mute_type); /* * @brief Query mute inversion state @@ -566,9 +600,10 @@ es_invert_muting(es_client_t * _Nonnull client, es_mute_inversion_type_t mute_ty * @return es_mute_inverted_return_t Indicates if muting was inverted, not inverted, or if an error occurred. */ OS_EXPORT -API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_mute_inverted_return_t -es_muting_inverted(es_client_t * _Nonnull client, es_mute_inversion_type_t mute_type); +API_AVAILABLE(macos(13.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_mute_inverted_return_t es_muting_inverted(es_client_t *_Nonnull client, es_mute_inversion_type_t mute_type); /** * Clear all cached results for all clients. @@ -579,16 +614,16 @@ es_muting_inverted(es_client_t * _Nonnull client, es_mute_inversion_type_t mute_ * It is permissible to pass any valid es_client_t object created by `es_new_client` */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_clear_cache_result_t -es_clear_cache(es_client_t * _Nonnull client); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) es_clear_cache_result_t es_clear_cache(es_client_t *_Nonnull client); /** * es_handler_block_t The type of block that will be invoked to handled messages from the ES subsystem * The es_client_t is a handle to the client being sent the event. It must be passed to any "respond" functions * The es_message_t is the message that must be handled */ -typedef void (^es_handler_block_t)(es_client_t * _Nonnull, const es_message_t * _Nonnull); +typedef void (^es_handler_block_t)(es_client_t *_Nonnull, const es_message_t *_Nonnull); /** * Initialise a new es_client_t and connect to the ES subsystem @@ -632,9 +667,10 @@ typedef void (^es_handler_block_t)(es_client_t * _Nonnull, const es_message_t * * @see es_unmute_path_events */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_new_client_result_t -es_new_client(es_client_t * _Nullable * _Nonnull client, es_handler_block_t _Nonnull handler); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) +es_new_client_result_t es_new_client(es_client_t *_Nullable *_Nonnull client, es_handler_block_t _Nonnull handler); /** * Destroy an es_client_t, freeing resources and disconnecting from the ES subsystem @@ -644,9 +680,8 @@ es_new_client(es_client_t * _Nullable * _Nonnull client, es_handler_block_t _Non * @note Must be called from the same thread that originally called `es_new_client`. */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_return_t -es_delete_client(es_client_t * _Nullable client); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos) es_return_t es_delete_client(es_client_t *_Nullable client); __END_DECLS; diff --git a/include/EndpointSecurity/ESMessage.h b/include/EndpointSecurity/ESMessage.h index 5d8a1057..05790ef0 100644 --- a/include/EndpointSecurity/ESMessage.h +++ b/include/EndpointSecurity/ESMessage.h @@ -9,22 +9,22 @@ #include #include #include +#include +#include #include #include #include #include -#include -#include #if !__DARWIN_64_BIT_INO_T - #error This header requires __DARWIN_64_BIT_INO_T +#error This header requires __DARWIN_64_BIT_INO_T #endif /* !__DARWIN_64_BIT_INO_T */ /** * The EndpointSecurity subsystem is responsible for creating, populating and * delivering these data structures to ES clients. */ - + /** * A note on userspace events: * @@ -32,13 +32,14 @@ * Such events are *mandatory*. * If no `es_event_setuid_t` event is emitted then no `setuid` took place. This is a secuirty guarantee. * Most events added in macOS 13 and 14 are emitted by userspace binaries and frameworks. - * ES still guarantees that if an event was not emitted *by that binary or framework* then it did not happen, but this is not quite the same guarantee. + * ES still guarantees that if an event was not emitted *by that binary or framework* then it did not happen, but this is not + * quite the same guarantee. * * Consider `es_event_su_t`. - * This event is created by the `su` binary first shipped in macOS 14.0, but it's entirely possible for a user to install (or compile) a different `su`! - * ES only guarantees that the platform binary shipped with macOS emits `es_event_su_t` events. - * As such `es_event_su_t` does not provide the same security guarantee that `es_event_setuid_t` does. - * + * This event is created by the `su` binary first shipped in macOS 14.0, but it's entirely possible for a user to install (or + * compile) a different `su`! ES only guarantees that the platform binary shipped with macOS emits `es_event_su_t` events. As such + * `es_event_su_t` does not provide the same security guarantee that `es_event_setuid_t` does. + * * When a user invokes the platform `su` binary ES will emit both `es_event_su_t` and `es_event_setuid_t` events. * When a user compiles their own `su` binary from source and executes it: * ES will emit an `es_event_setuid_t` event. @@ -47,7 +48,7 @@ * Userspace events are inherntly discretionary. * It is the at the users discrtion as to wether the use the builtin binaries/frameworks or not. * Kernel events are mandatory. There is no `setuid` syscall that ES does not interdict. - * + * * The following events are created by userspace binaries or frameworks: * ES_EVENT_TYPE_AUTH_FILE_PROVIDER_MATERIALIZE * ES_EVENT_TYPE_NOTIFY_FILE_PROVIDER_MATERIALIZE @@ -87,6 +88,8 @@ * ES_EVENT_TYPE_NOTIFY_OD_CREATE_GROUP * ES_EVENT_TYPE_NOTIFY_OD_DELETE_USER * ES_EVENT_TYPE_NOTIFY_OD_DELETE_GROUP + * ES_EVENT_TYPE_NOTIFY_GATEKEEPER_USER_OVERRIDE + * ES_EVENT_TYPE_NOTIFY_TCC_MODIFY */ /** @@ -99,9 +102,11 @@ * * @note For the FAT family of filesystems the `stat.st_ino` field is set to 999999999 for empty files * - * @discussion For files with a link count greater than 1, the absolute path given may not be the only absolute path that exists, and which hard link the emitted path points to is undefined. + * @discussion For files with a link count greater than 1, the absolute path given may not be the only absolute path that exists, + * and which hard link the emitted path points to is undefined. * - * Overlong paths are truncated at a maximum length that currently is 16K, though that number is not considered API and may change at any time. + * Overlong paths are truncated at a maximum length that currently is 16K, though that number is not considered API and may change + * at any time. * */ typedef struct { @@ -193,17 +198,16 @@ typedef struct { uint32_t codesigning_flags; bool is_platform_binary; bool is_es_client; - uint8_t cdhash[20]; + es_cdhash_t cdhash; es_string_token_t signing_id; es_string_token_t team_id; - es_file_t * _Nonnull executable; - es_file_t * _Nullable tty; /* field available only if message version >= 2 */ - struct timeval start_time; /* field available only if message version >= 3 */ + es_file_t *_Nonnull executable; + es_file_t *_Nullable tty; /* field available only if message version >= 2 */ + struct timeval start_time; /* field available only if message version >= 3 */ audit_token_t responsible_audit_token; /* field available only if message version >= 4 */ - audit_token_t parent_audit_token; /* field available only if message version >= 4 */ + audit_token_t parent_audit_token; /* field available only if message version >= 4 */ } es_process_t; - /** * @brief Describes machine-specific thread state as used by `thread_create_running` and other * Mach API functions. @@ -269,10 +273,9 @@ typedef struct { es_string_token_t app_url; } es_btm_launch_item_t; - typedef enum { - ES_PROFILE_SOURCE_MANAGED, - ES_PROFILE_SOURCE_INSTALL, + ES_PROFILE_SOURCE_MANAGED, + ES_PROFILE_SOURCE_INSTALL, } es_profile_source_t; /** @@ -286,12 +289,12 @@ typedef enum { * @field scope Profile scope. */ typedef struct { - es_string_token_t identifier; - es_string_token_t uuid; - es_profile_source_t install_source; - es_string_token_t organization; - es_string_token_t display_name; - es_string_token_t scope; + es_string_token_t identifier; + es_string_token_t uuid; + es_profile_source_t install_source; + es_string_token_t organization; + es_string_token_t display_name; + es_string_token_t scope; } es_profile_t; /** @@ -351,20 +354,50 @@ typedef struct { * @note Cache key for this event type: (process executable file, target executable file) */ typedef struct { - es_process_t * _Nonnull target; + es_process_t *_Nonnull target; es_string_token_t dyld_exec_path; /* field available only if message version >= 7 */ union { uint8_t reserved[64]; struct { - es_file_t * _Nullable script; /* field available only if message version >= 2 */ - es_file_t * _Nonnull cwd; /* field available only if message version >= 3 */ - int last_fd; /* field available only if message version >= 4 */ - cpu_type_t image_cputype; /* field available only if message version >= 6 */ + es_file_t *_Nullable script; /* field available only if message version >= 2 */ + es_file_t *_Nonnull cwd; /* field available only if message version >= 3 */ + int last_fd; /* field available only if message version >= 4 */ + cpu_type_t image_cputype; /* field available only if message version >= 6 */ cpu_subtype_t image_cpusubtype; /* field available only if message version >= 6 */ }; }; } es_event_exec_t; +/** + * @brief TCC Modification Event. Occurs when a TCC permission is granted + * or revoked. + * + * @field service The TCC service for which permissions are being modified. + * @field identity The identity of the application that is the subject of the permission. + * @field identity_type The identity type of the application string (Bundle ID, path, etc). + * @field update_type The type of TCC modification event (Grant/Revoke etc) + * @field instigator_token Audit token of the instigator of the modification. + * @field instigator (Optional) The process information for the instigator. + * @field responsible_token (Optional) Audit token of the responsible process for the modification. + * @field responsible (Optional) The process information for the responsible process. + * @field right The resulting TCC permission of the operation/modification. + * @field reason The reason the TCC permissions were updated. + * + * @note This event type does not support caching. + */ +typedef struct { + es_string_token_t service; + es_string_token_t identity; + es_tcc_identity_type_t identity_type; + es_tcc_event_type_t update_type; + audit_token_t instigator_token; + es_process_t *_Nullable instigator; + audit_token_t *_Nullable responsible_token; + es_process_t *_Nullable responsible; + es_tcc_authorization_right_t right; + es_tcc_authorization_reason_t reason; +} es_event_tcc_modify_t; + /** * @brief Open a file system object * @@ -382,7 +415,7 @@ typedef struct { */ typedef struct { int32_t fflag; - es_file_t * _Nonnull file; + es_file_t *_Nonnull file; uint8_t reserved[64]; } es_event_open_t; @@ -392,6 +425,9 @@ typedef struct { * @field identifier The signing identifier of the kext being loaded * * @note This event type does not support caching. + * @note Not all AUTH_KEXTLOAD events can be delivered. + * In rare circumstances when kextloading is blocking all userspace execution it will be automatically allowed. + * NOTIFY_KEXTLOAD will still be (eventually) delivered. */ typedef struct { es_string_token_t identifier; @@ -422,8 +458,8 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull target; - es_file_t * _Nonnull parent_dir; + es_file_t *_Nonnull target; + es_file_t *_Nonnull parent_dir; uint8_t reserved[64]; } es_event_unlink_t; @@ -443,7 +479,7 @@ typedef struct { int32_t max_protection; int32_t flags; uint64_t file_pos; - es_file_t * _Nonnull source; + es_file_t *_Nonnull source; uint8_t reserved[64]; } es_event_mmap_t; @@ -457,22 +493,34 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull source; - es_file_t * _Nonnull target_dir; + es_file_t *_Nonnull source; + es_file_t *_Nonnull target_dir; es_string_token_t target_filename; uint8_t reserved[64]; } es_event_link_t; +// The following types are used in mount events +typedef enum { + ES_MOUNT_DISPOSITION_EXTERNAL, // device is external storage + ES_MOUNT_DISPOSITION_INTERNAL, // device is internal storage + ES_MOUNT_DISPOSITION_NETWORK, // device is a network share + ES_MOUNT_DISPOSITION_VIRTUAL, // device is virtual (dmg or file) + ES_MOUNT_DISPOSITION_NULLFS, // mount uses nullfs, commonly for app translocation + ES_MOUNT_DISPOSITION_UNKNOWN // unable to determine disposition +} es_mount_disposition_t; + /** * @brief Mount a file system * * @field statfs The file system stats for the file system being mounted + * @field disposition The device disposition of the f_mntfromname * * @note Cache key for this event type: (process executable file, mount point) */ typedef struct { - struct statfs * _Nonnull statfs; - uint8_t reserved[64]; + struct statfs *_Nonnull statfs; + es_mount_disposition_t disposition; /* field available only if message version >= 8 */ + uint8_t reserved[60]; } es_event_mount_t; /** @@ -483,7 +531,7 @@ typedef struct { * @note This event type does not support caching (notify-only). */ typedef struct { - struct statfs * _Nonnull statfs; + struct statfs *_Nonnull statfs; uint8_t reserved[64]; } es_event_unmount_t; @@ -491,12 +539,16 @@ typedef struct { * @brief Remount a file system * * @field statfs The file system stats for the file system being remounted - * - * @note This event type does not support caching. + * @field remount_flags The provided remount flags + * @field disposition The device disposition of the f_mntfromname + + * @note This event type does not support caching (notify-only). */ typedef struct { - struct statfs * _Nonnull statfs; - uint8_t reserved[64]; + struct statfs *_Nonnull statfs; + uint64_t remount_flags; /* field available only if message version >= 8 */ + es_mount_disposition_t disposition; /* field available only if message version >= 8 */ + uint8_t reserved[52]; } es_event_remount_t; /** @@ -507,7 +559,7 @@ typedef struct { * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull child; + es_process_t *_Nonnull child; uint8_t reserved[64]; } es_event_fork_t; @@ -530,17 +582,35 @@ typedef struct { /** * @brief Send a signal to a process * - * @field sig The signal number to be delivered - * @field target The process that will receive the signal + * Signals may be sent on behalf of another process or directly. Notably launchd often sends signals + * on behalf of another process for service start/stop operations. If this is the case an + * instigator will be provided. The relationship between each process is illustrated below: * - * @note This event will not fire if a process sends a signal to itself. + * Delegated Signal: + * + * Instigator Process -> IPC to Sender Process (launchd) -> Target Process + * + * Direct Signal: + * + * Sender Process -> Target Process + * + * Clients may wish to block delegated signals from launchd for non-authorized instigators, while still + * allowing direct signals initiated by launchd for shutdown/reboot/restart. + * + * @field sig The signal number to be delivered + * @field target The process that will receive the signal + * @field instigator Process information for the instigator (if applicable). * - * @note Cache key for this event type: (process executable file, target process executable file) + * @note This event will not fire if a process sends a signal to itself. + * @note This event type does not support caching. + * @note Be aware of the nullablity of some of the fields. The instigator may not be + * applicable. */ typedef struct { int sig; - es_process_t * _Nonnull target; - uint8_t reserved[64]; + es_process_t *_Nonnull target; + es_process_t *_Nullable instigator; + uint8_t reserved[56]; } es_event_signal_t; typedef enum { @@ -569,12 +639,12 @@ typedef enum { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull source; + es_file_t *_Nonnull source; es_destination_type_t destination_type; union { - es_file_t * _Nonnull existing_file; + es_file_t *_Nonnull existing_file; struct { - es_file_t * _Nonnull dir; + es_file_t *_Nonnull dir; es_string_token_t filename; } new_path; } destination; @@ -590,7 +660,7 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; es_string_token_t extattr; uint8_t reserved[64]; } es_event_setextattr_t; @@ -604,7 +674,7 @@ typedef struct { * @note Cache key for this event type: (process executable file, target file) */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; es_string_token_t extattr; uint8_t reserved[64]; } es_event_getextattr_t; @@ -618,7 +688,7 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; es_string_token_t extattr; uint8_t reserved[64]; } es_event_deleteextattr_t; @@ -636,7 +706,7 @@ typedef struct { */ typedef struct { mode_t mode; - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_setmode_t; @@ -653,7 +723,7 @@ typedef struct { */ typedef struct { uint32_t flags; - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_setflags_t; @@ -672,7 +742,7 @@ typedef struct { typedef struct { uid_t uid; gid_t gid; - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_setowner_t; @@ -687,20 +757,21 @@ typedef struct { * * @note This event type does not support caching (notify-only). * - * `was_mapped_writable` only indicates whether the target file was mapped into writable memory or not for the lifetime of the vnode. - * It does not indicate whether the file has actually been written to by way of writing to mapped memory, and it does not indicate whether the file is currently still mapped writable. - * Correct interpretation requires consideration of vnode lifetimes in the kernel. + * `was_mapped_writable` only indicates whether the target file was mapped into writable memory or not for the lifetime of the + * vnode. It does not indicate whether the file has actually been written to by way of writing to mapped memory, and it does not + * indicate whether the file is currently still mapped writable. Correct interpretation requires consideration of vnode lifetimes + * in the kernel. * * The `modified` flag only reflects that a file was or was not modified by filesystem syscall. * If a file was only modifed though a memory mapping this flag will be false, but was_mapped_writable will be true. */ typedef struct { bool modified; - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; union { uint8_t reserved[64]; struct { - bool was_mapped_writable; /* Field available only if message version >= 6. */ + bool was_mapped_writable; /* Field available only if message version >= 6. */ }; }; } es_event_close_t; @@ -742,9 +813,9 @@ typedef struct { typedef struct { es_destination_type_t destination_type; union { - es_file_t * _Nonnull existing_file; + es_file_t *_Nonnull existing_file; struct { - es_file_t * _Nonnull dir; + es_file_t *_Nonnull dir; es_string_token_t filename; mode_t mode; } new_path; @@ -779,8 +850,8 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull file1; - es_file_t * _Nonnull file2; + es_file_t *_Nonnull file1; + es_file_t *_Nonnull file2; uint8_t reserved[64]; } es_event_exchangedata_t; @@ -792,7 +863,7 @@ typedef struct { * @note This event type does not support caching (notify-only). */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_write_t; @@ -804,7 +875,7 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_truncate_t; @@ -816,7 +887,7 @@ typedef struct { * @note Cache key for this event type: (process executable file, target directory) */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_chdir_t; @@ -828,7 +899,7 @@ typedef struct { * @note This event type does not support caching (notify-only). */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_stat_t; @@ -840,7 +911,7 @@ typedef struct { * @note Cache key for this event type: (process executable file, target directory) */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_chroot_t; @@ -852,7 +923,7 @@ typedef struct { * @note Cache key for this event type: (process executable file, target file) */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_listextattr_t; @@ -918,7 +989,7 @@ typedef enum { * (process executable file, target executable file) */ typedef struct { - es_process_t * _Nonnull target; + es_process_t *_Nonnull target; es_get_task_type_t type; /* field available only if message version >= 5 */ uint8_t reserved[60]; } es_event_get_task_t; @@ -938,7 +1009,7 @@ typedef struct { * (process executable file, target executable file) */ typedef struct { - es_process_t * _Nonnull target; + es_process_t *_Nonnull target; es_get_task_type_t type; /* field available only if message version >= 5 */ uint8_t reserved[60]; } es_event_get_task_read_t; @@ -957,7 +1028,7 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_process_t * _Nonnull target; + es_process_t *_Nonnull target; es_get_task_type_t type; /* field available only if message version >= 5 */ uint8_t reserved[60]; } es_event_get_task_inspect_t; @@ -976,7 +1047,7 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_process_t * _Nonnull target; + es_process_t *_Nonnull target; es_get_task_type_t type; /* field available only if message version >= 5 */ uint8_t reserved[60]; } es_event_get_task_name_t; @@ -991,7 +1062,7 @@ typedef struct { */ typedef struct { struct attrlist attrlist; - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_getattrlist_t; @@ -1005,7 +1076,7 @@ typedef struct { */ typedef struct { struct attrlist attrlist; - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_setattrlist_t; @@ -1018,7 +1089,7 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull source; + es_file_t *_Nonnull source; es_string_token_t target_path; uint8_t reserved[64]; } es_event_file_provider_update_t; @@ -1026,16 +1097,19 @@ typedef struct { /** * @brief Materialize a file via the FileProvider framework * + * @field instigator The process that instigated the materialize operation. * @field source The staged file that has been materialized * @field target The destination of the staged `source` file + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching. */ typedef struct { - es_process_t * _Nonnull instigator; - es_file_t * _Nonnull source; - es_file_t * _Nonnull target; - uint8_t reserved[64]; + es_process_t *_Nullable instigator; + es_file_t *_Nonnull source; + es_file_t *_Nonnull target; + audit_token_t instigator_token; // Available in msg versions >= 8. + uint8_t reserved[32]; } es_event_file_provider_materialize_t; /** @@ -1047,7 +1121,7 @@ typedef struct { * can also cause this event to be fired. */ typedef struct { - es_file_t * _Nonnull source; + es_file_t *_Nonnull source; uint8_t reserved[64]; } es_event_readlink_t; @@ -1062,7 +1136,7 @@ typedef struct { * @note This event type does not support caching (notify-only). */ typedef struct { - es_file_t * _Nonnull source_dir; + es_file_t *_Nonnull source_dir; es_string_token_t relative_target; uint8_t reserved[64]; } es_event_lookup_t; @@ -1077,7 +1151,7 @@ typedef struct { */ typedef struct { int32_t mode; - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_access_t; @@ -1091,7 +1165,7 @@ typedef struct { * @note Cache key for this event type: (process executable file, target file) */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; struct timespec atime; struct timespec mtime; uint8_t reserved[64]; @@ -1107,8 +1181,8 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull source; - es_file_t * _Nonnull target_dir; + es_file_t *_Nonnull source; + es_file_t *_Nonnull target_dir; es_string_token_t target_name; uint8_t reserved[64]; } es_event_clone_t; @@ -1131,9 +1205,9 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull source; - es_file_t * _Nullable target_file; - es_file_t * _Nonnull target_dir; + es_file_t *_Nonnull source; + es_file_t *_Nullable target_file; + es_file_t *_Nonnull target_dir; es_string_token_t target_name; mode_t mode; int32_t flags; @@ -1149,7 +1223,7 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; int32_t cmd; uint8_t reserved[64]; } es_event_fcntl_t; @@ -1162,7 +1236,7 @@ typedef struct { * @note Cache key for this event type: (process executable file, target directory) */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_readdir_t; @@ -1177,7 +1251,7 @@ typedef struct { * @note Cache key for this event type: (process executable file, target file) */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_fsgetpath_t; @@ -1203,7 +1277,7 @@ typedef struct { * @note This event type does not support caching (notify-only). */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_dup_t; @@ -1217,7 +1291,7 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull dir; + es_file_t *_Nonnull dir; es_string_token_t filename; mode_t mode; uint8_t reserved[64]; @@ -1234,7 +1308,7 @@ typedef struct { * @note Cache key for this event type: (process executable file, socket file) */ typedef struct { - es_file_t * _Nonnull file; + es_file_t *_Nonnull file; int domain; int type; int protocol; @@ -1260,7 +1334,7 @@ typedef struct { * @note This event type does not support caching. */ typedef struct { - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; es_set_or_clear_t set_or_clear; union { acl_t _Nonnull set; @@ -1302,7 +1376,7 @@ typedef struct { * @note Cache key for this event type: (process executable file, target process executable file, type) */ typedef struct { - es_process_t * _Nullable target; + es_process_t *_Nullable target; es_proc_check_type_t type; int flavor; uint8_t reserved[64]; @@ -1318,7 +1392,7 @@ typedef struct { */ typedef struct { struct attrlist attrlist; - es_file_t * _Nonnull target; + es_file_t *_Nonnull target; uint8_t reserved[64]; } es_event_searchfs_t; @@ -1342,7 +1416,7 @@ typedef enum { * @note This event type does not support caching. */ typedef struct { - es_process_t * _Nullable target; + es_process_t *_Nullable target; es_proc_suspend_resume_type_t type; uint8_t reserved[64]; } es_event_proc_suspend_resume_t; @@ -1375,7 +1449,7 @@ typedef struct { * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull target; + es_process_t *_Nonnull target; uint8_t reserved[64]; } es_event_trace_t; @@ -1391,8 +1465,8 @@ typedef struct { * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull target; - es_thread_state_t * _Nullable thread_state; + es_process_t *_Nonnull target; + es_thread_state_t *_Nullable thread_state; uint8_t reserved[64]; } es_event_remote_thread_create_t; @@ -1475,25 +1549,27 @@ typedef struct { /** * @brief OpenDirectory authentication data for type ES_AUTHENTICATION_TYPE_OD. * - * @field instigator Process that instigated the authentication - * (XPC caller that asked for authentication). - * @field record_type OD record type against which OD is authenticating. - * Typically "Users", but other record types can auth too. - * @field record_name OD record name against which OD is authenticating. - * For record type "Users", this is the username. - * @field node_name OD node against which OD is authenticating. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. - */ -typedef struct { - es_process_t * _Nonnull instigator; + * @field instigator Process that instigated the authentication + * (XPC caller that asked for authentication). + * @field record_type OD record type against which OD is authenticating. + * Typically "Users", but other record types can auth too. + * @field record_name OD record name against which OD is authenticating. + * For record type "Users", this is the username. + * @field node_name OD node against which OD is authenticating. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. + */ +typedef struct { + es_process_t *_Nullable instigator; es_string_token_t record_type; es_string_token_t record_name; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_authentication_od_t; typedef enum { @@ -1504,39 +1580,44 @@ typedef enum { /** * @brief TouchID authentication data for type ES_AUTHENTICATION_TYPE_TOUCHID. * - * @field instigator Process that instigated the authentication - * (XPC caller that asked for authentication). - * @field touchid_mode TouchID authentication type - * @field has_uid Describes whether or not the uid of the user authenticated is available - * @field uid Union that is valid when `has_uid` is set to `true` - * @field uid.uid uid of user that was authenticated. - * This will be set when `success` is true and `touchid_mode` is of - * verification type i.e. ES_TOUCHID_MODE_VERIFICATION + * @field instigator Process that instigated the authentication + * (XPC caller that asked for authentication). + * @field touchid_mode TouchID authentication type + * @field has_uid Describes whether or not the uid of the user authenticated is available + * @field uid Union that is valid when `has_uid` is set to `true` + * @field uid.uid uid of user that was authenticated. + * This will be set when `success` is true and `touchid_mode` is of + * verification type i.e. ES_TOUCHID_MODE_VERIFICATION + * @field instigator_token Audit token of the process that instigated this event. */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; es_touchid_mode_t touchid_mode; bool has_uid; union { uid_t uid; } uid; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_authentication_touchid_t; /** * @brief Token authentication data for type ES_AUTHENTICATION_TYPE_TOKEN. * - * @field instigator Process that instigated the authentication - * (XPC caller that asked for authentication). - * @field pubkey_hash Hash of the public key which CryptoTokenKit is authenticating. - * @field token_id Token identifier of the event which CryptoTokenKit is authenticating. - * @field kerberos_principal Optional. This will be available if token is used for GSS PKINIT - * authentication for obtaining a kerberos TGT. NULL in all other cases. + * @field instigator Process that instigated the authentication + * (XPC caller that asked for authentication). + * @field pubkey_hash Hash of the public key which CryptoTokenKit is authenticating. + * @field token_id Token identifier of the event which CryptoTokenKit is authenticating. + * @field kerberos_principal Optional. This will be available if token is used for GSS PKINIT + * authentication for obtaining a kerberos TGT. NULL in all other cases. + * @field instigator_token Audit token of the process that instigated this event. + * */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; es_string_token_t pubkey_hash; es_string_token_t token_id; es_string_token_t kerberos_principal; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_authentication_token_t; typedef enum { @@ -1576,10 +1657,10 @@ typedef struct { bool success; es_authentication_type_t type; union { - es_event_authentication_od_t * _Nonnull od; - es_event_authentication_touchid_t * _Nonnull touchid; - es_event_authentication_token_t * _Nonnull token; - es_event_authentication_auto_unlock_t * _Nonnull auto_unlock; + es_event_authentication_od_t *_Nonnull od; + es_event_authentication_touchid_t *_Nonnull touchid; + es_event_authentication_token_t *_Nonnull token; + es_event_authentication_auto_unlock_t *_Nonnull auto_unlock; } data; } es_event_authentication_t; @@ -1640,14 +1721,15 @@ typedef struct { bool success; es_string_token_t result_description; es_string_token_t remediated_path; - audit_token_t * _Nullable remediated_process_audit_token; + audit_token_t *_Nullable remediated_process_audit_token; } es_event_xp_malware_remediated_t; /** * @brief es_graphical_session_id_t is a session identifier identifying a on-console or off-console graphical session. * A graphical session exists and can potentially be attached to via Screen Sharing before a user is logged in. * EndpointSecurity clients should treat the `graphical_session_id` as an opaque identifier and not assign - * special meaning to it beyond correlating events pertaining to the same graphical session. Not to be confused with the audit session ID. + * special meaning to it beyond correlating events pertaining to the same graphical session. Not to be confused with the audit + * session ID. */ typedef uint32_t es_graphical_session_id_t; @@ -1727,7 +1809,8 @@ typedef struct { * * @note This event type does not support caching (notify-only). * @discussion This event is not emitted when a screensharing session has the same source and destination address. - * For example if device A is acting as a NAT gateway for device B, then a screensharing session from B -> A would not emit an event. + * For example if device A is acting as a NAT gateway for device B, then a screensharing session from B -> A would not emit an + * event. */ typedef struct { bool success; @@ -1876,6 +1959,8 @@ typedef struct { * @field executable_path Optional. If available and applicable, the POSIX executable * path from the launchd plist. * If the path is relative, it is relative to item->app_url. + * @field instigator_token Audit token of the process that instigated this event. + * @field app_token Audit token of the app process that registered the item. * * @note May be emitted for items where an add was already seen previously, * with or without the item having changed. @@ -1883,10 +1968,12 @@ typedef struct { * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nullable instigator; - es_process_t * _Nullable app; - es_btm_launch_item_t * _Nonnull item; + es_process_t *_Nullable instigator; + es_process_t *_Nullable app; + es_btm_launch_item_t *_Nonnull item; es_string_token_t executable_path; + audit_token_t *_Nullable instigator_token; // Available in msg versions >= 8. + audit_token_t *_Nullable app_token; // Available in msg versions >= 8. } es_event_btm_launch_item_add_t; /** @@ -1898,37 +1985,40 @@ typedef struct { * (XPC caller that asked for the item to be removed). * @field app Optional. App process that registered the item. * @field item BTM launch item. + * @field instigator_token Audit token of the process that instigated this event. + * @field app_token Audit token of the app process that removed the item. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nullable instigator; - es_process_t * _Nullable app; - es_btm_launch_item_t * _Nonnull item; + es_process_t *_Nullable instigator; + es_process_t *_Nullable app; + es_btm_launch_item_t *_Nonnull item; + audit_token_t *_Nullable instigator_token; // Available in msg versions >= 8. + audit_token_t *_Nullable app_token; // Available in msg versions >= 8. } es_event_btm_launch_item_remove_t; - /** * @brief Notification for a su policy decisions events. * * @field success True iff su was successful. * @field failure_message Optional. If success is false, a failure message is contained in this field * @field from_uid The uid of the user who initiated the su - * @field from_name The name of the user who initiated the su + * @field from_username The username of the user who initiated the su * @field has_to_uid True iff su was successful, Describes whether or not the to_uid is interpretable * @field to_uid Optional. If success, the user ID that is going to be substituted * @field to_username Optional. If success, the user name that is going to be substituted * @field shell Optional. If success, the shell is going to execute - * @field argc The length of argv + * @field argc The length of argv * @field argv If success, the arguments are passed into to the shell * @field env_count The length of env * @field env If success, list of environment variables that is going to be substituted - * - * @note This event type does not support caching (notify-only). Should always + * + * @note This event type does not support caching (notify-only). Should always * emit on success but will only emit on security relevant failures. For example, * Endpoint Security clients will not get an event for su being passed invalid * command line arguments. - * + * */ typedef struct { bool success; @@ -1942,56 +2032,44 @@ typedef struct { es_string_token_t to_username; es_string_token_t shell; size_t argc; - es_string_token_t * _Nullable argv; + es_string_token_t *_Nullable argv; size_t env_count; - es_string_token_t * _Nullable env; + es_string_token_t *_Nullable env; } es_event_su_t; -/** - * @brief This enum describes the type of plugin types in sudo - */ -typedef enum { - ES_SUDO_PLUGIN_TYPE_UNKNOWN, - ES_SUDO_PLUGIN_TYPE_FRONT_END, - ES_SUDO_PLUGIN_TYPE_POLICY, - ES_SUDO_PLUGIN_TYPE_IO, - ES_SUDO_PLUGIN_TYPE_AUDIT, - ES_SUDO_PLUGIN_TYPE_APPROVAL, -} es_sudo_plugin_type_t; - /** * @brief Provides context about failures in es_event_sudo_t. * * @field plugin_name The sudo plugin that initiated the reject * @field plugin_type The sudo plugin type that initiated the reject - * @field failure_message A reason represented by a string for the failure - * + * @field failure_message A reason represented by a string for the failure + * */ typedef struct { - es_string_token_t plugin_name; + es_string_token_t plugin_name; es_sudo_plugin_type_t plugin_type; es_string_token_t failure_message; } es_sudo_reject_info_t; /** - * @brief Notification for a sudo event. + * @brief Notification for a sudo event. * * @field success True iff sudo was successful * @field reject_info Optional. When success is false, describes why sudo was rejected * @field has_from_uid Describes whether or not the from_uid is interpretable - * @field from_uid Optional. The uid of the user who initiated the su - * @field from_name Optional. The name of the user who initiated the su + * @field from_uid Optional. The uid of the user who initiated the sudo + * @field from_username Optional. The username of the user who initiated the sudo * @field has_to_uid Describes whether or not the to_uid is interpretable * @field to_uid Optional. If success, the user ID that is going to be substituted * @field to_username Optional. If success, the user name that is going to be substituted * @field command Optional. The command to be run - * + * * @note This event type does not support caching (notify-only). - * + * */ typedef struct { bool success; - es_sudo_reject_info_t* _Nullable reject_info; + es_sudo_reject_info_t *_Nullable reject_info; bool has_from_uid; union { uid_t uid; @@ -2015,28 +2093,30 @@ typedef struct { * @field instigator Process that instigated the Profile install or update. * @field is_update Indicates if the profile is an update to an already installed * profile. - * @field item Profile install item. - * + * @field profile Profile install item. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; bool is_update; - es_profile_t * _Nonnull profile; + es_profile_t *_Nonnull profile; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_profile_add_t; /** * @brief Notification for Profiles removed on the system. * @field instigator Process that instigated the Profile removal. - * @field item Profile being removed. - * + * @field profile Profile being removed. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; - es_profile_t * _Nonnull profile; + es_process_t *_Nullable instigator; + es_profile_t *_Nonnull profile; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_profile_remove_t; /** @@ -2047,15 +2127,19 @@ typedef struct { * @field flags Flags associated with the petition. Defined Security framework "Authorization/Authorizatioh.h" * @field right_count The number of elements in `rights` * @field rights Array of string tokens, each token is the name of a right being requested + * @field instigator_token Audit token of the process that submitted the petition. + * @field petitioner_token Audit token of the process that created the petition. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; - es_process_t * _Nullable petitioner; + es_process_t *_Nullable instigator; + es_process_t *_Nullable petitioner; uint32_t flags; size_t right_count; - es_string_token_t * _Nullable rights; + es_string_token_t *_Nullable rights; + audit_token_t instigator_token; // Available in msg versions >= 8. + audit_token_t petitioner_token; // Available in msg versions >= 8. } es_event_authorization_petition_t; /** @@ -2063,7 +2147,7 @@ typedef struct { * * @field right_name The name of the right being considered * @field rule_class The class of the right being considered - * The rule class determines how the operating system determines + * The rule class determines how the operating system determines * if it should be granted or not * @field granted Indicates if the right was granted or not */ @@ -2074,7 +2158,7 @@ typedef struct { } es_authorization_result_t; /** - * @brief Notification that a process had it's right petition judged + * @brief Notification that a process had it's right petition judged * * @field instigator Process that submitted the petition (XPC caller) * @field petitioner Process that created the petition @@ -2082,15 +2166,19 @@ typedef struct { * Possible return codes are defined Security framework "Authorization/Authorizatioh.h" * @field result_count The number of elements in `results` * @field results Array of results. One for each right that was peititioned + * @field instigator_token Audit token of the process that submitted the petition. + * @field petitioner_token Audit token of the process that created the petition. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; - es_process_t * _Nullable petitioner; + es_process_t *_Nullable instigator; + es_process_t *_Nullable petitioner; int return_code; size_t result_count; - es_authorization_result_t * _Nullable results; + es_authorization_result_t *_Nullable results; + audit_token_t instigator_token; // Available in msg versions >= 8. + audit_token_t petitioner_token; // Available in msg versions >= 8. } es_event_authorization_judgement_t; /** @@ -2111,192 +2199,205 @@ typedef struct { /** * @brief Notification that a member was added to a group. * - * @field instigator Process that instigated operation (XPC caller). - * @field group_name The group to which the member was added. - * @field member The identity of the member added. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field group_name The group to which the member was added. + * @field member The identity of the member added. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). * @note This event does not indicate that a member was actually added. * For example when adding a user to a group they are already a member of. */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_string_token_t group_name; - es_od_member_id_t * _Nonnull member; + es_od_member_id_t *_Nonnull member; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_group_add_t; /** * @brief Notification that a member was removed from a group. * - * @field instigator Process that instigated operation (XPC caller). - * @field group_name The group from which the member was removed. - * @field member The identity of the member removed. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field group_name The group from which the member was removed. + * @field member The identity of the member removed. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). * @note This event does not indicate that a member was actually removed. * For example when removing a user from a group they are not a member of. */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_string_token_t group_name; - es_od_member_id_t * _Nonnull member; + es_od_member_id_t *_Nonnull member; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_group_remove_t; - /** * @brief An array of group member identities. * * @field member_type Indicates the type of the members, and how they are identified. * Note that member_type indicates which field of member_array is initialised. * @field member_count The number of elements in member_array. - * @field member_array A union of pointers. + * @field member_array A union of pointers. * The initialised member points to the first element of an array of member values. */ typedef struct { es_od_member_type_t member_type; size_t member_count; union { - uuid_t * _Nonnull uuids; - es_string_token_t * _Nonnull names; + uuid_t *_Nonnull uuids; + es_string_token_t *_Nonnull names; } member_array; } es_od_member_id_array_t; /** * @brief Notification that a group had it's members initialised or replaced. * - * @field instigator Process that instigated operation (XPC caller). - * @field error_code 0 indicates the operation succeeded. - * Values inidicating specific failure reasons are defined in odconstants.h. - * @field group_name The group for which members were set. - * @field members Array of new members. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field error_code 0 indicates the operation succeeded. + * Values inidicating specific failure reasons are defined in odconstants.h. + * @field group_name The group for which members were set. + * @field members Array of new members. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). * @note This event does not indicate that a member was actually removed. * For example when removing a user from a group they are not a member of. */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_string_token_t group_name; - es_od_member_id_array_t * _Nonnull members; + es_od_member_id_array_t *_Nonnull members; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_group_set_t; /** * @brief Notification that an account had its password modified. * - * @field instigator Process that instigated operation (XPC caller). - * @field error_code 0 indicates the operation succeeded. - * Values inidicating specific failure reasons are defined in odconstants.h. - * @field account_type The type of the account for which the password was modified. - * @field account_name The name of the account for which the password was modified. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field error_code 0 indicates the operation succeeded. + * Values inidicating specific failure reasons are defined in odconstants.h. + * @field account_type The type of the account for which the password was modified. + * @field account_name The name of the account for which the password was modified. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_od_account_type_t account_type; es_string_token_t account_name; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_modify_password_t; /** * @brief Notification that a user account was disabled. * - * @field instigator Process that instigated operation (XPC caller). - * @field error_code 0 indicates the operation succeeded. - * Values inidicating specific failure reasons are defined in odconstants.h. - * @field user_name The name of the user account that was disabled. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field error_code 0 indicates the operation succeeded. + * Values inidicating specific failure reasons are defined in odconstants.h. + * @field user_name The name of the user account that was disabled. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_string_token_t user_name; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_disable_user_t; /** * @brief Notification that a user account was enabled. * - * @field instigator Process that instigated operation (XPC caller). - * @field error_code 0 indicates the operation succeeded. - * Values inidicating specific failure reasons are defined in odconstants.h. - * @field user_name The name of the user account that was enabled. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field error_code 0 indicates the operation succeeded. + * Values inidicating specific failure reasons are defined in odconstants.h. + * @field user_name The name of the user account that was enabled. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_string_token_t user_name; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_enable_user_t; /** * @brief Notification that an attribute value was added to a record. * - * @field instigator Process that instigated operation (XPC caller). - * @field error_code 0 indicates the operation succeeded. - * Values inidicating specific failure reasons are defined in odconstants.h. - * @field record_type The type of the record to which the attribute value was added. - * @field record_name The name of the record to which the attribute value was added. - * @field attribute_name The name of the attribute to which the value was added. - * @field attribute_value The value that was added. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field error_code 0 indicates the operation succeeded. + * Values inidicating specific failure reasons are defined in odconstants.h. + * @field record_type The type of the record to which the attribute value was added. + * @field record_name The name of the record to which the attribute value was added. + * @field attribute_name The name of the attribute to which the value was added. + * @field attribute_value The value that was added. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. + * * * @note This event type does not support caching (notify-only). * @note Attributes conceptually have the type `Map String (Set String)`. @@ -2304,7 +2405,7 @@ typedef struct { * When an attribute value is added, it is inserted into the set of values for that name. */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_od_record_type_t record_type; es_string_token_t record_name; @@ -2312,24 +2413,26 @@ typedef struct { es_string_token_t attribute_value; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_attribute_value_add_t; /** * @brief Notification that an attribute value was removed from a record. * - * @field instigator Process that instigated operation (XPC caller). - * @field error_code 0 indicates the operation succeeded. - * Values inidicating specific failure reasons are defined in odconstants.h. - * @field record_type The type of the record from which the attribute value was removed. - * @field record_name The name of the record from which the attribute value was removed. - * @field attribute_name The name of the attribute from which the value was removed. - * @field attribute_value The value that was removed. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field error_code 0 indicates the operation succeeded. + * Values inidicating specific failure reasons are defined in odconstants.h. + * @field record_type The type of the record from which the attribute value was removed. + * @field record_name The name of the record from which the attribute value was removed. + * @field attribute_name The name of the attribute from which the value was removed. + * @field attribute_value The value that was removed. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). * @note Attributes conceptually have the type `Map String (Set String)`. @@ -2338,7 +2441,7 @@ typedef struct { * @note Removing a value that was never added is a no-op. */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_od_record_type_t record_type; es_string_token_t record_name; @@ -2346,6 +2449,7 @@ typedef struct { es_string_token_t attribute_value; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_attribute_value_remove_t; /** @@ -2355,16 +2459,17 @@ typedef struct { * @field error_code 0 indicates the operation succeeded. * Values inidicating specific failure reasons are defined in odconstants.h. * @field record_type The type of the record for which the attribute is being set. - * @field record_name The name of the record for which the attribute is being set. + * @field record_name The name of the record for which the attribute is being set. * @field attribute_name The name of the attribute that was set. * @field attribute_value_count The size of attribute_value_array. - * @field attribute_value_array Array of attribute values that were set. + * @field attribute_values Array of attribute values that were set. * @field node_name OD node being mutated. * Typically one of "/Local/Default", "/LDAPv3/" or * "/Active Directory/". * @field db_path Optional. If node_name is "/Local/Default", this is * the path of the database against which OD is * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). * @note Attributes conceptually have the type `Map String (Set String)`. @@ -2373,111 +2478,121 @@ typedef struct { * @note The new set of attribute values may be empty. */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_od_record_type_t record_type; es_string_token_t record_name; es_string_token_t attribute_name; size_t attribute_value_count; - es_string_token_t * _Nullable attribute_values; + es_string_token_t *_Nullable attribute_values; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_attribute_set_t; /** * @brief Notification that a user account was created. * - * @field instigator Process that instigated operation (XPC caller). - * @field error_code 0 indicates the operation succeeded. - * Values inidicating specific failure reasons are defined in odconstants.h. - * @field user_name The name of the user account that was created. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field error_code 0 indicates the operation succeeded. + * Values inidicating specific failure reasons are defined in odconstants.h. + * @field user_name The name of the user account that was created. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_string_token_t user_name; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_create_user_t; /** * @brief Notification that a group was created. * - * @field instigator Process that instigated operation (XPC caller). - * @field error_code 0 indicates the operation succeeded. - * Values inidicating specific failure reasons are defined in odconstants.h. - * @field user_name The name of the group that was created. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field error_code 0 indicates the operation succeeded. + * Values inidicating specific failure reasons are defined in odconstants.h. + * @field group_name The name of the group that was created. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_string_token_t group_name; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_create_group_t; /** * @brief Notification that a user account was deleted. * - * @field instigator Process that instigated operation (XPC caller). - * @field error_code 0 indicates the operation succeeded. - * Values inidicating specific failure reasons are defined in odconstants.h. - * @field user_name The name of the user account that was deleted. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field error_code 0 indicates the operation succeeded. + * Values inidicating specific failure reasons are defined in odconstants.h. + * @field user_name The name of the user account that was deleted. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_string_token_t user_name; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_delete_user_t; /** * @brief Notification that a group was deleted. * - * @field instigator Process that instigated operation (XPC caller). - * @field error_code 0 indicates the operation succeeded. - * Values inidicating specific failure reasons are defined in odconstants.h. - * @field user_name The name of the group that was deleted. - * @field node_name OD node being mutated. - * Typically one of "/Local/Default", "/LDAPv3/" or - * "/Active Directory/". - * @field db_path Optional. If node_name is "/Local/Default", this is - * the path of the database against which OD is - * authenticating. + * @field instigator Process that instigated operation (XPC caller). + * @field error_code 0 indicates the operation succeeded. + * Values inidicating specific failure reasons are defined in odconstants.h. + * @field group_name The name of the group that was deleted. + * @field node_name OD node being mutated. + * Typically one of "/Local/Default", "/LDAPv3/" or + * "/Active Directory/". + * @field db_path Optional. If node_name is "/Local/Default", this is + * the path of the database against which OD is + * authenticating. + * @field instigator_token Audit token of the process that instigated this event. + * * * @note This event type does not support caching (notify-only). */ typedef struct { - es_process_t * _Nonnull instigator; + es_process_t *_Nullable instigator; int error_code; es_string_token_t group_name; es_string_token_t node_name; es_string_token_t db_path; + audit_token_t instigator_token; // Available in msg versions >= 8. } es_event_od_delete_group_t; /** @@ -2493,6 +2608,30 @@ typedef struct { es_xpc_domain_type_t service_domain_type; } es_event_xpc_connect_t; +/** + * @brief Notification for a gatekeeper_user_override events. + * + * @field file_type The type of the file field. If Endpoint security can't lookup the file at event + * submission it will emit a path instead of an es_file_t + * @field file Describes the target file that is being overridden by the user + * @field sha256 SHA256 of the file. Provided if the filesize is less than 100MB. + * @field signing_info Signing Information, available if the file has been signed. + * + * @note This event type does not support caching (notify-only). + * @note Hashes are calculated in usermode by Gatekeeper. There is no guarantee that any other program including the + * kernel will observe the same file at the reported path. Furthermore there is no guarantee that the CDHash + * is valid or that it matches the containing binary. + */ +typedef struct { + es_gatekeeper_user_override_file_type_t file_type; + union { + es_string_token_t file_path; + es_file_t *_Nonnull file; + } file; + es_sha256_t *_Nullable sha256; + es_signed_file_info_t *_Nullable signing_info; +} es_event_gatekeeper_user_override_t; + /** * Union of all possible events that can appear in an es_message_t */ @@ -2571,41 +2710,43 @@ typedef union { /** * Events added in macOS 13.0 or later use nonnull pointers. */ - es_event_authentication_t * _Nonnull authentication; - es_event_xp_malware_detected_t * _Nonnull xp_malware_detected; - es_event_xp_malware_remediated_t * _Nonnull xp_malware_remediated; - es_event_lw_session_login_t * _Nonnull lw_session_login; - es_event_lw_session_logout_t * _Nonnull lw_session_logout; - es_event_lw_session_lock_t * _Nonnull lw_session_lock; - es_event_lw_session_unlock_t * _Nonnull lw_session_unlock; - es_event_screensharing_attach_t * _Nonnull screensharing_attach; - es_event_screensharing_detach_t * _Nonnull screensharing_detach; - es_event_openssh_login_t * _Nonnull openssh_login; - es_event_openssh_logout_t * _Nonnull openssh_logout; - es_event_login_login_t * _Nonnull login_login; - es_event_login_logout_t * _Nonnull login_logout; - es_event_btm_launch_item_add_t * _Nonnull btm_launch_item_add; - es_event_btm_launch_item_remove_t * _Nonnull btm_launch_item_remove; - es_event_profile_add_t * _Nonnull profile_add; - es_event_profile_remove_t * _Nonnull profile_remove; - es_event_su_t * _Nonnull su; - es_event_authorization_petition_t * _Nonnull authorization_petition; - es_event_authorization_judgement_t * _Nonnull authorization_judgement; - es_event_sudo_t * _Nonnull sudo; - es_event_od_group_add_t * _Nonnull od_group_add; - es_event_od_group_remove_t * _Nonnull od_group_remove; - es_event_od_group_set_t * _Nonnull od_group_set; - es_event_od_modify_password_t * _Nonnull od_modify_password; - es_event_od_disable_user_t * _Nonnull od_disable_user; - es_event_od_enable_user_t * _Nonnull od_enable_user; - es_event_od_attribute_value_add_t * _Nonnull od_attribute_value_add; - es_event_od_attribute_value_remove_t * _Nonnull od_attribute_value_remove; - es_event_od_attribute_set_t * _Nonnull od_attribute_set; - es_event_od_create_user_t * _Nonnull od_create_user; - es_event_od_create_group_t * _Nonnull od_create_group; - es_event_od_delete_user_t * _Nonnull od_delete_user; - es_event_od_delete_group_t * _Nonnull od_delete_group; - es_event_xpc_connect_t * _Nonnull xpc_connect; + es_event_authentication_t *_Nonnull authentication; + es_event_xp_malware_detected_t *_Nonnull xp_malware_detected; + es_event_xp_malware_remediated_t *_Nonnull xp_malware_remediated; + es_event_lw_session_login_t *_Nonnull lw_session_login; + es_event_lw_session_logout_t *_Nonnull lw_session_logout; + es_event_lw_session_lock_t *_Nonnull lw_session_lock; + es_event_lw_session_unlock_t *_Nonnull lw_session_unlock; + es_event_screensharing_attach_t *_Nonnull screensharing_attach; + es_event_screensharing_detach_t *_Nonnull screensharing_detach; + es_event_openssh_login_t *_Nonnull openssh_login; + es_event_openssh_logout_t *_Nonnull openssh_logout; + es_event_login_login_t *_Nonnull login_login; + es_event_login_logout_t *_Nonnull login_logout; + es_event_btm_launch_item_add_t *_Nonnull btm_launch_item_add; + es_event_btm_launch_item_remove_t *_Nonnull btm_launch_item_remove; + es_event_profile_add_t *_Nonnull profile_add; + es_event_profile_remove_t *_Nonnull profile_remove; + es_event_su_t *_Nonnull su; + es_event_authorization_petition_t *_Nonnull authorization_petition; + es_event_authorization_judgement_t *_Nonnull authorization_judgement; + es_event_sudo_t *_Nonnull sudo; + es_event_od_group_add_t *_Nonnull od_group_add; + es_event_od_group_remove_t *_Nonnull od_group_remove; + es_event_od_group_set_t *_Nonnull od_group_set; + es_event_od_modify_password_t *_Nonnull od_modify_password; + es_event_od_disable_user_t *_Nonnull od_disable_user; + es_event_od_enable_user_t *_Nonnull od_enable_user; + es_event_od_attribute_value_add_t *_Nonnull od_attribute_value_add; + es_event_od_attribute_value_remove_t *_Nonnull od_attribute_value_remove; + es_event_od_attribute_set_t *_Nonnull od_attribute_set; + es_event_od_create_user_t *_Nonnull od_create_user; + es_event_od_create_group_t *_Nonnull od_create_group; + es_event_od_delete_user_t *_Nonnull od_delete_user; + es_event_od_delete_group_t *_Nonnull od_delete_group; + es_event_xpc_connect_t *_Nonnull xpc_connect; + es_event_gatekeeper_user_override_t *_Nonnull gatekeeper_user_override; + es_event_tcc_modify_t *_Nonnull tcc_modify; } es_events_t; /** @@ -2703,7 +2844,7 @@ typedef struct { struct timespec time; uint64_t mach_time; uint64_t deadline; - es_process_t * _Nonnull process; + es_process_t *_Nonnull process; uint64_t seq_num; /* field available only if message version >= 2 */ es_action_type_t action_type; union { @@ -2712,9 +2853,9 @@ typedef struct { } action; es_event_type_t event_type; es_events_t event; - es_thread_t * _Nullable thread; /* field available only if message version >= 4 */ - uint64_t global_seq_num; /* field available only if message version >= 4 */ - uint64_t opaque[]; /* Opaque data that must not be accessed directly */ + es_thread_t *_Nullable thread; /* field available only if message version >= 4 */ + uint64_t global_seq_num; /* field available only if message version >= 4 */ + uint64_t opaque[]; /* Opaque data that must not be accessed directly */ } es_message_t; __BEGIN_DECLS @@ -2732,10 +2873,14 @@ __BEGIN_DECLS * @return Size of the message */ OS_EXPORT -API_DEPRECATED("Please use es_retain_message to retain a message. Do not use this in conjunction with attempting to copy a message, doing so will result in use-after-free bugs.", macos(10.15, 11.0)) -API_UNAVAILABLE(ios, tvos, watchos) -size_t -es_message_size(const es_message_t * _Nonnull msg); +API_DEPRECATED( + "Please use es_retain_message to retain a message. Do not use this in conjunction with attempting to copy a message, doing " + "so will result in use-after-free bugs.", + macos(10.15, 11.0), + ios(18.0, 18.0) +) +API_UNAVAILABLE(tvos, watchos) +size_t es_message_size(const es_message_t *_Nonnull msg); /** * Retains an es_message_t, returning a non-const pointer to the given es_message_t for compatibility with @@ -2754,8 +2899,7 @@ es_message_size(const es_message_t * _Nonnull msg); OS_EXPORT API_DEPRECATED("Use es_retain_message to retain a message.", macos(10.15, 11.0)) API_UNAVAILABLE(ios, tvos, watchos) -es_message_t * _Nullable -es_copy_message(const es_message_t * _Nonnull msg); +es_message_t *_Nullable es_copy_message(const es_message_t *_Nonnull msg); /** * Releases the memory associated with the given es_message_t that was retained via `es_copy_message` @@ -2767,8 +2911,7 @@ es_copy_message(const es_message_t * _Nonnull msg); OS_EXPORT API_DEPRECATED("Use es_release_message to release a message.", macos(10.15, 11.0)) API_UNAVAILABLE(ios, tvos, watchos) -void -es_free_message(es_message_t * _Nonnull msg); +void es_free_message(es_message_t *_Nonnull msg); /** * Retains the given es_message_t, extending its lifetime until released with `es_release_message`. @@ -2779,9 +2922,8 @@ es_free_message(es_message_t * _Nonnull msg); * `es_new_client` will be processed asynchronously. */ OS_EXPORT -API_AVAILABLE(macos(11.0)) API_UNAVAILABLE(ios, tvos, watchos) -void -es_retain_message(const es_message_t * _Nonnull msg); +API_AVAILABLE(macos(11.0)) +API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos) void es_retain_message(const es_message_t *_Nonnull msg); /** * Releases the given es_message_t that was previously retained with `es_retain_message` @@ -2789,9 +2931,8 @@ es_retain_message(const es_message_t * _Nonnull msg); * @param msg The message to be released */ OS_EXPORT -API_AVAILABLE(macos(11.0)) API_UNAVAILABLE(ios, tvos, watchos) -void -es_release_message(const es_message_t * _Nonnull msg); +API_AVAILABLE(macos(11.0)) +API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos) void es_release_message(const es_message_t *_Nonnull msg); /** * Get the number of arguments in a message containing an es_event_exec_t @@ -2799,9 +2940,8 @@ es_release_message(const es_message_t * _Nonnull msg); * @return The number of arguments */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -uint32_t -es_exec_arg_count(const es_event_exec_t * _Nonnull event); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos) uint32_t es_exec_arg_count(const es_event_exec_t *_Nonnull event); /** * Get the number of environment variables in a message containing an es_event_exec_t @@ -2809,9 +2949,8 @@ es_exec_arg_count(const es_event_exec_t * _Nonnull event); * @return The number of environment variables */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -uint32_t -es_exec_env_count(const es_event_exec_t * _Nonnull event); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos) uint32_t es_exec_env_count(const es_event_exec_t *_Nonnull event); /** * Get the number of file descriptors in a message containing an es_event_exec_t @@ -2819,9 +2958,8 @@ es_exec_env_count(const es_event_exec_t * _Nonnull event); * @return The number of file descriptors */ OS_EXPORT -API_AVAILABLE(macos(11.0)) API_UNAVAILABLE(ios, tvos, watchos) -uint32_t -es_exec_fd_count(const es_event_exec_t * _Nonnull event); +API_AVAILABLE(macos(11.0)) +API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos) uint32_t es_exec_fd_count(const es_event_exec_t *_Nonnull event); /** * Get the argument at the specified position in the message containing an es_event_exec_t @@ -2832,9 +2970,9 @@ es_exec_fd_count(const es_event_exec_t * _Nonnull event); * @brief Reading an an argument where `index` >= `es_exec_arg_count()` is undefined */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_string_token_t -es_exec_arg(const es_event_exec_t * _Nonnull event, uint32_t index); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) es_string_token_t es_exec_arg(const es_event_exec_t *_Nonnull event, uint32_t index); /** * Get the environment variable at the specified position in the message containing an es_event_exec_t @@ -2845,9 +2983,9 @@ es_exec_arg(const es_event_exec_t * _Nonnull event, uint32_t index); * @brief Reading an an env where `index` >= `es_exec_env_count()` is undefined */ OS_EXPORT -API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos) -es_string_token_t -es_exec_env(const es_event_exec_t * _Nonnull event, uint32_t index); +API_AVAILABLE(macos(10.15)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) es_string_token_t es_exec_env(const es_event_exec_t *_Nonnull event, uint32_t index); /** * Get the file descriptor at the specified position in the message containing an es_event_exec_t @@ -2858,9 +2996,9 @@ es_exec_env(const es_event_exec_t * _Nonnull event, uint32_t index); * @note Reading an fd where `index` >= `es_exec_fd_count()` is undefined */ OS_EXPORT -API_AVAILABLE(macos(11.0)) API_UNAVAILABLE(ios, tvos, watchos) -const es_fd_t * _Nonnull -es_exec_fd(const es_event_exec_t * _Nonnull event, uint32_t index); +API_AVAILABLE(macos(11.0)) +API_UNAVAILABLE(ios) +API_UNAVAILABLE(tvos, watchos) const es_fd_t *_Nonnull es_exec_fd(const es_event_exec_t *_Nonnull event, uint32_t index); /** * This typedef is no longer used, but exists for API backwards compatibility. diff --git a/include/EndpointSecurity/ESTypes.h b/include/EndpointSecurity/ESTypes.h index 34c667a3..f70d4c8e 100644 --- a/include/EndpointSecurity/ESTypes.h +++ b/include/EndpointSecurity/ESTypes.h @@ -1,10 +1,10 @@ #ifndef __ENDPOINT_SECURITY_TYPES_H #define __ENDPOINT_SECURITY_TYPES_H -#include -#include -#include #include +#include +#include +#include #include typedef struct { @@ -12,13 +12,13 @@ typedef struct { } es_event_id_t; typedef enum { - ES_ACTION_TYPE_AUTH - , ES_ACTION_TYPE_NOTIFY + ES_ACTION_TYPE_AUTH, + ES_ACTION_TYPE_NOTIFY } es_action_type_t; typedef enum { - ES_SET - , ES_CLEAR + ES_SET, + ES_CLEAR } es_set_or_clear_t; /** @@ -33,13 +33,13 @@ typedef enum { ES_PROC_CHECK_TYPE_LISTPIDS = 0x1, ES_PROC_CHECK_TYPE_PIDINFO = 0x2, ES_PROC_CHECK_TYPE_PIDFDINFO = 0x3, - ES_PROC_CHECK_TYPE_KERNMSGBUF = 0x4, // deprecated, not generated + ES_PROC_CHECK_TYPE_KERNMSGBUF = 0x4, // deprecated, not generated ES_PROC_CHECK_TYPE_SETCONTROL = 0x5, ES_PROC_CHECK_TYPE_PIDFILEPORTINFO = 0x6, - ES_PROC_CHECK_TYPE_TERMINATE = 0x7, // deprecated, not generated + ES_PROC_CHECK_TYPE_TERMINATE = 0x7, // deprecated, not generated ES_PROC_CHECK_TYPE_DIRTYCONTROL = 0x8, ES_PROC_CHECK_TYPE_PIDRUSAGE = 0x9, - ES_PROC_CHECK_TYPE_UDATA_INFO = 0xe, // deprecated, not generated + ES_PROC_CHECK_TYPE_UDATA_INFO = 0xe, // deprecated, not generated } es_proc_check_type_t; /** @@ -71,6 +71,18 @@ typedef enum { ES_AUTHENTICATION_TYPE_LAST } es_authentication_type_t; +/** + * @brief This enum describes the type of plugin types in sudo + */ +typedef enum { + ES_SUDO_PLUGIN_TYPE_UNKNOWN, + ES_SUDO_PLUGIN_TYPE_FRONT_END, + ES_SUDO_PLUGIN_TYPE_POLICY, + ES_SUDO_PLUGIN_TYPE_IO, + ES_SUDO_PLUGIN_TYPE_AUDIT, + ES_SUDO_PLUGIN_TYPE_APPROVAL, +} es_sudo_plugin_type_t; + /** * The valid event types recognized by EndpointSecurity * @@ -84,165 +96,178 @@ typedef enum { * must use es_respond_auth_result. */ typedef enum { - // The following events are available beginning in macOS 10.15 - ES_EVENT_TYPE_AUTH_EXEC - , ES_EVENT_TYPE_AUTH_OPEN - , ES_EVENT_TYPE_AUTH_KEXTLOAD - , ES_EVENT_TYPE_AUTH_MMAP - , ES_EVENT_TYPE_AUTH_MPROTECT - , ES_EVENT_TYPE_AUTH_MOUNT - , ES_EVENT_TYPE_AUTH_RENAME - , ES_EVENT_TYPE_AUTH_SIGNAL - , ES_EVENT_TYPE_AUTH_UNLINK - , ES_EVENT_TYPE_NOTIFY_EXEC - , ES_EVENT_TYPE_NOTIFY_OPEN - , ES_EVENT_TYPE_NOTIFY_FORK - , ES_EVENT_TYPE_NOTIFY_CLOSE - , ES_EVENT_TYPE_NOTIFY_CREATE - , ES_EVENT_TYPE_NOTIFY_EXCHANGEDATA - , ES_EVENT_TYPE_NOTIFY_EXIT - , ES_EVENT_TYPE_NOTIFY_GET_TASK - , ES_EVENT_TYPE_NOTIFY_KEXTLOAD - , ES_EVENT_TYPE_NOTIFY_KEXTUNLOAD - , ES_EVENT_TYPE_NOTIFY_LINK - , ES_EVENT_TYPE_NOTIFY_MMAP - , ES_EVENT_TYPE_NOTIFY_MPROTECT - , ES_EVENT_TYPE_NOTIFY_MOUNT - , ES_EVENT_TYPE_NOTIFY_UNMOUNT - , ES_EVENT_TYPE_NOTIFY_IOKIT_OPEN - , ES_EVENT_TYPE_NOTIFY_RENAME - , ES_EVENT_TYPE_NOTIFY_SETATTRLIST - , ES_EVENT_TYPE_NOTIFY_SETEXTATTR - , ES_EVENT_TYPE_NOTIFY_SETFLAGS - , ES_EVENT_TYPE_NOTIFY_SETMODE - , ES_EVENT_TYPE_NOTIFY_SETOWNER - , ES_EVENT_TYPE_NOTIFY_SIGNAL - , ES_EVENT_TYPE_NOTIFY_UNLINK - , ES_EVENT_TYPE_NOTIFY_WRITE - , ES_EVENT_TYPE_AUTH_FILE_PROVIDER_MATERIALIZE - , ES_EVENT_TYPE_NOTIFY_FILE_PROVIDER_MATERIALIZE - , ES_EVENT_TYPE_AUTH_FILE_PROVIDER_UPDATE - , ES_EVENT_TYPE_NOTIFY_FILE_PROVIDER_UPDATE - , ES_EVENT_TYPE_AUTH_READLINK - , ES_EVENT_TYPE_NOTIFY_READLINK - , ES_EVENT_TYPE_AUTH_TRUNCATE - , ES_EVENT_TYPE_NOTIFY_TRUNCATE - , ES_EVENT_TYPE_AUTH_LINK - , ES_EVENT_TYPE_NOTIFY_LOOKUP - , ES_EVENT_TYPE_AUTH_CREATE - , ES_EVENT_TYPE_AUTH_SETATTRLIST - , ES_EVENT_TYPE_AUTH_SETEXTATTR - , ES_EVENT_TYPE_AUTH_SETFLAGS - , ES_EVENT_TYPE_AUTH_SETMODE - , ES_EVENT_TYPE_AUTH_SETOWNER - // The following events are available beginning in macOS 10.15.1 - , ES_EVENT_TYPE_AUTH_CHDIR - , ES_EVENT_TYPE_NOTIFY_CHDIR - , ES_EVENT_TYPE_AUTH_GETATTRLIST - , ES_EVENT_TYPE_NOTIFY_GETATTRLIST - , ES_EVENT_TYPE_NOTIFY_STAT - , ES_EVENT_TYPE_NOTIFY_ACCESS - , ES_EVENT_TYPE_AUTH_CHROOT - , ES_EVENT_TYPE_NOTIFY_CHROOT - , ES_EVENT_TYPE_AUTH_UTIMES - , ES_EVENT_TYPE_NOTIFY_UTIMES - , ES_EVENT_TYPE_AUTH_CLONE - , ES_EVENT_TYPE_NOTIFY_CLONE - , ES_EVENT_TYPE_NOTIFY_FCNTL - , ES_EVENT_TYPE_AUTH_GETEXTATTR - , ES_EVENT_TYPE_NOTIFY_GETEXTATTR - , ES_EVENT_TYPE_AUTH_LISTEXTATTR - , ES_EVENT_TYPE_NOTIFY_LISTEXTATTR - , ES_EVENT_TYPE_AUTH_READDIR - , ES_EVENT_TYPE_NOTIFY_READDIR - , ES_EVENT_TYPE_AUTH_DELETEEXTATTR - , ES_EVENT_TYPE_NOTIFY_DELETEEXTATTR - , ES_EVENT_TYPE_AUTH_FSGETPATH - , ES_EVENT_TYPE_NOTIFY_FSGETPATH - , ES_EVENT_TYPE_NOTIFY_DUP - , ES_EVENT_TYPE_AUTH_SETTIME - , ES_EVENT_TYPE_NOTIFY_SETTIME - , ES_EVENT_TYPE_NOTIFY_UIPC_BIND - , ES_EVENT_TYPE_AUTH_UIPC_BIND - , ES_EVENT_TYPE_NOTIFY_UIPC_CONNECT - , ES_EVENT_TYPE_AUTH_UIPC_CONNECT - , ES_EVENT_TYPE_AUTH_EXCHANGEDATA - , ES_EVENT_TYPE_AUTH_SETACL - , ES_EVENT_TYPE_NOTIFY_SETACL + // The following events are available beginning in macOS 10.15 + ES_EVENT_TYPE_AUTH_EXEC, + ES_EVENT_TYPE_AUTH_OPEN, + ES_EVENT_TYPE_AUTH_KEXTLOAD, + ES_EVENT_TYPE_AUTH_MMAP, + ES_EVENT_TYPE_AUTH_MPROTECT, + ES_EVENT_TYPE_AUTH_MOUNT, + ES_EVENT_TYPE_AUTH_RENAME, + ES_EVENT_TYPE_AUTH_SIGNAL, + ES_EVENT_TYPE_AUTH_UNLINK, + ES_EVENT_TYPE_NOTIFY_EXEC, + ES_EVENT_TYPE_NOTIFY_OPEN, + ES_EVENT_TYPE_NOTIFY_FORK, + ES_EVENT_TYPE_NOTIFY_CLOSE, + ES_EVENT_TYPE_NOTIFY_CREATE, + ES_EVENT_TYPE_NOTIFY_EXCHANGEDATA, + ES_EVENT_TYPE_NOTIFY_EXIT, + ES_EVENT_TYPE_NOTIFY_GET_TASK, + ES_EVENT_TYPE_NOTIFY_KEXTLOAD, + ES_EVENT_TYPE_NOTIFY_KEXTUNLOAD, + ES_EVENT_TYPE_NOTIFY_LINK, + ES_EVENT_TYPE_NOTIFY_MMAP, + ES_EVENT_TYPE_NOTIFY_MPROTECT, + ES_EVENT_TYPE_NOTIFY_MOUNT, + ES_EVENT_TYPE_NOTIFY_UNMOUNT, + ES_EVENT_TYPE_NOTIFY_IOKIT_OPEN, + ES_EVENT_TYPE_NOTIFY_RENAME, + ES_EVENT_TYPE_NOTIFY_SETATTRLIST, + ES_EVENT_TYPE_NOTIFY_SETEXTATTR, + ES_EVENT_TYPE_NOTIFY_SETFLAGS, + ES_EVENT_TYPE_NOTIFY_SETMODE, + ES_EVENT_TYPE_NOTIFY_SETOWNER, + ES_EVENT_TYPE_NOTIFY_SIGNAL, + ES_EVENT_TYPE_NOTIFY_UNLINK, + ES_EVENT_TYPE_NOTIFY_WRITE, + ES_EVENT_TYPE_AUTH_FILE_PROVIDER_MATERIALIZE, + ES_EVENT_TYPE_NOTIFY_FILE_PROVIDER_MATERIALIZE, + ES_EVENT_TYPE_AUTH_FILE_PROVIDER_UPDATE, + ES_EVENT_TYPE_NOTIFY_FILE_PROVIDER_UPDATE, + ES_EVENT_TYPE_AUTH_READLINK, + ES_EVENT_TYPE_NOTIFY_READLINK, + ES_EVENT_TYPE_AUTH_TRUNCATE, + ES_EVENT_TYPE_NOTIFY_TRUNCATE, + ES_EVENT_TYPE_AUTH_LINK, + ES_EVENT_TYPE_NOTIFY_LOOKUP, + ES_EVENT_TYPE_AUTH_CREATE, + ES_EVENT_TYPE_AUTH_SETATTRLIST, + ES_EVENT_TYPE_AUTH_SETEXTATTR, + ES_EVENT_TYPE_AUTH_SETFLAGS, + ES_EVENT_TYPE_AUTH_SETMODE, + ES_EVENT_TYPE_AUTH_SETOWNER, + + // The following events are available beginning in macOS 10.15.1 + ES_EVENT_TYPE_AUTH_CHDIR, + ES_EVENT_TYPE_NOTIFY_CHDIR, + ES_EVENT_TYPE_AUTH_GETATTRLIST, + ES_EVENT_TYPE_NOTIFY_GETATTRLIST, + ES_EVENT_TYPE_NOTIFY_STAT, + ES_EVENT_TYPE_NOTIFY_ACCESS, + ES_EVENT_TYPE_AUTH_CHROOT, + ES_EVENT_TYPE_NOTIFY_CHROOT, + ES_EVENT_TYPE_AUTH_UTIMES, + ES_EVENT_TYPE_NOTIFY_UTIMES, + ES_EVENT_TYPE_AUTH_CLONE, + ES_EVENT_TYPE_NOTIFY_CLONE, + ES_EVENT_TYPE_NOTIFY_FCNTL, + ES_EVENT_TYPE_AUTH_GETEXTATTR, + ES_EVENT_TYPE_NOTIFY_GETEXTATTR, + ES_EVENT_TYPE_AUTH_LISTEXTATTR, + ES_EVENT_TYPE_NOTIFY_LISTEXTATTR, + ES_EVENT_TYPE_AUTH_READDIR, + ES_EVENT_TYPE_NOTIFY_READDIR, + ES_EVENT_TYPE_AUTH_DELETEEXTATTR, + ES_EVENT_TYPE_NOTIFY_DELETEEXTATTR, + ES_EVENT_TYPE_AUTH_FSGETPATH, + ES_EVENT_TYPE_NOTIFY_FSGETPATH, + ES_EVENT_TYPE_NOTIFY_DUP, + ES_EVENT_TYPE_AUTH_SETTIME, + ES_EVENT_TYPE_NOTIFY_SETTIME, + ES_EVENT_TYPE_NOTIFY_UIPC_BIND, + ES_EVENT_TYPE_AUTH_UIPC_BIND, + ES_EVENT_TYPE_NOTIFY_UIPC_CONNECT, + ES_EVENT_TYPE_AUTH_UIPC_CONNECT, + ES_EVENT_TYPE_AUTH_EXCHANGEDATA, + ES_EVENT_TYPE_AUTH_SETACL, + ES_EVENT_TYPE_NOTIFY_SETACL, + // The following events are available beginning in macOS 10.15.4 - , ES_EVENT_TYPE_NOTIFY_PTY_GRANT - , ES_EVENT_TYPE_NOTIFY_PTY_CLOSE - , ES_EVENT_TYPE_AUTH_PROC_CHECK - , ES_EVENT_TYPE_NOTIFY_PROC_CHECK - , ES_EVENT_TYPE_AUTH_GET_TASK + ES_EVENT_TYPE_NOTIFY_PTY_GRANT, + ES_EVENT_TYPE_NOTIFY_PTY_CLOSE, + ES_EVENT_TYPE_AUTH_PROC_CHECK, + ES_EVENT_TYPE_NOTIFY_PROC_CHECK, + ES_EVENT_TYPE_AUTH_GET_TASK, + // The following events are available beginning in macOS 11.0 - , ES_EVENT_TYPE_AUTH_SEARCHFS - , ES_EVENT_TYPE_NOTIFY_SEARCHFS - , ES_EVENT_TYPE_AUTH_FCNTL - , ES_EVENT_TYPE_AUTH_IOKIT_OPEN - , ES_EVENT_TYPE_AUTH_PROC_SUSPEND_RESUME - , ES_EVENT_TYPE_NOTIFY_PROC_SUSPEND_RESUME - , ES_EVENT_TYPE_NOTIFY_CS_INVALIDATED - , ES_EVENT_TYPE_NOTIFY_GET_TASK_NAME - , ES_EVENT_TYPE_NOTIFY_TRACE - , ES_EVENT_TYPE_NOTIFY_REMOTE_THREAD_CREATE - , ES_EVENT_TYPE_AUTH_REMOUNT - , ES_EVENT_TYPE_NOTIFY_REMOUNT + ES_EVENT_TYPE_AUTH_SEARCHFS, + ES_EVENT_TYPE_NOTIFY_SEARCHFS, + ES_EVENT_TYPE_AUTH_FCNTL, + ES_EVENT_TYPE_AUTH_IOKIT_OPEN, + ES_EVENT_TYPE_AUTH_PROC_SUSPEND_RESUME, + ES_EVENT_TYPE_NOTIFY_PROC_SUSPEND_RESUME, + ES_EVENT_TYPE_NOTIFY_CS_INVALIDATED, + ES_EVENT_TYPE_NOTIFY_GET_TASK_NAME, + ES_EVENT_TYPE_NOTIFY_TRACE, + ES_EVENT_TYPE_NOTIFY_REMOTE_THREAD_CREATE, + ES_EVENT_TYPE_AUTH_REMOUNT, + ES_EVENT_TYPE_NOTIFY_REMOUNT, + // The following events are available beginning in macOS 11.3 - , ES_EVENT_TYPE_AUTH_GET_TASK_READ - , ES_EVENT_TYPE_NOTIFY_GET_TASK_READ - , ES_EVENT_TYPE_NOTIFY_GET_TASK_INSPECT + ES_EVENT_TYPE_AUTH_GET_TASK_READ, + ES_EVENT_TYPE_NOTIFY_GET_TASK_READ, + ES_EVENT_TYPE_NOTIFY_GET_TASK_INSPECT, + // The following events are available beginning in macOS 12.0 - , ES_EVENT_TYPE_NOTIFY_SETUID - , ES_EVENT_TYPE_NOTIFY_SETGID - , ES_EVENT_TYPE_NOTIFY_SETEUID - , ES_EVENT_TYPE_NOTIFY_SETEGID - , ES_EVENT_TYPE_NOTIFY_SETREUID - , ES_EVENT_TYPE_NOTIFY_SETREGID - , ES_EVENT_TYPE_AUTH_COPYFILE - , ES_EVENT_TYPE_NOTIFY_COPYFILE + ES_EVENT_TYPE_NOTIFY_SETUID, + ES_EVENT_TYPE_NOTIFY_SETGID, + ES_EVENT_TYPE_NOTIFY_SETEUID, + ES_EVENT_TYPE_NOTIFY_SETEGID, + ES_EVENT_TYPE_NOTIFY_SETREUID, + ES_EVENT_TYPE_NOTIFY_SETREGID, + ES_EVENT_TYPE_AUTH_COPYFILE, + ES_EVENT_TYPE_NOTIFY_COPYFILE, + // The following events are available beginning in macOS 13.0 - , ES_EVENT_TYPE_NOTIFY_AUTHENTICATION - , ES_EVENT_TYPE_NOTIFY_XP_MALWARE_DETECTED - , ES_EVENT_TYPE_NOTIFY_XP_MALWARE_REMEDIATED - , ES_EVENT_TYPE_NOTIFY_LW_SESSION_LOGIN - , ES_EVENT_TYPE_NOTIFY_LW_SESSION_LOGOUT - , ES_EVENT_TYPE_NOTIFY_LW_SESSION_LOCK - , ES_EVENT_TYPE_NOTIFY_LW_SESSION_UNLOCK - , ES_EVENT_TYPE_NOTIFY_SCREENSHARING_ATTACH - , ES_EVENT_TYPE_NOTIFY_SCREENSHARING_DETACH - , ES_EVENT_TYPE_NOTIFY_OPENSSH_LOGIN - , ES_EVENT_TYPE_NOTIFY_OPENSSH_LOGOUT - , ES_EVENT_TYPE_NOTIFY_LOGIN_LOGIN - , ES_EVENT_TYPE_NOTIFY_LOGIN_LOGOUT - , ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD - , ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_REMOVE + ES_EVENT_TYPE_NOTIFY_AUTHENTICATION, + ES_EVENT_TYPE_NOTIFY_XP_MALWARE_DETECTED, + ES_EVENT_TYPE_NOTIFY_XP_MALWARE_REMEDIATED, + ES_EVENT_TYPE_NOTIFY_LW_SESSION_LOGIN, + ES_EVENT_TYPE_NOTIFY_LW_SESSION_LOGOUT, + ES_EVENT_TYPE_NOTIFY_LW_SESSION_LOCK, + ES_EVENT_TYPE_NOTIFY_LW_SESSION_UNLOCK, + ES_EVENT_TYPE_NOTIFY_SCREENSHARING_ATTACH, + ES_EVENT_TYPE_NOTIFY_SCREENSHARING_DETACH, + ES_EVENT_TYPE_NOTIFY_OPENSSH_LOGIN, + ES_EVENT_TYPE_NOTIFY_OPENSSH_LOGOUT, + ES_EVENT_TYPE_NOTIFY_LOGIN_LOGIN, + ES_EVENT_TYPE_NOTIFY_LOGIN_LOGOUT, + ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD, + ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_REMOVE, + // The following events are available beginning in macOS 14.0 - , ES_EVENT_TYPE_NOTIFY_PROFILE_ADD - , ES_EVENT_TYPE_NOTIFY_PROFILE_REMOVE - , ES_EVENT_TYPE_NOTIFY_SU - , ES_EVENT_TYPE_NOTIFY_AUTHORIZATION_PETITION - , ES_EVENT_TYPE_NOTIFY_AUTHORIZATION_JUDGEMENT - , ES_EVENT_TYPE_NOTIFY_SUDO - , ES_EVENT_TYPE_NOTIFY_OD_GROUP_ADD - , ES_EVENT_TYPE_NOTIFY_OD_GROUP_REMOVE - , ES_EVENT_TYPE_NOTIFY_OD_GROUP_SET - , ES_EVENT_TYPE_NOTIFY_OD_MODIFY_PASSWORD - , ES_EVENT_TYPE_NOTIFY_OD_DISABLE_USER - , ES_EVENT_TYPE_NOTIFY_OD_ENABLE_USER - , ES_EVENT_TYPE_NOTIFY_OD_ATTRIBUTE_VALUE_ADD - , ES_EVENT_TYPE_NOTIFY_OD_ATTRIBUTE_VALUE_REMOVE - , ES_EVENT_TYPE_NOTIFY_OD_ATTRIBUTE_SET - , ES_EVENT_TYPE_NOTIFY_OD_CREATE_USER - , ES_EVENT_TYPE_NOTIFY_OD_CREATE_GROUP - , ES_EVENT_TYPE_NOTIFY_OD_DELETE_USER - , ES_EVENT_TYPE_NOTIFY_OD_DELETE_GROUP - , ES_EVENT_TYPE_NOTIFY_XPC_CONNECT + ES_EVENT_TYPE_NOTIFY_PROFILE_ADD, + ES_EVENT_TYPE_NOTIFY_PROFILE_REMOVE, + ES_EVENT_TYPE_NOTIFY_SU, + ES_EVENT_TYPE_NOTIFY_AUTHORIZATION_PETITION, + ES_EVENT_TYPE_NOTIFY_AUTHORIZATION_JUDGEMENT, + ES_EVENT_TYPE_NOTIFY_SUDO, + ES_EVENT_TYPE_NOTIFY_OD_GROUP_ADD, + ES_EVENT_TYPE_NOTIFY_OD_GROUP_REMOVE, + ES_EVENT_TYPE_NOTIFY_OD_GROUP_SET, + ES_EVENT_TYPE_NOTIFY_OD_MODIFY_PASSWORD, + ES_EVENT_TYPE_NOTIFY_OD_DISABLE_USER, + ES_EVENT_TYPE_NOTIFY_OD_ENABLE_USER, + ES_EVENT_TYPE_NOTIFY_OD_ATTRIBUTE_VALUE_ADD, + ES_EVENT_TYPE_NOTIFY_OD_ATTRIBUTE_VALUE_REMOVE, + ES_EVENT_TYPE_NOTIFY_OD_ATTRIBUTE_SET, + ES_EVENT_TYPE_NOTIFY_OD_CREATE_USER, + ES_EVENT_TYPE_NOTIFY_OD_CREATE_GROUP, + ES_EVENT_TYPE_NOTIFY_OD_DELETE_USER, + ES_EVENT_TYPE_NOTIFY_OD_DELETE_GROUP, + ES_EVENT_TYPE_NOTIFY_XPC_CONNECT, + + // The following events are available beginning in macOS 15.0 + ES_EVENT_TYPE_NOTIFY_GATEKEEPER_USER_OVERRIDE, + + // The following events are available beginning in macOS 15.4 + ES_EVENT_TYPE_NOTIFY_TCC_MODIFY, // ES_EVENT_TYPE_LAST is not a valid event type but a convenience // value for operating on the range of defined event types. // This value may change between releases and was available // beginning in macOS 10.15 - , ES_EVENT_TYPE_LAST + ES_EVENT_TYPE_LAST } es_event_type_t; /** @@ -250,9 +275,9 @@ typedef enum { */ typedef enum { /// The event is authorized and should be allowed to continue - ES_AUTH_RESULT_ALLOW - /// The event is not authorized and should be blocked - , ES_AUTH_RESULT_DENY + ES_AUTH_RESULT_ALLOW, + /// The event is not authorized and should be blocked + ES_AUTH_RESULT_DENY } es_auth_result_t; /** @@ -260,74 +285,94 @@ typedef enum { */ typedef enum { /// The result is an auth result - ES_RESULT_TYPE_AUTH - /// The result is a flags result - , ES_RESULT_TYPE_FLAGS + ES_RESULT_TYPE_AUTH, + /// The result is a flags result + ES_RESULT_TYPE_FLAGS } es_result_type_t; /** @brief Return value for functions that can only fail in one way */ typedef enum { - ES_RETURN_SUCCESS - , ES_RETURN_ERROR + ES_RETURN_SUCCESS, + ES_RETURN_ERROR } es_return_t; /** @brief Error conditions for responding to a message */ typedef enum { - ES_RESPOND_RESULT_SUCCESS - ///One or more invalid arguments were provided - , ES_RESPOND_RESULT_ERR_INVALID_ARGUMENT - ///Communication with the ES subsystem failed - , ES_RESPOND_RESULT_ERR_INTERNAL - ///The message being responded to could not be found - , ES_RESPOND_RESULT_NOT_FOUND - ///The provided message has been responded to more than once - , ES_RESPOND_RESULT_ERR_DUPLICATE_RESPONSE - ///Either an inappropriate response API was used for the event type (ensure using proper - ///es_respond_auth_result or es_respond_flags_result function) or the event is notification only. - , ES_RESPOND_RESULT_ERR_EVENT_TYPE + ES_RESPOND_RESULT_SUCCESS, + /// One or more invalid arguments were provided + ES_RESPOND_RESULT_ERR_INVALID_ARGUMENT, + /// Communication with the ES subsystem failed + ES_RESPOND_RESULT_ERR_INTERNAL, + /// The message being responded to could not be found + ES_RESPOND_RESULT_NOT_FOUND, + /// The provided message has been responded to more than once + ES_RESPOND_RESULT_ERR_DUPLICATE_RESPONSE, + /// Either an inappropriate response API was used for the event type (ensure using proper + /// es_respond_auth_result or es_respond_flags_result function) or the event is notification only. + ES_RESPOND_RESULT_ERR_EVENT_TYPE } es_respond_result_t; /** @brief Error conditions for creating a new client */ typedef enum { - ES_NEW_CLIENT_RESULT_SUCCESS + ES_NEW_CLIENT_RESULT_SUCCESS, /// One or more invalid arguments were provided. - , ES_NEW_CLIENT_RESULT_ERR_INVALID_ARGUMENT + ES_NEW_CLIENT_RESULT_ERR_INVALID_ARGUMENT, /// Communication with the ES subsystem failed, or other error condition. - , ES_NEW_CLIENT_RESULT_ERR_INTERNAL + ES_NEW_CLIENT_RESULT_ERR_INTERNAL, /// The caller is not properly entitled to connect. - , ES_NEW_CLIENT_RESULT_ERR_NOT_ENTITLED + ES_NEW_CLIENT_RESULT_ERR_NOT_ENTITLED, /// The caller lacks Transparency, Consent, and Control (TCC) approval from the user. - , ES_NEW_CLIENT_RESULT_ERR_NOT_PERMITTED + ES_NEW_CLIENT_RESULT_ERR_NOT_PERMITTED, /// The caller is not running as root. - , ES_NEW_CLIENT_RESULT_ERR_NOT_PRIVILEGED + ES_NEW_CLIENT_RESULT_ERR_NOT_PRIVILEGED, /// The caller has reached the maximum number of allowed simultaneously connected clients. - , ES_NEW_CLIENT_RESULT_ERR_TOO_MANY_CLIENTS + ES_NEW_CLIENT_RESULT_ERR_TOO_MANY_CLIENTS } es_new_client_result_t; /** @brief Error conditions for clearing the authorisation caches */ typedef enum { - ES_CLEAR_CACHE_RESULT_SUCCESS - ///Communication with the ES subsystem failed - , ES_CLEAR_CACHE_RESULT_ERR_INTERNAL - ///Rate of calls is too high. Slow down. - , ES_CLEAR_CACHE_RESULT_ERR_THROTTLE + ES_CLEAR_CACHE_RESULT_SUCCESS, + /// Communication with the ES subsystem failed + ES_CLEAR_CACHE_RESULT_ERR_INTERNAL, + /// Rate of calls is too high. Slow down. + ES_CLEAR_CACHE_RESULT_ERR_THROTTLE } es_clear_cache_result_t; +/** + * @brief Binary CDHash + * + * The Code Directory Hash (CDHash) is a hash of hashes, covering a macho or an entire application bundle. + * The Code Directory contains the hash of each executable page in the main executable. Only when: + * + * - The subject process has opted into the hardened runtime (CS_HARD/CS_KILL) + * - The subject process is not being debugged + * - The subject process is running + * + * is it guaranteed that the ES provided cdhash value matches the binary observed by the kernel and that the + * pages actually executed have not been modified. + */ +typedef uint8_t es_cdhash_t[20]; + +/** + * @brief Binary Sha256 Digest + */ +typedef uint8_t es_sha256_t[32]; + /** * @brief Structure buffer with size */ typedef struct { // Size of the `data` field in bytes size_t size; - const uint8_t * data; + const uint8_t *data; } es_token_t; /** @@ -336,7 +381,7 @@ typedef struct { typedef struct { // Length of the `data` field. Equivalent to strlen(). size_t length; - const char * data; + const char *data; } es_string_token_t; /* @@ -344,13 +389,13 @@ typedef struct { */ typedef enum { /// Value to describe a path prefix - ES_MUTE_PATH_TYPE_PREFIX + ES_MUTE_PATH_TYPE_PREFIX, /// Value to describe a path literal - , ES_MUTE_PATH_TYPE_LITERAL + ES_MUTE_PATH_TYPE_LITERAL, /// Value to describe a target path prefix - , ES_MUTE_PATH_TYPE_TARGET_PREFIX + ES_MUTE_PATH_TYPE_TARGET_PREFIX, /// Value to describe a target path literal - , ES_MUTE_PATH_TYPE_TARGET_LITERAL + ES_MUTE_PATH_TYPE_TARGET_LITERAL } es_mute_path_type_t; /* @@ -418,39 +463,39 @@ typedef enum { } es_address_type_t; typedef enum { - ES_MUTE_INVERSION_TYPE_PROCESS - , ES_MUTE_INVERSION_TYPE_PATH - , ES_MUTE_INVERSION_TYPE_TARGET_PATH - , ES_MUTE_INVERSION_TYPE_LAST + ES_MUTE_INVERSION_TYPE_PROCESS, + ES_MUTE_INVERSION_TYPE_PATH, + ES_MUTE_INVERSION_TYPE_TARGET_PATH, + ES_MUTE_INVERSION_TYPE_LAST } es_mute_inversion_type_t; typedef enum { - /// The type of muted queried was inverted - ES_MUTE_INVERTED - /// The type of muted queried was not inverted - , ES_MUTE_NOT_INVERTED - /// There was an error querying mute inversion state - , ES_MUTE_INVERTED_ERROR + /// The type of muted queried was inverted + ES_MUTE_INVERTED, + /// The type of muted queried was not inverted + ES_MUTE_NOT_INVERTED, + /// There was an error querying mute inversion state + ES_MUTE_INVERTED_ERROR } es_mute_inverted_return_t; /* * The class of rules used to evaluate the petition for a specific authorization right */ typedef enum { - /// Right is judged on user properties - ES_AUTHORIZATION_RULE_CLASS_USER - /// Right is judged by a tree of sub-rules -, ES_AUTHORIZATION_RULE_CLASS_RULE - /// Right is judged by one or more plugins -, ES_AUTHORIZATION_RULE_CLASS_MECHANISM - /// Right is always granted -, ES_AUTHORIZATION_RULE_CLASS_ALLOW - /// Right is always denied -, ES_AUTHORIZATION_RULE_CLASS_DENY - /// Right is unknown -, ES_AUTHORIZATION_RULE_CLASS_UNKNOWN - /// Right is invalid -, ES_AUTHORIZATION_RULE_CLASS_INVALID + /// Right is judged on user properties + ES_AUTHORIZATION_RULE_CLASS_USER, + /// Right is judged by a tree of sub-rules + ES_AUTHORIZATION_RULE_CLASS_RULE, + /// Right is judged by one or more plugins + ES_AUTHORIZATION_RULE_CLASS_MECHANISM, + /// Right is always granted + ES_AUTHORIZATION_RULE_CLASS_ALLOW, + /// Right is always denied + ES_AUTHORIZATION_RULE_CLASS_DENY, + /// Right is unknown + ES_AUTHORIZATION_RULE_CLASS_UNKNOWN, + /// Right is invalid + ES_AUTHORIZATION_RULE_CLASS_INVALID } es_authorization_rule_class_t; // The following types are used in OpenDirectory (od) events @@ -459,28 +504,116 @@ typedef enum { */ typedef enum { /// Group member is a user, designated by name - ES_OD_MEMBER_TYPE_USER_NAME + ES_OD_MEMBER_TYPE_USER_NAME, /// Group member is a user, designated by UUID -, ES_OD_MEMBER_TYPE_USER_UUID + ES_OD_MEMBER_TYPE_USER_UUID, /// Group member is another group, designated by UUID -, ES_OD_MEMBER_TYPE_GROUP_UUID + ES_OD_MEMBER_TYPE_GROUP_UUID } es_od_member_type_t; /* * Type of an account */ typedef enum { - ES_OD_ACCOUNT_TYPE_USER -, ES_OD_ACCOUNT_TYPE_COMPUTER + ES_OD_ACCOUNT_TYPE_USER, + ES_OD_ACCOUNT_TYPE_COMPUTER } es_od_account_type_t; /* * Type of a record */ typedef enum { - ES_OD_RECORD_TYPE_USER -, ES_OD_RECORD_TYPE_GROUP + ES_OD_RECORD_TYPE_USER, + ES_OD_RECORD_TYPE_GROUP } es_od_record_type_t; // end od types +typedef enum { + /// Signals that file is a string of a path since file could not be resolved on disk at time of event submission + ES_GATEKEEPER_USER_OVERRIDE_FILE_TYPE_PATH, + /// Signals that file is a es_file_t + ES_GATEKEEPER_USER_OVERRIDE_FILE_TYPE_FILE +} es_gatekeeper_user_override_file_type_t; + +/* + * Information from a signed file. If the file is a multiarchitecture binary, only the + * signing information for the native host architecture is reported. I.e. the CDHash + * from the AArch64 slice if the host is AArch64. + * + * @field cdhash Code Directory Hash + * @field teamID Team Identifier, if available in the signing information. + * @field signingID Signing Identifier, if available in the signing information. + */ +typedef struct { + es_cdhash_t cdhash; + es_string_token_t signing_id; + es_string_token_t team_id; +} es_signed_file_info_t; + +/** + * @typedef ess_tcc_event_type_t + * + * Represent the type of TCC modification event. + * + * - ES_TCC_EVENT_TYPE_UNKNOWN: Unknown prior state. + * - ES_TCC_EVENT_TYPE_CREATE: A new TCC authorization record was created. + * - ES_TCC_EVENT_TYPE_MODIFY: An existing TCC authorization record was modified. + * - ES_TCC_EVENT_TYPE_DELETE: An existing TCC authorization record was deleted. + */ +typedef enum { + ES_TCC_EVENT_TYPE_UNKNOWN, + ES_TCC_EVENT_TYPE_CREATE, + ES_TCC_EVENT_TYPE_MODIFY, + ES_TCC_EVENT_TYPE_DELETE, +} es_tcc_event_type_t; + +/** + * ess_tcc_authorization_right_t + * + * Represents the type of authorization permission an application has to a TCC Service. + */ +typedef enum { + ES_TCC_AUTHORIZATION_RIGHT_DENIED, // 0 + ES_TCC_AUTHORIZATION_RIGHT_UNKNOWN, // 1 + ES_TCC_AUTHORIZATION_RIGHT_ALLOWED, // 2 + ES_TCC_AUTHORIZATION_RIGHT_LIMITED, // 3 + ES_TCC_AUTHORIZATION_RIGHT_ADD_MODIFY_ADDED, // 4 + ES_TCC_AUTHORIZATION_RIGHT_SESSION_PID, // 5 + ES_TCC_AUTHORIZATION_RIGHT_LEARN_MORE, // 6 +} es_tcc_authorization_right_t; + +/** + * ess_tcc_authorization_reason_t + * + * Represents the reason a TCC permission was updated. + */ +typedef enum { + ES_TCC_AUTHORIZATION_REASON_NONE = 0, + ES_TCC_AUTHORIZATION_REASON_ERROR, + ES_TCC_AUTHORIZATION_REASON_USER_CONSENT, /// User answered a prompt + ES_TCC_AUTHORIZATION_REASON_USER_SET, /// User changed the authorization right via Preferences + ES_TCC_AUTHORIZATION_REASON_SYSTEM_SET, /// A system process changed the authorization right + ES_TCC_AUTHORIZATION_REASON_SERVICE_POLICY, + ES_TCC_AUTHORIZATION_REASON_MDM_POLICY, + ES_TCC_AUTHORIZATION_REASON_SERVICE_OVERRIDE_POLICY, + ES_TCC_AUTHORIZATION_REASON_MISSING_USAGE_STRING, + ES_TCC_AUTHORIZATION_REASON_PROMPT_TIMEOUT, + ES_TCC_AUTHORIZATION_REASON_PREFLIGHT_UNKNOWN, + ES_TCC_AUTHORIZATION_REASON_ENTITLED, + ES_TCC_AUTHORIZATION_REASON_APP_TYPE_POLICY, + ES_TCC_AUTHORIZATION_REASON_PROMPT_CANCEL, +} es_tcc_authorization_reason_t; + +/** + * es_tcc_identity_type_t + * + * Represent the identity type of an application which has access to a TCC service. + */ +typedef enum { + ES_TCC_IDENTITY_TYPE_BUNDLE_ID, + ES_TCC_IDENTITY_TYPE_EXECUTABLE_PATH, + ES_TCC_IDENTITY_TYPE_POLICY_ID, + ES_TCC_IDENTITY_TYPE_FILE_PROVIDER_DOMAIN_ID, +} es_tcc_identity_type_t; + #endif /* __ENDPOINT_SECURITY_TYPES_H */ diff --git a/include/EndpointSecurity/EndpointSecurity.h b/include/EndpointSecurity/EndpointSecurity.h index c328c6ef..27b29514 100644 --- a/include/EndpointSecurity/EndpointSecurity.h +++ b/include/EndpointSecurity/EndpointSecurity.h @@ -5,8 +5,11 @@ #define __ENDPOINT_SECURITY_INDIRECT__ 1 #endif +// Include types first #include + #include + #include #undef __ENDPOINT_SECURITY_INDIRECT__ diff --git a/include/MacTypes.h b/include/MacTypes.h index 135fad0f..a23f9259 100644 --- a/include/MacTypes.h +++ b/include/MacTypes.h @@ -37,10 +37,12 @@ #ifndef __MACTYPES__ #define __MACTYPES__ -#ifndef __CONDITIONALMACROS__ +#if __has_include() #include #endif +#include + #include #include @@ -153,7 +155,7 @@ typedef struct UnsignedWide UnsignedWide; #endif -#if TYPE_LONGLONG +#if TYPE_LONGLONG || 0 /* Note: wide and UnsignedWide must always be structs for source code compatibility. On the other hand UInt64 and SInt64 can be @@ -178,7 +180,7 @@ typedef struct UnsignedWide UnsignedWide; typedef wide SInt64; typedef UnsignedWide UInt64; -#endif /* TYPE_LONGLONG */ +#endif /******************************************************************************** @@ -307,6 +309,8 @@ typedef ResType * ResTypePtr; *********************************************************************************/ typedef unsigned char Boolean; + +#if !0 /******************************************************************************** Function Pointer Types @@ -330,6 +334,8 @@ typedef ProcPtr UniversalProcPtr; typedef ProcPtr * ProcHandle; typedef UniversalProcPtr * UniversalProcHandle; +#endif + /******************************************************************************** RefCon Types @@ -691,6 +697,8 @@ typedef UnsignedWide * UnsignedWidePtr; typedef Float80 extended80; typedef Float96 extended96; typedef SInt8 VHSelect; + +#if !0 /********************************************************************************* Debugger functions @@ -718,7 +726,7 @@ Debugger(void) __OSX_AVAILABLE_BU */ extern void DebugStr(ConstStr255Param debuggerMsg) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA); - +#endif /* * debugstr() diff --git a/include/Spatial/Base.h b/include/Spatial/Base.h index 3a72fd8b..77c551c0 100644 --- a/include/Spatial/Base.h +++ b/include/Spatial/Base.h @@ -6,6 +6,9 @@ // Returns `true` if `x` and `y` are equal within `SPDefaultTolerance` #define _sp_almost_equal(x, y) (fabs((x) - (y)) < SPDefaultTolerance) +// Returns `true` if `x` and `y` are equal within specified tolerance +#define _sp_almost_equal_tolerance(x, y, tolerance) (fabs((x) - (y)) < tolerance) + // Returns `true` if the square matrix `x` is orthogonal. #define _sp_is_orthogonal(x, identity) simd_almost_equal_elements(simd_mul((x), simd_transpose((x))), (identity), SPDefaultTolerance) @@ -77,4 +80,16 @@ #define _sp_simd_asin asin #endif +#ifdef __cplusplus +#define _sp_simd_atan ::__tg_atan +#else +#define _sp_simd_atan atan +#endif + +#ifdef __cplusplus +#define _sp_simd_acos ::__tg_acos +#else +#define _sp_simd_acos acos +#endif + #endif /* Spatial_Base_h */ diff --git a/include/Spatial/SPAffineTransform3D.h b/include/Spatial/SPAffineTransform3D.h index f0c94d0a..ac629cb8 100644 --- a/include/Spatial/SPAffineTransform3D.h +++ b/include/Spatial/SPAffineTransform3D.h @@ -9,7 +9,7 @@ // MARK: - Creating an affine transform /*! - @abstract Returns a new affine transform structure from the specified 4x3 matrix. + @abstract Returns a new affine transform structure from the specified 4 x 3 matrix. @param matrix The source matrix. @returns A new affine transform structure. @@ -30,6 +30,22 @@ SPATIAL_INLINE SPATIAL_OVERLOADABLE SPAffineTransform3D SPAffineTransform3DMakeWith4x4Matrix(simd_double4x4 matrix) __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); +__API_DEPRECATED("Use `SPAffineTransform3DMakeWithTruncated4x4Matrix` instead.", + macos(13.0, 15.0), + ios(16.0, 18.0), + watchos(9.0, 11.0), + tvos(16.0, 18.0)); + +/*! + @abstract Returns a new affine transform structure from the specified 4 x 4 matrix truncated to a 4 x 3 matrix. + + @param matrix The source matrix. + @returns A new affine transform structure. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPAffineTransform3D SPAffineTransform3DMakeWithTruncated4x4Matrix(simd_double4x4 matrix) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); /*! @abstract Returns a new affine transform structure from the specified projective transform. @@ -42,7 +58,11 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); SPATIAL_INLINE SPATIAL_OVERLOADABLE SPAffineTransform3D SPAffineTransform3DMakeWithProjective(SPProjectiveTransform3D transform) -__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); +__API_DEPRECATED("Use `SPAffineTransform3DMakeWithTruncatedProjective` instead.", + macos(13.0, 15.0), + ios(16.0, 18.0), + watchos(9.0, 11.0), + tvos(16.0, 18.0)); /*! @abstract Returns a new affine transform structure from the first three rows of the specified projective transform. @@ -574,6 +594,23 @@ SPAffineTransform3D SPAffineTransform3DMakeWithTruncatedProjective(SPProjectiveT return affine; } +SPATIAL_SWIFT_NAME(AffineTransform3D.init(truncating:)) +SPATIAL_OVERLOADABLE +SPAffineTransform3D SPAffineTransform3DMakeWithTruncated4x4Matrix(simd_double4x4 matrix) { + + simd_double3 column0 = matrix.columns[0].xyz; + simd_double3 column1 = matrix.columns[1].xyz; + simd_double3 column2 = matrix.columns[2].xyz; + simd_double3 column3 = matrix.columns[3].xyz; + + SPAffineTransform3D affine = { .matrix = simd_matrix(column0, + column1, + column2, + column3) }; + + return affine; +} + SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPAffineTransform3D SPAffineTransform3DMakeWith4x4Matrix(simd_double4x4 matrix) { @@ -643,7 +680,7 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPAffineTransform3D SPAffineTransform3DMakeTranslation(SPSize3D translation) { - SPVector3D v = (SPVector3D) { .vector = translation.vector }; + SPVector3D v = SPVector3DMakeWithVector(translation.vector); return SPAffineTransform3DMakeTranslation(v); } @@ -670,7 +707,7 @@ SPAffineTransform3D SPAffineTransform3DMake(SPSize3D scale, SPRotation3D rotation, SPSize3D translation) { - SPVector3D v = (SPVector3D){ .vector = translation.vector }; + SPVector3D v = SPVector3DMakeWithVector(translation.vector); return SPAffineTransform3DMake(scale, rotation, v); } @@ -900,7 +937,7 @@ SPSize3D SPAffineTransform3DGetScale(SPAffineTransform3D transform) { simd_double3 signedScale = scale * sign; - return (SPSize3D){ signedScale.x, signedScale.y, signedScale.z}; + return SPSize3DMakeWithVector(signedScale); } SPATIAL_REFINED_FOR_SWIFT @@ -941,7 +978,7 @@ SPVector3D SPAffineTransform3DGetTranslation(SPAffineTransform3D transform) { simd_double3 translation = transform.matrix.columns[3]; - return (SPVector3D){ .vector = translation }; + return SPVector3DMakeWithVector(translation); } SPATIAL_REFINED_FOR_SWIFT @@ -950,7 +987,7 @@ SPVector3D SPAffineTransform3DGetOffset(SPAffineTransform3D transform) { simd_double3 translation = transform.matrix.columns[3]; - return (SPVector3D){ .vector = translation }; + return SPVector3DMakeWithVector(translation.x); } SPATIAL_REFINED_FOR_SWIFT @@ -989,7 +1026,7 @@ SPATIAL_OVERLOADABLE SPAffineTransform3D SPAffineTransform3DScaleBy(SPAffineTransform3D transform, double x, double y, double z) { - SPSize3D scale = (SPSize3D){x, y, z}; + SPSize3D scale = SPSize3DMake(x, y, z); SPAffineTransform3D scaleTransform = SPAffineTransform3DMakeScale(scale); return SPAffineTransform3DConcatenation(transform, scaleTransform); @@ -1009,7 +1046,7 @@ SPATIAL_OVERLOADABLE SPAffineTransform3D SPAffineTransform3DScaleUniform(SPAffineTransform3D transform, double scale) { - SPSize3D scaleSize = (SPSize3D){scale, scale, scale}; + SPSize3D scaleSize = SPSize3DMake(scale, scale, scale); SPAffineTransform3D scaleTransform = SPAffineTransform3DMakeScale(scaleSize); return SPAffineTransform3DConcatenation(transform, scaleTransform); @@ -1152,11 +1189,72 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPAffineTransform3D SPAffineTransform3DMakeWithPose(SPPose3D pose) { + + return SPAffineTransform3DMake(SPSize3DMake(1, 1, 1), + pose.rotation, + SPVector3DMakeWithVector(pose.position.vector)); + +} - return SPAffineTransform3DMake((SPSize3D){ 1, 1, 1}, +/*! + @abstract Returns a new affine transform structure from the specified scaled pose structure. + + @param pose The source scaled pose. + @returns A new affine transform structure. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPAffineTransform3D SPAffineTransform3DMakeWithScaledPose(SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPAffineTransform3D SPAffineTransform3DMakeWithScaledPose(SPScaledPose3D pose) { + + return SPAffineTransform3DMake(SPSize3DMake(pose.scale, pose.scale, pose.scale), pose.rotation, - (SPVector3D){ .vector = pose.position.vector }); + SPVector3DMakeWithVector(pose.position.vector)); +} + +// MARK: Change basis + +/*! + @abstract Returns a new affine transform structure by applying a change-of-basis. + @param transform The source transform. + @param from The old basis. + @param to The new basis. + @returns A new affine transform structure or `SPAffineTransform3DInvalid`. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPAffineTransform3D SPAffineTransform3DChangeBasis(SPAffineTransform3D transform, + SPAffineTransform3D from, + SPAffineTransform3D to) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPAffineTransform3D SPAffineTransform3DChangeBasis(SPAffineTransform3D transform, + SPAffineTransform3D from, + SPAffineTransform3D to) { + + SPAffineTransform3D fromInverted = SPAffineTransform3DInverted(from); + if (!SPAffineTransform3DIsValid(fromInverted)) { + return SPAffineTransform3DInvalid; + } + + SPAffineTransform3D toInverted = SPAffineTransform3DInverted(to); + if (!SPAffineTransform3DIsValid(toInverted)) { + return SPAffineTransform3DInvalid; + } + + // from * to.inverse * self * to * from.inverse + SPAffineTransform3D tx = SPAffineTransform3DConcatenation(from, toInverted); + tx = SPAffineTransform3DConcatenation(tx, transform); + tx = SPAffineTransform3DConcatenation(tx, to); + tx = SPAffineTransform3DConcatenation(tx, fromInverted); + + return tx; } #endif /* Spatial_SPAffineTransform3D_h */ diff --git a/include/Spatial/SPAngle.h b/include/Spatial/SPAngle.h index f961920b..74ca691c 100644 --- a/include/Spatial/SPAngle.h +++ b/include/Spatial/SPAngle.h @@ -342,7 +342,7 @@ double SPAngleTanh(SPAngle angle) { // MARK: - Normalization /*! - @abstract Returns the specified angle normalized to [-180°, 180.0°). + @abstract Returns the specified angle normalized to `(-π, π]` radians (`(-180°, 180.0°]`). @param angle The source angle. @returns The normalized angle. @@ -355,15 +355,16 @@ __API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)); SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPAngle SPAngleNormalize(SPAngle angle) { - - double radians = angle.radians; -#ifdef __cplusplus - radians = ::__tg_atan2(::__tg_sin(radians), ::__tg_cos(radians)); -#else - radians = atan2(sin(radians), cos(radians)); -#endif - + double radians = fmod(angle.radians, M_PI * 2); + + if (radians <= -M_PI) { + radians += M_PI * 2; + } + else if (radians > M_PI) { + radians -= M_PI * 2; + } + return SPAngleMakeWithRadians(radians); } diff --git a/include/Spatial/SPPoint3D.h b/include/Spatial/SPPoint3D.h index 902462eb..cb6c0b61 100644 --- a/include/Spatial/SPPoint3D.h +++ b/include/Spatial/SPPoint3D.h @@ -4,33 +4,10 @@ #include #include #include +#include // MARK: - Public API -/*! - @abstract Creates a point with the specified coordinates. - - @param x The x coordinate. - @param y The y coordinate. - @param z The z coordinate. - @returns A new point. -*/ -SPATIAL_INLINE -SPATIAL_OVERLOADABLE -SPPoint3D SPPoint3DMake(double x, double y, double z) -__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); - -/*! - @abstract Creates a point with coordinates specified as a 3-element SIMD vector. - - @param xyz The source vector. - @returns A new point. -*/ -SPATIAL_INLINE -SPATIAL_OVERLOADABLE -SPPoint3D SPPoint3DMakeWithVector(simd_double3 xyz) -__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); - /*! @abstract Creates a point with coordinates specified as a Spatial vector. @@ -255,28 +232,16 @@ simd_double3 SPPoint3DGetVector(SPPoint3D point) { return point.vector; } -SPATIAL_REFINED_FOR_SWIFT -SPATIAL_OVERLOADABLE -SPPoint3D SPPoint3DMake(double x, double y, double z) { - return (SPPoint3D){ .x = x, .y = y, .z = z }; -} - -SPATIAL_REFINED_FOR_SWIFT -SPATIAL_OVERLOADABLE -SPPoint3D SPPoint3DMakeWithVector(simd_double3 xyz) { - return (SPPoint3D){ .vector = xyz}; -} - SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPPoint3D SPPoint3DMakeWithVector(SPVector3D xyz) { - return (SPPoint3D){ .vector = xyz.vector}; + return SPPoint3DMake(xyz.vector.x, xyz.vector.y, xyz.vector.z); } SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPPoint3D SPPoint3DMakeWithSize(SPSize3D size) { - return (SPPoint3D){ .vector = size.vector}; + return SPPoint3DMake(size.vector.x, size.vector.y, size.vector.z); } SPATIAL_SWIFT_NAME(Point3D.rotated(self:by:)) @@ -294,10 +259,10 @@ SPPoint3D SPPoint3DRotateAroundPoint(SPPoint3D point, SPRotation3D rotation, SPP SPAffineTransform3D transform = SPAffineTransform3DMakeRotation(rotation); - point = (SPPoint3D){ .vector = point.vector - pivot.vector } ; + point = SPPoint3DMakeWithVector(point.vector - pivot.vector); point = SPPoint3DApplyAffineTransform(point, transform); - return (SPPoint3D){ .vector = point.vector + pivot.vector } ; + return SPPoint3DMakeWithVector(point.vector + pivot.vector); } SPATIAL_SWIFT_NAME(Point3D.rotated(self:by:)) @@ -324,14 +289,14 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPPoint3D SPPoint3DTranslate(SPPoint3D point, SPSize3D offset) { - return (SPPoint3D) { .vector = point.vector + offset.vector}; + return SPPoint3DMakeWithVector(point.vector + offset.vector); } SPATIAL_SWIFT_NAME(Point3D.translated(self:by:)) SPATIAL_OVERLOADABLE SPPoint3D SPPoint3DTranslate(SPPoint3D point, SPVector3D offset) { - return (SPPoint3D) { .vector = point.vector + offset.vector}; + return SPPoint3DMakeWithVector(point.vector + offset.vector); } SPATIAL_SWIFT_NAME(Point3D.rotation(self:to:)) @@ -380,7 +345,7 @@ SPPoint3D SPPoint3DApplyAffineTransform(SPPoint3D point, SPAffineTransform3D tra simd_double3 transformed = simd_mul(transform.matrix, rhs).xyz; - return (SPPoint3D){ .vector = transformed }; + return SPPoint3DMakeWithVector(transformed); } SPATIAL_SWIFT_NAME(Point3D.applying(self:_:)) @@ -391,7 +356,7 @@ SPPoint3D SPPoint3DApplyProjectiveTransform(SPPoint3D point, SPProjectiveTransfo simd_double3 transformed = simd_mul(transform.matrix, rhs).xyz; - return (SPPoint3D){ .vector = transformed }; + return SPPoint3DMakeWithVector(transformed); } SPATIAL_REFINED_FOR_SWIFT @@ -420,13 +385,10 @@ SPATIAL_OVERLOADABLE SPPoint3D SPPoint3DApplyPose(SPPoint3D point, SPPose3D pose) { - simd_double4 v = simd_make_double4(point.vector, 1); - simd_double4x4 m = simd_matrix4x4(pose.rotation.quaternion); - m.columns[3].xyz = pose.position.vector; - - simd_double3 transformed = simd_mul(m, v).xyz; + simd_double3 v = simd_act(pose.rotation.quaternion, point.vector); + v += pose.position.vector; - return (SPPoint3D){ .vector = transformed }; + return SPPoint3DMakeWithVector(v); } /*! @@ -447,14 +409,140 @@ SPATIAL_OVERLOADABLE SPPoint3D SPPoint3DUnapplyPose(SPPoint3D point, SPPose3D pose) { - simd_double4 v = simd_make_double4(point.vector, 1); - simd_double4x4 m = simd_matrix4x4(pose.rotation.quaternion); - m.columns[3].xyz = pose.position.vector; - m = simd_inverse(m); + simd_quatd invPoseRot = simd_inverse(pose.rotation.quaternion); + simd_double3 invPosePos = simd_act(invPoseRot, -pose.position.vector); + + simd_double3 v = simd_act(invPoseRot, point.vector); + v += invPosePos; + + return SPPoint3DMakeWithVector(v); +} + +// MARK: - Transform by Scaled Pose + +/*! + @abstract Returns a point that's transformed by the specified scaled pose. + + @param point The source point. + @param pose The scaled pose that the function applies to the point. + @returns The transformed point. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPPoint3D SPPoint3DApplyScaledPose(SPPoint3D point, + SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPPoint3D SPPoint3DApplyScaledPose(SPPoint3D point, + SPScaledPose3D pose) { + + simd_double3 v = point.vector * pose.scale; + v = simd_act(pose.rotation.quaternion, v); + v += pose.position.vector; + + return SPPoint3DMakeWithVector(v); +} + +/*! + @abstract Returns a point that's transformed by the inverse of the specified scaled pose. + + @param point The source point. + @param pose The pose that the function unapplies to the point. + @returns The transformed point. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPPoint3D SPPoint3DUnapplyScaledPose(SPPoint3D point, + SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPPoint3D SPPoint3DUnapplyScaledPose(SPPoint3D point, + SPScaledPose3D pose) { + + simd_quatd invPoseRot = simd_inverse(pose.rotation.quaternion); + simd_double3 invPosePos = simd_act(invPoseRot, -pose.position.vector); + + simd_double3 v = simd_act(invPoseRot, point.vector); + v += invPosePos; + v /= pose.scale; + + return SPPoint3DMakeWithVector(v); +} + +/*! + @abstract Returns a Boolean value that indicates whether the two points are equal within the specified default absolute tolerance. + + @param p1 The first point. + @param p2 The first point. + @returns A Boolean value that indicates whether the two points are equal within the specified default absolute tolerance. + @note The Spatial default tolerance is @p sqrt(__DBL_EPSILON__) . + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +bool SPPoint3DAlmostEqualToPoint(SPPoint3D p1, + SPPoint3D p2, + double tolerance) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_OVERLOADABLE +SPATIAL_REFINED_FOR_SWIFT +bool SPPoint3DAlmostEqualToPoint(SPPoint3D p1, + SPPoint3D p2, + double tolerance) { + + return _sp_almost_equal_tolerance(p1.x, p2.x, tolerance) && + _sp_almost_equal_tolerance(p1.y, p2.y, tolerance) && + _sp_almost_equal_tolerance(p1.z, p2.z, tolerance); +} + +/*! + @abstract Returns a Boolean value that indicates whether the two points are equal within the specified default absolute tolerance. + + @param p1 The first point. + @param p2 The first point. + @returns A Boolean value that indicates whether the two points are equal within the specified default absolute tolerance. + @note The Spatial default tolerance is @p sqrt(__DBL_EPSILON__) . + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +bool SPPoint3DAlmostEqualToPoint(SPPoint3D p1, + SPPoint3D p2) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_OVERLOADABLE +SPATIAL_REFINED_FOR_SWIFT +bool SPPoint3DAlmostEqualToPoint(SPPoint3D p1, + SPPoint3D p2) { - simd_double3 transformed = simd_mul(m, v).xyz; + return SPPoint3DAlmostEqualToPoint(p1, p2, SPDefaultTolerance); +} + +// MARK: - Spherical coordinate support + +/*! + @abstract Returns a Spatial point that represents the Cartesian coordinates of the specified spherical coordinates structure. + + @param coords The source spherical coordinates structure. + @returns A new point that contains the spherical coorddinates converted to Cartesian coordinates. +*/ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPPoint3D SPPoint3DMakeWithSphericalCoordinates(SPSphericalCoordinates3D coords) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPPoint3D SPPoint3DMakeWithSphericalCoordinates(SPSphericalCoordinates3D coords) { - return (SPPoint3D){ .vector = transformed }; + double x = coords.radius * SPAngleCos(coords.inclination) * SPAngleSin(coords.azimuth); + double y = coords.radius * SPAngleSin(coords.inclination); + double z = coords.radius * SPAngleCos(coords.inclination) * SPAngleCos(coords.azimuth); + + return SPPoint3DMake(x, y, z); } #endif /* Spatial_SPPoint3D_h */ diff --git a/include/Spatial/SPPose3D.h b/include/Spatial/SPPose3D.h index 56b40a15..344c3ee1 100644 --- a/include/Spatial/SPPose3D.h +++ b/include/Spatial/SPPose3D.h @@ -16,7 +16,14 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)) SPATIAL_REFINED_FOR_SWIFT static const SPPose3D SPPose3DIdentity = { - .position = (SPPoint3D){ 0, 0, 0 }, + .position = (SPPoint3D){ + 0, + 0, + 0, +#if !defined __swift__ + 1.0 +#endif + }, .rotation = (SPRotation3D) { .quaternion = (simd_quatd){ .vector = {0, 0, 0, 1} } @@ -68,7 +75,7 @@ SPPose3D SPPose3DMakeWithVector(simd_double3 position, simd_quatd rotation) { return (SPPose3D) { - .position.vector = position, + .position = SPPoint3DMakeWithVector(position), .rotation.quaternion = rotation }; } @@ -98,7 +105,7 @@ simd_double4x4 SPPose3DGet4x4Matrix(SPPose3D pose) { // MARK: - Comparing poses -/// Returns @p true if both rays are equal. +/// Returns @p true if both poses are equal. SPATIAL_INLINE SPATIAL_OVERLOADABLE bool SPPose3DEqualToPose(SPPose3D pose1, SPPose3D pose2) @@ -115,52 +122,58 @@ bool SPPose3DEqualToPose(SPPose3D pose1, SPPose3D pose2) { } /*! - @abstract Returns a Boolean value that indicates whether the two poses's matrices are equal within the Spatial default absolute tolerance. + @abstract Returns a Boolean value that indicates whether the two poses's matrices are equal within the specified absolute tolerance. @param p1 The first pose. @param p2 The first pose. - @returns A Boolean value that indicates whether the two pose's matrices are equal within the Spatial default absolute tolerance. + @returns A Boolean value that indicates whether the two pose's matrices are equal within the specified default absolute tolerance. @note The Spatial default tolerance is @p sqrt(__DBL_EPSILON__) . */ SPATIAL_INLINE SPATIAL_OVERLOADABLE bool SPPose3DAlmostEqualToPose(SPPose3D p1, - SPPose3D p2) + SPPose3D p2, + double tolerance) __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); SPATIAL_OVERLOADABLE SPATIAL_REFINED_FOR_SWIFT bool SPPose3DAlmostEqualToPose(SPPose3D p1, - SPPose3D p2) { + SPPose3D p2, + double tolerance) { - return simd_almost_equal_elements(SPPose3DGet4x4Matrix(p1), - SPPose3DGet4x4Matrix(p2), SPDefaultTolerance); + bool rotationIsEqual = _sp_almost_equal_tolerance(p1.rotation.quaternion.vector.x, p2.rotation.quaternion.vector.x, tolerance) && + _sp_almost_equal_tolerance(p1.rotation.quaternion.vector.y, p2.rotation.quaternion.vector.y, tolerance) && + _sp_almost_equal_tolerance(p1.rotation.quaternion.vector.z, p2.rotation.quaternion.vector.z, tolerance) && + _sp_almost_equal_tolerance(p1.rotation.quaternion.vector.w, p2.rotation.quaternion.vector.w, tolerance); + + bool positionIsEqual = _sp_almost_equal_tolerance(p1.position.x, p2.position.x, tolerance) && + _sp_almost_equal_tolerance(p1.position.y, p2.position.y, tolerance) && + _sp_almost_equal_tolerance(p1.position.z, p2.position.z, tolerance); + + return rotationIsEqual && positionIsEqual; } /*! - @abstract Returns a Boolean value that indicates whether the two poses's matrices are equal within the specfied default absolute tolerance. + @abstract Returns a Boolean value that indicates whether the two poses's matrices are equal within the Spatial default absolute tolerance. @param p1 The first pose. @param p2 The first pose. - @returns A Boolean value that indicates whether the two pose's matrices are equal within the specified default absolute tolerance. + @returns A Boolean value that indicates whether the two pose's matrices are equal within the Spatial default absolute tolerance. @note The Spatial default tolerance is @p sqrt(__DBL_EPSILON__) . */ SPATIAL_INLINE SPATIAL_OVERLOADABLE bool SPPose3DAlmostEqualToPose(SPPose3D p1, - SPPose3D p2, - double tolerance) + SPPose3D p2) __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); SPATIAL_OVERLOADABLE SPATIAL_REFINED_FOR_SWIFT bool SPPose3DAlmostEqualToPose(SPPose3D p1, - SPPose3D p2, - double tolerance) { + SPPose3D p2) { - return simd_almost_equal_elements(SPPose3DGet4x4Matrix(p1), - SPPose3DGet4x4Matrix(p2), - tolerance); + return SPPose3DAlmostEqualToPose(p1, p2, SPDefaultTolerance); } // MARK: - Comparing against identity @@ -231,7 +244,7 @@ SPATIAL_OVERLOADABLE SPPose3D SPPose3DMakeLookAt(SPPoint3D target, SPVector3D up) { - SPPoint3D position = (SPPoint3D){ .x = 0, .y = 0, .z = 0 }; + SPPoint3D position = SPPoint3DZero; return SPPose3DMakeLookAt(position, target, up); } @@ -253,9 +266,9 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPPose3D SPPose3DMakeLookAt(SPVector3D forward, SPVector3D up) { - SPPoint3D position = (SPPoint3D){ .x = 0, .y = 0, .z = 0 }; + SPPoint3D position = SPPoint3DZero; - SPPoint3D target = (SPPoint3D) { .vector = forward.vector }; + SPPoint3D target = SPPoint3DMakeWithVector(forward.vector); return SPPose3DMakeLookAt(position, target, up); } @@ -331,11 +344,11 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPPose3D SPPose3DGetInverse(SPPose3D pose) { + + simd_quatd q = simd_inverse(pose.rotation.quaternion); + simd_double3 p = simd_act(q, -pose.position.vector); - simd_double4x4 m = SPPose3DGet4x4Matrix(pose); - m = simd_inverse(m); - - return SPPose3DMakeWith4x4Matrix(m); + return SPPose3DMakeWithVector(p, q); } // MARK: - Returning the product of two poses @@ -356,10 +369,13 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPPose3D SPPose3DConcatenation(SPPose3D lhs, SPPose3D rhs) { - simd_double4x4 m = simd_mul(SPPose3DGet4x4Matrix(lhs), - SPPose3DGet4x4Matrix(rhs)); + simd_quatd q = simd_mul(lhs.rotation.quaternion, rhs.rotation.quaternion); + q = simd_normalize(q); + + simd_double3 p = simd_act(rhs.rotation.quaternion, lhs.position.vector); + p += rhs.position.vector; - return SPPose3DMakeWith4x4Matrix(m); + return SPPose3DMakeWithVector(p, q); } // MARK: - Rotation @@ -443,7 +459,7 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPPose3D SPPose3DTranslate(SPPose3D pose, SPSize3D offset) { return SPPose3DTranslate(pose, - (SPVector3D){ .vector = offset.vector } + SPVector3DMakeWithVector(offset.vector) ); } diff --git a/include/Spatial/SPProjectiveTransform3D.h b/include/Spatial/SPProjectiveTransform3D.h index 934ed105..657ec62c 100644 --- a/include/Spatial/SPProjectiveTransform3D.h +++ b/include/Spatial/SPProjectiveTransform3D.h @@ -86,7 +86,28 @@ SPProjectiveTransform3D SPProjectiveTransform3DMakeWithRightHandPerspective(doub double aspectRatio, double nearZ, double farZ) -__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); +__API_DEPRECATED("Use `SPAngle` variant of `SPProjectiveTransform3DMakeWithRightHandPerspective`.", + macos(13.0, 15.0), + ios(16.0, 18.0), + watchos(9.0, 11.0), + tvos(16.0, 18.0)); + +/*! + @abstract Returns a projective transform with right-hand side perspective. + + @param fovY The field of view angle on the @p y axis. + @param aspectRatio The aspect ratio. + @param nearZ The near @p z . + @param farZ The far @p z . + @returns A projective transform with right-hand side perspective. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPProjectiveTransform3D SPProjectiveTransform3DMakeWithRightHandPerspective(SPAngle fovY, + double aspectRatio, + double nearZ, + double farZ) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); /*! @abstract Returns a projective transform with right-hand side perspective. @@ -128,7 +149,30 @@ SPProjectiveTransform3D SPProjectiveTransform3DMakeWithRightHandPerspective(doub double nearZ, double farZ, bool reverseZ) -__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); +__API_DEPRECATED("Use `SPAngle` variant of `SPProjectiveTransform3DMakeWithRightHandPerspective`.", + macos(13.0, 15.0), + ios(16.0, 18.0), + watchos(9.0, 11.0), + tvos(16.0, 18.0)); + +/*! + @abstract Returns a projective transform with right-hand side perspective. + + @param fovY The field of view angle on the @p y axis. + @param aspectRatio The aspect ratio. + @param nearZ The near @p z . + @param farZ The far @p z . + @param reverseZ A Boolean value that specifies whether the matrix should use reverse z. + @returns A projective transform with right-hand side perspective. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPProjectiveTransform3D SPProjectiveTransform3DMakeWithRightHandPerspective(SPAngle fovY, + double aspectRatio, + double nearZ, + double farZ, + bool reverseZ) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); /*! @abstract Returns a projective transform from tangents for each side of its frustum. @@ -641,7 +685,7 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPProjectiveTransform3D SPProjectiveTransform3DMakeTranslation(SPSize3D translation) { - SPVector3D v = (SPVector3D){ .vector = translation.vector }; + SPVector3D v = SPVector3DMakeWithVector(translation.vector); return SPProjectiveTransform3DMakeTranslation(v); } @@ -670,7 +714,7 @@ SPProjectiveTransform3D SPProjectiveTransform3DMake(SPSize3D scale, SPRotation3D rotation, SPSize3D translation) { - SPVector3D v = (SPVector3D){ .vector = translation.vector }; + SPVector3D v = SPVector3DMakeWithVector(translation.vector); return SPProjectiveTransform3DMake(scale, rotation, v); } @@ -736,6 +780,16 @@ SPProjectiveTransform3D SPProjectiveTransform3DMakeWithRightHandPerspective(doub return SPProjectiveTransform3DMakeWithRightHandPerspective(fovyRadians, aspectRatio, nearZ, farZ, false); } +SPATIAL_SWIFT_NAME(ProjectiveTransform3D.init(fovY:aspectRatio:nearZ:farZ:)) +SPATIAL_OVERLOADABLE +SPProjectiveTransform3D SPProjectiveTransform3DMakeWithRightHandPerspective(SPAngle fovY, + double aspectRatio, + double nearZ, + double farZ) SPATIAL_OVERLOADABLE { + + return SPProjectiveTransform3DMakeWithRightHandPerspective(fovY.radians, aspectRatio, nearZ, farZ, false); +} + SPATIAL_SWIFT_NAME(ProjectiveTransform3D.init(fovyRadians:aspectRatio:nearZ:farZ:reverseZ:)) SPATIAL_OVERLOADABLE SPProjectiveTransform3D SPProjectiveTransform3DMakeWithRightHandPerspective(double fovyRadians, @@ -773,6 +827,16 @@ SPProjectiveTransform3D SPProjectiveTransform3DMakeWithRightHandPerspective(doub return transform; } +SPATIAL_SWIFT_NAME(ProjectiveTransform3D.init(fovY:aspectRatio:nearZ:farZ:reverseZ:)) +SPATIAL_OVERLOADABLE +SPProjectiveTransform3D SPProjectiveTransform3DMakeWithRightHandPerspective(SPAngle fovY, + double aspectRatio, + double nearZ, + double farZ, + bool reverseZ) SPATIAL_OVERLOADABLE { + return SPProjectiveTransform3DMakeWithRightHandPerspective(fovY.radians, aspectRatio, nearZ, farZ, reverseZ); +} + SPATIAL_SWIFT_NAME(ProjectiveTransform3D.init(leftTangent:rightTangent:topTangent:bottomTangent:nearZ:farZ:reverseZ:)) SPATIAL_OVERLOADABLE SPProjectiveTransform3D SPProjectiveTransform3DMakeFromTangents(double leftTangent, @@ -1034,7 +1098,7 @@ SPVector3D SPProjectiveTransform3DGetTranslation(SPProjectiveTransform3D transfo simd_double3 translation = transform.matrix.columns[3].xyz; - return (SPVector3D){ .vector = translation }; + return SPVector3DMakeWithVector(translation); } SPATIAL_REFINED_FOR_SWIFT @@ -1043,7 +1107,7 @@ SPVector3D SPProjectiveTransform3DGetOffset(SPProjectiveTransform3D transform) { simd_double3 translation = transform.matrix.columns[3].xyz; - return (SPVector3D){ .vector = translation }; + return SPVector3DMakeWithVector(translation); } SPATIAL_REFINED_FOR_SWIFT @@ -1082,7 +1146,7 @@ SPATIAL_OVERLOADABLE SPProjectiveTransform3D SPProjectiveTransform3DScaleBy(SPProjectiveTransform3D transform, double x, double y, double z) { - SPSize3D scale = (SPSize3D){x, y, z}; + SPSize3D scale = SPSize3DMake(x, y, z); SPProjectiveTransform3D scaleTransform = SPProjectiveTransform3DMakeScale(scale); return SPProjectiveTransform3DConcatenation(transform, scaleTransform); @@ -1101,7 +1165,7 @@ SPATIAL_SWIFT_NAME(ProjectiveTransform3D.uniformlyScaled(self:by:)) SPATIAL_OVERLOADABLE SPProjectiveTransform3D SPProjectiveTransform3DScaleUniform(SPProjectiveTransform3D transform, double scale) { - SPSize3D scaleSize = (SPSize3D){scale, scale, scale}; + SPSize3D scaleSize = SPSize3DMake(scale, scale, scale); SPProjectiveTransform3D scaleTransform = SPProjectiveTransform3DMakeScale(scaleSize); return SPProjectiveTransform3DConcatenation(transform, scaleTransform); @@ -1173,11 +1237,31 @@ SPProjectiveTransform3D SPProjectiveTransform3DFlip(SPProjectiveTransform3D tran // MARK: - make from pose +/*! + @abstract Returns a new projective transform structure from the specified scaled pose structure. + + @param pose The source scaled pose. + @returns A new projective transform structure. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPProjectiveTransform3D SPProjectiveTransform3DMakeWithScaledPose(SPScaledPose3D pose) +__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPProjectiveTransform3D SPProjectiveTransform3DMakeWithScaledPose(SPScaledPose3D pose) { + + return SPProjectiveTransform3DMake(SPSize3DMake(pose.scale, pose.scale, pose.scale), + pose.rotation, + SPVector3DMakeWithVector(pose.position.vector)); +} + /*! @abstract Returns a new projective transform structure from the specified pose structure. @param pose The source pose. - @returns A new projective + @returns A new projective transform structure. */ SPATIAL_INLINE SPATIAL_OVERLOADABLE @@ -1187,11 +1271,13 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPProjectiveTransform3D SPProjectiveTransform3DMakeWithPose(SPPose3D pose) { - - return SPProjectiveTransform3DMake((SPSize3D){ 1, 1, 1}, - pose.rotation, - (SPVector3D){ .vector = pose.position.vector }); - + + SPVector3D v = SPVector3DMakeWithVector(pose.position.vector); + + return SPProjectiveTransform3DMake(SPSize3DMake(1, 1, 1), + pose.rotation, + v); + } #endif /* Spatial_SPProjectiveTransform3D_h */ diff --git a/include/Spatial/SPRay3D.h b/include/Spatial/SPRay3D.h index fcd86c69..d6b02c6b 100644 --- a/include/Spatial/SPRay3D.h +++ b/include/Spatial/SPRay3D.h @@ -126,7 +126,7 @@ SPATIAL_OVERLOADABLE SPRay3D SPRay3DTranslate(SPRay3D ray, SPSize3D offset) { return SPRay3DTranslate( ray, - (SPVector3D){ .vector = offset.vector } + SPVector3DMakeWithVector(offset.vector) ); } @@ -177,6 +177,8 @@ SPRay3D SPRay3DRotateByQuaternion(SPRay3D ray, simd_quatd quaternion) { return SPRay3DRotate(ray, r); } +// MARK: - Transform by Pose + /*! @abstract Returns a ray that's transformed by the specified pose. @@ -198,11 +200,120 @@ SPRay3D SPRay3DApplyPose(SPRay3D ray, SPPose3D pose) { ray = SPRay3DRotate(ray, pose.rotation); - ray = SPRay3DTranslate(ray, (SPVector3D){ .vector = pose.position.vector}); + ray = SPRay3DTranslate(ray, + SPVector3DMakeWithVector(pose.position.vector)); + + return ray; +} + +/*! + @abstract Returns a ray that's transformed by the inverse of the specified pose. + + @param ray The source ray. + @param pose The pose that the function unapplies to the ray. + @returns The transformed ray. + @note This function rotates the ray's direction by the pose's rotation and offsets the ray's origin + by the pose's position. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPRay3D SPRay3DUnapplyPose(SPRay3D ray, + SPPose3D pose) +__API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPRay3D SPRay3DUnapplyPose(SPRay3D ray, + SPPose3D pose) { + + return SPRay3DMake(SPPoint3DUnapplyPose(ray.origin, pose), + SPVector3DUnapplyPose(ray.direction, pose)); + +} + +// MARK: - Transform by Scaled Pose + +/*! + @abstract Returns a ray that's transformed by the specified scaled pose. + + @param ray The source ray. + @param pose The scaled pose that the function applies to the ray. + @returns The transformed ray. + @note This function rotates the ray's direction by the pose's rotation and offsets the ray's origin + by the pose's position. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPRay3D SPRay3DApplyScaledPose(SPRay3D ray, + SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPRay3D SPRay3DApplyScaledPose(SPRay3D ray, + SPScaledPose3D pose) { + + ray = SPRay3DRotate(ray, pose.rotation); + ray.origin = SPPoint3DMakeWithVector(ray.origin.vector * pose.scale); + ray = SPRay3DTranslate(ray, + SPVector3DMakeWithVector(pose.position.vector)); return ray; } +/*! + @abstract Returns a ray that's transformed by the inverse of the specified scaled pose. + + @param ray The source ray. + @param pose The scaled pose that the function unapplies to the ray. + @returns The transformed ray. + @note This function rotates the ray's direction by the pose's rotation and offsets the ray's origin + by the pose's position. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPRay3D SPRay3DUnapplyScaledPose(SPRay3D ray, + SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPRay3D SPRay3DUnapplyScaledPose(SPRay3D ray, + SPScaledPose3D pose) { + + return SPRay3DMake(SPPoint3DUnapplyScaledPose(ray.origin, pose), + SPVector3DUnapplyScaledPose(ray.direction, pose)); + +} + +// MARK: - Test for intersection with sphere + +/*! + @abstract Returns a Boolean value that indicates whether the ray intersects a specified sphere. + + @param ray The ray. + @param sphereOrigin A point structure that defines the center of the sphere. + @param sphereRadius The radius of the sphere. + @returns A Boolean value that indicates whether the ray intersects the sphere. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +bool SPRay3DIntersectsSphere(SPRay3D ray, SPPoint3D sphereOrigin, double sphereRadius) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_SWIFT_NAME(Ray3D.intersects(self:sphereOrigin:sphereRadius:)) +SPATIAL_OVERLOADABLE +bool SPRay3DIntersectsSphere(SPRay3D ray, SPPoint3D sphereOrigin, double sphereRadius) { + + simd_double3 x = ray.origin.vector - sphereOrigin.vector; + double y = 4.0 * simd_dot(ray.direction.vector, ray.direction.vector); + double z = 2.0 * simd_dot(x, ray.direction.vector); + z *= z; + double w = simd_dot(x, x) - sphereRadius * sphereRadius; + + return (z - y * w) > 0.0; +} + // MARK: - Test for intersection with rectangle /*! @@ -340,31 +451,6 @@ SPRay3D SPRay3DUnapplyProjectiveTransform(SPRay3D ray, SPVector3DUnapplyProjectiveTransform(ray.direction, transform)); } -/*! - @abstract Returns a ray that's transformed by the inverse of the specified pose. - - @param ray The source ray. - @param pose The pose that the function unapplies to the ray. - @returns The transformed ray. - @note This function rotates the ray's direction by the pose's rotation and offsets the ray's origin - by the pose's position. - */ -SPATIAL_INLINE -SPATIAL_OVERLOADABLE -SPRay3D SPRay3DUnapplyPose(SPRay3D ray, - SPPose3D pose) -__API_AVAILABLE(macos(14.0), ios(17.0), watchos(10.0), tvos(17.0)); - -SPATIAL_REFINED_FOR_SWIFT -SPATIAL_OVERLOADABLE -SPRay3D SPRay3DUnapplyPose(SPRay3D ray, - SPPose3D pose) { - - return SPRay3DMake(SPPoint3DUnapplyPose(ray.origin, pose), - SPVector3DUnapplyPose(ray.direction, pose)); - -} - /*! @abstract The ray with the value zero. */ diff --git a/include/Spatial/SPRect3D.h b/include/Spatial/SPRect3D.h index 2e0571ce..55bdc063 100644 --- a/include/Spatial/SPRect3D.h +++ b/include/Spatial/SPRect3D.h @@ -591,8 +591,8 @@ SPATIAL_OVERLOADABLE SPRect3D SPRect3DMakeAtOriginWithVector(simd_double3 origin, simd_double3 size) { - return SPRect3DMakeAtOrigin((SPPoint3D){ .vector = origin}, - (SPSize3D){ .vector = size }); + return SPRect3DMakeAtOrigin(SPPoint3DMakeWithVector(origin), + SPSize3DMakeWithVector(size)); } SPATIAL_REFINED_FOR_SWIFT @@ -600,8 +600,8 @@ SPATIAL_OVERLOADABLE SPRect3D SPRect3DMakeAtOriginWithVector(SPVector3D origin, SPVector3D size) { - return SPRect3DMakeAtOrigin((SPPoint3D){ .vector = origin.vector }, - (SPSize3D){ .vector = size.vector }); + return SPRect3DMakeAtOrigin(SPPoint3DMakeWithVector(origin.vector), + SPSize3DMakeWithVector(size.vector)); } SPATIAL_REFINED_FOR_SWIFT @@ -636,7 +636,7 @@ SPPoint3D SPPoint3DClampToRect(SPPoint3D point, SPRect3D rect) { p = simd_max(p, clampMin); p = simd_min(p, clampMax); - return (SPPoint3D){ .x = p.x, .y = p.y, .z = p.z }; + return SPPoint3DMakeWithVector(p); } SPATIAL_REFINED_FOR_SWIFT @@ -673,8 +673,8 @@ SPRect3D SPRect3DMakeBoundingFromPoints(SPPoint3D points[], int pointCount) { simd_double3 size = maximum - minimum; return (SPRect3D) { - (SPPoint3D){ .vector = minimum}, - (SPSize3D){ .vector = size} + SPPoint3DMakeWithVector(minimum), + SPSize3DMakeWithVector(size) }; } @@ -755,7 +755,7 @@ SPPoint3D SPRect3DGetMinimum(SPRect3D rect) { simd_double3 result = origin + simd_min(0, size); - return (SPPoint3D){ .vector = result }; + return SPPoint3DMakeWithVector(result); } SPATIAL_SWIFT_NAME(getter:Rect3D.max(self:)) @@ -765,7 +765,7 @@ SPPoint3D SPRect3DGetMaximum(SPRect3D rect) { simd_double3 size = rect.size.vector; simd_double3 result = origin + simd_max(0, size); - return (SPPoint3D){ .vector = result }; + return SPPoint3DMakeWithVector(result); } SPATIAL_REFINED_FOR_SWIFT @@ -813,8 +813,8 @@ SPRect3D SPRect3DUnion(SPRect3D rect, SPRect3D other) { SPRect3DGetMaximum(other).vector) - origin; return (SPRect3D){ - .origin = (SPPoint3D){ .vector = origin }, - .size = (SPSize3D){ .vector = size } + .origin = SPPoint3DMakeWithVector(origin), + .size = SPSize3DMakeWithVector(size) }; } @@ -834,8 +834,8 @@ SPRect3D SPRect3DIntersection(SPRect3D rect, SPRect3D other) { if (minSize >= 0) { return (SPRect3D){ - .origin = (SPPoint3D){ .vector = origin }, - .size = (SPSize3D){ .vector = size } + .origin = SPPoint3DMakeWithVector(origin), + .size = SPSize3DMakeWithVector(size) }; } else { return SPRect3DNull; @@ -851,7 +851,7 @@ SPRect3D SPRect3DStandardize(SPRect3D rect) { return (SPRect3D){ .origin = SPRect3DGetMinimum(rect), - .size = (SPSize3D){ .vector = size } + .size = SPSize3DMakeWithVector(size) }; } @@ -928,7 +928,7 @@ SPRect3D SPRect3DRotateByQuaternionAroundPoint(SPRect3D rect, simd_quatd quatern SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPRect3D SPRect3DTranslate(SPRect3D rect, SPSize3D offset) { - SPVector3D v = (SPVector3D){ .vector = offset.vector }; + SPVector3D v = SPVector3DMakeWithVector(offset.vector); return SPRect3DMakeAtOrigin(SPPoint3DTranslate(rect.origin, v), rect.size); } @@ -1039,7 +1039,7 @@ bool SPRect3DIntersectsRect(SPRect3D rect, SPRect3D other) { @abstract Returns a rectangle that's transformed by the specified pose. @param rect The source rectangle. - @param pose The pose that the function applies to the size. + @param pose The pose that the function applies to the rectangle. @returns The transformed rectangle. */ SPATIAL_INLINE @@ -1071,7 +1071,7 @@ SPRect3D SPRect3DApplyPose(SPRect3D rect, @abstract Returns a rectangle that's transformed by the inverse of the specified pose. @param rect The source rectangle. - @param pose The pose that the function unapplies to the size. + @param pose The pose that the function unapplies to the rectangle. @returns The transformed rectangle. @note The pose's rotation angle must be zero, otherwise this function returns @p SPRect3DNull . */ @@ -1103,4 +1103,74 @@ SPRect3D SPRect3DUnapplyPose(SPRect3D rect, return transformed; } +// MARK: - Transform by Scaled Pose + +/*! + @abstract Returns a rectangle that's transformed by the specified scaled pose. + + @param rect The source rectangle. + @param pose The scaled pose that the function applies to the rectangle. + @returns The transformed rectangle. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPRect3D SPRect3DApplyScaledPose(SPRect3D rect, + SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPRect3D SPRect3DApplyScaledPose(SPRect3D rect, + SPScaledPose3D pose) { + + SPPoint3D points[8] = {0}; + + SPRect3DGetCornerPoints(rect, points); + + for (int i = 0; i < 8; ++i) { + + points[i] = SPPoint3DApplyScaledPose(points[i], pose); + } + + SPRect3D transformed = SPRect3DMakeBoundingFromPoints(points, 8); + + return transformed; +} + +/*! + @abstract Returns a rectangle that's transformed by the inverse of the specified scaled pose. + + @param rect The source rectangle. + @param pose The scaled pose that the function unapplies to the rectangle. + @returns The transformed rectangle. + @note The pose's rotation angle must be zero, otherwise this function returns @p SPRect3DNull . + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPRect3D SPRect3DUnapplyScaledPose(SPRect3D rect, + SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPRect3D SPRect3DUnapplyScaledPose(SPRect3D rect, + SPScaledPose3D pose) { + + if(fabs(simd_angle(pose.rotation.quaternion)) > SPDefaultTolerance) { + return SPRect3DNull; + } + + SPPoint3D points[8] = {0}; + + SPRect3DGetCornerPoints(rect, points); + + for (int i = 0; i < 8; ++i) { + points[i] = SPPoint3DUnapplyScaledPose(points[i], pose); + } + + SPRect3D transformed = SPRect3DMakeBoundingFromPoints(points, 8); + + return transformed; +} + #endif /* Spatial_SPRect3D_h */ diff --git a/include/Spatial/SPRotation3D.h b/include/Spatial/SPRotation3D.h index e2831d5a..ece84470 100644 --- a/include/Spatial/SPRotation3D.h +++ b/include/Spatial/SPRotation3D.h @@ -156,7 +156,7 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPRotation3D SPRotation3DMakeLookAt(SPPoint3D target, SPVector3D up) { - SPPoint3D position = (SPPoint3D){ .x = 0, .y = 0, .z = 0 }; + SPPoint3D position = SPPoint3DZero; return SPRotation3DMakeLookAt(position, target, up); } @@ -178,9 +178,9 @@ SPATIAL_SWIFT_NAME(Rotation3D.init(forward:up:)) SPATIAL_OVERLOADABLE SPRotation3D SPRotation3DMakeLookAt(SPVector3D forward, SPVector3D up) { - SPPoint3D position = (SPPoint3D){ .x = 0, .y = 0, .z = 0 }; + SPPoint3D position = SPPoint3DZero; - SPPoint3D target = (SPPoint3D) { .vector = forward.vector }; + SPPoint3D target = SPPoint3DMakeWithVector(forward.vector); return SPRotation3DMakeLookAt(position, target, up); } @@ -346,7 +346,7 @@ SPRotation3D SPRotation3DMakeWithEulerAngles(SPEulerAngles eulerAngles) { v = (simd_double4){ cr * sp * cy + sr * cp * sy, cr * cp * sy - sr * sp * cy, - sr * cpcy - cr * spsy, + sr * cpcy - cr * spsy, cr * cpcy + sr * spsy }; @@ -551,6 +551,7 @@ bool SPRotation3DIsIdentity(SPRotation3D rotation) { @param from The starting rotation. @param to The ending rotation. + @param t The value, between @p 0 and @p 1, that the function interpolates at. @returns A new rotation. When @p t=0, the result is the @p from rotation. When @p t=1.0, the result is the @p to rotation. For any other value of @p t, the result is a spherical linear interpolation between the @@ -575,6 +576,7 @@ SPRotation3D SPRotation3DSlerp(SPRotation3D from, SPRotation3D to, double t) { @param from The starting rotation. @param to The ending rotation. + @param t The value, between @p 0 and @p 1, that the function interpolates at. @returns A new rotation. When @p t=0, the result is the @p from rotation. When @p t=1.0, the result is the @p to rotation. For any other value of @p t, the result is a spherical linear interpolation between the @@ -594,6 +596,36 @@ SPRotation3D SPRotation3DSlerpLongest(SPRotation3D from, SPRotation3D to, double return SPRotation3DMakeWithQuaternion(q); } +/*! + @abstract Returns an interpolated value between two rotations along a spherical cubic spline. + + @param r0 The left endpoint of the previous interval. + @param r1 The starting rotation. + @param r2 The ending rotation. + @param r3 The right endpoint of the next interval. + @param t The value, between @p 0 and @p 1, that the function interpolates at. + + @discussion The function interpolates between @p r1 and @p r2. @p r0 is the left + endpoint of the previous interval, and @p r3 is the right endpoint of the next + interval. Use this function to smoothly interpolate between a sequence of + rotations. + + @returns A new rotation that's the interpolated value between the two rotations along a spherical cubic spline. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPRotation3D SPRotation3DSpline(SPRotation3D r0, SPRotation3D r1, SPRotation3D r2, SPRotation3D r3, double t) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPRotation3D SPRotation3DSpline(SPRotation3D r0, SPRotation3D r1, SPRotation3D r2, SPRotation3D r3, double t) { + + simd_quatd q = simd_spline(r0.quaternion, r1.quaternion, r2.quaternion, r3.quaternion, t); + + return SPRotation3DMakeWithQuaternion(q); +} + /*! @abstract Returns the inverse of a rotation. @param rotation The source rotation. @@ -659,4 +691,57 @@ SPRotation3D SPRotation3DSwing(SPRotation3D rotation, SPRotationAxis3D twistAxis return SPRotation3DMakeWithQuaternion(simd_normalize(swing)); } +// MARK: - Almost Equal + +/*! + @abstract Returns a Boolean value that indicates whether the two rotations are equal within the specified absolute tolerance. + + @param r1 The first rotation. + @param r2 The first rotation. + @returns A Boolean value that indicates whether the two rotations are equal within the specified absolute tolerance. + @note The Spatial default tolerance is @p sqrt(__DBL_EPSILON__) . + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +bool SPRotation3DAlmostEqualToRotation(SPRotation3D r1, + SPRotation3D r2, + double tolerance) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_OVERLOADABLE +SPATIAL_REFINED_FOR_SWIFT +bool SPRotation3DAlmostEqualToRotation(SPRotation3D r1, + SPRotation3D r2, + double tolerance) { + + return _sp_almost_equal_tolerance(r1.quaternion.vector.x, r2.quaternion.vector.x, tolerance) && + _sp_almost_equal_tolerance(r1.quaternion.vector.y, r2.quaternion.vector.y, tolerance) && + _sp_almost_equal_tolerance(r1.quaternion.vector.z, r2.quaternion.vector.z, tolerance) && + _sp_almost_equal_tolerance(r1.quaternion.vector.w, r2.quaternion.vector.w, tolerance); +} + +/*! + @abstract Returns a Boolean value that indicates whether the two rotations are equal within the Spatial default absolute tolerance. + + @param r1 The first rotation. + @param r2 The first rotation. + @returns A Boolean value that indicates whether the two rotations are equal within the Spatial default absolute tolerance. + @note The Spatial default tolerance is @p sqrt(__DBL_EPSILON__) . + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +bool SPRotation3DAlmostEqualToRotation(SPRotation3D r1, + SPRotation3D r2) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_OVERLOADABLE +SPATIAL_REFINED_FOR_SWIFT +bool SPRotation3DAlmostEqualToRotation(SPRotation3D r1, + SPRotation3D r2) { + + return SPRotation3DAlmostEqualToRotation(r1, r2, SPDefaultTolerance); +} + + + #endif /* Spatial_SPRotation3D_h */ diff --git a/include/Spatial/SPSize3D.h b/include/Spatial/SPSize3D.h index 3d11971e..012842f0 100644 --- a/include/Spatial/SPSize3D.h +++ b/include/Spatial/SPSize3D.h @@ -11,30 +11,6 @@ // MARK: - Creating a size -/*! - @abstract Creates a size structure with the specified dimensions. - - @param width The width. - @param height The height. - @param depth The depth. - @returns A new size stucture. -*/ -SPATIAL_INLINE -SPATIAL_OVERLOADABLE -SPSize3D SPSize3DMake(double width, double height, double depth) -__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); - -/*! - @abstract Creates a size structure with dimensions specified as a 3-element SIMD vector. - - @param xyz The source vector. - @returns A new size stucture. -*/ -SPATIAL_INLINE -SPATIAL_OVERLOADABLE -SPSize3D SPSize3DMakeWithVector(simd_double3 xyz) -__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); - /*! @abstract Creates a size structure with dimensions specified as a Spatial vector. @@ -205,7 +181,7 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); When the shear axis is @p y , @p shearFactor0 is the @p x shear factor and @p shearFactor0 is the @p z shear factor. - When the shear axis is @p z , @p shearFactor0 is the @p x shear factor and @p shearFactor0 is the @p y shear factor.. + When the shear axis is @p z , @p shearFactor0 is the @p x shear factor and @p shearFactor0 is the @p y shear factor. */ SPATIAL_INLINE SPATIAL_OVERLOADABLE @@ -285,28 +261,16 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); // MARK: - Creating a size -SPATIAL_REFINED_FOR_SWIFT -SPATIAL_OVERLOADABLE -SPSize3D SPSize3DMake(double width, double height, double depth) { - return (SPSize3D){ .width = width, .height = height, .depth = depth }; -} - -SPATIAL_REFINED_FOR_SWIFT -SPATIAL_OVERLOADABLE -SPSize3D SPSize3DMakeWithVector(simd_double3 xyz) { - return (SPSize3D){ .vector = xyz }; -} - SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPSize3D SPSize3DMakeWithVector(SPVector3D xyz) { - return (SPSize3D){ .vector = xyz.vector }; + return SPSize3DMake(xyz.vector.x, xyz.vector.y, xyz.vector.z); } SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPSize3D SPSize3DMakeWithPoint(SPPoint3D point) { - return (SPSize3D){ .vector = point.vector }; + return SPSize3DMake(point.vector.x, point.vector.y, point.vector.z); } // MARK: - Querying size properties @@ -328,21 +292,21 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPSize3D SPSize3DScaleBy(SPSize3D size, double x, double y, double z) { - return (SPSize3D){ .vector = size.vector * simd_make_double3(x, y, z)}; + return SPSize3DMakeWithVector(size.vector * simd_make_double3(x, y, z)); } SPATIAL_SWIFT_NAME(Size3D.scaled(self:by:)) SPATIAL_OVERLOADABLE SPSize3D SPSize3DScaleBySize(SPSize3D size, SPSize3D scale) { - return (SPSize3D){ .vector = size.vector * scale.vector }; + return SPSize3DMakeWithVector(size.vector * scale.vector); } SPATIAL_SWIFT_NAME(Size3D.uniformlyScaled(self:by:)) SPATIAL_OVERLOADABLE SPSize3D SPSize3DScaleUniform(SPSize3D size, double scale) { - return (SPSize3D){ .vector = size.vector * scale }; + return SPSize3DMakeWithVector(size.vector * scale); } SPATIAL_SWIFT_NAME(Size3D.rotated(self:by:)) @@ -371,7 +335,7 @@ SPSize3D SPSize3DApplyAffineTransform(SPSize3D size, SPAffineTransform3D transfo simd_double3 transformed = simd_mul(transform.matrix, rhs).xyz; - return (SPSize3D){ .vector = transformed }; + return SPSize3DMakeWithVector(transformed); } SPATIAL_SWIFT_NAME(Size3D.applying(self:_:)) @@ -382,7 +346,7 @@ SPSize3D SPSize3DApplyProjectiveTransform(SPSize3D size, SPProjectiveTransform3D simd_double3 transformed = simd_mul(transform.matrix, rhs).xyz; - return (SPSize3D){ .vector = transformed }; + return SPSize3DMakeWithVector(transformed); } SPATIAL_REFINED_FOR_SWIFT @@ -516,14 +480,60 @@ SPATIAL_OVERLOADABLE SPSize3D SPSize3DUnapplyPose(SPSize3D size, SPPose3D pose) { - simd_double4 v = simd_make_double4(size.vector, 0); - simd_double4x4 m = simd_matrix4x4(pose.rotation.quaternion); - m.columns[3].xyz = pose.position.vector; - m = simd_inverse(m); + return SPSize3DRotate(size, SPRotation3DInverse(pose.rotation)); +} + +// MARK: - Transform by Scaled Pose + +/*! + @abstract Returns a size that's transformed by the specified scaled pose. + + @param size The source size. + @param pose The scaled pose that the function applies to the size. + @returns The transformed size. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPSize3D SPSize3DApplyScaledPose(SPSize3D size, + SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPSize3D SPSize3DApplyScaledPose(SPSize3D size, + SPScaledPose3D pose) { + + simd_double3 v = size.vector * pose.scale; + v = simd_act(pose.rotation.quaternion, v); + + return SPSize3DMakeWithVector(v); +} + +/*! + @abstract Returns a size that's transformed by the inverse of the specified scaled pose. + + @param size The source size. + @param pose The pose that the function unapplies to the size. + @returns The transformed vector. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPSize3D SPSize3DUnapplyScaledPose(SPSize3D size, + SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPSize3D SPSize3DUnapplyScaledPose(SPSize3D size, + SPScaledPose3D pose) { + + simd_quatd invPoseRot = simd_inverse(pose.rotation.quaternion); + simd_double3 invPosePos = simd_act(invPoseRot, -pose.position.vector); - simd_double3 transformed = simd_mul(m, v).xyz; + simd_double3 v = simd_act(invPoseRot, size.vector); + v /= pose.scale; - return (SPSize3D){ .vector = transformed }; + return SPSize3DMakeWithVector(v); } #endif /* Spatial_SPSize3D_h */ diff --git a/include/Spatial/SPVector3D.h b/include/Spatial/SPVector3D.h index e44a6cfe..3a4d0f8c 100644 --- a/include/Spatial/SPVector3D.h +++ b/include/Spatial/SPVector3D.h @@ -6,46 +6,6 @@ #include #include -// MARK: - SPVector3DMake - -/*! - @abstract Creates a point with the specified coordinates. - - @param x The first element of the vector. - @param y The second element of the vector. - @param z The third element of the vector. - @returns A new vector. - */ -SPATIAL_INLINE -SPATIAL_OVERLOADABLE -SPVector3D SPVector3DMake(double x, double y, double z) -__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); - -SPATIAL_REFINED_FOR_SWIFT -SPATIAL_OVERLOADABLE -SPVector3D SPVector3DMake(double x, double y, double z) { - return (SPVector3D){ .x = x, .y = y, .z = z }; -} - -// MARK: - SPVector3DMakeWithVector - -/*! - @abstract Creates a vector with elements specified as a 3-element SIMD vector. - - @param xyz The source simd vector. - @returns A new vector. - */ -SPATIAL_INLINE -SPATIAL_OVERLOADABLE -SPVector3D SPVector3DMakeWithVector(simd_double3 xyz) -__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); - -SPATIAL_REFINED_FOR_SWIFT -SPATIAL_OVERLOADABLE -SPVector3D SPVector3DMakeWithVector(simd_double3 xyz) { - return (SPVector3D){ .vector = xyz}; -} - // MARK: - SPPoint3DMakeWithRotationAxis /*! @@ -62,7 +22,7 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPVector3D SPVector3DMakeWithRotationAxis(SPRotationAxis3D axis) { - return (SPVector3D){ .vector = axis.vector }; + return SPVector3DMake(axis.vector.x, axis.vector.y, axis.vector.z); } // MARK: - SPPoint3DMakeWithSize @@ -81,7 +41,7 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPVector3D SPVector3DMakeWithSize(SPSize3D size) { - return (SPVector3D){ .vector = size.vector }; + return SPVector3DMake(size.vector.x, size.vector.y, size.vector.z); } // MARK: - SPPoint3DMakeWithPoint @@ -100,7 +60,7 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPVector3D SPVector3DMakeWithPoint(SPPoint3D point) { - return (SPVector3D){ .vector = point.vector}; + return SPVector3DMake(point.vector.x, point.vector.y,point.vector.z); } // MARK: - SPVector3DEqualToPoint @@ -137,7 +97,7 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPVector3D SPVector3DScaleBy(SPVector3D vector, double x, double y, double z) { - return (SPVector3D){ .vector = vector.vector * simd_make_double3(x, y, z)}; + return SPVector3DMakeWithVector(vector.vector * simd_make_double3(x, y, z)); } @@ -165,7 +125,7 @@ SPVector3D SPVector3DApplyAffineTransform(SPVector3D vector, simd_double3 transformed = simd_mul(transform.matrix, rhs).xyz; - return (SPVector3D){ .vector = transformed }; + return SPVector3DMakeWithVector(transformed); } // MARK: - SPVector3DApplyProjectiveTransform @@ -192,7 +152,7 @@ SPVector3D SPVector3DApplyProjectiveTransform(SPVector3D vector, simd_double3 transformed = simd_mul(transform.matrix, rhs).xyz; - return (SPVector3D){ .vector = transformed }; + return SPVector3DMakeWithVector(transformed); } // MARK: - SPVector3DUnapplyAffineTransform @@ -326,7 +286,7 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPVector3D SPVector3DScaleBySize(SPVector3D vector, SPSize3D scale) { - return (SPVector3D){ .vector = vector.vector * scale.vector }; + return SPVector3DMakeWithVector(vector.vector * scale.vector); } // MARK: - SPVector3DScaleUniform @@ -347,7 +307,7 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPVector3D SPVector3DScaleUniform(SPVector3D vector, double scale) { - return (SPVector3D){ .vector = vector.vector * scale }; + return SPVector3DMakeWithVector(vector.vector * scale); } // MARK: - SPVector3DRotate @@ -427,7 +387,7 @@ SPATIAL_OVERLOADABLE SPVector3D SPVector3DCrossProduct(SPVector3D x, SPVector3D y) { simd_double3 d = simd_cross(x.vector, y.vector); - return (SPVector3D){ .vector = d }; + return SPVector3DMakeWithVector(d); } /*! @@ -443,7 +403,7 @@ SPATIAL_OVERLOADABLE SPVector3D SPVector3DNormalize(SPVector3D x) { simd_double3 d = simd_normalize(x.vector); - return (SPVector3D){ .vector = d }; + return SPVector3DMakeWithVector(d); } /*! @@ -459,7 +419,7 @@ SPATIAL_OVERLOADABLE SPVector3D SPVector3DProject(SPVector3D x, SPVector3D y) { simd_double3 d = simd_project(x.vector, y.vector); - return (SPVector3D){ .vector = d }; + return SPVector3DMakeWithVector(d); } /*! @@ -474,8 +434,8 @@ SPATIAL_REFINED_FOR_SWIFT SPATIAL_OVERLOADABLE SPVector3D SPVector3DReflect(SPVector3D x, SPVector3D y) { - simd_double3 d = simd_project(x.vector, y.vector); - return (SPVector3D){ .vector = d }; + simd_double3 d = simd_reflect(x.vector, y.vector); + return SPVector3DMakeWithVector(d); } /*! @@ -549,14 +509,82 @@ SPATIAL_OVERLOADABLE SPVector3D SPVector3DUnapplyPose(SPVector3D vector, SPPose3D pose) { - simd_double4 v = simd_make_double4(vector.vector, 0); - simd_double4x4 m = simd_matrix4x4(pose.rotation.quaternion); - m.columns[3].xyz = pose.position.vector; - m = simd_inverse(m); + return SPVector3DRotate(vector, SPRotation3DInverse(pose.rotation)); +} + +// MARK: - Transform by Scaled Pose + +/*! + @abstract Returns a vector that's transformed by the specified scaled pose. + + @param vector The source vector. + @param pose The scaled pose that the function applies to the vector. + @returns The transformed vector. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPVector3D SPVector3DApplyScaledPose(SPVector3D vector, + SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPVector3D SPVector3DApplyScaledPose(SPVector3D vector, + SPScaledPose3D pose) { + + simd_double3 v = vector.vector * pose.scale; + v = simd_act(pose.rotation.quaternion, v); + + return SPVector3DMakeWithVector(v); +} + +/*! + @abstract Returns a vector that's transformed by the inverse of the specified scaled pose. + + @param vector The source vector. + @param pose The pose that the function unapplies to the vector. + @returns The transformed vector. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPVector3D SPVector3DUnapplyScaledPose(SPVector3D vector, + SPScaledPose3D pose) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPVector3D SPVector3DUnapplyScaledPose(SPVector3D vector, + SPScaledPose3D pose) { + + simd_quatd invPoseRot = simd_inverse(pose.rotation.quaternion); + simd_double3 invPosePos = simd_act(invPoseRot, -pose.position.vector); + + simd_double3 v = simd_act(invPoseRot, vector.vector); + v /= pose.scale; + + return SPVector3DMakeWithVector(v); +} + +// MARK: - Spherical coordinate support + +/*! + @abstract Returns a Spatial vector that represents the Cartesian coordinates of the specified spherical coordinates structure. + + @param coords The source spherical coordinates structure. + @returns A new vector that contains the spherical coorddinates converted to Cartesian coordinates. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPVector3D SPVector3DMakeWithSphericalCoordinates(SPSphericalCoordinates3D coords) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPVector3D SPVector3DMakeWithSphericalCoordinates(SPSphericalCoordinates3D coords) { - simd_double3 transformed = simd_mul(m, v).xyz; + SPPoint3D point = SPPoint3DMakeWithSphericalCoordinates(coords); - return (SPVector3D){ .vector = transformed }; + return SPVector3DMakeWithPoint(point); } #endif /* SPVector3D_h */ diff --git a/include/Spatial/Spatial.h b/include/Spatial/Spatial.h index 0a06acb6..dd724f57 100644 --- a/include/Spatial/Spatial.h +++ b/include/Spatial/Spatial.h @@ -18,5 +18,8 @@ #include #include #include +#include + +#include #endif // Spatial_h diff --git a/include/Spatial/Structures.h b/include/Spatial/Structures.h index bdd901ec..857d6a7f 100644 --- a/include/Spatial/Structures.h +++ b/include/Spatial/Structures.h @@ -44,7 +44,7 @@ __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); typedef union { struct { - /// The underlying vector of the quaternion.. + /// The underlying vector of the quaternion. simd_double4 vector; }; simd_quatd quaternion; @@ -67,6 +67,11 @@ union { /// The z-coordinate of the point. double z; + +#if !defined __swift__ + /// The explicit padding + double _padding; +#endif }; simd_double3 vector; } SPPoint3D @@ -88,6 +93,11 @@ union { /// The third element of the vector. double z; + +#if !defined __swift__ + /// The explicit padding + double _padding; +#endif }; simd_double3 vector; } SPVector3D @@ -109,6 +119,11 @@ union { /// The depth of the size. double depth; + +#if !defined __swift__ + /// The explicit padding + double _padding; +#endif }; simd_double3 vector; } SPSize3D @@ -155,6 +170,22 @@ typedef struct { SPATIAL_SWIFT_NAME(Pose3D) __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); +// MARK: - 3D Scaled Pose Structure + +/// A structure that contains a position, rotation, and scale. +typedef struct { + /// The position + SPPoint3D position; + + /// The rotation + SPRotation3D rotation; + + /// The uniform scale + double scale; +} SPScaledPose3D +SPATIAL_SWIFT_NAME(ScaledPose3D); +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + // MARK: - 3D Affine Transform Structure /*! @@ -168,6 +199,142 @@ typedef struct { SPATIAL_SWIFT_NAME(AffineTransform3D) __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); +// MARK: - Fundamental make functions for SPPoint3D + +/*! + @abstract Creates a point with the specified coordinates. + + @param x The x coordinate. + @param y The y coordinate. + @param z The z coordinate. + @returns A new point. +*/ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPPoint3D SPPoint3DMake(double x, double y, double z) +__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPPoint3D SPPoint3DMake(double x, double y, double z) { + return (SPPoint3D) { + x, + y, + z, +#if !defined __swift__ + 1.0 +#endif + }; +} + +/*! + @abstract Creates a point with coordinates specified as a 3-element SIMD vector. + + @param xyz The source vector. + @returns A new point. +*/ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPPoint3D SPPoint3DMakeWithVector(simd_double3 xyz) +__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPPoint3D SPPoint3DMakeWithVector(simd_double3 xyz) { + return SPPoint3DMake(xyz.x, xyz.y, xyz.z); +} + + +// MARK: - Fundamental make functions for SPVector3D + +/*! + @abstract Creates a vector with the specified coordinates. + + @param x The first element of the vector. + @param y The second element of the vector. + @param z The third element of the vector. + @returns A new vector. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPVector3D SPVector3DMake(double x, double y, double z) +__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPVector3D SPVector3DMake(double x, double y, double z) { + return (SPVector3D) { + x, + y, + z, +#if !defined __swift__ + 0.0 +#endif + }; +} + +/*! + @abstract Creates a vector with elements specified as a 3-element SIMD vector. + + @param xyz The source simd vector. + @returns A new vector. + */ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPVector3D SPVector3DMakeWithVector(simd_double3 xyz) +__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPVector3D SPVector3DMakeWithVector(simd_double3 xyz) { + return SPVector3DMake(xyz.x, xyz.y, xyz.z); +} + +// MARK: - Fundamental make functions for SPSize3D + +/*! + @abstract Creates a size structure with the specified dimensions. + + @param width The width. + @param height The height. + @param depth The depth. + @returns A new size stucture. +*/ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPSize3D SPSize3DMake(double width, double height, double depth) +__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPSize3D SPSize3DMake(double width, double height, double depth) { + return (SPSize3D){ + width, + height, + depth, +#if !defined __swift__ + 0.0 +#endif + }; +} + +/*! + @abstract Creates a size structure with dimensions specified as a 3-element SIMD vector. + + @param xyz The source vector. + @returns A new size stucture. +*/ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPSize3D SPSize3DMakeWithVector(simd_double3 xyz) +__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); + +SPATIAL_REFINED_FOR_SWIFT +SPATIAL_OVERLOADABLE +SPSize3D SPSize3DMakeWithVector(simd_double3 xyz) { + return SPSize3DMake(xyz.x, xyz.y, xyz.z); +} + // MARK: - 3D Projective Transform Structure /// A 3D projective transformation matrix. @@ -177,6 +344,53 @@ typedef struct { SPATIAL_SWIFT_NAME(ProjectiveTransform3D) __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); +// MARK: - Spherical coordinates structure + +/// A structure that defines spherical coordinates in radial, inclination, azimuthal order. +typedef +union { + struct { + /// The distance to the origin. + double radius; + + /// The inclination angle, in radians. + SPAngle inclination; + + /// The azimuthal angle, in radians. + SPAngle azimuth; + + /// The explicit padding. + double _padding; + }; + simd_double3 vector; +} SPSphericalCoordinates3D +__attribute__((__aligned__(16))) +SPATIAL_SWIFT_NAME(SphericalCoordinates3D) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +/*! + @abstract Creates a spherical coordinates structure. + + @param radius The distance to the origin. + @param inclination The inclination angle. + @param azimuth The azimuthal angle. + @returns A new point. +*/ +SPATIAL_INLINE +SPATIAL_OVERLOADABLE +SPSphericalCoordinates3D SPSphericalCoordinates3DMake(double radius, SPAngle inclination, SPAngle azimuth) +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); + +SPATIAL_SWIFT_NAME(SphericalCoordinates3D.init(radius:inclination:azimuth:)) +SPATIAL_OVERLOADABLE +SPSphericalCoordinates3D SPSphericalCoordinates3DMake(double radius, SPAngle inclination, SPAngle azimuth) { + return (SPSphericalCoordinates3D) { + radius, + inclination, + azimuth, + 1.0 }; +} + // MARK: - Shear enumeration /// Enumerations that describe an axis. @@ -237,25 +451,52 @@ static const SPPose3D SPPose3DInvalid = { .rotation = (SPRotation3D){ .vector = {INFINITY, INFINITY, INFINITY, INFINITY }} }; +/// A pose that represents an invalid scaled pose. +__API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0)); +SPATIAL_REFINED_FOR_SWIFT +static const SPScaledPose3D SPScaledPose3DInvalid = { + .position = {INFINITY, INFINITY, INFINITY}, + .rotation = (SPRotation3D){ .vector = {INFINITY, INFINITY, INFINITY, INFINITY }}, + .scale = INFINITY +}; + /// The point with the value zero. __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)) SPATIAL_SWIFT_NAME(Point3D.zero) -static const SPPoint3D SPPoint3DZero = { 0, 0, 0 }; +static const SPPoint3D SPPoint3DZero = { 0, + 0, + 0, +#if !defined __swift__ + 1.0 +#endif +}; /// The point with location @p (infinity,infinity,infinity) . __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)) SPATIAL_SWIFT_NAME(Point3D.infinity) -static const SPPoint3D SPPoint3DInfinity = { INFINITY, INFINITY, INFINITY }; +static const SPPoint3D SPPoint3DInfinity = { INFINITY, + INFINITY, + INFINITY, +#if !defined __swift__ + 1.0 +#endif +}; /// The vector with the value zero. __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)) SPATIAL_SWIFT_NAME(Vector3D.zero) -static const SPVector3D SPVector3DZero = { 0, 0, 0 }; +static const SPVector3D SPVector3DZero = { 0 }; /// The vector with values @p (infinity,infinity,infinity) . __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)) SPATIAL_SWIFT_NAME(Vector3D.infinity) -static const SPVector3D SPVectorInfinity = { INFINITY, INFINITY, INFINITY }; +static const SPVector3D SPVectorInfinity = { INFINITY, + INFINITY, + INFINITY, +#if !defined __swift__ + 0.0 +#endif +}; /// The size with the value zero. __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)) @@ -265,13 +506,24 @@ static const SPSize3D SPSize3DZero = { 0 }; /// The size with dimensions @p (infinity,infinity,infinity) . __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)) SPATIAL_SWIFT_NAME(Size3D.infinity) -static const SPSize3D SPSize3DInfinity = { INFINITY, INFINITY, INFINITY }; +static const SPSize3D SPSize3DInfinity = { INFINITY, + INFINITY, + INFINITY, +#if !defined __swift__ + 0.0 +#endif +}; /// A size that represents an invalid size. __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)) SPATIAL_REFINED_FOR_SWIFT static const SPSize3D SPSize3DInvalid = { - INFINITY, INFINITY, INFINITY + INFINITY, + INFINITY, + INFINITY, +#if !defined __swift__ + 0.0 +#endif }; /// The rect with the value zero. @@ -283,15 +535,36 @@ static const SPRect3D SPRect3DZero = { 0 }; __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)) SPATIAL_SWIFT_NAME(Rect3D.infinity) static const SPRect3D SPRect3DInfinity = { - .origin = { INFINITY, INFINITY, INFINITY }, - .size = { INFINITY, INFINITY, INFINITY } + .origin = { + INFINITY, + INFINITY, + INFINITY, +#if !defined __swift__ + 1.0 +#endif + }, + .size = { + INFINITY, + INFINITY, + INFINITY, +#if !defined __swift__ + 0.0 +#endif + } }; /// The null rectangle, representing an invalid value. __API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)) SPATIAL_REFINED_FOR_SWIFT static const SPRect3D SPRect3DNull = { - .origin = { INFINITY, INFINITY, INFINITY }, + .origin = { + INFINITY, + INFINITY, + INFINITY, +#if !defined __swift__ + 1.0 +#endif + }, .size = { 0 } }; @@ -566,7 +839,7 @@ bool SPRotation3DIsValid(SPRotation3D rotation) { @abstract Returns a Boolean value that indicates whether a pose structure represents a valid pose. @param pose The source pose. - @returns A Boolean value that indicates whether a size structure represents a valid size. + @returns A Boolean value that indicates whether a pose structure represents a valid size. */ SPATIAL_INLINE bool SPPose3DIsValid(SPPose3D pose) @@ -577,6 +850,21 @@ bool SPPose3DIsValid(SPPose3D pose) { return SPRotation3DIsValid(pose.rotation) && SPPoint3DIsFinite(pose.position); } +/*! + @abstract Returns a Boolean value that indicates whether a scaled pose structure represents a valid scaled pose. + + @param pose The source pose. + @returns A Boolean value that indicates whether a scaled pose structure represents a valid size. +*/ +SPATIAL_INLINE +bool SPScaledPose3DIsValid(SPScaledPose3D pose) +__API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0)); + +SPATIAL_REFINED_FOR_SWIFT +bool SPScaledPose3DIsValid(SPScaledPose3D pose) { + return SPRotation3DIsValid(pose.rotation) && SPPoint3DIsFinite(pose.position) && isnormal(pose.scale); +} + /*! @abstract Returns a Boolean value that indicates whether the rectangle represents an invalid value. diff --git a/include/TargetConditionals.h b/include/TargetConditionals.h index 663ddecf..8df64363 100644 --- a/include/TargetConditionals.h +++ b/include/TargetConditionals.h @@ -53,6 +53,8 @@ * TARGET_CPU_ALPHA - Compiler is generating Dec Alpha instructions */ + + /* * TARGET_OS_* * @@ -135,6 +137,7 @@ * It is disabled by default. */ +#if !defined(__has_extension) || !__has_extension(define_target_os_macros) #if defined(__has_builtin) #if __has_builtin(__is_target_arch) #if __has_builtin(__is_target_vendor) @@ -146,26 +149,15 @@ /* "-target=arm64e-apple-ios12-macabi" */ #if (__is_target_arch(x86_64) || __is_target_arch(arm64) || __is_target_arch(arm64e)) && __is_target_vendor(apple) && __is_target_os(ios) && __is_target_environment(macabi) #define TARGET_OS_MAC 1 - #define TARGET_OS_OSX 0 #define TARGET_OS_IPHONE 1 #define TARGET_OS_IOS 1 - #define TARGET_OS_WATCH 0 - - #define TARGET_OS_TV 0 - #define TARGET_OS_SIMULATOR 0 - #define TARGET_OS_EMBEDDED 0 - #define TARGET_OS_RTKIT 0 #define TARGET_OS_MACCATALYST 1 #define TARGET_OS_MACCATALYST 1 - - #define TARGET_OS_VISION 0 - - #ifndef TARGET_OS_UIKITFORMAC #define TARGET_OS_UIKITFORMAC 1 #endif - #define TARGET_OS_DRIVERKIT 0 - #define DYNAMIC_TARGETS_ENABLED 1 + #define TARGET_OS_UNIX 0 + #define DYNAMIC_TARGETS_ENABLED 1 #endif /* "-target=x86_64-apple-ios12-simulator" */ @@ -173,135 +165,42 @@ /* "-target=arm64e-apple-ios12-simulator" */ #if (__is_target_arch(x86_64) || __is_target_arch(arm64) || __is_target_arch(arm64e)) && __is_target_vendor(apple) && __is_target_os(ios) && __is_target_environment(simulator) #define TARGET_OS_MAC 1 - #define TARGET_OS_OSX 0 #define TARGET_OS_IPHONE 1 #define TARGET_OS_IOS 1 - #define TARGET_OS_WATCH 0 - - #define TARGET_OS_TV 0 #define TARGET_OS_SIMULATOR 1 - #define TARGET_OS_EMBEDDED 0 - #define TARGET_OS_RTKIT 0 - #define TARGET_OS_MACCATALYST 0 - #define TARGET_OS_MACCATALYST 0 - - #define TARGET_OS_VISION 0 - - - #ifndef TARGET_OS_UIKITFORMAC - #define TARGET_OS_UIKITFORMAC 0 - #endif - #define TARGET_OS_DRIVERKIT 0 + #define TARGET_OS_UNIX 0 #define DYNAMIC_TARGETS_ENABLED 1 #endif - /* "-target=arm64e-apple-xros1.0" */ - #if (__is_target_arch(arm64e) || __is_target_arch(arm64)) && __is_target_vendor(apple) && __is_target_os(xros) + /* "-target=arm64e-apple-xros1.0[-simulator]" */ + #if __is_target_vendor(apple) && __is_target_os(xros) && (!__is_target_environment(exclavekit) && !__is_target_environment(exclavecore)) #define TARGET_OS_MAC 1 - #define TARGET_OS_OSX 0 #define TARGET_OS_IPHONE 1 - #define TARGET_OS_IOS 0 - - #define TARGET_OS_WATCH 0 - - #define TARGET_OS_TV 0 - #define TARGET_OS_SIMULATOR 0 - #define TARGET_OS_EMBEDDED 1 - #define TARGET_OS_RTKIT 0 - #define TARGET_OS_MACCATALYST 0 - #define TARGET_OS_MACCATALYST 0 - - #define TARGET_OS_VISION 1 - - - #ifndef TARGET_OS_UIKITFORMAC - #define TARGET_OS_UIKITFORMAC 0 + #if __is_target_environment(simulator) + #define TARGET_OS_SIMULATOR 1 + #else + #define TARGET_OS_EMBEDDED 1 #endif - #define TARGET_OS_DRIVERKIT 0 - #define DYNAMIC_TARGETS_ENABLED 1 - #endif - - /* "-target=arm64e-apple-xros1.0-simulator" */ - #if (__is_target_arch(x86_64) || __is_target_arch(arm64) || __is_target_arch(arm64e)) && __is_target_vendor(apple) && __is_target_os(xros) && __is_target_environment(simulator) - #define TARGET_OS_MAC 1 - #define TARGET_OS_OSX 0 - #define TARGET_OS_IPHONE 1 - - #define TARGET_OS_IOS 0 - - #define TARGET_OS_WATCH 0 - - #define TARGET_OS_TV 0 - #define TARGET_OS_SIMULATOR 1 - #define TARGET_OS_EMBEDDED 0 - #define TARGET_OS_RTKIT 0 - #define TARGET_OS_MACCATALYST 0 - #define TARGET_OS_MACCATALYST 0 - #define TARGET_OS_VISION 1 - - - #ifndef TARGET_OS_UIKITFORMAC - #define TARGET_OS_UIKITFORMAC 0 - #endif - #define TARGET_OS_DRIVERKIT 0 + #define TARGET_OS_UNIX 0 #define DYNAMIC_TARGETS_ENABLED 1 #endif - - //FIXME: Workaround for rdar://100536146 - #if (__is_target_vendor(apple) && defined(__APPLE_EXCLAVECORE__) && __APPLE_EXCLAVECORE__) - #define TARGET_OS_MAC 0 - #define TARGET_OS_OSX 0 - #define TARGET_OS_IPHONE 0 - #define TARGET_OS_IOS 0 - #define TARGET_OS_WATCH 0 - - #define TARGET_OS_TV 0 - #define TARGET_OS_SIMULATOR 0 - #define TARGET_OS_EMBEDDED 0 - #define TARGET_OS_RTKIT 0 - #define TARGET_OS_MACCATALYST 0 - #define TARGET_OS_MACCATALYST 0 - - #define TARGET_OS_VISION 0 - + #if (__is_target_vendor(apple) && __is_target_environment(exclavecore)) - #ifndef TARGET_OS_UIKITFORMAC - #define TARGET_OS_UIKITFORMAC 0 - #endif - #define TARGET_OS_DRIVERKIT 0 + #define TARGET_OS_UNIX 0 #define DYNAMIC_TARGETS_ENABLED 1 #endif - - //FIXME: Workaround for rdar://100536146 - #if (__is_target_vendor(apple) && defined(__APPLE_EXCLAVEKIT__) && __APPLE_EXCLAVEKIT__) + #if (__is_target_vendor(apple) && __is_target_environment(exclavekit)) #define TARGET_OS_MAC 1 - #define TARGET_OS_OSX 0 - #define TARGET_OS_IPHONE 0 - #define TARGET_OS_IOS 0 - #define TARGET_OS_WATCH 0 - #define TARGET_OS_TV 0 - #define TARGET_OS_SIMULATOR 0 - #define TARGET_OS_EMBEDDED 0 - #define TARGET_OS_RTKIT 0 - #define TARGET_OS_MACCATALYST 0 - #define TARGET_OS_MACCATALYST 0 - - #define TARGET_OS_VISION 0 - - - #ifndef TARGET_OS_UIKITFORMAC - #define TARGET_OS_UIKITFORMAC 0 - #endif - #define TARGET_OS_DRIVERKIT 0 + #define TARGET_OS_UNIX 0 #define DYNAMIC_TARGETS_ENABLED 1 #endif @@ -310,25 +209,8 @@ /* "-target=arm64e-apple-driverkit19.0" */ #if __is_target_vendor(apple) && __is_target_os(driverkit) #define TARGET_OS_MAC 1 - #define TARGET_OS_OSX 0 - #define TARGET_OS_IPHONE 0 - #define TARGET_OS_IOS 0 - #define TARGET_OS_WATCH 0 - - #define TARGET_OS_TV 0 - #define TARGET_OS_SIMULATOR 0 - #define TARGET_OS_EMBEDDED 0 - #define TARGET_OS_RTKIT 0 - #define TARGET_OS_MACCATALYST 0 - #define TARGET_OS_MACCATALYST 0 - - #define TARGET_OS_VISION 0 - - - #ifndef TARGET_OS_UIKITFORMAC - #define TARGET_OS_UIKITFORMAC 0 - #endif #define TARGET_OS_DRIVERKIT 1 + #define TARGET_OS_UNIX 0 #define DYNAMIC_TARGETS_ENABLED 1 #endif @@ -338,20 +220,14 @@ #endif /* #if __has_builtin(__is_target_arch) */ #endif /* #if defined(__has_builtin) */ - #ifndef DYNAMIC_TARGETS_ENABLED - #define DYNAMIC_TARGETS_ENABLED 0 + #define DYNAMIC_TARGETS_ENABLED 0 #endif /* DYNAMIC_TARGETS_ENABLED */ /* * gcc based compiler used on Mac OS X */ #if defined(__GNUC__) && ( defined(__APPLE_CPP__) || defined(__APPLE_CC__) || defined(__MACOS_CLASSIC__) ) - #define TARGET_OS_WIN32 0 - #define TARGET_OS_WINDOWS 0 - #define TARGET_OS_UNIX 0 - #define TARGET_OS_LINUX 0 - #if !DYNAMIC_TARGETS_ENABLED #define TARGET_OS_MAC 1 #define TARGET_OS_OSX 1 @@ -364,162 +240,63 @@ #define TARGET_OS_TV 0 #define TARGET_OS_MACCATALYST 0 #define TARGET_OS_MACCATALYST 0 - - - - #define TARGET_OS_VISION 0 #ifndef TARGET_OS_UIKITFORMAC #define TARGET_OS_UIKITFORMAC 0 #endif #define TARGET_OS_SIMULATOR 0 #define TARGET_OS_EMBEDDED 0 - #define TARGET_OS_RTKIT 0 - #define TARGET_OS_DRIVERKIT 0 + #define TARGET_OS_UNIX 0 #endif - - #define TARGET_IPHONE_SIMULATOR TARGET_OS_SIMULATOR /* deprecated */ - #define TARGET_OS_NANO TARGET_OS_WATCH /* deprecated */ - #define TARGET_ABI_USES_IOS_VALUES (!TARGET_CPU_X86_64 || (TARGET_OS_IPHONE && !TARGET_OS_MACCATALYST)) - #if defined(__ppc__) - #define TARGET_CPU_PPC 1 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_X86_64 0 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #define TARGET_RT_LITTLE_ENDIAN 0 - #define TARGET_RT_BIG_ENDIAN 1 - #define TARGET_RT_64_BIT 0 - #ifdef __MACOS_CLASSIC__ - #define TARGET_RT_MAC_CFM 1 - #define TARGET_RT_MAC_MACHO 0 - #else - #define TARGET_RT_MAC_CFM 0 - #define TARGET_RT_MAC_MACHO 1 - #endif - #elif defined(__ppc64__) - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_PPC64 1 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_X86_64 0 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #define TARGET_RT_LITTLE_ENDIAN 0 - #define TARGET_RT_BIG_ENDIAN 1 - #define TARGET_RT_64_BIT 1 - #define TARGET_RT_MAC_CFM 0 - #define TARGET_RT_MAC_MACHO 1 - #elif defined(__i386__) - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 1 - #define TARGET_CPU_X86_64 0 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #define TARGET_RT_MAC_CFM 0 - #define TARGET_RT_MAC_MACHO 1 - #define TARGET_RT_LITTLE_ENDIAN 1 - #define TARGET_RT_BIG_ENDIAN 0 - #define TARGET_RT_64_BIT 0 - #elif defined(__x86_64__) - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_X86_64 1 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #define TARGET_RT_MAC_CFM 0 - #define TARGET_RT_MAC_MACHO 1 +/* + * CodeWarrior compiler from Metrowerks/Motorola + */ +#elif defined(__MWERKS__) + #define TARGET_OS_MAC 1 + +/* + * unknown compiler + */ +#else + #define TARGET_OS_MAC 1 +#endif +#endif /* !defined(__has_extension) || !__has_extension(define_target_os_macros) */ + +// This has to always be defined in the header due to limitations in define_target_os_macros +#define TARGET_OS_RTKIT 0 + +/* + * gcc based compiler used on Mac OS X + */ +#if defined(__GNUC__) && ( defined(__APPLE_CPP__) || defined(__APPLE_CC__) || defined(__MACOS_CLASSIC__) ) + #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ #define TARGET_RT_LITTLE_ENDIAN 1 #define TARGET_RT_BIG_ENDIAN 0 + #else + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #endif + #if __LP64__ #define TARGET_RT_64_BIT 1 - #elif defined(__arm__) - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_X86_64 0 - #define TARGET_CPU_ARM 1 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #define TARGET_RT_MAC_CFM 0 - #define TARGET_RT_MAC_MACHO 1 - #define TARGET_RT_LITTLE_ENDIAN 1 - #define TARGET_RT_BIG_ENDIAN 0 + #else #define TARGET_RT_64_BIT 0 - #elif defined(__arm64__) - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_X86_64 0 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_ARM64 1 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 + #endif + #if defined(__ppc__) && __MACOS_CLASSIC__ + #define TARGET_RT_MAC_CFM 1 + #define TARGET_RT_MAC_MACHO 0 + #else #define TARGET_RT_MAC_CFM 0 #define TARGET_RT_MAC_MACHO 1 - #define TARGET_RT_LITTLE_ENDIAN 1 - #define TARGET_RT_BIG_ENDIAN 0 - #if __LP64__ - #define TARGET_RT_64_BIT 1 - #else - #define TARGET_RT_64_BIT 0 - #endif - #else - #error unrecognized GNU C compiler #endif - - /* * CodeWarrior compiler from Metrowerks/Motorola */ #elif defined(__MWERKS__) - #define TARGET_OS_MAC 1 - #define TARGET_OS_WIN32 0 - #define TARGET_OS_WINDOWS 0 - #define TARGET_OS_UNIX 0 - #define TARGET_OS_LINUX 0 - #define TARGET_OS_EMBEDDED 0 #if defined(__POWERPC__) - #define TARGET_CPU_PPC 1 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 #define TARGET_RT_LITTLE_ENDIAN 0 #define TARGET_RT_BIG_ENDIAN 1 #elif defined(__INTEL__) - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 1 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 #define TARGET_RT_LITTLE_ENDIAN 1 #define TARGET_RT_BIG_ENDIAN 0 #else @@ -538,98 +315,6 @@ * unknown compiler */ #else - #if defined(TARGET_CPU_PPC) && TARGET_CPU_PPC - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_X86_64 0 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #elif defined(TARGET_CPU_PPC64) && TARGET_CPU_PPC64 - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_X86_64 0 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #elif defined(TARGET_CPU_X86) && TARGET_CPU_X86 - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_X86_64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #elif defined(TARGET_CPU_X86_64) && TARGET_CPU_X86_64 - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #elif defined(TARGET_CPU_ARM) && TARGET_CPU_ARM - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_X86_64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #elif defined(TARGET_CPU_ARM64) && TARGET_CPU_ARM64 - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_PPC64 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_X86_64 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #else - /* - NOTE: If your compiler errors out here then support for your compiler - has not yet been added to TargetConditionals.h. - - TargetConditionals.h is designed to be plug-and-play. It auto detects - which compiler is being run and configures the TARGET_ conditionals - appropriately. - - The short term work around is to set the TARGET_CPU_ and TARGET_OS_ - on the command line to the compiler (e.g. -DTARGET_CPU_MIPS=1 -DTARGET_OS_UNIX=1) - - The long term solution is to add a new case to this file which - auto detects your compiler and sets up the TARGET_ conditionals. - Then submit the changes to Apple Computer. - */ - #error TargetConditionals.h: unknown compiler (see comment above) - #define TARGET_CPU_PPC 0 - #define TARGET_CPU_68K 0 - #define TARGET_CPU_X86 0 - #define TARGET_CPU_ARM 0 - #define TARGET_CPU_ARM64 0 - #define TARGET_CPU_MIPS 0 - #define TARGET_CPU_SPARC 0 - #define TARGET_CPU_ALPHA 0 - #endif - #define TARGET_OS_MAC 1 - #define TARGET_OS_WIN32 0 - #define TARGET_OS_WINDOWS 0 - #define TARGET_OS_UNIX 0 - #define TARGET_OS_LINUX 0 - #define TARGET_OS_EMBEDDED 0 #if TARGET_CPU_PPC || TARGET_CPU_PPC64 #define TARGET_RT_BIG_ENDIAN 1 #define TARGET_RT_LITTLE_ENDIAN 0 @@ -649,7 +334,201 @@ #define TARGET_RT_MAC_MACHO 0 #define TARGET_RT_MAC_CFM 1 #endif - #endif +/* + * __is_target_arch based defines + */ +#if defined(__has_builtin) && __has_builtin(__is_target_arch) + #if __is_target_arch(arm64) || __is_target_arch(arm64e) || __is_target_arch(arm64_32) + #define TARGET_CPU_ARM64 1 + #elif __is_target_arch(arm) + #define TARGET_CPU_ARM 1 + #elif __is_target_arch(x86_64) + #define TARGET_CPU_X86_64 1 + #elif __is_target_arch(i386) + #define TARGET_CPU_X86 1 + #else + + #error unrecognized arch using compiler with __is_target_arch support + + #endif + +/* + * GCC and older clang fallback + */ +#elif defined(__GNUC__) && ( defined(__APPLE_CPP__) || defined(__APPLE_CC__) || defined(__MACOS_CLASSIC__) ) + #if defined(__ppc__) + #define TARGET_CPU_PPC 1 + #elif defined(__ppc64__) + #define TARGET_CPU_PPC64 1 + #elif defined(__i386__) + #define TARGET_CPU_X86 1 + #elif defined(__x86_64__) + #define TARGET_CPU_X86_64 1 + #elif defined(__arm__) + #define TARGET_CPU_ARM 1 + #elif defined(__arm64__) + #define TARGET_CPU_ARM64 1 + #else + #error unrecognized GNU C compiler + #endif + +/* + * CodeWarrior compiler from Metrowerks/Motorola + */ +#elif defined(__MWERKS__) + #if defined(__POWERPC__) + #define TARGET_CPU_PPC 1 + #elif defined(__INTEL__) + #define TARGET_CPU_X86 1 + #else + #error unknown Metrowerks CPU type + #endif + +/* + * unknown compiler + */ +#else + #if !defined(TARGET_CPU_PPC) && !defined(TARGET_CPU_PPC64) \ + && !defined(TARGET_CPU_X86) && !defined(TARGET_CPU_X86_64) \ + && !defined(TARGET_CPU_ARM) && !defined(TARGET_CPU_ARM64) + /* + TargetConditionals.h is designed to be plug-and-play. It auto detects + which compiler is being run and configures the TARGET_ conditionals + appropriately. + + The short term work around is to set the TARGET_CPU_ and TARGET_OS_ + on the command line to the compiler (e.g. -DTARGET_CPU_MIPS=1 -DTARGET_OS_UNIX=1) + + The long term solution is to add suppport for __is_target_arch and __is_target_os + to your compiler. + */ + #error TargetConditionals.h: unknown compiler (see comment above) + #endif +#endif + + + +// Make sure all TARGET_OS_* and TARGET_CPU_* values are defined +#ifndef TARGET_OS_MAC + #define TARGET_OS_MAC 0 +#endif + +#ifndef TARGET_OS_OSX + #define TARGET_OS_OSX 0 +#endif + +#ifndef TARGET_OS_IPHONE + #define TARGET_OS_IPHONE 0 +#endif + +#ifndef TARGET_OS_IOS + #define TARGET_OS_IOS 0 +#endif + +#ifndef TARGET_OS_WATCH + #define TARGET_OS_WATCH 0 +#endif + +#ifndef TARGET_OS_TV + #define TARGET_OS_TV 0 +#endif + +#ifndef TARGET_OS_SIMULATOR + #define TARGET_OS_SIMULATOR 0 +#endif + +#ifndef TARGET_OS_EMBEDDED + #define TARGET_OS_EMBEDDED 0 +#endif + +#ifndef TARGET_OS_RTKIT + #define TARGET_OS_RTKIT 0 +#endif + +#ifndef TARGET_OS_MACCATALYST + #define TARGET_OS_MACCATALYST 0 +#endif + +#ifndef TARGET_OS_VISION + #define TARGET_OS_VISION 0 +#endif + +#ifndef TARGET_OS_UIKITFORMAC + #define TARGET_OS_UIKITFORMAC 0 +#endif + +#ifndef TARGET_OS_DRIVERKIT + #define TARGET_OS_DRIVERKIT 0 +#endif + +#ifndef TARGET_OS_WIN32 + #define TARGET_OS_WIN32 0 +#endif + +#ifndef TARGET_OS_WINDOWS + #define TARGET_OS_WINDOWS 0 +#endif + + + +#ifndef TARGET_OS_LINUX + #define TARGET_OS_LINUX 0 +#endif + +#ifndef TARGET_CPU_PPC + #define TARGET_CPU_PPC 0 +#endif + +#ifndef TARGET_CPU_PPC64 + #define TARGET_CPU_PPC64 0 +#endif + +#ifndef TARGET_CPU_68K + #define TARGET_CPU_68K 0 +#endif + +#ifndef TARGET_CPU_X86 + #define TARGET_CPU_X86 0 +#endif + +#ifndef TARGET_CPU_X86_64 + #define TARGET_CPU_X86_64 0 +#endif + +#ifndef TARGET_CPU_ARM + #define TARGET_CPU_ARM 0 +#endif + +#ifndef TARGET_CPU_ARM64 + #define TARGET_CPU_ARM64 0 +#endif + +#ifndef TARGET_CPU_MIPS + #define TARGET_CPU_MIPS 0 +#endif + +#ifndef TARGET_CPU_SPARC + #define TARGET_CPU_SPARC 0 +#endif + +#ifndef TARGET_CPU_ALPHA + #define TARGET_CPU_ALPHA 0 +#endif + +#ifndef TARGET_ABI_USES_IOS_VALUES + #define TARGET_ABI_USES_IOS_VALUES (!TARGET_CPU_X86_64 || (TARGET_OS_IPHONE && !TARGET_OS_MACCATALYST)) +#endif + +#ifndef TARGET_IPHONE_SIMULATOR + #define TARGET_IPHONE_SIMULATOR TARGET_OS_SIMULATOR /* deprecated */ +#endif + +#ifndef TARGET_OS_NANO + #define TARGET_OS_NANO TARGET_OS_WATCH /* deprecated */ +#endif + + + #endif /* __TARGETCONDITIONALS__ */ diff --git a/include/__libunwind_config.h b/include/__libunwind_config.h index f69fe89e..028b9e3b 100644 --- a/include/__libunwind_config.h +++ b/include/__libunwind_config.h @@ -36,6 +36,9 @@ # if defined(__linux__) # define _LIBUNWIND_TARGET_LINUX 1 # endif +# if defined(__HAIKU__) +# define _LIBUNWIND_TARGET_HAIKU 1 +# endif # if defined(__i386__) # define _LIBUNWIND_TARGET_I386 # define _LIBUNWIND_CONTEXT_SIZE 8 @@ -177,6 +180,10 @@ #endif #define _LIBUNWIND_HIGHEST_DWARF_REGISTER \ _LIBUNWIND_HIGHEST_DWARF_REGISTER_LOONGARCH +#elif defined(__wasm__) +// Unused +#define _LIBUNWIND_CONTEXT_SIZE 0 +#define _LIBUNWIND_CURSOR_SIZE 0 # else # error "Unsupported architecture." # endif @@ -196,9 +203,9 @@ # define _LIBUNWIND_TARGET_RISCV 1 # define _LIBUNWIND_TARGET_VE 1 # define _LIBUNWIND_TARGET_S390X 1 -#define _LIBUNWIND_TARGET_LOONGARCH 1 +# define _LIBUNWIND_TARGET_LOONGARCH 1 # define _LIBUNWIND_CONTEXT_SIZE 167 -# define _LIBUNWIND_CURSOR_SIZE 179 +# define _LIBUNWIND_CURSOR_SIZE 204 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287 #endif // _LIBUNWIND_IS_NATIVE_ONLY diff --git a/include/__wctype.h b/include/__wctype.h index 3b4eb2c8..413a11c1 100644 --- a/include/__wctype.h +++ b/include/__wctype.h @@ -1,25 +1,3 @@ -/* - * Copyright (c) 2017 Apple Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ - */ /*- * Copyright (c)1999 Citrus Project, * All rights reserved. @@ -48,27 +26,18 @@ */ /* - * Common header for _wctype.h and xlocale/__wctype.h + * Common header for _wctype.h and _wchar.h + * + * Contains everything required by wctype.h except: + * + * #include <_types/_wctrans_t.h> + * int iswblank(wint_t); + * wint_t towctrans(wint_t, wctrans_t); + * wctrans_t wctrans(const char *); */ -#ifndef ___WCTYPE_H_ -#define ___WCTYPE_H_ - -#include -#include <_types.h> - -#include -#include -#include <_types/_wctype_t.h> - -#ifndef WEOF -#define WEOF __DARWIN_WEOF -#endif - -#ifndef __DARWIN_WCTYPE_TOP_inline -#define __DARWIN_WCTYPE_TOP_inline __header_inline -#endif - -#include +#include <___wctype.h> -#endif /* ___WCTYPE_H_ */ +#ifdef _USE_EXTENDED_LOCALES_ +#include +#endif /* _USE_EXTENDED_LOCALES_ */ diff --git a/include/_ctermid.h b/include/_ctermid.h index 5bbd721a..fc0ec073 100644 --- a/include/_ctermid.h +++ b/include/_ctermid.h @@ -25,10 +25,15 @@ #define _CTERMID_H_ #include +#include <_bounds.h> + +_LIBC_SINGLE_BY_DEFAULT() __BEGIN_DECLS -char *ctermid(char *); +#define L_ctermid 1024 /* size for ctermid(); PATH_MAX */ + +char *_LIBC_CSTR ctermid(char *_LIBC_COUNT_OR_NULL(L_ctermid)); __END_DECLS diff --git a/include/_ctype.h b/include/_ctype.h index 86e8b229..8f48974e 100644 --- a/include/_ctype.h +++ b/include/_ctype.h @@ -63,12 +63,16 @@ * @(#)ctype.h 8.4 (Berkeley) 1/21/94 */ -#ifndef __CTYPE_H_ +#ifndef _CTYPE_H_ +#define _CTYPE_H_ #define __CTYPE_H_ #include +#include <_bounds.h> #include +_LIBC_SINGLE_BY_DEFAULT() + #define _CTYPE_A 0x00000100L /* Alpha */ #define _CTYPE_C 0x00000200L /* Control */ #define _CTYPE_D 0x00000400L /* Digit */ @@ -118,6 +122,7 @@ #define __DARWIN_CTYPE_TOP_inline __header_inline + /* * Use inline functions if we are allowed to and the compiler supports them. */ @@ -380,8 +385,4 @@ __END_DECLS #endif /* using inlines */ -#ifdef _USE_EXTENDED_LOCALES_ -#include -#endif /* _USE_EXTENDED_LOCALES_ */ - #endif /* !_CTYPE_H_ */ diff --git a/include/_locale.h b/include/_locale.h index b87458dd..540d16b0 100644 --- a/include/_locale.h +++ b/include/_locale.h @@ -38,19 +38,22 @@ #define __LOCALE_H_ #include +#include <_bounds.h> #include <_types.h> +_LIBC_SINGLE_BY_DEFAULT() + struct lconv { - char *decimal_point; - char *thousands_sep; - char *grouping; - char *int_curr_symbol; - char *currency_symbol; - char *mon_decimal_point; - char *mon_thousands_sep; - char *mon_grouping; - char *positive_sign; - char *negative_sign; + char *_LIBC_CSTR decimal_point; + char *_LIBC_CSTR thousands_sep; + char *_LIBC_CSTR grouping; + char *_LIBC_CSTR int_curr_symbol; + char *_LIBC_CSTR currency_symbol; + char *_LIBC_CSTR mon_decimal_point; + char *_LIBC_CSTR mon_thousands_sep; + char *_LIBC_CSTR mon_grouping; + char *_LIBC_CSTR positive_sign; + char *_LIBC_CSTR negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; @@ -69,8 +72,33 @@ struct lconv { #include +#define LC_ALL_MASK ( LC_COLLATE_MASK \ + | LC_CTYPE_MASK \ + | LC_MESSAGES_MASK \ + | LC_MONETARY_MASK \ + | LC_NUMERIC_MASK \ + | LC_TIME_MASK ) +#define LC_COLLATE_MASK (1 << 0) +#define LC_CTYPE_MASK (1 << 1) +#define LC_MESSAGES_MASK (1 << 2) +#define LC_MONETARY_MASK (1 << 3) +#define LC_NUMERIC_MASK (1 << 4) +#define LC_TIME_MASK (1 << 5) + +#define _LC_NUM_MASK 6 +#define _LC_LAST_MASK (1 << (_LC_NUM_MASK - 1)) + +#define LC_GLOBAL_LOCALE ((locale_t)-1) +#define LC_C_LOCALE ((locale_t)NULL) + +#include <_types/_locale_t.h> + __BEGIN_DECLS +locale_t duplocale(locale_t); +int freelocale(locale_t); struct lconv *localeconv(void); +locale_t newlocale(int, __const char *, locale_t); +locale_t uselocale(locale_t); __END_DECLS #endif /* __LOCALE_H_ */ diff --git a/include/_regex.h b/include/_regex.h index 1fb98e31..76bd3848 100644 --- a/include/_regex.h +++ b/include/_regex.h @@ -90,13 +90,17 @@ * Common header for regex.h and xlocale/_regex.h */ -#ifndef __REGEX_H_ +#ifndef _REGEX_H_ +#define _REGEX_H_ #define __REGEX_H_ +#include <_bounds.h> #include <_types.h> #include #include +_LIBC_SINGLE_BY_DEFAULT() + /*********/ /* types */ /*********/ @@ -109,7 +113,7 @@ typedef __darwin_off_t regoff_t; typedef struct { int re_magic; size_t re_nsub; /* number of parenthesized subexpressions */ - const char *re_endp; /* end pointer for REG_PEND */ + const char *_LIBC_UNSAFE_INDEXABLE re_endp; /* end pointer for REG_PEND */ struct re_guts *re_g; /* none of your business :-) */ } regex_t; @@ -118,4 +122,123 @@ typedef struct { regoff_t rm_eo; /* end of match */ } regmatch_t; -#endif /* !__REGEX_H_ */ +/*******************/ +/* regcomp() flags */ +/*******************/ +#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL +#define REG_BASIC 0000 /* Basic regular expressions (synonym for 0) */ +#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ + +#define REG_EXTENDED 0001 /* Extended regular expressions */ +#define REG_ICASE 0002 /* Compile ignoring upper/lower case */ +#define REG_NOSUB 0004 /* Compile only reporting success/failure */ +#define REG_NEWLINE 0010 /* Compile for newline-sensitive matching */ + +#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL +#define REG_NOSPEC 0020 /* Compile turning off all special characters */ + +#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8 \ + || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \ + || defined(__DRIVERKIT_VERSION_MIN_REQUIRED) +#define REG_LITERAL REG_NOSPEC +#endif + +#define REG_PEND 0040 /* Use re_endp as end pointer */ + +#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8 \ + || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \ + || defined(__DRIVERKIT_VERSION_MIN_REQUIRED) +#define REG_MINIMAL 0100 /* Compile using minimal repetition */ +#define REG_UNGREEDY REG_MINIMAL +#endif + +#define REG_DUMP 0200 /* Unused */ + +#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8 \ + || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \ + || defined(__DRIVERKIT_VERSION_MIN_REQUIRED) +#define REG_ENHANCED 0400 /* Additional (non-POSIX) features */ +#endif +#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ + +/********************/ +/* regerror() flags */ +/********************/ +#define REG_ENOSYS (-1) /* Reserved */ +#define REG_NOMATCH 1 /* regexec() function failed to match */ +#define REG_BADPAT 2 /* invalid regular expression */ +#define REG_ECOLLATE 3 /* invalid collating element */ +#define REG_ECTYPE 4 /* invalid character class */ +#define REG_EESCAPE 5 /* trailing backslash (\) */ +#define REG_ESUBREG 6 /* invalid backreference number */ +#define REG_EBRACK 7 /* brackets ([ ]) not balanced */ +#define REG_EPAREN 8 /* parentheses not balanced */ +#define REG_EBRACE 9 /* braces not balanced */ +#define REG_BADBR 10 /* invalid repetition count(s) */ +#define REG_ERANGE 11 /* invalid character range */ +#define REG_ESPACE 12 /* out of memory */ +#define REG_BADRPT 13 /* repetition-operator operand invalid */ + +#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL +#define REG_EMPTY 14 /* Unused */ +#define REG_ASSERT 15 /* Unused */ +#define REG_INVARG 16 /* invalid argument to regex routine */ +#define REG_ILLSEQ 17 /* illegal byte sequence */ + +#define REG_ATOI 255 /* convert name to number (!) */ +#define REG_ITOA 0400 /* convert number to name (!) */ +#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ + +/*******************/ +/* regexec() flags */ +/*******************/ +#define REG_NOTBOL 00001 /* First character not at beginning of line */ +#define REG_NOTEOL 00002 /* Last character not at end of line */ + +#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL +#define REG_STARTEND 00004 /* String start/end in pmatch[0] */ +#define REG_TRACE 00400 /* Unused */ +#define REG_LARGE 01000 /* Unused */ +#define REG_BACKR 02000 /* force use of backref code */ + +#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8 \ + || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \ + || defined(__DRIVERKIT_VERSION_MIN_REQUIRED) +#define REG_BACKTRACKING_MATCHER REG_BACKR +#endif +#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ + +__BEGIN_DECLS +int regcomp(regex_t * __restrict, const char * __restrict, int) __DARWIN_ALIAS(regcomp); +size_t regerror(int, const regex_t * __restrict, char *_LIBC_COUNT(__errbuf_size) __restrict, size_t __errbuf_size) __cold; +/* + * gcc under c99 mode won't compile "[ __restrict]" by itself. As a workaround, + * a dummy argument name is added. + */ +int regexec(const regex_t * __restrict, const char * __restrict, size_t __nmatch, + regmatch_t __pmatch[ __restrict _LIBC_COUNT(__nmatch)], int); +void regfree(regex_t *); + +#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL + +/* Darwin extensions */ +int regncomp(regex_t * __restrict, const char *_LIBC_COUNT(__len) __restrict, size_t __len, int) + __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0); +int regnexec(const regex_t * __restrict, const char *_LIBC_COUNT(__len) __restrict, size_t __len, + size_t __nmatch, regmatch_t __pmatch[ __restrict _LIBC_COUNT(__nmatch)], int) + __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0); +int regwcomp(regex_t * __restrict, const wchar_t * __restrict, int) + __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0); +int regwexec(const regex_t * __restrict, const wchar_t * __restrict, size_t __nmatch, + regmatch_t __pmatch[ __restrict _LIBC_COUNT(__nmatch)], int) + __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0); +int regwncomp(regex_t * __restrict, const wchar_t * _LIBC_COUNT(__len) __restrict, size_t __len, int) + __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0); +int regwnexec(const regex_t * __restrict, const wchar_t * _LIBC_COUNT(__len) __restrict, + size_t __len, size_t __nmatch, regmatch_t __pmatch[ __restrict _LIBC_COUNT(__nmatch)], int) + __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0); + +#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ +__END_DECLS + +#endif /* !_REGEX_H_ */ diff --git a/include/_stdio.h b/include/_stdio.h index 0f3ae7a7..e8b46356 100644 --- a/include/_stdio.h +++ b/include/_stdio.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, 2007, 2009, 2010 Apple Inc. All rights reserved. + * Copyright (c) 2000, 2005, 2007, 2009, 2010, 2023 Apple Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * @@ -62,9 +62,11 @@ * Common header for stdio.h and xlocale/_stdio.h */ -#ifndef __STDIO_H_ +#ifndef _STDIO_H_ +#define _STDIO_H_ #define __STDIO_H_ +#include <_bounds.h> #include #include @@ -77,6 +79,9 @@ #include #include +#include <_printf.h> + +_LIBC_SINGLE_BY_DEFAULT() typedef __darwin_off_t fpos_t; @@ -90,7 +95,7 @@ typedef __darwin_off_t fpos_t; /* stdio buffers */ struct __sbuf { - unsigned char *_base; + unsigned char *_LIBC_COUNT(_size) _base; int _size; }; @@ -124,7 +129,7 @@ struct __sFILEX; * NB: see WARNING above before changing the layout of this structure! */ typedef struct __sFILE { - unsigned char *_p; /* current position in (some) buffer */ + unsigned char *_LIBC_UNSAFE_INDEXABLE _p; /* current position in (some) buffer */ int _r; /* read space left for getc() */ int _w; /* write space left for putc() */ short _flags; /* flags, below; this FILE is free if 0 */ @@ -135,9 +140,9 @@ typedef struct __sFILE { /* operations */ void *_cookie; /* cookie passed to io functions */ int (* _Nullable _close)(void *); - int (* _Nullable _read) (void *, char *, int); + int (* _Nullable _read) (void *, char *_LIBC_COUNT(__n), int __n); fpos_t (* _Nullable _seek) (void *, fpos_t, int); - int (* _Nullable _write)(void *, const char *, int); + int (* _Nullable _write)(void *, const char *_LIBC_COUNT(__n), int __n); /* separate buffer for long sequences of ungetc() */ struct __sbuf _ub; /* ungetc buffer */ @@ -156,4 +161,346 @@ typedef struct __sFILE { fpos_t _offset; /* current lseek offset (see WARNING) */ } FILE; -#endif /* __STDIO_H_ */ +#include + +__BEGIN_DECLS +extern FILE *__stdinp __swift_nonisolated_unsafe; +extern FILE *__stdoutp __swift_nonisolated_unsafe; +extern FILE *__stderrp __swift_nonisolated_unsafe; +__END_DECLS + +#define __SLBF 0x0001 /* line buffered */ +#define __SNBF 0x0002 /* unbuffered */ +#define __SRD 0x0004 /* OK to read */ +#define __SWR 0x0008 /* OK to write */ + /* RD and WR are never simultaneously asserted */ +#define __SRW 0x0010 /* open for reading & writing */ +#define __SEOF 0x0020 /* found EOF */ +#define __SERR 0x0040 /* found error */ +#define __SMBF 0x0080 /* _buf is from malloc */ +#define __SAPP 0x0100 /* fdopen()ed in append mode */ +#define __SSTR 0x0200 /* this is an sprintf/snprintf string */ +#define __SOPT 0x0400 /* do fseek() optimisation */ +#define __SNPT 0x0800 /* do not do fseek() optimisation */ +#define __SOFF 0x1000 /* set iff _offset is in fact correct */ +#define __SMOD 0x2000 /* true => fgetln modified _p text */ +#define __SALC 0x4000 /* allocate string space dynamically */ +#define __SIGN 0x8000 /* ignore this file in _fwalk */ + +/* + * The following three definitions are for ANSI C, which took them + * from System V, which brilliantly took internal interface macros and + * made them official arguments to setvbuf(), without renaming them. + * Hence, these ugly _IOxxx names are *supposed* to appear in user code. + * + * Although numbered as their counterparts above, the implementation + * does not rely on this. + */ +#define _IOFBF 0 /* setvbuf should set fully buffered */ +#define _IOLBF 1 /* setvbuf should set line buffered */ +#define _IONBF 2 /* setvbuf should set unbuffered */ + +#define BUFSIZ 1024 /* size of buffer used by setbuf */ +#define EOF (-1) + + /* must be == _POSIX_STREAM_MAX */ +#define FOPEN_MAX 20 /* must be <= OPEN_MAX */ +#define FILENAME_MAX 1024 /* must be <= PATH_MAX */ + +/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */ +#ifndef _ANSI_SOURCE +#define P_tmpdir "/var/tmp/" +#endif +#define L_tmpnam 1024 /* XXX must be == PATH_MAX */ +#define TMP_MAX 308915776 + +#define stdin __stdinp +#define stdout __stdoutp +#define stderr __stderrp + +#ifdef _DARWIN_UNLIMITED_STREAMS +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2 +#error "_DARWIN_UNLIMITED_STREAMS specified, but -miphoneos-version-min version does not support it." +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_6 +#error "_DARWIN_UNLIMITED_STREAMS specified, but -mmacosx-version-min version does not support it." +#endif +#endif + +/* ANSI-C */ + +__BEGIN_DECLS +void clearerr(FILE *); +int fclose(FILE *); +int feof(FILE *); +int ferror(FILE *); +int fflush(FILE *); +int fgetc(FILE *); +int fgetpos(FILE * __restrict, fpos_t *); +char *_LIBC_CSTR fgets(char * __restrict _LIBC_COUNT(__size), int __size, FILE *); +#if defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE) +FILE *fopen(const char * __restrict __filename, const char * __restrict __mode) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(fopen)); +#else /* !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */ +FILE *fopen(const char * __restrict __filename, const char * __restrict __mode) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fopen)); +#endif /* (DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */ +int fprintf(FILE * __restrict, const char * __restrict, ...) __printflike(2, 3); +int fputc(int, FILE *); +int fputs(const char * __restrict, FILE * __restrict) __DARWIN_ALIAS(fputs); +size_t fread(void * __restrict _LIBC_SIZE(__size * __nitems) __ptr, size_t __size, size_t __nitems, FILE * __restrict __stream); +FILE *freopen(const char * __restrict, const char * __restrict, + FILE * __restrict) __DARWIN_ALIAS(freopen); +int fscanf(FILE * __restrict, const char * __restrict, ...) __scanflike(2, 3); +int fseek(FILE *, long, int); +int fsetpos(FILE *, const fpos_t *); +long ftell(FILE *); +size_t fwrite(const void * __restrict _LIBC_SIZE(__size * __nitems) __ptr, size_t __size, size_t __nitems, FILE * __restrict __stream) __DARWIN_ALIAS(fwrite); +int getc(FILE *); +int getchar(void); + +#if !defined(_POSIX_C_SOURCE) +__deprecated_msg("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of gets(3), it is highly recommended that you use fgets(3) instead.") +#endif +char *_LIBC_CSTR gets(char *_LIBC_UNSAFE_INDEXABLE) _LIBC_PTRCHECK_REPLACED(fgets); + +void perror(const char *) __cold; +int putc(int, FILE *); +int putchar(int); +int puts(const char *); +int remove(const char *); +int rename (const char *__old, const char *__new); +void rewind(FILE *); +int scanf(const char * __restrict, ...) __scanflike(1, 2); +void setbuf(FILE * __restrict, char * __restrict _LIBC_COUNT_OR_NULL(BUFSIZ)); +int setvbuf(FILE * __restrict, char * __restrict _LIBC_COUNT_OR_NULL(__size), int, size_t __size); + +__swift_unavailable("Use snprintf instead.") +_LIBC_PTRCHECK_REPLACED("snprintf") +#if !defined(_POSIX_C_SOURCE) +__deprecated_msg("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.") +#endif +int sprintf(char * __restrict _LIBC_UNSAFE_INDEXABLE, const char * __restrict, ...) __printflike(2, 3) _LIBC_PTRCHECK_REPLACED(snprintf); + +int sscanf(const char * __restrict, const char * __restrict, ...) __scanflike(2, 3); +FILE *tmpfile(void); + +__swift_unavailable("Use mkstemp(3) instead.") +#if !defined(_POSIX_C_SOURCE) +__deprecated_msg("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tmpnam(3), it is highly recommended that you use mkstemp(3) instead.") +#endif +char *_LIBC_CSTR tmpnam(char *_LIBC_COUNT(L_tmpnam)); + +int ungetc(int, FILE *); +int vfprintf(FILE * __restrict, const char * __restrict, va_list) __printflike(2, 0); +int vprintf(const char * __restrict, va_list) __printflike(1, 0); + +__swift_unavailable("Use vsnprintf instead.") +_LIBC_PTRCHECK_REPLACED("vsnprintf") +#if !defined(_POSIX_C_SOURCE) +__deprecated_msg("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use vsnprintf(3) instead.") +#endif +int vsprintf(char * __restrict _LIBC_UNSAFE_INDEXABLE, const char * __restrict, va_list) __printflike(2, 0) _LIBC_PTRCHECK_REPLACED(vsnprintf); +__END_DECLS + + + +/* Additional functionality provided by: + * POSIX.1-1988 + */ + +#if __DARWIN_C_LEVEL >= 198808L + +#include <_ctermid.h> + +__BEGIN_DECLS + +#if defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE) +FILE *fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(fdopen)); +#else /* !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */ +FILE *fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fdopen)); +#endif /* (DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */ +int fileno(FILE *); +__END_DECLS +#endif /* __DARWIN_C_LEVEL >= 198808L */ + + +/* Additional functionality provided by: + * POSIX.2-1992 C Language Binding Option + */ + +#if __DARWIN_C_LEVEL >= 199209L +__BEGIN_DECLS +int pclose(FILE *) __swift_unavailable("Use posix_spawn APIs or NSTask instead. (On iOS, process spawning is unavailable.)"); +#if defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE) +FILE *popen(const char *, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(popen)) __swift_unavailable("Use posix_spawn APIs or NSTask instead. (On iOS, process spawning is unavailable.)"); +#else /* !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */ +FILE *popen(const char *, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(popen)) __swift_unavailable("Use posix_spawn APIs or NSTask instead. (On iOS, process spawning is unavailable.)"); +#endif /* (DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */ +__END_DECLS +#endif /* __DARWIN_C_LEVEL >= 199209L */ + +/* Additional functionality provided by: + * POSIX.1c-1995, + * POSIX.1i-1995, + * and the omnibus ISO/IEC 9945-1: 1996 + */ + +#if __DARWIN_C_LEVEL >= 199506L + +/* Functions internal to the implementation. */ +__BEGIN_DECLS +int __srget(FILE *); +int __svfscanf(FILE *, const char *, va_list) __scanflike(2, 0); +int __swbuf(int, FILE *); +__END_DECLS + +/* + * The __sfoo macros are here so that we can + * define function versions in the C library. + */ +#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++)) +#if defined(__GNUC__) && defined(__STDC__) +__header_always_inline int __sputc(int _c, FILE *_p) { + if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) + return (*_p->_p++ = _c); + else + return (__swbuf(_c, _p)); +} +#else +/* + * This has been tuned to generate reasonable code on the vax using pcc. + */ +#define __sputc(c, p) \ + (--(p)->_w < 0 ? \ + (p)->_w >= (p)->_lbfsize ? \ + (*(p)->_p = (c)), *(p)->_p != '\n' ? \ + (int)*(p)->_p++ : \ + __swbuf('\n', p) : \ + __swbuf((int)(c), p) : \ + (*(p)->_p = (c), (int)*(p)->_p++)) +#endif + +#define __sfeof(p) (((p)->_flags & __SEOF) != 0) +#define __sferror(p) (((p)->_flags & __SERR) != 0) +#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF))) +#define __sfileno(p) ((p)->_file) + +__BEGIN_DECLS +void flockfile(FILE *); +int ftrylockfile(FILE *); +void funlockfile(FILE *); +int getc_unlocked(FILE *); +int getchar_unlocked(void); +int putc_unlocked(int, FILE *); +int putchar_unlocked(int); + +/* Removed in Issue 6 */ +#if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L +int getw(FILE *); +int putw(int, FILE *); +#endif + +__swift_unavailable("Use mkstemp(3) instead.") +#if !defined(_POSIX_C_SOURCE) +__deprecated_msg("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tempnam(3), it is highly recommended that you use mkstemp(3) instead.") +#endif +char *_LIBC_CSTR tempnam(const char *__dir, const char *__prefix) __DARWIN_ALIAS(tempnam); +__END_DECLS + +#ifndef lint +#define getc_unlocked(fp) __sgetc(fp) +#define putc_unlocked(x, fp) __sputc(x, fp) +#endif /* lint */ + +#define getchar_unlocked() getc_unlocked(stdin) +#define putchar_unlocked(x) putc_unlocked(x, stdout) +#endif /* __DARWIN_C_LEVEL >= 199506L */ + + + +/* Additional functionality provided by: + * POSIX.1-2001 + * ISO C99 + */ + +#if __DARWIN_C_LEVEL >= 200112L +#include + +__BEGIN_DECLS +int fseeko(FILE * __stream, off_t __offset, int __whence); +off_t ftello(FILE * __stream); +__END_DECLS +#endif /* __DARWIN_C_LEVEL >= 200112L */ + +#if __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus) +__BEGIN_DECLS +int snprintf(char * __restrict _LIBC_COUNT(__size) __str, size_t __size, const char * __restrict __format, ...) __printflike(3, 4); +int vfscanf(FILE * __restrict __stream, const char * __restrict __format, va_list) __scanflike(2, 0); +int vscanf(const char * __restrict __format, va_list) __scanflike(1, 0); +int vsnprintf(char * __restrict _LIBC_COUNT(__size) __str, size_t __size, const char * __restrict __format, va_list) __printflike(3, 0); +int vsscanf(const char * __restrict __str, const char * __restrict __format, va_list) __scanflike(2, 0); +__END_DECLS +#endif /* __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus) */ + + + +/* Additional functionality provided by: + * POSIX.1-2008 + */ + +#if __DARWIN_C_LEVEL >= 200809L +#include + +__BEGIN_DECLS +int dprintf(int, const char * __restrict, ...) __printflike(2, 3) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3); +int vdprintf(int, const char * __restrict, va_list) __printflike(2, 0) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3); +ssize_t getdelim(char *_LIBC_COUNT(*__linecapp) *__restrict __linep, size_t * __restrict __linecapp, int __delimiter, FILE * __restrict __stream) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3); +ssize_t getline(char *_LIBC_COUNT(*__linecapp) *__restrict __linep, size_t * __restrict __linecapp, FILE * __restrict __stream) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3); +FILE *fmemopen(void * __restrict __buf _LIBC_SIZE(__size), size_t __size, const char * __restrict __mode) __API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0)); +FILE *open_memstream(char *_LIBC_COUNT(*__sizep) *__bufp, size_t *__sizep) __API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0)); +__END_DECLS +#endif /* __DARWIN_C_LEVEL >= 200809L */ + + + +/* Darwin extensions */ + +#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL +__BEGIN_DECLS +extern __const int sys_nerr; /* perror(3) external variables */ +extern __const char *__const sys_errlist[]; + +int asprintf(char *_LIBC_CSTR *__restrict, const char * __restrict, ...) __printflike(2, 3); +char *_LIBC_CSTR ctermid_r(char *_LIBC_COUNT(L_ctermid)); +char *_LIBC_COUNT(*__len) fgetln(FILE *, size_t *__len); +__const char *fmtcheck(const char *, const char *) __attribute__((format_arg(2))); +int fpurge(FILE *); +void setbuffer(FILE *, char *_LIBC_COUNT_OR_NULL(__size), int __size); +int setlinebuf(FILE *); +int vasprintf(char *_LIBC_CSTR *__restrict, const char * __restrict, va_list) __printflike(2, 0); + + +/* + * Stdio function-access interface. + */ +FILE *funopen(const void *, + int (* _Nullable)(void *, char *_LIBC_COUNT(__n), int __n), + int (* _Nullable)(void *, const char *_LIBC_COUNT(__n), int __n), + fpos_t (* _Nullable)(void *, fpos_t, int), + int (* _Nullable)(void *)); +__END_DECLS +#define fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0) +#define fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0) + +#define feof_unlocked(p) __sfeof(p) +#define ferror_unlocked(p) __sferror(p) +#define clearerr_unlocked(p) __sclearerr(p) +#define fileno_unlocked(p) __sfileno(p) + +#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ + + +#if defined (__GNUC__) && _FORTIFY_SOURCE > 0 && !defined (__cplusplus) +/* Security checking functions. */ +#include +#endif + +#endif /* _STDIO_H_ */ diff --git a/include/_types.h b/include/_types.h index 83cd5101..c695ab64 100644 --- a/include/_types.h +++ b/include/_types.h @@ -25,8 +25,11 @@ #define __TYPES_H_ #include +#include <_bounds.h> #include /* __uint32_t */ +_LIBC_SINGLE_BY_DEFAULT() + #if __GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7 #define __strfmonlike(fmtarg, firstvararg) \ __attribute__((__format__ (__strfmon__, fmtarg, firstvararg))) diff --git a/include/_wctype.h b/include/_wctype.h index 04da7960..75e6a602 100644 --- a/include/_wctype.h +++ b/include/_wctype.h @@ -23,23 +23,25 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * + * citrus Id: wctype.h,v 1.4 2000/12/21 01:50:21 itojun Exp + * $NetBSD: wctype.h,v 1.3 2000/12/22 14:16:16 itojun Exp $ + * $FreeBSD: /repoman/r/ncvs/src/include/wctype.h,v 1.10 2002/08/21 16:19:55 mike Exp $ */ -/* - * Common header for wctype.h and wchar.h - * - * Contains everything required by wctype.h except: - * - * #include <_types/_wctrans_t.h> - * int iswblank(wint_t); - * wint_t towctrans(wint_t, wctrans_t); - * wctrans_t wctrans(const char *); - */ +#ifndef _WCTYPE_H_ +#define _WCTYPE_H_ -#ifndef __WCTYPE_H_ -#define __WCTYPE_H_ +#include +#include <_bounds.h> +#include <_types.h> +#include <_types/_wctrans_t.h> + +#define __DARWIN_WCTYPE_TOP_inline __header_inline #include <__wctype.h> +#include + +_LIBC_SINGLE_BY_DEFAULT() /* * Use inline functions if we are allowed to and the compiler supports them. @@ -48,117 +50,80 @@ (defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus)) __DARWIN_WCTYPE_TOP_inline int -iswalnum(wint_t _wc) +iswblank(wint_t _wc) { - return (__istype(_wc, _CTYPE_A|_CTYPE_D)); + return (__istype(_wc, _CTYPE_B)); } +#if !defined(_ANSI_SOURCE) __DARWIN_WCTYPE_TOP_inline int -iswalpha(wint_t _wc) +iswascii(wint_t _wc) { - return (__istype(_wc, _CTYPE_A)); + return ((_wc & ~0x7F) == 0); } __DARWIN_WCTYPE_TOP_inline int -iswcntrl(wint_t _wc) +iswhexnumber(wint_t _wc) { - return (__istype(_wc, _CTYPE_C)); + return (__istype(_wc, _CTYPE_X)); } __DARWIN_WCTYPE_TOP_inline int -iswctype(wint_t _wc, wctype_t _charclass) +iswideogram(wint_t _wc) { - return (__istype(_wc, _charclass)); + return (__istype(_wc, _CTYPE_I)); } __DARWIN_WCTYPE_TOP_inline int -iswdigit(wint_t _wc) +iswnumber(wint_t _wc) { - return (__isctype(_wc, _CTYPE_D)); + return (__istype(_wc, _CTYPE_D)); } __DARWIN_WCTYPE_TOP_inline int -iswgraph(wint_t _wc) +iswphonogram(wint_t _wc) { - return (__istype(_wc, _CTYPE_G)); + return (__istype(_wc, _CTYPE_Q)); } __DARWIN_WCTYPE_TOP_inline int -iswlower(wint_t _wc) +iswrune(wint_t _wc) { - return (__istype(_wc, _CTYPE_L)); + return (__istype(_wc, 0xFFFFFFF0L)); } __DARWIN_WCTYPE_TOP_inline int -iswprint(wint_t _wc) +iswspecial(wint_t _wc) { - return (__istype(_wc, _CTYPE_R)); -} - -__DARWIN_WCTYPE_TOP_inline int -iswpunct(wint_t _wc) -{ - return (__istype(_wc, _CTYPE_P)); -} - -__DARWIN_WCTYPE_TOP_inline int -iswspace(wint_t _wc) -{ - return (__istype(_wc, _CTYPE_S)); -} - -__DARWIN_WCTYPE_TOP_inline int -iswupper(wint_t _wc) -{ - return (__istype(_wc, _CTYPE_U)); -} - -__DARWIN_WCTYPE_TOP_inline int -iswxdigit(wint_t _wc) -{ - return (__isctype(_wc, _CTYPE_X)); -} - -__DARWIN_WCTYPE_TOP_inline wint_t -towlower(wint_t _wc) -{ - return (__tolower(_wc)); -} - -__DARWIN_WCTYPE_TOP_inline wint_t -towupper(wint_t _wc) -{ - return (__toupper(_wc)); + return (__istype(_wc, _CTYPE_T)); } +#endif /* !_ANSI_SOURCE */ #else /* not using inlines */ __BEGIN_DECLS -int iswalnum(wint_t); -int iswalpha(wint_t); -int iswcntrl(wint_t); -int iswctype(wint_t, wctype_t); -int iswdigit(wint_t); -int iswgraph(wint_t); -int iswlower(wint_t); -int iswprint(wint_t); -int iswpunct(wint_t); -int iswspace(wint_t); -int iswupper(wint_t); -int iswxdigit(wint_t); -wint_t towlower(wint_t); -wint_t towupper(wint_t); +int iswblank(wint_t); + +#if !defined(_ANSI_SOURCE) +wint_t iswascii(wint_t); +wint_t iswhexnumber(wint_t); +wint_t iswideogram(wint_t); +wint_t iswnumber(wint_t); +wint_t iswphonogram(wint_t); +wint_t iswrune(wint_t); +wint_t iswspecial(wint_t); +#endif __END_DECLS #endif /* using inlines */ __BEGIN_DECLS -wctype_t - wctype(const char *); +#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) +wint_t nextwctype(wint_t, wctype_t); +#endif +wint_t towctrans(wint_t, wctrans_t); +wctrans_t + wctrans(const char *); __END_DECLS -#ifdef _USE_EXTENDED_LOCALES_ -#include -#endif /* _USE_EXTENDED_LOCALES_ */ - -#endif /* __WCTYPE_H_ */ +#endif /* _WCTYPE_H_ */ diff --git a/include/_xlocale.h b/include/_xlocale.h index 0ba412c5..6f290567 100644 --- a/include/_xlocale.h +++ b/include/_xlocale.h @@ -21,17 +21,26 @@ * @APPLE_LICENSE_HEADER_END@ */ -#ifndef __XLOCALE_H_ -#define __XLOCALE_H_ +#ifndef _XLOCALE_H_ +#define _XLOCALE_H_ #include +#include <_bounds.h> -struct _xlocale; /* forward reference */ -typedef struct _xlocale * locale_t; +#ifndef _USE_EXTENDED_LOCALES_ +#define _USE_EXTENDED_LOCALES_ +#endif /* _USE_EXTENDED_LOCALES_ */ + +#include <_locale.h> +#include <__xlocale.h> + +_LIBC_SINGLE_BY_DEFAULT() __BEGIN_DECLS -int ___mb_cur_max(void); -int ___mb_cur_max_l(locale_t); +extern const locale_t _c_locale; + +struct lconv * localeconv_l(locale_t); +__const char * querylocale(int, locale_t); __END_DECLS -#endif /* __XLOCALE_H_ */ +#endif /* _XLOCALE_H_ */ diff --git a/include/alloca.h b/include/alloca.h index 0264ae68..003b963e 100644 --- a/include/alloca.h +++ b/include/alloca.h @@ -25,11 +25,14 @@ #define _ALLOCA_H_ #include +#include <_bounds.h> #include <_types.h> #include +_LIBC_SINGLE_BY_DEFAULT() + __BEGIN_DECLS -void *alloca(size_t); /* built-in for gcc */ +void *_LIBC_SIZE(__size) alloca(size_t __size); /* built-in for gcc */ __END_DECLS #if defined(__GNUC__) && __GNUC__ >= 3 diff --git a/include/ar.h b/include/ar.h index e04874fc..cb28fef8 100644 --- a/include/ar.h +++ b/include/ar.h @@ -44,6 +44,10 @@ #ifndef _AR_H_ #define _AR_H_ +#include <_bounds.h> + +_LIBC_SINGLE_BY_DEFAULT() + /* Pre-4BSD archives had these magic numbers in them. */ #define OARMAG1 0177555 #define OARMAG2 0177545 diff --git a/include/arm/_types.h b/include/arm/_types.h index 44575038..7af8008c 100644 --- a/include/arm/_types.h +++ b/include/arm/_types.h @@ -6,6 +6,19 @@ #if defined (__arm__) || defined (__arm64__) +#if defined(__has_feature) && __has_feature(modules) +#define USE_CLANG_TYPES 1 +#else +#define USE_CLANG_TYPES 0 +#endif + +#if USE_CLANG_TYPES +#include +#include +#include +#include +#endif + /* * This header file contains integer types. It's intended to also contain * flotaing point and other arithmetic types, as needed, later. @@ -58,7 +71,9 @@ typedef union { typedef __mbstate_t __darwin_mbstate_t; /* mbstate_t */ -#if defined(__PTRDIFF_TYPE__) +#if USE_CLANG_TYPES +typedef ptrdiff_t __darwin_ptrdiff_t; /* ptr1 - ptr2 */ +#elif defined(__PTRDIFF_TYPE__) typedef __PTRDIFF_TYPE__ __darwin_ptrdiff_t; /* ptr1 - ptr2 */ #elif defined(__LP64__) typedef long __darwin_ptrdiff_t; /* ptr1 - ptr2 */ @@ -66,19 +81,25 @@ typedef long __darwin_ptrdiff_t; /* ptr1 - ptr2 */ typedef int __darwin_ptrdiff_t; /* ptr1 - ptr2 */ #endif /* __GNUC__ */ -#if defined(__SIZE_TYPE__) +#if USE_CLANG_TYPES +typedef size_t __darwin_size_t; /* sizeof() */ +#elif defined(__SIZE_TYPE__) typedef __SIZE_TYPE__ __darwin_size_t; /* sizeof() */ #else typedef unsigned long __darwin_size_t; /* sizeof() */ #endif -#if (__GNUC__ > 2) +#if USE_CLANG_TYPES +typedef va_list __darwin_va_list; /* va_list */ +#elif (__GNUC__ > 2) typedef __builtin_va_list __darwin_va_list; /* va_list */ #else typedef void * __darwin_va_list; /* va_list */ #endif -#if defined(__WCHAR_TYPE__) +#if USE_CLANG_TYPES +typedef wchar_t __darwin_wchar_t; /* wchar_t */ +#elif defined(__WCHAR_TYPE__) typedef __WCHAR_TYPE__ __darwin_wchar_t; /* wchar_t */ #else typedef __darwin_ct_rune_t __darwin_wchar_t; /* wchar_t */ @@ -97,6 +118,8 @@ typedef __uint32_t __darwin_socklen_t; /* socklen_t (duh) */ typedef long __darwin_ssize_t; /* byte count or error */ typedef long __darwin_time_t; /* time() */ +#undef USE_CLANG_TYPES + #endif /* defined (__arm__) || defined (__arm64__) */ #endif /* _BSD_ARM__TYPES_H_ */ diff --git a/include/arm/endian.h b/include/arm/endian.h index f5e555fe..0b43ea8b 100644 --- a/include/arm/endian.h +++ b/include/arm/endian.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2007 Apple Inc. All rights reserved. + * Copyright (c) 2000-2023 Apple Inc. All rights reserved. */ /* * Copyright 1995 NeXT Computer, Inc. All rights reserved. @@ -56,24 +56,8 @@ #define _QUAD_HIGHWORD 1 #define _QUAD_LOWWORD 0 -/* - * Definitions for byte order, according to byte significance from low - * address to high. - */ -#define __DARWIN_LITTLE_ENDIAN 1234 /* LSB first: i386, vax */ -#define __DARWIN_BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */ -#define __DARWIN_PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */ - -#define __DARWIN_BYTE_ORDER __DARWIN_LITTLE_ENDIAN - #if defined(KERNEL) || (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) -#define LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN -#define BIG_ENDIAN __DARWIN_BIG_ENDIAN -#define PDP_ENDIAN __DARWIN_PDP_ENDIAN - -#define BYTE_ORDER __DARWIN_BYTE_ORDER - #include #endif /* defined(KERNEL) || (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) */ diff --git a/include/arm/limits.h b/include/arm/limits.h index 1768884a..8483a697 100644 --- a/include/arm/limits.h +++ b/include/arm/limits.h @@ -44,6 +44,12 @@ #include #include +#if defined(__has_feature) && __has_feature(modules) +#define USE_CLANG_LIMITS 1 +#else +#define USE_CLANG_LIMITS 0 +#endif + #undef MB_LEN_MAX #define MB_LEN_MAX 6 /* Allow 31 bit UTF2 */ @@ -59,7 +65,7 @@ #include_next #endif /* __has_include_next */ -#else +#elif !USE_CLANG_LIMITS #define CHAR_BIT 8 /* number of bits in a char */ @@ -102,7 +108,7 @@ #define LLONG_MAX 0x7fffffffffffffffLL /* max signed long long */ #define LLONG_MIN (-0x7fffffffffffffffLL-1) /* min signed long long */ -#endif /* defined(__has_include) && __has_include(<__xnu_libcxx_sentinel.h>) */ +#endif /* !USE_CLANG_LIMITS */ #if !defined(_ANSI_SOURCE) #ifdef __LP64__ @@ -123,6 +129,8 @@ #endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE */ #endif /* !_ANSI_SOURCE */ +#undef USE_CLANG_LIMITS + #endif /* defined (__arm__) || defined (__arm64__) */ #endif /* _ARM_LIMITS_H_ */ diff --git a/include/arm/types.h b/include/arm/types.h index 35c55d0c..f85a6620 100644 --- a/include/arm/types.h +++ b/include/arm/types.h @@ -91,6 +91,7 @@ typedef int32_t user_time_t; typedef int64_t user_off_t; #endif + #define USER_ADDR_NULL ((user_addr_t) 0) #define CAST_USER_ADDR_T(a_ptr) ((user_addr_t)((uintptr_t)(a_ptr))) diff --git a/include/arpa/inet.h b/include/arpa/inet.h index 46f44e1a..d7ec7ef2 100644 --- a/include/arpa/inet.h +++ b/include/arpa/inet.h @@ -63,6 +63,7 @@ /* External definitions for functions in inet(3), addr2ascii(3) */ +#include <_bounds.h> #include #include #include /* uint32_t uint16_t */ @@ -70,26 +71,28 @@ #include /* htonl() and family if (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ #include /* in_addr */ +_LIBC_SINGLE_BY_DEFAULT() + __BEGIN_DECLS in_addr_t inet_addr(const char *); -char *inet_ntoa(struct in_addr); -const char *inet_ntop(int, const void *, char *, socklen_t); +char *_LIBC_CSTR inet_ntoa(struct in_addr); +const char *inet_ntop(int, const void *, char *_LIBC_COUNT(__size), socklen_t __size); int inet_pton(int, const char *, void *); #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) int ascii2addr(int, const char *, void *); -char *addr2ascii(int, const void *, int, char *); +char *_LIBC_CSTR addr2ascii(int, const void *_LIBC_SIZE(__size), int __size, char *_LIBC_UNSAFE_INDEXABLE); int inet_aton(const char *, struct in_addr *); in_addr_t inet_lnaof(struct in_addr); struct in_addr inet_makeaddr(in_addr_t, in_addr_t); in_addr_t inet_netof(struct in_addr); in_addr_t inet_network(const char *); -char *inet_net_ntop(int, const void *, int, char *, __darwin_size_t); -int inet_net_pton(int, const char *, void *, __darwin_size_t); -char *inet_neta(in_addr_t, char *, __darwin_size_t); -unsigned int inet_nsap_addr(const char *, unsigned char *, int); -char *inet_nsap_ntoa(int, const unsigned char *, char *); +char *_LIBC_CSTR inet_net_ntop(int, const void *, int, char *_LIBC_COUNT(__size), __darwin_size_t __size); +int inet_net_pton(int, const char *, void *_LIBC_SIZE(__size), __darwin_size_t __size); +char *_LIBC_CSTR inet_neta(in_addr_t, char *_LIBC_COUNT(__size), __darwin_size_t __size); +unsigned int inet_nsap_addr(const char *, unsigned char *_LIBC_COUNT(__maxlen), int __maxlen); +char *_LIBC_CSTR inet_nsap_ntoa(int __binlen, const unsigned char *_LIBC_COUNT(__binlen), char *_LIBC_COUNT_OR_NULL(2 + __binlen*2 + __binlen/2 + 1)); #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ __END_DECLS diff --git a/include/arpa/telnet.h b/include/arpa/telnet.h index 10155a84..23ebc4df 100644 --- a/include/arpa/telnet.h +++ b/include/arpa/telnet.h @@ -10,11 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -33,8 +29,8 @@ * @(#)telnet.h 8.2 (Berkeley) 12/15/93 */ -#ifndef _TELNET_H_ -#define _TELNET_H_ +#ifndef _ARPA_TELNET_H_ +#define _ARPA_TELNET_H_ /* * Definitions for the TELNET protocol. @@ -63,10 +59,11 @@ #define SYNCH 242 /* for telfunc calls */ #ifdef TELCMDS -char *telcmds[] = { +const char *telcmds[] = { "EOF", "SUSP", "ABORT", "EOR", "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC", - "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0, + "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", + 0 }; #else extern char *telcmds[]; @@ -119,12 +116,17 @@ extern char *telcmds[]; #define TELOPT_AUTHENTICATION 37/* Authenticate */ #define TELOPT_ENCRYPT 38 /* Encryption option */ #define TELOPT_NEW_ENVIRON 39 /* New - Environment variables */ +#define TELOPT_TN3270E 40 /* RFC2355 - TN3270 Enhancements */ +#define TELOPT_CHARSET 42 /* RFC2066 - Charset */ +#define TELOPT_COMPORT 44 /* RFC2217 - Com Port Control */ +#define TELOPT_KERMIT 47 /* RFC2840 - Kermit */ #define TELOPT_EXOPL 255 /* extended-options-list */ +#define COMPORT_SET_BAUDRATE 1 /* RFC2217 - Com Port Set Baud Rate */ -#define NTELOPTS (1+TELOPT_NEW_ENVIRON) +#define NTELOPTS (1+TELOPT_KERMIT) #ifdef TELOPTS -char *telopts[NTELOPTS+1] = { +const char *telopts[NTELOPTS+1] = { "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME", "STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP", "NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS", @@ -134,11 +136,12 @@ char *telopts[NTELOPTS+1] = { "TACACS UID", "OUTPUT MARKING", "TTYLOC", "3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW", "LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION", - "ENCRYPT", "NEW-ENVIRON", - 0, + "ENCRYPT", "NEW-ENVIRON", "TN3270E", "XAUTH", "CHARSET", + "RSP", "COM-PORT", "SLE", "STARTTLS", "KERMIT", + 0 }; #define TELOPT_FIRST TELOPT_BINARY -#define TELOPT_LAST TELOPT_NEW_ENVIRON +#define TELOPT_LAST TELOPT_KERMIT #define TELOPT_OK(x) ((unsigned int)(x) <= TELOPT_LAST) #define TELOPT(x) telopts[(x)-TELOPT_FIRST] #endif @@ -196,18 +199,35 @@ char *telopts[NTELOPTS+1] = { #define SLC_XOFF 16 #define SLC_FORW1 17 #define SLC_FORW2 18 - -#define NSLC 18 +#define SLC_MCL 19 +#define SLC_MCR 20 +#define SLC_MCWL 21 +#define SLC_MCWR 22 +#define SLC_MCBOL 23 +#define SLC_MCEOL 24 +#define SLC_INSRT 25 +#define SLC_OVER 26 +#define SLC_ECR 27 +#define SLC_EWR 28 +#define SLC_EBOL 29 +#define SLC_EEOL 30 + +#define NSLC 30 /* - * For backwards compatability, we define SLC_NAMES to be the + * For backwards compatibility, we define SLC_NAMES to be the * list of names if SLC_NAMES is not defined. */ -#define SLC_NAMELIST "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \ - "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \ - "LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0, +#define SLC_NAMELIST "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \ + "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \ + "LNEXT", "XON", "XOFF", "FORW1", "FORW2", \ + "MCL", "MCR", "MCWL", "MCWR", "MCBOL", \ + "MCEOL", "INSRT", "OVER", "ECR", "EWR", \ + "EBOL", "EEOL", \ + 0 + #ifdef SLC_NAMES -char *slc_names[] = { +const char *slc_names[] = { SLC_NAMELIST }; #else @@ -262,13 +282,15 @@ extern char *slc_names[]; #define AUTHTYPE_KERBEROS_V5 2 #define AUTHTYPE_SPX 3 #define AUTHTYPE_MINK 4 -#define AUTHTYPE_CNT 5 +#define AUTHTYPE_SRA 6 +#define AUTHTYPE_CNT 7 #define AUTHTYPE_TEST 99 #ifdef AUTH_NAMES -char *authtype_names[] = { - "NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0, +const char *authtype_names[] = { + "NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", NULL, "SRA", + 0 }; #else extern char *authtype_names[]; @@ -286,7 +308,7 @@ extern char *authtype_names[]; #define ENCRYPT_START 3 /* Am starting to send encrypted */ #define ENCRYPT_END 4 /* Am ending encrypted */ #define ENCRYPT_REQSTART 5 /* Request you start encrypting */ -#define ENCRYPT_REQEND 6 /* Request you send encrypting */ +#define ENCRYPT_REQEND 6 /* Request you end encrypting */ #define ENCRYPT_ENC_KEYID 7 #define ENCRYPT_DEC_KEYID 8 #define ENCRYPT_CNT 9 @@ -297,13 +319,14 @@ extern char *authtype_names[]; #define ENCTYPE_CNT 3 #ifdef ENCRYPT_NAMES -char *encrypt_names[] = { +const char *encrypt_names[] = { "IS", "SUPPORT", "REPLY", "START", "END", "REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID", - 0, + 0 }; -char *enctype_names[] = { - "ANY", "DES_CFB64", "DES_OFB64", 0, +const char *enctype_names[] = { + "ANY", "DES_CFB64", "DES_OFB64", + 0 }; #else extern char *encrypt_names[]; diff --git a/include/arpa/tftp.h b/include/arpa/tftp.h index 70c33565..ca96be96 100644 --- a/include/arpa/tftp.h +++ b/include/arpa/tftp.h @@ -40,8 +40,8 @@ #define SEGSIZE 512 /* data segment size */ #define MAXSEGSIZE 65464 /* maximum negotiated data segment size */ -#define PKTSIZE SEGSIZE + 4 -#define MAXPKTSIZE MAXSEGSIZE + 4 +#define PKTSIZE (SEGSIZE + 4) +#define MAXPKTSIZE (MAXSEGSIZE + 4) /* * Packet types. diff --git a/include/assert.h b/include/assert.h index 4683018d..8a87524a 100644 --- a/include/assert.h +++ b/include/assert.h @@ -50,12 +50,13 @@ */ #undef assert -#undef __assert #ifdef NDEBUG #define assert(e) ((void)0) #else +#include <_assert.h> + #ifdef __FILE_NAME__ #define __ASSERT_FILE_NAME __FILE_NAME__ #else /* __FILE_NAME__ */ @@ -64,36 +65,11 @@ #ifndef __GNUC__ -__BEGIN_DECLS -#ifndef __cplusplus -void abort(void) __dead2 __cold; -#endif /* !__cplusplus */ -int printf(const char * __restrict, ...); -__END_DECLS - #define assert(e) \ ((void) ((e) ? ((void)0) : __assert (#e, __ASSERT_FILE_NAME, __LINE__))) -#define __assert(e, file, line) \ - ((void)printf ("%s:%d: failed assertion `%s'\n", file, line, e), abort()) #else /* __GNUC__ */ -__BEGIN_DECLS -void __assert_rtn(const char *, const char *, int, const char *) __dead2 __cold __disable_tail_calls; -#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0) < 1070) -void __eprintf(const char *, const char *, unsigned, const char *) __dead2 __cold; -#endif -__END_DECLS - -#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0) < 1070) -#define __assert(e, file, line) \ - __eprintf ("%s:%d: failed assertion `%s'\n", file, line, e) -#else -/* 8462256: modified __assert_rtn() replaces deprecated __eprintf() */ -#define __assert(e, file, line) \ - __assert_rtn ((const char *)-1L, file, line, e) -#endif - #if __DARWIN_UNIX03 #define assert(e) \ (__builtin_expect(!(e), 0) ? __assert_rtn(__func__, __ASSERT_FILE_NAME, __LINE__, #e) : (void)0) @@ -105,13 +81,4 @@ __END_DECLS #endif /* __GNUC__ */ #endif /* NDEBUG */ -#ifndef _ASSERT_H_ -#define _ASSERT_H_ - -#ifndef __cplusplus -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L -#define static_assert _Static_assert -#endif /* __STDC_VERSION__ */ -#endif /* !__cplusplus */ - -#endif /* _ASSERT_H_ */ +#include <_static_assert.h> diff --git a/include/bank/bank_types.h b/include/bank/bank_types.h index dd4db800..51a3eded 100644 --- a/include/bank/bank_types.h +++ b/include/bank/bank_types.h @@ -29,6 +29,7 @@ #ifndef _BANK_BANK_TYPES_H_ #define _BANK_BANK_TYPES_H_ +#include #include #include @@ -39,10 +40,12 @@ #define MACH_VOUCHER_BANK_CONTENT_SIZE (500) typedef uint32_t bank_action_t; -#define BANK_ORIGINATOR_PID 0x1 -#define BANK_PERSONA_TOKEN 0x2 -#define BANK_PERSONA_ID 0x3 -#define BANK_PERSONA_ADOPT_ANY 0x4 +#define BANK_ORIGINATOR_PID 0x1 +#define BANK_PERSONA_TOKEN 0x2 +#define BANK_PERSONA_ID 0x3 +#define BANK_PERSONA_ADOPT_ANY 0x4 +#define BANK_ORIGINATOR_PROXIMATE_PID 0x5 + #define PROC_PERSONA_INFO_FLAG_ADOPTION_ALLOWED 0x1 diff --git a/include/bitstring.h b/include/bitstring.h index 8982b883..c5736d55 100644 --- a/include/bitstring.h +++ b/include/bitstring.h @@ -39,8 +39,11 @@ #ifndef _BITSTRING_H_ #define _BITSTRING_H_ +#include <_bounds.h> #include +_LIBC_SINGLE_BY_DEFAULT() + typedef unsigned char bitstr_t; /* internal macros */ diff --git a/include/c++/v1/__algorithm/adjacent_find.h b/include/c++/v1/__algorithm/adjacent_find.h index 30df4a97..6f15456e 100644 --- a/include/c++/v1/__algorithm/adjacent_find.h +++ b/include/c++/v1/__algorithm/adjacent_find.h @@ -20,10 +20,13 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Iter +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Iter __adjacent_find(_Iter __first, _Sent __last, _BinaryPredicate&& __pred) { if (__first == __last) return __first; @@ -37,17 +40,19 @@ __adjacent_find(_Iter __first, _Sent __last, _BinaryPredicate&& __pred) { } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator adjacent_find(_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred) { return std::__adjacent_find(std::move(__first), std::move(__last), __pred); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator adjacent_find(_ForwardIterator __first, _ForwardIterator __last) { return std::adjacent_find(std::move(__first), std::move(__last), __equal_to()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_ADJACENT_FIND_H diff --git a/include/c++/v1/__algorithm/all_of.h b/include/c++/v1/__algorithm/all_of.h index 284c34ff..ec84eea7 100644 --- a/include/c++/v1/__algorithm/all_of.h +++ b/include/c++/v1/__algorithm/all_of.h @@ -19,7 +19,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) { for (; __first != __last; ++__first) if (!__pred(*__first)) diff --git a/include/c++/v1/__algorithm/any_of.h b/include/c++/v1/__algorithm/any_of.h index fe088281..b5ff778c 100644 --- a/include/c++/v1/__algorithm/any_of.h +++ b/include/c++/v1/__algorithm/any_of.h @@ -19,7 +19,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) { for (; __first != __last; ++__first) if (__pred(*__first)) diff --git a/include/c++/v1/__algorithm/binary_search.h b/include/c++/v1/__algorithm/binary_search.h index 8f958c2c..6065fc37 100644 --- a/include/c++/v1/__algorithm/binary_search.h +++ b/include/c++/v1/__algorithm/binary_search.h @@ -22,23 +22,16 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, _Compare __comp) -{ - __first = std::lower_bound<_ForwardIterator, _Tp, __comp_ref_type<_Compare> >(__first, __last, __value, __comp); - return __first != __last && !__comp(__value, *__first); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, _Compare __comp) { + __first = std::lower_bound<_ForwardIterator, _Tp, __comp_ref_type<_Compare> >(__first, __last, __value, __comp); + return __first != __last && !__comp(__value, *__first); } template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) -{ - return std::binary_search(__first, __last, __value, - __less::value_type, _Tp>()); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { + return std::binary_search(__first, __last, __value, __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/clamp.h b/include/c++/v1/__algorithm/clamp.h index 30ddbdce..1a5a3d07 100644 --- a/include/c++/v1/__algorithm/clamp.h +++ b/include/c++/v1/__algorithm/clamp.h @@ -19,25 +19,23 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY constexpr -const _Tp& -clamp(const _Tp& __v, const _Tp& __lo, const _Tp& __hi, _Compare __comp) -{ - _LIBCPP_ASSERT(!__comp(__hi, __lo), "Bad bounds passed to std::clamp"); - return __comp(__v, __lo) ? __lo : __comp(__hi, __v) ? __hi : __v; - +#if _LIBCPP_STD_VER >= 17 +template +[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& +clamp(_LIBCPP_LIFETIMEBOUND const _Tp& __v, + _LIBCPP_LIFETIMEBOUND const _Tp& __lo, + _LIBCPP_LIFETIMEBOUND const _Tp& __hi, + _Compare __comp) { + _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(!__comp(__hi, __lo), "Bad bounds passed to std::clamp"); + return __comp(__v, __lo) ? __lo : __comp(__hi, __v) ? __hi : __v; } -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY constexpr -const _Tp& -clamp(const _Tp& __v, const _Tp& __lo, const _Tp& __hi) -{ - return _VSTD::clamp(__v, __lo, __hi, __less<_Tp>()); +template +[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& +clamp(_LIBCPP_LIFETIMEBOUND const _Tp& __v, + _LIBCPP_LIFETIMEBOUND const _Tp& __lo, + _LIBCPP_LIFETIMEBOUND const _Tp& __hi) { + return std::clamp(__v, __lo, __hi, __less<>()); } #endif diff --git a/include/c++/v1/__algorithm/comp.h b/include/c++/v1/__algorithm/comp.h index af8eb7b5..a0fa88d6 100644 --- a/include/c++/v1/__algorithm/comp.h +++ b/include/c++/v1/__algorithm/comp.h @@ -10,6 +10,7 @@ #define _LIBCPP___ALGORITHM_COMP_H #include <__config> +#include <__type_traits/desugars_to.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -24,42 +25,24 @@ struct __equal_to { } }; -template -struct __less -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 - bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} +template +inline const bool __desugars_to_v<__equal_tag, __equal_to, _Tp, _Up> = true; - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 - bool operator()(const _T1& __x, const _T2& __y) const {return __x < __y;} +// The definition is required because __less is part of the ABI, but it's empty +// because all comparisons should be transparent. +template +struct __less {}; - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 - bool operator()(const _T2& __x, const _T1& __y) const {return __x < __y;} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 - bool operator()(const _T2& __x, const _T2& __y) const {return __x < __y;} -}; - -template -struct __less<_T1, _T1> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 - bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} -}; - -template -struct __less -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 - bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} +template <> +struct __less { + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(const _Tp& __lhs, const _Up& __rhs) const { + return __lhs < __rhs; + } }; -template -struct __less<_T1, const _T1> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 - bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} -}; +template +inline const bool __desugars_to_v<__less_tag, __less<>, _Tp, _Tp> = true; _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/comp_ref_type.h b/include/c++/v1/__algorithm/comp_ref_type.h index f2338e14..c367fbb9 100644 --- a/include/c++/v1/__algorithm/comp_ref_type.h +++ b/include/c++/v1/__algorithm/comp_ref_type.h @@ -9,8 +9,8 @@ #ifndef _LIBCPP___ALGORITHM_COMP_REF_TYPE_H #define _LIBCPP___ALGORITHM_COMP_REF_TYPE_H +#include <__assert> #include <__config> -#include <__debug> #include <__utility/declval.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -20,53 +20,41 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -struct __debug_less -{ - _Compare &__comp_; - _LIBCPP_CONSTEXPR_SINCE_CXX14 - __debug_less(_Compare& __c) : __comp_(__c) {} +struct __debug_less { + _Compare& __comp_; + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI __debug_less(_Compare& __c) : __comp_(__c) {} - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 - bool operator()(const _Tp& __x, const _Up& __y) - { - bool __r = __comp_(__x, __y); - if (__r) - __do_compare_assert(0, __y, __x); - return __r; - } + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(const _Tp& __x, const _Up& __y) { + bool __r = __comp_(__x, __y); + if (__r) + __do_compare_assert(0, __y, __x); + return __r; + } - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 - bool operator()(_Tp& __x, _Up& __y) - { - bool __r = __comp_(__x, __y); - if (__r) - __do_compare_assert(0, __y, __x); - return __r; - } + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(_Tp& __x, _Up& __y) { + bool __r = __comp_(__x, __y); + if (__r) + __do_compare_assert(0, __y, __x); + return __r; + } - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 - inline _LIBCPP_INLINE_VISIBILITY - decltype((void)std::declval<_Compare&>()( - std::declval<_LHS &>(), std::declval<_RHS &>())) - __do_compare_assert(int, _LHS & __l, _RHS & __r) { - _LIBCPP_DEBUG_ASSERT(!__comp_(__l, __r), - "Comparator does not induce a strict weak ordering"); - (void)__l; - (void)__r; - } + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 inline + _LIBCPP_HIDE_FROM_ABI decltype((void)std::declval<_Compare&>()(std::declval<_LHS&>(), std::declval<_RHS&>())) + __do_compare_assert(int, _LHS& __l, _RHS& __r) { + _LIBCPP_ASSERT_SEMANTIC_REQUIREMENT(!__comp_(__l, __r), "Comparator does not induce a strict weak ordering"); + (void)__l; + (void)__r; + } - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 - inline _LIBCPP_INLINE_VISIBILITY - void __do_compare_assert(long, _LHS &, _RHS &) {} + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 inline _LIBCPP_HIDE_FROM_ABI void __do_compare_assert(long, _LHS&, _RHS&) {} }; -// Pass the comparator by lvalue reference. Or in debug mode, using a -// debugging wrapper that stores a reference. -#ifdef _LIBCPP_ENABLE_DEBUG_MODE +// Pass the comparator by lvalue reference. Or in the debug mode, using a debugging wrapper that stores a reference. +#if _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_DEBUG template using __comp_ref_type = __debug_less<_Comp>; #else diff --git a/include/c++/v1/__algorithm/copy.h b/include/c++/v1/__algorithm/copy.h index 193a6df3..0890b895 100644 --- a/include/c++/v1/__algorithm/copy.h +++ b/include/c++/v1/__algorithm/copy.h @@ -10,6 +10,7 @@ #define _LIBCPP___ALGORITHM_COPY_H #include <__algorithm/copy_move_common.h> +#include <__algorithm/for_each_segment.h> #include <__algorithm/iterator_operations.h> #include <__algorithm/min.h> #include <__config> @@ -31,7 +32,7 @@ template inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> __copy(_InIter, _Sent, _OutIter); template -struct __copy_loop { +struct __copy_impl { template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { @@ -44,36 +45,35 @@ struct __copy_loop { return std::make_pair(std::move(__first), std::move(__result)); } - template ::value, int> = 0> - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> - operator()(_InIter __first, _InIter __last, _OutIter __result) const { + template + struct _CopySegment { using _Traits = __segmented_iterator_traits<_InIter>; - auto __sfirst = _Traits::__segment(__first); - auto __slast = _Traits::__segment(__last); - if (__sfirst == __slast) { - auto __iters = std::__copy<_AlgPolicy>(_Traits::__local(__first), _Traits::__local(__last), std::move(__result)); - return std::make_pair(__last, std::move(__iters.second)); - } - __result = std::__copy<_AlgPolicy>(_Traits::__local(__first), _Traits::__end(__sfirst), std::move(__result)).second; - ++__sfirst; - while (__sfirst != __slast) { - __result = - std::__copy<_AlgPolicy>(_Traits::__begin(__sfirst), _Traits::__end(__sfirst), std::move(__result)).second; - ++__sfirst; + _OutIter& __result_; + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit _CopySegment(_OutIter& __result) + : __result_(__result) {} + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void + operator()(typename _Traits::__local_iterator __lfirst, typename _Traits::__local_iterator __llast) { + __result_ = std::__copy<_AlgPolicy>(__lfirst, __llast, std::move(__result_)).second; } - __result = - std::__copy<_AlgPolicy>(_Traits::__begin(__sfirst), _Traits::__local(__last), std::move(__result)).second; + }; + + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _InIter __last, _OutIter __result) const { + std::__for_each_segment(__first, __last, _CopySegment<_InIter, _OutIter>(__result)); return std::make_pair(__last, std::move(__result)); } template ::value && + __enable_if_t<__has_random_access_iterator_category<_InIter>::value && !__is_segmented_iterator<_InIter>::value && __is_segmented_iterator<_OutIter>::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> - operator()(_InIter __first, _InIter __last, _OutIter __result) { + operator()(_InIter __first, _InIter __last, _OutIter __result) const { using _Traits = __segmented_iterator_traits<_OutIter>; using _DiffT = typename common_type<__iter_diff_t<_InIter>, __iter_diff_t<_OutIter> >::type; @@ -94,12 +94,9 @@ struct __copy_loop { __local_first = _Traits::__begin(++__segment_iterator); } } -}; -struct __copy_trivial { // At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer. - template ::value, int> = 0> + template ::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> operator()(_In* __first, _In* __last, _Out* __result) const { return std::__copy_trivial_impl(__first, __last, __result); @@ -109,12 +106,12 @@ struct __copy_trivial { template pair<_InIter, _OutIter> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __copy(_InIter __first, _Sent __last, _OutIter __result) { - return std::__dispatch_copy_or_move<_AlgPolicy, __copy_loop<_AlgPolicy>, __copy_trivial>( + return std::__copy_move_unwrap_iters<__copy_impl<_AlgPolicy> >( std::move(__first), std::move(__last), std::move(__result)); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { return std::__copy<_ClassicAlgPolicy>(__first, __last, __result).second; } diff --git a/include/c++/v1/__algorithm/copy_backward.h b/include/c++/v1/__algorithm/copy_backward.h index bb2a4328..73dc846a 100644 --- a/include/c++/v1/__algorithm/copy_backward.h +++ b/include/c++/v1/__algorithm/copy_backward.h @@ -15,7 +15,7 @@ #include <__config> #include <__iterator/segmented_iterator.h> #include <__type_traits/common_type.h> -#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_constructible.h> #include <__utility/move.h> #include <__utility/pair.h> @@ -33,7 +33,7 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InIter, _OutIter> __copy_backward(_InIter __first, _Sent __last, _OutIter __result); template -struct __copy_backward_loop { +struct __copy_backward_impl { template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { @@ -76,11 +76,11 @@ struct __copy_backward_loop { template ::value && + __enable_if_t<__has_random_access_iterator_category<_InIter>::value && !__is_segmented_iterator<_InIter>::value && __is_segmented_iterator<_OutIter>::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> - operator()(_InIter __first, _InIter __last, _OutIter __result) { + operator()(_InIter __first, _InIter __last, _OutIter __result) const { using _Traits = __segmented_iterator_traits<_OutIter>; auto __orig_last = __last; auto __segment_iterator = _Traits::__segment(__result); @@ -104,12 +104,9 @@ struct __copy_backward_loop { __local_last = _Traits::__end(__segment_iterator); } } -}; -struct __copy_backward_trivial { // At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer. - template ::value, int> = 0> + template ::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> operator()(_In* __first, _In* __last, _Out* __result) const { return std::__copy_backward_trivial_impl(__first, __last, __result); @@ -119,21 +116,18 @@ struct __copy_backward_trivial { template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator1, _BidirectionalIterator2> __copy_backward(_BidirectionalIterator1 __first, _Sentinel __last, _BidirectionalIterator2 __result) { - return std::__dispatch_copy_or_move<_AlgPolicy, __copy_backward_loop<_AlgPolicy>, __copy_backward_trivial>( + return std::__copy_move_unwrap_iters<__copy_backward_impl<_AlgPolicy> >( std::move(__first), std::move(__last), std::move(__result)); } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_BidirectionalIterator2 -copy_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last, - _BidirectionalIterator2 __result) -{ +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _BidirectionalIterator2 +copy_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last, _BidirectionalIterator2 __result) { static_assert(std::is_copy_constructible<_BidirectionalIterator1>::value && - std::is_copy_constructible<_BidirectionalIterator1>::value, "Iterators must be copy constructible."); + std::is_copy_constructible<_BidirectionalIterator1>::value, + "Iterators must be copy constructible."); - return std::__copy_backward<_ClassicAlgPolicy>( - std::move(__first), std::move(__last), std::move(__result)).second; + return std::__copy_backward<_ClassicAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)).second; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/copy_if.h b/include/c++/v1/__algorithm/copy_if.h index a5938b87..228e4d22 100644 --- a/include/c++/v1/__algorithm/copy_if.h +++ b/include/c++/v1/__algorithm/copy_if.h @@ -17,21 +17,16 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -copy_if(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _Predicate __pred) -{ - for (; __first != __last; ++__first) - { - if (__pred(*__first)) - { - *__result = *__first; - ++__result; - } +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred) { + for (; __first != __last; ++__first) { + if (__pred(*__first)) { + *__result = *__first; + ++__result; } - return __result; + } + return __result; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/copy_move_common.h b/include/c++/v1/__algorithm/copy_move_common.h index b88c1491..8a98451a 100644 --- a/include/c++/v1/__algorithm/copy_move_common.h +++ b/include/c++/v1/__algorithm/copy_move_common.h @@ -15,12 +15,12 @@ #include <__config> #include <__iterator/iterator_traits.h> #include <__memory/pointer_traits.h> +#include <__string/constexpr_c_functions.h> #include <__type_traits/enable_if.h> #include <__type_traits/is_always_bitcastable.h> #include <__type_traits/is_constant_evaluated.h> -#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_constructible.h> #include <__type_traits/is_trivially_assignable.h> -#include <__type_traits/is_trivially_copyable.h> #include <__type_traits/is_volatile.h> #include <__utility/move.h> #include <__utility/pair.h> @@ -30,6 +30,9 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD // Type traits. @@ -37,22 +40,19 @@ _LIBCPP_BEGIN_NAMESPACE_STD template struct __can_lower_copy_assignment_to_memmove { static const bool value = - // If the types are always bitcastable, it's valid to do a bitwise copy between them. - __is_always_bitcastable<_From, _To>::value && - // Reject conversions that wouldn't be performed by the regular built-in assignment (e.g. between arrays). - is_trivially_assignable<_To&, const _From&>::value && - // `memmove` doesn't accept `volatile` pointers, make sure the optimization SFINAEs away in that case. - !is_volatile<_From>::value && - !is_volatile<_To>::value; + // If the types are always bitcastable, it's valid to do a bitwise copy between them. + __is_always_bitcastable<_From, _To>::value && + // Reject conversions that wouldn't be performed by the regular built-in assignment (e.g. between arrays). + is_trivially_assignable<_To&, const _From&>::value && + // `memmove` doesn't accept `volatile` pointers, make sure the optimization SFINAEs away in that case. + !is_volatile<_From>::value && !is_volatile<_To>::value; }; template struct __can_lower_move_assignment_to_memmove { static const bool value = - __is_always_bitcastable<_From, _To>::value && - is_trivially_assignable<_To&, _From&&>::value && - !is_volatile<_From>::value && - !is_volatile<_To>::value; + __is_always_bitcastable<_From, _To>::value && is_trivially_assignable<_To&, _From&&>::value && + !is_volatile<_From>::value && !is_volatile<_To>::value; }; // `memmove` algorithms implementation. @@ -61,7 +61,8 @@ template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> __copy_trivial_impl(_In* __first, _In* __last, _Out* __result) { const size_t __n = static_cast(__last - __first); - ::__builtin_memmove(__result, __first, __n * sizeof(_Out)); + + std::__constexpr_memmove(__result, __first, __element_count(__n)); return std::make_pair(__last, __result + __n); } @@ -72,92 +73,42 @@ __copy_backward_trivial_impl(_In* __first, _In* __last, _Out* __result) { const size_t __n = static_cast(__last - __first); __result -= __n; - ::__builtin_memmove(__result, __first, __n * sizeof(_Out)); + std::__constexpr_memmove(__result, __first, __element_count(__n)); return std::make_pair(__last, __result); } // Iterator unwrapping and dispatching to the correct overload. -template -struct __overload : _F1, _F2 { - using _F1::operator(); - using _F2::operator(); -}; - -template -struct __can_rewrap : false_type {}; - -template -struct __can_rewrap<_InIter, - _Sent, - _OutIter, - // Note that sentinels are always copy-constructible. - __enable_if_t< is_copy_constructible<_InIter>::value && - is_copy_constructible<_OutIter>::value > > : true_type {}; +template +struct __can_rewrap + : integral_constant::value && is_copy_constructible<_OutIter>::value> {}; template ::value, int> = 0> + __enable_if_t<__can_rewrap<_InIter, _OutIter>::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pair<_InIter, _OutIter> -__unwrap_and_dispatch(_InIter __first, _Sent __last, _OutIter __out_first) { +__copy_move_unwrap_iters(_InIter __first, _Sent __last, _OutIter __out_first) { auto __range = std::__unwrap_range(__first, std::move(__last)); auto __result = _Algorithm()(std::move(__range.first), std::move(__range.second), std::__unwrap_iter(__out_first)); return std::make_pair(std::__rewrap_range<_Sent>(std::move(__first), std::move(__result.first)), - std::__rewrap_iter(std::move(__out_first), std::move(__result.second))); + std::__rewrap_iter(std::move(__out_first), std::move(__result.second))); } template ::value, int> = 0> + __enable_if_t::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pair<_InIter, _OutIter> -__unwrap_and_dispatch(_InIter __first, _Sent __last, _OutIter __out_first) { +__copy_move_unwrap_iters(_InIter __first, _Sent __last, _OutIter __out_first) { return _Algorithm()(std::move(__first), std::move(__last), std::move(__out_first)); } -template -struct __can_copy_without_conversion : false_type {}; - -template -struct __can_copy_without_conversion< - _IterOps, - _InValue, - _OutIter, - __enable_if_t >::value> > : true_type {}; - -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pair<_InIter, _OutIter> -__dispatch_copy_or_move(_InIter __first, _Sent __last, _OutIter __out_first) { -#ifdef _LIBCPP_COMPILER_GCC - // GCC doesn't support `__builtin_memmove` during constant evaluation. - if (__libcpp_is_constant_evaluated()) { - return std::__unwrap_and_dispatch<_NaiveAlgorithm>(std::move(__first), std::move(__last), std::move(__out_first)); - } -#else - // In Clang, `__builtin_memmove` only supports fully trivially copyable types (just having trivial copy assignment is - // insufficient). Also, conversions are not supported. - if (__libcpp_is_constant_evaluated()) { - using _InValue = typename _IterOps<_AlgPolicy>::template __value_type<_InIter>; - if (!is_trivially_copyable<_InValue>::value || - !__can_copy_without_conversion<_IterOps<_AlgPolicy>, _InValue, _OutIter>::value) { - return std::__unwrap_and_dispatch<_NaiveAlgorithm>(std::move(__first), std::move(__last), std::move(__out_first)); - } - } -#endif // _LIBCPP_COMPILER_GCC - - using _Algorithm = __overload<_NaiveAlgorithm, _OptimizedAlgorithm>; - return std::__unwrap_and_dispatch<_Algorithm>(std::move(__first), std::move(__last), std::move(__out_first)); -} - _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_COPY_MOVE_COMMON_H diff --git a/include/c++/v1/__algorithm/copy_n.h b/include/c++/v1/__algorithm/copy_n.h index b08bbdfb..f93f3920 100644 --- a/include/c++/v1/__algorithm/copy_n.h +++ b/include/c++/v1/__algorithm/copy_n.h @@ -12,8 +12,8 @@ #include <__algorithm/copy.h> #include <__config> #include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> #include <__utility/convert_to_integral.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -21,45 +21,38 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -typename enable_if -< - __is_cpp17_input_iterator<_InputIterator>::value && - !__is_cpp17_random_access_iterator<_InputIterator>::value, - _OutputIterator ->::type -copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result) -{ - typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize; - _IntegralSize __n = __orig_n; - if (__n > 0) - { - *__result = *__first; - ++__result; - for (--__n; __n > 0; --__n) - { - ++__first; - *__result = *__first; - ++__result; - } +template ::value && + !__has_random_access_iterator_category<_InputIterator>::value, + int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result) { + typedef decltype(std::__convert_to_integral(__orig_n)) _IntegralSize; + _IntegralSize __n = __orig_n; + if (__n > 0) { + *__result = *__first; + ++__result; + for (--__n; __n > 0; --__n) { + ++__first; + *__result = *__first; + ++__result; } - return __result; + } + return __result; } -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -typename enable_if -< - __is_cpp17_random_access_iterator<_InputIterator>::value, - _OutputIterator ->::type -copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result) -{ - typedef typename iterator_traits<_InputIterator>::difference_type difference_type; - typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize; - _IntegralSize __n = __orig_n; - return _VSTD::copy(__first, __first + difference_type(__n), __result); +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result) { + typedef typename iterator_traits<_InputIterator>::difference_type difference_type; + typedef decltype(std::__convert_to_integral(__orig_n)) _IntegralSize; + _IntegralSize __n = __orig_n; + return std::copy(__first, __first + difference_type(__n), __result); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/count.h b/include/c++/v1/__algorithm/count.h index 6c8c7fda..1cfe7f63 100644 --- a/include/c++/v1/__algorithm/count.h +++ b/include/c++/v1/__algorithm/count.h @@ -10,26 +10,83 @@ #ifndef _LIBCPP___ALGORITHM_COUNT_H #define _LIBCPP___ALGORITHM_COUNT_H +#include <__algorithm/iterator_operations.h> +#include <__algorithm/min.h> +#include <__bit/invert_if.h> +#include <__bit/popcount.h> #include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__fwd/bit_reference.h> #include <__iterator/iterator_traits.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - typename iterator_traits<_InputIterator>::difference_type - count(_InputIterator __first, _InputIterator __last, const _Tp& __value) { - typename iterator_traits<_InputIterator>::difference_type __r(0); +// generic implementation +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 typename _IterOps<_AlgPolicy>::template __difference_type<_Iter> +__count(_Iter __first, _Sent __last, const _Tp& __value, _Proj& __proj) { + typename _IterOps<_AlgPolicy>::template __difference_type<_Iter> __r(0); for (; __first != __last; ++__first) - if (*__first == __value) + if (std::__invoke(__proj, *__first) == __value) ++__r; return __r; } +// __bit_iterator implementation +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 typename __bit_iterator<_Cp, _IsConst>::difference_type +__count_bool(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) { + using _It = __bit_iterator<_Cp, _IsConst>; + using __storage_type = typename _It::__storage_type; + using difference_type = typename _It::difference_type; + + const int __bits_per_word = _It::__bits_per_word; + difference_type __r = 0; + // do first partial word + if (__first.__ctz_ != 0) { + __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); + __storage_type __dn = std::min(__clz_f, __n); + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __r = std::__libcpp_popcount(std::__invert_if(*__first.__seg_) & __m); + __n -= __dn; + ++__first.__seg_; + } + // do middle whole words + for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) + __r += std::__libcpp_popcount(std::__invert_if(*__first.__seg_)); + // do last partial word + if (__n > 0) { + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + __r += std::__libcpp_popcount(std::__invert_if(*__first.__seg_) & __m); + } + return __r; +} + +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __iter_diff_t<__bit_iterator<_Cp, _IsConst> > +__count(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value, _Proj&) { + if (__value) + return std::__count_bool(__first, static_cast(__last - __first)); + return std::__count_bool(__first, static_cast(__last - __first)); +} + +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __iter_diff_t<_InputIterator> +count(_InputIterator __first, _InputIterator __last, const _Tp& __value) { + __identity __proj; + return std::__count<_ClassicAlgPolicy>(__first, __last, __value, __proj); +} + _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_COUNT_H diff --git a/include/c++/v1/__algorithm/count_if.h b/include/c++/v1/__algorithm/count_if.h index b96521fe..25782069 100644 --- a/include/c++/v1/__algorithm/count_if.h +++ b/include/c++/v1/__algorithm/count_if.h @@ -20,9 +20,9 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - typename iterator_traits<_InputIterator>::difference_type - count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +typename iterator_traits<_InputIterator>::difference_type +count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) { typename iterator_traits<_InputIterator>::difference_type __r(0); for (; __first != __last; ++__first) if (__pred(*__first)) diff --git a/include/c++/v1/__algorithm/equal.h b/include/c++/v1/__algorithm/equal.h index cf37f46a..bfc8f72f 100644 --- a/include/c++/v1/__algorithm/equal.h +++ b/include/c++/v1/__algorithm/equal.h @@ -11,76 +11,123 @@ #define _LIBCPP___ALGORITHM_EQUAL_H #include <__algorithm/comp.h> +#include <__algorithm/unwrap_iter.h> #include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> #include <__iterator/distance.h> #include <__iterator/iterator_traits.h> +#include <__string/constexpr_c_functions.h> +#include <__type_traits/desugars_to.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_constant_evaluated.h> +#include <__type_traits/is_equality_comparable.h> +#include <__type_traits/is_volatile.h> +#include <__utility/move.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __equal_iter_impl( + _InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate& __pred) { for (; __first1 != __last1; ++__first1, (void)++__first2) if (!__pred(*__first1, *__first2)) return false; return true; } +template && !is_volatile<_Tp>::value && + !is_volatile<_Up>::value && __libcpp_is_trivially_equality_comparable<_Tp, _Up>::value, + int> = 0> +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__equal_iter_impl(_Tp* __first1, _Tp* __last1, _Up* __first2, _BinaryPredicate&) { + return std::__constexpr_memcmp_equal(__first1, __first2, __element_count(__last1 - __first1)); +} + +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) { + return std::__equal_iter_impl( + std::__unwrap_iter(__first1), std::__unwrap_iter(__last1), std::__unwrap_iter(__first2), __pred); +} + template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) { return std::equal(__first1, __last1, __first2, __equal_to()); } -#if _LIBCPP_STD_VER > 11 -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -__equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, - _BinaryPredicate __pred, input_iterator_tag, input_iterator_tag) { - for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void)++__first2) - if (!__pred(*__first1, *__first2)) +#if _LIBCPP_STD_VER >= 14 + +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __equal_impl( + _Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, _Pred& __comp, _Proj1& __proj1, _Proj2& __proj2) { + while (__first1 != __last1 && __first2 != __last2) { + if (!std::__invoke(__comp, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) return false; + ++__first1; + ++__first2; + } return __first1 == __last1 && __first2 == __last2; } -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -__equal(_RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1, _RandomAccessIterator2 __first2, - _RandomAccessIterator2 __last2, _BinaryPredicate __pred, random_access_iterator_tag, - random_access_iterator_tag) { - if (_VSTD::distance(__first1, __last1) != _VSTD::distance(__first2, __last2)) - return false; - return _VSTD::equal<_RandomAccessIterator1, _RandomAccessIterator2, - _BinaryPredicate&>(__first1, __last1, __first2, __pred); +template && __is_identity<_Proj1>::value && + __is_identity<_Proj2>::value && !is_volatile<_Tp>::value && !is_volatile<_Up>::value && + __libcpp_is_trivially_equality_comparable<_Tp, _Up>::value, + int> = 0> +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__equal_impl(_Tp* __first1, _Tp* __last1, _Up* __first2, _Up*, _Pred&, _Proj1&, _Proj2&) { + return std::__constexpr_memcmp_equal(__first1, __first2, __element_count(__last1 - __first1)); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +equal(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, _BinaryPredicate __pred) { - return _VSTD::__equal<_BinaryPredicate&>( - __first1, __last1, __first2, __last2, __pred, typename iterator_traits<_InputIterator1>::iterator_category(), - typename iterator_traits<_InputIterator2>::iterator_category()); + if constexpr (__has_random_access_iterator_category<_InputIterator1>::value && + __has_random_access_iterator_category<_InputIterator2>::value) { + if (std::distance(__first1, __last1) != std::distance(__first2, __last2)) + return false; + } + __identity __proj; + return std::__equal_impl( + std::__unwrap_iter(__first1), + std::__unwrap_iter(__last1), + std::__unwrap_iter(__first2), + std::__unwrap_iter(__last2), + __pred, + __proj, + __proj); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { - return std::__equal( - __first1, - __last1, - __first2, - __last2, - __equal_to(), - typename iterator_traits<_InputIterator1>::iterator_category(), - typename iterator_traits<_InputIterator2>::iterator_category()); + return std::equal(__first1, __last1, __first2, __last2, __equal_to()); } -#endif + +#endif // _LIBCPP_STD_VER >= 14 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_EQUAL_H diff --git a/include/c++/v1/__algorithm/equal_range.h b/include/c++/v1/__algorithm/equal_range.h index 2075b034..09bbf8f0 100644 --- a/include/c++/v1/__algorithm/equal_range.h +++ b/include/c++/v1/__algorithm/equal_range.h @@ -23,7 +23,7 @@ #include <__iterator/iterator_traits.h> #include <__iterator/next.h> #include <__type_traits/is_callable.h> -#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_constructible.h> #include <__utility/move.h> #include <__utility/pair.h> @@ -31,6 +31,9 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template @@ -49,21 +52,18 @@ __equal_range(_Iter __first, _Sent __last, const _Tp& __value, _Compare&& __comp __len = __half_len; } else { _Iter __mp1 = __mid; - return pair<_Iter, _Iter>( - std::__lower_bound_impl<_AlgPolicy>(__first, __mid, __value, __comp, __proj), - std::__upper_bound<_AlgPolicy>(++__mp1, __end, __value, __comp, __proj)); + return pair<_Iter, _Iter>(std::__lower_bound<_AlgPolicy>(__first, __mid, __value, __comp, __proj), + std::__upper_bound<_AlgPolicy>(++__mp1, __end, __value, __comp, __proj)); } } return pair<_Iter, _Iter>(__first, __first); } template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator, _ForwardIterator> +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator, _ForwardIterator> equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, _Compare __comp) { - static_assert(__is_callable<_Compare, decltype(*__first), const _Tp&>::value, - "The comparator has to be callable"); - static_assert(is_copy_constructible<_ForwardIterator>::value, - "Iterator has to be copy constructible"); + static_assert(__is_callable<_Compare, decltype(*__first), const _Tp&>::value, "The comparator has to be callable"); + static_assert(is_copy_constructible<_ForwardIterator>::value, "Iterator has to be copy constructible"); return std::__equal_range<_ClassicAlgPolicy>( std::move(__first), std::move(__last), @@ -73,15 +73,13 @@ equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __valu } template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator, _ForwardIterator> +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator, _ForwardIterator> equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { - return std::equal_range( - std::move(__first), - std::move(__last), - __value, - __less::value_type, _Tp>()); + return std::equal_range(std::move(__first), std::move(__last), __value, __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_EQUAL_RANGE_H diff --git a/include/c++/v1/__algorithm/fill.h b/include/c++/v1/__algorithm/fill.h index 76cf4a14..1ce3eadb 100644 --- a/include/c++/v1/__algorithm/fill.h +++ b/include/c++/v1/__algorithm/fill.h @@ -12,7 +12,6 @@ #include <__algorithm/fill_n.h> #include <__config> #include <__iterator/iterator_traits.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -23,28 +22,22 @@ _LIBCPP_BEGIN_NAMESPACE_STD // fill isn't specialized for std::memset, because the compiler already optimizes the loop to a call to std::memset. template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -__fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, forward_iterator_tag) -{ - for (; __first != __last; ++__first) - *__first = __value; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +__fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, forward_iterator_tag) { + for (; __first != __last; ++__first) + *__first = __value; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -__fill(_RandomAccessIterator __first, _RandomAccessIterator __last, const _Tp& __value, random_access_iterator_tag) -{ - _VSTD::fill_n(__first, __last - __first, __value); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +__fill(_RandomAccessIterator __first, _RandomAccessIterator __last, const _Tp& __value, random_access_iterator_tag) { + std::fill_n(__first, __last - __first, __value); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) -{ - _VSTD::__fill(__first, __last, __value, typename iterator_traits<_ForwardIterator>::iterator_category()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { + std::__fill(__first, __last, __value, typename iterator_traits<_ForwardIterator>::iterator_category()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/fill_n.h b/include/c++/v1/__algorithm/fill_n.h index fe58c8d6..f29633f8 100644 --- a/include/c++/v1/__algorithm/fill_n.h +++ b/include/c++/v1/__algorithm/fill_n.h @@ -9,37 +9,90 @@ #ifndef _LIBCPP___ALGORITHM_FILL_N_H #define _LIBCPP___ALGORITHM_FILL_N_H +#include <__algorithm/min.h> #include <__config> +#include <__fwd/bit_reference.h> #include <__iterator/iterator_traits.h> +#include <__memory/pointer_traits.h> #include <__utility/convert_to_integral.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD // fill_n isn't specialized for std::memset, because the compiler already optimizes the loop to a call to std::memset. template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -__fill_n(_OutputIterator __first, _Size __n, const _Tp& __value) -{ - for (; __n > 0; ++__first, (void) --__n) - *__first = __value; - return __first; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +__fill_n(_OutputIterator __first, _Size __n, const _Tp& __value); + +template +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void +__fill_n_bool(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) { + using _It = __bit_iterator<_Cp, false>; + using __storage_type = typename _It::__storage_type; + + const int __bits_per_word = _It::__bits_per_word; + // do first partial word + if (__first.__ctz_ != 0) { + __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); + __storage_type __dn = std::min(__clz_f, __n); + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + if (_FillVal) + *__first.__seg_ |= __m; + else + *__first.__seg_ &= ~__m; + __n -= __dn; + ++__first.__seg_; + } + // do middle whole words + __storage_type __nw = __n / __bits_per_word; + std::__fill_n(std::__to_address(__first.__seg_), __nw, _FillVal ? static_cast<__storage_type>(-1) : 0); + __n -= __nw * __bits_per_word; + // do last partial word + if (__n > 0) { + __first.__seg_ += __nw; + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + if (_FillVal) + *__first.__seg_ |= __m; + else + *__first.__seg_ &= ~__m; + } +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, false> +__fill_n(__bit_iterator<_Cp, false> __first, _Size __n, const bool& __value) { + if (__n > 0) { + if (__value) + std::__fill_n_bool(__first, __n); + else + std::__fill_n_bool(__first, __n); + } + return __first + __n; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -fill_n(_OutputIterator __first, _Size __n, const _Tp& __value) -{ - return _VSTD::__fill_n(__first, _VSTD::__convert_to_integral(__n), __value); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +__fill_n(_OutputIterator __first, _Size __n, const _Tp& __value) { + for (; __n > 0; ++__first, (void)--__n) + *__first = __value; + return __first; +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +fill_n(_OutputIterator __first, _Size __n, const _Tp& __value) { + return std::__fill_n(__first, std::__convert_to_integral(__n), __value); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_FILL_N_H diff --git a/include/c++/v1/__algorithm/find.h b/include/c++/v1/__algorithm/find.h index e51dc9bb..19036d18 100644 --- a/include/c++/v1/__algorithm/find.h +++ b/include/c++/v1/__algorithm/find.h @@ -10,23 +10,176 @@ #ifndef _LIBCPP___ALGORITHM_FIND_H #define _LIBCPP___ALGORITHM_FIND_H +#include <__algorithm/find_segment_if.h> +#include <__algorithm/min.h> +#include <__algorithm/unwrap_iter.h> +#include <__bit/countr.h> +#include <__bit/invert_if.h> #include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__fwd/bit_reference.h> +#include <__iterator/segmented_iterator.h> +#include <__string/constexpr_c_functions.h> +#include <__type_traits/is_integral.h> +#include <__type_traits/is_same.h> +#include <__type_traits/is_signed.h> +#include <__utility/move.h> +#include + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# include +#endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator -find(_InputIterator __first, _InputIterator __last, const _Tp& __value) { +// generic implementation +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Iter +__find(_Iter __first, _Sent __last, const _Tp& __value, _Proj& __proj) { for (; __first != __last; ++__first) - if (*__first == __value) + if (std::__invoke(__proj, *__first) == __value) break; return __first; } +// trivially equality comparable implementations +template ::value && __libcpp_is_trivially_equality_comparable<_Tp, _Up>::value && + sizeof(_Tp) == 1, + int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp* __find(_Tp* __first, _Tp* __last, const _Up& __value, _Proj&) { + if (auto __ret = std::__constexpr_memchr(__first, __value, __last - __first)) + return __ret; + return __last; +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +// TODO: Enable this unconditionally once Clang allows casting from a pointer to an ARC pointer to a +// normal pointer. See rdar://114039220 for details. +# ifndef _LIBCPP_HAS_OBJC_ARC +template ::value && __libcpp_is_trivially_equality_comparable<_Tp, _Up>::value && + sizeof(_Tp) == sizeof(wchar_t) && _LIBCPP_ALIGNOF(_Tp) >= _LIBCPP_ALIGNOF(wchar_t), + int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp* __find(_Tp* __first, _Tp* __last, const _Up& __value, _Proj&) { + if (auto __ret = std::__constexpr_wmemchr(__first, __value, __last - __first)) + return __ret; + return __last; +} +# endif +#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS + +// TODO: This should also be possible to get right with different signedness +// cast integral types to allow vectorization +template ::value && !__libcpp_is_trivially_equality_comparable<_Tp, _Up>::value && + is_integral<_Tp>::value && is_integral<_Up>::value && + is_signed<_Tp>::value == is_signed<_Up>::value, + int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp* +__find(_Tp* __first, _Tp* __last, const _Up& __value, _Proj& __proj) { + if (__value < numeric_limits<_Tp>::min() || __value > numeric_limits<_Tp>::max()) + return __last; + return std::__find(__first, __last, _Tp(__value), __proj); +} + +// __bit_iterator implementation +template +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, _IsConst> +__find_bool(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) { + using _It = __bit_iterator<_Cp, _IsConst>; + using __storage_type = typename _It::__storage_type; + + const int __bits_per_word = _It::__bits_per_word; + // do first partial word + if (__first.__ctz_ != 0) { + __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); + __storage_type __dn = std::min(__clz_f, __n); + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __storage_type __b = std::__invert_if(*__first.__seg_) & __m; + if (__b) + return _It(__first.__seg_, static_cast(std::__libcpp_ctz(__b))); + if (__n == __dn) + return __first + __n; + __n -= __dn; + ++__first.__seg_; + } + // do middle whole words + for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) { + __storage_type __b = std::__invert_if(*__first.__seg_); + if (__b) + return _It(__first.__seg_, static_cast(std::__libcpp_ctz(__b))); + } + // do last partial word + if (__n > 0) { + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b = std::__invert_if(*__first.__seg_) & __m; + if (__b) + return _It(__first.__seg_, static_cast(std::__libcpp_ctz(__b))); + } + return _It(__first.__seg_, static_cast(__n)); +} + +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, _IsConst> +__find(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value, _Proj&) { + if (static_cast(__value)) + return std::__find_bool(__first, static_cast(__last - __first)); + return std::__find_bool(__first, static_cast(__last - __first)); +} + +// segmented iterator implementation + +template +struct __find_segment; + +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _SegmentedIterator +__find(_SegmentedIterator __first, _SegmentedIterator __last, const _Tp& __value, _Proj& __proj) { + return std::__find_segment_if(std::move(__first), std::move(__last), __find_segment<_Tp>(__value), __proj); +} + +template +struct __find_segment { + const _Tp& __value_; + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR __find_segment(const _Tp& __value) : __value_(__value) {} + + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _InputIterator + operator()(_InputIterator __first, _InputIterator __last, _Proj& __proj) const { + return std::__find(__first, __last, __value_, __proj); + } +}; + +// public API +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator +find(_InputIterator __first, _InputIterator __last, const _Tp& __value) { + __identity __proj; + return std::__rewrap_iter( + __first, std::__find(std::__unwrap_iter(__first), std::__unwrap_iter(__last), __value, __proj)); +} + _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_FIND_H diff --git a/include/c++/v1/__algorithm/find_end.h b/include/c++/v1/__algorithm/find_end.h index e2fee6b3..7e08e795 100644 --- a/include/c++/v1/__algorithm/find_end.h +++ b/include/c++/v1/__algorithm/find_end.h @@ -15,12 +15,12 @@ #include <__algorithm/search.h> #include <__config> #include <__functional/identity.h> +#include <__functional/invoke.h> #include <__iterator/advance.h> #include <__iterator/iterator_traits.h> #include <__iterator/next.h> #include <__iterator/reverse_iterator.h> #include <__utility/pair.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -28,15 +28,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template < - class _AlgPolicy, - class _Iter1, - class _Sent1, - class _Iter2, - class _Sent2, - class _Pred, - class _Proj1, - class _Proj2> +template < class _AlgPolicy, + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Pred, + class _Proj1, + class _Proj2> _LIBCPP_HIDE_FROM_ABI inline _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> __find_end_impl( _Iter1 __first1, _Sent1 __last1, @@ -49,7 +48,7 @@ _LIBCPP_HIDE_FROM_ABI inline _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> forward_iterator_tag) { // modeled after search algorithm _Iter1 __match_first = _IterOps<_AlgPolicy>::next(__first1, __last1); // __last1 is the "default" answer - _Iter1 __match_last = __match_first; + _Iter1 __match_last = __match_first; if (__first2 == __last2) return pair<_Iter1, _Iter1>(__match_last, __match_last); while (true) { @@ -66,15 +65,14 @@ _LIBCPP_HIDE_FROM_ABI inline _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> while (true) { if (++__m2 == __last2) { // Pattern exhaused, record answer and search for another one __match_first = __first1; - __match_last = ++__m1; + __match_last = ++__m1; ++__first1; break; } if (++__m1 == __last1) // Source exhausted, return last answer return pair<_Iter1, _Iter1>(__match_first, __match_last); - // mismatch, restart with a new __first - if (!std::__invoke(__pred, std::__invoke(__proj1, *__m1), std::__invoke(__proj2, *__m2))) - { + // mismatch, restart with a new __first + if (!std::__invoke(__pred, std::__invoke(__proj1, *__m1), std::__invoke(__proj2, *__m2))) { ++__first1; break; } // else there is a match, check next elements @@ -82,15 +80,14 @@ _LIBCPP_HIDE_FROM_ABI inline _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> } } -template < - class _IterOps, - class _Pred, - class _Iter1, - class _Sent1, - class _Iter2, - class _Sent2, - class _Proj1, - class _Proj2> +template < class _IterOps, + class _Pred, + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Proj1, + class _Proj2> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Iter1 __find_end( _Iter1 __first1, _Sent1 __sent1, @@ -127,23 +124,21 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Iter1 __find_end( return __last1; // if there is a mismatch, restart with a new __l1 - if (!std::__invoke(__pred, std::__invoke(__proj1, *--__m1), std::__invoke(__proj2, *--__m2))) - { + if (!std::__invoke(__pred, std::__invoke(__proj1, *--__m1), std::__invoke(__proj2, *--__m2))) { break; } // else there is a match, check next elements } } } -template < - class _AlgPolicy, - class _Pred, - class _Iter1, - class _Sent1, - class _Iter2, - class _Sent2, - class _Proj1, - class _Proj2> +template < class _AlgPolicy, + class _Pred, + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Proj1, + class _Proj2> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Iter1 __find_end( _Iter1 __first1, _Sent1 __sent1, @@ -165,8 +160,8 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Iter1 __find_end( if (__len1 < __len2) return __last1; const _Iter1 __s = __first1 + _D1(__len2 - 1); // End of pattern match can't go before here - _Iter1 __l1 = __last1; - _Iter2 __l2 = __last2; + _Iter1 __l1 = __last1; + _Iter2 __l2 = __last2; --__l2; while (true) { while (true) { @@ -189,10 +184,12 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Iter1 __find_end( } template -_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -_ForwardIterator1 __find_end_classic(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, - _BinaryPredicate& __pred) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator1 __find_end_classic( + _ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardIterator2 __last2, + _BinaryPredicate& __pred) { auto __proj = __identity(); return std::__find_end_impl<_ClassicAlgPolicy>( __first1, @@ -208,17 +205,18 @@ _ForwardIterator1 __find_end_classic(_ForwardIterator1 __first1, _ForwardIterato } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_ForwardIterator1 find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, - _BinaryPredicate __pred) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator1 find_end( + _ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardIterator2 __last2, + _BinaryPredicate __pred) { return std::__find_end_classic(__first1, __last1, __first2, __last2, __pred); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_ForwardIterator1 find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator1 +find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2) { return std::find_end(__first1, __last1, __first2, __last2, __equal_to()); } diff --git a/include/c++/v1/__algorithm/find_first_of.h b/include/c++/v1/__algorithm/find_first_of.h index 12f0109a..6b99f562 100644 --- a/include/c++/v1/__algorithm/find_first_of.h +++ b/include/c++/v1/__algorithm/find_first_of.h @@ -21,12 +21,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI -_LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator1 __find_first_of_ce(_ForwardIterator1 __first1, - _ForwardIterator1 __last1, - _ForwardIterator2 __first2, - _ForwardIterator2 __last2, - _BinaryPredicate&& __pred) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator1 __find_first_of_ce( + _ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardIterator2 __last2, + _BinaryPredicate&& __pred) { for (; __first1 != __last1; ++__first1) for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j) if (__pred(*__first1, *__j)) @@ -35,14 +35,17 @@ _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator1 __find_first_of_ce(_ForwardItera } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator1 -find_first_of(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, - _ForwardIterator2 __last2, _BinaryPredicate __pred) { - return _VSTD::__find_first_of_ce(__first1, __last1, __first2, __last2, __pred); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator1 find_first_of( + _ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardIterator2 __last2, + _BinaryPredicate __pred) { + return std::__find_first_of_ce(__first1, __last1, __first2, __last2, __pred); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator1 find_first_of( +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator1 find_first_of( _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2) { return std::__find_first_of_ce(__first1, __last1, __first2, __last2, __equal_to()); } diff --git a/include/c++/v1/__algorithm/find_if.h b/include/c++/v1/__algorithm/find_if.h index f4ef3ac3..22092d35 100644 --- a/include/c++/v1/__algorithm/find_if.h +++ b/include/c++/v1/__algorithm/find_if.h @@ -19,7 +19,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator find_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) { for (; __first != __last; ++__first) if (__pred(*__first)) diff --git a/include/c++/v1/__algorithm/find_if_not.h b/include/c++/v1/__algorithm/find_if_not.h index 96c159cf..cc200196 100644 --- a/include/c++/v1/__algorithm/find_if_not.h +++ b/include/c++/v1/__algorithm/find_if_not.h @@ -19,7 +19,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator find_if_not(_InputIterator __first, _InputIterator __last, _Predicate __pred) { for (; __first != __last; ++__first) if (!__pred(*__first)) diff --git a/include/c++/v1/__algorithm/for_each.h b/include/c++/v1/__algorithm/for_each.h index 6564f31c..259e527f 100644 --- a/include/c++/v1/__algorithm/for_each.h +++ b/include/c++/v1/__algorithm/for_each.h @@ -10,23 +10,48 @@ #ifndef _LIBCPP___ALGORITHM_FOR_EACH_H #define _LIBCPP___ALGORITHM_FOR_EACH_H +#include <__algorithm/for_each_segment.h> #include <__config> +#include <__iterator/segmented_iterator.h> +#include <__ranges/movable_box.h> +#include <__type_traits/enable_if.h> +#include <__utility/in_place.h> +#include <__utility/move.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _Function for_each(_InputIterator __first, - _InputIterator __last, - _Function __f) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Function +for_each(_InputIterator __first, _InputIterator __last, _Function __f) { for (; __first != __last; ++__first) __f(*__first); return __f; } +// __movable_box is available in C++20, but is actually a copyable-box, so optimization is only correct in C++23 +#if _LIBCPP_STD_VER >= 23 +template + requires __is_segmented_iterator<_SegmentedIterator>::value +_LIBCPP_HIDE_FROM_ABI constexpr _Function +for_each(_SegmentedIterator __first, _SegmentedIterator __last, _Function __func) { + ranges::__movable_box<_Function> __wrapped_func(in_place, std::move(__func)); + std::__for_each_segment(__first, __last, [&](auto __lfirst, auto __llast) { + __wrapped_func = + ranges::__movable_box<_Function>(in_place, std::for_each(__lfirst, __llast, std::move(*__wrapped_func))); + }); + return std::move(*__wrapped_func); +} +#endif // _LIBCPP_STD_VER >= 23 + _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_FOR_EACH_H diff --git a/include/c++/v1/__algorithm/for_each_n.h b/include/c++/v1/__algorithm/for_each_n.h index 38d204a1..fce380b4 100644 --- a/include/c++/v1/__algorithm/for_each_n.h +++ b/include/c++/v1/__algorithm/for_each_n.h @@ -12,7 +12,6 @@ #include <__config> #include <__utility/convert_to_integral.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -20,13 +19,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator for_each_n(_InputIterator __first, - _Size __orig_n, - _Function __f) { - typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator +for_each_n(_InputIterator __first, _Size __orig_n, _Function __f) { + typedef decltype(std::__convert_to_integral(__orig_n)) _IntegralSize; _IntegralSize __n = __orig_n; while (__n > 0) { __f(*__first); diff --git a/include/c++/v1/__algorithm/generate.h b/include/c++/v1/__algorithm/generate.h index 48e21b51..c95b5274 100644 --- a/include/c++/v1/__algorithm/generate.h +++ b/include/c++/v1/__algorithm/generate.h @@ -18,12 +18,10 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -generate(_ForwardIterator __first, _ForwardIterator __last, _Generator __gen) -{ - for (; __first != __last; ++__first) - *__first = __gen(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +generate(_ForwardIterator __first, _ForwardIterator __last, _Generator __gen) { + for (; __first != __last; ++__first) + *__first = __gen(); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/generate_n.h b/include/c++/v1/__algorithm/generate_n.h index 45259989..f36403fd 100644 --- a/include/c++/v1/__algorithm/generate_n.h +++ b/include/c++/v1/__algorithm/generate_n.h @@ -11,7 +11,6 @@ #include <__config> #include <__utility/convert_to_integral.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -20,15 +19,13 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -generate_n(_OutputIterator __first, _Size __orig_n, _Generator __gen) -{ - typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize; - _IntegralSize __n = __orig_n; - for (; __n > 0; ++__first, (void) --__n) - *__first = __gen(); - return __first; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +generate_n(_OutputIterator __first, _Size __orig_n, _Generator __gen) { + typedef decltype(std::__convert_to_integral(__orig_n)) _IntegralSize; + _IntegralSize __n = __orig_n; + for (; __n > 0; ++__first, (void)--__n) + *__first = __gen(); + return __first; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/half_positive.h b/include/c++/v1/__algorithm/half_positive.h index 74aede2b..ebda0da3 100644 --- a/include/c++/v1/__algorithm/half_positive.h +++ b/include/c++/v1/__algorithm/half_positive.h @@ -10,7 +10,9 @@ #define _LIBCPP___ALGORITHM_HALF_POSITIVE_H #include <__config> -#include +#include <__type_traits/enable_if.h> +#include <__type_traits/is_integral.h> +#include <__type_traits/make_unsigned.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -20,28 +22,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD // Perform division by two quickly for positive integers (llvm.org/PR39129) -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -typename enable_if -< - is_integral<_Integral>::value, - _Integral ->::type -__half_positive(_Integral __value) -{ - return static_cast<_Integral>(static_cast<__make_unsigned_t<_Integral> >(__value) / 2); +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Integral __half_positive(_Integral __value) { + return static_cast<_Integral>(static_cast<__make_unsigned_t<_Integral> >(__value) / 2); } -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -typename enable_if -< - !is_integral<_Tp>::value, - _Tp ->::type -__half_positive(_Tp __value) -{ - return __value / 2; +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Tp __half_positive(_Tp __value) { + return __value / 2; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/in_found_result.h b/include/c++/v1/__algorithm/in_found_result.h index 3134d6e0..a67ae387 100644 --- a/include/c++/v1/__algorithm/in_found_result.h +++ b/include/c++/v1/__algorithm/in_found_result.h @@ -18,7 +18,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -30,7 +33,7 @@ struct in_found_result { template requires convertible_to - _LIBCPP_HIDE_FROM_ABI constexpr operator in_found_result<_InIter2>() const & { + _LIBCPP_HIDE_FROM_ABI constexpr operator in_found_result<_InIter2>() const& { return {in, found}; } @@ -44,6 +47,8 @@ struct in_found_result { _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_IN_FOUND_RESULT_H diff --git a/include/c++/v1/__algorithm/in_fun_result.h b/include/c++/v1/__algorithm/in_fun_result.h index 3cbb9e12..a22069a9 100644 --- a/include/c++/v1/__algorithm/in_fun_result.h +++ b/include/c++/v1/__algorithm/in_fun_result.h @@ -18,9 +18,12 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace ranges { template @@ -30,7 +33,7 @@ struct in_fun_result { template requires convertible_to && convertible_to - _LIBCPP_HIDE_FROM_ABI constexpr operator in_fun_result<_InIter2, _Func2>() const & { + _LIBCPP_HIDE_FROM_ABI constexpr operator in_fun_result<_InIter2, _Func2>() const& { return {in, fun}; } @@ -42,8 +45,10 @@ struct in_fun_result { }; } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_IN_FUN_RESULT_H diff --git a/include/c++/v1/__algorithm/in_in_out_result.h b/include/c++/v1/__algorithm/in_in_out_result.h index 3e747be4..ba0380b5 100644 --- a/include/c++/v1/__algorithm/in_in_out_result.h +++ b/include/c++/v1/__algorithm/in_in_out_result.h @@ -18,9 +18,12 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace ranges { @@ -31,26 +34,26 @@ struct in_in_out_result { _LIBCPP_NO_UNIQUE_ADDRESS _OutIter1 out; template - requires convertible_to - && convertible_to && convertible_to - _LIBCPP_HIDE_FROM_ABI constexpr - operator in_in_out_result<_InIter3, _InIter4, _OutIter2>() const& { + requires convertible_to && convertible_to && + convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr operator in_in_out_result<_InIter3, _InIter4, _OutIter2>() const& { return {in1, in2, out}; } template - requires convertible_to<_InIter1, _InIter3> - && convertible_to<_InIter2, _InIter4> && convertible_to<_OutIter1, _OutIter2> - _LIBCPP_HIDE_FROM_ABI constexpr - operator in_in_out_result<_InIter3, _InIter4, _OutIter2>() && { + requires convertible_to<_InIter1, _InIter3> && convertible_to<_InIter2, _InIter4> && + convertible_to<_OutIter1, _OutIter2> + _LIBCPP_HIDE_FROM_ABI constexpr operator in_in_out_result<_InIter3, _InIter4, _OutIter2>() && { return {std::move(in1), std::move(in2), std::move(out)}; } }; } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_IN_IN_OUT_RESULT_H diff --git a/include/c++/v1/__algorithm/in_in_result.h b/include/c++/v1/__algorithm/in_in_result.h index 2098c188..994573fc 100644 --- a/include/c++/v1/__algorithm/in_in_result.h +++ b/include/c++/v1/__algorithm/in_in_result.h @@ -18,9 +18,12 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace ranges { @@ -31,23 +34,23 @@ struct in_in_result { template requires convertible_to && convertible_to - _LIBCPP_HIDE_FROM_ABI constexpr - operator in_in_result<_InIter3, _InIter4>() const & { + _LIBCPP_HIDE_FROM_ABI constexpr operator in_in_result<_InIter3, _InIter4>() const& { return {in1, in2}; } template requires convertible_to<_InIter1, _InIter3> && convertible_to<_InIter2, _InIter4> - _LIBCPP_HIDE_FROM_ABI constexpr - operator in_in_result<_InIter3, _InIter4>() && { + _LIBCPP_HIDE_FROM_ABI constexpr operator in_in_result<_InIter3, _InIter4>() && { return {std::move(in1), std::move(in2)}; } }; } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_IN_IN_RESULT_H diff --git a/include/c++/v1/__algorithm/in_out_out_result.h b/include/c++/v1/__algorithm/in_out_out_result.h index 4046eee5..8ceb4528 100644 --- a/include/c++/v1/__algorithm/in_out_out_result.h +++ b/include/c++/v1/__algorithm/in_out_out_result.h @@ -18,9 +18,12 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace ranges { template @@ -30,25 +33,25 @@ struct in_out_out_result { _LIBCPP_NO_UNIQUE_ADDRESS _OutIter2 out2; template - requires convertible_to - && convertible_to && convertible_to - _LIBCPP_HIDE_FROM_ABI constexpr - operator in_out_out_result<_InIter2, _OutIter3, _OutIter4>() const& { + requires convertible_to && convertible_to && + convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr operator in_out_out_result<_InIter2, _OutIter3, _OutIter4>() const& { return {in, out1, out2}; } template - requires convertible_to<_InIter1, _InIter2> - && convertible_to<_OutIter1, _OutIter3> && convertible_to<_OutIter2, _OutIter4> - _LIBCPP_HIDE_FROM_ABI constexpr - operator in_out_out_result<_InIter2, _OutIter3, _OutIter4>() && { + requires convertible_to<_InIter1, _InIter2> && convertible_to<_OutIter1, _OutIter3> && + convertible_to<_OutIter2, _OutIter4> + _LIBCPP_HIDE_FROM_ABI constexpr operator in_out_out_result<_InIter2, _OutIter3, _OutIter4>() && { return {std::move(in), std::move(out1), std::move(out2)}; } }; } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_IN_OUT_OUT_RESULT_H diff --git a/include/c++/v1/__algorithm/in_out_result.h b/include/c++/v1/__algorithm/in_out_result.h index 7f5a0271..a7a986cf 100644 --- a/include/c++/v1/__algorithm/in_out_result.h +++ b/include/c++/v1/__algorithm/in_out_result.h @@ -18,36 +18,39 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace ranges { -template +template struct in_out_result { _LIBCPP_NO_UNIQUE_ADDRESS _InIter1 in; _LIBCPP_NO_UNIQUE_ADDRESS _OutIter1 out; template requires convertible_to && convertible_to - _LIBCPP_HIDE_FROM_ABI - constexpr operator in_out_result<_InIter2, _OutIter2>() const & { + _LIBCPP_HIDE_FROM_ABI constexpr operator in_out_result<_InIter2, _OutIter2>() const& { return {in, out}; } template requires convertible_to<_InIter1, _InIter2> && convertible_to<_OutIter1, _OutIter2> - _LIBCPP_HIDE_FROM_ABI - constexpr operator in_out_result<_InIter2, _OutIter2>() && { + _LIBCPP_HIDE_FROM_ABI constexpr operator in_out_result<_InIter2, _OutIter2>() && { return {std::move(in), std::move(out)}; } }; } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_IN_OUT_RESULT_H diff --git a/include/c++/v1/__algorithm/includes.h b/include/c++/v1/__algorithm/includes.h index cc39f275..62af03c3 100644 --- a/include/c++/v1/__algorithm/includes.h +++ b/include/c++/v1/__algorithm/includes.h @@ -22,15 +22,23 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -__includes(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, - _Comp&& __comp, _Proj1&& __proj1, _Proj2&& __proj2) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __includes( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Comp&& __comp, + _Proj1&& __proj1, + _Proj2&& __proj2) { for (; __first2 != __last2; ++__first1) { - if (__first1 == __last1 || std::__invoke( - __comp, std::__invoke(__proj2, *__first2), std::__invoke(__proj1, *__first1))) + if (__first1 == __last1 || + std::__invoke(__comp, std::__invoke(__proj2, *__first2), std::__invoke(__proj1, *__first1))) return false; if (!std::__invoke(__comp, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) ++__first2; @@ -39,14 +47,14 @@ __includes(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool includes( - _InputIterator1 __first1, - _InputIterator1 __last1, - _InputIterator2 __first2, - _InputIterator2 __last2, - _Compare __comp) { - static_assert(__is_callable<_Compare, decltype(*__first1), decltype(*__first2)>::value, - "Comparator has to be callable"); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +includes(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _Compare __comp) { + static_assert( + __is_callable<_Compare, decltype(*__first1), decltype(*__first2)>::value, "Comparator has to be callable"); return std::__includes( std::move(__first1), @@ -59,17 +67,13 @@ _LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { - return std::includes( - std::move(__first1), - std::move(__last1), - std::move(__first2), - std::move(__last2), - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()); + return std::includes(std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_INCLUDES_H diff --git a/include/c++/v1/__algorithm/inplace_merge.h b/include/c++/v1/__algorithm/inplace_merge.h index 5bbefc94..a6bcc66a 100644 --- a/include/c++/v1/__algorithm/inplace_merge.h +++ b/include/c++/v1/__algorithm/inplace_merge.h @@ -42,54 +42,57 @@ template class __invert // invert the sense of a comparison { private: - _Predicate __p_; + _Predicate __p_; + public: - _LIBCPP_INLINE_VISIBILITY __invert() {} + _LIBCPP_HIDE_FROM_ABI __invert() {} - _LIBCPP_INLINE_VISIBILITY - explicit __invert(_Predicate __p) : __p_(__p) {} + _LIBCPP_HIDE_FROM_ABI explicit __invert(_Predicate __p) : __p_(__p) {} - template - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _T1& __x) {return !__p_(__x);} + template + _LIBCPP_HIDE_FROM_ABI bool operator()(const _T1& __x) { + return !__p_(__x); + } - template - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _T1& __x, const _T2& __y) {return __p_(__y, __x);} + template + _LIBCPP_HIDE_FROM_ABI bool operator()(const _T1& __x, const _T2& __y) { + return __p_(__y, __x); + } }; -template -_LIBCPP_HIDE_FROM_ABI -void __half_inplace_merge(_InputIterator1 __first1, _Sent1 __last1, - _InputIterator2 __first2, _Sent2 __last2, - _OutputIterator __result, _Compare&& __comp) -{ - for (; __first1 != __last1; ++__result) - { - if (__first2 == __last2) - { - std::__move<_AlgPolicy>(__first1, __last1, __result); - return; - } +template +_LIBCPP_HIDE_FROM_ABI void __half_inplace_merge( + _InputIterator1 __first1, + _Sent1 __last1, + _InputIterator2 __first2, + _Sent2 __last2, + _OutputIterator __result, + _Compare&& __comp) { + for (; __first1 != __last1; ++__result) { + if (__first2 == __last2) { + std::__move<_AlgPolicy>(__first1, __last1, __result); + return; + } - if (__comp(*__first2, *__first1)) - { - *__result = _IterOps<_AlgPolicy>::__iter_move(__first2); - ++__first2; - } - else - { - *__result = _IterOps<_AlgPolicy>::__iter_move(__first1); - ++__first1; - } + if (__comp(*__first2, *__first1)) { + *__result = _IterOps<_AlgPolicy>::__iter_move(__first2); + ++__first2; + } else { + *__result = _IterOps<_AlgPolicy>::__iter_move(__first1); + ++__first1; } - // __first2 through __last2 are already in the right spot. + } + // __first2 through __last2 are already in the right spot. } template -_LIBCPP_HIDE_FROM_ABI -void __buffered_inplace_merge( +_LIBCPP_HIDE_FROM_ABI void __buffered_inplace_merge( _BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, @@ -98,27 +101,25 @@ void __buffered_inplace_merge( typename iterator_traits<_BidirectionalIterator>::difference_type __len2, typename iterator_traits<_BidirectionalIterator>::value_type* __buff) { typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - __destruct_n __d(0); - unique_ptr __h2(__buff, __d); - if (__len1 <= __len2) - { - value_type* __p = __buff; - for (_BidirectionalIterator __i = __first; __i != __middle; __d.template __incr(), (void) ++__i, (void) ++__p) - ::new ((void*)__p) value_type(_IterOps<_AlgPolicy>::__iter_move(__i)); - std::__half_inplace_merge<_AlgPolicy>(__buff, __p, __middle, __last, __first, __comp); - } - else - { - value_type* __p = __buff; - for (_BidirectionalIterator __i = __middle; __i != __last; __d.template __incr(), (void) ++__i, (void) ++__p) - ::new ((void*)__p) value_type(_IterOps<_AlgPolicy>::__iter_move(__i)); - typedef __unconstrained_reverse_iterator<_BidirectionalIterator> _RBi; - typedef __unconstrained_reverse_iterator _Rv; - typedef __invert<_Compare> _Inverted; - std::__half_inplace_merge<_AlgPolicy>(_Rv(__p), _Rv(__buff), - _RBi(__middle), _RBi(__first), - _RBi(__last), _Inverted(__comp)); - } + __destruct_n __d(0); + unique_ptr __h2(__buff, __d); + if (__len1 <= __len2) { + value_type* __p = __buff; + for (_BidirectionalIterator __i = __first; __i != __middle; + __d.template __incr(), (void)++__i, (void)++__p) + ::new ((void*)__p) value_type(_IterOps<_AlgPolicy>::__iter_move(__i)); + std::__half_inplace_merge<_AlgPolicy>(__buff, __p, __middle, __last, __first, __comp); + } else { + value_type* __p = __buff; + for (_BidirectionalIterator __i = __middle; __i != __last; + __d.template __incr(), (void)++__i, (void)++__p) + ::new ((void*)__p) value_type(_IterOps<_AlgPolicy>::__iter_move(__i)); + typedef reverse_iterator<_BidirectionalIterator> _RBi; + typedef reverse_iterator _Rv; + typedef __invert<_Compare> _Inverted; + std::__half_inplace_merge<_AlgPolicy>( + _Rv(__p), _Rv(__buff), _RBi(__middle), _RBi(__first), _RBi(__last), _Inverted(__comp)); + } } template @@ -131,107 +132,92 @@ void __inplace_merge( typename iterator_traits<_BidirectionalIterator>::difference_type __len2, typename iterator_traits<_BidirectionalIterator>::value_type* __buff, ptrdiff_t __buff_size) { - using _Ops = _IterOps<_AlgPolicy>; - - typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; - while (true) - { - // if __middle == __last, we're done - if (__len2 == 0) - return; - if (__len1 <= __buff_size || __len2 <= __buff_size) - return std::__buffered_inplace_merge<_AlgPolicy> - (__first, __middle, __last, __comp, __len1, __len2, __buff); - // shrink [__first, __middle) as much as possible (with no moves), returning if it shrinks to 0 - for (; true; ++__first, (void) --__len1) - { - if (__len1 == 0) - return; - if (__comp(*__middle, *__first)) - break; - } - // __first < __middle < __last - // *__first > *__middle - // partition [__first, __m1) [__m1, __middle) [__middle, __m2) [__m2, __last) such that - // all elements in: - // [__first, __m1) <= [__middle, __m2) - // [__middle, __m2) < [__m1, __middle) - // [__m1, __middle) <= [__m2, __last) - // and __m1 or __m2 is in the middle of its range - _BidirectionalIterator __m1; // "median" of [__first, __middle) - _BidirectionalIterator __m2; // "median" of [__middle, __last) - difference_type __len11; // distance(__first, __m1) - difference_type __len21; // distance(__middle, __m2) - // binary search smaller range - if (__len1 < __len2) - { // __len >= 1, __len2 >= 2 - __len21 = __len2 / 2; - __m2 = __middle; - _Ops::advance(__m2, __len21); - __m1 = std::__upper_bound<_AlgPolicy>(__first, __middle, *__m2, __comp, std::__identity()); - __len11 = _Ops::distance(__first, __m1); - } - else - { - if (__len1 == 1) - { // __len1 >= __len2 && __len2 > 0, therefore __len2 == 1 - // It is known *__first > *__middle - _Ops::iter_swap(__first, __middle); - return; - } - // __len1 >= 2, __len2 >= 1 - __len11 = __len1 / 2; - __m1 = __first; - _Ops::advance(__m1, __len11); - __m2 = std::lower_bound(__middle, __last, *__m1, __comp); - __len21 = _Ops::distance(__middle, __m2); - } - difference_type __len12 = __len1 - __len11; // distance(__m1, __middle) - difference_type __len22 = __len2 - __len21; // distance(__m2, __last) - // [__first, __m1) [__m1, __middle) [__middle, __m2) [__m2, __last) - // swap middle two partitions - __middle = std::__rotate<_AlgPolicy>(__m1, __middle, __m2).first; - // __len12 and __len21 now have swapped meanings - // merge smaller range with recursive call and larger with tail recursion elimination - if (__len11 + __len21 < __len12 + __len22) - { - std::__inplace_merge<_AlgPolicy>( - __first, __m1, __middle, __comp, __len11, __len21, __buff, __buff_size); - __first = __middle; - __middle = __m2; - __len1 = __len12; - __len2 = __len22; - } - else - { - std::__inplace_merge<_AlgPolicy>( - __middle, __m2, __last, __comp, __len12, __len22, __buff, __buff_size); - __last = __middle; - __middle = __m1; - __len1 = __len11; - __len2 = __len21; - } + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; + while (true) { + // if __middle == __last, we're done + if (__len2 == 0) + return; + if (__len1 <= __buff_size || __len2 <= __buff_size) + return std::__buffered_inplace_merge<_AlgPolicy>(__first, __middle, __last, __comp, __len1, __len2, __buff); + // shrink [__first, __middle) as much as possible (with no moves), returning if it shrinks to 0 + for (; true; ++__first, (void)--__len1) { + if (__len1 == 0) + return; + if (__comp(*__middle, *__first)) + break; } + // __first < __middle < __last + // *__first > *__middle + // partition [__first, __m1) [__m1, __middle) [__middle, __m2) [__m2, __last) such that + // all elements in: + // [__first, __m1) <= [__middle, __m2) + // [__middle, __m2) < [__m1, __middle) + // [__m1, __middle) <= [__m2, __last) + // and __m1 or __m2 is in the middle of its range + _BidirectionalIterator __m1; // "median" of [__first, __middle) + _BidirectionalIterator __m2; // "median" of [__middle, __last) + difference_type __len11; // distance(__first, __m1) + difference_type __len21; // distance(__middle, __m2) + // binary search smaller range + if (__len1 < __len2) { // __len >= 1, __len2 >= 2 + __len21 = __len2 / 2; + __m2 = __middle; + _Ops::advance(__m2, __len21); + __m1 = std::__upper_bound<_AlgPolicy>(__first, __middle, *__m2, __comp, std::__identity()); + __len11 = _Ops::distance(__first, __m1); + } else { + if (__len1 == 1) { // __len1 >= __len2 && __len2 > 0, therefore __len2 == 1 + // It is known *__first > *__middle + _Ops::iter_swap(__first, __middle); + return; + } + // __len1 >= 2, __len2 >= 1 + __len11 = __len1 / 2; + __m1 = __first; + _Ops::advance(__m1, __len11); + __m2 = std::lower_bound(__middle, __last, *__m1, __comp); + __len21 = _Ops::distance(__middle, __m2); + } + difference_type __len12 = __len1 - __len11; // distance(__m1, __middle) + difference_type __len22 = __len2 - __len21; // distance(__m2, __last) + // [__first, __m1) [__m1, __middle) [__middle, __m2) [__m2, __last) + // swap middle two partitions + __middle = std::__rotate<_AlgPolicy>(__m1, __middle, __m2).first; + // __len12 and __len21 now have swapped meanings + // merge smaller range with recursive call and larger with tail recursion elimination + if (__len11 + __len21 < __len12 + __len22) { + std::__inplace_merge<_AlgPolicy>(__first, __m1, __middle, __comp, __len11, __len21, __buff, __buff_size); + __first = __middle; + __middle = __m2; + __len1 = __len12; + __len2 = __len22; + } else { + std::__inplace_merge<_AlgPolicy>(__middle, __m2, __last, __comp, __len12, __len22, __buff, __buff_size); + __last = __middle; + __middle = __m1; + __len1 = __len11; + __len2 = __len21; + } + } } template -_LIBCPP_HIDE_FROM_ABI -void -__inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, - _Compare&& __comp) -{ - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; - difference_type __len1 = _IterOps<_AlgPolicy>::distance(__first, __middle); - difference_type __len2 = _IterOps<_AlgPolicy>::distance(__middle, __last); - difference_type __buf_size = _VSTD::min(__len1, __len2); -// TODO: Remove the use of std::get_temporary_buffer -_LIBCPP_SUPPRESS_DEPRECATED_PUSH - pair __buf = _VSTD::get_temporary_buffer(__buf_size); -_LIBCPP_SUPPRESS_DEPRECATED_POP - unique_ptr __h(__buf.first); - return std::__inplace_merge<_AlgPolicy>( - std::move(__first), std::move(__middle), std::move(__last), __comp, __len1, __len2, __buf.first, __buf.second); +_LIBCPP_HIDE_FROM_ABI void __inplace_merge( + _BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, _Compare&& __comp) { + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; + difference_type __len1 = _IterOps<_AlgPolicy>::distance(__first, __middle); + difference_type __len2 = _IterOps<_AlgPolicy>::distance(__middle, __last); + difference_type __buf_size = std::min(__len1, __len2); + // TODO: Remove the use of std::get_temporary_buffer + _LIBCPP_SUPPRESS_DEPRECATED_PUSH + pair __buf = std::get_temporary_buffer(__buf_size); + _LIBCPP_SUPPRESS_DEPRECATED_POP + unique_ptr __h(__buf.first); + return std::__inplace_merge<_AlgPolicy>( + std::move(__first), std::move(__middle), std::move(__last), __comp, __len1, __len2, __buf.first, __buf.second); } template @@ -242,12 +228,9 @@ inline _LIBCPP_HIDE_FROM_ABI void inplace_merge( } template -inline _LIBCPP_HIDE_FROM_ABI -void -inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last) -{ - std::inplace_merge(std::move(__first), std::move(__middle), std::move(__last), - __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI void +inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last) { + std::inplace_merge(std::move(__first), std::move(__middle), std::move(__last), __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/is_heap.h b/include/c++/v1/__algorithm/is_heap.h index 2dcb4a28..c589b804 100644 --- a/include/c++/v1/__algorithm/is_heap.h +++ b/include/c++/v1/__algorithm/is_heap.h @@ -22,21 +22,15 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ - return std::__is_heap_until(__first, __last, static_cast<__comp_ref_type<_Compare> >(__comp)) == __last; +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + return std::__is_heap_until(__first, __last, static_cast<__comp_ref_type<_Compare> >(__comp)) == __last; } -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - return _VSTD::is_heap(__first, __last, __less::value_type>()); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { + return std::is_heap(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/is_heap_until.h b/include/c++/v1/__algorithm/is_heap_until.h index 6ed4cb29..a174f245 100644 --- a/include/c++/v1/__algorithm/is_heap_until.h +++ b/include/c++/v1/__algorithm/is_heap_until.h @@ -22,43 +22,39 @@ _LIBCPP_BEGIN_NAMESPACE_STD template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator -__is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp) -{ - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - difference_type __len = __last - __first; - difference_type __p = 0; - difference_type __c = 1; - _RandomAccessIterator __pp = __first; - while (__c < __len) - { - _RandomAccessIterator __cp = __first + __c; - if (__comp(*__pp, *__cp)) - return __cp; - ++__c; - ++__cp; - if (__c == __len) - return __last; - if (__comp(*__pp, *__cp)) - return __cp; - ++__p; - ++__pp; - __c = 2 * __p + 1; - } - return __last; +__is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp) { + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + difference_type __len = __last - __first; + difference_type __p = 0; + difference_type __c = 1; + _RandomAccessIterator __pp = __first; + while (__c < __len) { + _RandomAccessIterator __cp = __first + __c; + if (__comp(*__pp, *__cp)) + return __cp; + ++__c; + ++__cp; + if (__c == __len) + return __last; + if (__comp(*__pp, *__cp)) + return __cp; + ++__p; + ++__pp; + __c = 2 * __p + 1; + } + return __last; } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator -is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ - return std::__is_heap_until(__first, __last, static_cast<__comp_ref_type<_Compare> >(__comp)); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator +is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + return std::__is_heap_until(__first, __last, static_cast<__comp_ref_type<_Compare> >(__comp)); } -template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator -is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - return _VSTD::__is_heap_until(__first, __last, __less::value_type>()); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator +is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) { + return std::__is_heap_until(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/is_partitioned.h b/include/c++/v1/__algorithm/is_partitioned.h index ab59d3cc..1f7c8b0b 100644 --- a/include/c++/v1/__algorithm/is_partitioned.h +++ b/include/c++/v1/__algorithm/is_partitioned.h @@ -18,19 +18,18 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -is_partitioned(_InputIterator __first, _InputIterator __last, _Predicate __pred) -{ - for (; __first != __last; ++__first) - if (!__pred(*__first)) - break; - if ( __first == __last ) - return true; - ++__first; - for (; __first != __last; ++__first) - if (__pred(*__first)) - return false; +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +is_partitioned(_InputIterator __first, _InputIterator __last, _Predicate __pred) { + for (; __first != __last; ++__first) + if (!__pred(*__first)) + break; + if (__first == __last) return true; + ++__first; + for (; __first != __last; ++__first) + if (__pred(*__first)) + return false; + return true; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/is_permutation.h b/include/c++/v1/__algorithm/is_permutation.h index 00544565..2ddfb32a 100644 --- a/include/c++/v1/__algorithm/is_permutation.h +++ b/include/c++/v1/__algorithm/is_permutation.h @@ -19,45 +19,64 @@ #include <__iterator/distance.h> #include <__iterator/iterator_traits.h> #include <__iterator/next.h> +#include <__type_traits/is_callable.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template struct _ConstTimeDistance : false_type {}; -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template -struct _ConstTimeDistance<_Iter1, _Sent1, _Iter2, _Sent2, __enable_if_t< - sized_sentinel_for<_Sent1, _Iter1> && - sized_sentinel_for<_Sent2, _Iter2> ->> : true_type {}; +struct _ConstTimeDistance<_Iter1, + _Sent1, + _Iter2, + _Sent2, + __enable_if_t< sized_sentinel_for<_Sent1, _Iter1> && sized_sentinel_for<_Sent2, _Iter2> >> + : true_type {}; #else template -struct _ConstTimeDistance<_Iter1, _Iter1, _Iter2, _Iter2, __enable_if_t< - is_same::iterator_category, random_access_iterator_tag>::value && - is_same::iterator_category, random_access_iterator_tag>::value -> > : true_type {}; +struct _ConstTimeDistance< + _Iter1, + _Iter1, + _Iter2, + _Iter2, + __enable_if_t< is_same::iterator_category, random_access_iterator_tag>::value && + is_same::iterator_category, random_access_iterator_tag>::value > > + : true_type {}; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 // Internal functions // For each element in [f1, l1) see if there are the same number of equal elements in [f2, l2) template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -__is_permutation_impl(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, - _Pred&& __pred, _Proj1&& __proj1, _Proj2&& __proj2) { + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Proj1, + class _Proj2, + class _Pred> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __is_permutation_impl( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred&& __pred, + _Proj1&& __proj1, + _Proj2&& __proj2) { using _D1 = __iter_diff_t<_Iter1>; for (auto __i = __first1; __i != __last1; ++__i) { @@ -94,9 +113,8 @@ __is_permutation_impl(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 _ // 2+1 iterators, predicate. Not used by range algorithms. template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -__is_permutation(_ForwardIterator1 __first1, _Sentinel1 __last1, _ForwardIterator2 __first2, - _BinaryPredicate&& __pred) { +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __is_permutation( + _ForwardIterator1 __first1, _Sentinel1 __last1, _ForwardIterator2 __first2, _BinaryPredicate&& __pred) { // Shorten sequences as much as possible by lopping of any equal prefix. for (; __first1 != __last1; ++__first1, (void)++__first2) { if (!__pred(*__first1, *__first2)) @@ -108,24 +126,39 @@ __is_permutation(_ForwardIterator1 __first1, _Sentinel1 __last1, _ForwardIterato // __first1 != __last1 && *__first1 != *__first2 using _D1 = __iter_diff_t<_ForwardIterator1>; - _D1 __l1 = _IterOps<_AlgPolicy>::distance(__first1, __last1); + _D1 __l1 = _IterOps<_AlgPolicy>::distance(__first1, __last1); if (__l1 == _D1(1)) return false; auto __last2 = _IterOps<_AlgPolicy>::next(__first2, __l1); return std::__is_permutation_impl<_AlgPolicy>( - std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), - __pred, __identity(), __identity()); + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + __pred, + __identity(), + __identity()); } // 2+2 iterators, predicate, non-constant time `distance`. template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -__is_permutation(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, - _Pred&& __pred, _Proj1&& __proj1, _Proj2&& __proj2, - /*_ConstTimeDistance=*/false_type) { + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Proj1, + class _Proj2, + class _Pred> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __is_permutation( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred&& __pred, + _Proj1&& __proj1, + _Proj2&& __proj2, + /*_ConstTimeDistance=*/false_type) { // Shorten sequences as much as possible by lopping of any equal prefix. while (__first1 != __last1 && __first2 != __last2) { if (!std::__invoke(__pred, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) @@ -140,44 +173,73 @@ __is_permutation(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last return false; using _D1 = __iter_diff_t<_Iter1>; - _D1 __l1 = _IterOps<_AlgPolicy>::distance(__first1, __last1); + _D1 __l1 = _IterOps<_AlgPolicy>::distance(__first1, __last1); using _D2 = __iter_diff_t<_Iter2>; - _D2 __l2 = _IterOps<_AlgPolicy>::distance(__first2, __last2); + _D2 __l2 = _IterOps<_AlgPolicy>::distance(__first2, __last2); if (__l1 != __l2) return false; return std::__is_permutation_impl<_AlgPolicy>( - std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), - __pred, __proj1, __proj2); + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), __pred, __proj1, __proj2); } // 2+2 iterators, predicate, specialization for constant-time `distance` call. template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -__is_permutation(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, - _Pred&& __pred, _Proj1&& __proj1, _Proj2&& __proj2, - /*_ConstTimeDistance=*/true_type) { + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Proj1, + class _Proj2, + class _Pred> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __is_permutation( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred&& __pred, + _Proj1&& __proj1, + _Proj2&& __proj2, + /*_ConstTimeDistance=*/true_type) { if (std::distance(__first1, __last1) != std::distance(__first2, __last2)) return false; return std::__is_permutation<_AlgPolicy>( - std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), - __pred, __proj1, __proj2, + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + __pred, + __proj1, + __proj2, /*_ConstTimeDistance=*/false_type()); } // 2+2 iterators, predicate template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -__is_permutation(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, - _Pred&& __pred, _Proj1&& __proj1, _Proj2&& __proj2) { + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Proj1, + class _Proj2, + class _Pred> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __is_permutation( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred&& __pred, + _Proj1&& __proj1, + _Proj2&& __proj2) { return std::__is_permutation<_AlgPolicy>( - std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), - __pred, __proj1, __proj2, + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + __pred, + __proj1, + __proj2, _ConstTimeDistance<_Iter1, _Sent1, _Iter2, _Sent2>()); } @@ -185,28 +247,26 @@ __is_permutation(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last // 2+1 iterators, predicate template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, - _BinaryPredicate __pred) { +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool is_permutation( + _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _BinaryPredicate __pred) { static_assert(__is_callable<_BinaryPredicate, decltype(*__first1), decltype(*__first2)>::value, - "The predicate has to be callable"); + "The predicate has to be callable"); - return std::__is_permutation<_ClassicAlgPolicy>( - std::move(__first1), std::move(__last1), std::move(__first2), __pred); + return std::__is_permutation<_ClassicAlgPolicy>(std::move(__first1), std::move(__last1), std::move(__first2), __pred); } // 2+1 iterators template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) { return std::is_permutation(__first1, __last1, __first2, __equal_to()); } -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 // 2+2 iterators template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool is_permutation( +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool is_permutation( _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2) { return std::__is_permutation<_ClassicAlgPolicy>( std::move(__first1), @@ -220,19 +280,29 @@ _LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 // 2+2 iterators, predicate template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, - _ForwardIterator2 __last2, _BinaryPredicate __pred) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool is_permutation( + _ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardIterator2 __last2, + _BinaryPredicate __pred) { static_assert(__is_callable<_BinaryPredicate, decltype(*__first1), decltype(*__first2)>::value, - "The predicate has to be callable"); + "The predicate has to be callable"); return std::__is_permutation<_ClassicAlgPolicy>( - std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), - __pred, __identity(), __identity()); + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + __pred, + __identity(), + __identity()); } -#endif // _LIBCPP_STD_VER > 11 +#endif // _LIBCPP_STD_VER >= 14 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_IS_PERMUTATION_H diff --git a/include/c++/v1/__algorithm/is_sorted.h b/include/c++/v1/__algorithm/is_sorted.h index bf44f457..3befb1ac 100644 --- a/include/c++/v1/__algorithm/is_sorted.h +++ b/include/c++/v1/__algorithm/is_sorted.h @@ -22,21 +22,15 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -is_sorted(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - return _VSTD::__is_sorted_until<__comp_ref_type<_Compare> >(__first, __last, __comp) == __last; +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +is_sorted(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) { + return std::__is_sorted_until<__comp_ref_type<_Compare> >(__first, __last, __comp) == __last; } -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -is_sorted(_ForwardIterator __first, _ForwardIterator __last) -{ - return _VSTD::is_sorted(__first, __last, __less::value_type>()); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +is_sorted(_ForwardIterator __first, _ForwardIterator __last) { + return std::is_sorted(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/is_sorted_until.h b/include/c++/v1/__algorithm/is_sorted_until.h index b6683000..53a49f00 100644 --- a/include/c++/v1/__algorithm/is_sorted_until.h +++ b/include/c++/v1/__algorithm/is_sorted_until.h @@ -22,33 +22,28 @@ _LIBCPP_BEGIN_NAMESPACE_STD template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator -__is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - if (__first != __last) - { - _ForwardIterator __i = __first; - while (++__i != __last) - { - if (__comp(*__i, *__first)) - return __i; - __first = __i; - } +__is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) { + if (__first != __last) { + _ForwardIterator __i = __first; + while (++__i != __last) { + if (__comp(*__i, *__first)) + return __i; + __first = __i; } - return __last; + } + return __last; } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator -is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - return _VSTD::__is_sorted_until<__comp_ref_type<_Compare> >(__first, __last, __comp); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) { + return std::__is_sorted_until<__comp_ref_type<_Compare> >(__first, __last, __comp); } -template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator -is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) -{ - return _VSTD::is_sorted_until(__first, __last, __less::value_type>()); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) { + return std::is_sorted_until(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/iter_swap.h b/include/c++/v1/__algorithm/iter_swap.h index 44422b5d..a1412e5d 100644 --- a/include/c++/v1/__algorithm/iter_swap.h +++ b/include/c++/v1/__algorithm/iter_swap.h @@ -20,8 +20,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 void iter_swap(_ForwardIterator1 __a, - _ForwardIterator2 __b) +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) // _NOEXCEPT_(_NOEXCEPT_(swap(*__a, *__b))) _NOEXCEPT_(_NOEXCEPT_(swap(*std::declval<_ForwardIterator1>(), *std::declval<_ForwardIterator2>()))) { swap(*__a, *__b); diff --git a/include/c++/v1/__algorithm/iterator_operations.h b/include/c++/v1/__algorithm/iterator_operations.h index bd3e6f1d..8ced9892 100644 --- a/include/c++/v1/__algorithm/iterator_operations.h +++ b/include/c++/v1/__algorithm/iterator_operations.h @@ -11,6 +11,7 @@ #include <__algorithm/iter_swap.h> #include <__algorithm/ranges_iterator_concept.h> +#include <__assert> #include <__config> #include <__iterator/advance.h> #include <__iterator/distance.h> @@ -33,16 +34,19 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -template struct _IterOps; +template +struct _IterOps; -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 struct _RangeAlgPolicy {}; template <> struct _IterOps<_RangeAlgPolicy> { - template using __value_type = iter_value_t<_Iter>; @@ -52,12 +56,12 @@ struct _IterOps<_RangeAlgPolicy> { template using __difference_type = iter_difference_t<_Iter>; - static constexpr auto advance = ranges::advance; - static constexpr auto distance = ranges::distance; - static constexpr auto __iter_move = ranges::iter_move; - static constexpr auto iter_swap = ranges::iter_swap; - static constexpr auto next = ranges::next; - static constexpr auto prev = ranges::prev; + static constexpr auto advance = ranges::advance; + static constexpr auto distance = ranges::distance; + static constexpr auto __iter_move = ranges::iter_move; + static constexpr auto iter_swap = ranges::iter_swap; + static constexpr auto next = ranges::next; + static constexpr auto prev = ranges::prev; static constexpr auto __advance_to = ranges::advance; }; @@ -67,7 +71,6 @@ struct _ClassicAlgPolicy {}; template <> struct _IterOps<_ClassicAlgPolicy> { - template using __value_type = typename iterator_traits<_Iter>::value_type; @@ -79,15 +82,14 @@ struct _IterOps<_ClassicAlgPolicy> { // advance template - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 - static void advance(_Iter& __iter, _Distance __count) { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static void advance(_Iter& __iter, _Distance __count) { std::advance(__iter, __count); } // distance template - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 - static typename iterator_traits<_Iter>::difference_type distance(_Iter __first, _Iter __last) { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static typename iterator_traits<_Iter>::difference_type + distance(_Iter __first, _Iter __last) { return std::distance(__first, __last); } @@ -98,37 +100,33 @@ struct _IterOps<_ClassicAlgPolicy> { using __move_t = decltype(std::move(*std::declval<_Iter&>())); template - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 - static void __validate_iter_reference() { - static_assert(is_same<__deref_t<_Iter>, typename iterator_traits<__remove_cvref_t<_Iter> >::reference>::value, + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static void __validate_iter_reference() { + static_assert( + is_same<__deref_t<_Iter>, typename iterator_traits<__remove_cvref_t<_Iter> >::reference>::value, "It looks like your iterator's `iterator_traits::reference` does not match the return type of " "dereferencing the iterator, i.e., calling `*it`. This is undefined behavior according to [input.iterators] " "and can lead to dangling reference issues at runtime, so we are flagging this."); } // iter_move - template + template >::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static - // If the result of dereferencing `_Iter` is a reference type, deduce the result of calling `std::move` on it. Note - // that the C++03 mode doesn't support `decltype(auto)` as the return type. - __enable_if_t< - is_reference<__deref_t<_Iter> >::value, - __move_t<_Iter> > - __iter_move(_Iter&& __i) { + // If the result of dereferencing `_Iter` is a reference type, deduce the result of calling `std::move` on it. + // Note that the C++03 mode doesn't support `decltype(auto)` as the return type. + __move_t<_Iter> + __iter_move(_Iter&& __i) { __validate_iter_reference<_Iter>(); return std::move(*std::forward<_Iter>(__i)); } - template + template >::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static - // If the result of dereferencing `_Iter` is a value type, deduce the return value of this function to also be a - // value -- otherwise, after `operator*` returns a temporary, this function would return a dangling reference to that - // temporary. Note that the C++03 mode doesn't support `auto` as the return type. - __enable_if_t< - !is_reference<__deref_t<_Iter> >::value, - __deref_t<_Iter> > - __iter_move(_Iter&& __i) { + // If the result of dereferencing `_Iter` is a value type, deduce the return value of this function to also be a + // value -- otherwise, after `operator*` returns a temporary, this function would return a dangling reference to + // that temporary. Note that the C++03 mode doesn't support `auto` as the return type. + __deref_t<_Iter> + __iter_move(_Iter&& __i) { __validate_iter_reference<_Iter>(); return *std::forward<_Iter>(__i); @@ -136,40 +134,90 @@ struct _IterOps<_ClassicAlgPolicy> { // iter_swap template - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 - static void iter_swap(_Iter1&& __a, _Iter2&& __b) { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static void iter_swap(_Iter1&& __a, _Iter2&& __b) { std::iter_swap(std::forward<_Iter1>(__a), std::forward<_Iter2>(__b)); } // next template - _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 - _Iterator next(_Iterator, _Iterator __last) { + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 _Iterator next(_Iterator, _Iterator __last) { return __last; } template - _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 - __remove_cvref_t<_Iter> next(_Iter&& __it, - typename iterator_traits<__remove_cvref_t<_Iter> >::difference_type __n = 1) { + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 __remove_cvref_t<_Iter> + next(_Iter&& __it, typename iterator_traits<__remove_cvref_t<_Iter> >::difference_type __n = 1) { return std::next(std::forward<_Iter>(__it), __n); } // prev template - _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 - __remove_cvref_t<_Iter> prev(_Iter&& __iter, - typename iterator_traits<__remove_cvref_t<_Iter> >::difference_type __n = 1) { + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 __remove_cvref_t<_Iter> + prev(_Iter&& __iter, typename iterator_traits<__remove_cvref_t<_Iter> >::difference_type __n = 1) { return std::prev(std::forward<_Iter>(__iter), __n); } template - _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 - void __advance_to(_Iter& __first, _Iter __last) { + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 void __advance_to(_Iter& __first, _Iter __last) { __first = __last; } + + // advance with sentinel, a la std::ranges::advance + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static __difference_type<_Iter> + __advance_to(_Iter& __iter, __difference_type<_Iter> __count, const _Iter& __sentinel) { + return _IterOps::__advance_to(__iter, __count, __sentinel, typename iterator_traits<_Iter>::iterator_category()); + } + +private: + // advance with sentinel, a la std::ranges::advance -- InputIterator specialization + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static __difference_type<_InputIter> __advance_to( + _InputIter& __iter, __difference_type<_InputIter> __count, const _InputIter& __sentinel, input_iterator_tag) { + __difference_type<_InputIter> __dist = 0; + for (; __dist < __count && __iter != __sentinel; ++__dist) + ++__iter; + return __count - __dist; + } + + // advance with sentinel, a la std::ranges::advance -- BidirectionalIterator specialization + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static __difference_type<_BiDirIter> + __advance_to(_BiDirIter& __iter, + __difference_type<_BiDirIter> __count, + const _BiDirIter& __sentinel, + bidirectional_iterator_tag) { + __difference_type<_BiDirIter> __dist = 0; + if (__count >= 0) + for (; __dist < __count && __iter != __sentinel; ++__dist) + ++__iter; + else + for (__count = -__count; __dist < __count && __iter != __sentinel; ++__dist) + --__iter; + return __count - __dist; + } + + // advance with sentinel, a la std::ranges::advance -- RandomIterator specialization + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static __difference_type<_RandIter> + __advance_to(_RandIter& __iter, + __difference_type<_RandIter> __count, + const _RandIter& __sentinel, + random_access_iterator_tag) { + auto __dist = _IterOps::distance(__iter, __sentinel); + _LIBCPP_ASSERT_VALID_INPUT_RANGE( + __count == 0 || (__dist < 0) == (__count < 0), "__sentinel must precede __iter when __count < 0"); + if (__count < 0) + __dist = __dist > __count ? __dist : __count; + else + __dist = __dist < __count ? __dist : __count; + __iter += __dist; + return __count - __dist; + } }; _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_ITERATOR_OPERATIONS_H diff --git a/include/c++/v1/__algorithm/lexicographical_compare.h b/include/c++/v1/__algorithm/lexicographical_compare.h index 0a13c5dd..edc29e26 100644 --- a/include/c++/v1/__algorithm/lexicographical_compare.h +++ b/include/c++/v1/__algorithm/lexicographical_compare.h @@ -21,40 +21,35 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool -__lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) -{ - for (; __first2 != __last2; ++__first1, (void) ++__first2) - { - if (__first1 == __last1 || __comp(*__first1, *__first2)) - return true; - if (__comp(*__first2, *__first1)) - return false; - } - return false; +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __lexicographical_compare( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _Compare __comp) { + for (; __first2 != __last2; ++__first1, (void)++__first2) { + if (__first1 == __last1 || __comp(*__first1, *__first2)) + return true; + if (__comp(*__first2, *__first1)) + return false; + } + return false; } template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) -{ - return _VSTD::__lexicographical_compare<__comp_ref_type<_Compare> >(__first1, __last1, __first2, __last2, __comp); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool lexicographical_compare( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _Compare __comp) { + return std::__lexicographical_compare<__comp_ref_type<_Compare> >(__first1, __last1, __first2, __last2, __comp); } template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2) -{ - return _VSTD::lexicographical_compare(__first1, __last1, __first2, __last2, - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool lexicographical_compare( + _InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { + return std::lexicographical_compare(__first1, __last1, __first2, __last2, __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/lower_bound.h b/include/c++/v1/__algorithm/lower_bound.h index 2648982e..c417d848 100644 --- a/include/c++/v1/__algorithm/lower_bound.h +++ b/include/c++/v1/__algorithm/lower_bound.h @@ -20,7 +20,6 @@ #include <__iterator/iterator_traits.h> #include <__type_traits/is_callable.h> #include <__type_traits/remove_reference.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -28,11 +27,13 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_Iter __lower_bound_impl(_Iter __first, _Sent __last, const _Type& __value, _Comp& __comp, _Proj& __proj) { - auto __len = _IterOps<_AlgPolicy>::distance(__first, __last); - +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Iter __lower_bound_bisecting( + _Iter __first, + const _Type& __value, + typename iterator_traits<_Iter>::difference_type __len, + _Comp& __comp, + _Proj& __proj) { while (__len != 0) { auto __l2 = std::__half_positive(__len); _Iter __m = __first; @@ -47,20 +48,60 @@ _Iter __lower_bound_impl(_Iter __first, _Sent __last, const _Type& __value, _Com return __first; } +// One-sided binary search, aka meta binary search, has been in the public domain for decades, and has the general +// advantage of being \Omega(1) rather than the classic algorithm's \Omega(log(n)), with the downside of executing at +// most 2*log(n) comparisons vs the classic algorithm's exact log(n). There are two scenarios in which it really shines: +// the first one is when operating over non-random-access iterators, because the classic algorithm requires knowing the +// container's size upfront, which adds \Omega(n) iterator increments to the complexity. The second one is when you're +// traversing the container in order, trying to fast-forward to the next value: in that case, the classic algorithm +// would yield \Omega(n*log(n)) comparisons and, for non-random-access iterators, \Omega(n^2) iterator increments, +// whereas the one-sided version will yield O(n) operations on both counts, with a \Omega(log(n)) bound on the number of +// comparisons. +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +__lower_bound_onesided(_ForwardIterator __first, _Sent __last, const _Type& __value, _Comp& __comp, _Proj& __proj) { + // step = 0, ensuring we can always short-circuit when distance is 1 later on + if (__first == __last || !std::__invoke(__comp, std::__invoke(__proj, *__first), __value)) + return __first; + + using _Distance = typename iterator_traits<_ForwardIterator>::difference_type; + for (_Distance __step = 1; __first != __last; __step <<= 1) { + auto __it = __first; + auto __dist = __step - _IterOps<_AlgPolicy>::__advance_to(__it, __step, __last); + // once we reach the last range where needle can be we must start + // looking inwards, bisecting that range + if (__it == __last || !std::__invoke(__comp, std::__invoke(__proj, *__it), __value)) { + // we've already checked the previous value and it was less, we can save + // one comparison by skipping bisection + if (__dist == 1) + return __it; + return std::__lower_bound_bisecting<_AlgPolicy>(__first, __value, __dist, __comp, __proj); + } + // range not found, move forward! + __first = __it; + } + return __first; +} + +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +__lower_bound(_ForwardIterator __first, _Sent __last, const _Type& __value, _Comp& __comp, _Proj& __proj) { + const auto __dist = _IterOps<_AlgPolicy>::distance(__first, __last); + return std::__lower_bound_bisecting<_AlgPolicy>(__first, __value, __dist, __comp, __proj); +} + template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_ForwardIterator lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, _Compare __comp) { - static_assert(__is_callable<_Compare, decltype(*__first), const _Tp&>::value, - "The comparator has to be callable"); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, _Compare __comp) { + static_assert(__is_callable<_Compare, decltype(*__first), const _Tp&>::value, "The comparator has to be callable"); auto __proj = std::__identity(); - return std::__lower_bound_impl<_ClassicAlgPolicy>(__first, __last, __value, __comp, __proj); + return std::__lower_bound<_ClassicAlgPolicy>(__first, __last, __value, __comp, __proj); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_ForwardIterator lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { - return std::lower_bound(__first, __last, __value, - __less::value_type, _Tp>()); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { + return std::lower_bound(__first, __last, __value, __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/make_heap.h b/include/c++/v1/__algorithm/make_heap.h index d66cfe2e..e8f0cdb2 100644 --- a/include/c++/v1/__algorithm/make_heap.h +++ b/include/c++/v1/__algorithm/make_heap.h @@ -21,36 +21,40 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -void __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void +__make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp) { __comp_ref_type<_Compare> __comp_ref = __comp; using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type; - difference_type __n = __last - __first; + difference_type __n = __last - __first; if (__n > 1) { // start from the first parent, there is no need to consider children for (difference_type __start = (__n - 2) / 2; __start >= 0; --__start) { - std::__sift_down<_AlgPolicy>(__first, __comp_ref, __n, __first + __start); + std::__sift_down<_AlgPolicy>(__first, __comp_ref, __n, __first + __start); } } } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { std::__make_heap<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp); } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { - std::make_heap(std::move(__first), std::move(__last), - __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::make_heap(std::move(__first), std::move(__last), __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_MAKE_HEAP_H diff --git a/include/c++/v1/__algorithm/make_projected.h b/include/c++/v1/__algorithm/make_projected.h index 87d4d590..5245e523 100644 --- a/include/c++/v1/__algorithm/make_projected.h +++ b/include/c++/v1/__algorithm/make_projected.h @@ -32,87 +32,67 @@ struct _ProjectedPred { _Pred& __pred; // Can be a unary or a binary predicate. _Proj& __proj; - _LIBCPP_CONSTEXPR _ProjectedPred(_Pred& __pred_arg, _Proj& __proj_arg) : __pred(__pred_arg), __proj(__proj_arg) {} + _LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI _ProjectedPred(_Pred& __pred_arg, _Proj& __proj_arg) + : __pred(__pred_arg), __proj(__proj_arg) {} template - typename __invoke_of<_Pred&, - decltype(std::__invoke(std::declval<_Proj&>(), std::declval<_Tp>())) - >::type - _LIBCPP_CONSTEXPR operator()(_Tp&& __v) const { + typename __invoke_of<_Pred&, decltype(std::__invoke(std::declval<_Proj&>(), std::declval<_Tp>()))>::type + _LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI + operator()(_Tp&& __v) const { return std::__invoke(__pred, std::__invoke(__proj, std::forward<_Tp>(__v))); } template typename __invoke_of<_Pred&, decltype(std::__invoke(std::declval<_Proj&>(), std::declval<_T1>())), - decltype(std::__invoke(std::declval<_Proj&>(), std::declval<_T2>())) - >::type - _LIBCPP_CONSTEXPR operator()(_T1&& __lhs, _T2&& __rhs) const { - return std::__invoke(__pred, - std::__invoke(__proj, std::forward<_T1>(__lhs)), - std::__invoke(__proj, std::forward<_T2>(__rhs))); + decltype(std::__invoke(std::declval<_Proj&>(), std::declval<_T2>()))>::type _LIBCPP_CONSTEXPR + _LIBCPP_HIDE_FROM_ABI + operator()(_T1&& __lhs, _T2&& __rhs) const { + return std::__invoke( + __pred, std::__invoke(__proj, std::forward<_T1>(__lhs)), std::__invoke(__proj, std::forward<_T2>(__rhs))); } - }; -template -struct __can_use_pristine_comp : false_type {}; - -template -struct __can_use_pristine_comp<_Pred, _Proj, __enable_if_t< - !is_member_pointer::type>::value && ( -#if _LIBCPP_STD_VER > 17 - is_same::type, identity>::value || -#endif - is_same::type, __identity>::value - ) -> > : true_type {}; - -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR static -__enable_if_t< - !__can_use_pristine_comp<_Pred, _Proj>::value, - _ProjectedPred<_Pred, _Proj> -> -__make_projected(_Pred& __pred, _Proj& __proj) { +template < + class _Pred, + class _Proj, + __enable_if_t >::value && __is_identity<__decay_t<_Proj> >::value), int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ProjectedPred<_Pred, _Proj> __make_projected(_Pred& __pred, _Proj& __proj) { return _ProjectedPred<_Pred, _Proj>(__pred, __proj); } // Avoid creating the functor and just use the pristine comparator -- for certain algorithms, this would enable // optimizations that rely on the type of the comparator. Additionally, this results in less layers of indirection in // the call stack when the comparator is invoked, even in an unoptimized build. -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR static -__enable_if_t< - __can_use_pristine_comp<_Pred, _Proj>::value, - _Pred& -> -__make_projected(_Pred& __pred, _Proj&) { +template < + class _Pred, + class _Proj, + __enable_if_t >::value && __is_identity<__decay_t<_Proj> >::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Pred& __make_projected(_Pred& __pred, _Proj&) { return __pred; } _LIBCPP_END_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { template -_LIBCPP_HIDE_FROM_ABI constexpr static -decltype(auto) __make_projected_comp(_Comp& __comp, _Proj1& __proj1, _Proj2& __proj2) { - if constexpr (same_as, identity> && same_as, identity> && +_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) __make_projected_comp(_Comp& __comp, _Proj1& __proj1, _Proj2& __proj2) { + if constexpr (__is_identity>::value && __is_identity>::value && !is_member_pointer_v>) { // Avoid creating the lambda and just use the pristine comparator -- for certain algorithms, this would enable // optimizations that rely on the type of the comparator. return __comp; } else { - return [&](auto&& __lhs, auto&& __rhs) { + return [&](auto&& __lhs, auto&& __rhs) -> bool { return std::invoke(__comp, - std::invoke(__proj1, std::forward(__lhs)), - std::invoke(__proj2, std::forward(__rhs))); + std::invoke(__proj1, std::forward(__lhs)), + std::invoke(__proj2, std::forward(__rhs))); }; } } @@ -121,6 +101,6 @@ decltype(auto) __make_projected_comp(_Comp& __comp, _Proj1& __proj1, _Proj2& __p _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___ALGORITHM_MAKE_PROJECTED_H diff --git a/include/c++/v1/__algorithm/max.h b/include/c++/v1/__algorithm/max.h index a08a3fc5..d4c99f6f 100644 --- a/include/c++/v1/__algorithm/max.h +++ b/include/c++/v1/__algorithm/max.h @@ -25,41 +25,28 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -const _Tp& -max(const _Tp& __a, const _Tp& __b, _Compare __comp) -{ - return __comp(__a, __b) ? __b : __a; +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp& +max(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b, _Compare __comp) { + return __comp(__a, __b) ? __b : __a; } template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -const _Tp& -max(const _Tp& __a, const _Tp& __b) -{ - return _VSTD::max(__a, __b, __less<_Tp>()); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp& +max(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b) { + return std::max(__a, __b, __less<>()); } #ifndef _LIBCPP_CXX03_LANG -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Tp -max(initializer_list<_Tp> __t, _Compare __comp) -{ - return *_VSTD::__max_element<__comp_ref_type<_Compare> >(__t.begin(), __t.end(), __comp); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp +max(initializer_list<_Tp> __t, _Compare __comp) { + return *std::__max_element<__comp_ref_type<_Compare> >(__t.begin(), __t.end(), __comp); } -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Tp -max(initializer_list<_Tp> __t) -{ - return *_VSTD::max_element(__t.begin(), __t.end(), __less<_Tp>()); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp max(initializer_list<_Tp> __t) { + return *std::max_element(__t.begin(), __t.end(), __less<>()); } #endif // _LIBCPP_CXX03_LANG diff --git a/include/c++/v1/__algorithm/max_element.h b/include/c++/v1/__algorithm/max_element.h index 6ac31061..c036726c 100644 --- a/include/c++/v1/__algorithm/max_element.h +++ b/include/c++/v1/__algorithm/max_element.h @@ -22,34 +22,28 @@ _LIBCPP_BEGIN_NAMESPACE_STD template inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator -__max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - static_assert(__is_cpp17_forward_iterator<_ForwardIterator>::value, - "std::max_element requires a ForwardIterator"); - if (__first != __last) - { - _ForwardIterator __i = __first; - while (++__i != __last) - if (__comp(*__first, *__i)) - __first = __i; - } - return __first; +__max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) { + static_assert( + __has_forward_iterator_category<_ForwardIterator>::value, "std::max_element requires a ForwardIterator"); + if (__first != __last) { + _ForwardIterator __i = __first; + while (++__i != __last) + if (__comp(*__first, *__i)) + __first = __i; + } + return __first; } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator -max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - return _VSTD::__max_element<__comp_ref_type<_Compare> >(__first, __last, __comp); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) { + return std::__max_element<__comp_ref_type<_Compare> >(__first, __last, __comp); } - template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator -max_element(_ForwardIterator __first, _ForwardIterator __last) -{ - return _VSTD::max_element(__first, __last, - __less::value_type>()); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +max_element(_ForwardIterator __first, _ForwardIterator __last) { + return std::max_element(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/merge.h b/include/c++/v1/__algorithm/merge.h index e54e430b..bad663c4 100644 --- a/include/c++/v1/__algorithm/merge.h +++ b/include/c++/v1/__algorithm/merge.h @@ -22,47 +22,46 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -__merge(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ - for (; __first1 != __last1; ++__result) - { - if (__first2 == __last2) - return _VSTD::copy(__first1, __last1, __result); - if (__comp(*__first2, *__first1)) - { - *__result = *__first2; - ++__first2; - } - else - { - *__result = *__first1; - ++__first1; - } +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator __merge( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result, + _Compare __comp) { + for (; __first1 != __last1; ++__result) { + if (__first2 == __last2) + return std::copy(__first1, __last1, __result); + if (__comp(*__first2, *__first1)) { + *__result = *__first2; + ++__first2; + } else { + *__result = *__first1; + ++__first1; } - return _VSTD::copy(__first2, __last2, __result); + } + return std::copy(__first2, __last2, __result); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -merge(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ - return _VSTD::__merge<__comp_ref_type<_Compare> >(__first1, __last1, __first2, __last2, __result, __comp); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +merge(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result, + _Compare __comp) { + return std::__merge<__comp_ref_type<_Compare> >(__first1, __last1, __first2, __last2, __result, __comp); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -merge(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) -{ - typedef typename iterator_traits<_InputIterator1>::value_type __v1; - typedef typename iterator_traits<_InputIterator2>::value_type __v2; - return _VSTD::merge(__first1, __last1, __first2, __last2, __result, __less<__v1, __v2>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +merge(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result) { + return std::merge(__first1, __last1, __first2, __last2, __result, __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/min.h b/include/c++/v1/__algorithm/min.h index 2882485a..1bafad8a 100644 --- a/include/c++/v1/__algorithm/min.h +++ b/include/c++/v1/__algorithm/min.h @@ -25,41 +25,28 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -const _Tp& -min(const _Tp& __a, const _Tp& __b, _Compare __comp) -{ - return __comp(__b, __a) ? __b : __a; +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp& +min(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b, _Compare __comp) { + return __comp(__b, __a) ? __b : __a; } template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -const _Tp& -min(const _Tp& __a, const _Tp& __b) -{ - return _VSTD::min(__a, __b, __less<_Tp>()); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp& +min(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b) { + return std::min(__a, __b, __less<>()); } #ifndef _LIBCPP_CXX03_LANG -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Tp -min(initializer_list<_Tp> __t, _Compare __comp) -{ - return *_VSTD::__min_element<__comp_ref_type<_Compare> >(__t.begin(), __t.end(), __comp); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp +min(initializer_list<_Tp> __t, _Compare __comp) { + return *std::__min_element<__comp_ref_type<_Compare> >(__t.begin(), __t.end(), __comp); } -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Tp -min(initializer_list<_Tp> __t) -{ - return *_VSTD::min_element(__t.begin(), __t.end(), __less<_Tp>()); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp min(initializer_list<_Tp> __t) { + return *std::min_element(__t.begin(), __t.end(), __less<>()); } #endif // _LIBCPP_CXX03_LANG diff --git a/include/c++/v1/__algorithm/min_element.h b/include/c++/v1/__algorithm/min_element.h index c0706fe9..65f3594d 100644 --- a/include/c++/v1/__algorithm/min_element.h +++ b/include/c++/v1/__algorithm/min_element.h @@ -22,11 +22,14 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Iter __min_element(_Iter __first, _Sent __last, _Comp __comp, _Proj& __proj) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Iter +__min_element(_Iter __first, _Sent __last, _Comp __comp, _Proj& __proj) { if (__first == __last) return __first; @@ -39,32 +42,30 @@ _Iter __min_element(_Iter __first, _Sent __last, _Comp __comp, _Proj& __proj) { } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Iter __min_element(_Iter __first, _Sent __last, _Comp __comp) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Iter __min_element(_Iter __first, _Sent __last, _Comp __comp) { auto __proj = __identity(); return std::__min_element<_Comp>(std::move(__first), std::move(__last), __comp, __proj); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator -min_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - static_assert(__is_cpp17_forward_iterator<_ForwardIterator>::value, - "std::min_element requires a ForwardIterator"); - static_assert(__is_callable<_Compare, decltype(*__first), decltype(*__first)>::value, - "The comparator has to be callable"); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +min_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) { + static_assert( + __has_forward_iterator_category<_ForwardIterator>::value, "std::min_element requires a ForwardIterator"); + static_assert( + __is_callable<_Compare, decltype(*__first), decltype(*__first)>::value, "The comparator has to be callable"); return std::__min_element<__comp_ref_type<_Compare> >(std::move(__first), std::move(__last), __comp); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator -min_element(_ForwardIterator __first, _ForwardIterator __last) -{ - return _VSTD::min_element(__first, __last, - __less::value_type>()); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +min_element(_ForwardIterator __first, _ForwardIterator __last) { + return std::min_element(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_MIN_ELEMENT_H diff --git a/include/c++/v1/__algorithm/min_max_result.h b/include/c++/v1/__algorithm/min_max_result.h index 4be39992..e988df7c 100644 --- a/include/c++/v1/__algorithm/min_max_result.h +++ b/include/c++/v1/__algorithm/min_max_result.h @@ -23,7 +23,7 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace ranges { @@ -34,7 +34,7 @@ struct min_max_result { template requires convertible_to - _LIBCPP_HIDE_FROM_ABI constexpr operator min_max_result<_T2>() const & { + _LIBCPP_HIDE_FROM_ABI constexpr operator min_max_result<_T2>() const& { return {min, max}; } @@ -47,7 +47,7 @@ struct min_max_result { } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/minmax.h b/include/c++/v1/__algorithm/minmax.h index 6ef0a777..9feda2b4 100644 --- a/include/c++/v1/__algorithm/minmax.h +++ b/include/c++/v1/__algorithm/minmax.h @@ -23,43 +23,33 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair -minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) -{ - return __comp(__b, __a) ? pair(__b, __a) : - pair(__a, __b); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair +minmax(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b, _Compare __comp) { + return __comp(__b, __a) ? pair(__b, __a) : pair(__a, __b); } -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair -minmax(const _Tp& __a, const _Tp& __b) -{ - return std::minmax(__a, __b, __less<_Tp>()); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair +minmax(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b) { + return std::minmax(__a, __b, __less<>()); } #ifndef _LIBCPP_CXX03_LANG -template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Tp, _Tp> minmax(initializer_list<_Tp> __t, _Compare __comp) { - static_assert(__is_callable<_Compare, _Tp, _Tp>::value, "The comparator has to be callable"); - __identity __proj; - auto __ret = std::__minmax_element_impl(__t.begin(), __t.end(), __comp, __proj); - return pair<_Tp, _Tp>(*__ret.first, *__ret.second); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Tp, _Tp> +minmax(initializer_list<_Tp> __t, _Compare __comp) { + static_assert(__is_callable<_Compare, _Tp, _Tp>::value, "The comparator has to be callable"); + __identity __proj; + auto __ret = std::__minmax_element_impl(__t.begin(), __t.end(), __comp, __proj); + return pair<_Tp, _Tp>(*__ret.first, *__ret.second); } -template -_LIBCPP_NODISCARD_EXT inline -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Tp, _Tp> -minmax(initializer_list<_Tp> __t) -{ - return std::minmax(__t, __less<_Tp>()); +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Tp, _Tp> +minmax(initializer_list<_Tp> __t) { + return std::minmax(__t, __less<>()); } #endif // _LIBCPP_CXX03_LANG diff --git a/include/c++/v1/__algorithm/minmax_element.h b/include/c++/v1/__algorithm/minmax_element.h index caa963e1..43cb2334 100644 --- a/include/c++/v1/__algorithm/minmax_element.h +++ b/include/c++/v1/__algorithm/minmax_element.h @@ -12,9 +12,10 @@ #include <__algorithm/comp.h> #include <__config> #include <__functional/identity.h> +#include <__functional/invoke.h> #include <__iterator/iterator_traits.h> +#include <__type_traits/is_callable.h> #include <__utility/pair.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -28,19 +29,18 @@ class _MinmaxElementLessFunc { _Proj& __proj_; public: - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR - _MinmaxElementLessFunc(_Comp& __comp, _Proj& __proj) : __comp_(__comp), __proj_(__proj) {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _MinmaxElementLessFunc(_Comp& __comp, _Proj& __proj) + : __comp_(__comp), __proj_(__proj) {} template - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 - bool operator()(_Iter& __it1, _Iter& __it2) { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(_Iter& __it1, _Iter& __it2) { return std::__invoke(__comp_, std::__invoke(__proj_, *__it1), std::__invoke(__proj_, *__it2)); } }; template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Iter, _Iter> __minmax_element_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter, _Iter> +__minmax_element_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { auto __less = _MinmaxElementLessFunc<_Comp, _Proj>(__comp, __proj); pair<_Iter, _Iter> __result(__first, __first); @@ -65,8 +65,8 @@ pair<_Iter, _Iter> __minmax_element_impl(_Iter __first, _Sent __last, _Comp& __c if (__less(__first, __i)) { if (__less(__first, __result.first)) __result.first = __first; - if (!__less(__i, __result.second)) - __result.second = __i; + if (!__less(__i, __result.second)) + __result.second = __i; } else { if (__less(__i, __result.first)) __result.first = __i; @@ -79,21 +79,20 @@ pair<_Iter, _Iter> __minmax_element_impl(_Iter __first, _Sent __last, _Comp& __c } template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_ForwardIterator, _ForwardIterator> +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_ForwardIterator, _ForwardIterator> minmax_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) { - static_assert(__is_cpp17_forward_iterator<_ForwardIterator>::value, - "std::minmax_element requires a ForwardIterator"); - static_assert(__is_callable<_Compare, decltype(*__first), decltype(*__first)>::value, - "The comparator has to be callable"); + static_assert( + __has_forward_iterator_category<_ForwardIterator>::value, "std::minmax_element requires a ForwardIterator"); + static_assert( + __is_callable<_Compare, decltype(*__first), decltype(*__first)>::value, "The comparator has to be callable"); auto __proj = __identity(); return std::__minmax_element_impl(__first, __last, __comp, __proj); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_ForwardIterator, _ForwardIterator> minmax_element(_ForwardIterator __first, _ForwardIterator __last) { - return std::minmax_element(__first, __last, __less::value_type>()); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_ForwardIterator, _ForwardIterator> +minmax_element(_ForwardIterator __first, _ForwardIterator __last) { + return std::minmax_element(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/mismatch.h b/include/c++/v1/__algorithm/mismatch.h index 600e2cdd..632bec02 100644 --- a/include/c++/v1/__algorithm/mismatch.h +++ b/include/c++/v1/__algorithm/mismatch.h @@ -11,53 +11,207 @@ #define _LIBCPP___ALGORITHM_MISMATCH_H #include <__algorithm/comp.h> +#include <__algorithm/min.h> +#include <__algorithm/simd_utils.h> +#include <__algorithm/unwrap_iter.h> #include <__config> -#include <__iterator/iterator_traits.h> +#include <__functional/identity.h> +#include <__iterator/aliasing_iterator.h> +#include <__type_traits/desugars_to.h> +#include <__type_traits/invoke.h> +#include <__type_traits/is_constant_evaluated.h> +#include <__type_traits/is_equality_comparable.h> +#include <__type_traits/is_integral.h> +#include <__utility/move.h> #include <__utility/pair.h> +#include <__utility/unreachable.h> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> - mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) { - for (; __first1 != __last1; ++__first1, (void)++__first2) - if (!__pred(*__first1, *__first2)) +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_Iter1, _Iter2> +__mismatch_loop(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { + while (__first1 != __last1) { + if (!std::__invoke(__pred, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) break; - return pair<_InputIterator1, _InputIterator2>(__first1, __first2); + ++__first1; + ++__first2; + } + return std::make_pair(std::move(__first1), std::move(__first2)); +} + +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_Iter1, _Iter2> +__mismatch(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { + return std::__mismatch_loop(__first1, __last1, __first2, __pred, __proj1, __proj2); +} + +#if _LIBCPP_VECTORIZE_ALGORITHMS + +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_Iter, _Iter> +__mismatch_vectorized(_Iter __first1, _Iter __last1, _Iter __first2) { + using __value_type = __iter_value_type<_Iter>; + constexpr size_t __unroll_count = 4; + constexpr size_t __vec_size = __native_vector_size<__value_type>; + using __vec = __simd_vector<__value_type, __vec_size>; + + if (!__libcpp_is_constant_evaluated()) { + auto __orig_first1 = __first1; + auto __last2 = __first2 + (__last1 - __first1); + while (static_cast(__last1 - __first1) >= __unroll_count * __vec_size) [[__unlikely__]] { + __vec __lhs[__unroll_count]; + __vec __rhs[__unroll_count]; + + for (size_t __i = 0; __i != __unroll_count; ++__i) { + __lhs[__i] = std::__load_vector<__vec>(__first1 + __i * __vec_size); + __rhs[__i] = std::__load_vector<__vec>(__first2 + __i * __vec_size); + } + + for (size_t __i = 0; __i != __unroll_count; ++__i) { + if (auto __cmp_res = __lhs[__i] == __rhs[__i]; !std::__all_of(__cmp_res)) { + auto __offset = __i * __vec_size + std::__find_first_not_set(__cmp_res); + return {__first1 + __offset, __first2 + __offset}; + } + } + + __first1 += __unroll_count * __vec_size; + __first2 += __unroll_count * __vec_size; + } + + // check the remaining 0-3 vectors + while (static_cast(__last1 - __first1) >= __vec_size) { + if (auto __cmp_res = std::__load_vector<__vec>(__first1) == std::__load_vector<__vec>(__first2); + !std::__all_of(__cmp_res)) { + auto __offset = std::__find_first_not_set(__cmp_res); + return {__first1 + __offset, __first2 + __offset}; + } + __first1 += __vec_size; + __first2 += __vec_size; + } + + if (__last1 - __first1 == 0) + return {__first1, __first2}; + + // Check if we can load elements in front of the current pointer. If that's the case load a vector at + // (last - vector_size) to check the remaining elements + if (static_cast(__first1 - __orig_first1) >= __vec_size) { + __first1 = __last1 - __vec_size; + __first2 = __last2 - __vec_size; + auto __offset = + std::__find_first_not_set(std::__load_vector<__vec>(__first1) == std::__load_vector<__vec>(__first2)); + return {__first1 + __offset, __first2 + __offset}; + } // else loop over the elements individually + } + + __equal_to __pred; + __identity __proj; + return std::__mismatch_loop(__first1, __last1, __first2, __pred, __proj, __proj); +} + +template ::value && __desugars_to_v<__equal_tag, _Pred, _Tp, _Tp> && + __is_identity<_Proj1>::value && __is_identity<_Proj2>::value, + int> = 0> +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_Tp*, _Tp*> +__mismatch(_Tp* __first1, _Tp* __last1, _Tp* __first2, _Pred&, _Proj1&, _Proj2&) { + return std::__mismatch_vectorized(__first1, __last1, __first2); +} + +template ::value && __desugars_to_v<__equal_tag, _Pred, _Tp, _Tp> && + __is_identity<_Proj1>::value && __is_identity<_Proj2>::value && + __can_map_to_integer_v<_Tp> && __libcpp_is_trivially_equality_comparable<_Tp, _Tp>::value, + int> = 0> +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_Tp*, _Tp*> +__mismatch(_Tp* __first1, _Tp* __last1, _Tp* __first2, _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { + if (__libcpp_is_constant_evaluated()) { + return std::__mismatch_loop(__first1, __last1, __first2, __pred, __proj1, __proj2); + } else { + using _Iter = __aliasing_iterator<_Tp*, __get_as_integer_type_t<_Tp>>; + auto __ret = std::__mismatch_vectorized(_Iter(__first1), _Iter(__last1), _Iter(__first2)); + return {__ret.first.__base(), __ret.second.__base()}; + } +} +#endif // _LIBCPP_VECTORIZE_ALGORITHMS + +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> +mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) { + __identity __proj; + auto __res = std::__mismatch( + std::__unwrap_iter(__first1), std::__unwrap_iter(__last1), std::__unwrap_iter(__first2), __pred, __proj, __proj); + return std::make_pair(std::__rewrap_iter(__first1, __res.first), std::__rewrap_iter(__first2, __res.second)); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> - mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> +mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) { return std::mismatch(__first1, __last1, __first2, __equal_to()); } -#if _LIBCPP_STD_VER > 11 -template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> - mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, - _BinaryPredicate __pred) { - for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void)++__first2) - if (!__pred(*__first1, *__first2)) +#if _LIBCPP_STD_VER >= 14 +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_Iter1, _Iter2> __mismatch( + _Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { + while (__first1 != __last1 && __first2 != __last2) { + if (!std::__invoke(__pred, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) break; - return pair<_InputIterator1, _InputIterator2>(__first1, __first2); + ++__first1; + ++__first2; + } + return {std::move(__first1), std::move(__first2)}; +} + +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_Tp*, _Tp*> +__mismatch(_Tp* __first1, _Tp* __last1, _Tp* __first2, _Tp* __last2, _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { + auto __len = std::min(__last1 - __first1, __last2 - __first2); + return std::__mismatch(__first1, __first1 + __len, __first2, __pred, __proj1, __proj2); +} + +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> +mismatch(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _BinaryPredicate __pred) { + __identity __proj; + auto __res = std::__mismatch( + std::__unwrap_iter(__first1), + std::__unwrap_iter(__last1), + std::__unwrap_iter(__first2), + std::__unwrap_iter(__last2), + __pred, + __proj, + __proj); + return {std::__rewrap_iter(__first1, __res.first), std::__rewrap_iter(__first2, __res.second)}; } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> - mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> +mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { return std::mismatch(__first1, __last1, __first2, __last2, __equal_to()); } #endif _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_MISMATCH_H diff --git a/include/c++/v1/__algorithm/move.h b/include/c++/v1/__algorithm/move.h index ac95bda7..1716d43e 100644 --- a/include/c++/v1/__algorithm/move.h +++ b/include/c++/v1/__algorithm/move.h @@ -10,12 +10,13 @@ #define _LIBCPP___ALGORITHM_MOVE_H #include <__algorithm/copy_move_common.h> +#include <__algorithm/for_each_segment.h> #include <__algorithm/iterator_operations.h> #include <__algorithm/min.h> #include <__config> #include <__iterator/segmented_iterator.h> #include <__type_traits/common_type.h> -#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_constructible.h> #include <__utility/move.h> #include <__utility/pair.h> @@ -33,7 +34,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIte __move(_InIter __first, _Sent __last, _OutIter __result); template -struct __move_loop { +struct __move_impl { template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { @@ -45,36 +46,35 @@ struct __move_loop { return std::make_pair(std::move(__first), std::move(__result)); } - template ::value, int> = 0> - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> - operator()(_InIter __first, _InIter __last, _OutIter __result) const { + template + struct _MoveSegment { using _Traits = __segmented_iterator_traits<_InIter>; - auto __sfirst = _Traits::__segment(__first); - auto __slast = _Traits::__segment(__last); - if (__sfirst == __slast) { - auto __iters = std::__move<_AlgPolicy>(_Traits::__local(__first), _Traits::__local(__last), std::move(__result)); - return std::make_pair(__last, std::move(__iters.second)); - } - __result = std::__move<_AlgPolicy>(_Traits::__local(__first), _Traits::__end(__sfirst), std::move(__result)).second; - ++__sfirst; - while (__sfirst != __slast) { - __result = - std::__move<_AlgPolicy>(_Traits::__begin(__sfirst), _Traits::__end(__sfirst), std::move(__result)).second; - ++__sfirst; + _OutIter& __result_; + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit _MoveSegment(_OutIter& __result) + : __result_(__result) {} + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void + operator()(typename _Traits::__local_iterator __lfirst, typename _Traits::__local_iterator __llast) { + __result_ = std::__move<_AlgPolicy>(__lfirst, __llast, std::move(__result_)).second; } - __result = - std::__move<_AlgPolicy>(_Traits::__begin(__sfirst), _Traits::__local(__last), std::move(__result)).second; + }; + + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _InIter __last, _OutIter __result) const { + std::__for_each_segment(__first, __last, _MoveSegment<_InIter, _OutIter>(__result)); return std::make_pair(__last, std::move(__result)); } template ::value && + __enable_if_t<__has_random_access_iterator_category<_InIter>::value && !__is_segmented_iterator<_InIter>::value && __is_segmented_iterator<_OutIter>::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> - operator()(_InIter __first, _InIter __last, _OutIter __result) { + operator()(_InIter __first, _InIter __last, _OutIter __result) const { using _Traits = __segmented_iterator_traits<_OutIter>; using _DiffT = typename common_type<__iter_diff_t<_InIter>, __iter_diff_t<_OutIter> >::type; @@ -95,12 +95,9 @@ struct __move_loop { __local_first = _Traits::__begin(++__segment_iterator); } } -}; -struct __move_trivial { // At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer. - template ::value, int> = 0> + template ::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> operator()(_In* __first, _In* __last, _Out* __result) const { return std::__copy_trivial_impl(__first, __last, __result); @@ -110,7 +107,7 @@ struct __move_trivial { template inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> __move(_InIter __first, _Sent __last, _OutIter __result) { - return std::__dispatch_copy_or_move<_AlgPolicy, __move_loop<_AlgPolicy>, __move_trivial>( + return std::__copy_move_unwrap_iters<__move_impl<_AlgPolicy> >( std::move(__first), std::move(__last), std::move(__result)); } diff --git a/include/c++/v1/__algorithm/move_backward.h b/include/c++/v1/__algorithm/move_backward.h index d4f013be..4beb7bdb 100644 --- a/include/c++/v1/__algorithm/move_backward.h +++ b/include/c++/v1/__algorithm/move_backward.h @@ -15,7 +15,7 @@ #include <__config> #include <__iterator/segmented_iterator.h> #include <__type_traits/common_type.h> -#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_constructible.h> #include <__utility/move.h> #include <__utility/pair.h> @@ -33,7 +33,7 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator1 __move_backward(_BidirectionalIterator1 __first, _Sentinel __last, _BidirectionalIterator2 __result); template -struct __move_backward_loop { +struct __move_backward_impl { template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { @@ -76,11 +76,11 @@ struct __move_backward_loop { template ::value && + __enable_if_t<__has_random_access_iterator_category<_InIter>::value && !__is_segmented_iterator<_InIter>::value && __is_segmented_iterator<_OutIter>::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> - operator()(_InIter __first, _InIter __last, _OutIter __result) { + operator()(_InIter __first, _InIter __last, _OutIter __result) const { using _Traits = __segmented_iterator_traits<_OutIter>; using _DiffT = typename common_type<__iter_diff_t<_InIter>, __iter_diff_t<_OutIter> >::type; @@ -104,12 +104,9 @@ struct __move_backward_loop { __local_last = _Traits::__end(--__segment_iterator); } } -}; -struct __move_backward_trivial { // At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer. - template ::value, int> = 0> + template ::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> operator()(_In* __first, _In* __last, _Out* __result) const { return std::__copy_backward_trivial_impl(__first, __last, __result); @@ -120,14 +117,15 @@ template __move_backward(_BidirectionalIterator1 __first, _Sentinel __last, _BidirectionalIterator2 __result) { static_assert(std::is_copy_constructible<_BidirectionalIterator1>::value && - std::is_copy_constructible<_BidirectionalIterator1>::value, "Iterators must be copy constructible."); + std::is_copy_constructible<_BidirectionalIterator1>::value, + "Iterators must be copy constructible."); - return std::__dispatch_copy_or_move<_AlgPolicy, __move_backward_loop<_AlgPolicy>, __move_backward_trivial>( + return std::__copy_move_unwrap_iters<__move_backward_impl<_AlgPolicy> >( std::move(__first), std::move(__last), std::move(__result)); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _BidirectionalIterator2 +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _BidirectionalIterator2 move_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last, _BidirectionalIterator2 __result) { return std::__move_backward<_ClassicAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)).second; } diff --git a/include/c++/v1/__algorithm/next_permutation.h b/include/c++/v1/__algorithm/next_permutation.h index 73e8b99a..011ee028 100644 --- a/include/c++/v1/__algorithm/next_permutation.h +++ b/include/c++/v1/__algorithm/next_permutation.h @@ -22,57 +22,54 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator, bool> -__next_permutation(_BidirectionalIterator __first, _Sentinel __last, _Compare&& __comp) -{ - using _Result = pair<_BidirectionalIterator, bool>; +__next_permutation(_BidirectionalIterator __first, _Sentinel __last, _Compare&& __comp) { + using _Result = pair<_BidirectionalIterator, bool>; - _BidirectionalIterator __last_iter = _IterOps<_AlgPolicy>::next(__first, __last); - _BidirectionalIterator __i = __last_iter; - if (__first == __last || __first == --__i) - return _Result(std::move(__last_iter), false); + _BidirectionalIterator __last_iter = _IterOps<_AlgPolicy>::next(__first, __last); + _BidirectionalIterator __i = __last_iter; + if (__first == __last || __first == --__i) + return _Result(std::move(__last_iter), false); - while (true) - { - _BidirectionalIterator __ip1 = __i; - if (__comp(*--__i, *__ip1)) - { - _BidirectionalIterator __j = __last_iter; - while (!__comp(*__i, *--__j)) - ; - _IterOps<_AlgPolicy>::iter_swap(__i, __j); - std::__reverse<_AlgPolicy>(__ip1, __last_iter); - return _Result(std::move(__last_iter), true); - } - if (__i == __first) - { - std::__reverse<_AlgPolicy>(__first, __last_iter); - return _Result(std::move(__last_iter), false); - } + while (true) { + _BidirectionalIterator __ip1 = __i; + if (__comp(*--__i, *__ip1)) { + _BidirectionalIterator __j = __last_iter; + while (!__comp(*__i, *--__j)) + ; + _IterOps<_AlgPolicy>::iter_swap(__i, __j); + std::__reverse<_AlgPolicy>(__ip1, __last_iter); + return _Result(std::move(__last_iter), true); + } + if (__i == __first) { + std::__reverse<_AlgPolicy>(__first, __last_iter); + return _Result(std::move(__last_iter), false); } + } } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) -{ +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { return std::__next_permutation<_ClassicAlgPolicy>( - std::move(__first), std::move(__last), static_cast<__comp_ref_type<_Compare> >(__comp)).second; + std::move(__first), std::move(__last), static_cast<__comp_ref_type<_Compare> >(__comp)) + .second; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) -{ - return _VSTD::next_permutation(__first, __last, - __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) { + return std::next_permutation(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_NEXT_PERMUTATION_H diff --git a/include/c++/v1/__algorithm/none_of.h b/include/c++/v1/__algorithm/none_of.h index 19357eb2..50841ba1 100644 --- a/include/c++/v1/__algorithm/none_of.h +++ b/include/c++/v1/__algorithm/none_of.h @@ -19,7 +19,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) { for (; __first != __last; ++__first) if (__pred(*__first)) diff --git a/include/c++/v1/__algorithm/nth_element.h b/include/c++/v1/__algorithm/nth_element.h index 9fdfb2ca..da748d72 100644 --- a/include/c++/v1/__algorithm/nth_element.h +++ b/include/c++/v1/__algorithm/nth_element.h @@ -13,8 +13,8 @@ #include <__algorithm/comp_ref_type.h> #include <__algorithm/iterator_operations.h> #include <__algorithm/sort.h> +#include <__assert> #include <__config> -#include <__debug> #include <__debug_utils/randomize_range.h> #include <__iterator/iterator_traits.h> #include <__utility/move.h> @@ -23,209 +23,212 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool -__nth_element_find_guard(_RandomAccessIterator& __i, _RandomAccessIterator& __j, - _RandomAccessIterator __m, _Compare __comp) -{ - // manually guard downward moving __j against __i - while (true) { - if (__i == --__j) { - return false; - } - if (__comp(*__j, *__m)) { - return true; // found guard for downward moving __j, now use unguarded partition - } +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool __nth_element_find_guard( + _RandomAccessIterator& __i, _RandomAccessIterator& __j, _RandomAccessIterator __m, _Compare __comp) { + // manually guard downward moving __j against __i + while (true) { + if (__i == --__j) { + return false; + } + if (__comp(*__j, *__m)) { + return true; // found guard for downward moving __j, now use unguarded partition } + } } template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void -__nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp) -{ - using _Ops = _IterOps<_AlgPolicy>; +// NOLINTNEXTLINE(readability-function-cognitive-complexity) +__nth_element( + _RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; - // _Compare is known to be a reference type - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - const difference_type __limit = 7; - while (true) + // _Compare is known to be a reference type + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + const difference_type __limit = 7; + while (true) { + if (__nth == __last) + return; + difference_type __len = __last - __first; + switch (__len) { + case 0: + case 1: + return; + case 2: + if (__comp(*--__last, *__first)) + _Ops::iter_swap(__first, __last); + return; + case 3: { + _RandomAccessIterator __m = __first; + std::__sort3<_AlgPolicy, _Compare>(__first, ++__m, --__last, __comp); + return; + } + } + if (__len <= __limit) { + std::__selection_sort<_AlgPolicy, _Compare>(__first, __last, __comp); + return; + } + // __len > __limit >= 3 + _RandomAccessIterator __m = __first + __len / 2; + _RandomAccessIterator __lm1 = __last; + unsigned __n_swaps = std::__sort3<_AlgPolicy, _Compare>(__first, __m, --__lm1, __comp); + // *__m is median + // partition [__first, __m) < *__m and *__m <= [__m, __last) + // (this inhibits tossing elements equivalent to __m around unnecessarily) + _RandomAccessIterator __i = __first; + _RandomAccessIterator __j = __lm1; + // j points beyond range to be tested, *__lm1 is known to be <= *__m + // The search going up is known to be guarded but the search coming down isn't. + // Prime the downward search with a guard. + if (!__comp(*__i, *__m)) // if *__first == *__m { - if (__nth == __last) - return; - difference_type __len = __last - __first; - switch (__len) - { - case 0: - case 1: - return; - case 2: - if (__comp(*--__last, *__first)) - _Ops::iter_swap(__first, __last); - return; - case 3: - { - _RandomAccessIterator __m = __first; - std::__sort3<_AlgPolicy, _Compare>(__first, ++__m, --__last, __comp); - return; + // *__first == *__m, *__first doesn't go in first part + if (std::__nth_element_find_guard<_Compare>(__i, __j, __m, __comp)) { + _Ops::iter_swap(__i, __j); + ++__n_swaps; + } else { + // *__first == *__m, *__m <= all other elements + // Partition instead into [__first, __i) == *__first and *__first < [__i, __last) + ++__i; // __first + 1 + __j = __last; + if (!__comp(*__first, *--__j)) { // we need a guard if *__first == *(__last-1) + while (true) { + if (__i == __j) { + return; // [__first, __last) all equivalent elements + } else if (__comp(*__first, *__i)) { + _Ops::iter_swap(__i, __j); + ++__n_swaps; + ++__i; + break; } + ++__i; + } } - if (__len <= __limit) - { - std::__selection_sort<_AlgPolicy, _Compare>(__first, __last, __comp); - return; + // [__first, __i) == *__first and *__first < [__j, __last) and __j == __last - 1 + if (__i == __j) { + return; } - // __len > __limit >= 3 - _RandomAccessIterator __m = __first + __len/2; - _RandomAccessIterator __lm1 = __last; - unsigned __n_swaps = std::__sort3<_AlgPolicy, _Compare>(__first, __m, --__lm1, __comp); - // *__m is median - // partition [__first, __m) < *__m and *__m <= [__m, __last) - // (this inhibits tossing elements equivalent to __m around unnecessarily) - _RandomAccessIterator __i = __first; - _RandomAccessIterator __j = __lm1; - // j points beyond range to be tested, *__lm1 is known to be <= *__m - // The search going up is known to be guarded but the search coming down isn't. - // Prime the downward search with a guard. - if (!__comp(*__i, *__m)) // if *__first == *__m - { - // *__first == *__m, *__first doesn't go in first part - if (_VSTD::__nth_element_find_guard<_Compare>(__i, __j, __m, __comp)) { - _Ops::iter_swap(__i, __j); - ++__n_swaps; - } else { - // *__first == *__m, *__m <= all other elements - // Partition instead into [__first, __i) == *__first and *__first < [__i, __last) - ++__i; // __first + 1 - __j = __last; - if (!__comp(*__first, *--__j)) { // we need a guard if *__first == *(__last-1) - while (true) { - if (__i == __j) { - return; // [__first, __last) all equivalent elements - } else if (__comp(*__first, *__i)) { - _Ops::iter_swap(__i, __j); - ++__n_swaps; - ++__i; - break; - } - ++__i; - } - } - // [__first, __i) == *__first and *__first < [__j, __last) and __j == __last - 1 - if (__i == __j) { - return; - } - while (true) { - while (!__comp(*__first, *__i)) - ++__i; - while (__comp(*__first, *--__j)) - ; - if (__i >= __j) - break; - _Ops::iter_swap(__i, __j); - ++__n_swaps; - ++__i; - } - // [__first, __i) == *__first and *__first < [__i, __last) - // The first part is sorted, - if (__nth < __i) { - return; - } - // __nth_element the second part - // _VSTD::__nth_element<_Compare>(__i, __nth, __last, __comp); - __first = __i; - continue; - } + while (true) { + while (!__comp(*__first, *__i)) { + ++__i; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __i != __last, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } + do { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __j != __first, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__j; + } while (__comp(*__first, *__j)); + if (__i >= __j) + break; + _Ops::iter_swap(__i, __j); + ++__n_swaps; + ++__i; } - ++__i; - // j points beyond range to be tested, *__lm1 is known to be <= *__m - // if not yet partitioned... - if (__i < __j) - { - // known that *(__i - 1) < *__m - while (true) - { - // __m still guards upward moving __i - while (__comp(*__i, *__m)) - ++__i; - // It is now known that a guard exists for downward moving __j - while (!__comp(*--__j, *__m)) - ; - if (__i >= __j) - break; - _Ops::iter_swap(__i, __j); - ++__n_swaps; - // It is known that __m != __j - // If __m just moved, follow it - if (__m == __i) - __m = __j; - ++__i; - } + // [__first, __i) == *__first and *__first < [__i, __last) + // The first part is sorted, + if (__nth < __i) { + return; } - // [__first, __i) < *__m and *__m <= [__i, __last) - if (__i != __m && __comp(*__m, *__i)) - { - _Ops::iter_swap(__i, __m); - ++__n_swaps; + // __nth_element the second part + // std::__nth_element<_Compare>(__i, __nth, __last, __comp); + __first = __i; + continue; + } + } + ++__i; + // j points beyond range to be tested, *__lm1 is known to be <= *__m + // if not yet partitioned... + if (__i < __j) { + // known that *(__i - 1) < *__m + while (true) { + // __m still guards upward moving __i + while (__comp(*__i, *__m)) { + ++__i; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __i != __last, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); } - // [__first, __i) < *__i and *__i <= [__i+1, __last) - if (__nth == __i) + // It is now known that a guard exists for downward moving __j + do { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __j != __first, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__j; + } while (!__comp(*__j, *__m)); + if (__i >= __j) + break; + _Ops::iter_swap(__i, __j); + ++__n_swaps; + // It is known that __m != __j + // If __m just moved, follow it + if (__m == __i) + __m = __j; + ++__i; + } + } + // [__first, __i) < *__m and *__m <= [__i, __last) + if (__i != __m && __comp(*__m, *__i)) { + _Ops::iter_swap(__i, __m); + ++__n_swaps; + } + // [__first, __i) < *__i and *__i <= [__i+1, __last) + if (__nth == __i) + return; + if (__n_swaps == 0) { + // We were given a perfectly partitioned sequence. Coincidence? + if (__nth < __i) { + // Check for [__first, __i) already sorted + __j = __m = __first; + while (true) { + if (++__j == __i) { + // [__first, __i) sorted return; - if (__n_swaps == 0) - { - // We were given a perfectly partitioned sequence. Coincidence? - if (__nth < __i) - { - // Check for [__first, __i) already sorted - __j = __m = __first; - while (true) { - if (++__j == __i) { - // [__first, __i) sorted - return; - } - if (__comp(*__j, *__m)) { - // not yet sorted, so sort - break; - } - __m = __j; - } - } - else - { - // Check for [__i, __last) already sorted - __j = __m = __i; - while (true) { - if (++__j == __last) { - // [__i, __last) sorted - return; - } - if (__comp(*__j, *__m)) { - // not yet sorted, so sort - break; - } - __m = __j; - } - } - } - // __nth_element on range containing __nth - if (__nth < __i) - { - // _VSTD::__nth_element<_Compare>(__first, __nth, __i, __comp); - __last = __i; + } + if (__comp(*__j, *__m)) { + // not yet sorted, so sort + break; + } + __m = __j; } - else - { - // _VSTD::__nth_element<_Compare>(__i+1, __nth, __last, __comp); - __first = ++__i; + } else { + // Check for [__i, __last) already sorted + __j = __m = __i; + while (true) { + if (++__j == __last) { + // [__i, __last) sorted + return; + } + if (__comp(*__j, *__m)) { + // not yet sorted, so sort + break; + } + __m = __j; } + } } + // __nth_element on range containing __nth + if (__nth < __i) { + // std::__nth_element<_Compare>(__first, __nth, __i, __comp); + __last = __i; + } else { + // std::__nth_element<_Compare>(__i+1, __nth, __last, __comp); + __first = ++__i; + } + } } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void __nth_element_impl(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, - _Compare& __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void __nth_element_impl( + _RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare& __comp) { if (__nth == __last) return; @@ -240,19 +243,19 @@ void __nth_element_impl(_RandomAccessIterator __first, _RandomAccessIterator __n } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, - _Compare __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp) { std::__nth_element_impl<_ClassicAlgPolicy>(std::move(__first), std::move(__nth), std::move(__last), __comp); } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last) { - std::nth_element(std::move(__first), std::move(__nth), std::move(__last), __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last) { + std::nth_element(std::move(__first), std::move(__nth), std::move(__last), __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_NTH_ELEMENT_H diff --git a/include/c++/v1/__algorithm/partial_sort.h b/include/c++/v1/__algorithm/partial_sort.h index e0812aff..7f8d0c49 100644 --- a/include/c++/v1/__algorithm/partial_sort.h +++ b/include/c++/v1/__algorithm/partial_sort.h @@ -16,21 +16,23 @@ #include <__algorithm/sift_down.h> #include <__algorithm/sort_heap.h> #include <__config> -#include <__debug> #include <__debug_utils/randomize_range.h> #include <__iterator/iterator_traits.h> +#include <__type_traits/is_assignable.h> +#include <__type_traits/is_constructible.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_RandomAccessIterator __partial_sort_impl( +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator __partial_sort_impl( _RandomAccessIterator __first, _RandomAccessIterator __middle, _Sentinel __last, _Compare&& __comp) { if (__first == __middle) { return _IterOps<_AlgPolicy>::next(__middle, __last); @@ -39,14 +41,12 @@ _RandomAccessIterator __partial_sort_impl( std::__make_heap<_AlgPolicy>(__first, __middle, __comp); typename iterator_traits<_RandomAccessIterator>::difference_type __len = __middle - __first; - _RandomAccessIterator __i = __middle; - for (; __i != __last; ++__i) - { - if (__comp(*__i, *__first)) - { - _IterOps<_AlgPolicy>::iter_swap(__i, __first); - std::__sift_down<_AlgPolicy>(__first, __comp, __len, __first); - } + _RandomAccessIterator __i = __middle; + for (; __i != __last; ++__i) { + if (__comp(*__i, *__first)) { + _IterOps<_AlgPolicy>::iter_swap(__i, __first); + std::__sift_down<_AlgPolicy>(__first, __comp, __len, __first); + } } std::__sort_heap<_AlgPolicy>(std::move(__first), std::move(__middle), __comp); @@ -54,11 +54,10 @@ _RandomAccessIterator __partial_sort_impl( } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_RandomAccessIterator __partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _Sentinel __last, - _Compare& __comp) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator +__partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _Sentinel __last, _Compare& __comp) { if (__first == __middle) - return _IterOps<_AlgPolicy>::next(__middle, __last); + return _IterOps<_AlgPolicy>::next(__middle, __last); std::__debug_randomize_range<_AlgPolicy>(__first, __last); @@ -71,11 +70,8 @@ _RandomAccessIterator __partial_sort(_RandomAccessIterator __first, _RandomAcces } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, - _Compare __comp) -{ +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void partial_sort( + _RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, _Compare __comp) { static_assert(std::is_copy_constructible<_RandomAccessIterator>::value, "Iterators must be copy constructible."); static_assert(std::is_copy_assignable<_RandomAccessIterator>::value, "Iterators must be copy assignable."); @@ -83,14 +79,13 @@ partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _Ran } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) -{ - _VSTD::partial_sort(__first, __middle, __last, - __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) { + std::partial_sort(__first, __middle, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_PARTIAL_SORT_H diff --git a/include/c++/v1/__algorithm/partial_sort_copy.h b/include/c++/v1/__algorithm/partial_sort_copy.h index 1aba0710..ef7c9d34 100644 --- a/include/c++/v1/__algorithm/partial_sort_copy.h +++ b/include/c++/v1/__algorithm/partial_sort_copy.h @@ -28,61 +28,79 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator, _RandomAccessIterator> -__partial_sort_copy(_InputIterator __first, _Sentinel1 __last, - _RandomAccessIterator __result_first, _Sentinel2 __result_last, - _Compare&& __comp, _Proj1&& __proj1, _Proj2&& __proj2) -{ - _RandomAccessIterator __r = __result_first; - auto&& __projected_comp = std::__make_projected(__comp, __proj2); +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator, _RandomAccessIterator> __partial_sort_copy( + _InputIterator __first, + _Sentinel1 __last, + _RandomAccessIterator __result_first, + _Sentinel2 __result_last, + _Compare&& __comp, + _Proj1&& __proj1, + _Proj2&& __proj2) { + _RandomAccessIterator __r = __result_first; + auto&& __projected_comp = std::__make_projected(__comp, __proj2); - if (__r != __result_last) - { - for (; __first != __last && __r != __result_last; ++__first, (void) ++__r) - *__r = *__first; - std::__make_heap<_AlgPolicy>(__result_first, __r, __projected_comp); - typename iterator_traits<_RandomAccessIterator>::difference_type __len = __r - __result_first; - for (; __first != __last; ++__first) - if (std::__invoke(__comp, std::__invoke(__proj1, *__first), std::__invoke(__proj2, *__result_first))) { - *__result_first = *__first; - std::__sift_down<_AlgPolicy>(__result_first, __projected_comp, __len, __result_first); - } - std::__sort_heap<_AlgPolicy>(__result_first, __r, __projected_comp); - } + if (__r != __result_last) { + for (; __first != __last && __r != __result_last; ++__first, (void)++__r) + *__r = *__first; + std::__make_heap<_AlgPolicy>(__result_first, __r, __projected_comp); + typename iterator_traits<_RandomAccessIterator>::difference_type __len = __r - __result_first; + for (; __first != __last; ++__first) + if (std::__invoke(__comp, std::__invoke(__proj1, *__first), std::__invoke(__proj2, *__result_first))) { + *__result_first = *__first; + std::__sift_down<_AlgPolicy>(__result_first, __projected_comp, __len, __result_first); + } + std::__sort_heap<_AlgPolicy>(__result_first, __r, __projected_comp); + } - return pair<_InputIterator, _RandomAccessIterator>( - _IterOps<_AlgPolicy>::next(std::move(__first), std::move(__last)), std::move(__r)); + return pair<_InputIterator, _RandomAccessIterator>( + _IterOps<_AlgPolicy>::next(std::move(__first), std::move(__last)), std::move(__r)); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_RandomAccessIterator -partial_sort_copy(_InputIterator __first, _InputIterator __last, - _RandomAccessIterator __result_first, _RandomAccessIterator __result_last, _Compare __comp) -{ - static_assert(__is_callable<_Compare, decltype(*__first), decltype(*__result_first)>::value, - "Comparator has to be callable"); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator partial_sort_copy( + _InputIterator __first, + _InputIterator __last, + _RandomAccessIterator __result_first, + _RandomAccessIterator __result_last, + _Compare __comp) { + static_assert( + __is_callable<_Compare, decltype(*__first), decltype(*__result_first)>::value, "Comparator has to be callable"); - auto __result = std::__partial_sort_copy<_ClassicAlgPolicy>(__first, __last, __result_first, __result_last, - static_cast<__comp_ref_type<_Compare> >(__comp), __identity(), __identity()); + auto __result = std::__partial_sort_copy<_ClassicAlgPolicy>( + __first, + __last, + __result_first, + __result_last, + static_cast<__comp_ref_type<_Compare> >(__comp), + __identity(), + __identity()); return __result.second; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_RandomAccessIterator -partial_sort_copy(_InputIterator __first, _InputIterator __last, - _RandomAccessIterator __result_first, _RandomAccessIterator __result_last) -{ - return _VSTD::partial_sort_copy(__first, __last, __result_first, __result_last, - __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator partial_sort_copy( + _InputIterator __first, + _InputIterator __last, + _RandomAccessIterator __result_first, + _RandomAccessIterator __result_last) { + return std::partial_sort_copy(__first, __last, __result_first, __result_last, __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_PARTIAL_SORT_COPY_H diff --git a/include/c++/v1/__algorithm/partition.h b/include/c++/v1/__algorithm/partition.h index 0e094bf8..824e49b9 100644 --- a/include/c++/v1/__algorithm/partition.h +++ b/include/c++/v1/__algorithm/partition.h @@ -14,80 +14,70 @@ #include <__iterator/iterator_traits.h> #include <__utility/move.h> #include <__utility/pair.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator, _ForwardIterator> -__partition_impl(_ForwardIterator __first, _Sentinel __last, _Predicate __pred, forward_iterator_tag) -{ - while (true) - { - if (__first == __last) - return std::make_pair(std::move(__first), std::move(__first)); - if (!__pred(*__first)) - break; - ++__first; - } +__partition_impl(_ForwardIterator __first, _Sentinel __last, _Predicate __pred, forward_iterator_tag) { + while (true) { + if (__first == __last) + return std::make_pair(std::move(__first), std::move(__first)); + if (!__pred(*__first)) + break; + ++__first; + } - _ForwardIterator __p = __first; - while (++__p != __last) - { - if (__pred(*__p)) - { - _IterOps<_AlgPolicy>::iter_swap(__first, __p); - ++__first; - } + _ForwardIterator __p = __first; + while (++__p != __last) { + if (__pred(*__p)) { + _IterOps<_AlgPolicy>::iter_swap(__first, __p); + ++__first; } - return std::make_pair(std::move(__first), std::move(__p)); + } + return std::make_pair(std::move(__first), std::move(__p)); } template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator, _BidirectionalIterator> -__partition_impl(_BidirectionalIterator __first, _Sentinel __sentinel, _Predicate __pred, - bidirectional_iterator_tag) -{ - _BidirectionalIterator __original_last = _IterOps<_AlgPolicy>::next(__first, __sentinel); - _BidirectionalIterator __last = __original_last; +__partition_impl(_BidirectionalIterator __first, _Sentinel __sentinel, _Predicate __pred, bidirectional_iterator_tag) { + _BidirectionalIterator __original_last = _IterOps<_AlgPolicy>::next(__first, __sentinel); + _BidirectionalIterator __last = __original_last; - while (true) - { - while (true) - { - if (__first == __last) - return std::make_pair(std::move(__first), std::move(__original_last)); - if (!__pred(*__first)) - break; - ++__first; - } - do - { - if (__first == --__last) - return std::make_pair(std::move(__first), std::move(__original_last)); - } while (!__pred(*__last)); - _IterOps<_AlgPolicy>::iter_swap(__first, __last); - ++__first; + while (true) { + while (true) { + if (__first == __last) + return std::make_pair(std::move(__first), std::move(__original_last)); + if (!__pred(*__first)) + break; + ++__first; } + do { + if (__first == --__last) + return std::make_pair(std::move(__first), std::move(__original_last)); + } while (!__pred(*__last)); + _IterOps<_AlgPolicy>::iter_swap(__first, __last); + ++__first; + } } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -pair<_ForwardIterator, _ForwardIterator> __partition( - _ForwardIterator __first, _Sentinel __last, _Predicate&& __pred, _IterCategory __iter_category) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator, _ForwardIterator> +__partition(_ForwardIterator __first, _Sentinel __last, _Predicate&& __pred, _IterCategory __iter_category) { return std::__partition_impl<__remove_cvref_t<_Predicate>&, _AlgPolicy>( std::move(__first), std::move(__last), __pred, __iter_category); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_ForwardIterator -partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) -{ +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { using _IterCategory = typename iterator_traits<_ForwardIterator>::iterator_category; auto __result = std::__partition<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __pred, _IterCategory()); return __result.first; @@ -95,4 +85,6 @@ partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_PARTITION_H diff --git a/include/c++/v1/__algorithm/partition_copy.h b/include/c++/v1/__algorithm/partition_copy.h index ff8826a9..147b45c7 100644 --- a/include/c++/v1/__algorithm/partition_copy.h +++ b/include/c++/v1/__algorithm/partition_copy.h @@ -19,27 +19,23 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_OutputIterator1, _OutputIterator2> -partition_copy(_InputIterator __first, _InputIterator __last, - _OutputIterator1 __out_true, _OutputIterator2 __out_false, - _Predicate __pred) -{ - for (; __first != __last; ++__first) - { - if (__pred(*__first)) - { - *__out_true = *__first; - ++__out_true; - } - else - { - *__out_false = *__first; - ++__out_false; - } +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_OutputIterator1, _OutputIterator2> partition_copy( + _InputIterator __first, + _InputIterator __last, + _OutputIterator1 __out_true, + _OutputIterator2 __out_false, + _Predicate __pred) { + for (; __first != __last; ++__first) { + if (__pred(*__first)) { + *__out_true = *__first; + ++__out_true; + } else { + *__out_false = *__first; + ++__out_false; } - return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); + } + return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/partition_point.h b/include/c++/v1/__algorithm/partition_point.h index 6ede71a2..504dbf1d 100644 --- a/include/c++/v1/__algorithm/partition_point.h +++ b/include/c++/v1/__algorithm/partition_point.h @@ -21,26 +21,22 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template +template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator -partition_point(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) -{ - typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; - difference_type __len = _VSTD::distance(__first, __last); - while (__len != 0) - { - difference_type __l2 = _VSTD::__half_positive(__len); - _ForwardIterator __m = __first; - _VSTD::advance(__m, __l2); - if (__pred(*__m)) - { - __first = ++__m; - __len -= __l2 + 1; - } - else - __len = __l2; - } - return __first; +partition_point(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { + typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; + difference_type __len = std::distance(__first, __last); + while (__len != 0) { + difference_type __l2 = std::__half_positive(__len); + _ForwardIterator __m = __first; + std::advance(__m, __l2); + if (__pred(*__m)) { + __first = ++__m; + __len -= __l2 + 1; + } else + __len = __l2; + } + return __first; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/pop_heap.h b/include/c++/v1/__algorithm/pop_heap.h index 94d32a42..6d238300 100644 --- a/include/c++/v1/__algorithm/pop_heap.h +++ b/include/c++/v1/__algorithm/pop_heap.h @@ -17,26 +17,33 @@ #include <__assert> #include <__config> #include <__iterator/iterator_traits.h> +#include <__type_traits/is_assignable.h> +#include <__type_traits/is_constructible.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -void __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare& __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len) { - _LIBCPP_ASSERT(__len > 0, "The heap given to pop_heap must be non-empty"); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void +__pop_heap(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Compare& __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len) { + // Calling `pop_heap` on an empty range is undefined behavior, but in practice it will be a no-op. + _LIBCPP_ASSERT_PEDANTIC(__len > 0, "The heap given to pop_heap must be non-empty"); __comp_ref_type<_Compare> __comp_ref = __comp; using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; if (__len > 1) { - value_type __top = _IterOps<_AlgPolicy>::__iter_move(__first); // create a hole at __first + value_type __top = _IterOps<_AlgPolicy>::__iter_move(__first); // create a hole at __first _RandomAccessIterator __hole = std::__floyd_sift_down<_AlgPolicy>(__first, __comp_ref, __len); --__last; @@ -52,8 +59,8 @@ void __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Co } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { static_assert(std::is_copy_constructible<_RandomAccessIterator>::value, "Iterators must be copy constructible."); static_assert(std::is_copy_assignable<_RandomAccessIterator>::value, "Iterators must be copy assignable."); @@ -62,12 +69,13 @@ void pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { - std::pop_heap(std::move(__first), std::move(__last), - __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::pop_heap(std::move(__first), std::move(__last), __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_POP_HEAP_H diff --git a/include/c++/v1/__algorithm/prev_permutation.h b/include/c++/v1/__algorithm/prev_permutation.h index 0b86ab74..8d15b680 100644 --- a/include/c++/v1/__algorithm/prev_permutation.h +++ b/include/c++/v1/__algorithm/prev_permutation.h @@ -22,58 +22,54 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -pair<_BidirectionalIterator, bool> -__prev_permutation(_BidirectionalIterator __first, _Sentinel __last, _Compare&& __comp) -{ - using _Result = pair<_BidirectionalIterator, bool>; +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator, bool> +__prev_permutation(_BidirectionalIterator __first, _Sentinel __last, _Compare&& __comp) { + using _Result = pair<_BidirectionalIterator, bool>; - _BidirectionalIterator __last_iter = _IterOps<_AlgPolicy>::next(__first, __last); - _BidirectionalIterator __i = __last_iter; - if (__first == __last || __first == --__i) - return _Result(std::move(__last_iter), false); + _BidirectionalIterator __last_iter = _IterOps<_AlgPolicy>::next(__first, __last); + _BidirectionalIterator __i = __last_iter; + if (__first == __last || __first == --__i) + return _Result(std::move(__last_iter), false); - while (true) - { - _BidirectionalIterator __ip1 = __i; - if (__comp(*__ip1, *--__i)) - { - _BidirectionalIterator __j = __last_iter; - while (!__comp(*--__j, *__i)) - ; - _IterOps<_AlgPolicy>::iter_swap(__i, __j); - std::__reverse<_AlgPolicy>(__ip1, __last_iter); - return _Result(std::move(__last_iter), true); - } - if (__i == __first) - { - std::__reverse<_AlgPolicy>(__first, __last_iter); - return _Result(std::move(__last_iter), false); - } + while (true) { + _BidirectionalIterator __ip1 = __i; + if (__comp(*__ip1, *--__i)) { + _BidirectionalIterator __j = __last_iter; + while (!__comp(*--__j, *__i)) + ; + _IterOps<_AlgPolicy>::iter_swap(__i, __j); + std::__reverse<_AlgPolicy>(__ip1, __last_iter); + return _Result(std::move(__last_iter), true); + } + if (__i == __first) { + std::__reverse<_AlgPolicy>(__first, __last_iter); + return _Result(std::move(__last_iter), false); } + } } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) -{ +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { return std::__prev_permutation<_ClassicAlgPolicy>( - std::move(__first), std::move(__last), static_cast<__comp_ref_type<_Compare> >(__comp)).second; + std::move(__first), std::move(__last), static_cast<__comp_ref_type<_Compare> >(__comp)) + .second; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) -{ - return _VSTD::prev_permutation(__first, __last, - __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) { + return std::prev_permutation(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_PREV_PERMUTATION_H diff --git a/include/c++/v1/__algorithm/push_heap.h b/include/c++/v1/__algorithm/push_heap.h index 90684957..ec0b445f 100644 --- a/include/c++/v1/__algorithm/push_heap.h +++ b/include/c++/v1/__algorithm/push_heap.h @@ -14,30 +14,36 @@ #include <__algorithm/iterator_operations.h> #include <__config> #include <__iterator/iterator_traits.h> +#include <__type_traits/is_assignable.h> +#include <__type_traits/is_constructible.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -void __sift_up(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void +__sift_up(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Compare&& __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len) { using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; if (__len > 1) { - __len = (__len - 2) / 2; + __len = (__len - 2) / 2; _RandomAccessIterator __ptr = __first + __len; if (__comp(*__ptr, *--__last)) { value_type __t(_IterOps<_AlgPolicy>::__iter_move(__last)); do { *__last = _IterOps<_AlgPolicy>::__iter_move(__ptr); - __last = __ptr; + __last = __ptr; if (__len == 0) break; __len = (__len - 1) / 2; @@ -50,15 +56,15 @@ void __sift_up(_RandomAccessIterator __first, _RandomAccessIterator __last, _Com } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -void __push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare& __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void +__push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare& __comp) { typename iterator_traits<_RandomAccessIterator>::difference_type __len = __last - __first; std::__sift_up<_AlgPolicy, __comp_ref_type<_Compare> >(std::move(__first), std::move(__last), __comp, __len); } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { static_assert(std::is_copy_constructible<_RandomAccessIterator>::value, "Iterators must be copy constructible."); static_assert(std::is_copy_assignable<_RandomAccessIterator>::value, "Iterators must be copy assignable."); @@ -66,12 +72,13 @@ void push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Com } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { - std::push_heap(std::move(__first), std::move(__last), - __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::push_heap(std::move(__first), std::move(__last), __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_PUSH_HEAP_H diff --git a/include/c++/v1/__algorithm/ranges_adjacent_find.h b/include/c++/v1/__algorithm/ranges_adjacent_find.h index d338d13e..3c54f723 100644 --- a/include/c++/v1/__algorithm/ranges_adjacent_find.h +++ b/include/c++/v1/__algorithm/ranges_adjacent_find.h @@ -24,17 +24,19 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __adjacent_find { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr static - _Iter __adjacent_find_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter + __adjacent_find_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { if (__first == __last) return __first; @@ -47,32 +49,35 @@ struct __fn { return __i; } - template _Sent, - class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_binary_predicate, projected<_Iter, _Proj>> _Pred = ranges::equal_to> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, _Pred __pred = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, _Pred __pred = {}, _Proj __proj = {}) const { return __adjacent_find_impl(std::move(__first), std::move(__last), __pred, __proj); } template , _Proj>, - projected, _Proj>> _Pred = ranges::equal_to> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __range, _Pred __pred = {}, _Proj __proj = {}) const { + indirect_binary_predicate, _Proj>, projected, _Proj>> + _Pred = ranges::equal_to> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __range, _Pred __pred = {}, _Proj __proj = {}) const { return __adjacent_find_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); } }; } // namespace __adjacent_find inline namespace __cpo { - inline constexpr auto adjacent_find = __adjacent_find::__fn{}; +inline constexpr auto adjacent_find = __adjacent_find::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_ADJACENT_FIND_H diff --git a/include/c++/v1/__algorithm/ranges_all_of.h b/include/c++/v1/__algorithm/ranges_all_of.h index e45c4e58..2f603b32 100644 --- a/include/c++/v1/__algorithm/ranges_all_of.h +++ b/include/c++/v1/__algorithm/ranges_all_of.h @@ -22,17 +22,18 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __all_of { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr static - bool __all_of_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static bool __all_of_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { for (; __first != __last; ++__first) { if (!std::invoke(__pred, std::invoke(__proj, *__first))) return false; @@ -40,29 +41,34 @@ struct __fn { return true; } - template _Sent, class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_unary_predicate> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { return __all_of_impl(std::move(__first), std::move(__last), __pred, __proj); } - template , _Proj>> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { return __all_of_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); } }; } // namespace __all_of inline namespace __cpo { - inline constexpr auto all_of = __all_of::__fn{}; +inline constexpr auto all_of = __all_of::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_ALL_OF_H diff --git a/include/c++/v1/__algorithm/ranges_any_of.h b/include/c++/v1/__algorithm/ranges_any_of.h index e7d1e723..205fcecc 100644 --- a/include/c++/v1/__algorithm/ranges_any_of.h +++ b/include/c++/v1/__algorithm/ranges_any_of.h @@ -22,17 +22,18 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __any_of { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr static - bool __any_of_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static bool __any_of_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { for (; __first != __last; ++__first) { if (std::invoke(__pred, std::invoke(__proj, *__first))) return true; @@ -40,29 +41,34 @@ struct __fn { return false; } - template _Sent, class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_unary_predicate> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Iter __first, _Sent __last, _Pred __pred = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Iter __first, _Sent __last, _Pred __pred = {}, _Proj __proj = {}) const { return __any_of_impl(std::move(__first), std::move(__last), __pred, __proj); } - template , _Proj>> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { return __any_of_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); } }; } // namespace __any_of inline namespace __cpo { - inline constexpr auto any_of = __any_of::__fn{}; +inline constexpr auto any_of = __any_of::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_ANY_OF_H diff --git a/include/c++/v1/__algorithm/ranges_binary_search.h b/include/c++/v1/__algorithm/ranges_binary_search.h index d72d4e05..1ef2bd62 100644 --- a/include/c++/v1/__algorithm/ranges_binary_search.h +++ b/include/c++/v1/__algorithm/ranges_binary_search.h @@ -24,40 +24,50 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __binary_search { struct __fn { - template _Sent, class _Type, class _Proj = identity, + template _Sent, + class _Type, + class _Proj = identity, indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Iter __first, _Sent __last, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { - auto __ret = std::__lower_bound_impl<_RangeAlgPolicy>(__first, __last, __value, __comp, __proj); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Iter __first, _Sent __last, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__lower_bound<_RangeAlgPolicy>(__first, __last, __value, __comp, __proj); return __ret != __last && !std::invoke(__comp, __value, std::invoke(__proj, *__ret)); } - template , _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Range&& __r, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Range&& __r, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { auto __first = ranges::begin(__r); - auto __last = ranges::end(__r); - auto __ret = std::__lower_bound_impl<_RangeAlgPolicy>(__first, __last, __value, __comp, __proj); + auto __last = ranges::end(__r); + auto __ret = std::__lower_bound<_RangeAlgPolicy>(__first, __last, __value, __comp, __proj); return __ret != __last && !std::invoke(__comp, __value, std::invoke(__proj, *__ret)); } }; } // namespace __binary_search inline namespace __cpo { - inline constexpr auto binary_search = __binary_search::__fn{}; +inline constexpr auto binary_search = __binary_search::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_BINARY_SEARCH_H diff --git a/include/c++/v1/__algorithm/ranges_clamp.h b/include/c++/v1/__algorithm/ranges_clamp.h index 09a97fc7..e6181ef9 100644 --- a/include/c++/v1/__algorithm/ranges_clamp.h +++ b/include/c++/v1/__algorithm/ranges_clamp.h @@ -22,44 +22,45 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __clamp { struct __fn { - template > _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - const _Type& operator()(const _Type& __value, - const _Type& __low, - const _Type& __high, - _Comp __comp = {}, - _Proj __proj = {}) const { - _LIBCPP_ASSERT(!bool(std::invoke(__comp, std::invoke(__proj, __high), std::invoke(__proj, __low))), - "Bad bounds passed to std::ranges::clamp"); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr const _Type& operator()( + const _Type& __value, const _Type& __low, const _Type& __high, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN( + !bool(std::invoke(__comp, std::invoke(__proj, __high), std::invoke(__proj, __low))), + "Bad bounds passed to std::ranges::clamp"); - if (std::invoke(__comp, std::invoke(__proj, __value), std::invoke(__proj, __low))) + auto&& __projected = std::invoke(__proj, __value); + if (std::invoke(__comp, std::forward(__projected), std::invoke(__proj, __low))) return __low; - else if (std::invoke(__comp, std::invoke(__proj, __high), std::invoke(__proj, __value))) + else if (std::invoke(__comp, std::invoke(__proj, __high), std::forward(__projected))) return __high; else return __value; } - }; } // namespace __clamp inline namespace __cpo { - inline constexpr auto clamp = __clamp::__fn{}; +inline constexpr auto clamp = __clamp::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_CLAMP_H diff --git a/include/c++/v1/__algorithm/ranges_copy.h b/include/c++/v1/__algorithm/ranges_copy.h index bb02c84e..e1d6d32f 100644 --- a/include/c++/v1/__algorithm/ranges_copy.h +++ b/include/c++/v1/__algorithm/ranges_copy.h @@ -25,7 +25,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -36,19 +39,18 @@ using copy_result = in_out_result<_InIter, _OutIter>; namespace __copy { struct __fn { - template _Sent, weakly_incrementable _OutIter> requires indirectly_copyable<_InIter, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - copy_result<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr copy_result<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result) const { auto __ret = std::__copy<_RangeAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)); return {std::move(__ret.first), std::move(__ret.second)}; } template requires indirectly_copyable, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - copy_result, _OutIter> operator()(_Range&& __r, _OutIter __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr copy_result, _OutIter> + operator()(_Range&& __r, _OutIter __result) const { auto __ret = std::__copy<_RangeAlgPolicy>(ranges::begin(__r), ranges::end(__r), std::move(__result)); return {std::move(__ret.first), std::move(__ret.second)}; } @@ -56,12 +58,14 @@ struct __fn { } // namespace __copy inline namespace __cpo { - inline constexpr auto copy = __copy::__fn{}; +inline constexpr auto copy = __copy::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_COPY_H diff --git a/include/c++/v1/__algorithm/ranges_copy_backward.h b/include/c++/v1/__algorithm/ranges_copy_backward.h index f41af66f..93e32604 100644 --- a/include/c++/v1/__algorithm/ranges_copy_backward.h +++ b/include/c++/v1/__algorithm/ranges_copy_backward.h @@ -23,30 +23,32 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { -template +template using copy_backward_result = in_out_result<_Ip, _Op>; namespace __copy_backward { struct __fn { - template _Sent1, bidirectional_iterator _InIter2> requires indirectly_copyable<_InIter1, _InIter2> - _LIBCPP_HIDE_FROM_ABI constexpr - copy_backward_result<_InIter1, _InIter2> operator()(_InIter1 __first, _Sent1 __last, _InIter2 __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr copy_backward_result<_InIter1, _InIter2> + operator()(_InIter1 __first, _Sent1 __last, _InIter2 __result) const { auto __ret = std::__copy_backward<_RangeAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)); return {std::move(__ret.first), std::move(__ret.second)}; } template requires indirectly_copyable, _Iter> - _LIBCPP_HIDE_FROM_ABI constexpr - copy_backward_result, _Iter> operator()(_Range&& __r, _Iter __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr copy_backward_result, _Iter> + operator()(_Range&& __r, _Iter __result) const { auto __ret = std::__copy_backward<_RangeAlgPolicy>(ranges::begin(__r), ranges::end(__r), std::move(__result)); return {std::move(__ret.first), std::move(__ret.second)}; } @@ -54,12 +56,14 @@ struct __fn { } // namespace __copy_backward inline namespace __cpo { - inline constexpr auto copy_backward = __copy_backward::__fn{}; +inline constexpr auto copy_backward = __copy_backward::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_COPY_BACKWARD_H diff --git a/include/c++/v1/__algorithm/ranges_copy_if.h b/include/c++/v1/__algorithm/ranges_copy_if.h index dba41c3b..4b41d215 100644 --- a/include/c++/v1/__algorithm/ranges_copy_if.h +++ b/include/c++/v1/__algorithm/ranges_copy_if.h @@ -24,21 +24,22 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { -template +template using copy_if_result = in_out_result<_Ip, _Op>; namespace __copy_if { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI static constexpr - copy_if_result <_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI static constexpr copy_if_result<_InIter, _OutIter> __copy_if_impl(_InIter __first, _Sent __last, _OutIter __result, _Pred& __pred, _Proj& __proj) { for (; __first != __last; ++__first) { if (std::invoke(__pred, std::invoke(__proj, *__first))) { @@ -49,20 +50,23 @@ struct __fn { return {std::move(__first), std::move(__result)}; } - template _Sent, weakly_incrementable _OutIter, class _Proj = identity, + template _Sent, + weakly_incrementable _OutIter, + class _Proj = identity, indirect_unary_predicate> _Pred> requires indirectly_copyable<_Iter, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - copy_if_result<_Iter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr copy_if_result<_Iter, _OutIter> operator()(_Iter __first, _Sent __last, _OutIter __result, _Pred __pred, _Proj __proj = {}) const { return __copy_if_impl(std::move(__first), std::move(__last), std::move(__result), __pred, __proj); } - template , _Proj>> _Pred> requires indirectly_copyable, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - copy_if_result, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr copy_if_result, _OutIter> operator()(_Range&& __r, _OutIter __result, _Pred __pred, _Proj __proj = {}) const { return __copy_if_impl(ranges::begin(__r), ranges::end(__r), std::move(__result), __pred, __proj); } @@ -70,12 +74,14 @@ struct __fn { } // namespace __copy_if inline namespace __cpo { - inline constexpr auto copy_if = __copy_if::__fn{}; +inline constexpr auto copy_if = __copy_if::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_COPY_IF_H diff --git a/include/c++/v1/__algorithm/ranges_copy_n.h b/include/c++/v1/__algorithm/ranges_copy_n.h index 04bb80b3..4353fa99 100644 --- a/include/c++/v1/__algorithm/ranges_copy_n.h +++ b/include/c++/v1/__algorithm/ranges_copy_n.h @@ -25,9 +25,12 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace ranges { @@ -36,10 +39,9 @@ using copy_n_result = in_out_result<_Ip, _Op>; namespace __copy_n { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr static - copy_n_result<_InIter, _OutIter> __go(_InIter __first, _DiffType __n, _OutIter __result) { + _LIBCPP_HIDE_FROM_ABI constexpr static copy_n_result<_InIter, _OutIter> + __go(_InIter __first, _DiffType __n, _OutIter __result) { while (__n != 0) { *__result = *__first; ++__first; @@ -50,28 +52,30 @@ struct __fn { } template - _LIBCPP_HIDE_FROM_ABI constexpr static - copy_n_result<_InIter, _OutIter> __go(_InIter __first, _DiffType __n, _OutIter __result) { + _LIBCPP_HIDE_FROM_ABI constexpr static copy_n_result<_InIter, _OutIter> + __go(_InIter __first, _DiffType __n, _OutIter __result) { auto __ret = std::__copy<_RangeAlgPolicy>(__first, __first + __n, __result); return {__ret.first, __ret.second}; } template requires indirectly_copyable<_Ip, _Op> - _LIBCPP_HIDE_FROM_ABI constexpr - copy_n_result<_Ip, _Op> operator()(_Ip __first, iter_difference_t<_Ip> __n, _Op __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr copy_n_result<_Ip, _Op> + operator()(_Ip __first, iter_difference_t<_Ip> __n, _Op __result) const { return __go(std::move(__first), __n, std::move(__result)); } }; } // namespace __copy_n inline namespace __cpo { - inline constexpr auto copy_n = __copy_n::__fn{}; +inline constexpr auto copy_n = __copy_n::__fn{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_RANGES_COPY_N_H diff --git a/include/c++/v1/__algorithm/ranges_count.h b/include/c++/v1/__algorithm/ranges_count.h index 527dd062..4f351174 100644 --- a/include/c++/v1/__algorithm/ranges_count.h +++ b/include/c++/v1/__algorithm/ranges_count.h @@ -9,7 +9,8 @@ #ifndef _LIBCPP___ALGORITHM_RANGES_COUNT_H #define _LIBCPP___ALGORITHM_RANGES_COUNT_H -#include <__algorithm/ranges_count_if.h> +#include <__algorithm/count.h> +#include <__algorithm/iterator_operations.h> #include <__config> #include <__functional/identity.h> #include <__functional/ranges_operations.h> @@ -25,7 +26,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -34,29 +38,29 @@ namespace __count { struct __fn { template _Sent, class _Type, class _Proj = identity> requires indirect_binary_predicate, const _Type*> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - iter_difference_t<_Iter> operator()(_Iter __first, _Sent __last, const _Type& __value, _Proj __proj = {}) const { - auto __pred = [&](auto&& __e) { return __e == __value; }; - return ranges::__count_if_impl(std::move(__first), std::move(__last), __pred, __proj); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Iter> + operator()(_Iter __first, _Sent __last, const _Type& __value, _Proj __proj = {}) const { + return std::__count<_RangeAlgPolicy>(std::move(__first), std::move(__last), __value, __proj); } template requires indirect_binary_predicate, _Proj>, const _Type*> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - range_difference_t<_Range> operator()(_Range&& __r, const _Type& __value, _Proj __proj = {}) const { - auto __pred = [&](auto&& __e) { return __e == __value; }; - return ranges::__count_if_impl(ranges::begin(__r), ranges::end(__r), __pred, __proj); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr range_difference_t<_Range> + operator()(_Range&& __r, const _Type& __value, _Proj __proj = {}) const { + return std::__count<_RangeAlgPolicy>(ranges::begin(__r), ranges::end(__r), __value, __proj); } }; } // namespace __count inline namespace __cpo { - inline constexpr auto count = __count::__fn{}; +inline constexpr auto count = __count::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_COUNT_H diff --git a/include/c++/v1/__algorithm/ranges_count_if.h b/include/c++/v1/__algorithm/ranges_count_if.h index 931618b7..5f2396ff 100644 --- a/include/c++/v1/__algorithm/ranges_count_if.h +++ b/include/c++/v1/__algorithm/ranges_count_if.h @@ -25,15 +25,17 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { template -_LIBCPP_HIDE_FROM_ABI constexpr -iter_difference_t<_Iter> __count_if_impl(_Iter __first, _Sent __last, - _Pred& __pred, _Proj& __proj) { +_LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Iter> +__count_if_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { iter_difference_t<_Iter> __counter(0); for (; __first != __last; ++__first) { if (std::invoke(__pred, std::invoke(__proj, *__first))) @@ -44,29 +46,34 @@ iter_difference_t<_Iter> __count_if_impl(_Iter __first, _Sent __last, namespace __count_if { struct __fn { - template _Sent, class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_unary_predicate> _Predicate> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - iter_difference_t<_Iter> operator()(_Iter __first, _Sent __last, _Predicate __pred, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Iter> + operator()(_Iter __first, _Sent __last, _Predicate __pred, _Proj __proj = {}) const { return ranges::__count_if_impl(std::move(__first), std::move(__last), __pred, __proj); } - template , _Proj>> _Predicate> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - range_difference_t<_Range> operator()(_Range&& __r, _Predicate __pred, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr range_difference_t<_Range> + operator()(_Range&& __r, _Predicate __pred, _Proj __proj = {}) const { return ranges::__count_if_impl(ranges::begin(__r), ranges::end(__r), __pred, __proj); } }; } // namespace __count_if inline namespace __cpo { - inline constexpr auto count_if = __count_if::__fn{}; +inline constexpr auto count_if = __count_if::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_COUNT_IF_H diff --git a/include/c++/v1/__algorithm/ranges_equal.h b/include/c++/v1/__algorithm/ranges_equal.h index 3c417f09..edbd0e36 100644 --- a/include/c++/v1/__algorithm/ranges_equal.h +++ b/include/c++/v1/__algorithm/ranges_equal.h @@ -9,6 +9,8 @@ #ifndef _LIBCPP___ALGORITHM_RANGES_EQUAL_H #define _LIBCPP___ALGORITHM_RANGES_EQUAL_H +#include <__algorithm/equal.h> +#include <__algorithm/unwrap_range.h> #include <__config> #include <__functional/identity.h> #include <__functional/invoke.h> @@ -24,92 +26,84 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __equal { struct __fn { -private: - template - _LIBCPP_HIDE_FROM_ABI constexpr static - bool __equal_impl(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Pred& __pred, - _Proj1& __proj1, - _Proj2& __proj2) { - while (__first1 != __last1 && __first2 != __last2) { - if (!std::invoke(__pred, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__first2))) - return false; - ++__first1; - ++__first2; - } - return __first1 == __last1 && __first2 == __last2; - } - -public: - - template _Sent1, - input_iterator _Iter2, sentinel_for<_Iter2> _Sent2, - class _Pred = ranges::equal_to, + template _Sent1, + input_iterator _Iter2, + sentinel_for<_Iter2> _Sent2, + class _Pred = ranges::equal_to, class _Proj1 = identity, class _Proj2 = identity> requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Pred __pred = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { if constexpr (sized_sentinel_for<_Sent1, _Iter1> && sized_sentinel_for<_Sent2, _Iter2>) { if (__last1 - __first1 != __last2 - __first2) return false; } - return __equal_impl(std::move(__first1), std::move(__last1), - std::move(__first2), std::move(__last2), - __pred, - __proj1, - __proj2); + auto __unwrapped1 = std::__unwrap_range(std::move(__first1), std::move(__last1)); + auto __unwrapped2 = std::__unwrap_range(std::move(__first2), std::move(__last2)); + return std::__equal_impl( + std::move(__unwrapped1.first), + std::move(__unwrapped1.second), + std::move(__unwrapped2.first), + std::move(__unwrapped2.second), + __pred, + __proj1, + __proj2); } template requires indirectly_comparable, iterator_t<_Range2>, _Pred, _Proj1, _Proj2> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Range1&& __range1, - _Range2&& __range2, - _Pred __pred = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + _Range1&& __range1, _Range2&& __range2, _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { if constexpr (sized_range<_Range1> && sized_range<_Range2>) { if (ranges::distance(__range1) != ranges::distance(__range2)) return false; } - return __equal_impl(ranges::begin(__range1), ranges::end(__range1), - ranges::begin(__range2), ranges::end(__range2), - __pred, - __proj1, - __proj2); + auto __unwrapped1 = std::__unwrap_range(ranges::begin(__range1), ranges::end(__range1)); + auto __unwrapped2 = std::__unwrap_range(ranges::begin(__range2), ranges::end(__range2)); + return std::__equal_impl( + std::move(__unwrapped1.first), + std::move(__unwrapped1.second), + std::move(__unwrapped2.first), + std::move(__unwrapped2.second), + __pred, + __proj1, + __proj2); return false; } }; } // namespace __equal inline namespace __cpo { - inline constexpr auto equal = __equal::__fn{}; +inline constexpr auto equal = __equal::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_EQUAL_H diff --git a/include/c++/v1/__algorithm/ranges_equal_range.h b/include/c++/v1/__algorithm/ranges_equal_range.h index 94dc058e..4a308e01 100644 --- a/include/c++/v1/__algorithm/ranges_equal_range.h +++ b/include/c++/v1/__algorithm/ranges_equal_range.h @@ -1,6 +1,6 @@ //===----------------------------------------------------------------------===// // -// Part of the LLVM __project, under the Apache License v2.0 with LLVM Exceptions. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // @@ -30,7 +30,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -38,28 +41,25 @@ namespace ranges { namespace __equal_range { struct __fn { - template < - forward_iterator _Iter, - sentinel_for<_Iter> _Sent, - class _Tp, - class _Proj = identity, - indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> + template _Sent, + class _Tp, + class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> operator()(_Iter __first, _Sent __last, const _Tp& __value, _Comp __comp = {}, _Proj __proj = {}) const { - auto __ret = std::__equal_range<_RangeAlgPolicy>( - std::move(__first), std::move(__last), __value, __comp, __proj); + auto __ret = std::__equal_range<_RangeAlgPolicy>(std::move(__first), std::move(__last), __value, __comp, __proj); return {std::move(__ret.first), std::move(__ret.second)}; } - template < - forward_range _Range, - class _Tp, - class _Proj = identity, - indirect_strict_weak_order, _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> + template , _Proj>> _Comp = ranges::less> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> operator()(_Range&& __range, const _Tp& __value, _Comp __comp = {}, _Proj __proj = {}) const { - auto __ret = std::__equal_range<_RangeAlgPolicy>( - ranges::begin(__range), ranges::end(__range), __value, __comp, __proj); + auto __ret = + std::__equal_range<_RangeAlgPolicy>(ranges::begin(__range), ranges::end(__range), __value, __comp, __proj); return {std::move(__ret.first), std::move(__ret.second)}; } }; @@ -67,12 +67,14 @@ struct __fn { } // namespace __equal_range inline namespace __cpo { - inline constexpr auto equal_range = __equal_range::__fn{}; +inline constexpr auto equal_range = __equal_range::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_EQUAL_RANGE_H diff --git a/include/c++/v1/__algorithm/ranges_fill.h b/include/c++/v1/__algorithm/ranges_fill.h index 6ebc2bd6..7a177d85 100644 --- a/include/c++/v1/__algorithm/ranges_fill.h +++ b/include/c++/v1/__algorithm/ranges_fill.h @@ -20,7 +20,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -28,9 +31,8 @@ namespace ranges { namespace __fill { struct __fn { template _Iter, sentinel_for<_Iter> _Sent> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, const _Type& __value) const { - if constexpr(random_access_iterator<_Iter> && sized_sentinel_for<_Sent, _Iter>) { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter operator()(_Iter __first, _Sent __last, const _Type& __value) const { + if constexpr (random_access_iterator<_Iter> && sized_sentinel_for<_Sent, _Iter>) { return ranges::fill_n(__first, __last - __first, __value); } else { for (; __first != __last; ++__first) @@ -40,20 +42,21 @@ struct __fn { } template _Range> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __range, const _Type& __value) const { + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> operator()(_Range&& __range, const _Type& __value) const { return (*this)(ranges::begin(__range), ranges::end(__range), __value); } }; } // namespace __fill inline namespace __cpo { - inline constexpr auto fill = __fill::__fn{}; +inline constexpr auto fill = __fill::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_FILL_H diff --git a/include/c++/v1/__algorithm/ranges_fill_n.h b/include/c++/v1/__algorithm/ranges_fill_n.h index a2660e8b..a6e988c0 100644 --- a/include/c++/v1/__algorithm/ranges_fill_n.h +++ b/include/c++/v1/__algorithm/ranges_fill_n.h @@ -17,7 +17,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -25,8 +28,8 @@ namespace ranges { namespace __fill_n { struct __fn { template _Iter> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, iter_difference_t<_Iter> __n, const _Type& __value) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, iter_difference_t<_Iter> __n, const _Type& __value) const { for (; __n != 0; --__n) { *__first = __value; ++__first; @@ -37,12 +40,14 @@ struct __fn { } // namespace __fill_n inline namespace __cpo { - inline constexpr auto fill_n = __fill_n::__fn{}; +inline constexpr auto fill_n = __fill_n::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_FILL_N_H diff --git a/include/c++/v1/__algorithm/ranges_find.h b/include/c++/v1/__algorithm/ranges_find.h index 580c2a14..6b0d5efe 100644 --- a/include/c++/v1/__algorithm/ranges_find.h +++ b/include/c++/v1/__algorithm/ranges_find.h @@ -9,7 +9,9 @@ #ifndef _LIBCPP___ALGORITHM_RANGES_FIND_H #define _LIBCPP___ALGORITHM_RANGES_FIND_H +#include <__algorithm/find.h> #include <__algorithm/ranges_find_if.h> +#include <__algorithm/unwrap_range.h> #include <__config> #include <__functional/identity.h> #include <__functional/invoke.h> @@ -26,38 +28,53 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __find { struct __fn { + template + _LIBCPP_HIDE_FROM_ABI static constexpr _Iter + __find_unwrap(_Iter __first, _Sent __last, const _Tp& __value, _Proj& __proj) { + if constexpr (forward_iterator<_Iter>) { + auto [__first_un, __last_un] = std::__unwrap_range(__first, std::move(__last)); + return std::__rewrap_range<_Sent>( + std::move(__first), std::__find(std::move(__first_un), std::move(__last_un), __value, __proj)); + } else { + return std::__find(std::move(__first), std::move(__last), __value, __proj); + } + } + template _Sp, class _Tp, class _Proj = identity> requires indirect_binary_predicate, const _Tp*> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Ip operator()(_Ip __first, _Sp __last, const _Tp& __value, _Proj __proj = {}) const { - auto __pred = [&](auto&& __e) { return std::forward(__e) == __value; }; - return ranges::__find_if_impl(std::move(__first), std::move(__last), __pred, __proj); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Ip + operator()(_Ip __first, _Sp __last, const _Tp& __value, _Proj __proj = {}) const { + return __find_unwrap(std::move(__first), std::move(__last), __value, __proj); } template requires indirect_binary_predicate, _Proj>, const _Tp*> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Rp> operator()(_Rp&& __r, const _Tp& __value, _Proj __proj = {}) const { - auto __pred = [&](auto&& __e) { return std::forward(__e) == __value; }; - return ranges::__find_if_impl(ranges::begin(__r), ranges::end(__r), __pred, __proj); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Rp> + operator()(_Rp&& __r, const _Tp& __value, _Proj __proj = {}) const { + return __find_unwrap(ranges::begin(__r), ranges::end(__r), __value, __proj); } }; } // namespace __find inline namespace __cpo { - inline constexpr auto find = __find::__fn{}; +inline constexpr auto find = __find::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_FIND_H diff --git a/include/c++/v1/__algorithm/ranges_find_end.h b/include/c++/v1/__algorithm/ranges_find_end.h index ea36f4d4..e49e66dd 100644 --- a/include/c++/v1/__algorithm/ranges_find_end.h +++ b/include/c++/v1/__algorithm/ranges_find_end.h @@ -27,25 +27,32 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __find_end { struct __fn { - template _Sent1, - forward_iterator _Iter2, sentinel_for<_Iter2> _Sent2, - class _Pred = ranges::equal_to, + template _Sent1, + forward_iterator _Iter2, + sentinel_for<_Iter2> _Sent2, + class _Pred = ranges::equal_to, class _Proj1 = identity, class _Proj2 = identity> requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - subrange<_Iter1> operator()(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Pred __pred = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter1> operator()( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { auto __ret = std::__find_end_impl<_RangeAlgPolicy>( __first1, __last1, @@ -61,16 +68,12 @@ struct __fn { template requires indirectly_comparable, iterator_t<_Range2>, _Pred, _Proj1, _Proj2> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_subrange_t<_Range1> operator()(_Range1&& __range1, - _Range2&& __range2, - _Pred __pred = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range1> operator()( + _Range1&& __range1, _Range2&& __range2, _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { auto __ret = std::__find_end_impl<_RangeAlgPolicy>( ranges::begin(__range1), ranges::end(__range1), @@ -87,12 +90,14 @@ struct __fn { } // namespace __find_end inline namespace __cpo { - inline constexpr auto find_end = __find_end::__fn{}; +inline constexpr auto find_end = __find_end::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_FIND_END_H diff --git a/include/c++/v1/__algorithm/ranges_find_first_of.h b/include/c++/v1/__algorithm/ranges_find_first_of.h index 9d66e751..d92d9686 100644 --- a/include/c++/v1/__algorithm/ranges_find_first_of.h +++ b/include/c++/v1/__algorithm/ranges_find_first_of.h @@ -24,21 +24,25 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __find_first_of { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr static - _Iter1 __find_first_of_impl(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Pred& __pred, - _Proj1& __proj1, - _Proj2& __proj2) { + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter1 __find_first_of_impl( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2) { for (; __first1 != __last1; ++__first1) { for (auto __j = __first2; __j != __last2; ++__j) { if (std::invoke(__pred, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__j))) @@ -48,54 +52,55 @@ struct __fn { return __first1; } - template _Sent1, - forward_iterator _Iter2, sentinel_for<_Iter2> _Sent2, - class _Pred = ranges::equal_to, + template _Sent1, + forward_iterator _Iter2, + sentinel_for<_Iter2> _Sent2, + class _Pred = ranges::equal_to, class _Proj1 = identity, class _Proj2 = identity> requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Iter1 operator()(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Pred __pred = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { - return __find_first_of_impl(std::move(__first1), std::move(__last1), - std::move(__first2), std::move(__last2), - __pred, - __proj1, - __proj2); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Iter1 operator()( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + return __find_first_of_impl( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), __pred, __proj1, __proj2); } template requires indirectly_comparable, iterator_t<_Range2>, _Pred, _Proj1, _Proj2> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range1> operator()(_Range1&& __range1, - _Range2&& __range2, - _Pred __pred = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { - return __find_first_of_impl(ranges::begin(__range1), ranges::end(__range1), - ranges::begin(__range2), ranges::end(__range2), - __pred, - __proj1, - __proj2); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range1> operator()( + _Range1&& __range1, _Range2&& __range2, _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + return __find_first_of_impl( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + __pred, + __proj1, + __proj2); } - }; } // namespace __find_first_of inline namespace __cpo { - inline constexpr auto find_first_of = __find_first_of::__fn{}; +inline constexpr auto find_first_of = __find_first_of::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_FIND_FIRST_OF_H diff --git a/include/c++/v1/__algorithm/ranges_find_if.h b/include/c++/v1/__algorithm/ranges_find_if.h index 45ce6e46..888f9ec3 100644 --- a/include/c++/v1/__algorithm/ranges_find_if.h +++ b/include/c++/v1/__algorithm/ranges_find_if.h @@ -24,15 +24,17 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { template -_LIBCPP_HIDE_FROM_ABI static constexpr -_Ip __find_if_impl(_Ip __first, _Sp __last, _Pred& __pred, _Proj& __proj) { +_LIBCPP_HIDE_FROM_ABI constexpr _Ip __find_if_impl(_Ip __first, _Sp __last, _Pred& __pred, _Proj& __proj) { for (; __first != __last; ++__first) { if (std::invoke(__pred, std::invoke(__proj, *__first))) break; @@ -42,30 +44,32 @@ _Ip __find_if_impl(_Ip __first, _Sp __last, _Pred& __pred, _Proj& __proj) { namespace __find_if { struct __fn { - - template _Sp, class _Proj = identity, + template _Sp, + class _Proj = identity, indirect_unary_predicate> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Ip operator()(_Ip __first, _Sp __last, _Pred __pred, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Ip + operator()(_Ip __first, _Sp __last, _Pred __pred, _Proj __proj = {}) const { return ranges::__find_if_impl(std::move(__first), std::move(__last), __pred, __proj); } - template , _Proj>> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Rp> operator()(_Rp&& __r, _Pred __pred, _Proj __proj = {}) const { + template , _Proj>> _Pred> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Rp> + operator()(_Rp&& __r, _Pred __pred, _Proj __proj = {}) const { return ranges::__find_if_impl(ranges::begin(__r), ranges::end(__r), __pred, __proj); } }; } // namespace __find_if inline namespace __cpo { - inline constexpr auto find_if = __find_if::__fn{}; +inline constexpr auto find_if = __find_if::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_FIND_IF_H diff --git a/include/c++/v1/__algorithm/ranges_find_if_not.h b/include/c++/v1/__algorithm/ranges_find_if_not.h index 3dd12132..ec19545b 100644 --- a/include/c++/v1/__algorithm/ranges_find_if_not.h +++ b/include/c++/v1/__algorithm/ranges_find_if_not.h @@ -26,38 +26,44 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __find_if_not { struct __fn { - template _Sp, class _Proj = identity, + template _Sp, + class _Proj = identity, indirect_unary_predicate> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Ip operator()(_Ip __first, _Sp __last, _Pred __pred, _Proj __proj = {}) const { - auto __pred2 = [&](auto&& __e) { return !std::invoke(__pred, std::forward(__e)); }; + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Ip + operator()(_Ip __first, _Sp __last, _Pred __pred, _Proj __proj = {}) const { + auto __pred2 = [&](auto&& __e) -> bool { return !std::invoke(__pred, std::forward(__e)); }; return ranges::__find_if_impl(std::move(__first), std::move(__last), __pred2, __proj); } - template , _Proj>> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Rp> operator()(_Rp&& __r, _Pred __pred, _Proj __proj = {}) const { - auto __pred2 = [&](auto&& __e) { return !std::invoke(__pred, std::forward(__e)); }; + template , _Proj>> _Pred> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Rp> + operator()(_Rp&& __r, _Pred __pred, _Proj __proj = {}) const { + auto __pred2 = [&](auto&& __e) -> bool { return !std::invoke(__pred, std::forward(__e)); }; return ranges::__find_if_impl(ranges::begin(__r), ranges::end(__r), __pred2, __proj); } }; } // namespace __find_if_not inline namespace __cpo { - inline constexpr auto find_if_not = __find_if_not::__fn{}; +inline constexpr auto find_if_not = __find_if_not::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_FIND_IF_NOT_H diff --git a/include/c++/v1/__algorithm/ranges_for_each.h b/include/c++/v1/__algorithm/ranges_for_each.h index 0c70c059..225dc774 100644 --- a/include/c++/v1/__algorithm/ranges_for_each.h +++ b/include/c++/v1/__algorithm/ranges_for_each.h @@ -24,7 +24,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -37,42 +40,42 @@ namespace __for_each { struct __fn { private: template - _LIBCPP_HIDE_FROM_ABI constexpr static - for_each_result<_Iter, _Func> __for_each_impl(_Iter __first, _Sent __last, _Func& __func, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static for_each_result<_Iter, _Func> + __for_each_impl(_Iter __first, _Sent __last, _Func& __func, _Proj& __proj) { for (; __first != __last; ++__first) std::invoke(__func, std::invoke(__proj, *__first)); return {std::move(__first), std::move(__func)}; } public: - template _Sent, + template _Sent, class _Proj = identity, indirectly_unary_invocable> _Func> - _LIBCPP_HIDE_FROM_ABI constexpr - for_each_result<_Iter, _Func> operator()(_Iter __first, _Sent __last, _Func __func, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr for_each_result<_Iter, _Func> + operator()(_Iter __first, _Sent __last, _Func __func, _Proj __proj = {}) const { return __for_each_impl(std::move(__first), std::move(__last), __func, __proj); } template , _Proj>> _Func> - _LIBCPP_HIDE_FROM_ABI constexpr - for_each_result, _Func> operator()(_Range&& __range, - _Func __func, - _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr for_each_result, _Func> + operator()(_Range&& __range, _Func __func, _Proj __proj = {}) const { return __for_each_impl(ranges::begin(__range), ranges::end(__range), __func, __proj); } - }; } // namespace __for_each inline namespace __cpo { - inline constexpr auto for_each = __for_each::__fn{}; +inline constexpr auto for_each = __for_each::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_FOR_EACH_H diff --git a/include/c++/v1/__algorithm/ranges_for_each_n.h b/include/c++/v1/__algorithm/ranges_for_each_n.h index 261816ab..d1fdca34 100644 --- a/include/c++/v1/__algorithm/ranges_for_each_n.h +++ b/include/c++/v1/__algorithm/ranges_for_each_n.h @@ -24,7 +24,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -35,32 +38,27 @@ using for_each_n_result = in_fun_result<_Iter, _Func>; namespace __for_each_n { struct __fn { - - template > _Func> - _LIBCPP_HIDE_FROM_ABI constexpr - for_each_n_result<_Iter, _Func> operator()(_Iter __first, - iter_difference_t<_Iter> __count, - _Func __func, - _Proj __proj = {}) const { + template > _Func> + _LIBCPP_HIDE_FROM_ABI constexpr for_each_n_result<_Iter, _Func> + operator()(_Iter __first, iter_difference_t<_Iter> __count, _Func __func, _Proj __proj = {}) const { while (__count-- > 0) { std::invoke(__func, std::invoke(__proj, *__first)); ++__first; } return {std::move(__first), std::move(__func)}; } - }; } // namespace __for_each_n inline namespace __cpo { - inline constexpr auto for_each_n = __for_each_n::__fn{}; +inline constexpr auto for_each_n = __for_each_n::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_FOR_EACH_N_H diff --git a/include/c++/v1/__algorithm/ranges_generate.h b/include/c++/v1/__algorithm/ranges_generate.h index ae486ae6..e6467198 100644 --- a/include/c++/v1/__algorithm/ranges_generate.h +++ b/include/c++/v1/__algorithm/ranges_generate.h @@ -24,7 +24,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -32,10 +35,8 @@ namespace ranges { namespace __generate { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr - static _OutIter __generate_fn_impl(_OutIter __first, _Sent __last, _Func& __gen) { + _LIBCPP_HIDE_FROM_ABI constexpr static _OutIter __generate_fn_impl(_OutIter __first, _Sent __last, _Func& __gen) { for (; __first != __last; ++__first) { *__first = __gen(); } @@ -44,30 +45,29 @@ struct __fn { } template _Sent, copy_constructible _Func> - requires invocable<_Func&> && indirectly_writable<_OutIter, invoke_result_t<_Func&>> - _LIBCPP_HIDE_FROM_ABI constexpr - _OutIter operator()(_OutIter __first, _Sent __last, _Func __gen) const { + requires invocable<_Func&> && indirectly_writable<_OutIter, invoke_result_t<_Func&>> + _LIBCPP_HIDE_FROM_ABI constexpr _OutIter operator()(_OutIter __first, _Sent __last, _Func __gen) const { return __generate_fn_impl(std::move(__first), std::move(__last), __gen); } template - requires invocable<_Func&> && output_range<_Range, invoke_result_t<_Func&>> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __range, _Func __gen) const { + requires invocable<_Func&> && output_range<_Range, invoke_result_t<_Func&>> + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> operator()(_Range&& __range, _Func __gen) const { return __generate_fn_impl(ranges::begin(__range), ranges::end(__range), __gen); } - }; } // namespace __generate inline namespace __cpo { - inline constexpr auto generate = __generate::__fn{}; +inline constexpr auto generate = __generate::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_GENERATE_H diff --git a/include/c++/v1/__algorithm/ranges_generate_n.h b/include/c++/v1/__algorithm/ranges_generate_n.h index e625e3a9..cd5fd748 100644 --- a/include/c++/v1/__algorithm/ranges_generate_n.h +++ b/include/c++/v1/__algorithm/ranges_generate_n.h @@ -25,7 +25,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -33,11 +36,10 @@ namespace ranges { namespace __generate_n { struct __fn { - template - requires invocable<_Func&> && indirectly_writable<_OutIter, invoke_result_t<_Func&>> - _LIBCPP_HIDE_FROM_ABI constexpr - _OutIter operator()(_OutIter __first, iter_difference_t<_OutIter> __n, _Func __gen) const { + requires invocable<_Func&> && indirectly_writable<_OutIter, invoke_result_t<_Func&>> + _LIBCPP_HIDE_FROM_ABI constexpr _OutIter + operator()(_OutIter __first, iter_difference_t<_OutIter> __n, _Func __gen) const { for (; __n > 0; --__n) { *__first = __gen(); ++__first; @@ -45,18 +47,19 @@ struct __fn { return __first; } - }; } // namespace __generate_n inline namespace __cpo { - inline constexpr auto generate_n = __generate_n::__fn{}; +inline constexpr auto generate_n = __generate_n::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_GENERATE_N_H diff --git a/include/c++/v1/__algorithm/ranges_includes.h b/include/c++/v1/__algorithm/ranges_includes.h index 8438117c..c4c3b8ed 100644 --- a/include/c++/v1/__algorithm/ranges_includes.h +++ b/include/c++/v1/__algorithm/ranges_includes.h @@ -27,7 +27,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -35,15 +38,14 @@ namespace ranges { namespace __includes { struct __fn { - template < - input_iterator _Iter1, - sentinel_for<_Iter1> _Sent1, - input_iterator _Iter2, - sentinel_for<_Iter2> _Sent2, - class _Proj1 = identity, - class _Proj2 = identity, - indirect_strict_weak_order, projected<_Iter2, _Proj2>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + template _Sent1, + input_iterator _Iter2, + sentinel_for<_Iter2> _Sent2, + class _Proj1 = identity, + class _Proj2 = identity, + indirect_strict_weak_order, projected<_Iter2, _Proj2>> _Comp = ranges::less> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( _Iter1 __first1, _Sent1 __last1, _Iter2 __first2, @@ -61,14 +63,13 @@ struct __fn { std::move(__proj2)); } - template < - input_range _Range1, - input_range _Range2, - class _Proj1 = identity, - class _Proj2 = identity, - indirect_strict_weak_order, _Proj1>, projected, _Proj2>> - _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + template , _Proj1>, projected, _Proj2>> + _Comp = ranges::less> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( _Range1&& __range1, _Range2&& __range2, _Comp __comp = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { return std::__includes( ranges::begin(__range1), @@ -84,12 +85,14 @@ struct __fn { } // namespace __includes inline namespace __cpo { - inline constexpr auto includes = __includes::__fn{}; +inline constexpr auto includes = __includes::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_INCLUDES_H diff --git a/include/c++/v1/__algorithm/ranges_inplace_merge.h b/include/c++/v1/__algorithm/ranges_inplace_merge.h index 88171a65..d94c0ad4 100644 --- a/include/c++/v1/__algorithm/ranges_inplace_merge.h +++ b/include/c++/v1/__algorithm/ranges_inplace_merge.h @@ -31,55 +31,54 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __inplace_merge { - struct __fn { - template - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __inplace_merge_impl(_Iter __first, _Iter __middle, _Sent __last, _Comp&& __comp, _Proj&& __proj) { - auto __last_iter = ranges::next(__middle, __last); - std::__inplace_merge<_RangeAlgPolicy>( - std::move(__first), std::move(__middle), __last_iter, std::__make_projected(__comp, __proj)); - return __last_iter; - } - - template < - bidirectional_iterator _Iter, - sentinel_for<_Iter> _Sent, - class _Comp = ranges::less, - class _Proj = identity> - requires sortable<_Iter, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI _Iter - operator()(_Iter __first, _Iter __middle, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { - return __inplace_merge_impl( - std::move(__first), std::move(__middle), std::move(__last), std::move(__comp), std::move(__proj)); - } - - template - requires sortable< - iterator_t<_Range>, - _Comp, - _Proj> _LIBCPP_HIDE_FROM_ABI borrowed_iterator_t<_Range> - operator()(_Range&& __range, iterator_t<_Range> __middle, _Comp __comp = {}, _Proj __proj = {}) const { - return __inplace_merge_impl( - ranges::begin(__range), std::move(__middle), ranges::end(__range), std::move(__comp), std::move(__proj)); - } - }; +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __inplace_merge_impl(_Iter __first, _Iter __middle, _Sent __last, _Comp&& __comp, _Proj&& __proj) { + auto __last_iter = ranges::next(__middle, __last); + std::__inplace_merge<_RangeAlgPolicy>( + std::move(__first), std::move(__middle), __last_iter, std::__make_projected(__comp, __proj)); + return __last_iter; + } + + template _Sent, class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI _Iter + operator()(_Iter __first, _Iter __middle, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __inplace_merge_impl( + std::move(__first), std::move(__middle), std::move(__last), std::move(__comp), std::move(__proj)); + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI borrowed_iterator_t<_Range> + operator()(_Range&& __range, iterator_t<_Range> __middle, _Comp __comp = {}, _Proj __proj = {}) const { + return __inplace_merge_impl( + ranges::begin(__range), std::move(__middle), ranges::end(__range), std::move(__comp), std::move(__proj)); + } +}; } // namespace __inplace_merge inline namespace __cpo { - inline constexpr auto inplace_merge = __inplace_merge::__fn{}; +inline constexpr auto inplace_merge = __inplace_merge::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_INPLACE_MERGE_H diff --git a/include/c++/v1/__algorithm/ranges_is_heap.h b/include/c++/v1/__algorithm/ranges_is_heap.h index a16c075b..3d9e18ce 100644 --- a/include/c++/v1/__algorithm/ranges_is_heap.h +++ b/include/c++/v1/__algorithm/ranges_is_heap.h @@ -26,7 +26,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -34,28 +37,30 @@ namespace ranges { namespace __is_heap { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr - static bool __is_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { - auto __last_iter = ranges::next(__first, __last); + _LIBCPP_HIDE_FROM_ABI constexpr static bool + __is_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); auto&& __projected_comp = std::__make_projected(__comp, __proj); auto __result = std::__is_heap_until(std::move(__first), std::move(__last_iter), __projected_comp); return __result == __last; } - template _Sent, class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return __is_heap_fn_impl(std::move(__first), std::move(__last), __comp, __proj); } - template , _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { return __is_heap_fn_impl(ranges::begin(__range), ranges::end(__range), __comp, __proj); } }; @@ -63,12 +68,14 @@ struct __fn { } // namespace __is_heap inline namespace __cpo { - inline constexpr auto is_heap = __is_heap::__fn{}; +inline constexpr auto is_heap = __is_heap::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_IS_HEAP_H diff --git a/include/c++/v1/__algorithm/ranges_is_heap_until.h b/include/c++/v1/__algorithm/ranges_is_heap_until.h index 8c8dac5b..7a2e1fc7 100644 --- a/include/c++/v1/__algorithm/ranges_is_heap_until.h +++ b/include/c++/v1/__algorithm/ranges_is_heap_until.h @@ -27,7 +27,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -35,41 +38,44 @@ namespace ranges { namespace __is_heap_until { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr - static _Iter __is_heap_until_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { - auto __last_iter = ranges::next(__first, __last); + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter + __is_heap_until_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); auto&& __projected_comp = std::__make_projected(__comp, __proj); return std::__is_heap_until(std::move(__first), std::move(__last_iter), __projected_comp); } - template _Sent, class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return __is_heap_until_fn_impl(std::move(__first), std::move(__last), __comp, __proj); } - template , _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { return __is_heap_until_fn_impl(ranges::begin(__range), ranges::end(__range), __comp, __proj); } - }; } // namespace __is_heap_until inline namespace __cpo { - inline constexpr auto is_heap_until = __is_heap_until::__fn{}; +inline constexpr auto is_heap_until = __is_heap_until::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_IS_HEAP_UNTIL_H diff --git a/include/c++/v1/__algorithm/ranges_is_partitioned.h b/include/c++/v1/__algorithm/ranges_is_partitioned.h index b903953d..5be6fba4 100644 --- a/include/c++/v1/__algorithm/ranges_is_partitioned.h +++ b/include/c++/v1/__algorithm/ranges_is_partitioned.h @@ -23,17 +23,19 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __is_partitioned { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr static - bool __is_parititioned_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static bool + __is_partitioned_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { for (; __first != __last; ++__first) { if (!std::invoke(__pred, std::invoke(__proj, *__first))) break; @@ -51,31 +53,34 @@ struct __fn { return true; } - template _Sent, + template _Sent, class _Proj = identity, indirect_unary_predicate> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { - return __is_parititioned_impl(std::move(__first), std::move(__last), __pred, __proj); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + return __is_partitioned_impl(std::move(__first), std::move(__last), __pred, __proj); } template , _Proj>> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { - return __is_parititioned_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + return __is_partitioned_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); } }; } // namespace __is_partitioned inline namespace __cpo { - inline constexpr auto is_partitioned = __is_partitioned::__fn{}; +inline constexpr auto is_partitioned = __is_partitioned::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_IS_PARTITIONED_H diff --git a/include/c++/v1/__algorithm/ranges_is_permutation.h b/include/c++/v1/__algorithm/ranges_is_permutation.h index b617500e..1f8d6700 100644 --- a/include/c++/v1/__algorithm/ranges_is_permutation.h +++ b/include/c++/v1/__algorithm/ranges_is_permutation.h @@ -25,65 +25,83 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __is_permutation { struct __fn { - - template - _LIBCPP_HIDE_FROM_ABI constexpr static - bool __is_permutation_func_impl(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, - _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { + template + _LIBCPP_HIDE_FROM_ABI constexpr static bool __is_permutation_func_impl( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2) { return std::__is_permutation<_RangeAlgPolicy>( - std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), - __pred, __proj1, __proj2); + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), __pred, __proj1, __proj2); } - template _Sent1, - forward_iterator _Iter2, sentinel_for<_Iter2> _Sent2, - class _Proj1 = identity, - class _Proj2 = identity, - indirect_equivalence_relation, - projected<_Iter2, _Proj2>> _Pred = ranges::equal_to> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, - _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + template < + forward_iterator _Iter1, + sentinel_for<_Iter1> _Sent1, + forward_iterator _Iter2, + sentinel_for<_Iter2> _Sent2, + class _Proj1 = identity, + class _Proj2 = identity, + indirect_equivalence_relation, projected<_Iter2, _Proj2>> _Pred = ranges::equal_to> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { return __is_permutation_func_impl( - std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), - __pred, __proj1, __proj2); + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), __pred, __proj1, __proj2); } template , _Proj1>, projected, _Proj2>> _Pred = ranges::equal_to> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Range1&& __range1, _Range2&& __range2, - _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + class _Proj1 = identity, + class _Proj2 = identity, + indirect_equivalence_relation, _Proj1>, + projected, _Proj2>> _Pred = ranges::equal_to> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + _Range1&& __range1, _Range2&& __range2, _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { if constexpr (sized_range<_Range1> && sized_range<_Range2>) { if (ranges::distance(__range1) != ranges::distance(__range2)) return false; } return __is_permutation_func_impl( - ranges::begin(__range1), ranges::end(__range1), ranges::begin(__range2), ranges::end(__range2), - __pred, __proj1, __proj2); + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + __pred, + __proj1, + __proj2); } }; } // namespace __is_permutation inline namespace __cpo { - inline constexpr auto is_permutation = __is_permutation::__fn{}; +inline constexpr auto is_permutation = __is_permutation::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_IS_PERMUTATION_H diff --git a/include/c++/v1/__algorithm/ranges_is_sorted.h b/include/c++/v1/__algorithm/ranges_is_sorted.h index ce3032ff..5b88d422 100644 --- a/include/c++/v1/__algorithm/ranges_is_sorted.h +++ b/include/c++/v1/__algorithm/ranges_is_sorted.h @@ -23,26 +23,30 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __is_sorted { struct __fn { - template _Sent, - class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return ranges::__is_sorted_until_impl(std::move(__first), __last, __comp, __proj) == __last; } template , _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { auto __last = ranges::end(__range); return ranges::__is_sorted_until_impl(ranges::begin(__range), __last, __comp, __proj) == __last; } @@ -50,12 +54,14 @@ struct __fn { } // namespace __is_sorted inline namespace __cpo { - inline constexpr auto is_sorted = __is_sorted::__fn{}; +inline constexpr auto is_sorted = __is_sorted::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP__ALGORITHM_RANGES_IS_SORTED_H diff --git a/include/c++/v1/__algorithm/ranges_is_sorted_until.h b/include/c++/v1/__algorithm/ranges_is_sorted_until.h index 17fc42e9..54de530c 100644 --- a/include/c++/v1/__algorithm/ranges_is_sorted_until.h +++ b/include/c++/v1/__algorithm/ranges_is_sorted_until.h @@ -24,15 +24,18 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { template -_LIBCPP_HIDE_FROM_ABI constexpr -_Iter __is_sorted_until_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { +_LIBCPP_HIDE_FROM_ABI constexpr _Iter +__is_sorted_until_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { if (__first == __last) return __first; auto __i = __first; @@ -46,31 +49,34 @@ _Iter __is_sorted_until_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& namespace __is_sorted_until { struct __fn { - template _Sent, - class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return ranges::__is_sorted_until_impl(std::move(__first), std::move(__last), __comp, __proj); } template , _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { return ranges::__is_sorted_until_impl(ranges::begin(__range), ranges::end(__range), __comp, __proj); } }; } // namespace __is_sorted_until inline namespace __cpo { - inline constexpr auto is_sorted_until = __is_sorted_until::__fn{}; +inline constexpr auto is_sorted_until = __is_sorted_until::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP__ALGORITHM_RANGES_IS_SORTED_UNTIL_H diff --git a/include/c++/v1/__algorithm/ranges_iterator_concept.h b/include/c++/v1/__algorithm/ranges_iterator_concept.h index 3ac6b317..2af891d3 100644 --- a/include/c++/v1/__algorithm/ranges_iterator_concept.h +++ b/include/c++/v1/__algorithm/ranges_iterator_concept.h @@ -18,7 +18,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -46,6 +49,8 @@ using __iterator_concept = decltype(__get_iterator_concept<_Iter>()); } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_ITERATOR_CONCEPT_H diff --git a/include/c++/v1/__algorithm/ranges_lexicographical_compare.h b/include/c++/v1/__algorithm/ranges_lexicographical_compare.h index 2972e327..6d82017e 100644 --- a/include/c++/v1/__algorithm/ranges_lexicographical_compare.h +++ b/include/c++/v1/__algorithm/ranges_lexicographical_compare.h @@ -23,24 +23,27 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __lexicographical_compare { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr static - bool __lexicographical_compare_impl(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Comp& __comp, - _Proj1& __proj1, - _Proj2& __proj2) { + _LIBCPP_HIDE_FROM_ABI constexpr static bool __lexicographical_compare_impl( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Comp& __comp, + _Proj1& __proj1, + _Proj2& __proj2) { while (__first2 != __last2) { - if (__first1 == __last1 - || std::invoke(__comp, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__first2))) + if (__first1 == __last1 || std::invoke(__comp, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__first2))) return true; if (std::invoke(__comp, std::invoke(__proj2, *__first2), std::invoke(__proj1, *__first1))) return false; @@ -50,49 +53,54 @@ struct __fn { return false; } - template _Sent1, - input_iterator _Iter2, sentinel_for<_Iter2> _Sent2, - class _Proj1 = identity, - class _Proj2 = identity, + template _Sent1, + input_iterator _Iter2, + sentinel_for<_Iter2> _Sent2, + class _Proj1 = identity, + class _Proj2 = identity, indirect_strict_weak_order, projected<_Iter2, _Proj2>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Comp __comp = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { - return __lexicographical_compare_impl(std::move(__first1), std::move(__last1), - std::move(__first2), std::move(__last2), - __comp, - __proj1, - __proj2); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + return __lexicographical_compare_impl( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), __comp, __proj1, __proj2); } template , _Proj1>, - projected, _Proj2>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Range1&& __range1, _Range2&& __range2, _Comp __comp = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { - return __lexicographical_compare_impl(ranges::begin(__range1), ranges::end(__range1), - ranges::begin(__range2), ranges::end(__range2), - __comp, - __proj1, - __proj2); + indirect_strict_weak_order, _Proj1>, projected, _Proj2>> + _Comp = ranges::less> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + _Range1&& __range1, _Range2&& __range2, _Comp __comp = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + return __lexicographical_compare_impl( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + __comp, + __proj1, + __proj2); } - }; } // namespace __lexicographical_compare inline namespace __cpo { - inline constexpr auto lexicographical_compare = __lexicographical_compare::__fn{}; +inline constexpr auto lexicographical_compare = __lexicographical_compare::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_LEXICOGRAPHICAL_COMPARE_H diff --git a/include/c++/v1/__algorithm/ranges_lower_bound.h b/include/c++/v1/__algorithm/ranges_lower_bound.h index 78cbb6d4..0651147e 100644 --- a/include/c++/v1/__algorithm/ranges_lower_bound.h +++ b/include/c++/v1/__algorithm/ranges_lower_bound.h @@ -27,7 +27,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -35,32 +38,36 @@ namespace ranges { namespace __lower_bound { struct __fn { - template _Sent, class _Type, class _Proj = identity, + template _Sent, + class _Type, + class _Proj = identity, indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { - return std::__lower_bound_impl<_RangeAlgPolicy>(__first, __last, __value, __comp, __proj); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { + return std::__lower_bound<_RangeAlgPolicy>(__first, __last, __value, __comp, __proj); } - template , _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __r, - const _Type& __value, - _Comp __comp = {}, - _Proj __proj = {}) const { - return std::__lower_bound_impl<_RangeAlgPolicy>(ranges::begin(__r), ranges::end(__r), __value, __comp, __proj); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __r, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { + return std::__lower_bound<_RangeAlgPolicy>(ranges::begin(__r), ranges::end(__r), __value, __comp, __proj); } }; } // namespace __lower_bound inline namespace __cpo { - inline constexpr auto lower_bound = __lower_bound::__fn{}; +inline constexpr auto lower_bound = __lower_bound::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_LOWER_BOUND_H diff --git a/include/c++/v1/__algorithm/ranges_make_heap.h b/include/c++/v1/__algorithm/ranges_make_heap.h index f25c7ab5..fe9c024f 100644 --- a/include/c++/v1/__algorithm/ranges_make_heap.h +++ b/include/c++/v1/__algorithm/ranges_make_heap.h @@ -32,7 +32,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -41,8 +44,8 @@ namespace __make_heap { struct __fn { template - _LIBCPP_HIDE_FROM_ABI constexpr static - _Iter __make_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter + __make_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { auto __last_iter = ranges::next(__first, __last); auto&& __projected_comp = std::__make_projected(__comp, __proj); @@ -53,15 +56,15 @@ struct __fn { template _Sent, class _Comp = ranges::less, class _Proj = identity> requires sortable<_Iter, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return __make_heap_fn_impl(std::move(__first), std::move(__last), __comp, __proj); } template requires sortable, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { return __make_heap_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); } }; @@ -69,12 +72,14 @@ struct __fn { } // namespace __make_heap inline namespace __cpo { - inline constexpr auto make_heap = __make_heap::__fn{}; +inline constexpr auto make_heap = __make_heap::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_MAKE_HEAP_H diff --git a/include/c++/v1/__algorithm/ranges_max.h b/include/c++/v1/__algorithm/ranges_max.h index 55aef997..d0ee6f31 100644 --- a/include/c++/v1/__algorithm/ranges_max.h +++ b/include/c++/v1/__algorithm/ranges_max.h @@ -20,6 +20,7 @@ #include <__iterator/projected.h> #include <__ranges/access.h> #include <__ranges/concepts.h> +#include <__type_traits/is_trivially_copyable.h> #include <__utility/move.h> #include @@ -27,45 +28,54 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_PUSH_MACROS -#include <__undef_macros> +# include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __max { struct __fn { - template > _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - const _Tp& operator()(const _Tp& __a, const _Tp& __b, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& + operator()(_LIBCPP_LIFETIMEBOUND const _Tp& __a, + _LIBCPP_LIFETIMEBOUND const _Tp& __b, + _Comp __comp = {}, + _Proj __proj = {}) const { return std::invoke(__comp, std::invoke(__proj, __a), std::invoke(__proj, __b)) ? __b : __a; } - template > _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Tp operator()(initializer_list<_Tp> __il, _Comp __comp = {}, _Proj __proj = {}) const { - _LIBCPP_ASSERT(__il.begin() != __il.end(), "initializer_list must contain at least one element"); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp + operator()(initializer_list<_Tp> __il, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __il.begin() != __il.end(), "initializer_list must contain at least one element"); - auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) { return std::invoke(__comp, __rhs, __lhs); }; + auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) -> bool { return std::invoke(__comp, __rhs, __lhs); }; return *ranges::__min_element_impl(__il.begin(), __il.end(), __comp_lhs_rhs_swapped, __proj); } - template , _Proj>> _Comp = ranges::less> requires indirectly_copyable_storable, range_value_t<_Rp>*> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - range_value_t<_Rp> operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr range_value_t<_Rp> + operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { auto __first = ranges::begin(__r); - auto __last = ranges::end(__r); + auto __last = ranges::end(__r); - _LIBCPP_ASSERT(__first != __last, "range must contain at least one element"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__first != __last, "range must contain at least one element"); - if constexpr (forward_range<_Rp>) { - auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) { return std::invoke(__comp, __rhs, __lhs); }; + if constexpr (forward_range<_Rp> && !__is_cheap_to_copy>) { + auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) -> bool { + return std::invoke(__comp, __rhs, __lhs); + }; return *ranges::__min_element_impl(std::move(__first), std::move(__last), __comp_lhs_rhs_swapped, __proj); } else { range_value_t<_Rp> __result = *__first; @@ -80,7 +90,7 @@ struct __fn { } // namespace __max inline namespace __cpo { - inline constexpr auto max = __max::__fn{}; +inline constexpr auto max = __max::__fn{}; } // namespace __cpo } // namespace ranges @@ -88,6 +98,6 @@ _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS -#endif // _LIBCPP_STD_VER > 17 && +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___ALGORITHM_RANGES_MAX_H diff --git a/include/c++/v1/__algorithm/ranges_max_element.h b/include/c++/v1/__algorithm/ranges_max_element.h index 490f3207..c5773092 100644 --- a/include/c++/v1/__algorithm/ranges_max_element.h +++ b/include/c++/v1/__algorithm/ranges_max_element.h @@ -24,38 +24,46 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __max_element { struct __fn { - template _Sp, class _Proj = identity, + template _Sp, + class _Proj = identity, indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Ip operator()(_Ip __first, _Sp __last, _Comp __comp = {}, _Proj __proj = {}) const { - auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) { return std::invoke(__comp, __rhs, __lhs); }; + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Ip + operator()(_Ip __first, _Sp __last, _Comp __comp = {}, _Proj __proj = {}) const { + auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) -> bool { return std::invoke(__comp, __rhs, __lhs); }; return ranges::__min_element_impl(__first, __last, __comp_lhs_rhs_swapped, __proj); } - template , _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Rp> operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { - auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) { return std::invoke(__comp, __rhs, __lhs); }; + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Rp> + operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) -> bool { return std::invoke(__comp, __rhs, __lhs); }; return ranges::__min_element_impl(ranges::begin(__r), ranges::end(__r), __comp_lhs_rhs_swapped, __proj); } }; } // namespace __max_element inline namespace __cpo { - inline constexpr auto max_element = __max_element::__fn{}; +inline constexpr auto max_element = __max_element::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_MAX_ELEMENT_H diff --git a/include/c++/v1/__algorithm/ranges_merge.h b/include/c++/v1/__algorithm/ranges_merge.h index b36a05ab..bdf9a62d 100644 --- a/include/c++/v1/__algorithm/ranges_merge.h +++ b/include/c++/v1/__algorithm/ranges_merge.h @@ -20,14 +20,17 @@ #include <__ranges/access.h> #include <__ranges/concepts.h> #include <__ranges/dangling.h> +#include <__type_traits/remove_cvref.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -38,25 +41,25 @@ using merge_result = in_in_out_result<_InIter1, _InIter2, _OutIter>; namespace __merge { -template < - class _InIter1, - class _Sent1, - class _InIter2, - class _Sent2, - class _OutIter, - class _Comp, - class _Proj1, - class _Proj2> -_LIBCPP_HIDE_FROM_ABI constexpr merge_result<__remove_cvref_t<_InIter1>, __remove_cvref_t<_InIter2>, __remove_cvref_t<_OutIter>> -__merge_impl( - _InIter1&& __first1, - _Sent1&& __last1, - _InIter2&& __first2, - _Sent2&& __last2, - _OutIter&& __result, - _Comp&& __comp, - _Proj1&& __proj1, - _Proj2&& __proj2) { +template < class _InIter1, + class _Sent1, + class _InIter2, + class _Sent2, + class _OutIter, + class _Comp, + class _Proj1, + class _Proj2> +_LIBCPP_HIDE_FROM_ABI constexpr merge_result<__remove_cvref_t<_InIter1>, + __remove_cvref_t<_InIter2>, + __remove_cvref_t<_OutIter>> +__merge_impl(_InIter1&& __first1, + _Sent1&& __last1, + _InIter2&& __first2, + _Sent2&& __last2, + _OutIter&& __result, + _Comp&& __comp, + _Proj1&& __proj1, + _Proj2&& __proj2) { for (; __first1 != __last1 && __first2 != __last2; ++__result) { if (std::invoke(__comp, std::invoke(__proj2, *__first2), std::invoke(__proj1, *__first1))) { *__result = *__first2; @@ -72,15 +75,14 @@ __merge_impl( } struct __fn { - template < - input_iterator _InIter1, - sentinel_for<_InIter1> _Sent1, - input_iterator _InIter2, - sentinel_for<_InIter2> _Sent2, - weakly_incrementable _OutIter, - class _Comp = less, - class _Proj1 = identity, - class _Proj2 = identity> + template _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + class _Comp = less, + class _Proj1 = identity, + class _Proj2 = identity> requires mergeable<_InIter1, _InIter2, _OutIter, _Comp, _Proj1, _Proj2> _LIBCPP_HIDE_FROM_ABI constexpr merge_result<_InIter1, _InIter2, _OutIter> operator()( _InIter1 __first1, @@ -94,28 +96,20 @@ struct __fn { return __merge::__merge_impl(__first1, __last1, __first2, __last2, __result, __comp, __proj1, __proj2); } - template < - input_range _Range1, - input_range _Range2, - weakly_incrementable _OutIter, - class _Comp = less, - class _Proj1 = identity, - class _Proj2 = identity> - requires mergeable< - iterator_t<_Range1>, - iterator_t<_Range2>, - _OutIter, - _Comp, - _Proj1, - _Proj2> + template + requires mergeable, iterator_t<_Range2>, _OutIter, _Comp, _Proj1, _Proj2> _LIBCPP_HIDE_FROM_ABI constexpr merge_result, borrowed_iterator_t<_Range2>, _OutIter> - operator()( - _Range1&& __range1, - _Range2&& __range2, - _OutIter __result, - _Comp __comp = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + operator()(_Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { return __merge::__merge_impl( ranges::begin(__range1), ranges::end(__range1), @@ -131,12 +125,14 @@ struct __fn { } // namespace __merge inline namespace __cpo { - inline constexpr auto merge = __merge::__fn{}; +inline constexpr auto merge = __merge::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_MERGE_H diff --git a/include/c++/v1/__algorithm/ranges_min.h b/include/c++/v1/__algorithm/ranges_min.h index 0e31f57f..cc569d2a 100644 --- a/include/c++/v1/__algorithm/ranges_min.h +++ b/include/c++/v1/__algorithm/ranges_min.h @@ -20,48 +20,54 @@ #include <__iterator/projected.h> #include <__ranges/access.h> #include <__ranges/concepts.h> +#include <__type_traits/is_trivially_copyable.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_PUSH_MACROS -#include <__undef_macros> +# include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __min { struct __fn { - template > _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - const _Tp& operator()(const _Tp& __a, const _Tp& __b, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& + operator()(_LIBCPP_LIFETIMEBOUND const _Tp& __a, + _LIBCPP_LIFETIMEBOUND const _Tp& __b, + _Comp __comp = {}, + _Proj __proj = {}) const { return std::invoke(__comp, std::invoke(__proj, __b), std::invoke(__proj, __a)) ? __b : __a; } - template > _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Tp operator()(initializer_list<_Tp> __il, _Comp __comp = {}, _Proj __proj = {}) const { - _LIBCPP_ASSERT(__il.begin() != __il.end(), "initializer_list must contain at least one element"); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp + operator()(initializer_list<_Tp> __il, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __il.begin() != __il.end(), "initializer_list must contain at least one element"); return *ranges::__min_element_impl(__il.begin(), __il.end(), __comp, __proj); } - template , _Proj>> _Comp = ranges::less> requires indirectly_copyable_storable, range_value_t<_Rp>*> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - range_value_t<_Rp> operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr range_value_t<_Rp> + operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { auto __first = ranges::begin(__r); - auto __last = ranges::end(__r); - - _LIBCPP_ASSERT(__first != __last, "range must contain at least one element"); - - if constexpr (forward_range<_Rp>) { + auto __last = ranges::end(__r); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__first != __last, "range must contain at least one element"); + if constexpr (forward_range<_Rp> && !__is_cheap_to_copy>) { return *ranges::__min_element_impl(__first, __last, __comp, __proj); } else { range_value_t<_Rp> __result = *__first; @@ -76,7 +82,7 @@ struct __fn { } // namespace __min inline namespace __cpo { - inline constexpr auto min = __min::__fn{}; +inline constexpr auto min = __min::__fn{}; } // namespace __cpo } // namespace ranges @@ -84,6 +90,6 @@ _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS -#endif // _LIBCPP_STD_VER > 17 && +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___ALGORITHM_RANGES_MIN_H diff --git a/include/c++/v1/__algorithm/ranges_min_element.h b/include/c++/v1/__algorithm/ranges_min_element.h index 1751874d..588ef258 100644 --- a/include/c++/v1/__algorithm/ranges_min_element.h +++ b/include/c++/v1/__algorithm/ranges_min_element.h @@ -24,7 +24,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -32,8 +35,7 @@ namespace ranges { // TODO(ranges): `ranges::min_element` can now simply delegate to `std::__min_element`. template -_LIBCPP_HIDE_FROM_ABI static constexpr -_Ip __min_element_impl(_Ip __first, _Sp __last, _Comp& __comp, _Proj& __proj) { +_LIBCPP_HIDE_FROM_ABI constexpr _Ip __min_element_impl(_Ip __first, _Sp __last, _Comp& __comp, _Proj& __proj) { if (__first == __last) return __first; @@ -46,29 +48,34 @@ _Ip __min_element_impl(_Ip __first, _Sp __last, _Comp& __comp, _Proj& __proj) { namespace __min_element { struct __fn { - template _Sp, class _Proj = identity, + template _Sp, + class _Proj = identity, indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Ip operator()(_Ip __first, _Sp __last, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Ip + operator()(_Ip __first, _Sp __last, _Comp __comp = {}, _Proj __proj = {}) const { return ranges::__min_element_impl(__first, __last, __comp, __proj); } - template , _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Rp> operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Rp> + operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { return ranges::__min_element_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); } }; } // namespace __min_element inline namespace __cpo { - inline constexpr auto min_element = __min_element::__fn{}; +inline constexpr auto min_element = __min_element::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_MIN_ELEMENT_H diff --git a/include/c++/v1/__algorithm/ranges_minmax.h b/include/c++/v1/__algorithm/ranges_minmax.h index f82e0055..4e356e84 100644 --- a/include/c++/v1/__algorithm/ranges_minmax.h +++ b/include/c++/v1/__algorithm/ranges_minmax.h @@ -13,14 +13,21 @@ #include <__algorithm/minmax_element.h> #include <__assert> #include <__concepts/copyable.h> +#include <__concepts/same_as.h> #include <__config> #include <__functional/identity.h> #include <__functional/invoke.h> #include <__functional/ranges_operations.h> #include <__iterator/concepts.h> +#include <__iterator/next.h> #include <__iterator/projected.h> #include <__ranges/access.h> #include <__ranges/concepts.h> +#include <__type_traits/desugars_to.h> +#include <__type_traits/is_integral.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/is_trivially_copyable.h> +#include <__type_traits/remove_cvref.h> #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/pair.h> @@ -30,10 +37,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_PUSH_MACROS -#include <__undef_macros> +# include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD @@ -43,46 +50,81 @@ using minmax_result = min_max_result<_T1>; namespace __minmax { struct __fn { - template > _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr ranges::minmax_result - operator()(const _Type& __a, const _Type& __b, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr ranges::minmax_result + operator()(_LIBCPP_LIFETIMEBOUND const _Type& __a, + _LIBCPP_LIFETIMEBOUND const _Type& __b, + _Comp __comp = {}, + _Proj __proj = {}) const { if (std::invoke(__comp, std::invoke(__proj, __b), std::invoke(__proj, __a))) return {__b, __a}; return {__a, __b}; } - template > _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - ranges::minmax_result<_Type> operator()(initializer_list<_Type> __il, _Comp __comp = {}, _Proj __proj = {}) const { - _LIBCPP_ASSERT(__il.begin() != __il.end(), "initializer_list has to contain at least one element"); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr ranges::minmax_result<_Type> + operator()(initializer_list<_Type> __il, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __il.begin() != __il.end(), "initializer_list has to contain at least one element"); auto __iters = std::__minmax_element_impl(__il.begin(), __il.end(), __comp, __proj); - return ranges::minmax_result<_Type> { *__iters.first, *__iters.second }; + return ranges::minmax_result<_Type>{*__iters.first, *__iters.second}; } - template , _Proj>> _Comp = ranges::less> requires indirectly_copyable_storable, range_value_t<_Range>*> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - ranges::minmax_result> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { - auto __first = ranges::begin(__r); - auto __last = ranges::end(__r); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr ranges::minmax_result> + operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + auto __first = ranges::begin(__r); + auto __last = ranges::end(__r); using _ValueT = range_value_t<_Range>; - _LIBCPP_ASSERT(__first != __last, "range has to contain at least one element"); - - if constexpr (forward_range<_Range>) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__first != __last, "range has to contain at least one element"); + + // This optimiation is not in minmax_element because clang doesn't see through the pointers and as a result doesn't + // vectorize the code. + if constexpr (contiguous_range<_Range> && is_integral_v<_ValueT> && + __is_cheap_to_copy<_ValueT> & __is_identity<_Proj>::value && + __desugars_to_v<__less_tag, _Comp, _ValueT, _ValueT>) { + minmax_result<_ValueT> __result = {__r[0], __r[0]}; + for (auto __e : __r) { + if (__e < __result.min) + __result.min = __e; + if (__result.max < __e) + __result.max = __e; + } + return __result; + } else if constexpr (forward_range<_Range>) { + // Special-case the one element case. Avoid repeatedly initializing objects from the result of an iterator + // dereference when doing so might not be idempotent. The `if constexpr` avoids the extra branch in cases where + // it's not needed. + if constexpr (!same_as>, _ValueT> || + is_rvalue_reference_v>) { + if (ranges::next(__first) == __last) { + // During initialization, members are allowed to refer to already initialized members + // (see http://eel.is/c++draft/dcl.init.aggr#6) + minmax_result<_ValueT> __result = {*__first, __result.min}; + return __result; + } + } auto __result = std::__minmax_element_impl(__first, __last, __comp, __proj); return {*__result.first, *__result.second}; } else { // input_iterators can't be copied, so the implementation for input_iterators has to store // the values instead of a pointer to the correct values auto __less = [&](auto&& __a, auto&& __b) -> bool { - return std::invoke(__comp, std::invoke(__proj, std::forward(__a)), - std::invoke(__proj, std::forward(__b))); + return std::invoke(__comp, + std::invoke(__proj, std::forward(__a)), + std::invoke(__proj, std::forward(__b))); }; + // During initialization, members are allowed to refer to already initialized members + // (see http://eel.is/c++draft/dcl.init.aggr#6) ranges::minmax_result<_ValueT> __result = {*__first, __result.min}; if (__first == __last || ++__first == __last) return __result; @@ -121,7 +163,7 @@ struct __fn { } // namespace __minmax inline namespace __cpo { - inline constexpr auto minmax = __minmax::__fn{}; +inline constexpr auto minmax = __minmax::__fn{}; } // namespace __cpo } // namespace ranges @@ -129,6 +171,6 @@ _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___ALGORITHM_RANGES_MINMAX_H diff --git a/include/c++/v1/__algorithm/ranges_minmax_element.h b/include/c++/v1/__algorithm/ranges_minmax_element.h index 6699f962..4bf6d240 100644 --- a/include/c++/v1/__algorithm/ranges_minmax_element.h +++ b/include/c++/v1/__algorithm/ranges_minmax_element.h @@ -23,13 +23,15 @@ #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/pair.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -40,18 +42,20 @@ using minmax_element_result = min_max_result<_T1>; namespace __minmax_element { struct __fn { - template _Sp, class _Proj = identity, + template _Sp, + class _Proj = identity, indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - ranges::minmax_element_result<_Ip> operator()(_Ip __first, _Sp __last, _Comp __comp = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr ranges::minmax_element_result<_Ip> + operator()(_Ip __first, _Sp __last, _Comp __comp = {}, _Proj __proj = {}) const { auto __ret = std::__minmax_element_impl(std::move(__first), std::move(__last), __comp, __proj); return {__ret.first, __ret.second}; } - template , _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - ranges::minmax_element_result> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr ranges::minmax_element_result> operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { auto __ret = std::__minmax_element_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); return {__ret.first, __ret.second}; @@ -60,13 +64,15 @@ struct __fn { } // namespace __minmax_element inline namespace __cpo { - inline constexpr auto minmax_element = __minmax_element::__fn{}; +inline constexpr auto minmax_element = __minmax_element::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_MINMAX_H diff --git a/include/c++/v1/__algorithm/ranges_mismatch.h b/include/c++/v1/__algorithm/ranges_mismatch.h index 4fd05179..c4bf0022 100644 --- a/include/c++/v1/__algorithm/ranges_mismatch.h +++ b/include/c++/v1/__algorithm/ranges_mismatch.h @@ -10,6 +10,8 @@ #define _LIBCPP___ALGORITHM_RANGES_MISMATCH_H #include <__algorithm/in_in_result.h> +#include <__algorithm/mismatch.h> +#include <__algorithm/unwrap_range.h> #include <__config> #include <__functional/identity.h> #include <__functional/invoke.h> @@ -25,9 +27,12 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace ranges { @@ -36,50 +41,60 @@ using mismatch_result = in_in_result<_I1, _I2>; namespace __mismatch { struct __fn { - template - static _LIBCPP_HIDE_FROM_ABI constexpr - mismatch_result<_I1, _I2> - __go(_I1 __first1, _S1 __last1, _I2 __first2, _S2 __last2, - _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { - while (__first1 != __last1 && __first2 != __last2) { - if (!std::invoke(__pred, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__first2))) - break; - ++__first1; - ++__first2; + template + static _LIBCPP_HIDE_FROM_ABI constexpr mismatch_result<_I1, _I2> + __go(_I1 __first1, _S1 __last1, _I2 __first2, _S2 __last2, _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { + if constexpr (forward_iterator<_I1> && forward_iterator<_I2>) { + auto __range1 = std::__unwrap_range(__first1, __last1); + auto __range2 = std::__unwrap_range(__first2, __last2); + auto __res = + std::__mismatch(__range1.first, __range1.second, __range2.first, __range2.second, __pred, __proj1, __proj2); + return {std::__rewrap_range<_S1>(__first1, __res.first), std::__rewrap_range<_S2>(__first2, __res.second)}; + } else { + auto __res = std::__mismatch( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), __pred, __proj1, __proj2); + return {std::move(__res.first), std::move(__res.second)}; } - return {std::move(__first1), std::move(__first2)}; } - template _S1, - input_iterator _I2, sentinel_for<_I2> _S2, - class _Pred = ranges::equal_to, class _Proj1 = identity, class _Proj2 = identity> + template _S1, + input_iterator _I2, + sentinel_for<_I2> _S2, + class _Pred = ranges::equal_to, + class _Proj1 = identity, + class _Proj2 = identity> requires indirectly_comparable<_I1, _I2, _Pred, _Proj1, _Proj2> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - mismatch_result<_I1, _I2> operator()(_I1 __first1, _S1 __last1, _I2 __first2, _S2 __last2, - _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr mismatch_result<_I1, _I2> operator()( + _I1 __first1, _S1 __last1, _I2 __first2, _S2 __last2, _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) + const { return __go(std::move(__first1), __last1, std::move(__first2), __last2, __pred, __proj1, __proj2); } - template + template requires indirectly_comparable, iterator_t<_R2>, _Pred, _Proj1, _Proj2> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - mismatch_result, borrowed_iterator_t<_R2>> + [[nodiscard]] + _LIBCPP_HIDE_FROM_ABI constexpr mismatch_result, borrowed_iterator_t<_R2>> operator()(_R1&& __r1, _R2&& __r2, _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { - return __go(ranges::begin(__r1), ranges::end(__r1), ranges::begin(__r2), ranges::end(__r2), - __pred, __proj1, __proj2); + return __go( + ranges::begin(__r1), ranges::end(__r1), ranges::begin(__r2), ranges::end(__r2), __pred, __proj1, __proj2); } }; } // namespace __mismatch inline namespace __cpo { - constexpr inline auto mismatch = __mismatch::__fn{}; +constexpr inline auto mismatch = __mismatch::__fn{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_RANGES_MISMATCH_H diff --git a/include/c++/v1/__algorithm/ranges_move.h b/include/c++/v1/__algorithm/ranges_move.h index 46a0970f..be869f36 100644 --- a/include/c++/v1/__algorithm/ranges_move.h +++ b/include/c++/v1/__algorithm/ranges_move.h @@ -23,7 +23,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -34,38 +37,38 @@ using move_result = in_out_result<_InIter, _OutIter>; namespace __move { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr static - move_result<_InIter, _OutIter> __move_impl(_InIter __first, _Sent __last, _OutIter __result) { + _LIBCPP_HIDE_FROM_ABI constexpr static move_result<_InIter, _OutIter> + __move_impl(_InIter __first, _Sent __last, _OutIter __result) { auto __ret = std::__move<_RangeAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)); return {std::move(__ret.first), std::move(__ret.second)}; } template _Sent, weakly_incrementable _OutIter> requires indirectly_movable<_InIter, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - move_result<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr move_result<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result) const { return __move_impl(std::move(__first), std::move(__last), std::move(__result)); } template requires indirectly_movable, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - move_result, _OutIter> operator()(_Range&& __range, _OutIter __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr move_result, _OutIter> + operator()(_Range&& __range, _OutIter __result) const { return __move_impl(ranges::begin(__range), ranges::end(__range), std::move(__result)); } - }; } // namespace __move inline namespace __cpo { - inline constexpr auto move = __move::__fn{}; +inline constexpr auto move = __move::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_MOVE_H diff --git a/include/c++/v1/__algorithm/ranges_move_backward.h b/include/c++/v1/__algorithm/ranges_move_backward.h index d4e8eb1a..6d4071a3 100644 --- a/include/c++/v1/__algorithm/ranges_move_backward.h +++ b/include/c++/v1/__algorithm/ranges_move_backward.h @@ -25,7 +25,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -36,38 +39,38 @@ using move_backward_result = in_out_result<_InIter, _OutIter>; namespace __move_backward { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr static - move_backward_result<_InIter, _OutIter> __move_backward_impl(_InIter __first, _Sent __last, _OutIter __result) { + _LIBCPP_HIDE_FROM_ABI constexpr static move_backward_result<_InIter, _OutIter> + __move_backward_impl(_InIter __first, _Sent __last, _OutIter __result) { auto __ret = std::__move_backward<_RangeAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)); return {std::move(__ret.first), std::move(__ret.second)}; } template _Sent, bidirectional_iterator _OutIter> requires indirectly_movable<_InIter, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - move_backward_result<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr move_backward_result<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result) const { return __move_backward_impl(std::move(__first), std::move(__last), std::move(__result)); } template requires indirectly_movable, _Iter> - _LIBCPP_HIDE_FROM_ABI constexpr - move_backward_result, _Iter> operator()(_Range&& __range, _Iter __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr move_backward_result, _Iter> + operator()(_Range&& __range, _Iter __result) const { return __move_backward_impl(ranges::begin(__range), ranges::end(__range), std::move(__result)); } - }; } // namespace __move_backward inline namespace __cpo { - inline constexpr auto move_backward = __move_backward::__fn{}; +inline constexpr auto move_backward = __move_backward::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_MOVE_BACKWARD_H diff --git a/include/c++/v1/__algorithm/ranges_next_permutation.h b/include/c++/v1/__algorithm/ranges_next_permutation.h index 6c8e8e15..18535e0a 100644 --- a/include/c++/v1/__algorithm/ranges_next_permutation.h +++ b/include/c++/v1/__algorithm/ranges_next_permutation.h @@ -28,7 +28,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -68,6 +71,8 @@ constexpr inline auto next_permutation = __next_permutation::__fn{}; _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_NEXT_PERMUTATION_H diff --git a/include/c++/v1/__algorithm/ranges_none_of.h b/include/c++/v1/__algorithm/ranges_none_of.h index b39e570f..7df3c182 100644 --- a/include/c++/v1/__algorithm/ranges_none_of.h +++ b/include/c++/v1/__algorithm/ranges_none_of.h @@ -22,17 +22,19 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __none_of { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr static - bool __none_of_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static bool + __none_of_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { for (; __first != __last; ++__first) { if (std::invoke(__pred, std::invoke(__proj, *__first))) return false; @@ -40,29 +42,34 @@ struct __fn { return true; } - template _Sent, class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_unary_predicate> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Iter __first, _Sent __last, _Pred __pred = {}, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Iter __first, _Sent __last, _Pred __pred = {}, _Proj __proj = {}) const { return __none_of_impl(std::move(__first), std::move(__last), __pred, __proj); } - template , _Proj>> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - bool operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { return __none_of_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); } }; } // namespace __none_of inline namespace __cpo { - inline constexpr auto none_of = __none_of::__fn{}; +inline constexpr auto none_of = __none_of::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_NONE_OF_H diff --git a/include/c++/v1/__algorithm/ranges_nth_element.h b/include/c++/v1/__algorithm/ranges_nth_element.h index d9ec4f13..90ade9ef 100644 --- a/include/c++/v1/__algorithm/ranges_nth_element.h +++ b/include/c++/v1/__algorithm/ranges_nth_element.h @@ -31,7 +31,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -40,8 +43,8 @@ namespace __nth_element { struct __fn { template - _LIBCPP_HIDE_FROM_ABI constexpr static - _Iter __nth_element_fn_impl(_Iter __first, _Iter __nth, _Sent __last, _Comp& __comp, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter + __nth_element_fn_impl(_Iter __first, _Iter __nth, _Sent __last, _Comp& __comp, _Proj& __proj) { auto __last_iter = ranges::next(__first, __last); auto&& __projected_comp = std::__make_projected(__comp, __proj); @@ -52,16 +55,15 @@ struct __fn { template _Sent, class _Comp = ranges::less, class _Proj = identity> requires sortable<_Iter, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Iter __nth, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Iter __nth, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return __nth_element_fn_impl(std::move(__first), std::move(__nth), std::move(__last), __comp, __proj); } template requires sortable, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __r, iterator_t<_Range> __nth, _Comp __comp = {}, - _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __r, iterator_t<_Range> __nth, _Comp __comp = {}, _Proj __proj = {}) const { return __nth_element_fn_impl(ranges::begin(__r), std::move(__nth), ranges::end(__r), __comp, __proj); } }; @@ -69,12 +71,14 @@ struct __fn { } // namespace __nth_element inline namespace __cpo { - inline constexpr auto nth_element = __nth_element::__fn{}; +inline constexpr auto nth_element = __nth_element::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_NTH_ELEMENT_H diff --git a/include/c++/v1/__algorithm/ranges_partial_sort.h b/include/c++/v1/__algorithm/ranges_partial_sort.h index 3ea0a7fb..c67247d2 100644 --- a/include/c++/v1/__algorithm/ranges_partial_sort.h +++ b/include/c++/v1/__algorithm/ranges_partial_sort.h @@ -33,7 +33,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -42,24 +45,23 @@ namespace __partial_sort { struct __fn { template - _LIBCPP_HIDE_FROM_ABI constexpr static - _Iter __partial_sort_fn_impl(_Iter __first, _Iter __middle, _Sent __last, _Comp& __comp, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter + __partial_sort_fn_impl(_Iter __first, _Iter __middle, _Sent __last, _Comp& __comp, _Proj& __proj) { auto&& __projected_comp = std::__make_projected(__comp, __proj); return std::__partial_sort<_RangeAlgPolicy>(std::move(__first), std::move(__middle), __last, __projected_comp); } template _Sent, class _Comp = ranges::less, class _Proj = identity> requires sortable<_Iter, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Iter __middle, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Iter __middle, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return __partial_sort_fn_impl(std::move(__first), std::move(__middle), std::move(__last), __comp, __proj); } template requires sortable, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __r, iterator_t<_Range> __middle, _Comp __comp = {}, - _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __r, iterator_t<_Range> __middle, _Comp __comp = {}, _Proj __proj = {}) const { return __partial_sort_fn_impl(ranges::begin(__r), std::move(__middle), ranges::end(__r), __comp, __proj); } }; @@ -67,12 +69,14 @@ struct __fn { } // namespace __partial_sort inline namespace __cpo { - inline constexpr auto partial_sort = __partial_sort::__fn{}; +inline constexpr auto partial_sort = __partial_sort::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_PARTIAL_SORT_H diff --git a/include/c++/v1/__algorithm/ranges_partial_sort_copy.h b/include/c++/v1/__algorithm/ranges_partial_sort_copy.h index 212db555..b3bdeb78 100644 --- a/include/c++/v1/__algorithm/ranges_partial_sort_copy.h +++ b/include/c++/v1/__algorithm/ranges_partial_sort_copy.h @@ -30,7 +30,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -42,51 +45,70 @@ using partial_sort_copy_result = in_out_result<_InIter, _OutIter>; namespace __partial_sort_copy { struct __fn { - - template _Sent1, - random_access_iterator _Iter2, sentinel_for<_Iter2> _Sent2, - class _Comp = ranges::less, class _Proj1 = identity, class _Proj2 = identity> - requires indirectly_copyable<_Iter1, _Iter2> && sortable<_Iter2, _Comp, _Proj2> && - indirect_strict_weak_order<_Comp, projected<_Iter1, _Proj1>, projected<_Iter2, _Proj2>> - _LIBCPP_HIDE_FROM_ABI constexpr - partial_sort_copy_result<_Iter1, _Iter2> - operator()(_Iter1 __first, _Sent1 __last, _Iter2 __result_first, _Sent2 __result_last, - _Comp __comp = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + template _Sent1, + random_access_iterator _Iter2, + sentinel_for<_Iter2> _Sent2, + class _Comp = ranges::less, + class _Proj1 = identity, + class _Proj2 = identity> + requires indirectly_copyable<_Iter1, _Iter2> && sortable<_Iter2, _Comp, _Proj2> && + indirect_strict_weak_order<_Comp, projected<_Iter1, _Proj1>, projected<_Iter2, _Proj2>> + _LIBCPP_HIDE_FROM_ABI constexpr partial_sort_copy_result<_Iter1, _Iter2> operator()( + _Iter1 __first, + _Sent1 __last, + _Iter2 __result_first, + _Sent2 __result_last, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { auto __result = std::__partial_sort_copy<_RangeAlgPolicy>( - std::move(__first), std::move(__last), std::move(__result_first), std::move(__result_last), - __comp, __proj1, __proj2 - ); + std::move(__first), + std::move(__last), + std::move(__result_first), + std::move(__result_last), + __comp, + __proj1, + __proj2); return {std::move(__result.first), std::move(__result.second)}; } - template - requires indirectly_copyable, iterator_t<_Range2>> && - sortable, _Comp, _Proj2> && - indirect_strict_weak_order<_Comp, projected, _Proj1>, - projected, _Proj2>> - _LIBCPP_HIDE_FROM_ABI constexpr - partial_sort_copy_result, borrowed_iterator_t<_Range2>> - operator()(_Range1&& __range, _Range2&& __result_range, _Comp __comp = {}, - _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + template + requires indirectly_copyable, iterator_t<_Range2>> && + sortable, _Comp, _Proj2> && + indirect_strict_weak_order<_Comp, + projected, _Proj1>, + projected, _Proj2>> + _LIBCPP_HIDE_FROM_ABI constexpr partial_sort_copy_result, borrowed_iterator_t<_Range2>> + operator()( + _Range1&& __range, _Range2&& __result_range, _Comp __comp = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { auto __result = std::__partial_sort_copy<_RangeAlgPolicy>( - ranges::begin(__range), ranges::end(__range), ranges::begin(__result_range), ranges::end(__result_range), - __comp, __proj1, __proj2 - ); + ranges::begin(__range), + ranges::end(__range), + ranges::begin(__result_range), + ranges::end(__result_range), + __comp, + __proj1, + __proj2); return {std::move(__result.first), std::move(__result.second)}; } - }; } // namespace __partial_sort_copy inline namespace __cpo { - inline constexpr auto partial_sort_copy = __partial_sort_copy::__fn{}; +inline constexpr auto partial_sort_copy = __partial_sort_copy::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_PARTIAL_SORT_COPY_H diff --git a/include/c++/v1/__algorithm/ranges_partition.h b/include/c++/v1/__algorithm/ranges_partition.h index 8b3aae5c..a67ac4c9 100644 --- a/include/c++/v1/__algorithm/ranges_partition.h +++ b/include/c++/v1/__algorithm/ranges_partition.h @@ -27,13 +27,15 @@ #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/pair.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -41,43 +43,46 @@ namespace ranges { namespace __partition { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI static constexpr - subrange<__remove_cvref_t<_Iter>> __partition_fn_impl(_Iter&& __first, _Sent&& __last, _Pred&& __pred, _Proj&& __proj) { + _LIBCPP_HIDE_FROM_ABI static constexpr subrange<__remove_cvref_t<_Iter>> + __partition_fn_impl(_Iter&& __first, _Sent&& __last, _Pred&& __pred, _Proj&& __proj) { auto&& __projected_pred = std::__make_projected(__pred, __proj); - auto __result = std::__partition<_RangeAlgPolicy>( + auto __result = std::__partition<_RangeAlgPolicy>( std::move(__first), std::move(__last), __projected_pred, __iterator_concept<_Iter>()); return {std::move(__result.first), std::move(__result.second)}; } - template _Sent, class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_unary_predicate> _Pred> - _LIBCPP_HIDE_FROM_ABI constexpr - subrange<_Iter> operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> + operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { return __partition_fn_impl(__first, __last, __pred, __proj); } - template , _Proj>> _Pred> - requires permutable> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_subrange_t<_Range> operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + requires permutable> + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> + operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { return __partition_fn_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); } - }; } // namespace __partition inline namespace __cpo { - inline constexpr auto partition = __partition::__fn{}; +inline constexpr auto partition = __partition::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_PARTITION_H diff --git a/include/c++/v1/__algorithm/ranges_partition_copy.h b/include/c++/v1/__algorithm/ranges_partition_copy.h index e7a9a347..d60c865d 100644 --- a/include/c++/v1/__algorithm/ranges_partition_copy.h +++ b/include/c++/v1/__algorithm/ranges_partition_copy.h @@ -19,14 +19,17 @@ #include <__ranges/access.h> #include <__ranges/concepts.h> #include <__ranges/dangling.h> +#include <__type_traits/remove_cvref.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -38,14 +41,18 @@ using partition_copy_result = in_out_out_result<_InIter, _OutIter1, _OutIter2>; namespace __partition_copy { struct __fn { - // TODO(ranges): delegate to the classic algorithm. template - _LIBCPP_HIDE_FROM_ABI constexpr - static partition_copy_result< - __remove_cvref_t<_InIter>, __remove_cvref_t<_OutIter1>, __remove_cvref_t<_OutIter2> - > __partition_copy_fn_impl( _InIter&& __first, _Sent&& __last, _OutIter1&& __out_true, _OutIter2&& __out_false, - _Pred& __pred, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static partition_copy_result<__remove_cvref_t<_InIter>, + __remove_cvref_t<_OutIter1>, + __remove_cvref_t<_OutIter2> > + __partition_copy_fn_impl( + _InIter&& __first, + _Sent&& __last, + _OutIter1&& __out_true, + _OutIter2&& __out_false, + _Pred& __pred, + _Proj& __proj) { for (; __first != __last; ++__first) { if (std::invoke(__pred, std::invoke(__proj, *__first))) { *__out_true = *__first; @@ -60,39 +67,44 @@ struct __fn { return {std::move(__first), std::move(__out_true), std::move(__out_false)}; } - template _Sent, - weakly_incrementable _OutIter1, weakly_incrementable _OutIter2, - class _Proj = identity, indirect_unary_predicate> _Pred> - requires indirectly_copyable<_InIter, _OutIter1> && indirectly_copyable<_InIter, _OutIter2> - _LIBCPP_HIDE_FROM_ABI constexpr - partition_copy_result<_InIter, _OutIter1, _OutIter2> - operator()(_InIter __first, _Sent __last, _OutIter1 __out_true, _OutIter2 __out_false, - _Pred __pred, _Proj __proj = {}) const { + template _Sent, + weakly_incrementable _OutIter1, + weakly_incrementable _OutIter2, + class _Proj = identity, + indirect_unary_predicate> _Pred> + requires indirectly_copyable<_InIter, _OutIter1> && indirectly_copyable<_InIter, _OutIter2> + _LIBCPP_HIDE_FROM_ABI constexpr partition_copy_result<_InIter, _OutIter1, _OutIter2> operator()( + _InIter __first, _Sent __last, _OutIter1 __out_true, _OutIter2 __out_false, _Pred __pred, _Proj __proj = {}) + const { return __partition_copy_fn_impl( std::move(__first), std::move(__last), std::move(__out_true), std::move(__out_false), __pred, __proj); } - template , _Proj>> _Pred> - requires indirectly_copyable, _OutIter1> && indirectly_copyable, _OutIter2> - _LIBCPP_HIDE_FROM_ABI constexpr - partition_copy_result, _OutIter1, _OutIter2> + template , _Proj>> _Pred> + requires indirectly_copyable, _OutIter1> && indirectly_copyable, _OutIter2> + _LIBCPP_HIDE_FROM_ABI constexpr partition_copy_result, _OutIter1, _OutIter2> operator()(_Range&& __range, _OutIter1 __out_true, _OutIter2 __out_false, _Pred __pred, _Proj __proj = {}) const { return __partition_copy_fn_impl( ranges::begin(__range), ranges::end(__range), std::move(__out_true), std::move(__out_false), __pred, __proj); } - }; } // namespace __partition_copy inline namespace __cpo { - inline constexpr auto partition_copy = __partition_copy::__fn{}; +inline constexpr auto partition_copy = __partition_copy::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_PARTITION_COPY_H diff --git a/include/c++/v1/__algorithm/ranges_partition_point.h b/include/c++/v1/__algorithm/ranges_partition_point.h index 2bd118d4..c5b11b5f 100644 --- a/include/c++/v1/__algorithm/ranges_partition_point.h +++ b/include/c++/v1/__algorithm/ranges_partition_point.h @@ -27,7 +27,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -35,16 +38,15 @@ namespace ranges { namespace __partition_point { struct __fn { - // TODO(ranges): delegate to the classic algorithm. template - _LIBCPP_HIDE_FROM_ABI constexpr - static _Iter __partition_point_fn_impl(_Iter&& __first, _Sent&& __last, _Pred& __pred, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter + __partition_point_fn_impl(_Iter&& __first, _Sent&& __last, _Pred& __pred, _Proj& __proj) { auto __len = ranges::distance(__first, __last); while (__len != 0) { auto __half_len = std::__half_positive(__len); - auto __mid = ranges::next(__first, __half_len); + auto __mid = ranges::next(__first, __half_len); if (std::invoke(__pred, std::invoke(__proj, *__mid))) { __first = ++__mid; @@ -58,31 +60,34 @@ struct __fn { return __first; } - template _Sent, class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_unary_predicate> _Pred> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { return __partition_point_fn_impl(std::move(__first), std::move(__last), __pred, __proj); } - template , _Proj>> _Pred> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { return __partition_point_fn_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); } - }; } // namespace __partition_point inline namespace __cpo { - inline constexpr auto partition_point = __partition_point::__fn{}; +inline constexpr auto partition_point = __partition_point::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_PARTITION_POINT_H diff --git a/include/c++/v1/__algorithm/ranges_pop_heap.h b/include/c++/v1/__algorithm/ranges_pop_heap.h index 65beec88..01f92c0f 100644 --- a/include/c++/v1/__algorithm/ranges_pop_heap.h +++ b/include/c++/v1/__algorithm/ranges_pop_heap.h @@ -32,7 +32,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -41,10 +44,10 @@ namespace __pop_heap { struct __fn { template - _LIBCPP_HIDE_FROM_ABI constexpr static - _Iter __pop_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter + __pop_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { auto __last_iter = ranges::next(__first, __last); - auto __len = __last_iter - __first; + auto __len = __last_iter - __first; auto&& __projected_comp = std::__make_projected(__comp, __proj); std::__pop_heap<_RangeAlgPolicy>(std::move(__first), __last_iter, __projected_comp, __len); @@ -54,15 +57,15 @@ struct __fn { template _Sent, class _Comp = ranges::less, class _Proj = identity> requires sortable<_Iter, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return __pop_heap_fn_impl(std::move(__first), std::move(__last), __comp, __proj); } template requires sortable, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { return __pop_heap_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); } }; @@ -70,12 +73,14 @@ struct __fn { } // namespace __pop_heap inline namespace __cpo { - inline constexpr auto pop_heap = __pop_heap::__fn{}; +inline constexpr auto pop_heap = __pop_heap::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_POP_HEAP_H diff --git a/include/c++/v1/__algorithm/ranges_prev_permutation.h b/include/c++/v1/__algorithm/ranges_prev_permutation.h index 6866d90c..225cee9b 100644 --- a/include/c++/v1/__algorithm/ranges_prev_permutation.h +++ b/include/c++/v1/__algorithm/ranges_prev_permutation.h @@ -28,7 +28,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -40,9 +43,7 @@ using prev_permutation_result = in_found_result<_InIter>; namespace __prev_permutation { struct __fn { - - template _Sent, - class _Comp = ranges::less, class _Proj = identity> + template _Sent, class _Comp = ranges::less, class _Proj = identity> requires sortable<_Iter, _Comp, _Proj> _LIBCPP_HIDE_FROM_ABI constexpr prev_permutation_result<_Iter> operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { @@ -51,8 +52,7 @@ struct __fn { return {std::move(__result.first), std::move(__result.second)}; } - template + template requires sortable, _Comp, _Proj> _LIBCPP_HIDE_FROM_ABI constexpr prev_permutation_result> operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { @@ -60,7 +60,6 @@ struct __fn { ranges::begin(__range), ranges::end(__range), std::__make_projected(__comp, __proj)); return {std::move(__result.first), std::move(__result.second)}; } - }; } // namespace __prev_permutation @@ -72,6 +71,8 @@ constexpr inline auto prev_permutation = __prev_permutation::__fn{}; _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_PREV_PERMUTATION_H diff --git a/include/c++/v1/__algorithm/ranges_push_heap.h b/include/c++/v1/__algorithm/ranges_push_heap.h index a1f43474..9d187af3 100644 --- a/include/c++/v1/__algorithm/ranges_push_heap.h +++ b/include/c++/v1/__algorithm/ranges_push_heap.h @@ -32,7 +32,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -41,8 +44,8 @@ namespace __push_heap { struct __fn { template - _LIBCPP_HIDE_FROM_ABI constexpr static - _Iter __push_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter + __push_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { auto __last_iter = ranges::next(__first, __last); auto&& __projected_comp = std::__make_projected(__comp, __proj); @@ -53,15 +56,15 @@ struct __fn { template _Sent, class _Comp = ranges::less, class _Proj = identity> requires sortable<_Iter, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return __push_heap_fn_impl(std::move(__first), std::move(__last), __comp, __proj); } template requires sortable, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { return __push_heap_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); } }; @@ -69,12 +72,14 @@ struct __fn { } // namespace __push_heap inline namespace __cpo { - inline constexpr auto push_heap = __push_heap::__fn{}; +inline constexpr auto push_heap = __push_heap::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_PUSH_HEAP_H diff --git a/include/c++/v1/__algorithm/ranges_remove.h b/include/c++/v1/__algorithm/ranges_remove.h index dd5c5fb4..17c3a2c5 100644 --- a/include/c++/v1/__algorithm/ranges_remove.h +++ b/include/c++/v1/__algorithm/ranges_remove.h @@ -25,40 +25,44 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __remove { struct __fn { - template _Sent, class _Type, class _Proj = identity> requires indirect_binary_predicate, const _Type*> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - subrange<_Iter> operator()(_Iter __first, _Sent __last, const _Type& __value, _Proj __proj = {}) const { - auto __pred = [&](auto&& __other) { return __value == __other; }; + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> + operator()(_Iter __first, _Sent __last, const _Type& __value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __other) -> bool { return __value == __other; }; return ranges::__remove_if_impl(std::move(__first), std::move(__last), __pred, __proj); } template - requires permutable> - && indirect_binary_predicate, _Proj>, const _Type*> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_subrange_t<_Range> operator()(_Range&& __range, const _Type& __value, _Proj __proj = {}) const { - auto __pred = [&](auto&& __other) { return __value == __other; }; + requires permutable> && + indirect_binary_predicate, _Proj>, const _Type*> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> + operator()(_Range&& __range, const _Type& __value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __other) -> bool { return __value == __other; }; return ranges::__remove_if_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); } }; } // namespace __remove inline namespace __cpo { - inline constexpr auto remove = __remove::__fn{}; +inline constexpr auto remove = __remove::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_REMOVE_H diff --git a/include/c++/v1/__algorithm/ranges_remove_copy.h b/include/c++/v1/__algorithm/ranges_remove_copy.h index 21022286..84529ece 100644 --- a/include/c++/v1/__algorithm/ranges_remove_copy.h +++ b/include/c++/v1/__algorithm/ranges_remove_copy.h @@ -26,7 +26,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -37,40 +40,42 @@ using remove_copy_result = in_out_result<_InIter, _OutIter>; namespace __remove_copy { - struct __fn { - template _Sent, - weakly_incrementable _OutIter, - class _Type, - class _Proj = identity> - requires indirectly_copyable<_InIter, _OutIter> && - indirect_binary_predicate, const _Type*> - _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_result<_InIter, _OutIter> - operator()(_InIter __first, _Sent __last, _OutIter __result, const _Type& __value, _Proj __proj = {}) const { - auto __pred = [&](auto&& __val) { return __value == __val; }; - return ranges::__remove_copy_if_impl(std::move(__first), std::move(__last), std::move(__result), __pred, __proj); - } - - template - requires indirectly_copyable, _OutIter> && - indirect_binary_predicate, _Proj>, const _Type*> - _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_result, _OutIter> - operator()(_Range&& __range, _OutIter __result, const _Type& __value, _Proj __proj = {}) const { - auto __pred = [&](auto&& __val) { return __value == __val; }; - return ranges::__remove_copy_if_impl( - ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __proj); - } - }; +struct __fn { + template _Sent, + weakly_incrementable _OutIter, + class _Type, + class _Proj = identity> + requires indirectly_copyable<_InIter, _OutIter> && + indirect_binary_predicate, const _Type*> + _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_result<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result, const _Type& __value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __val) -> bool { return __value == __val; }; + return ranges::__remove_copy_if_impl(std::move(__first), std::move(__last), std::move(__result), __pred, __proj); + } + + template + requires indirectly_copyable, _OutIter> && + indirect_binary_predicate, _Proj>, const _Type*> + _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_result, _OutIter> + operator()(_Range&& __range, _OutIter __result, const _Type& __value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __val) -> bool { return __value == __val; }; + return ranges::__remove_copy_if_impl( + ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __proj); + } +}; } // namespace __remove_copy inline namespace __cpo { - inline constexpr auto remove_copy = __remove_copy::__fn{}; +inline constexpr auto remove_copy = __remove_copy::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_REMOVE_COPY_H diff --git a/include/c++/v1/__algorithm/ranges_remove_copy_if.h b/include/c++/v1/__algorithm/ranges_remove_copy_if.h index 4fc67454..56fe0175 100644 --- a/include/c++/v1/__algorithm/ranges_remove_copy_if.h +++ b/include/c++/v1/__algorithm/ranges_remove_copy_if.h @@ -29,7 +29,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -52,39 +55,41 @@ __remove_copy_if_impl(_InIter __first, _Sent __last, _OutIter __result, _Pred& _ namespace __remove_copy_if { - struct __fn { - template _Sent, - weakly_incrementable _OutIter, - class _Proj = identity, - indirect_unary_predicate> _Pred> - requires indirectly_copyable<_InIter, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_if_result<_InIter, _OutIter> - operator()(_InIter __first, _Sent __last, _OutIter __result, _Pred __pred, _Proj __proj = {}) const { - return ranges::__remove_copy_if_impl(std::move(__first), std::move(__last), std::move(__result), __pred, __proj); - } +struct __fn { + template _Sent, + weakly_incrementable _OutIter, + class _Proj = identity, + indirect_unary_predicate> _Pred> + requires indirectly_copyable<_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_if_result<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result, _Pred __pred, _Proj __proj = {}) const { + return ranges::__remove_copy_if_impl(std::move(__first), std::move(__last), std::move(__result), __pred, __proj); + } - template , _Proj>> _Pred> - requires indirectly_copyable, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_if_result, _OutIter> - operator()(_Range&& __range, _OutIter __result, _Pred __pred, _Proj __proj = {}) const { - return ranges::__remove_copy_if_impl( - ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __proj); - } - }; + template , _Proj>> _Pred> + requires indirectly_copyable, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_if_result, _OutIter> + operator()(_Range&& __range, _OutIter __result, _Pred __pred, _Proj __proj = {}) const { + return ranges::__remove_copy_if_impl( + ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __proj); + } +}; } // namespace __remove_copy_if inline namespace __cpo { - inline constexpr auto remove_copy_if = __remove_copy_if::__fn{}; +inline constexpr auto remove_copy_if = __remove_copy_if::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_REMOVE_COPY_IF_H diff --git a/include/c++/v1/__algorithm/ranges_remove_if.h b/include/c++/v1/__algorithm/ranges_remove_if.h index 1f17467f..0ea5d9a0 100644 --- a/include/c++/v1/__algorithm/ranges_remove_if.h +++ b/include/c++/v1/__algorithm/ranges_remove_if.h @@ -27,15 +27,18 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { template -_LIBCPP_HIDE_FROM_ABI constexpr -subrange<_Iter> __remove_if_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { +_LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> +__remove_if_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { auto __new_end = ranges::__find_if_impl(__first, __last, __pred, __proj); if (__new_end == __last) return {__new_end, __new_end}; @@ -52,12 +55,12 @@ subrange<_Iter> __remove_if_impl(_Iter __first, _Sent __last, _Pred& __pred, _Pr namespace __remove_if { struct __fn { - - template _Sent, + template _Sent, class _Proj = identity, indirect_unary_predicate> _Pred> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - subrange<_Iter> operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> + operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { return ranges::__remove_if_impl(std::move(__first), std::move(__last), __pred, __proj); } @@ -65,21 +68,22 @@ struct __fn { class _Proj = identity, indirect_unary_predicate, _Proj>> _Pred> requires permutable> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_subrange_t<_Range> operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> + operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { return ranges::__remove_if_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); } - }; } // namespace __remove_if inline namespace __cpo { - inline constexpr auto remove_if = __remove_if::__fn{}; +inline constexpr auto remove_if = __remove_if::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_REMOVE_IF_H diff --git a/include/c++/v1/__algorithm/ranges_replace.h b/include/c++/v1/__algorithm/ranges_replace.h index 8b12beac..2b88dc03 100644 --- a/include/c++/v1/__algorithm/ranges_replace.h +++ b/include/c++/v1/__algorithm/ranges_replace.h @@ -24,51 +24,45 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __replace { struct __fn { - - template _Sent, - class _Type1, - class _Type2, - class _Proj = identity> - requires indirectly_writable<_Iter, const _Type2&> - && indirect_binary_predicate, const _Type1*> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, - const _Type1& __old_value, - const _Type2& __new_value, - _Proj __proj = {}) const { - auto __pred = [&](const auto& __val) { return __val == __old_value; }; + template _Sent, class _Type1, class _Type2, class _Proj = identity> + requires indirectly_writable<_Iter, const _Type2&> && + indirect_binary_predicate, const _Type1*> + _LIBCPP_HIDE_FROM_ABI constexpr _Iter operator()( + _Iter __first, _Sent __last, const _Type1& __old_value, const _Type2& __new_value, _Proj __proj = {}) const { + auto __pred = [&](const auto& __val) -> bool { return __val == __old_value; }; return ranges::__replace_if_impl(std::move(__first), std::move(__last), __pred, __new_value, __proj); } - template - requires indirectly_writable, const _Type2&> - && indirect_binary_predicate, _Proj>, const _Type1*> + template + requires indirectly_writable, const _Type2&> && + indirect_binary_predicate, _Proj>, const _Type1*> _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> operator()(_Range&& __range, const _Type1& __old_value, const _Type2& __new_value, _Proj __proj = {}) const { - auto __pred = [&](auto&& __val) { return __val == __old_value; }; + auto __pred = [&](auto&& __val) -> bool { return __val == __old_value; }; return ranges::__replace_if_impl(ranges::begin(__range), ranges::end(__range), __pred, __new_value, __proj); } - }; } // namespace __replace inline namespace __cpo { - inline constexpr auto replace = __replace::__fn{}; +inline constexpr auto replace = __replace::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_REPLACE_H diff --git a/include/c++/v1/__algorithm/ranges_replace_copy.h b/include/c++/v1/__algorithm/ranges_replace_copy.h index f87a236f..633f993e 100644 --- a/include/c++/v1/__algorithm/ranges_replace_copy.h +++ b/include/c++/v1/__algorithm/ranges_replace_copy.h @@ -26,7 +26,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -37,55 +40,54 @@ using replace_copy_result = in_out_result<_InIter, _OutIter>; namespace __replace_copy { - struct __fn { - template _Sent, - class _OldType, - class _NewType, - output_iterator _OutIter, - class _Proj = identity> - requires indirectly_copyable<_InIter, _OutIter> && - indirect_binary_predicate, const _OldType*> - _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_result<_InIter, _OutIter> - operator()(_InIter __first, - _Sent __last, - _OutIter __result, - const _OldType& __old_value, - const _NewType& __new_value, - _Proj __proj = {}) const { - auto __pred = [&](const auto& __value) { return __value == __old_value; }; - return ranges::__replace_copy_if_impl( - std::move(__first), std::move(__last), std::move(__result), __pred, __new_value, __proj); - } - - template _OutIter, - class _Proj = identity> - requires indirectly_copyable, _OutIter> && - indirect_binary_predicate, _Proj>, const _OldType*> - _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_result, _OutIter> - operator()(_Range&& __range, - _OutIter __result, - const _OldType& __old_value, - const _NewType& __new_value, - _Proj __proj = {}) const { - auto __pred = [&](const auto& __value) { return __value == __old_value; }; - return ranges::__replace_copy_if_impl( - ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __new_value, __proj); - } - }; +struct __fn { + template _Sent, + class _OldType, + class _NewType, + output_iterator _OutIter, + class _Proj = identity> + requires indirectly_copyable<_InIter, _OutIter> && + indirect_binary_predicate, const _OldType*> + _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_result<_InIter, _OutIter> + operator()(_InIter __first, + _Sent __last, + _OutIter __result, + const _OldType& __old_value, + const _NewType& __new_value, + _Proj __proj = {}) const { + auto __pred = [&](const auto& __value) -> bool { return __value == __old_value; }; + return ranges::__replace_copy_if_impl( + std::move(__first), std::move(__last), std::move(__result), __pred, __new_value, __proj); + } + + template _OutIter, + class _Proj = identity> + requires indirectly_copyable, _OutIter> && + indirect_binary_predicate, _Proj>, const _OldType*> + _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_result, _OutIter> operator()( + _Range&& __range, _OutIter __result, const _OldType& __old_value, const _NewType& __new_value, _Proj __proj = {}) + const { + auto __pred = [&](const auto& __value) -> bool { return __value == __old_value; }; + return ranges::__replace_copy_if_impl( + ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __new_value, __proj); + } +}; } // namespace __replace_copy inline namespace __cpo { - inline constexpr auto replace_copy = __replace_copy::__fn{}; +inline constexpr auto replace_copy = __replace_copy::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_REPLACE_COPY_H diff --git a/include/c++/v1/__algorithm/ranges_replace_copy_if.h b/include/c++/v1/__algorithm/ranges_replace_copy_if.h index b8741ec7..e065c3ac 100644 --- a/include/c++/v1/__algorithm/ranges_replace_copy_if.h +++ b/include/c++/v1/__algorithm/ranges_replace_copy_if.h @@ -24,7 +24,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -51,43 +54,45 @@ _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_if_result<_InIter, _OutIter> __repl namespace __replace_copy_if { - struct __fn { - template _Sent, - class _Type, - output_iterator _OutIter, - class _Proj = identity, - indirect_unary_predicate> _Pred> - requires indirectly_copyable<_InIter, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_if_result<_InIter, _OutIter> operator()( - _InIter __first, _Sent __last, _OutIter __result, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) - const { - return ranges::__replace_copy_if_impl( - std::move(__first), std::move(__last), std::move(__result), __pred, __new_value, __proj); - } - - template _OutIter, - class _Proj = identity, - indirect_unary_predicate, _Proj>> _Pred> - requires indirectly_copyable, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_if_result, _OutIter> - operator()(_Range&& __range, _OutIter __result, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) const { - return ranges::__replace_copy_if_impl( - ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __new_value, __proj); - } - }; +struct __fn { + template _Sent, + class _Type, + output_iterator _OutIter, + class _Proj = identity, + indirect_unary_predicate> _Pred> + requires indirectly_copyable<_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_if_result<_InIter, _OutIter> operator()( + _InIter __first, _Sent __last, _OutIter __result, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) + const { + return ranges::__replace_copy_if_impl( + std::move(__first), std::move(__last), std::move(__result), __pred, __new_value, __proj); + } + + template _OutIter, + class _Proj = identity, + indirect_unary_predicate, _Proj>> _Pred> + requires indirectly_copyable, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_if_result, _OutIter> + operator()(_Range&& __range, _OutIter __result, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) const { + return ranges::__replace_copy_if_impl( + ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __new_value, __proj); + } +}; } // namespace __replace_copy_if inline namespace __cpo { - inline constexpr auto replace_copy_if = __replace_copy_if::__fn{}; +inline constexpr auto replace_copy_if = __replace_copy_if::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_REPLACE_COPY_IF_H diff --git a/include/c++/v1/__algorithm/ranges_replace_if.h b/include/c++/v1/__algorithm/ranges_replace_if.h index 65be3c7d..6445f42a 100644 --- a/include/c++/v1/__algorithm/ranges_replace_if.h +++ b/include/c++/v1/__algorithm/ranges_replace_if.h @@ -23,15 +23,18 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { template -_LIBCPP_HIDE_FROM_ABI constexpr -_Iter __replace_if_impl(_Iter __first, _Sent __last, _Pred& __pred, const _Type& __new_value, _Proj& __proj) { +_LIBCPP_HIDE_FROM_ABI constexpr _Iter +__replace_if_impl(_Iter __first, _Sent __last, _Pred& __pred, const _Type& __new_value, _Proj& __proj) { for (; __first != __last; ++__first) { if (std::invoke(__pred, std::invoke(__proj, *__first))) *__first = __new_value; @@ -41,14 +44,14 @@ _Iter __replace_if_impl(_Iter __first, _Sent __last, _Pred& __pred, const _Type& namespace __replace_if { struct __fn { - - template _Sent, + template _Sent, class _Type, class _Proj = identity, indirect_unary_predicate> _Pred> requires indirectly_writable<_Iter, const _Type&> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) const { return ranges::__replace_if_impl(std::move(__first), std::move(__last), __pred, __new_value, __proj); } @@ -61,17 +64,18 @@ struct __fn { operator()(_Range&& __range, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) const { return ranges::__replace_if_impl(ranges::begin(__range), ranges::end(__range), __pred, __new_value, __proj); } - }; } // namespace __replace_if inline namespace __cpo { - inline constexpr auto replace_if = __replace_if::__fn{}; +inline constexpr auto replace_if = __replace_if::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_REPLACE_IF_H diff --git a/include/c++/v1/__algorithm/ranges_reverse.h b/include/c++/v1/__algorithm/ranges_reverse.h index e2a5d9a8..9ec86599 100644 --- a/include/c++/v1/__algorithm/ranges_reverse.h +++ b/include/c++/v1/__algorithm/ranges_reverse.h @@ -22,18 +22,16 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __reverse { struct __fn { - template _Sent> requires permutable<_Iter> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter operator()(_Iter __first, _Sent __last) const { if constexpr (random_access_iterator<_Iter>) { if (__first == __last) return __first; @@ -63,21 +61,19 @@ struct __fn { template requires permutable> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __range) const { + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> operator()(_Range&& __range) const { return (*this)(ranges::begin(__range), ranges::end(__range)); } - }; } // namespace __reverse inline namespace __cpo { - inline constexpr auto reverse = __reverse::__fn{}; +inline constexpr auto reverse = __reverse::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___ALGORITHM_RANGES_REVERSE_H diff --git a/include/c++/v1/__algorithm/ranges_reverse_copy.h b/include/c++/v1/__algorithm/ranges_reverse_copy.h index a84b1ad7..60043787 100644 --- a/include/c++/v1/__algorithm/ranges_reverse_copy.h +++ b/include/c++/v1/__algorithm/ranges_reverse_copy.h @@ -25,7 +25,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -36,32 +39,32 @@ using reverse_copy_result = in_out_result<_InIter, _OutIter>; namespace __reverse_copy { struct __fn { - template _Sent, weakly_incrementable _OutIter> requires indirectly_copyable<_InIter, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - reverse_copy_result<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr reverse_copy_result<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result) const { return (*this)(subrange(std::move(__first), std::move(__last)), std::move(__result)); } template requires indirectly_copyable, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - reverse_copy_result, _OutIter> operator()(_Range&& __range, _OutIter __result) const { + _LIBCPP_HIDE_FROM_ABI constexpr reverse_copy_result, _OutIter> + operator()(_Range&& __range, _OutIter __result) const { auto __ret = ranges::copy(std::__reverse_range(__range), std::move(__result)); return {ranges::next(ranges::begin(__range), ranges::end(__range)), std::move(__ret.out)}; } - }; } // namespace __reverse_copy inline namespace __cpo { - inline constexpr auto reverse_copy = __reverse_copy::__fn{}; +inline constexpr auto reverse_copy = __reverse_copy::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_REVERSE_COPY_H diff --git a/include/c++/v1/__algorithm/ranges_rotate.h b/include/c++/v1/__algorithm/ranges_rotate.h index 91ed4027..8d33a6f0 100644 --- a/include/c++/v1/__algorithm/ranges_rotate.h +++ b/include/c++/v1/__algorithm/ranges_rotate.h @@ -25,7 +25,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -33,39 +36,36 @@ namespace ranges { namespace __rotate { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI constexpr - static subrange<_Iter> __rotate_fn_impl(_Iter __first, _Iter __middle, _Sent __last) { - auto __ret = std::__rotate<_RangeAlgPolicy>( - std::move(__first), std::move(__middle), std::move(__last)); + _LIBCPP_HIDE_FROM_ABI constexpr static subrange<_Iter> __rotate_fn_impl(_Iter __first, _Iter __middle, _Sent __last) { + auto __ret = std::__rotate<_RangeAlgPolicy>(std::move(__first), std::move(__middle), std::move(__last)); return {std::move(__ret.first), std::move(__ret.second)}; } template _Sent> - _LIBCPP_HIDE_FROM_ABI constexpr - subrange<_Iter> operator()(_Iter __first, _Iter __middle, _Sent __last) const { + _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> operator()(_Iter __first, _Iter __middle, _Sent __last) const { return __rotate_fn_impl(std::move(__first), std::move(__middle), std::move(__last)); } template - requires permutable> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_subrange_t<_Range> operator()(_Range&& __range, iterator_t<_Range> __middle) const { + requires permutable> + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> + operator()(_Range&& __range, iterator_t<_Range> __middle) const { return __rotate_fn_impl(ranges::begin(__range), std::move(__middle), ranges::end(__range)); } - }; } // namespace __rotate inline namespace __cpo { - inline constexpr auto rotate = __rotate::__fn{}; +inline constexpr auto rotate = __rotate::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_ROTATE_H diff --git a/include/c++/v1/__algorithm/ranges_rotate_copy.h b/include/c++/v1/__algorithm/ranges_rotate_copy.h index 52f403c1..26fe110b 100644 --- a/include/c++/v1/__algorithm/ranges_rotate_copy.h +++ b/include/c++/v1/__algorithm/ranges_rotate_copy.h @@ -13,7 +13,6 @@ #include <__algorithm/ranges_copy.h> #include <__config> #include <__iterator/concepts.h> -#include <__iterator/reverse_iterator.h> #include <__ranges/access.h> #include <__ranges/concepts.h> #include <__ranges/dangling.h> @@ -23,7 +22,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -34,35 +36,33 @@ using rotate_copy_result = in_out_result<_InIter, _OutIter>; namespace __rotate_copy { struct __fn { - - template _Sent, weakly_incrementable _OutIter> + template _Sent, weakly_incrementable _OutIter> requires indirectly_copyable<_InIter, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - rotate_copy_result<_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr rotate_copy_result<_InIter, _OutIter> operator()(_InIter __first, _InIter __middle, _Sent __last, _OutIter __result) const { auto __res1 = ranges::copy(__middle, __last, std::move(__result)); auto __res2 = ranges::copy(__first, __middle, std::move(__res1.out)); return {std::move(__res1.in), std::move(__res2.out)}; } - template + template requires indirectly_copyable, _OutIter> - _LIBCPP_HIDE_FROM_ABI constexpr - rotate_copy_result, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr rotate_copy_result, _OutIter> operator()(_Range&& __range, iterator_t<_Range> __middle, _OutIter __result) const { return (*this)(ranges::begin(__range), std::move(__middle), ranges::end(__range), std::move(__result)); } - }; } // namespace __rotate_copy inline namespace __cpo { - inline constexpr auto rotate_copy = __rotate_copy::__fn{}; +inline constexpr auto rotate_copy = __rotate_copy::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_ROTATE_COPY_H diff --git a/include/c++/v1/__algorithm/ranges_sample.h b/include/c++/v1/__algorithm/ranges_sample.h index a37cb64f..e4f60a7b 100644 --- a/include/c++/v1/__algorithm/ranges_sample.h +++ b/include/c++/v1/__algorithm/ranges_sample.h @@ -19,15 +19,18 @@ #include <__random/uniform_random_bit_generator.h> #include <__ranges/access.h> #include <__ranges/concepts.h> +#include <__type_traits/remove_reference.h> #include <__utility/forward.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -35,40 +38,37 @@ namespace ranges { namespace __sample { struct __fn { - template _Sent, weakly_incrementable _OutIter, class _Gen> - requires (forward_iterator<_Iter> || random_access_iterator<_OutIter>) && - indirectly_copyable<_Iter, _OutIter> && - uniform_random_bit_generator> - _LIBCPP_HIDE_FROM_ABI - _OutIter operator()(_Iter __first, _Sent __last, - _OutIter __out_first, iter_difference_t<_Iter> __n, _Gen&& __gen) const { + requires(forward_iterator<_Iter> || random_access_iterator<_OutIter>) && indirectly_copyable<_Iter, _OutIter> && + uniform_random_bit_generator> + _LIBCPP_HIDE_FROM_ABI _OutIter + operator()(_Iter __first, _Sent __last, _OutIter __out_first, iter_difference_t<_Iter> __n, _Gen&& __gen) const { _ClassicGenAdaptor<_Gen> __adapted_gen(__gen); return std::__sample<_RangeAlgPolicy>( std::move(__first), std::move(__last), std::move(__out_first), __n, __adapted_gen); } template - requires (forward_range<_Range> || random_access_iterator<_OutIter>) && - indirectly_copyable, _OutIter> && - uniform_random_bit_generator> - _LIBCPP_HIDE_FROM_ABI - _OutIter operator()(_Range&& __range, _OutIter __out_first, range_difference_t<_Range> __n, _Gen&& __gen) const { - return (*this)(ranges::begin(__range), ranges::end(__range), - std::move(__out_first), __n, std::forward<_Gen>(__gen)); + requires(forward_range<_Range> || random_access_iterator<_OutIter>) && + indirectly_copyable, _OutIter> && uniform_random_bit_generator> + _LIBCPP_HIDE_FROM_ABI _OutIter + operator()(_Range&& __range, _OutIter __out_first, range_difference_t<_Range> __n, _Gen&& __gen) const { + return (*this)( + ranges::begin(__range), ranges::end(__range), std::move(__out_first), __n, std::forward<_Gen>(__gen)); } - }; } // namespace __sample inline namespace __cpo { - inline constexpr auto sample = __sample::__fn{}; +inline constexpr auto sample = __sample::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_SAMPLE_H diff --git a/include/c++/v1/__algorithm/ranges_search.h b/include/c++/v1/__algorithm/ranges_search.h index 388d5afa..55294c60 100644 --- a/include/c++/v1/__algorithm/ranges_search.h +++ b/include/c++/v1/__algorithm/ranges_search.h @@ -28,7 +28,7 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -69,33 +69,33 @@ struct __fn { return {__ret.first, __ret.second}; } - template _Sent1, - forward_iterator _Iter2, sentinel_for<_Iter2> _Sent2, - class _Pred = ranges::equal_to, + template _Sent1, + forward_iterator _Iter2, + sentinel_for<_Iter2> _Sent2, + class _Pred = ranges::equal_to, class _Proj1 = identity, class _Proj2 = identity> requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - subrange<_Iter1> operator()(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Pred __pred = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter1> operator()( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { return __ranges_search_impl(__first1, __last1, __first2, __last2, __pred, __proj1, __proj2); } template requires indirectly_comparable, iterator_t<_Range2>, _Pred, _Proj1, _Proj2> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_subrange_t<_Range1> operator()(_Range1&& __range1, - _Range2&& __range2, - _Pred __pred = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range1> operator()( + _Range1&& __range1, _Range2&& __range2, _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { auto __first1 = ranges::begin(__range1); if constexpr (sized_range<_Range2>) { auto __size2 = ranges::size(__range2); @@ -119,17 +119,16 @@ struct __fn { __proj1, __proj2); } - }; } // namespace __search inline namespace __cpo { - inline constexpr auto search = __search::__fn{}; +inline constexpr auto search = __search::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___ALGORITHM_RANGES_SEARCH_H diff --git a/include/c++/v1/__algorithm/ranges_search_n.h b/include/c++/v1/__algorithm/ranges_search_n.h index 56ec8f33..56e12755 100644 --- a/include/c++/v1/__algorithm/ranges_search_n.h +++ b/include/c++/v1/__algorithm/ranges_search_n.h @@ -31,14 +31,16 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __search_n { struct __fn { - template _LIBCPP_HIDE_FROM_ABI static constexpr subrange<_Iter1> __ranges_search_n_impl( _Iter1 __first, _Sent1 __last, _SizeT __count, const _Type& __value, _Pred& __pred, _Proj& __proj) { @@ -59,36 +61,31 @@ struct __fn { } } - auto __ret = std::__search_n_forward_impl<_RangeAlgPolicy>(__first, __last, - __count, - __value, - __pred, - __proj); + auto __ret = std::__search_n_forward_impl<_RangeAlgPolicy>(__first, __last, __count, __value, __pred, __proj); return {std::move(__ret.first), std::move(__ret.second)}; } - template _Sent, + template _Sent, class _Type, class _Pred = ranges::equal_to, class _Proj = identity> requires indirectly_comparable<_Iter, const _Type*, _Pred, _Proj> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - subrange<_Iter> operator()(_Iter __first, _Sent __last, - iter_difference_t<_Iter> __count, - const _Type& __value, - _Pred __pred = {}, - _Proj __proj = _Proj{}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> + operator()(_Iter __first, + _Sent __last, + iter_difference_t<_Iter> __count, + const _Type& __value, + _Pred __pred = {}, + _Proj __proj = _Proj{}) const { return __ranges_search_n_impl(__first, __last, __count, __value, __pred, __proj); } template requires indirectly_comparable, const _Type*, _Pred, _Proj> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_subrange_t<_Range> operator()(_Range&& __range, - range_difference_t<_Range> __count, - const _Type& __value, - _Pred __pred = {}, - _Proj __proj = {}) const { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> operator()( + _Range&& __range, range_difference_t<_Range> __count, const _Type& __value, _Pred __pred = {}, _Proj __proj = {}) + const { auto __first = ranges::begin(__range); if (__count <= 0) return {__first, __first}; @@ -106,12 +103,14 @@ struct __fn { } // namespace __search_n inline namespace __cpo { - inline constexpr auto search_n = __search_n::__fn{}; +inline constexpr auto search_n = __search_n::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_SEARCH_N_H diff --git a/include/c++/v1/__algorithm/ranges_set_difference.h b/include/c++/v1/__algorithm/ranges_set_difference.h index 607dd687..0841fb4f 100644 --- a/include/c++/v1/__algorithm/ranges_set_difference.h +++ b/include/c++/v1/__algorithm/ranges_set_difference.h @@ -30,7 +30,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -42,15 +45,14 @@ using set_difference_result = in_out_result<_InIter, _OutIter>; namespace __set_difference { struct __fn { - template < - input_iterator _InIter1, - sentinel_for<_InIter1> _Sent1, - input_iterator _InIter2, - sentinel_for<_InIter2> _Sent2, - weakly_incrementable _OutIter, - class _Comp = less, - class _Proj1 = identity, - class _Proj2 = identity> + template _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + class _Comp = less, + class _Proj1 = identity, + class _Proj2 = identity> requires mergeable<_InIter1, _InIter2, _OutIter, _Comp, _Proj1, _Proj2> _LIBCPP_HIDE_FROM_ABI constexpr set_difference_result<_InIter1, _OutIter> operator()( _InIter1 __first1, @@ -66,22 +68,20 @@ struct __fn { return {std::move(__ret.first), std::move(__ret.second)}; } - template < - input_range _Range1, - input_range _Range2, - weakly_incrementable _OutIter, - class _Comp = less, - class _Proj1 = identity, - class _Proj2 = identity> + template requires mergeable, iterator_t<_Range2>, _OutIter, _Comp, _Proj1, _Proj2> _LIBCPP_HIDE_FROM_ABI constexpr set_difference_result, _OutIter> - operator()( - _Range1&& __range1, - _Range2&& __range2, - _OutIter __result, - _Comp __comp = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + operator()(_Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { auto __ret = std::__set_difference<_RangeAlgPolicy>( ranges::begin(__range1), ranges::end(__range1), @@ -96,11 +96,14 @@ struct __fn { } // namespace __set_difference inline namespace __cpo { - inline constexpr auto set_difference = __set_difference::__fn{}; +inline constexpr auto set_difference = __set_difference::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_RANGES_SET_DIFFERENCE_H diff --git a/include/c++/v1/__algorithm/ranges_set_intersection.h b/include/c++/v1/__algorithm/ranges_set_intersection.h index aa9fd24c..94273797 100644 --- a/include/c++/v1/__algorithm/ranges_set_intersection.h +++ b/include/c++/v1/__algorithm/ranges_set_intersection.h @@ -28,7 +28,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -40,15 +43,14 @@ using set_intersection_result = in_in_out_result<_InIter1, _InIter2, _OutIter>; namespace __set_intersection { struct __fn { - template < - input_iterator _InIter1, - sentinel_for<_InIter1> _Sent1, - input_iterator _InIter2, - sentinel_for<_InIter2> _Sent2, - weakly_incrementable _OutIter, - class _Comp = less, - class _Proj1 = identity, - class _Proj2 = identity> + template _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + class _Comp = less, + class _Proj1 = identity, + class _Proj2 = identity> requires mergeable<_InIter1, _InIter2, _OutIter, _Comp, _Proj1, _Proj2> _LIBCPP_HIDE_FROM_ABI constexpr set_intersection_result<_InIter1, _InIter2, _OutIter> operator()( _InIter1 __first1, @@ -69,30 +71,22 @@ struct __fn { return {std::move(__ret.__in1_), std::move(__ret.__in2_), std::move(__ret.__out_)}; } - template < - input_range _Range1, - input_range _Range2, - weakly_incrementable _OutIter, - class _Comp = less, - class _Proj1 = identity, - class _Proj2 = identity> - requires mergeable< - iterator_t<_Range1>, - iterator_t<_Range2>, - _OutIter, - _Comp, - _Proj1, - _Proj2> - _LIBCPP_HIDE_FROM_ABI constexpr set_intersection_result, - borrowed_iterator_t<_Range2>, - _OutIter> - operator()( - _Range1&& __range1, - _Range2&& __range2, - _OutIter __result, - _Comp __comp = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + template + requires mergeable, iterator_t<_Range2>, _OutIter, _Comp, _Proj1, _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr set_intersection_result, + borrowed_iterator_t<_Range2>, + _OutIter> + operator()(_Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { auto __ret = std::__set_intersection<_RangeAlgPolicy>( ranges::begin(__range1), ranges::end(__range1), @@ -107,11 +101,14 @@ struct __fn { } // namespace __set_intersection inline namespace __cpo { - inline constexpr auto set_intersection = __set_intersection::__fn{}; +inline constexpr auto set_intersection = __set_intersection::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_RANGES_SET_INTERSECTION_H diff --git a/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h b/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h index bc4a9065..995eb099 100644 --- a/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h +++ b/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h @@ -28,7 +28,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -40,15 +43,14 @@ using set_symmetric_difference_result = in_in_out_result<_InIter1, _InIter2, _Ou namespace __set_symmetric_difference { struct __fn { - template < - input_iterator _InIter1, - sentinel_for<_InIter1> _Sent1, - input_iterator _InIter2, - sentinel_for<_InIter2> _Sent2, - weakly_incrementable _OutIter, - class _Comp = ranges::less, - class _Proj1 = identity, - class _Proj2 = identity> + template _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + class _Comp = ranges::less, + class _Proj1 = identity, + class _Proj2 = identity> requires mergeable<_InIter1, _InIter2, _OutIter, _Comp, _Proj1, _Proj2> _LIBCPP_HIDE_FROM_ABI constexpr set_symmetric_difference_result<_InIter1, _InIter2, _OutIter> operator()( _InIter1 __first1, @@ -69,30 +71,22 @@ struct __fn { return {std::move(__ret.__in1_), std::move(__ret.__in2_), std::move(__ret.__out_)}; } - template < - input_range _Range1, - input_range _Range2, - weakly_incrementable _OutIter, - class _Comp = ranges::less, - class _Proj1 = identity, - class _Proj2 = identity> - requires mergeable< - iterator_t<_Range1>, - iterator_t<_Range2>, - _OutIter, - _Comp, - _Proj1, - _Proj2> + template + requires mergeable, iterator_t<_Range2>, _OutIter, _Comp, _Proj1, _Proj2> _LIBCPP_HIDE_FROM_ABI constexpr set_symmetric_difference_result, borrowed_iterator_t<_Range2>, _OutIter> - operator()( - _Range1&& __range1, - _Range2&& __range2, - _OutIter __result, - _Comp __comp = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + operator()(_Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { auto __ret = std::__set_symmetric_difference<_RangeAlgPolicy>( ranges::begin(__range1), ranges::end(__range1), @@ -107,11 +101,14 @@ struct __fn { } // namespace __set_symmetric_difference inline namespace __cpo { - inline constexpr auto set_symmetric_difference = __set_symmetric_difference::__fn{}; +inline constexpr auto set_symmetric_difference = __set_symmetric_difference::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_RANGES_SET_SYMMETRIC_DIFFERENCE_H diff --git a/include/c++/v1/__algorithm/ranges_set_union.h b/include/c++/v1/__algorithm/ranges_set_union.h index f8cd45ca..e870e390 100644 --- a/include/c++/v1/__algorithm/ranges_set_union.h +++ b/include/c++/v1/__algorithm/ranges_set_union.h @@ -31,7 +31,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -43,15 +46,14 @@ using set_union_result = in_in_out_result<_InIter1, _InIter2, _OutIter>; namespace __set_union { struct __fn { - template < - input_iterator _InIter1, - sentinel_for<_InIter1> _Sent1, - input_iterator _InIter2, - sentinel_for<_InIter2> _Sent2, - weakly_incrementable _OutIter, - class _Comp = ranges::less, - class _Proj1 = identity, - class _Proj2 = identity> + template _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + class _Comp = ranges::less, + class _Proj1 = identity, + class _Proj2 = identity> requires mergeable<_InIter1, _InIter2, _OutIter, _Comp, _Proj1, _Proj2> _LIBCPP_HIDE_FROM_ABI constexpr set_union_result<_InIter1, _InIter2, _OutIter> operator()( _InIter1 __first1, @@ -72,30 +74,20 @@ struct __fn { return {std::move(__ret.__in1_), std::move(__ret.__in2_), std::move(__ret.__out_)}; } - template < - input_range _Range1, - input_range _Range2, - weakly_incrementable _OutIter, - class _Comp = ranges::less, - class _Proj1 = identity, - class _Proj2 = identity> - requires mergeable< - iterator_t<_Range1>, - iterator_t<_Range2>, - _OutIter, - _Comp, - _Proj1, - _Proj2> - _LIBCPP_HIDE_FROM_ABI constexpr set_union_result, - borrowed_iterator_t<_Range2>, - _OutIter> - operator()( - _Range1&& __range1, - _Range2&& __range2, - _OutIter __result, - _Comp __comp = {}, - _Proj1 __proj1 = {}, - _Proj2 __proj2 = {}) const { + template + requires mergeable, iterator_t<_Range2>, _OutIter, _Comp, _Proj1, _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr set_union_result, borrowed_iterator_t<_Range2>, _OutIter> + operator()(_Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { auto __ret = std::__set_union<_RangeAlgPolicy>( ranges::begin(__range1), ranges::end(__range1), @@ -110,12 +102,14 @@ struct __fn { } // namespace __set_union inline namespace __cpo { - inline constexpr auto set_union = __set_union::__fn{}; +inline constexpr auto set_union = __set_union::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_SET_UNION_H diff --git a/include/c++/v1/__algorithm/ranges_shuffle.h b/include/c++/v1/__algorithm/ranges_shuffle.h index a2f2c0ed..ab98ea22 100644 --- a/include/c++/v1/__algorithm/ranges_shuffle.h +++ b/include/c++/v1/__algorithm/ranges_shuffle.h @@ -23,15 +23,18 @@ #include <__ranges/access.h> #include <__ranges/concepts.h> #include <__ranges/dangling.h> +#include <__type_traits/remove_reference.h> #include <__utility/forward.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -39,33 +42,31 @@ namespace ranges { namespace __shuffle { struct __fn { - template _Sent, class _Gen> - requires permutable<_Iter> && uniform_random_bit_generator> - _LIBCPP_HIDE_FROM_ABI - _Iter operator()(_Iter __first, _Sent __last, _Gen&& __gen) const { + requires permutable<_Iter> && uniform_random_bit_generator> + _LIBCPP_HIDE_FROM_ABI _Iter operator()(_Iter __first, _Sent __last, _Gen&& __gen) const { _ClassicGenAdaptor<_Gen> __adapted_gen(__gen); return std::__shuffle<_RangeAlgPolicy>(std::move(__first), std::move(__last), __adapted_gen); } - template - requires permutable> && uniform_random_bit_generator> - _LIBCPP_HIDE_FROM_ABI - borrowed_iterator_t<_Range> operator()(_Range&& __range, _Gen&& __gen) const { + template + requires permutable> && uniform_random_bit_generator> + _LIBCPP_HIDE_FROM_ABI borrowed_iterator_t<_Range> operator()(_Range&& __range, _Gen&& __gen) const { return (*this)(ranges::begin(__range), ranges::end(__range), std::forward<_Gen>(__gen)); } - }; } // namespace __shuffle inline namespace __cpo { - inline constexpr auto shuffle = __shuffle::__fn{}; +inline constexpr auto shuffle = __shuffle::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_SHUFFLE_H diff --git a/include/c++/v1/__algorithm/ranges_sort.h b/include/c++/v1/__algorithm/ranges_sort.h index 32391df5..0296c146 100644 --- a/include/c++/v1/__algorithm/ranges_sort.h +++ b/include/c++/v1/__algorithm/ranges_sort.h @@ -31,7 +31,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -40,8 +43,8 @@ namespace __sort { struct __fn { template - _LIBCPP_HIDE_FROM_ABI constexpr static - _Iter __sort_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter + __sort_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { auto __last_iter = ranges::next(__first, __last); auto&& __projected_comp = std::__make_projected(__comp, __proj); @@ -52,15 +55,15 @@ struct __fn { template _Sent, class _Comp = ranges::less, class _Proj = identity> requires sortable<_Iter, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return __sort_fn_impl(std::move(__first), std::move(__last), __comp, __proj); } template requires sortable, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { return __sort_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); } }; @@ -68,12 +71,14 @@ struct __fn { } // namespace __sort inline namespace __cpo { - inline constexpr auto sort = __sort::__fn{}; +inline constexpr auto sort = __sort::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_SORT_H diff --git a/include/c++/v1/__algorithm/ranges_sort_heap.h b/include/c++/v1/__algorithm/ranges_sort_heap.h index 9feb0f60..bab30df1 100644 --- a/include/c++/v1/__algorithm/ranges_sort_heap.h +++ b/include/c++/v1/__algorithm/ranges_sort_heap.h @@ -32,7 +32,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -41,8 +44,8 @@ namespace __sort_heap { struct __fn { template - _LIBCPP_HIDE_FROM_ABI constexpr static - _Iter __sort_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI constexpr static _Iter + __sort_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { auto __last_iter = ranges::next(__first, __last); auto&& __projected_comp = std::__make_projected(__comp, __proj); @@ -53,15 +56,15 @@ struct __fn { template _Sent, class _Comp = ranges::less, class _Proj = identity> requires sortable<_Iter, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return __sort_heap_fn_impl(std::move(__first), std::move(__last), __comp, __proj); } template requires sortable, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { return __sort_heap_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); } }; @@ -69,12 +72,14 @@ struct __fn { } // namespace __sort_heap inline namespace __cpo { - inline constexpr auto sort_heap = __sort_heap::__fn{}; +inline constexpr auto sort_heap = __sort_heap::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_SORT_HEAP_H diff --git a/include/c++/v1/__algorithm/ranges_stable_partition.h b/include/c++/v1/__algorithm/ranges_stable_partition.h index c3469f17..f34027ff 100644 --- a/include/c++/v1/__algorithm/ranges_stable_partition.h +++ b/include/c++/v1/__algorithm/ranges_stable_partition.h @@ -26,15 +26,18 @@ #include <__ranges/concepts.h> #include <__ranges/dangling.h> #include <__ranges/subrange.h> +#include <__type_traits/remove_cvref.h> #include <__utility/forward.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -42,47 +45,48 @@ namespace ranges { namespace __stable_partition { struct __fn { - template - _LIBCPP_HIDE_FROM_ABI static - subrange<__remove_cvref_t<_Iter>> __stable_partition_fn_impl( - _Iter&& __first, _Sent&& __last, _Pred&& __pred, _Proj&& __proj) { + _LIBCPP_HIDE_FROM_ABI static subrange<__remove_cvref_t<_Iter>> + __stable_partition_fn_impl(_Iter&& __first, _Sent&& __last, _Pred&& __pred, _Proj&& __proj) { auto __last_iter = ranges::next(__first, __last); auto&& __projected_pred = std::__make_projected(__pred, __proj); - auto __result = std::__stable_partition<_RangeAlgPolicy>( + auto __result = std::__stable_partition<_RangeAlgPolicy>( std::move(__first), __last_iter, __projected_pred, __iterator_concept<_Iter>()); return {std::move(__result), std::move(__last_iter)}; } - template _Sent, class _Proj = identity, + template _Sent, + class _Proj = identity, indirect_unary_predicate> _Pred> - requires permutable<_Iter> - _LIBCPP_HIDE_FROM_ABI - subrange<_Iter> operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + requires permutable<_Iter> + _LIBCPP_HIDE_FROM_ABI subrange<_Iter> operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { return __stable_partition_fn_impl(__first, __last, __pred, __proj); } - template , _Proj>> _Pred> - requires permutable> - _LIBCPP_HIDE_FROM_ABI - borrowed_subrange_t<_Range> operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + requires permutable> + _LIBCPP_HIDE_FROM_ABI borrowed_subrange_t<_Range> + operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { return __stable_partition_fn_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); } - }; } // namespace __stable_partition inline namespace __cpo { - inline constexpr auto stable_partition = __stable_partition::__fn{}; +inline constexpr auto stable_partition = __stable_partition::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_STABLE_PARTITION_H diff --git a/include/c++/v1/__algorithm/ranges_stable_sort.h b/include/c++/v1/__algorithm/ranges_stable_sort.h index d3c48ddb..93909e25 100644 --- a/include/c++/v1/__algorithm/ranges_stable_sort.h +++ b/include/c++/v1/__algorithm/ranges_stable_sort.h @@ -31,7 +31,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -40,8 +43,7 @@ namespace __stable_sort { struct __fn { template - _LIBCPP_HIDE_FROM_ABI - static _Iter __stable_sort_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + _LIBCPP_HIDE_FROM_ABI static _Iter __stable_sort_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { auto __last_iter = ranges::next(__first, __last); auto&& __projected_comp = std::__make_projected(__comp, __proj); @@ -52,15 +54,14 @@ struct __fn { template _Sent, class _Comp = ranges::less, class _Proj = identity> requires sortable<_Iter, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI - _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { return __stable_sort_fn_impl(std::move(__first), std::move(__last), __comp, __proj); } template requires sortable, _Comp, _Proj> - _LIBCPP_HIDE_FROM_ABI - borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI borrowed_iterator_t<_Range> + operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { return __stable_sort_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); } }; @@ -68,12 +69,14 @@ struct __fn { } // namespace __stable_sort inline namespace __cpo { - inline constexpr auto stable_sort = __stable_sort::__fn{}; +inline constexpr auto stable_sort = __stable_sort::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_STABLE_SORT_H diff --git a/include/c++/v1/__algorithm/ranges_swap_ranges.h b/include/c++/v1/__algorithm/ranges_swap_ranges.h index 552fd55f..b6d9f618 100644 --- a/include/c++/v1/__algorithm/ranges_swap_ranges.h +++ b/include/c++/v1/__algorithm/ranges_swap_ranges.h @@ -24,7 +24,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -35,8 +38,7 @@ using swap_ranges_result = in_in_result<_I1, _I2>; namespace __swap_ranges { struct __fn { - template _S1, - input_iterator _I2, sentinel_for<_I2> _S2> + template _S1, input_iterator _I2, sentinel_for<_I2> _S2> requires indirectly_swappable<_I1, _I2> _LIBCPP_HIDE_FROM_ABI constexpr swap_ranges_result<_I1, _I2> operator()(_I1 __first1, _S1 __last1, _I2 __first2, _S2 __last2) const { @@ -47,22 +49,22 @@ struct __fn { template requires indirectly_swappable, iterator_t<_R2>> - _LIBCPP_HIDE_FROM_ABI constexpr - swap_ranges_result, borrowed_iterator_t<_R2>> + _LIBCPP_HIDE_FROM_ABI constexpr swap_ranges_result, borrowed_iterator_t<_R2>> operator()(_R1&& __r1, _R2&& __r2) const { - return operator()(ranges::begin(__r1), ranges::end(__r1), - ranges::begin(__r2), ranges::end(__r2)); + return operator()(ranges::begin(__r1), ranges::end(__r1), ranges::begin(__r2), ranges::end(__r2)); } }; } // namespace __swap_ranges inline namespace __cpo { - inline constexpr auto swap_ranges = __swap_ranges::__fn{}; +inline constexpr auto swap_ranges = __swap_ranges::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_SWAP_RANGES_H diff --git a/include/c++/v1/__algorithm/ranges_transform.h b/include/c++/v1/__algorithm/ranges_transform.h index c0981a04..7850ec4f 100644 --- a/include/c++/v1/__algorithm/ranges_transform.h +++ b/include/c++/v1/__algorithm/ranges_transform.h @@ -26,7 +26,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -41,15 +44,9 @@ using binary_transform_result = in_in_out_result<_I1, _I2, _O1>; namespace __transform { struct __fn { private: - template - _LIBCPP_HIDE_FROM_ABI static constexpr - unary_transform_result<_InIter, _OutIter> __unary(_InIter __first, _Sent __last, - _OutIter __result, - _Func& __operation, - _Proj& __projection) { + template + _LIBCPP_HIDE_FROM_ABI static constexpr unary_transform_result<_InIter, _OutIter> + __unary(_InIter __first, _Sent __last, _OutIter __result, _Func& __operation, _Proj& __projection) { while (__first != __last) { *__result = std::invoke(__operation, std::invoke(__projection, *__first)); ++__first; @@ -59,76 +56,80 @@ struct __fn { return {std::move(__first), std::move(__result)}; } - template _LIBCPP_HIDE_FROM_ABI static constexpr binary_transform_result<_InIter1, _InIter2, _OutIter> - __binary(_InIter1 __first1, _Sent1 __last1, - _InIter2 __first2, _Sent2 __last2, + __binary(_InIter1 __first1, + _Sent1 __last1, + _InIter2 __first2, + _Sent2 __last2, _OutIter __result, _Func& __binary_operation, _Proj1& __projection1, _Proj2& __projection2) { while (__first1 != __last1 && __first2 != __last2) { - *__result = std::invoke(__binary_operation, std::invoke(__projection1, *__first1), - std::invoke(__projection2, *__first2)); + *__result = + std::invoke(__binary_operation, std::invoke(__projection1, *__first1), std::invoke(__projection2, *__first2)); ++__first1; ++__first2; ++__result; } return {std::move(__first1), std::move(__first2), std::move(__result)}; } + public: - template _Sent, + template _Sent, weakly_incrementable _OutIter, copy_constructible _Func, class _Proj = identity> requires indirectly_writable<_OutIter, indirect_result_t<_Func&, projected<_InIter, _Proj>>> - _LIBCPP_HIDE_FROM_ABI constexpr - unary_transform_result<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, - _OutIter __result, - _Func __operation, - _Proj __proj = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr unary_transform_result<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result, _Func __operation, _Proj __proj = {}) const { return __unary(std::move(__first), std::move(__last), std::move(__result), __operation, __proj); } - template + template requires indirectly_writable<_OutIter, indirect_result_t<_Func, projected, _Proj>>> - _LIBCPP_HIDE_FROM_ABI constexpr - unary_transform_result, _OutIter> operator()(_Range&& __range, - _OutIter __result, - _Func __operation, - _Proj __projection = {}) const { + _LIBCPP_HIDE_FROM_ABI constexpr unary_transform_result, _OutIter> + operator()(_Range&& __range, _OutIter __result, _Func __operation, _Proj __projection = {}) const { return __unary(ranges::begin(__range), ranges::end(__range), std::move(__result), __operation, __projection); } - template _Sent1, - input_iterator _InIter2, sentinel_for<_InIter2> _Sent2, + template _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, weakly_incrementable _OutIter, copy_constructible _Func, class _Proj1 = identity, class _Proj2 = identity> - requires indirectly_writable<_OutIter, indirect_result_t<_Func&, projected<_InIter1, _Proj1>, - projected<_InIter2, _Proj2>>> - _LIBCPP_HIDE_FROM_ABI constexpr - binary_transform_result<_InIter1, _InIter2, _OutIter> operator()(_InIter1 __first1, _Sent1 __last1, - _InIter2 __first2, _Sent2 __last2, - _OutIter __result, - _Func __binary_operation, - _Proj1 __projection1 = {}, - _Proj2 __projection2 = {}) const { - return __binary(std::move(__first1), std::move(__last1), - std::move(__first2), std::move(__last2), - std::move(__result), - __binary_operation, - __projection1, - __projection2); + requires indirectly_writable<_OutIter, + indirect_result_t<_Func&, projected<_InIter1, _Proj1>, projected<_InIter2, _Proj2>>> + _LIBCPP_HIDE_FROM_ABI constexpr binary_transform_result<_InIter1, _InIter2, _OutIter> operator()( + _InIter1 __first1, + _Sent1 __last1, + _InIter2 __first2, + _Sent2 __last2, + _OutIter __result, + _Func __binary_operation, + _Proj1 __projection1 = {}, + _Proj2 __projection2 = {}) const { + return __binary( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + __binary_operation, + __projection1, + __projection2); } template - requires indirectly_writable<_OutIter, indirect_result_t<_Func&, projected, _Proj1>, - projected, _Proj2>>> - _LIBCPP_HIDE_FROM_ABI constexpr - binary_transform_result, borrowed_iterator_t<_Range2>, _OutIter> + requires indirectly_writable< + _OutIter, + indirect_result_t<_Func&, projected, _Proj1>, projected, _Proj2>>> + _LIBCPP_HIDE_FROM_ABI constexpr binary_transform_result, + borrowed_iterator_t<_Range2>, + _OutIter> operator()(_Range1&& __range1, _Range2&& __range2, _OutIter __result, _Func __binary_operation, _Proj1 __projection1 = {}, _Proj2 __projection2 = {}) const { - return __binary(ranges::begin(__range1), ranges::end(__range1), - ranges::begin(__range2), ranges::end(__range2), - std::move(__result), - __binary_operation, - __projection1, - __projection2); + return __binary( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + std::move(__result), + __binary_operation, + __projection1, + __projection2); } - }; } // namespace __transform inline namespace __cpo { - inline constexpr auto transform = __transform::__fn{}; +inline constexpr auto transform = __transform::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_TRANSFORM_H diff --git a/include/c++/v1/__algorithm/ranges_unique.h b/include/c++/v1/__algorithm/ranges_unique.h index be427ccf..7a9b7843 100644 --- a/include/c++/v1/__algorithm/ranges_unique.h +++ b/include/c++/v1/__algorithm/ranges_unique.h @@ -32,48 +32,51 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __unique { - struct __fn { - template < - permutable _Iter, - sentinel_for<_Iter> _Sent, - class _Proj = identity, - indirect_equivalence_relation> _Comp = ranges::equal_to> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> - operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { - auto __ret = std::__unique<_RangeAlgPolicy>( - std::move(__first), std::move(__last), std::__make_projected(__comp, __proj)); - return {std::move(__ret.first), std::move(__ret.second)}; - } +struct __fn { + template _Sent, + class _Proj = identity, + indirect_equivalence_relation> _Comp = ranges::equal_to> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = + std::__unique<_RangeAlgPolicy>(std::move(__first), std::move(__last), std::__make_projected(__comp, __proj)); + return {std::move(__ret.first), std::move(__ret.second)}; + } - template < - forward_range _Range, - class _Proj = identity, - indirect_equivalence_relation, _Proj>> _Comp = ranges::equal_to> - requires permutable> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> - operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { - auto __ret = std::__unique<_RangeAlgPolicy>( - ranges::begin(__range), ranges::end(__range), std::__make_projected(__comp, __proj)); - return {std::move(__ret.first), std::move(__ret.second)}; - } - }; + template , _Proj>> _Comp = ranges::equal_to> + requires permutable> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> + operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__unique<_RangeAlgPolicy>( + ranges::begin(__range), ranges::end(__range), std::__make_projected(__comp, __proj)); + return {std::move(__ret.first), std::move(__ret.second)}; + } +}; } // namespace __unique inline namespace __cpo { - inline constexpr auto unique = __unique::__fn{}; +inline constexpr auto unique = __unique::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_UNIQUE_H diff --git a/include/c++/v1/__algorithm/ranges_unique_copy.h b/include/c++/v1/__algorithm/ranges_unique_copy.h index 3ad47b06..61133885 100644 --- a/include/c++/v1/__algorithm/ranges_unique_copy.h +++ b/include/c++/v1/__algorithm/ranges_unique_copy.h @@ -21,7 +21,6 @@ #include <__iterator/concepts.h> #include <__iterator/iterator_traits.h> #include <__iterator/projected.h> -#include <__iterator/readable_traits.h> #include <__ranges/access.h> #include <__ranges/concepts.h> #include <__ranges/dangling.h> @@ -33,7 +32,10 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -87,9 +89,9 @@ struct __fn { class _Proj = identity, indirect_equivalence_relation, _Proj>> _Comp = ranges::equal_to> requires indirectly_copyable, _OutIter> && - (forward_iterator> || - (input_iterator<_OutIter> && same_as, iter_value_t<_OutIter>>) || - indirectly_copyable_storable, _OutIter>) + (forward_iterator> || + (input_iterator<_OutIter> && same_as, iter_value_t<_OutIter>>) || + indirectly_copyable_storable, _OutIter>) _LIBCPP_HIDE_FROM_ABI constexpr unique_copy_result, _OutIter> operator()(_Range&& __range, _OutIter __result, _Comp __comp = {}, _Proj __proj = {}) const { auto __ret = std::__unique_copy<_RangeAlgPolicy>( @@ -111,6 +113,8 @@ inline constexpr auto unique_copy = __unique_copy::__fn{}; _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_UNIQUE_COPY_H diff --git a/include/c++/v1/__algorithm/ranges_upper_bound.h b/include/c++/v1/__algorithm/ranges_upper_bound.h index a1340809..fa6fa7f7 100644 --- a/include/c++/v1/__algorithm/ranges_upper_bound.h +++ b/include/c++/v1/__algorithm/ranges_upper_bound.h @@ -25,51 +25,50 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { namespace __upper_bound { struct __fn { - template _Sent, class _Type, class _Proj = identity, + template _Sent, + class _Type, + class _Proj = identity, indirect_strict_weak_order> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - _Iter operator()(_Iter __first, _Sent __last, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { - auto __comp_lhs_rhs_swapped = [&](const auto& __lhs, const auto& __rhs) { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Iter + operator()(_Iter __first, _Sent __last, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { + auto __comp_lhs_rhs_swapped = [&](const auto& __lhs, const auto& __rhs) -> bool { return !std::invoke(__comp, __rhs, __lhs); }; - return std::__lower_bound_impl<_RangeAlgPolicy>(__first, __last, __value, __comp_lhs_rhs_swapped, __proj); + return std::__lower_bound<_RangeAlgPolicy>(__first, __last, __value, __comp_lhs_rhs_swapped, __proj); } - template , _Proj>> _Comp = ranges::less> - _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr - borrowed_iterator_t<_Range> operator()(_Range&& __r, - const _Type& __value, - _Comp __comp = {}, - _Proj __proj = {}) const { - auto __comp_lhs_rhs_swapped = [&](const auto& __lhs, const auto& __rhs) { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __r, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { + auto __comp_lhs_rhs_swapped = [&](const auto& __lhs, const auto& __rhs) -> bool { return !std::invoke(__comp, __rhs, __lhs); }; - return std::__lower_bound_impl<_RangeAlgPolicy>(ranges::begin(__r), - ranges::end(__r), - __value, - __comp_lhs_rhs_swapped, - __proj); + return std::__lower_bound<_RangeAlgPolicy>( + ranges::begin(__r), ranges::end(__r), __value, __comp_lhs_rhs_swapped, __proj); } }; } // namespace __upper_bound inline namespace __cpo { - inline constexpr auto upper_bound = __upper_bound::__fn{}; +inline constexpr auto upper_bound = __upper_bound::__fn{}; } // namespace __cpo } // namespace ranges _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___ALGORITHM_RANGES_UPPER_BOUND_H diff --git a/include/c++/v1/__algorithm/remove.h b/include/c++/v1/__algorithm/remove.h index 533e41b5..fd01c23c 100644 --- a/include/c++/v1/__algorithm/remove.h +++ b/include/c++/v1/__algorithm/remove.h @@ -18,28 +18,29 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator -remove(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) -{ - __first = _VSTD::find(__first, __last, __value); - if (__first != __last) - { - _ForwardIterator __i = __first; - while (++__i != __last) - { - if (!(*__i == __value)) - { - *__first = _VSTD::move(*__i); - ++__first; - } - } +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +remove(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { + __first = std::find(__first, __last, __value); + if (__first != __last) { + _ForwardIterator __i = __first; + while (++__i != __last) { + if (!(*__i == __value)) { + *__first = std::move(*__i); + ++__first; + } } - return __first; + } + return __first; } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_REMOVE_H diff --git a/include/c++/v1/__algorithm/remove_copy.h b/include/c++/v1/__algorithm/remove_copy.h index ecba08a0..7be4c166 100644 --- a/include/c++/v1/__algorithm/remove_copy.h +++ b/include/c++/v1/__algorithm/remove_copy.h @@ -18,19 +18,15 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -remove_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp& __value) -{ - for (; __first != __last; ++__first) - { - if (!(*__first == __value)) - { - *__result = *__first; - ++__result; - } +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +remove_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp& __value) { + for (; __first != __last; ++__first) { + if (!(*__first == __value)) { + *__result = *__first; + ++__result; } - return __result; + } + return __result; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/remove_copy_if.h b/include/c++/v1/__algorithm/remove_copy_if.h index 2f235fd3..dcafed16 100644 --- a/include/c++/v1/__algorithm/remove_copy_if.h +++ b/include/c++/v1/__algorithm/remove_copy_if.h @@ -18,19 +18,15 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -remove_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred) -{ - for (; __first != __last; ++__first) - { - if (!__pred(*__first)) - { - *__result = *__first; - ++__result; - } +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +remove_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred) { + for (; __first != __last; ++__first) { + if (!__pred(*__first)) { + *__result = *__first; + ++__result; } - return __result; + } + return __result; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/remove_if.h b/include/c++/v1/__algorithm/remove_if.h index 27350728..b14f3c0e 100644 --- a/include/c++/v1/__algorithm/remove_if.h +++ b/include/c++/v1/__algorithm/remove_if.h @@ -17,28 +17,29 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator -remove_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) -{ - __first = _VSTD::find_if<_ForwardIterator, _Predicate&>(__first, __last, __pred); - if (__first != __last) - { - _ForwardIterator __i = __first; - while (++__i != __last) - { - if (!__pred(*__i)) - { - *__first = _VSTD::move(*__i); - ++__first; - } - } +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +remove_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { + __first = std::find_if<_ForwardIterator, _Predicate&>(__first, __last, __pred); + if (__first != __last) { + _ForwardIterator __i = __first; + while (++__i != __last) { + if (!__pred(*__i)) { + *__first = std::move(*__i); + ++__first; + } } - return __first; + } + return __first; } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_REMOVE_IF_H diff --git a/include/c++/v1/__algorithm/replace.h b/include/c++/v1/__algorithm/replace.h index ce621506..8057c786 100644 --- a/include/c++/v1/__algorithm/replace.h +++ b/include/c++/v1/__algorithm/replace.h @@ -18,13 +18,11 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -replace(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __old_value, const _Tp& __new_value) -{ - for (; __first != __last; ++__first) - if (*__first == __old_value) - *__first = __new_value; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +replace(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __old_value, const _Tp& __new_value) { + for (; __first != __last; ++__first) + if (*__first == __old_value) + *__first = __new_value; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/replace_copy.h b/include/c++/v1/__algorithm/replace_copy.h index bebb14cb..9a2258d9 100644 --- a/include/c++/v1/__algorithm/replace_copy.h +++ b/include/c++/v1/__algorithm/replace_copy.h @@ -18,17 +18,18 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -replace_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, - const _Tp& __old_value, const _Tp& __new_value) -{ - for (; __first != __last; ++__first, (void) ++__result) - if (*__first == __old_value) - *__result = __new_value; - else - *__result = *__first; - return __result; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator replace_copy( + _InputIterator __first, + _InputIterator __last, + _OutputIterator __result, + const _Tp& __old_value, + const _Tp& __new_value) { + for (; __first != __last; ++__first, (void)++__result) + if (*__first == __old_value) + *__result = __new_value; + else + *__result = *__first; + return __result; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/replace_copy_if.h b/include/c++/v1/__algorithm/replace_copy_if.h index e1ddb527..c2ed30f0 100644 --- a/include/c++/v1/__algorithm/replace_copy_if.h +++ b/include/c++/v1/__algorithm/replace_copy_if.h @@ -18,17 +18,18 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -replace_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, - _Predicate __pred, const _Tp& __new_value) -{ - for (; __first != __last; ++__first, (void) ++__result) - if (__pred(*__first)) - *__result = __new_value; - else - *__result = *__first; - return __result; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator replace_copy_if( + _InputIterator __first, + _InputIterator __last, + _OutputIterator __result, + _Predicate __pred, + const _Tp& __new_value) { + for (; __first != __last; ++__first, (void)++__result) + if (__pred(*__first)) + *__result = __new_value; + else + *__result = *__first; + return __result; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/replace_if.h b/include/c++/v1/__algorithm/replace_if.h index b3a3367d..78487e3d 100644 --- a/include/c++/v1/__algorithm/replace_if.h +++ b/include/c++/v1/__algorithm/replace_if.h @@ -18,13 +18,11 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -replace_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, const _Tp& __new_value) -{ - for (; __first != __last; ++__first) - if (__pred(*__first)) - *__first = __new_value; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +replace_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, const _Tp& __new_value) { + for (; __first != __last; ++__first) + if (__pred(*__first)) + *__first = __new_value; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/reverse.h b/include/c++/v1/__algorithm/reverse.h index aa769517..4167c911 100644 --- a/include/c++/v1/__algorithm/reverse.h +++ b/include/c++/v1/__algorithm/reverse.h @@ -19,47 +19,44 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -__reverse_impl(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirectional_iterator_tag) -{ - while (__first != __last) - { - if (__first == --__last) - break; - _IterOps<_AlgPolicy>::iter_swap(__first, __last); - ++__first; - } +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +__reverse_impl(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirectional_iterator_tag) { + while (__first != __last) { + if (__first == --__last) + break; + _IterOps<_AlgPolicy>::iter_swap(__first, __last); + ++__first; + } } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -__reverse_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag) -{ - if (__first != __last) - for (; __first < --__last; ++__first) - _IterOps<_AlgPolicy>::iter_swap(__first, __last); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +__reverse_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag) { + if (__first != __last) + for (; __first < --__last; ++__first) + _IterOps<_AlgPolicy>::iter_swap(__first, __last); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void __reverse(_BidirectionalIterator __first, _Sentinel __last) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void __reverse(_BidirectionalIterator __first, _Sentinel __last) { using _IterCategory = typename _IterOps<_AlgPolicy>::template __iterator_category<_BidirectionalIterator>; std::__reverse_impl<_AlgPolicy>(std::move(__first), std::move(__last), _IterCategory()); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) -{ +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) { std::__reverse<_ClassicAlgPolicy>(std::move(__first), std::move(__last)); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_REVERSE_H diff --git a/include/c++/v1/__algorithm/reverse_copy.h b/include/c++/v1/__algorithm/reverse_copy.h index f4a0e971..0fcecc39 100644 --- a/include/c++/v1/__algorithm/reverse_copy.h +++ b/include/c++/v1/__algorithm/reverse_copy.h @@ -18,13 +18,11 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result) -{ - for (; __first != __last; ++__result) - *__result = *--__last; - return __result; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result) { + for (; __first != __last; ++__result) + *__result = *--__last; + return __result; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/rotate.h b/include/c++/v1/__algorithm/rotate.h index 8934ce09..df4ca95a 100644 --- a/include/c++/v1/__algorithm/rotate.h +++ b/include/c++/v1/__algorithm/rotate.h @@ -15,207 +15,184 @@ #include <__algorithm/swap_ranges.h> #include <__config> #include <__iterator/iterator_traits.h> +#include <__type_traits/is_trivially_assignable.h> #include <__utility/move.h> #include <__utility/pair.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator -__rotate_left(_ForwardIterator __first, _ForwardIterator __last) -{ - typedef typename iterator_traits<_ForwardIterator>::value_type value_type; - using _Ops = _IterOps<_AlgPolicy>; - - value_type __tmp = _Ops::__iter_move(__first); - _ForwardIterator __lm1 = std::__move<_AlgPolicy>( - _Ops::next(__first), __last, __first).second; - *__lm1 = _VSTD::move(__tmp); - return __lm1; +__rotate_left(_ForwardIterator __first, _ForwardIterator __last) { + typedef typename iterator_traits<_ForwardIterator>::value_type value_type; + using _Ops = _IterOps<_AlgPolicy>; + + value_type __tmp = _Ops::__iter_move(__first); + _ForwardIterator __lm1 = std::__move<_AlgPolicy>(_Ops::next(__first), __last, __first).second; + *__lm1 = std::move(__tmp); + return __lm1; } template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _BidirectionalIterator -__rotate_right(_BidirectionalIterator __first, _BidirectionalIterator __last) -{ - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - using _Ops = _IterOps<_AlgPolicy>; - - _BidirectionalIterator __lm1 = _Ops::prev(__last); - value_type __tmp = _Ops::__iter_move(__lm1); - _BidirectionalIterator __fp1 = std::__move_backward<_AlgPolicy>(__first, __lm1, std::move(__last)).second; - *__first = _VSTD::move(__tmp); - return __fp1; +__rotate_right(_BidirectionalIterator __first, _BidirectionalIterator __last) { + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + using _Ops = _IterOps<_AlgPolicy>; + + _BidirectionalIterator __lm1 = _Ops::prev(__last); + value_type __tmp = _Ops::__iter_move(__lm1); + _BidirectionalIterator __fp1 = std::__move_backward<_AlgPolicy>(__first, __lm1, std::move(__last)).second; + *__first = std::move(__tmp); + return __fp1; } template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 _ForwardIterator -__rotate_forward(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) -{ - _ForwardIterator __i = __middle; - while (true) - { - _IterOps<_AlgPolicy>::iter_swap(__first, __i); - ++__first; - if (++__i == __last) - break; +__rotate_forward(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) { + _ForwardIterator __i = __middle; + while (true) { + _IterOps<_AlgPolicy>::iter_swap(__first, __i); + ++__first; + if (++__i == __last) + break; + if (__first == __middle) + __middle = __i; + } + _ForwardIterator __r = __first; + if (__first != __middle) { + __i = __middle; + while (true) { + _IterOps<_AlgPolicy>::iter_swap(__first, __i); + ++__first; + if (++__i == __last) { if (__first == __middle) - __middle = __i; - } - _ForwardIterator __r = __first; - if (__first != __middle) - { + break; __i = __middle; - while (true) - { - _IterOps<_AlgPolicy>::iter_swap(__first, __i); - ++__first; - if (++__i == __last) - { - if (__first == __middle) - break; - __i = __middle; - } - else if (__first == __middle) - __middle = __i; - } + } else if (__first == __middle) + __middle = __i; } - return __r; + } + return __r; } -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR_SINCE_CXX17 _Integral -__algo_gcd(_Integral __x, _Integral __y) -{ - do - { - _Integral __t = __x % __y; - __x = __y; - __y = __t; - } while (__y); - return __x; +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 _Integral __algo_gcd(_Integral __x, _Integral __y) { + do { + _Integral __t = __x % __y; + __x = __y; + __y = __t; + } while (__y); + return __x; } template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 _RandomAccessIterator -__rotate_gcd(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) -{ - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - using _Ops = _IterOps<_AlgPolicy>; - - const difference_type __m1 = __middle - __first; - const difference_type __m2 = _Ops::distance(__middle, __last); - if (__m1 == __m2) - { - std::__swap_ranges<_AlgPolicy>(__first, __middle, __middle, __last); - return __middle; - } - const difference_type __g = _VSTD::__algo_gcd(__m1, __m2); - for (_RandomAccessIterator __p = __first + __g; __p != __first;) - { - value_type __t(_Ops::__iter_move(--__p)); - _RandomAccessIterator __p1 = __p; - _RandomAccessIterator __p2 = __p1 + __m1; - do - { - *__p1 = _Ops::__iter_move(__p2); - __p1 = __p2; - const difference_type __d = _Ops::distance(__p2, __last); - if (__m1 < __d) - __p2 += __m1; - else - __p2 = __first + (__m1 - __d); - } while (__p2 != __p); - *__p1 = _VSTD::move(__t); - } - return __first + __m2; +__rotate_gcd(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) { + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + using _Ops = _IterOps<_AlgPolicy>; + + const difference_type __m1 = __middle - __first; + const difference_type __m2 = _Ops::distance(__middle, __last); + if (__m1 == __m2) { + std::__swap_ranges<_AlgPolicy>(__first, __middle, __middle, __last); + return __middle; + } + const difference_type __g = std::__algo_gcd(__m1, __m2); + for (_RandomAccessIterator __p = __first + __g; __p != __first;) { + value_type __t(_Ops::__iter_move(--__p)); + _RandomAccessIterator __p1 = __p; + _RandomAccessIterator __p2 = __p1 + __m1; + do { + *__p1 = _Ops::__iter_move(__p2); + __p1 = __p2; + const difference_type __d = _Ops::distance(__p2, __last); + if (__m1 < __d) + __p2 += __m1; + else + __p2 = __first + (__m1 - __d); + } while (__p2 != __p); + *__p1 = std::move(__t); + } + return __first + __m2; } template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator -__rotate_impl(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, - _VSTD::forward_iterator_tag) -{ - typedef typename iterator_traits<_ForwardIterator>::value_type value_type; - if (is_trivially_move_assignable::value) - { - if (_IterOps<_AlgPolicy>::next(__first) == __middle) - return std::__rotate_left<_AlgPolicy>(__first, __last); - } - return std::__rotate_forward<_AlgPolicy>(__first, __middle, __last); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +__rotate_impl(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, std::forward_iterator_tag) { + typedef typename iterator_traits<_ForwardIterator>::value_type value_type; + if (is_trivially_move_assignable::value) { + if (_IterOps<_AlgPolicy>::next(__first) == __middle) + return std::__rotate_left<_AlgPolicy>(__first, __last); + } + return std::__rotate_forward<_AlgPolicy>(__first, __middle, __last); } template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR_SINCE_CXX14 _BidirectionalIterator -__rotate_impl(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, - bidirectional_iterator_tag) -{ - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - if (is_trivially_move_assignable::value) - { - if (_IterOps<_AlgPolicy>::next(__first) == __middle) - return std::__rotate_left<_AlgPolicy>(__first, __last); - if (_IterOps<_AlgPolicy>::next(__middle) == __last) - return std::__rotate_right<_AlgPolicy>(__first, __last); - } - return std::__rotate_forward<_AlgPolicy>(__first, __middle, __last); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _BidirectionalIterator __rotate_impl( + _BidirectionalIterator __first, + _BidirectionalIterator __middle, + _BidirectionalIterator __last, + bidirectional_iterator_tag) { + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + if (is_trivially_move_assignable::value) { + if (_IterOps<_AlgPolicy>::next(__first) == __middle) + return std::__rotate_left<_AlgPolicy>(__first, __last); + if (_IterOps<_AlgPolicy>::next(__middle) == __last) + return std::__rotate_right<_AlgPolicy>(__first, __last); + } + return std::__rotate_forward<_AlgPolicy>(__first, __middle, __last); } template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR_SINCE_CXX14 _RandomAccessIterator -__rotate_impl(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, - random_access_iterator_tag) -{ - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - if (is_trivially_move_assignable::value) - { - if (_IterOps<_AlgPolicy>::next(__first) == __middle) - return std::__rotate_left<_AlgPolicy>(__first, __last); - if (_IterOps<_AlgPolicy>::next(__middle) == __last) - return std::__rotate_right<_AlgPolicy>(__first, __last); - return std::__rotate_gcd<_AlgPolicy>(__first, __middle, __last); - } - return std::__rotate_forward<_AlgPolicy>(__first, __middle, __last); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _RandomAccessIterator __rotate_impl( + _RandomAccessIterator __first, + _RandomAccessIterator __middle, + _RandomAccessIterator __last, + random_access_iterator_tag) { + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + if (is_trivially_move_assignable::value) { + if (_IterOps<_AlgPolicy>::next(__first) == __middle) + return std::__rotate_left<_AlgPolicy>(__first, __last); + if (_IterOps<_AlgPolicy>::next(__middle) == __last) + return std::__rotate_right<_AlgPolicy>(__first, __last); + return std::__rotate_gcd<_AlgPolicy>(__first, __middle, __last); + } + return std::__rotate_forward<_AlgPolicy>(__first, __middle, __last); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Iterator, _Iterator> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iterator, _Iterator> __rotate(_Iterator __first, _Iterator __middle, _Sentinel __last) { - using _Ret = pair<_Iterator, _Iterator>; + using _Ret = pair<_Iterator, _Iterator>; _Iterator __last_iter = _IterOps<_AlgPolicy>::next(__middle, __last); if (__first == __middle) - return _Ret(__last_iter, __last_iter); + return _Ret(__last_iter, __last_iter); if (__middle == __last) - return _Ret(std::move(__first), std::move(__last_iter)); + return _Ret(std::move(__first), std::move(__last_iter)); using _IterCategory = typename _IterOps<_AlgPolicy>::template __iterator_category<_Iterator>; - auto __result = std::__rotate_impl<_AlgPolicy>( - std::move(__first), std::move(__middle), __last_iter, _IterCategory()); + auto __result = std::__rotate_impl<_AlgPolicy>(std::move(__first), std::move(__middle), __last_iter, _IterCategory()); return _Ret(std::move(__result), std::move(__last_iter)); } template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator -rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) -{ - return std::__rotate<_ClassicAlgPolicy>( - std::move(__first), std::move(__middle), std::move(__last)).first; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) { + return std::__rotate<_ClassicAlgPolicy>(std::move(__first), std::move(__middle), std::move(__last)).first; } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_ROTATE_H diff --git a/include/c++/v1/__algorithm/rotate_copy.h b/include/c++/v1/__algorithm/rotate_copy.h index c154649a..cddcadd2 100644 --- a/include/c++/v1/__algorithm/rotate_copy.h +++ b/include/c++/v1/__algorithm/rotate_copy.h @@ -19,11 +19,9 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, _OutputIterator __result) -{ - return _VSTD::copy(__first, __middle, _VSTD::copy(__middle, __last, __result)); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, _OutputIterator __result) { + return std::copy(__first, __middle, std::copy(__middle, __last, __result)); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/sample.h b/include/c++/v1/__algorithm/sample.h index f403ba61..ebe5180b 100644 --- a/include/c++/v1/__algorithm/sample.h +++ b/include/c++/v1/__algorithm/sample.h @@ -16,8 +16,8 @@ #include <__iterator/distance.h> #include <__iterator/iterator_traits.h> #include <__random/uniform_int_distribution.h> +#include <__type_traits/common_type.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -29,38 +29,45 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_INLINE_VISIBILITY -_SampleIterator __sample(_PopulationIterator __first, - _PopulationSentinel __last, _SampleIterator __output_iter, - _Distance __n, - _UniformRandomNumberGenerator& __g, - input_iterator_tag) { - +_LIBCPP_HIDE_FROM_ABI _SampleIterator __sample( + _PopulationIterator __first, + _PopulationSentinel __last, + _SampleIterator __output_iter, + _Distance __n, + _UniformRandomNumberGenerator& __g, + input_iterator_tag) { _Distance __k = 0; - for (; __first != __last && __k < __n; ++__first, (void) ++__k) + for (; __first != __last && __k < __n; ++__first, (void)++__k) __output_iter[__k] = *__first; _Distance __sz = __k; - for (; __first != __last; ++__first, (void) ++__k) { + for (; __first != __last; ++__first, (void)++__k) { _Distance __r = uniform_int_distribution<_Distance>(0, __k)(__g); if (__r < __sz) __output_iter[__r] = *__first; } - return __output_iter + _VSTD::min(__n, __k); + return __output_iter + std::min(__n, __k); } template -_LIBCPP_INLINE_VISIBILITY -_SampleIterator __sample(_PopulationIterator __first, - _PopulationSentinel __last, _SampleIterator __output_iter, - _Distance __n, - _UniformRandomNumberGenerator& __g, - forward_iterator_tag) { +_LIBCPP_HIDE_FROM_ABI _SampleIterator __sample( + _PopulationIterator __first, + _PopulationSentinel __last, + _SampleIterator __output_iter, + _Distance __n, + _UniformRandomNumberGenerator& __g, + forward_iterator_tag) { _Distance __unsampled_sz = _IterOps<_AlgPolicy>::distance(__first, __last); - for (__n = _VSTD::min(__n, __unsampled_sz); __n != 0; ++__first) { + for (__n = std::min(__n, __unsampled_sz); __n != 0; ++__first) { _Distance __r = uniform_int_distribution<_Distance>(0, --__unsampled_sz)(__g); if (__r < __n) { *__output_iter++ = *__first; @@ -71,39 +78,43 @@ _SampleIterator __sample(_PopulationIterator __first, } template -_LIBCPP_INLINE_VISIBILITY -_SampleIterator __sample(_PopulationIterator __first, - _PopulationSentinel __last, _SampleIterator __output_iter, - _Distance __n, _UniformRandomNumberGenerator& __g) { - _LIBCPP_ASSERT(__n >= 0, "N must be a positive number."); +_LIBCPP_HIDE_FROM_ABI _SampleIterator __sample( + _PopulationIterator __first, + _PopulationSentinel __last, + _SampleIterator __output_iter, + _Distance __n, + _UniformRandomNumberGenerator& __g) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__n >= 0, "N must be a positive number."); using _PopIterCategory = typename _IterOps<_AlgPolicy>::template __iterator_category<_PopulationIterator>; - using _Difference = typename _IterOps<_AlgPolicy>::template __difference_type<_PopulationIterator>; - using _CommonType = typename common_type<_Distance, _Difference>::type; + using _Difference = typename _IterOps<_AlgPolicy>::template __difference_type<_PopulationIterator>; + using _CommonType = typename common_type<_Distance, _Difference>::type; return std::__sample<_AlgPolicy>( - std::move(__first), std::move(__last), std::move(__output_iter), _CommonType(__n), - __g, _PopIterCategory()); + std::move(__first), std::move(__last), std::move(__output_iter), _CommonType(__n), __g, _PopIterCategory()); } -#if _LIBCPP_STD_VER > 14 -template -inline _LIBCPP_INLINE_VISIBILITY -_SampleIterator sample(_PopulationIterator __first, - _PopulationIterator __last, _SampleIterator __output_iter, - _Distance __n, _UniformRandomNumberGenerator&& __g) { - static_assert(__is_cpp17_forward_iterator<_PopulationIterator>::value || - __is_cpp17_random_access_iterator<_SampleIterator>::value, +#if _LIBCPP_STD_VER >= 17 +template +inline _LIBCPP_HIDE_FROM_ABI _SampleIterator +sample(_PopulationIterator __first, + _PopulationIterator __last, + _SampleIterator __output_iter, + _Distance __n, + _UniformRandomNumberGenerator&& __g) { + static_assert(__has_forward_iterator_category<_PopulationIterator>::value || + __has_random_access_iterator_category<_SampleIterator>::value, "SampleIterator must meet the requirements of RandomAccessIterator"); - return std::__sample<_ClassicAlgPolicy>( - std::move(__first), std::move(__last), std::move(__output_iter), __n, __g); + return std::__sample<_ClassicAlgPolicy>(std::move(__first), std::move(__last), std::move(__output_iter), __n, __g); } -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/search.h b/include/c++/v1/__algorithm/search.h index 93771be3..b82ca780 100644 --- a/include/c++/v1/__algorithm/search.h +++ b/include/c++/v1/__algorithm/search.h @@ -14,12 +14,13 @@ #include <__algorithm/iterator_operations.h> #include <__config> #include <__functional/identity.h> +#include <__functional/invoke.h> #include <__iterator/advance.h> #include <__iterator/concepts.h> #include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> #include <__type_traits/is_callable.h> #include <__utility/pair.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -28,17 +29,15 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Iter1, _Iter1> __search_forward_impl(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Pred& __pred, - _Proj1& __proj1, - _Proj2& __proj2) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> __search_forward_impl( + _Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { if (__first2 == __last2) return std::make_pair(__first1, __first1); // Everything matches an empty sequence while (true) { @@ -63,8 +62,7 @@ pair<_Iter1, _Iter1> __search_forward_impl(_Iter1 __first1, _Sent1 __last1, } // if there is a mismatch, restart with a new __first1 - if (!std::__invoke(__pred, std::__invoke(__proj1, *__m1), std::__invoke(__proj2, *__m2))) - { + if (!std::__invoke(__pred, std::__invoke(__proj1, *__m1), std::__invoke(__proj2, *__m2))) { ++__first1; break; } // else there is a match, check next elements @@ -73,21 +71,25 @@ pair<_Iter1, _Iter1> __search_forward_impl(_Iter1 __first1, _Sent1 __last1, } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Iter1, _Iter1> __search_random_access_impl(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Pred& __pred, - _Proj1& __proj1, - _Proj2& __proj2, - _DiffT1 __size1, - _DiffT2 __size2) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> __search_random_access_impl( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2, + _DiffT1 __size1, + _DiffT2 __size2) { const _Iter1 __s = __first1 + __size1 - _DiffT1(__size2 - 1); // Start of pattern match can't go beyond here while (true) { @@ -115,20 +117,18 @@ pair<_Iter1, _Iter1> __search_random_access_impl(_Iter1 __first1, _Sent1 __last1 } } -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Iter1, _Iter1> __search_impl(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Pred& __pred, - _Proj1& __proj1, - _Proj2& __proj2, - __enable_if_t<__is_cpp17_random_access_iterator<_Iter1>::value - && __is_cpp17_random_access_iterator<_Iter2>::value>* = nullptr) { - + class _Proj2, + __enable_if_t<__has_random_access_iterator_category<_Iter1>::value && + __has_random_access_iterator_category<_Iter2>::value, + int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> __search_impl( + _Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { auto __size2 = __last2 - __first2; if (__size2 == 0) return std::make_pair(__first1, __first1); @@ -138,42 +138,34 @@ pair<_Iter1, _Iter1> __search_impl(_Iter1 __first1, _Sent1 __last1, return std::make_pair(__last1, __last1); } - return std::__search_random_access_impl<_ClassicAlgPolicy>(__first1, __last1, - __first2, __last2, - __pred, - __proj1, - __proj2, - __size1, - __size2); + return std::__search_random_access_impl<_ClassicAlgPolicy>( + __first1, __last1, __first2, __last2, __pred, __proj1, __proj2, __size1, __size2); } -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Iter1, _Iter1> __search_impl(_Iter1 __first1, _Sent1 __last1, - _Iter2 __first2, _Sent2 __last2, - _Pred& __pred, - _Proj1& __proj1, - _Proj2& __proj2, - __enable_if_t<__is_cpp17_forward_iterator<_Iter1>::value - && __is_cpp17_forward_iterator<_Iter2>::value - && !(__is_cpp17_random_access_iterator<_Iter1>::value - && __is_cpp17_random_access_iterator<_Iter2>::value)>* = nullptr) { - return std::__search_forward_impl<_ClassicAlgPolicy>(__first1, __last1, - __first2, __last2, - __pred, - __proj1, - __proj2); +template < + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Pred, + class _Proj1, + class _Proj2, + __enable_if_t<__has_forward_iterator_category<_Iter1>::value && __has_forward_iterator_category<_Iter2>::value && + !(__has_random_access_iterator_category<_Iter1>::value && + __has_random_access_iterator_category<_Iter2>::value), + int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> __search_impl( + _Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { + return std::__search_forward_impl<_ClassicAlgPolicy>(__first1, __last1, __first2, __last2, __pred, __proj1, __proj2); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_ForwardIterator1 search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, - _BinaryPredicate __pred) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator1 +search(_ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardIterator2 __last2, + _BinaryPredicate __pred) { static_assert(__is_callable<_BinaryPredicate, decltype(*__first1), decltype(*__first2)>::value, "BinaryPredicate has to be callable"); auto __proj = __identity(); @@ -181,15 +173,14 @@ _ForwardIterator1 search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_ForwardIterator1 search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator1 +search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2) { return std::search(__first1, __last1, __first2, __last2, __equal_to()); } -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template -_LIBCPP_NODISCARD_EXT _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator search(_ForwardIterator __f, _ForwardIterator __l, const _Searcher& __s) { return __s(__f, __l).first; } diff --git a/include/c++/v1/__algorithm/search_n.h b/include/c++/v1/__algorithm/search_n.h index 60a07356..771647d3 100644 --- a/include/c++/v1/__algorithm/search_n.h +++ b/include/c++/v1/__algorithm/search_n.h @@ -14,14 +14,15 @@ #include <__algorithm/iterator_operations.h> #include <__config> #include <__functional/identity.h> +#include <__functional/invoke.h> #include <__iterator/advance.h> #include <__iterator/concepts.h> #include <__iterator/distance.h> #include <__iterator/iterator_traits.h> #include <__ranges/concepts.h> +#include <__type_traits/is_callable.h> #include <__utility/convert_to_integral.h> #include <__utility/pair.h> -#include // __convert_to_integral #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -30,12 +31,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Iter, _Iter> __search_n_forward_impl(_Iter __first, _Sent __last, - _SizeT __count, - const _Type& __value, - _Pred& __pred, - _Proj& __proj) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter, _Iter> __search_n_forward_impl( + _Iter __first, _Sent __last, _SizeT __count, const _Type& __value, _Pred& __pred, _Proj& __proj) { if (__count <= 0) return std::make_pair(__first, __first); while (true) { @@ -61,8 +58,7 @@ pair<_Iter, _Iter> __search_n_forward_impl(_Iter __first, _Sent __last, } // if there is a mismatch, restart with a new __first - if (!std::__invoke(__pred, std::__invoke(__proj, *__m), __value)) - { + if (!std::__invoke(__pred, std::__invoke(__proj, *__m), __value)) { __first = __m; ++__first; break; @@ -72,13 +68,8 @@ pair<_Iter, _Iter> __search_n_forward_impl(_Iter __first, _Sent __last, } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -std::pair<_Iter, _Iter> __search_n_random_access_impl(_Iter __first, _Sent __last, - _SizeT __count, - const _Type& __value, - _Pred& __pred, - _Proj& __proj, - _DiffT __size1) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 std::pair<_Iter, _Iter> __search_n_random_access_impl( + _Iter __first, _Sent __last, _SizeT __count, const _Type& __value, _Pred& __pred, _Proj& __proj, _DiffT __size1) { using difference_type = typename iterator_traits<_Iter>::difference_type; if (__count == 0) return std::make_pair(__first, __first); @@ -108,8 +99,7 @@ std::pair<_Iter, _Iter> __search_n_random_access_impl(_Iter __first, _Sent __las ++__m; // no need to check range on __m because __s guarantees we have enough source // if there is a mismatch, restart with a new __first - if (!std::__invoke(__pred, std::__invoke(__proj, *__m), __value)) - { + if (!std::__invoke(__pred, std::__invoke(__proj, *__m), __value)) { __first = __m; ++__first; break; @@ -118,61 +108,45 @@ std::pair<_Iter, _Iter> __search_n_random_access_impl(_Iter __first, _Sent __las } } -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Iter, _Iter> __search_n_impl(_Iter __first, _Sent __last, - _DiffT __count, - const _Type& __value, - _Pred& __pred, - _Proj& __proj, - __enable_if_t<__is_cpp17_random_access_iterator<_Iter>::value>* = nullptr) { - return std::__search_n_random_access_impl<_ClassicAlgPolicy>(__first, __last, - __count, - __value, - __pred, - __proj, - __last - __first); + class _Proj, + __enable_if_t<__has_random_access_iterator_category<_Iter>::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter, _Iter> +__search_n_impl(_Iter __first, _Sent __last, _DiffT __count, const _Type& __value, _Pred& __pred, _Proj& __proj) { + return std::__search_n_random_access_impl<_ClassicAlgPolicy>( + __first, __last, __count, __value, __pred, __proj, __last - __first); } -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -pair<_Iter1, _Iter1> __search_n_impl(_Iter1 __first, _Sent1 __last, - _DiffT __count, - const _Type& __value, - _Pred& __pred, - _Proj& __proj, - __enable_if_t<__is_cpp17_forward_iterator<_Iter1>::value - && !__is_cpp17_random_access_iterator<_Iter1>::value>* = nullptr) { - return std::__search_n_forward_impl<_ClassicAlgPolicy>(__first, __last, - __count, - __value, - __pred, - __proj); + class _Proj, + __enable_if_t<__has_forward_iterator_category<_Iter1>::value && + !__has_random_access_iterator_category<_Iter1>::value, + int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> +__search_n_impl(_Iter1 __first, _Sent1 __last, _DiffT __count, const _Type& __value, _Pred& __pred, _Proj& __proj) { + return std::__search_n_forward_impl<_ClassicAlgPolicy>(__first, __last, __count, __value, __pred, __proj); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_ForwardIterator search_n(_ForwardIterator __first, _ForwardIterator __last, - _Size __count, - const _Tp& __value, - _BinaryPredicate __pred) { - static_assert(__is_callable<_BinaryPredicate, decltype(*__first), const _Tp&>::value, - "BinaryPredicate has to be callable"); +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator search_n( + _ForwardIterator __first, _ForwardIterator __last, _Size __count, const _Tp& __value, _BinaryPredicate __pred) { + static_assert( + __is_callable<_BinaryPredicate, decltype(*__first), const _Tp&>::value, "BinaryPredicate has to be callable"); auto __proj = __identity(); return std::__search_n_impl(__first, __last, std::__convert_to_integral(__count), __value, __pred, __proj).first; } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_ForwardIterator search_n(_ForwardIterator __first, _ForwardIterator __last, _Size __count, const _Tp& __value) { +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +search_n(_ForwardIterator __first, _ForwardIterator __last, _Size __count, const _Tp& __value) { return std::search_n(__first, __last, std::__convert_to_integral(__count), __value, __equal_to()); } diff --git a/include/c++/v1/__algorithm/set_difference.h b/include/c++/v1/__algorithm/set_difference.h index cffdc8fc..f414bcec 100644 --- a/include/c++/v1/__algorithm/set_difference.h +++ b/include/c++/v1/__algorithm/set_difference.h @@ -17,14 +17,17 @@ #include <__functional/identity.h> #include <__functional/invoke.h> #include <__iterator/iterator_traits.h> +#include <__type_traits/remove_cvref.h> #include <__utility/move.h> #include <__utility/pair.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template @@ -55,7 +58,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_d _OutputIterator __result, _Compare __comp) { return std::__set_difference<_ClassicAlgPolicy, __comp_ref_type<_Compare> >( - __first1, __last1, __first2, __last2, __result, __comp) + __first1, __last1, __first2, __last2, __result, __comp) .second; } @@ -66,16 +69,11 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_d _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) { - return std::__set_difference<_ClassicAlgPolicy>( - __first1, - __last1, - __first2, - __last2, - __result, - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()).second; + return std::__set_difference<_ClassicAlgPolicy>(__first1, __last1, __first2, __last2, __result, __less<>()).second; } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_SET_DIFFERENCE_H diff --git a/include/c++/v1/__algorithm/set_intersection.h b/include/c++/v1/__algorithm/set_intersection.h index 9fa7799a..bb0d86cd 100644 --- a/include/c++/v1/__algorithm/set_intersection.h +++ b/include/c++/v1/__algorithm/set_intersection.h @@ -12,15 +12,23 @@ #include <__algorithm/comp.h> #include <__algorithm/comp_ref_type.h> #include <__algorithm/iterator_operations.h> +#include <__algorithm/lower_bound.h> #include <__config> +#include <__functional/identity.h> #include <__iterator/iterator_traits.h> #include <__iterator/next.h> +#include <__type_traits/is_same.h> +#include <__utility/exchange.h> #include <__utility/move.h> +#include <__utility/swap.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template @@ -35,10 +43,103 @@ struct __set_intersection_result { : __in1_(std::move(__in_iter1)), __in2_(std::move(__in_iter2)), __out_(std::move(__out_iter)) {} }; -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __set_intersection_result<_InIter1, _InIter2, _OutIter> +// Helper for __set_intersection() with one-sided binary search: populate result and advance input iterators if they +// are found to potentially contain the same value in two consecutive calls. This function is very intimately related to +// the way it is used and doesn't attempt to abstract that, it's not appropriate for general usage outside of its +// context. +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void __set_intersection_add_output_if_equal( + bool __may_be_equal, + _InForwardIter1& __first1, + _InForwardIter2& __first2, + _OutIter& __result, + bool& __prev_may_be_equal) { + if (__may_be_equal && __prev_may_be_equal) { + *__result = *__first1; + ++__result; + ++__first1; + ++__first2; + __prev_may_be_equal = false; + } else { + __prev_may_be_equal = __may_be_equal; + } +} + +// With forward iterators we can make multiple passes over the data, allowing the use of one-sided binary search to +// reduce best-case complexity to log(N). Understanding how we can use binary search and still respect complexity +// guarantees is _not_ straightforward: the guarantee is "at most 2*(N+M)-1 comparisons", and one-sided binary search +// will necessarily overshoot depending on the position of the needle in the haystack -- for instance, if we're +// searching for 3 in (1, 2, 3, 4), we'll check if 3<1, then 3<2, then 3<4, and, finally, 3<3, for a total of 4 +// comparisons, when linear search would have yielded 3. However, because we won't need to perform the intervening +// reciprocal comparisons (ie 1<3, 2<3, 4<3), that extra comparison doesn't run afoul of the guarantee. Additionally, +// this type of scenario can only happen for match distances of up to 5 elements, because 2*log2(8) is 6, and we'll +// still be worse-off at position 5 of an 8-element set. From then onwards these scenarios can't happen. TL;DR: we'll be +// 1 comparison worse-off compared to the classic linear-searching algorithm if matching position 3 of a set with 4 +// elements, or position 5 if the set has 7 or 8 elements, but we'll never exceed the complexity guarantees from the +// standard. +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI +_LIBCPP_CONSTEXPR_SINCE_CXX20 __set_intersection_result<_InForwardIter1, _InForwardIter2, _OutIter> __set_intersection( - _InIter1 __first1, _Sent1 __last1, _InIter2 __first2, _Sent2 __last2, _OutIter __result, _Compare&& __comp) { + _InForwardIter1 __first1, + _Sent1 __last1, + _InForwardIter2 __first2, + _Sent2 __last2, + _OutIter __result, + _Compare&& __comp, + std::forward_iterator_tag, + std::forward_iterator_tag) { + _LIBCPP_CONSTEXPR std::__identity __proj; + bool __prev_may_be_equal = false; + + while (__first2 != __last2) { + _InForwardIter1 __first1_next = + std::__lower_bound_onesided<_AlgPolicy>(__first1, __last1, *__first2, __comp, __proj); + std::swap(__first1_next, __first1); + // keeping in mind that a==b iff !(a(__first2, __last2, *__first1, __comp, __proj); + std::swap(__first2_next, __first2); + std::__set_intersection_add_output_if_equal( + __first2 == __first2_next, __first1, __first2, __result, __prev_may_be_equal); + } + return __set_intersection_result<_InForwardIter1, _InForwardIter2, _OutIter>( + _IterOps<_AlgPolicy>::next(std::move(__first1), std::move(__last1)), + _IterOps<_AlgPolicy>::next(std::move(__first2), std::move(__last2)), + std::move(__result)); +} + +// input iterators are not suitable for multipass algorithms, so we stick to the classic single-pass version +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI +_LIBCPP_CONSTEXPR_SINCE_CXX20 __set_intersection_result<_InInputIter1, _InInputIter2, _OutIter> +__set_intersection( + _InInputIter1 __first1, + _Sent1 __last1, + _InInputIter2 __first2, + _Sent2 __last2, + _OutIter __result, + _Compare&& __comp, + std::input_iterator_tag, + std::input_iterator_tag) { while (__first1 != __last1 && __first2 != __last2) { if (__comp(*__first1, *__first2)) ++__first1; @@ -52,12 +153,28 @@ __set_intersection( } } - return __set_intersection_result<_InIter1, _InIter2, _OutIter>( + return __set_intersection_result<_InInputIter1, _InInputIter2, _OutIter>( _IterOps<_AlgPolicy>::next(std::move(__first1), std::move(__last1)), _IterOps<_AlgPolicy>::next(std::move(__first2), std::move(__last2)), std::move(__result)); } +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI +_LIBCPP_CONSTEXPR_SINCE_CXX20 __set_intersection_result<_InIter1, _InIter2, _OutIter> +__set_intersection( + _InIter1 __first1, _Sent1 __last1, _InIter2 __first2, _Sent2 __last2, _OutIter __result, _Compare&& __comp) { + return std::__set_intersection<_AlgPolicy>( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + std::forward<_Compare>(__comp), + typename std::_IterOps<_AlgPolicy>::template __iterator_category<_InIter1>(), + typename std::_IterOps<_AlgPolicy>::template __iterator_category<_InIter2>()); +} + template inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_intersection( _InputIterator1 __first1, @@ -89,11 +206,12 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_i std::move(__first2), std::move(__last2), std::move(__result), - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()) + __less<>()) .__out_; } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_SET_INTERSECTION_H diff --git a/include/c++/v1/__algorithm/set_symmetric_difference.h b/include/c++/v1/__algorithm/set_symmetric_difference.h index bcb09587..db36665a 100644 --- a/include/c++/v1/__algorithm/set_symmetric_difference.h +++ b/include/c++/v1/__algorithm/set_symmetric_difference.h @@ -22,6 +22,9 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template @@ -96,10 +99,11 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_symmetri std::move(__first2), std::move(__last2), std::move(__result), - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()); + __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_SET_SYMMETRIC_DIFFERENCE_H diff --git a/include/c++/v1/__algorithm/set_union.h b/include/c++/v1/__algorithm/set_union.h index 4d154b81..a79c50fd 100644 --- a/include/c++/v1/__algorithm/set_union.h +++ b/include/c++/v1/__algorithm/set_union.h @@ -22,6 +22,9 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template @@ -92,10 +95,11 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_union( std::move(__first2), std::move(__last2), std::move(__result), - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()); + __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_SET_UNION_H diff --git a/include/c++/v1/__algorithm/shift_left.h b/include/c++/v1/__algorithm/shift_left.h index 33f06d57..06cd7c5f 100644 --- a/include/c++/v1/__algorithm/shift_left.h +++ b/include/c++/v1/__algorithm/shift_left.h @@ -12,45 +12,48 @@ #include <__algorithm/move.h> #include <__config> #include <__iterator/iterator_traits.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template -inline _LIBCPP_INLINE_VISIBILITY constexpr -_ForwardIterator -shift_left(_ForwardIterator __first, _ForwardIterator __last, - typename iterator_traits<_ForwardIterator>::difference_type __n) -{ - if (__n == 0) { - return __last; +inline _LIBCPP_HIDE_FROM_ABI constexpr _ForwardIterator +shift_left(_ForwardIterator __first, + _ForwardIterator __last, + typename iterator_traits<_ForwardIterator>::difference_type __n) { + if (__n == 0) { + return __last; + } + + _ForwardIterator __m = __first; + if constexpr (__has_random_access_iterator_category<_ForwardIterator>::value) { + if (__n >= __last - __first) { + return __first; } - - _ForwardIterator __m = __first; - if constexpr (__is_cpp17_random_access_iterator<_ForwardIterator>::value) { - if (__n >= __last - __first) { - return __first; - } - __m += __n; - } else { - for (; __n > 0; --__n) { - if (__m == __last) { - return __first; - } - ++__m; - } + __m += __n; + } else { + for (; __n > 0; --__n) { + if (__m == __last) { + return __first; + } + ++__m; } - return _VSTD::move(__m, __last, __first); + } + return std::move(__m, __last, __first); } -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_SHIFT_LEFT_H diff --git a/include/c++/v1/__algorithm/shift_right.h b/include/c++/v1/__algorithm/shift_right.h index 14bc7615..01853057 100644 --- a/include/c++/v1/__algorithm/shift_right.h +++ b/include/c++/v1/__algorithm/shift_right.h @@ -15,88 +15,91 @@ #include <__config> #include <__iterator/iterator_traits.h> #include <__utility/swap.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template -inline _LIBCPP_INLINE_VISIBILITY constexpr -_ForwardIterator -shift_right(_ForwardIterator __first, _ForwardIterator __last, - typename iterator_traits<_ForwardIterator>::difference_type __n) -{ - if (__n == 0) { - return __first; - } +inline _LIBCPP_HIDE_FROM_ABI constexpr _ForwardIterator +shift_right(_ForwardIterator __first, + _ForwardIterator __last, + typename iterator_traits<_ForwardIterator>::difference_type __n) { + if (__n == 0) { + return __first; + } - if constexpr (__is_cpp17_random_access_iterator<_ForwardIterator>::value) { - decltype(__n) __d = __last - __first; - if (__n >= __d) { - return __last; - } - _ForwardIterator __m = __first + (__d - __n); - return _VSTD::move_backward(__first, __m, __last); - } else if constexpr (__is_cpp17_bidirectional_iterator<_ForwardIterator>::value) { - _ForwardIterator __m = __last; - for (; __n > 0; --__n) { - if (__m == __first) { - return __last; - } - --__m; - } - return _VSTD::move_backward(__first, __m, __last); - } else { - _ForwardIterator __ret = __first; - for (; __n > 0; --__n) { - if (__ret == __last) { - return __last; - } - ++__ret; - } + if constexpr (__has_random_access_iterator_category<_ForwardIterator>::value) { + decltype(__n) __d = __last - __first; + if (__n >= __d) { + return __last; + } + _ForwardIterator __m = __first + (__d - __n); + return std::move_backward(__first, __m, __last); + } else if constexpr (__has_bidirectional_iterator_category<_ForwardIterator>::value) { + _ForwardIterator __m = __last; + for (; __n > 0; --__n) { + if (__m == __first) { + return __last; + } + --__m; + } + return std::move_backward(__first, __m, __last); + } else { + _ForwardIterator __ret = __first; + for (; __n > 0; --__n) { + if (__ret == __last) { + return __last; + } + ++__ret; + } - // We have an __n-element scratch space from __first to __ret. - // Slide an __n-element window [__trail, __lead) from left to right. - // We're essentially doing swap_ranges(__first, __ret, __trail, __lead) - // over and over; but once __lead reaches __last we needn't bother - // to save the values of elements [__trail, __last). + // We have an __n-element scratch space from __first to __ret. + // Slide an __n-element window [__trail, __lead) from left to right. + // We're essentially doing swap_ranges(__first, __ret, __trail, __lead) + // over and over; but once __lead reaches __last we needn't bother + // to save the values of elements [__trail, __last). - auto __trail = __first; - auto __lead = __ret; - while (__trail != __ret) { - if (__lead == __last) { - _VSTD::move(__first, __trail, __ret); - return __ret; - } - ++__trail; - ++__lead; - } + auto __trail = __first; + auto __lead = __ret; + while (__trail != __ret) { + if (__lead == __last) { + std::move(__first, __trail, __ret); + return __ret; + } + ++__trail; + ++__lead; + } - _ForwardIterator __mid = __first; - while (true) { - if (__lead == __last) { - __trail = _VSTD::move(__mid, __ret, __trail); - _VSTD::move(__first, __mid, __trail); - return __ret; - } - swap(*__mid, *__trail); - ++__mid; - ++__trail; - ++__lead; - if (__mid == __ret) { - __mid = __first; - } - } + _ForwardIterator __mid = __first; + while (true) { + if (__lead == __last) { + __trail = std::move(__mid, __ret, __trail); + std::move(__first, __mid, __trail); + return __ret; + } + swap(*__mid, *__trail); + ++__mid; + ++__trail; + ++__lead; + if (__mid == __ret) { + __mid = __first; + } } + } } -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_SHIFT_RIGHT_H diff --git a/include/c++/v1/__algorithm/shuffle.h b/include/c++/v1/__algorithm/shuffle.h index f7bce686..c9c56ce8 100644 --- a/include/c++/v1/__algorithm/shuffle.h +++ b/include/c++/v1/__algorithm/shuffle.h @@ -11,7 +11,6 @@ #include <__algorithm/iterator_operations.h> #include <__config> -#include <__debug> #include <__iterator/iterator_traits.h> #include <__random/uniform_int_distribution.h> #include <__utility/forward.h> @@ -29,12 +28,12 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -class _LIBCPP_TYPE_VIS __libcpp_debug_randomizer { +class _LIBCPP_EXPORTED_FROM_ABI __libcpp_debug_randomizer { public: - __libcpp_debug_randomizer() { + _LIBCPP_HIDE_FROM_ABI __libcpp_debug_randomizer() { __state_ = __seed(); - __inc_ = __state_ + 0xda3e39cb94b95bdbULL; - __inc_ = (__inc_ << 1) | 1; + __inc_ = __state_ + 0xda3e39cb94b95bdbULL; + __inc_ = (__inc_ << 1) | 1; } typedef uint_fast32_t result_type; @@ -43,7 +42,7 @@ class _LIBCPP_TYPE_VIS __libcpp_debug_randomizer { _LIBCPP_HIDE_FROM_ABI result_type operator()() { uint_fast64_t __oldstate = __state_; - __state_ = __oldstate * 6364136223846793005ULL + __inc_; + __state_ = __oldstate * 6364136223846793005ULL + __inc_; return __oldstate >> 32; } @@ -63,102 +62,95 @@ class _LIBCPP_TYPE_VIS __libcpp_debug_randomizer { } }; -#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE) \ - || defined(_LIBCPP_BUILDING_LIBRARY) -class _LIBCPP_TYPE_VIS __rs_default; +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE) || defined(_LIBCPP_BUILDING_LIBRARY) +class _LIBCPP_EXPORTED_FROM_ABI __rs_default; -_LIBCPP_FUNC_VIS __rs_default __rs_get(); +_LIBCPP_EXPORTED_FROM_ABI __rs_default __rs_get(); -class _LIBCPP_TYPE_VIS __rs_default -{ - static unsigned __c_; +class _LIBCPP_EXPORTED_FROM_ABI __rs_default { + static unsigned __c_; + + __rs_default(); - __rs_default(); public: - typedef uint_fast32_t result_type; + typedef uint_fast32_t result_type; - static const result_type _Min = 0; - static const result_type _Max = 0xFFFFFFFF; + static const result_type _Min = 0; + static const result_type _Max = 0xFFFFFFFF; - __rs_default(const __rs_default&); - ~__rs_default(); + __rs_default(const __rs_default&); + ~__rs_default(); - result_type operator()(); + result_type operator()(); - static _LIBCPP_CONSTEXPR result_type min() {return _Min;} - static _LIBCPP_CONSTEXPR result_type max() {return _Max;} + static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR result_type min() { return _Min; } + static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR result_type max() { return _Max; } - friend _LIBCPP_FUNC_VIS __rs_default __rs_get(); + friend _LIBCPP_EXPORTED_FROM_ABI __rs_default __rs_get(); }; -_LIBCPP_FUNC_VIS __rs_default __rs_get(); +_LIBCPP_EXPORTED_FROM_ABI __rs_default __rs_get(); template _LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_IN_CXX14 void -random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - typedef uniform_int_distribution _Dp; - typedef typename _Dp::param_type _Pp; - difference_type __d = __last - __first; - if (__d > 1) - { - _Dp __uid; - __rs_default __g = __rs_get(); - for (--__last, (void) --__d; __first < __last; ++__first, (void) --__d) - { - difference_type __i = __uid(__g, _Pp(0, __d)); - if (__i != difference_type(0)) - swap(*__first, *(__first + __i)); - } +random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) { + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef uniform_int_distribution _Dp; + typedef typename _Dp::param_type _Pp; + difference_type __d = __last - __first; + if (__d > 1) { + _Dp __uid; + __rs_default __g = __rs_get(); + for (--__last, (void)--__d; __first < __last; ++__first, (void)--__d) { + difference_type __i = __uid(__g, _Pp(0, __d)); + if (__i != difference_type(0)) + swap(*__first, *(__first + __i)); } + } } template _LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_IN_CXX14 void -random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, -#ifndef _LIBCPP_CXX03_LANG +random_shuffle(_RandomAccessIterator __first, + _RandomAccessIterator __last, +# ifndef _LIBCPP_CXX03_LANG _RandomNumberGenerator&& __rand) -#else +# else _RandomNumberGenerator& __rand) -#endif +# endif { - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - difference_type __d = __last - __first; - if (__d > 1) - { - for (--__last; __first < __last; ++__first, (void) --__d) - { - difference_type __i = __rand(__d); - if (__i != difference_type(0)) - swap(*__first, *(__first + __i)); - } + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + difference_type __d = __last - __first; + if (__d > 1) { + for (--__last; __first < __last; ++__first, (void)--__d) { + difference_type __i = __rand(__d); + if (__i != difference_type(0)) + swap(*__first, *(__first + __i)); } + } } #endif template -_LIBCPP_HIDE_FROM_ABI _RandomAccessIterator __shuffle( - _RandomAccessIterator __first, _Sentinel __last_sentinel, _UniformRandomNumberGenerator&& __g) { - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - typedef uniform_int_distribution _Dp; - typedef typename _Dp::param_type _Pp; - - auto __original_last = _IterOps<_AlgPolicy>::next(__first, __last_sentinel); - auto __last = __original_last; - difference_type __d = __last - __first; - if (__d > 1) - { - _Dp __uid; - for (--__last, (void) --__d; __first < __last; ++__first, (void) --__d) - { - difference_type __i = __uid(__g, _Pp(0, __d)); - if (__i != difference_type(0)) - _IterOps<_AlgPolicy>::iter_swap(__first, __first + __i); - } +_LIBCPP_HIDE_FROM_ABI _RandomAccessIterator +__shuffle(_RandomAccessIterator __first, _Sentinel __last_sentinel, _UniformRandomNumberGenerator&& __g) { + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef uniform_int_distribution _Dp; + typedef typename _Dp::param_type _Pp; + + auto __original_last = _IterOps<_AlgPolicy>::next(__first, __last_sentinel); + auto __last = __original_last; + difference_type __d = __last - __first; + if (__d > 1) { + _Dp __uid; + for (--__last, (void)--__d; __first < __last; ++__first, (void)--__d) { + difference_type __i = __uid(__g, _Pp(0, __d)); + if (__i != difference_type(0)) + _IterOps<_AlgPolicy>::iter_swap(__first, __first + __i); } + } - return __original_last; + return __original_last; } template diff --git a/include/c++/v1/__algorithm/sift_down.h b/include/c++/v1/__algorithm/sift_down.h index e3972fb6..42803e30 100644 --- a/include/c++/v1/__algorithm/sift_down.h +++ b/include/c++/v1/__algorithm/sift_down.h @@ -19,96 +19,100 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void -__sift_down(_RandomAccessIterator __first, _Compare&& __comp, +__sift_down(_RandomAccessIterator __first, + _Compare&& __comp, typename iterator_traits<_RandomAccessIterator>::difference_type __len, - _RandomAccessIterator __start) -{ - using _Ops = _IterOps<_AlgPolicy>; + _RandomAccessIterator __start) { + using _Ops = _IterOps<_AlgPolicy>; - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - // left-child of __start is at 2 * __start + 1 - // right-child of __start is at 2 * __start + 2 - difference_type __child = __start - __first; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + // left-child of __start is at 2 * __start + 1 + // right-child of __start is at 2 * __start + 2 + difference_type __child = __start - __first; - if (__len < 2 || (__len - 2) / 2 < __child) - return; + if (__len < 2 || (__len - 2) / 2 < __child) + return; - __child = 2 * __child + 1; - _RandomAccessIterator __child_i = __first + __child; + __child = 2 * __child + 1; + _RandomAccessIterator __child_i = __first + __child; + + if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + difference_type(1)))) { + // right-child exists and is greater than left-child + ++__child_i; + ++__child; + } + + // check if we are in heap-order + if (__comp(*__child_i, *__start)) + // we are, __start is larger than its largest child + return; + + value_type __top(_Ops::__iter_move(__start)); + do { + // we are not in heap-order, swap the parent with its largest child + *__start = _Ops::__iter_move(__child_i); + __start = __child_i; + + if ((__len - 2) / 2 < __child) + break; + + // recompute the child based off of the updated parent + __child = 2 * __child + 1; + __child_i = __first + __child; if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + difference_type(1)))) { - // right-child exists and is greater than left-child - ++__child_i; - ++__child; + // right-child exists and is greater than left-child + ++__child_i; + ++__child; } // check if we are in heap-order - if (__comp(*__child_i, *__start)) - // we are, __start is larger than its largest child - return; - - value_type __top(_Ops::__iter_move(__start)); - do - { - // we are not in heap-order, swap the parent with its largest child - *__start = _Ops::__iter_move(__child_i); - __start = __child_i; - - if ((__len - 2) / 2 < __child) - break; - - // recompute the child based off of the updated parent - __child = 2 * __child + 1; - __child_i = __first + __child; - - if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + difference_type(1)))) { - // right-child exists and is greater than left-child - ++__child_i; - ++__child; - } - - // check if we are in heap-order - } while (!__comp(*__child_i, __top)); - *__start = _VSTD::move(__top); + } while (!__comp(*__child_i, __top)); + *__start = std::move(__top); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _RandomAccessIterator -__floyd_sift_down(_RandomAccessIterator __first, _Compare&& __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len) -{ - using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type; - _LIBCPP_ASSERT(__len >= 2, "shouldn't be called unless __len >= 2"); - - _RandomAccessIterator __hole = __first; - _RandomAccessIterator __child_i = __first; - difference_type __child = 0; - - while (true) { - __child_i += difference_type(__child + 1); - __child = 2 * __child + 1; - - if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + difference_type(1)))) { - // right-child exists and is greater than left-child - ++__child_i; - ++__child; - } - - // swap __hole with its largest child - *__hole = _IterOps<_AlgPolicy>::__iter_move(__child_i); - __hole = __child_i; - - // if __hole is now a leaf, we're done - if (__child > (__len - 2) / 2) - return __hole; +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _RandomAccessIterator __floyd_sift_down( + _RandomAccessIterator __first, + _Compare&& __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len) { + using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type; + _LIBCPP_ASSERT_INTERNAL(__len >= 2, "shouldn't be called unless __len >= 2"); + + _RandomAccessIterator __hole = __first; + _RandomAccessIterator __child_i = __first; + difference_type __child = 0; + + while (true) { + __child_i += difference_type(__child + 1); + __child = 2 * __child + 1; + + if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + difference_type(1)))) { + // right-child exists and is greater than left-child + ++__child_i; + ++__child; } + + // swap __hole with its largest child + *__hole = _IterOps<_AlgPolicy>::__iter_move(__child_i); + __hole = __child_i; + + // if __hole is now a leaf, we're done + if (__child > (__len - 2) / 2) + return __hole; + } } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_SIFT_DOWN_H diff --git a/include/c++/v1/__algorithm/sort.h b/include/c++/v1/__algorithm/sort.h index 24e30a42..07b58146 100644 --- a/include/c++/v1/__algorithm/sort.h +++ b/include/c++/v1/__algorithm/sort.h @@ -11,23 +11,27 @@ #include <__algorithm/comp.h> #include <__algorithm/comp_ref_type.h> +#include <__algorithm/iter_swap.h> #include <__algorithm/iterator_operations.h> #include <__algorithm/min_element.h> #include <__algorithm/partial_sort.h> #include <__algorithm/unwrap_iter.h> +#include <__assert> +#include <__bit/blsr.h> +#include <__bit/countl.h> +#include <__bit/countr.h> #include <__config> -#include <__debug> #include <__debug_utils/randomize_range.h> +#include <__debug_utils/strict_weak_ordering_check.h> #include <__functional/operations.h> #include <__functional/ranges_operations.h> #include <__iterator/iterator_traits.h> -#include <__memory/destruct_n.h> -#include <__memory/unique_ptr.h> +#include <__type_traits/conditional.h> +#include <__type_traits/disjunction.h> #include <__type_traits/is_arithmetic.h> -#include <__type_traits/is_trivially_copy_assignable.h> -#include <__type_traits/is_trivially_copy_constructible.h> +#include <__type_traits/is_constant_evaluated.h> #include <__utility/move.h> -#include +#include <__utility/pair.h> #include #include @@ -35,169 +39,104 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_PUSH_MACROS +#include <__undef_macros> -// Wraps an algorithm policy tag and a comparator in a single struct, used to pass the policy tag around without -// changing the number of template arguments (to keep the ABI stable). This is only used for the "range" policy tag. -// -// To create an object of this type, use `_WrapAlgPolicy::type` -- see the specialization below for the rationale. -template -struct _WrapAlgPolicy { - using type = _WrapAlgPolicy; - - using _AlgPolicy = _PolicyT; - using _Comp = _CompT; - _Comp& __comp; - - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 - _WrapAlgPolicy(_Comp& __c) : __comp(__c) {} -}; - -// Specialization for the "classic" policy tag that avoids creating a struct and simply defines an alias for the -// comparator. When unwrapping, a pristine comparator is always considered to have the "classic" tag attached. Passing -// the pristine comparator where possible allows using template instantiations from the dylib. -template -struct _WrapAlgPolicy<_PolicyT, _CompT, __enable_if_t::value> > { - using type = _CompT; -}; - -// Unwraps a pristine functor (e.g. `std::less`) as if it were wrapped using `_WrapAlgPolicy`. The policy tag is always -// set to "classic". -template -struct _UnwrapAlgPolicy { - using _AlgPolicy = _ClassicAlgPolicy; - using _Comp = _CompT; - - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static - _Comp __get_comp(_Comp __comp) { return __comp; } -}; - -// Unwraps a `_WrapAlgPolicy` struct. -template -struct _UnwrapAlgPolicy<_WrapAlgPolicy<_Ts...> > { - using _Wrapped = _WrapAlgPolicy<_Ts...>; - using _AlgPolicy = typename _Wrapped::_AlgPolicy; - using _Comp = typename _Wrapped::_Comp; - - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static - _Comp __get_comp(_Wrapped& __w) { return __w.__comp; } -}; +_LIBCPP_BEGIN_NAMESPACE_STD // stable, 2-3 compares, 0-2 swaps template -_LIBCPP_HIDE_FROM_ABI -_LIBCPP_CONSTEXPR_SINCE_CXX14 unsigned __sort3(_ForwardIterator __x, _ForwardIterator __y, _ForwardIterator __z, - _Compare __c) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 unsigned +__sort3(_ForwardIterator __x, _ForwardIterator __y, _ForwardIterator __z, _Compare __c) { using _Ops = _IterOps<_AlgPolicy>; unsigned __r = 0; - if (!__c(*__y, *__x)) // if x <= y + if (!__c(*__y, *__x)) // if x <= y { - if (!__c(*__z, *__y)) // if y <= z - return __r; // x <= y && y <= z - // x <= y && y > z - _Ops::iter_swap(__y, __z); // x <= z && y < z + if (!__c(*__z, *__y)) // if y <= z + return __r; // x <= y && y <= z + // x <= y && y > z + _Ops::iter_swap(__y, __z); // x <= z && y < z __r = 1; - if (__c(*__y, *__x)) // if x > y + if (__c(*__y, *__x)) // if x > y { - _Ops::iter_swap(__x, __y); // x < y && y <= z + _Ops::iter_swap(__x, __y); // x < y && y <= z __r = 2; } - return __r; // x <= y && y < z + return __r; // x <= y && y < z } - if (__c(*__z, *__y)) // x > y, if y > z + if (__c(*__z, *__y)) // x > y, if y > z { - _Ops::iter_swap(__x, __z); // x < y && y < z + _Ops::iter_swap(__x, __z); // x < y && y < z __r = 1; return __r; } - _Ops::iter_swap(__x, __y); // x > y && y <= z - __r = 1; // x < y && x <= z - if (__c(*__z, *__y)) // if y > z + _Ops::iter_swap(__x, __y); // x > y && y <= z + __r = 1; // x < y && x <= z + if (__c(*__z, *__y)) // if y > z { - _Ops::iter_swap(__y, __z); // x <= y && y < z + _Ops::iter_swap(__y, __z); // x <= y && y < z __r = 2; } return __r; -} // x <= y && y <= z +} // x <= y && y <= z // stable, 3-6 compares, 0-5 swaps template -_LIBCPP_HIDE_FROM_ABI -unsigned __sort4(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3, _ForwardIterator __x4, - _Compare __c) { +_LIBCPP_HIDE_FROM_ABI void +__sort4(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3, _ForwardIterator __x4, _Compare __c) { using _Ops = _IterOps<_AlgPolicy>; - - unsigned __r = std::__sort3<_AlgPolicy, _Compare>(__x1, __x2, __x3, __c); + std::__sort3<_AlgPolicy, _Compare>(__x1, __x2, __x3, __c); if (__c(*__x4, *__x3)) { _Ops::iter_swap(__x3, __x4); - ++__r; if (__c(*__x3, *__x2)) { _Ops::iter_swap(__x2, __x3); - ++__r; if (__c(*__x2, *__x1)) { _Ops::iter_swap(__x1, __x2); - ++__r; } } } - return __r; } // stable, 4-10 compares, 0-9 swaps -template -_LIBCPP_HIDDEN unsigned __sort5(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3, - _ForwardIterator __x4, _ForwardIterator __x5, _WrappedComp __wrapped_comp) { - using _Unwrap = _UnwrapAlgPolicy<_WrappedComp>; - using _AlgPolicy = typename _Unwrap::_AlgPolicy; +template +_LIBCPP_HIDE_FROM_ABI void +__sort5(_ForwardIterator __x1, + _ForwardIterator __x2, + _ForwardIterator __x3, + _ForwardIterator __x4, + _ForwardIterator __x5, + _Comp __comp) { using _Ops = _IterOps<_AlgPolicy>; - using _Compare = typename _Unwrap::_Comp; - _Compare __c = _Unwrap::__get_comp(__wrapped_comp); - - unsigned __r = std::__sort4<_AlgPolicy, _Compare>(__x1, __x2, __x3, __x4, __c); - if (__c(*__x5, *__x4)) { + std::__sort4<_AlgPolicy, _Comp>(__x1, __x2, __x3, __x4, __comp); + if (__comp(*__x5, *__x4)) { _Ops::iter_swap(__x4, __x5); - ++__r; - if (__c(*__x4, *__x3)) { + if (__comp(*__x4, *__x3)) { _Ops::iter_swap(__x3, __x4); - ++__r; - if (__c(*__x3, *__x2)) { + if (__comp(*__x3, *__x2)) { _Ops::iter_swap(__x2, __x3); - ++__r; - if (__c(*__x2, *__x1)) { + if (__comp(*__x2, *__x1)) { _Ops::iter_swap(__x1, __x2); - ++__r; } } } } - return __r; -} - -template -_LIBCPP_HIDE_FROM_ABI unsigned __sort5_wrap_policy( - _ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3, _ForwardIterator __x4, _ForwardIterator __x5, - _Compare __c) { - using _WrappedComp = typename _WrapAlgPolicy<_AlgPolicy, _Compare>::type; - _WrappedComp __wrapped_comp(__c); - return std::__sort5<_WrappedComp>( - std::move(__x1), std::move(__x2), std::move(__x3), std::move(__x4), std::move(__x5), __wrapped_comp); } // The comparator being simple is a prerequisite for using the branchless optimization. template struct __is_simple_comparator : false_type {}; -template -struct __is_simple_comparator<__less<_Tp>&> : true_type {}; +template <> +struct __is_simple_comparator<__less<>&> : true_type {}; template struct __is_simple_comparator&> : true_type {}; template struct __is_simple_comparator&> : true_type {}; -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template <> struct __is_simple_comparator : true_type {}; template <> @@ -206,54 +145,72 @@ struct __is_simple_comparator : true_type {}; template ::value_type> using __use_branchless_sort = - integral_constant::value && sizeof(_Tp) <= sizeof(void*) && - is_arithmetic<_Tp>::value && __is_simple_comparator<_Compare>::value>; + integral_constant::value && sizeof(_Tp) <= sizeof(void*) && + is_arithmetic<_Tp>::value && __is_simple_comparator<_Compare>::value>; + +namespace __detail { + +// Size in bits for the bitset in use. +enum { __block_size = sizeof(uint64_t) * 8 }; + +} // namespace __detail // Ensures that __c(*__x, *__y) is true by swapping *__x and *__y if necessary. template inline _LIBCPP_HIDE_FROM_ABI void __cond_swap(_RandomAccessIterator __x, _RandomAccessIterator __y, _Compare __c) { // Note: this function behaves correctly even with proxy iterators (because it relies on `value_type`). using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; - bool __r = __c(*__x, *__y); + bool __r = __c(*__x, *__y); value_type __tmp = __r ? *__x : *__y; - *__y = __r ? *__y : *__x; - *__x = __tmp; + *__y = __r ? *__y : *__x; + *__x = __tmp; } // Ensures that *__x, *__y and *__z are ordered according to the comparator __c, // under the assumption that *__y and *__z are already ordered. template -inline _LIBCPP_HIDE_FROM_ABI void __partially_sorted_swap(_RandomAccessIterator __x, _RandomAccessIterator __y, - _RandomAccessIterator __z, _Compare __c) { +inline _LIBCPP_HIDE_FROM_ABI void +__partially_sorted_swap(_RandomAccessIterator __x, _RandomAccessIterator __y, _RandomAccessIterator __z, _Compare __c) { // Note: this function behaves correctly even with proxy iterators (because it relies on `value_type`). using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; - bool __r = __c(*__z, *__x); + bool __r = __c(*__z, *__x); value_type __tmp = __r ? *__z : *__x; - *__z = __r ? *__x : *__z; - __r = __c(__tmp, *__y); - *__x = __r ? *__x : *__y; - *__y = __r ? *__y : __tmp; + *__z = __r ? *__x : *__z; + __r = __c(__tmp, *__y); + *__x = __r ? *__x : *__y; + *__y = __r ? *__y : __tmp; } -template -inline _LIBCPP_HIDE_FROM_ABI __enable_if_t<__use_branchless_sort<_Compare, _RandomAccessIterator>::value, void> -__sort3_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, - _Compare __c) { +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI void __sort3_maybe_branchless( + _RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, _Compare __c) { std::__cond_swap<_Compare>(__x2, __x3, __c); std::__partially_sorted_swap<_Compare>(__x1, __x2, __x3, __c); } -template -inline _LIBCPP_HIDE_FROM_ABI __enable_if_t::value, void> -__sort3_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, - _Compare __c) { +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI void __sort3_maybe_branchless( + _RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, _Compare __c) { std::__sort3<_AlgPolicy, _Compare>(__x1, __x2, __x3, __c); } -template -inline _LIBCPP_HIDE_FROM_ABI __enable_if_t<__use_branchless_sort<_Compare, _RandomAccessIterator>::value, void> -__sort4_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, - _RandomAccessIterator __x4, _Compare __c) { +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI void __sort4_maybe_branchless( + _RandomAccessIterator __x1, + _RandomAccessIterator __x2, + _RandomAccessIterator __x3, + _RandomAccessIterator __x4, + _Compare __c) { std::__cond_swap<_Compare>(__x1, __x3, __c); std::__cond_swap<_Compare>(__x2, __x4, __c); std::__cond_swap<_Compare>(__x1, __x2, __c); @@ -261,17 +218,30 @@ __sort4_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, std::__cond_swap<_Compare>(__x2, __x3, __c); } -template -inline _LIBCPP_HIDE_FROM_ABI __enable_if_t::value, void> -__sort4_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, - _RandomAccessIterator __x4, _Compare __c) { +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI void __sort4_maybe_branchless( + _RandomAccessIterator __x1, + _RandomAccessIterator __x2, + _RandomAccessIterator __x3, + _RandomAccessIterator __x4, + _Compare __c) { std::__sort4<_AlgPolicy, _Compare>(__x1, __x2, __x3, __x4, __c); } -template -inline _LIBCPP_HIDE_FROM_ABI __enable_if_t<__use_branchless_sort<_Compare, _RandomAccessIterator>::value, void> -__sort5_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, - _RandomAccessIterator __x4, _RandomAccessIterator __x5, _Compare __c) { +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI void __sort5_maybe_branchless( + _RandomAccessIterator __x1, + _RandomAccessIterator __x2, + _RandomAccessIterator __x3, + _RandomAccessIterator __x4, + _RandomAccessIterator __x5, + _Compare __c) { std::__cond_swap<_Compare>(__x1, __x2, __c); std::__cond_swap<_Compare>(__x4, __x5, __c); std::__partially_sorted_swap<_Compare>(__x3, __x4, __x5, __c); @@ -280,18 +250,25 @@ __sort5_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, std::__partially_sorted_swap<_Compare>(__x2, __x3, __x4, __c); } -template -inline _LIBCPP_HIDE_FROM_ABI __enable_if_t::value, void> -__sort5_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, - _RandomAccessIterator __x4, _RandomAccessIterator __x5, _Compare __c) { - std::__sort5_wrap_policy<_AlgPolicy, _Compare>(__x1, __x2, __x3, __x4, __x5, __c); +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI void __sort5_maybe_branchless( + _RandomAccessIterator __x1, + _RandomAccessIterator __x2, + _RandomAccessIterator __x3, + _RandomAccessIterator __x4, + _RandomAccessIterator __x5, + _Compare __c) { + std::__sort5<_AlgPolicy, _Compare, _RandomAccessIterator>( + std::move(__x1), std::move(__x2), std::move(__x3), std::move(__x4), std::move(__x5), __c); } // Assumes size > 0 template -_LIBCPP_HIDE_FROM_ABI -_LIBCPP_CONSTEXPR_SINCE_CXX14 void __selection_sort(_BidirectionalIterator __first, _BidirectionalIterator __last, - _Compare __comp) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void +__selection_sort(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { _BidirectionalIterator __lm1 = __last; for (--__lm1; __first != __lm1; ++__first) { _BidirectionalIterator __i = std::__min_element<_Compare>(__first, __last, __comp); @@ -300,58 +277,71 @@ _LIBCPP_CONSTEXPR_SINCE_CXX14 void __selection_sort(_BidirectionalIterator __fir } } +// Sort the iterator range [__first, __last) using the comparator __comp using +// the insertion sort algorithm. template -_LIBCPP_HIDE_FROM_ABI -void __insertion_sort(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { +_LIBCPP_HIDE_FROM_ABI void +__insertion_sort(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { using _Ops = _IterOps<_AlgPolicy>; typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - if (__first != __last) { - _BidirectionalIterator __i = __first; - for (++__i; __i != __last; ++__i) { - _BidirectionalIterator __j = __i; - value_type __t(_Ops::__iter_move(__j)); - for (_BidirectionalIterator __k = __i; __k != __first && __comp(__t, *--__k); --__j) + if (__first == __last) + return; + _BidirectionalIterator __i = __first; + for (++__i; __i != __last; ++__i) { + _BidirectionalIterator __j = __i; + --__j; + if (__comp(*__i, *__j)) { + value_type __t(_Ops::__iter_move(__i)); + _BidirectionalIterator __k = __j; + __j = __i; + do { *__j = _Ops::__iter_move(__k); + __j = __k; + } while (__j != __first && __comp(__t, *--__k)); *__j = std::move(__t); } } } +// Sort the iterator range [__first, __last) using the comparator __comp using +// the insertion sort algorithm. Insertion sort has two loops, outer and inner. +// The implementation below has no bounds check (unguarded) for the inner loop. +// Assumes that there is an element in the position (__first - 1) and that each +// element in the input range is greater or equal to the element at __first - 1. template -_LIBCPP_HIDE_FROM_ABI -void __insertion_sort_3(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { +_LIBCPP_HIDE_FROM_ABI void +__insertion_sort_unguarded(_RandomAccessIterator const __first, _RandomAccessIterator __last, _Compare __comp) { using _Ops = _IterOps<_AlgPolicy>; - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - _RandomAccessIterator __j = __first + difference_type(2); - std::__sort3_maybe_branchless<_AlgPolicy, _Compare>(__first, __first + difference_type(1), __j, __comp); - for (_RandomAccessIterator __i = __j + difference_type(1); __i != __last; ++__i) { + if (__first == __last) + return; + const _RandomAccessIterator __leftmost = __first - difference_type(1); + (void)__leftmost; // can be unused when assertions are disabled + for (_RandomAccessIterator __i = __first + difference_type(1); __i != __last; ++__i) { + _RandomAccessIterator __j = __i - difference_type(1); if (__comp(*__i, *__j)) { value_type __t(_Ops::__iter_move(__i)); _RandomAccessIterator __k = __j; - __j = __i; + __j = __i; do { *__j = _Ops::__iter_move(__k); - __j = __k; - } while (__j != __first && __comp(__t, *--__k)); + __j = __k; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __k != __leftmost, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (__comp(__t, *--__k)); // No need for bounds check due to the assumption stated above. *__j = std::move(__t); } - __j = __i; } } -template -_LIBCPP_HIDDEN bool __insertion_sort_incomplete( - _RandomAccessIterator __first, _RandomAccessIterator __last, _WrappedComp __wrapped_comp) { - using _Unwrap = _UnwrapAlgPolicy<_WrappedComp>; - using _AlgPolicy = typename _Unwrap::_AlgPolicy; +template +_LIBCPP_HIDE_FROM_ABI bool +__insertion_sort_incomplete(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) { using _Ops = _IterOps<_AlgPolicy>; - using _Compare = typename _Unwrap::_Comp; - _Compare __comp = _Unwrap::__get_comp(__wrapped_comp); - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; switch (__last - __first) { case 0: @@ -359,34 +349,38 @@ _LIBCPP_HIDDEN bool __insertion_sort_incomplete( return true; case 2: if (__comp(*--__last, *__first)) - _IterOps<_AlgPolicy>::iter_swap(__first, __last); + _Ops::iter_swap(__first, __last); return true; case 3: - std::__sort3_maybe_branchless<_AlgPolicy, _Compare>(__first, __first + difference_type(1), --__last, __comp); + std::__sort3_maybe_branchless<_AlgPolicy, _Comp>(__first, __first + difference_type(1), --__last, __comp); return true; case 4: - std::__sort4_maybe_branchless<_AlgPolicy, _Compare>( + std::__sort4_maybe_branchless<_AlgPolicy, _Comp>( __first, __first + difference_type(1), __first + difference_type(2), --__last, __comp); return true; case 5: - std::__sort5_maybe_branchless<_AlgPolicy, _Compare>( - __first, __first + difference_type(1), __first + difference_type(2), __first + difference_type(3), - --__last, __comp); + std::__sort5_maybe_branchless<_AlgPolicy, _Comp>( + __first, + __first + difference_type(1), + __first + difference_type(2), + __first + difference_type(3), + --__last, + __comp); return true; } typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; _RandomAccessIterator __j = __first + difference_type(2); - std::__sort3_maybe_branchless<_AlgPolicy, _Compare>(__first, __first + difference_type(1), __j, __comp); + std::__sort3_maybe_branchless<_AlgPolicy, _Comp>(__first, __first + difference_type(1), __j, __comp); const unsigned __limit = 8; - unsigned __count = 0; + unsigned __count = 0; for (_RandomAccessIterator __i = __j + difference_type(1); __i != __last; ++__i) { if (__comp(*__i, *__j)) { value_type __t(_Ops::__iter_move(__i)); _RandomAccessIterator __k = __j; - __j = __i; + __j = __i; do { *__j = _Ops::__iter_move(__k); - __j = __k; + __j = __k; } while (__j != __first && __comp(__t, *--__k)); *__j = std::move(__t); if (++__count == __limit) @@ -397,48 +391,382 @@ _LIBCPP_HIDDEN bool __insertion_sort_incomplete( return true; } -template -_LIBCPP_HIDE_FROM_ABI -void __insertion_sort_move(_BidirectionalIterator __first1, _BidirectionalIterator __last1, - typename iterator_traits<_BidirectionalIterator>::value_type* __first2, _Compare __comp) { +template +inline _LIBCPP_HIDE_FROM_ABI void __swap_bitmap_pos( + _RandomAccessIterator __first, _RandomAccessIterator __last, uint64_t& __left_bitset, uint64_t& __right_bitset) { using _Ops = _IterOps<_AlgPolicy>; + typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type; + // Swap one pair on each iteration as long as both bitsets have at least one + // element for swapping. + while (__left_bitset != 0 && __right_bitset != 0) { + difference_type __tz_left = __libcpp_ctz(__left_bitset); + __left_bitset = __libcpp_blsr(__left_bitset); + difference_type __tz_right = __libcpp_ctz(__right_bitset); + __right_bitset = __libcpp_blsr(__right_bitset); + _Ops::iter_swap(__first + __tz_left, __last - __tz_right); + } +} - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - if (__first1 != __last1) { - __destruct_n __d(0); - unique_ptr __h(__first2, __d); - value_type* __last2 = __first2; - ::new ((void*)__last2) value_type(_Ops::__iter_move(__first1)); - __d.template __incr(); - for (++__last2; ++__first1 != __last1; ++__last2) { - value_type* __j2 = __last2; - value_type* __i2 = __j2; - if (__comp(*__first1, *--__i2)) { - ::new ((void*)__j2) value_type(std::move(*__i2)); - __d.template __incr(); - for (--__j2; __i2 != __first2 && __comp(*__first1, *--__i2); --__j2) - *__j2 = std::move(*__i2); - *__j2 = _Ops::__iter_move(__first1); - } else { - ::new ((void*)__j2) value_type(_Ops::__iter_move(__first1)); - __d.template __incr(); +template ::value_type> +inline _LIBCPP_HIDE_FROM_ABI void +__populate_left_bitset(_RandomAccessIterator __first, _Compare __comp, _ValueType& __pivot, uint64_t& __left_bitset) { + // Possible vectorization. With a proper "-march" flag, the following loop + // will be compiled into a set of SIMD instructions. + _RandomAccessIterator __iter = __first; + for (int __j = 0; __j < __detail::__block_size;) { + bool __comp_result = !__comp(*__iter, __pivot); + __left_bitset |= (static_cast(__comp_result) << __j); + __j++; + ++__iter; + } +} + +template ::value_type> +inline _LIBCPP_HIDE_FROM_ABI void +__populate_right_bitset(_RandomAccessIterator __lm1, _Compare __comp, _ValueType& __pivot, uint64_t& __right_bitset) { + // Possible vectorization. With a proper "-march" flag, the following loop + // will be compiled into a set of SIMD instructions. + _RandomAccessIterator __iter = __lm1; + for (int __j = 0; __j < __detail::__block_size;) { + bool __comp_result = __comp(*__iter, __pivot); + __right_bitset |= (static_cast(__comp_result) << __j); + __j++; + --__iter; + } +} + +template ::value_type> +inline _LIBCPP_HIDE_FROM_ABI void __bitset_partition_partial_blocks( + _RandomAccessIterator& __first, + _RandomAccessIterator& __lm1, + _Compare __comp, + _ValueType& __pivot, + uint64_t& __left_bitset, + uint64_t& __right_bitset) { + typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type; + difference_type __remaining_len = __lm1 - __first + 1; + difference_type __l_size; + difference_type __r_size; + if (__left_bitset == 0 && __right_bitset == 0) { + __l_size = __remaining_len / 2; + __r_size = __remaining_len - __l_size; + } else if (__left_bitset == 0) { + // We know at least one side is a full block. + __l_size = __remaining_len - __detail::__block_size; + __r_size = __detail::__block_size; + } else { // if (__right_bitset == 0) + __l_size = __detail::__block_size; + __r_size = __remaining_len - __detail::__block_size; + } + // Record the comparison outcomes for the elements currently on the left side. + if (__left_bitset == 0) { + _RandomAccessIterator __iter = __first; + for (int __j = 0; __j < __l_size; __j++) { + bool __comp_result = !__comp(*__iter, __pivot); + __left_bitset |= (static_cast(__comp_result) << __j); + ++__iter; + } + } + // Record the comparison outcomes for the elements currently on the right + // side. + if (__right_bitset == 0) { + _RandomAccessIterator __iter = __lm1; + for (int __j = 0; __j < __r_size; __j++) { + bool __comp_result = __comp(*__iter, __pivot); + __right_bitset |= (static_cast(__comp_result) << __j); + --__iter; + } + } + std::__swap_bitmap_pos<_AlgPolicy, _RandomAccessIterator>(__first, __lm1, __left_bitset, __right_bitset); + __first += (__left_bitset == 0) ? __l_size : 0; + __lm1 -= (__right_bitset == 0) ? __r_size : 0; +} + +template +inline _LIBCPP_HIDE_FROM_ABI void __swap_bitmap_pos_within( + _RandomAccessIterator& __first, _RandomAccessIterator& __lm1, uint64_t& __left_bitset, uint64_t& __right_bitset) { + using _Ops = _IterOps<_AlgPolicy>; + typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type; + if (__left_bitset) { + // Swap within the left side. Need to find set positions in the reverse + // order. + while (__left_bitset != 0) { + difference_type __tz_left = __detail::__block_size - 1 - __libcpp_clz(__left_bitset); + __left_bitset &= (static_cast(1) << __tz_left) - 1; + _RandomAccessIterator __it = __first + __tz_left; + if (__it != __lm1) { + _Ops::iter_swap(__it, __lm1); } + --__lm1; + } + __first = __lm1 + difference_type(1); + } else if (__right_bitset) { + // Swap within the right side. Need to find set positions in the reverse + // order. + while (__right_bitset != 0) { + difference_type __tz_right = __detail::__block_size - 1 - __libcpp_clz(__right_bitset); + __right_bitset &= (static_cast(1) << __tz_right) - 1; + _RandomAccessIterator __it = __lm1 - __tz_right; + if (__it != __first) { + _Ops::iter_swap(__it, __first); + } + ++__first; } - __h.release(); } } -template -void __introsort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __depth) { +// Partition [__first, __last) using the comparator __comp. *__first has the +// chosen pivot. Elements that are equivalent are kept to the left of the +// pivot. Returns the iterator for the pivot and a bool value which is true if +// the provided range is already sorted, false otherwise. We assume that the +// length of the range is at least three elements. +// +// __bitset_partition uses bitsets for storing outcomes of the comparisons +// between the pivot and other elements. +template +_LIBCPP_HIDE_FROM_ABI std::pair<_RandomAccessIterator, bool> +__bitset_partition(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { using _Ops = _IterOps<_AlgPolicy>; + typedef typename std::iterator_traits<_RandomAccessIterator>::value_type value_type; + typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type; + _LIBCPP_ASSERT_INTERNAL(__last - __first >= difference_type(3), ""); + const _RandomAccessIterator __begin = __first; // used for bounds checking, those are not moved around + const _RandomAccessIterator __end = __last; + (void)__end; // + + value_type __pivot(_Ops::__iter_move(__first)); + // Find the first element greater than the pivot. + if (__comp(__pivot, *(__last - difference_type(1)))) { + // Not guarded since we know the last element is greater than the pivot. + do { + ++__first; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __first != __end, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (!__comp(__pivot, *__first)); + } else { + while (++__first < __last && !__comp(__pivot, *__first)) { + } + } + // Find the last element less than or equal to the pivot. + if (__first < __last) { + // It will be always guarded because __introsort will do the median-of-three + // before calling this. + do { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __last != __begin, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__last; + } while (__comp(__pivot, *__last)); + } + // If the first element greater than the pivot is at or after the + // last element less than or equal to the pivot, then we have covered the + // entire range without swapping elements. This implies the range is already + // partitioned. + bool __already_partitioned = __first >= __last; + if (!__already_partitioned) { + _Ops::iter_swap(__first, __last); + ++__first; + } + // In [__first, __last) __last is not inclusive. From now on, it uses last + // minus one to be inclusive on both sides. + _RandomAccessIterator __lm1 = __last - difference_type(1); + uint64_t __left_bitset = 0; + uint64_t __right_bitset = 0; + + // Reminder: length = __lm1 - __first + 1. + while (__lm1 - __first >= 2 * __detail::__block_size - 1) { + // Record the comparison outcomes for the elements currently on the left + // side. + if (__left_bitset == 0) + std::__populate_left_bitset<_Compare>(__first, __comp, __pivot, __left_bitset); + // Record the comparison outcomes for the elements currently on the right + // side. + if (__right_bitset == 0) + std::__populate_right_bitset<_Compare>(__lm1, __comp, __pivot, __right_bitset); + // Swap the elements recorded to be the candidates for swapping in the + // bitsets. + std::__swap_bitmap_pos<_AlgPolicy, _RandomAccessIterator>(__first, __lm1, __left_bitset, __right_bitset); + // Only advance the iterator if all the elements that need to be moved to + // other side were moved. + __first += (__left_bitset == 0) ? difference_type(__detail::__block_size) : difference_type(0); + __lm1 -= (__right_bitset == 0) ? difference_type(__detail::__block_size) : difference_type(0); + } + // Now, we have a less-than a block worth of elements on at least one of the + // sides. + std::__bitset_partition_partial_blocks<_AlgPolicy, _Compare>( + __first, __lm1, __comp, __pivot, __left_bitset, __right_bitset); + // At least one the bitsets would be empty. For the non-empty one, we need to + // properly partition the elements that appear within that bitset. + std::__swap_bitmap_pos_within<_AlgPolicy>(__first, __lm1, __left_bitset, __right_bitset); + + // Move the pivot to its correct position. + _RandomAccessIterator __pivot_pos = __first - difference_type(1); + if (__begin != __pivot_pos) { + *__begin = _Ops::__iter_move(__pivot_pos); + } + *__pivot_pos = std::move(__pivot); + return std::make_pair(__pivot_pos, __already_partitioned); +} + +// Partition [__first, __last) using the comparator __comp. *__first has the +// chosen pivot. Elements that are equivalent are kept to the right of the +// pivot. Returns the iterator for the pivot and a bool value which is true if +// the provided range is already sorted, false otherwise. We assume that the +// length of the range is at least three elements. +template +_LIBCPP_HIDE_FROM_ABI std::pair<_RandomAccessIterator, bool> +__partition_with_equals_on_right(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - const difference_type __limit = - is_trivially_copy_constructible::value && is_trivially_copy_assignable::value ? 30 : 6; + typedef typename std::iterator_traits<_RandomAccessIterator>::value_type value_type; + _LIBCPP_ASSERT_INTERNAL(__last - __first >= difference_type(3), ""); + const _RandomAccessIterator __begin = __first; // used for bounds checking, those are not moved around + const _RandomAccessIterator __end = __last; + (void)__end; // + value_type __pivot(_Ops::__iter_move(__first)); + // Find the first element greater or equal to the pivot. It will be always + // guarded because __introsort will do the median-of-three before calling + // this. + do { + ++__first; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __first != __end, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (__comp(*__first, __pivot)); + + // Find the last element less than the pivot. + if (__begin == __first - difference_type(1)) { + while (__first < __last && !__comp(*--__last, __pivot)) + ; + } else { + // Guarded. + do { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __last != __begin, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__last; + } while (!__comp(*__last, __pivot)); + } + + // If the first element greater than or equal to the pivot is at or after the + // last element less than the pivot, then we have covered the entire range + // without swapping elements. This implies the range is already partitioned. + bool __already_partitioned = __first >= __last; + // Go through the remaining elements. Swap pairs of elements (one to the + // right of the pivot and the other to left of the pivot) that are not on the + // correct side of the pivot. + while (__first < __last) { + _Ops::iter_swap(__first, __last); + do { + ++__first; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __first != __end, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (__comp(*__first, __pivot)); + do { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __last != __begin, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__last; + } while (!__comp(*__last, __pivot)); + } + // Move the pivot to its correct position. + _RandomAccessIterator __pivot_pos = __first - difference_type(1); + if (__begin != __pivot_pos) { + *__begin = _Ops::__iter_move(__pivot_pos); + } + *__pivot_pos = std::move(__pivot); + return std::make_pair(__pivot_pos, __already_partitioned); +} + +// Similar to the above function. Elements equivalent to the pivot are put to +// the left of the pivot. Returns the iterator to the pivot element. +template +_LIBCPP_HIDE_FROM_ABI _RandomAccessIterator +__partition_with_equals_on_left(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef typename std::iterator_traits<_RandomAccessIterator>::value_type value_type; + const _RandomAccessIterator __begin = __first; // used for bounds checking, those are not moved around + const _RandomAccessIterator __end = __last; + (void)__end; // + value_type __pivot(_Ops::__iter_move(__first)); + if (__comp(__pivot, *(__last - difference_type(1)))) { + // Guarded. + do { + ++__first; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __first != __end, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (!__comp(__pivot, *__first)); + } else { + while (++__first < __last && !__comp(__pivot, *__first)) { + } + } + + if (__first < __last) { + // It will be always guarded because __introsort will do the + // median-of-three before calling this. + do { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __last != __begin, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__last; + } while (__comp(__pivot, *__last)); + } + while (__first < __last) { + _Ops::iter_swap(__first, __last); + do { + ++__first; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __first != __end, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (!__comp(__pivot, *__first)); + do { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __last != __begin, + "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__last; + } while (__comp(__pivot, *__last)); + } + _RandomAccessIterator __pivot_pos = __first - difference_type(1); + if (__begin != __pivot_pos) { + *__begin = _Ops::__iter_move(__pivot_pos); + } + *__pivot_pos = std::move(__pivot); + return __first; +} + +// The main sorting function. Implements introsort combined with other ideas: +// - option of using block quick sort for partitioning, +// - guarded and unguarded insertion sort for small lengths, +// - Tuckey's ninther technique for computing the pivot, +// - check on whether partition was not required. +// The implementation is partly based on Orson Peters' pattern-defeating +// quicksort, published at: . +template +void __introsort(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Compare __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __depth, + bool __leftmost = true) { + using _Ops = _IterOps<_AlgPolicy>; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + using _Comp_ref = __comp_ref_type<_Compare>; + // Upper bound for using insertion sort for sorting. + _LIBCPP_CONSTEXPR difference_type __limit = 24; + // Lower bound for using Tuckey's ninther technique for median computation. + _LIBCPP_CONSTEXPR difference_type __ninther_threshold = 128; while (true) { - __restart: difference_type __len = __last - __first; switch (__len) { case 0: @@ -446,7 +774,7 @@ void __introsort(_RandomAccessIterator __first, _RandomAccessIterator __last, _C return; case 2: if (__comp(*--__last, *__first)) - _IterOps<_AlgPolicy>::iter_swap(__first, __last); + _Ops::iter_swap(__first, __last); return; case 3: std::__sort3_maybe_branchless<_AlgPolicy, _Compare>(__first, __first + difference_type(1), --__last, __comp); @@ -457,135 +785,70 @@ void __introsort(_RandomAccessIterator __first, _RandomAccessIterator __last, _C return; case 5: std::__sort5_maybe_branchless<_AlgPolicy, _Compare>( - __first, __first + difference_type(1), __first + difference_type(2), __first + difference_type(3), - --__last, __comp); + __first, + __first + difference_type(1), + __first + difference_type(2), + __first + difference_type(3), + --__last, + __comp); return; } - if (__len <= __limit) { - std::__insertion_sort_3<_AlgPolicy, _Compare>(__first, __last, __comp); + // Use insertion sort if the length of the range is below the specified limit. + if (__len < __limit) { + if (__leftmost) { + std::__insertion_sort<_AlgPolicy, _Compare>(__first, __last, __comp); + } else { + std::__insertion_sort_unguarded<_AlgPolicy, _Compare>(__first, __last, __comp); + } return; } - // __len > 5 if (__depth == 0) { // Fallback to heap sort as Introsort suggests. std::__partial_sort<_AlgPolicy, _Compare>(__first, __last, __last, __comp); return; } --__depth; - _RandomAccessIterator __m = __first; - _RandomAccessIterator __lm1 = __last; - --__lm1; - unsigned __n_swaps; { - difference_type __delta; - if (__len >= 1000) { - __delta = __len / 2; - __m += __delta; - __delta /= 2; - __n_swaps = std::__sort5_wrap_policy<_AlgPolicy, _Compare>( - __first, __first + __delta, __m, __m + __delta, __lm1, __comp); + difference_type __half_len = __len / 2; + // Use Tuckey's ninther technique or median of 3 for pivot selection + // depending on the length of the range being sorted. + if (__len > __ninther_threshold) { + std::__sort3<_AlgPolicy, _Compare>(__first, __first + __half_len, __last - difference_type(1), __comp); + std::__sort3<_AlgPolicy, _Compare>( + __first + difference_type(1), __first + (__half_len - 1), __last - difference_type(2), __comp); + std::__sort3<_AlgPolicy, _Compare>( + __first + difference_type(2), __first + (__half_len + 1), __last - difference_type(3), __comp); + std::__sort3<_AlgPolicy, _Compare>( + __first + (__half_len - 1), __first + __half_len, __first + (__half_len + 1), __comp); + _Ops::iter_swap(__first, __first + __half_len); } else { - __delta = __len / 2; - __m += __delta; - __n_swaps = std::__sort3<_AlgPolicy, _Compare>(__first, __m, __lm1, __comp); - } - } - // *__m is median - // partition [__first, __m) < *__m and *__m <= [__m, __last) - // (this inhibits tossing elements equivalent to __m around unnecessarily) - _RandomAccessIterator __i = __first; - _RandomAccessIterator __j = __lm1; - // j points beyond range to be tested, *__m is known to be <= *__lm1 - // The search going up is known to be guarded but the search coming down isn't. - // Prime the downward search with a guard. - if (!__comp(*__i, *__m)) // if *__first == *__m - { - // *__first == *__m, *__first doesn't go in first part - // manually guard downward moving __j against __i - while (true) { - if (__i == --__j) { - // *__first == *__m, *__m <= all other elements - // Parition instead into [__first, __i) == *__first and *__first < [__i, __last) - ++__i; // __first + 1 - __j = __last; - if (!__comp(*__first, *--__j)) // we need a guard if *__first == *(__last-1) - { - while (true) { - if (__i == __j) - return; // [__first, __last) all equivalent elements - if (__comp(*__first, *__i)) { - _Ops::iter_swap(__i, __j); - ++__n_swaps; - ++__i; - break; - } - ++__i; - } - } - // [__first, __i) == *__first and *__first < [__j, __last) and __j == __last - 1 - if (__i == __j) - return; - while (true) { - while (!__comp(*__first, *__i)) - ++__i; - while (__comp(*__first, *--__j)) - ; - if (__i >= __j) - break; - _Ops::iter_swap(__i, __j); - ++__n_swaps; - ++__i; - } - // [__first, __i) == *__first and *__first < [__i, __last) - // The first part is sorted, sort the second part - // std::__sort<_Compare>(__i, __last, __comp); - __first = __i; - goto __restart; - } - if (__comp(*__j, *__m)) { - _Ops::iter_swap(__i, __j); - ++__n_swaps; - break; // found guard for downward moving __j, now use unguarded partition - } - } - } - // It is known that *__i < *__m - ++__i; - // j points beyond range to be tested, *__m is known to be <= *__lm1 - // if not yet partitioned... - if (__i < __j) { - // known that *(__i - 1) < *__m - // known that __i <= __m - while (true) { - // __m still guards upward moving __i - while (__comp(*__i, *__m)) - ++__i; - // It is now known that a guard exists for downward moving __j - while (!__comp(*--__j, *__m)) - ; - if (__i > __j) - break; - _Ops::iter_swap(__i, __j); - ++__n_swaps; - // It is known that __m != __j - // If __m just moved, follow it - if (__m == __i) - __m = __j; - ++__i; + std::__sort3<_AlgPolicy, _Compare>(__first + __half_len, __first, __last - difference_type(1), __comp); } } - // [__first, __i) < *__m and *__m <= [__i, __last) - if (__i != __m && __comp(*__m, *__i)) { - _Ops::iter_swap(__i, __m); - ++__n_swaps; + // The elements to the left of the current iterator range are already + // sorted. If the current iterator range to be sorted is not the + // leftmost part of the entire iterator range and the pivot is same as + // the highest element in the range to the left, then we know that all + // the elements in the range [first, pivot] would be equal to the pivot, + // assuming the equal elements are put on the left side when + // partitioned. This also means that we do not need to sort the left + // side of the partition. + if (!__leftmost && !__comp(*(__first - difference_type(1)), *__first)) { + __first = std::__partition_with_equals_on_left<_AlgPolicy, _RandomAccessIterator, _Comp_ref>( + __first, __last, _Comp_ref(__comp)); + continue; } + // Use bitset partition only if asked for. + auto __ret = _UseBitSetPartition + ? std::__bitset_partition<_AlgPolicy, _RandomAccessIterator, _Compare>(__first, __last, __comp) + : std::__partition_with_equals_on_right<_AlgPolicy, _RandomAccessIterator, _Compare>( + __first, __last, __comp); + _RandomAccessIterator __i = __ret.first; // [__first, __i) < *__i and *__i <= [__i+1, __last) // If we were given a perfect partition, see if insertion sort is quick... - if (__n_swaps == 0) { - using _WrappedComp = typename _WrapAlgPolicy<_AlgPolicy, _Compare>::type; - _WrappedComp __wrapped_comp(__comp); - bool __fs = std::__insertion_sort_incomplete<_WrappedComp>(__first, __i, __wrapped_comp); - if (std::__insertion_sort_incomplete<_WrappedComp>(__i + difference_type(1), __last, __wrapped_comp)) { + if (__ret.second) { + bool __fs = std::__insertion_sort_incomplete<_AlgPolicy, _Compare>(__first, __i, __comp); + if (std::__insertion_sort_incomplete<_AlgPolicy, _Compare>(__i + difference_type(1), __last, __comp)) { if (__fs) return; __last = __i; @@ -597,14 +860,11 @@ void __introsort(_RandomAccessIterator __first, _RandomAccessIterator __last, _C } } } - // sort smaller range with recursive call and larger with tail recursion elimination - if (__i - __first < __last - __i) { - std::__introsort<_AlgPolicy, _Compare>(__first, __i, __comp, __depth); - __first = ++__i; - } else { - std::__introsort<_AlgPolicy, _Compare>(__i + difference_type(1), __last, __comp, __depth); - __last = __i; - } + // Sort the left partiton recursively and the right partition with tail recursion elimination. + std::__introsort<_AlgPolicy, _Compare, _RandomAccessIterator, _UseBitSetPartition>( + __first, __i, __comp, __depth, __leftmost); + __leftmost = false; + __first = ++__i; } } @@ -627,91 +887,130 @@ inline _LIBCPP_HIDE_FROM_ABI _Number __log2i(_Number __n) { return __log2; } -template -_LIBCPP_HIDDEN void __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _WrappedComp __wrapped_comp) { +template +void __sort(_RandomAccessIterator, _RandomAccessIterator, _Comp); + +extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, char*>(char*, char*, __less&); +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&); +#endif +extern template _LIBCPP_EXPORTED_FROM_ABI void +__sort<__less&, signed char*>(signed char*, signed char*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void +__sort<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, short*>(short*, short*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void +__sort<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, int*>(int*, int*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void +__sort<__less&, unsigned*>(unsigned*, unsigned*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, long*>(long*, long*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void +__sort<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void +__sort<__less&, long long*>(long long*, long long*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, unsigned long long*>( + unsigned long long*, unsigned long long*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, float*>(float*, float*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, double*>(double*, double*, __less&); +extern template _LIBCPP_EXPORTED_FROM_ABI void +__sort<__less&, long double*>(long double*, long double*, __less&); + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +__sort_dispatch(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp& __comp) { typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - difference_type __depth_limit = 2 * __log2i(__last - __first); + difference_type __depth_limit = 2 * std::__log2i(__last - __first); + + // Only use bitset partitioning for arithmetic types. We should also check + // that the default comparator is in use so that we are sure that there are no + // branches in the comparator. + std::__introsort<_AlgPolicy, + _Comp&, + _RandomAccessIterator, + __use_branchless_sort<_Comp, _RandomAccessIterator>::value>(__first, __last, __comp, __depth_limit); +} - using _Unwrap = _UnwrapAlgPolicy<_WrappedComp>; - using _AlgPolicy = typename _Unwrap::_AlgPolicy; - using _Compare = typename _Unwrap::_Comp; - _Compare __comp = _Unwrap::__get_comp(__wrapped_comp); - std::__introsort<_AlgPolicy, _Compare>(__first, __last, __comp, __depth_limit); +template +using __is_any_of = _Or...>; + +template +using __sort_is_specialized_in_library = __is_any_of< + _Type, + char, +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + wchar_t, +#endif + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double, + long double>; + +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, __less<>&) { + __less<_Type> __comp; + std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp); } -template -inline _LIBCPP_INLINE_VISIBILITY void __sort(_Tp** __first, _Tp** __last, __less<_Tp*>&) { - __less __comp; - std::__sort<__less&, uintptr_t*>((uintptr_t*)__first, (uintptr_t*)__last, __comp); +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, less<_Type>&) { + __less<_Type> __comp; + std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp); } -extern template _LIBCPP_FUNC_VIS void __sort<__less&, char*>(char*, char*, __less&); -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS -extern template _LIBCPP_FUNC_VIS void __sort<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&); +#if _LIBCPP_STD_VER >= 14 +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, less<>&) { + __less<_Type> __comp; + std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp); +} #endif -extern template _LIBCPP_FUNC_VIS void __sort<__less&, signed char*>(signed char*, signed char*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, short*>(short*, short*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, int*>(int*, int*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, unsigned*>(unsigned*, unsigned*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, long*>(long*, long*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, long long*>(long long*, long long*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, unsigned long long*>(unsigned long long*, unsigned long long*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, float*>(float*, float*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, double*>(double*, double*, __less&); -extern template _LIBCPP_FUNC_VIS void __sort<__less&, long double*>(long double*, long double*, __less&); - -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, char*>(char*, char*, __less&); -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&); + +#if _LIBCPP_STD_VER >= 20 +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, ranges::less&) { + __less<_Type> __comp; + std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp); +} #endif -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, signed char*>(signed char*, signed char*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, short*>(short*, short*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, int*>(int*, int*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned*>(unsigned*, unsigned*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, long*>(long*, long*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, long long*>(long long*, long long*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned long long*>(unsigned long long*, unsigned long long*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, float*>(float*, float*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, double*>(double*, double*, __less&); -extern template _LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, long double*>(long double*, long double*, __less&); - -extern template _LIBCPP_FUNC_VIS unsigned __sort5<__less&, long double*>(long double*, long double*, long double*, long double*, long double*, __less&); template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void __sort_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp& __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +__sort_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp& __comp) { std::__debug_randomize_range<_AlgPolicy>(__first, __last); - using _Comp_ref = __comp_ref_type<_Comp>; if (__libcpp_is_constant_evaluated()) { - std::__partial_sort<_AlgPolicy>(__first, __last, __last, __comp); - + std::__partial_sort<_AlgPolicy>( + std::__unwrap_iter(__first), std::__unwrap_iter(__last), std::__unwrap_iter(__last), __comp); } else { - using _WrappedComp = typename _WrapAlgPolicy<_AlgPolicy, _Comp_ref>::type; - _Comp_ref __comp_ref(__comp); - _WrappedComp __wrapped_comp(__comp_ref); - std::__sort<_WrappedComp>(std::__unwrap_iter(__first), std::__unwrap_iter(__last), __wrapped_comp); + std::__sort_dispatch<_AlgPolicy>(std::__unwrap_iter(__first), std::__unwrap_iter(__last), __comp); } + std::__check_strict_weak_ordering_sorted(std::__unwrap_iter(__first), std::__unwrap_iter(__last), __comp); } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) { std::__sort_impl<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp); } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { - std::sort(__first, __last, __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::sort(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_SORT_H diff --git a/include/c++/v1/__algorithm/sort_heap.h b/include/c++/v1/__algorithm/sort_heap.h index 8249407b..f20b110c 100644 --- a/include/c++/v1/__algorithm/sort_heap.h +++ b/include/c++/v1/__algorithm/sort_heap.h @@ -14,29 +14,36 @@ #include <__algorithm/iterator_operations.h> #include <__algorithm/pop_heap.h> #include <__config> +#include <__debug_utils/strict_weak_ordering_check.h> #include <__iterator/iterator_traits.h> +#include <__type_traits/is_assignable.h> +#include <__type_traits/is_constructible.h> #include <__utility/move.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -void __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void +__sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp) { + _RandomAccessIterator __saved_last = __last; __comp_ref_type<_Compare> __comp_ref = __comp; using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type; - for (difference_type __n = __last - __first; __n > 1; --__last, (void) --__n) + for (difference_type __n = __last - __first; __n > 1; --__last, (void)--__n) std::__pop_heap<_AlgPolicy>(__first, __last, __comp_ref, __n); + std::__check_strict_weak_ordering_sorted(__first, __saved_last, __comp_ref); } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { static_assert(std::is_copy_constructible<_RandomAccessIterator>::value, "Iterators must be copy constructible."); static_assert(std::is_copy_assignable<_RandomAccessIterator>::value, "Iterators must be copy assignable."); @@ -44,12 +51,13 @@ void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Com } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { - std::sort_heap(std::move(__first), std::move(__last), - __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::sort_heap(std::move(__first), std::move(__last), __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_SORT_HEAP_H diff --git a/include/c++/v1/__algorithm/stable_partition.h b/include/c++/v1/__algorithm/stable_partition.h index a49de6db..8bb1eaf2 100644 --- a/include/c++/v1/__algorithm/stable_partition.h +++ b/include/c++/v1/__algorithm/stable_partition.h @@ -21,304 +21,280 @@ #include <__utility/move.h> #include <__utility/pair.h> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _ForwardIterator -__stable_partition_impl(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, - _Distance __len, _Pair __p, forward_iterator_tag __fit) -{ - using _Ops = _IterOps<_AlgPolicy>; +_LIBCPP_HIDE_FROM_ABI _ForwardIterator __stable_partition_impl( + _ForwardIterator __first, + _ForwardIterator __last, + _Predicate __pred, + _Distance __len, + _Pair __p, + forward_iterator_tag __fit) { + using _Ops = _IterOps<_AlgPolicy>; - // *__first is known to be false - // __len >= 1 - if (__len == 1) - return __first; - if (__len == 2) - { - _ForwardIterator __m = __first; - if (__pred(*++__m)) - { - _Ops::iter_swap(__first, __m); - return __m; - } - return __first; + // *__first is known to be false + // __len >= 1 + if (__len == 1) + return __first; + if (__len == 2) { + _ForwardIterator __m = __first; + if (__pred(*++__m)) { + _Ops::iter_swap(__first, __m); + return __m; } - if (__len <= __p.second) - { // The buffer is big enough to use - typedef typename iterator_traits<_ForwardIterator>::value_type value_type; - __destruct_n __d(0); - unique_ptr __h(__p.first, __d); - // Move the falses into the temporary buffer, and the trues to the front of the line - // Update __first to always point to the end of the trues - value_type* __t = __p.first; - ::new ((void*)__t) value_type(_Ops::__iter_move(__first)); + return __first; + } + if (__len <= __p.second) { // The buffer is big enough to use + typedef typename iterator_traits<_ForwardIterator>::value_type value_type; + __destruct_n __d(0); + unique_ptr __h(__p.first, __d); + // Move the falses into the temporary buffer, and the trues to the front of the line + // Update __first to always point to the end of the trues + value_type* __t = __p.first; + ::new ((void*)__t) value_type(_Ops::__iter_move(__first)); + __d.template __incr(); + ++__t; + _ForwardIterator __i = __first; + while (++__i != __last) { + if (__pred(*__i)) { + *__first = _Ops::__iter_move(__i); + ++__first; + } else { + ::new ((void*)__t) value_type(_Ops::__iter_move(__i)); __d.template __incr(); ++__t; - _ForwardIterator __i = __first; - while (++__i != __last) - { - if (__pred(*__i)) - { - *__first = _Ops::__iter_move(__i); - ++__first; - } - else - { - ::new ((void*)__t) value_type(_Ops::__iter_move(__i)); - __d.template __incr(); - ++__t; - } - } - // All trues now at start of range, all falses in buffer - // Move falses back into range, but don't mess up __first which points to first false - __i = __first; - for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, (void) ++__i) - *__i = _Ops::__iter_move(__t2); - // __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer - return __first; - } - // Else not enough buffer, do in place - // __len >= 3 - _ForwardIterator __m = __first; - _Distance __len2 = __len / 2; // __len2 >= 2 - _Ops::advance(__m, __len2); - // recurse on [__first, __m), *__first know to be false - // F????????????????? - // f m l - _ForwardIterator __first_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>( - __first, __m, __pred, __len2, __p, __fit); - // TTTFFFFF?????????? - // f ff m l - // recurse on [__m, __last], except increase __m until *(__m) is false, *__last know to be true - _ForwardIterator __m1 = __m; - _ForwardIterator __second_false = __last; - _Distance __len_half = __len - __len2; - while (__pred(*__m1)) - { - if (++__m1 == __last) - goto __second_half_done; - --__len_half; + } } - // TTTFFFFFTTTF?????? - // f ff m m1 l - __second_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>( - __m1, __last, __pred, __len_half, __p, __fit); + // All trues now at start of range, all falses in buffer + // Move falses back into range, but don't mess up __first which points to first false + __i = __first; + for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, (void)++__i) + *__i = _Ops::__iter_move(__t2); + // __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer + return __first; + } + // Else not enough buffer, do in place + // __len >= 3 + _ForwardIterator __m = __first; + _Distance __len2 = __len / 2; // __len2 >= 2 + _Ops::advance(__m, __len2); + // recurse on [__first, __m), *__first know to be false + // F????????????????? + // f m l + _ForwardIterator __first_false = + std::__stable_partition_impl<_AlgPolicy, _Predicate&>(__first, __m, __pred, __len2, __p, __fit); + // TTTFFFFF?????????? + // f ff m l + // recurse on [__m, __last], except increase __m until *(__m) is false, *__last know to be true + _ForwardIterator __m1 = __m; + _ForwardIterator __second_false = __last; + _Distance __len_half = __len - __len2; + while (__pred(*__m1)) { + if (++__m1 == __last) + goto __second_half_done; + --__len_half; + } + // TTTFFFFFTTTF?????? + // f ff m m1 l + __second_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>(__m1, __last, __pred, __len_half, __p, __fit); __second_half_done: - // TTTFFFFFTTTTTFFFFF - // f ff m sf l - return std::__rotate<_AlgPolicy>(__first_false, __m, __second_false).first; - // TTTTTTTTFFFFFFFFFF - // | + // TTTFFFFFTTTTTFFFFF + // f ff m sf l + return std::__rotate<_AlgPolicy>(__first_false, __m, __second_false).first; + // TTTTTTTTFFFFFFFFFF + // | } template _LIBCPP_HIDE_FROM_ABI _ForwardIterator -__stable_partition_impl(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, - forward_iterator_tag) -{ - const unsigned __alloc_limit = 3; // might want to make this a function of trivial assignment - // Either prove all true and return __first or point to first false - while (true) - { - if (__first == __last) - return __first; - if (!__pred(*__first)) - break; - ++__first; - } - // We now have a reduced range [__first, __last) - // *__first is known to be false - typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; - typedef typename iterator_traits<_ForwardIterator>::value_type value_type; - difference_type __len = _IterOps<_AlgPolicy>::distance(__first, __last); - pair __p(0, 0); - unique_ptr __h; - if (__len >= __alloc_limit) - { -// TODO: Remove the use of std::get_temporary_buffer -_LIBCPP_SUPPRESS_DEPRECATED_PUSH - __p = _VSTD::get_temporary_buffer(__len); -_LIBCPP_SUPPRESS_DEPRECATED_POP - __h.reset(__p.first); - } - return std::__stable_partition_impl<_AlgPolicy, _Predicate&>( - std::move(__first), std::move(__last), __pred, __len, __p, forward_iterator_tag()); +__stable_partition_impl(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, forward_iterator_tag) { + typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; + typedef typename iterator_traits<_ForwardIterator>::value_type value_type; + + const difference_type __alloc_limit = 3; // might want to make this a function of trivial assignment + // Either prove all true and return __first or point to first false + while (true) { + if (__first == __last) + return __first; + if (!__pred(*__first)) + break; + ++__first; + } + // We now have a reduced range [__first, __last) + // *__first is known to be false + difference_type __len = _IterOps<_AlgPolicy>::distance(__first, __last); + pair __p(0, 0); + unique_ptr __h; + if (__len >= __alloc_limit) { + // TODO: Remove the use of std::get_temporary_buffer + _LIBCPP_SUPPRESS_DEPRECATED_PUSH + __p = std::get_temporary_buffer(__len); + _LIBCPP_SUPPRESS_DEPRECATED_POP + __h.reset(__p.first); + } + return std::__stable_partition_impl<_AlgPolicy, _Predicate&>( + std::move(__first), std::move(__last), __pred, __len, __p, forward_iterator_tag()); } template -_BidirectionalIterator -__stable_partition_impl(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, - _Distance __len, _Pair __p, bidirectional_iterator_tag __bit) -{ - using _Ops = _IterOps<_AlgPolicy>; +_BidirectionalIterator __stable_partition_impl( + _BidirectionalIterator __first, + _BidirectionalIterator __last, + _Predicate __pred, + _Distance __len, + _Pair __p, + bidirectional_iterator_tag __bit) { + using _Ops = _IterOps<_AlgPolicy>; - // *__first is known to be false - // *__last is known to be true - // __len >= 2 - if (__len == 2) - { - _Ops::iter_swap(__first, __last); - return __last; - } - if (__len == 3) - { - _BidirectionalIterator __m = __first; - if (__pred(*++__m)) - { - _Ops::iter_swap(__first, __m); - _Ops::iter_swap(__m, __last); - return __last; - } - _Ops::iter_swap(__m, __last); - _Ops::iter_swap(__first, __m); - return __m; + // *__first is known to be false + // *__last is known to be true + // __len >= 2 + if (__len == 2) { + _Ops::iter_swap(__first, __last); + return __last; + } + if (__len == 3) { + _BidirectionalIterator __m = __first; + if (__pred(*++__m)) { + _Ops::iter_swap(__first, __m); + _Ops::iter_swap(__m, __last); + return __last; } - if (__len <= __p.second) - { // The buffer is big enough to use - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - __destruct_n __d(0); - unique_ptr __h(__p.first, __d); - // Move the falses into the temporary buffer, and the trues to the front of the line - // Update __first to always point to the end of the trues - value_type* __t = __p.first; - ::new ((void*)__t) value_type(_Ops::__iter_move(__first)); + _Ops::iter_swap(__m, __last); + _Ops::iter_swap(__first, __m); + return __m; + } + if (__len <= __p.second) { // The buffer is big enough to use + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + __destruct_n __d(0); + unique_ptr __h(__p.first, __d); + // Move the falses into the temporary buffer, and the trues to the front of the line + // Update __first to always point to the end of the trues + value_type* __t = __p.first; + ::new ((void*)__t) value_type(_Ops::__iter_move(__first)); + __d.template __incr(); + ++__t; + _BidirectionalIterator __i = __first; + while (++__i != __last) { + if (__pred(*__i)) { + *__first = _Ops::__iter_move(__i); + ++__first; + } else { + ::new ((void*)__t) value_type(_Ops::__iter_move(__i)); __d.template __incr(); ++__t; - _BidirectionalIterator __i = __first; - while (++__i != __last) - { - if (__pred(*__i)) - { - *__first = _Ops::__iter_move(__i); - ++__first; - } - else - { - ::new ((void*)__t) value_type(_Ops::__iter_move(__i)); - __d.template __incr(); - ++__t; - } - } - // move *__last, known to be true - *__first = _Ops::__iter_move(__i); - __i = ++__first; - // All trues now at start of range, all falses in buffer - // Move falses back into range, but don't mess up __first which points to first false - for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, (void) ++__i) - *__i = _Ops::__iter_move(__t2); - // __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer - return __first; - } - // Else not enough buffer, do in place - // __len >= 4 - _BidirectionalIterator __m = __first; - _Distance __len2 = __len / 2; // __len2 >= 2 - _Ops::advance(__m, __len2); - // recurse on [__first, __m-1], except reduce __m-1 until *(__m-1) is true, *__first know to be false - // F????????????????T - // f m l - _BidirectionalIterator __m1 = __m; - _BidirectionalIterator __first_false = __first; - _Distance __len_half = __len2; - while (!__pred(*--__m1)) - { - if (__m1 == __first) - goto __first_half_done; - --__len_half; + } } - // F???TFFF?????????T - // f m1 m l - __first_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>( - __first, __m1, __pred, __len_half, __p, __bit); + // move *__last, known to be true + *__first = _Ops::__iter_move(__i); + __i = ++__first; + // All trues now at start of range, all falses in buffer + // Move falses back into range, but don't mess up __first which points to first false + for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, (void)++__i) + *__i = _Ops::__iter_move(__t2); + // __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer + return __first; + } + // Else not enough buffer, do in place + // __len >= 4 + _BidirectionalIterator __m = __first; + _Distance __len2 = __len / 2; // __len2 >= 2 + _Ops::advance(__m, __len2); + // recurse on [__first, __m-1], except reduce __m-1 until *(__m-1) is true, *__first know to be false + // F????????????????T + // f m l + _BidirectionalIterator __m1 = __m; + _BidirectionalIterator __first_false = __first; + _Distance __len_half = __len2; + while (!__pred(*--__m1)) { + if (__m1 == __first) + goto __first_half_done; + --__len_half; + } + // F???TFFF?????????T + // f m1 m l + __first_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>(__first, __m1, __pred, __len_half, __p, __bit); __first_half_done: - // TTTFFFFF?????????T - // f ff m l - // recurse on [__m, __last], except increase __m until *(__m) is false, *__last know to be true - __m1 = __m; - _BidirectionalIterator __second_false = __last; - ++__second_false; - __len_half = __len - __len2; - while (__pred(*__m1)) - { - if (++__m1 == __last) - goto __second_half_done; - --__len_half; - } - // TTTFFFFFTTTF?????T - // f ff m m1 l - __second_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>( - __m1, __last, __pred, __len_half, __p, __bit); + // TTTFFFFF?????????T + // f ff m l + // recurse on [__m, __last], except increase __m until *(__m) is false, *__last know to be true + __m1 = __m; + _BidirectionalIterator __second_false = __last; + ++__second_false; + __len_half = __len - __len2; + while (__pred(*__m1)) { + if (++__m1 == __last) + goto __second_half_done; + --__len_half; + } + // TTTFFFFFTTTF?????T + // f ff m m1 l + __second_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>(__m1, __last, __pred, __len_half, __p, __bit); __second_half_done: - // TTTFFFFFTTTTTFFFFF - // f ff m sf l - return std::__rotate<_AlgPolicy>(__first_false, __m, __second_false).first; - // TTTTTTTTFFFFFFFFFF - // | + // TTTFFFFFTTTTTFFFFF + // f ff m sf l + return std::__rotate<_AlgPolicy>(__first_false, __m, __second_false).first; + // TTTTTTTTFFFFFFFFFF + // | } template -_LIBCPP_HIDE_FROM_ABI _BidirectionalIterator -__stable_partition_impl(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, - bidirectional_iterator_tag) -{ - typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - const difference_type __alloc_limit = 4; // might want to make this a function of trivial assignment - // Either prove all true and return __first or point to first false - while (true) - { - if (__first == __last) - return __first; - if (!__pred(*__first)) - break; - ++__first; - } - // __first points to first false, everything prior to __first is already set. - // Either prove [__first, __last) is all false and return __first, or point __last to last true - do - { - if (__first == --__last) - return __first; - } while (!__pred(*__last)); - // We now have a reduced range [__first, __last] - // *__first is known to be false - // *__last is known to be true - // __len >= 2 - difference_type __len = _IterOps<_AlgPolicy>::distance(__first, __last) + 1; - pair __p(0, 0); - unique_ptr __h; - if (__len >= __alloc_limit) - { -// TODO: Remove the use of std::get_temporary_buffer -_LIBCPP_SUPPRESS_DEPRECATED_PUSH - __p = _VSTD::get_temporary_buffer(__len); -_LIBCPP_SUPPRESS_DEPRECATED_POP - __h.reset(__p.first); - } - return std::__stable_partition_impl<_AlgPolicy, _Predicate&>( - std::move(__first), std::move(__last), __pred, __len, __p, bidirectional_iterator_tag()); +_LIBCPP_HIDE_FROM_ABI _BidirectionalIterator __stable_partition_impl( + _BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, bidirectional_iterator_tag) { + typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + const difference_type __alloc_limit = 4; // might want to make this a function of trivial assignment + // Either prove all true and return __first or point to first false + while (true) { + if (__first == __last) + return __first; + if (!__pred(*__first)) + break; + ++__first; + } + // __first points to first false, everything prior to __first is already set. + // Either prove [__first, __last) is all false and return __first, or point __last to last true + do { + if (__first == --__last) + return __first; + } while (!__pred(*__last)); + // We now have a reduced range [__first, __last] + // *__first is known to be false + // *__last is known to be true + // __len >= 2 + difference_type __len = _IterOps<_AlgPolicy>::distance(__first, __last) + 1; + pair __p(0, 0); + unique_ptr __h; + if (__len >= __alloc_limit) { + // TODO: Remove the use of std::get_temporary_buffer + _LIBCPP_SUPPRESS_DEPRECATED_PUSH + __p = std::get_temporary_buffer(__len); + _LIBCPP_SUPPRESS_DEPRECATED_POP + __h.reset(__p.first); + } + return std::__stable_partition_impl<_AlgPolicy, _Predicate&>( + std::move(__first), std::move(__last), __pred, __len, __p, bidirectional_iterator_tag()); } template -_LIBCPP_HIDE_FROM_ABI -_ForwardIterator __stable_partition( +_LIBCPP_HIDE_FROM_ABI _ForwardIterator __stable_partition( _ForwardIterator __first, _ForwardIterator __last, _Predicate&& __pred, _IterCategory __iter_category) { return std::__stable_partition_impl<_AlgPolicy, __remove_cvref_t<_Predicate>&>( std::move(__first), std::move(__last), __pred, __iter_category); } template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) -{ +inline _LIBCPP_HIDE_FROM_ABI _ForwardIterator +stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { using _IterCategory = typename iterator_traits<_ForwardIterator>::iterator_category; return std::__stable_partition<_ClassicAlgPolicy, _Predicate&>( std::move(__first), std::move(__last), __pred, _IterCategory()); @@ -326,4 +302,6 @@ stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate _ _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_STABLE_PARTITION_H diff --git a/include/c++/v1/__algorithm/stable_sort.h b/include/c++/v1/__algorithm/stable_sort.h index 8e70978a..726e7e16 100644 --- a/include/c++/v1/__algorithm/stable_sort.h +++ b/include/c++/v1/__algorithm/stable_sort.h @@ -15,233 +15,259 @@ #include <__algorithm/iterator_operations.h> #include <__algorithm/sort.h> #include <__config> +#include <__debug_utils/strict_weak_ordering_check.h> #include <__iterator/iterator_traits.h> #include <__memory/destruct_n.h> #include <__memory/temporary_buffer.h> #include <__memory/unique_ptr.h> +#include <__type_traits/is_trivially_assignable.h> #include <__utility/move.h> #include <__utility/pair.h> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -template -_LIBCPP_HIDE_FROM_ABI void -__merge_move_construct(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - typename iterator_traits<_InputIterator1>::value_type* __result, _Compare __comp) -{ - using _Ops = _IterOps<_AlgPolicy>; - - typedef typename iterator_traits<_InputIterator1>::value_type value_type; +template +_LIBCPP_HIDE_FROM_ABI void __insertion_sort_move( + _BidirectionalIterator __first1, + _BidirectionalIterator __last1, + typename iterator_traits<_BidirectionalIterator>::value_type* __first2, + _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + if (__first1 != __last1) { __destruct_n __d(0); - unique_ptr __h(__result, __d); - for (; true; ++__result) - { - if (__first1 == __last1) - { - for (; __first2 != __last2; ++__first2, (void) ++__result, __d.template __incr()) - ::new ((void*)__result) value_type(_Ops::__iter_move(__first2)); - __h.release(); - return; - } - if (__first2 == __last2) - { - for (; __first1 != __last1; ++__first1, (void) ++__result, __d.template __incr()) - ::new ((void*)__result) value_type(_Ops::__iter_move(__first1)); - __h.release(); - return; - } - if (__comp(*__first2, *__first1)) - { - ::new ((void*)__result) value_type(_Ops::__iter_move(__first2)); - __d.template __incr(); - ++__first2; - } - else - { - ::new ((void*)__result) value_type(_Ops::__iter_move(__first1)); - __d.template __incr(); - ++__first1; - } + unique_ptr __h(__first2, __d); + value_type* __last2 = __first2; + ::new ((void*)__last2) value_type(_Ops::__iter_move(__first1)); + __d.template __incr(); + for (++__last2; ++__first1 != __last1; ++__last2) { + value_type* __j2 = __last2; + value_type* __i2 = __j2; + if (__comp(*__first1, *--__i2)) { + ::new ((void*)__j2) value_type(std::move(*__i2)); + __d.template __incr(); + for (--__j2; __i2 != __first2 && __comp(*__first1, *--__i2); --__j2) + *__j2 = std::move(*__i2); + *__j2 = _Ops::__iter_move(__first1); + } else { + ::new ((void*)__j2) value_type(_Ops::__iter_move(__first1)); + __d.template __incr(); + } + } + __h.release(); + } +} + +template +_LIBCPP_HIDE_FROM_ABI void __merge_move_construct( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + typename iterator_traits<_InputIterator1>::value_type* __result, + _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_InputIterator1>::value_type value_type; + __destruct_n __d(0); + unique_ptr __h(__result, __d); + for (; true; ++__result) { + if (__first1 == __last1) { + for (; __first2 != __last2; ++__first2, (void)++__result, __d.template __incr()) + ::new ((void*)__result) value_type(_Ops::__iter_move(__first2)); + __h.release(); + return; + } + if (__first2 == __last2) { + for (; __first1 != __last1; ++__first1, (void)++__result, __d.template __incr()) + ::new ((void*)__result) value_type(_Ops::__iter_move(__first1)); + __h.release(); + return; } + if (__comp(*__first2, *__first1)) { + ::new ((void*)__result) value_type(_Ops::__iter_move(__first2)); + __d.template __incr(); + ++__first2; + } else { + ::new ((void*)__result) value_type(_Ops::__iter_move(__first1)); + __d.template __incr(); + ++__first1; + } + } } template -_LIBCPP_HIDE_FROM_ABI void -__merge_move_assign(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result, _Compare __comp) -{ - using _Ops = _IterOps<_AlgPolicy>; - - for (; __first1 != __last1; ++__result) - { - if (__first2 == __last2) - { - for (; __first1 != __last1; ++__first1, (void) ++__result) - *__result = _Ops::__iter_move(__first1); - return; - } - if (__comp(*__first2, *__first1)) - { - *__result = _Ops::__iter_move(__first2); - ++__first2; - } - else - { - *__result = _Ops::__iter_move(__first1); - ++__first1; - } +_LIBCPP_HIDE_FROM_ABI void __merge_move_assign( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result, + _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; + + for (; __first1 != __last1; ++__result) { + if (__first2 == __last2) { + for (; __first1 != __last1; ++__first1, (void)++__result) + *__result = _Ops::__iter_move(__first1); + return; + } + if (__comp(*__first2, *__first1)) { + *__result = _Ops::__iter_move(__first2); + ++__first2; + } else { + *__result = _Ops::__iter_move(__first1); + ++__first1; } - for (; __first2 != __last2; ++__first2, (void) ++__result) - *__result = _Ops::__iter_move(__first2); + } + for (; __first2 != __last2; ++__first2, (void)++__result) + *__result = _Ops::__iter_move(__first2); } template -void -__stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len, - typename iterator_traits<_RandomAccessIterator>::value_type* __buff, ptrdiff_t __buff_size); +void __stable_sort(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Compare __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len, + typename iterator_traits<_RandomAccessIterator>::value_type* __buff, + ptrdiff_t __buff_size); template -void -__stable_sort_move(_RandomAccessIterator __first1, _RandomAccessIterator __last1, _Compare __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len, - typename iterator_traits<_RandomAccessIterator>::value_type* __first2) -{ - using _Ops = _IterOps<_AlgPolicy>; - - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - switch (__len) - { - case 0: - return; - case 1: - ::new ((void*)__first2) value_type(_Ops::__iter_move(__first1)); - return; - case 2: - __destruct_n __d(0); - unique_ptr __h2(__first2, __d); - if (__comp(*--__last1, *__first1)) - { - ::new ((void*)__first2) value_type(_Ops::__iter_move(__last1)); - __d.template __incr(); - ++__first2; - ::new ((void*)__first2) value_type(_Ops::__iter_move(__first1)); - } - else - { - ::new ((void*)__first2) value_type(_Ops::__iter_move(__first1)); - __d.template __incr(); - ++__first2; - ::new ((void*)__first2) value_type(_Ops::__iter_move(__last1)); - } - __h2.release(); - return; - } - if (__len <= 8) - { - std::__insertion_sort_move<_AlgPolicy, _Compare>(__first1, __last1, __first2, __comp); - return; +void __stable_sort_move(_RandomAccessIterator __first1, + _RandomAccessIterator __last1, + _Compare __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len, + typename iterator_traits<_RandomAccessIterator>::value_type* __first2) { + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + switch (__len) { + case 0: + return; + case 1: + ::new ((void*)__first2) value_type(_Ops::__iter_move(__first1)); + return; + case 2: + __destruct_n __d(0); + unique_ptr __h2(__first2, __d); + if (__comp(*--__last1, *__first1)) { + ::new ((void*)__first2) value_type(_Ops::__iter_move(__last1)); + __d.template __incr(); + ++__first2; + ::new ((void*)__first2) value_type(_Ops::__iter_move(__first1)); + } else { + ::new ((void*)__first2) value_type(_Ops::__iter_move(__first1)); + __d.template __incr(); + ++__first2; + ::new ((void*)__first2) value_type(_Ops::__iter_move(__last1)); } - typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2; - _RandomAccessIterator __m = __first1 + __l2; - std::__stable_sort<_AlgPolicy, _Compare>(__first1, __m, __comp, __l2, __first2, __l2); - std::__stable_sort<_AlgPolicy, _Compare>(__m, __last1, __comp, __len - __l2, __first2 + __l2, __len - __l2); - std::__merge_move_construct<_AlgPolicy, _Compare>(__first1, __m, __m, __last1, __first2, __comp); + __h2.release(); + return; + } + if (__len <= 8) { + std::__insertion_sort_move<_AlgPolicy, _Compare>(__first1, __last1, __first2, __comp); + return; + } + typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2; + _RandomAccessIterator __m = __first1 + __l2; + std::__stable_sort<_AlgPolicy, _Compare>(__first1, __m, __comp, __l2, __first2, __l2); + std::__stable_sort<_AlgPolicy, _Compare>(__m, __last1, __comp, __len - __l2, __first2 + __l2, __len - __l2); + std::__merge_move_construct<_AlgPolicy, _Compare>(__first1, __m, __m, __last1, __first2, __comp); } template -struct __stable_sort_switch -{ - static const unsigned value = 128*is_trivially_copy_assignable<_Tp>::value; +struct __stable_sort_switch { + static const unsigned value = 128 * is_trivially_copy_assignable<_Tp>::value; }; template -void -__stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len, - typename iterator_traits<_RandomAccessIterator>::value_type* __buff, ptrdiff_t __buff_size) -{ - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - switch (__len) - { - case 0: - case 1: - return; - case 2: - if (__comp(*--__last, *__first)) - _IterOps<_AlgPolicy>::iter_swap(__first, __last); - return; - } - if (__len <= static_cast(__stable_sort_switch::value)) - { - std::__insertion_sort<_AlgPolicy, _Compare>(__first, __last, __comp); - return; - } - typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2; - _RandomAccessIterator __m = __first + __l2; - if (__len <= __buff_size) - { - __destruct_n __d(0); - unique_ptr __h2(__buff, __d); - std::__stable_sort_move<_AlgPolicy, _Compare>(__first, __m, __comp, __l2, __buff); - __d.__set(__l2, (value_type*)nullptr); - std::__stable_sort_move<_AlgPolicy, _Compare>(__m, __last, __comp, __len - __l2, __buff + __l2); - __d.__set(__len, (value_type*)nullptr); - std::__merge_move_assign<_AlgPolicy, _Compare>( - __buff, __buff + __l2, __buff + __l2, __buff + __len, __first, __comp); -// _VSTD::__merge<_Compare>(move_iterator(__buff), -// move_iterator(__buff + __l2), -// move_iterator<_RandomAccessIterator>(__buff + __l2), -// move_iterator<_RandomAccessIterator>(__buff + __len), -// __first, __comp); - return; - } - std::__stable_sort<_AlgPolicy, _Compare>(__first, __m, __comp, __l2, __buff, __buff_size); - std::__stable_sort<_AlgPolicy, _Compare>(__m, __last, __comp, __len - __l2, __buff, __buff_size); - std::__inplace_merge<_AlgPolicy>(__first, __m, __last, __comp, __l2, __len - __l2, __buff, __buff_size); +void __stable_sort(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Compare __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len, + typename iterator_traits<_RandomAccessIterator>::value_type* __buff, + ptrdiff_t __buff_size) { + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + switch (__len) { + case 0: + case 1: + return; + case 2: + if (__comp(*--__last, *__first)) + _IterOps<_AlgPolicy>::iter_swap(__first, __last); + return; + } + if (__len <= static_cast(__stable_sort_switch::value)) { + std::__insertion_sort<_AlgPolicy, _Compare>(__first, __last, __comp); + return; + } + typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2; + _RandomAccessIterator __m = __first + __l2; + if (__len <= __buff_size) { + __destruct_n __d(0); + unique_ptr __h2(__buff, __d); + std::__stable_sort_move<_AlgPolicy, _Compare>(__first, __m, __comp, __l2, __buff); + __d.__set(__l2, (value_type*)nullptr); + std::__stable_sort_move<_AlgPolicy, _Compare>(__m, __last, __comp, __len - __l2, __buff + __l2); + __d.__set(__len, (value_type*)nullptr); + std::__merge_move_assign<_AlgPolicy, _Compare>( + __buff, __buff + __l2, __buff + __l2, __buff + __len, __first, __comp); + // std::__merge<_Compare>(move_iterator(__buff), + // move_iterator(__buff + __l2), + // move_iterator<_RandomAccessIterator>(__buff + __l2), + // move_iterator<_RandomAccessIterator>(__buff + __len), + // __first, __comp); + return; + } + std::__stable_sort<_AlgPolicy, _Compare>(__first, __m, __comp, __l2, __buff, __buff_size); + std::__stable_sort<_AlgPolicy, _Compare>(__m, __last, __comp, __len - __l2, __buff, __buff_size); + std::__inplace_merge<_AlgPolicy>(__first, __m, __last, __comp, __l2, __len - __l2, __buff, __buff_size); } template -inline _LIBCPP_HIDE_FROM_ABI -void __stable_sort_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare& __comp) { - using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; +inline _LIBCPP_HIDE_FROM_ABI void +__stable_sort_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare& __comp) { + using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type; difference_type __len = __last - __first; pair __buf(0, 0); unique_ptr __h; if (__len > static_cast(__stable_sort_switch::value)) { -// TODO: Remove the use of std::get_temporary_buffer -_LIBCPP_SUPPRESS_DEPRECATED_PUSH - __buf = std::get_temporary_buffer(__len); -_LIBCPP_SUPPRESS_DEPRECATED_POP - __h.reset(__buf.first); + // TODO: Remove the use of std::get_temporary_buffer + _LIBCPP_SUPPRESS_DEPRECATED_PUSH + __buf = std::get_temporary_buffer(__len); + _LIBCPP_SUPPRESS_DEPRECATED_POP + __h.reset(__buf.first); } std::__stable_sort<_AlgPolicy, __comp_ref_type<_Compare> >(__first, __last, __comp, __len, __buf.first, __buf.second); + std::__check_strict_weak_ordering_sorted(__first, __last, __comp); } template -inline _LIBCPP_HIDE_FROM_ABI -void stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { +inline _LIBCPP_HIDE_FROM_ABI void +stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { std::__stable_sort_impl<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp); } template -inline _LIBCPP_HIDE_FROM_ABI -void stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { - std::stable_sort(__first, __last, __less::value_type>()); +inline _LIBCPP_HIDE_FROM_ABI void stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::stable_sort(__first, __last, __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_STABLE_SORT_H diff --git a/include/c++/v1/__algorithm/swap_ranges.h b/include/c++/v1/__algorithm/swap_ranges.h index 5ce5ed8c..54b453b7 100644 --- a/include/c++/v1/__algorithm/swap_ranges.h +++ b/include/c++/v1/__algorithm/swap_ranges.h @@ -18,12 +18,14 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD // 2+2 iterators: the shorter size will be used. template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -pair<_ForwardIterator1, _ForwardIterator2> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator1, _ForwardIterator2> __swap_ranges(_ForwardIterator1 __first1, _Sentinel1 __last1, _ForwardIterator2 __first2, _Sentinel2 __last2) { while (__first1 != __last1 && __first2 != __last2) { _IterOps<_AlgPolicy>::iter_swap(__first1, __first2); @@ -36,8 +38,7 @@ __swap_ranges(_ForwardIterator1 __first1, _Sentinel1 __last1, _ForwardIterator2 // 2+1 iterators: size2 >= size1. template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -pair<_ForwardIterator1, _ForwardIterator2> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator1, _ForwardIterator2> __swap_ranges(_ForwardIterator1 __first1, _Sentinel1 __last1, _ForwardIterator2 __first2) { while (__first1 != __last1) { _IterOps<_AlgPolicy>::iter_swap(__first1, __first2); @@ -49,12 +50,13 @@ __swap_ranges(_ForwardIterator1 __first1, _Sentinel1 __last1, _ForwardIterator2 } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator2 +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator2 swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) { - return std::__swap_ranges<_ClassicAlgPolicy>( - std::move(__first1), std::move(__last1), std::move(__first2)).second; + return std::__swap_ranges<_ClassicAlgPolicy>(std::move(__first1), std::move(__last1), std::move(__first2)).second; } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_SWAP_RANGES_H diff --git a/include/c++/v1/__algorithm/transform.h b/include/c++/v1/__algorithm/transform.h index 4722c154..1b424409 100644 --- a/include/c++/v1/__algorithm/transform.h +++ b/include/c++/v1/__algorithm/transform.h @@ -18,24 +18,23 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __op) -{ - for (; __first != __last; ++__first, (void) ++__result) - *__result = __op(*__first); - return __result; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __op) { + for (; __first != __last; ++__first, (void)++__result) + *__result = __op(*__first); + return __result; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -transform(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, - _OutputIterator __result, _BinaryOperation __binary_op) -{ - for (; __first1 != __last1; ++__first1, (void) ++__first2, ++__result) - *__result = __binary_op(*__first1, *__first2); - return __result; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator transform( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _OutputIterator __result, + _BinaryOperation __binary_op) { + for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) + *__result = __binary_op(*__first1, *__first2); + return __result; } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h b/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h index 1e86074b..aef0fbfb 100644 --- a/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h +++ b/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h @@ -11,16 +11,16 @@ #include <__config> #include <__functional/invoke.h> -#include +#include <__type_traits/remove_cvref.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_PUSH_MACROS -#include <__undef_macros> +# include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD @@ -41,22 +41,18 @@ class _ClassicGenAdaptor { public: using result_type = invoke_result_t<_Gen&>; - _LIBCPP_HIDE_FROM_ABI - static constexpr auto min() { return __remove_cvref_t<_Gen>::min(); } - _LIBCPP_HIDE_FROM_ABI - static constexpr auto max() { return __remove_cvref_t<_Gen>::max(); } + _LIBCPP_HIDE_FROM_ABI static constexpr auto min() { return __remove_cvref_t<_Gen>::min(); } + _LIBCPP_HIDE_FROM_ABI static constexpr auto max() { return __remove_cvref_t<_Gen>::max(); } - _LIBCPP_HIDE_FROM_ABI - constexpr explicit _ClassicGenAdaptor(_Gen& __g) : __gen_(__g) {} + _LIBCPP_HIDE_FROM_ABI constexpr explicit _ClassicGenAdaptor(_Gen& __g) : __gen_(__g) {} - _LIBCPP_HIDE_FROM_ABI - constexpr auto operator()() const { return __gen_(); } + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()() const { return __gen_(); } }; _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___ALGORITHM_RANGES_UNIFORM_RANDOM_BIT_GENERATOR_ADAPTOR_H diff --git a/include/c++/v1/__algorithm/unique.h b/include/c++/v1/__algorithm/unique.h index 1717a00c..d5970145 100644 --- a/include/c++/v1/__algorithm/unique.h +++ b/include/c++/v1/__algorithm/unique.h @@ -21,12 +21,15 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD // unique template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 std::pair<_Iter, _Iter> +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 std::pair<_Iter, _Iter> __unique(_Iter __first, _Sent __last, _BinaryPredicate&& __pred) { __first = std::__adjacent_find(__first, __last, __pred); if (__first != __last) { @@ -43,17 +46,19 @@ __unique(_Iter __first, _Sent __last, _BinaryPredicate&& __pred) { } template -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator unique(_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred) { return std::__unique<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __pred).first; } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator unique(_ForwardIterator __first, _ForwardIterator __last) { return std::unique(__first, __last, __equal_to()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_UNIQUE_H diff --git a/include/c++/v1/__algorithm/unique_copy.h b/include/c++/v1/__algorithm/unique_copy.h index 81fcd50f..16ce80ca 100644 --- a/include/c++/v1/__algorithm/unique_copy.h +++ b/include/c++/v1/__algorithm/unique_copy.h @@ -23,6 +23,9 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD namespace __unique_copy_tags { @@ -119,4 +122,6 @@ unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __res _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_UNIQUE_COPY_H diff --git a/include/c++/v1/__algorithm/unwrap_iter.h b/include/c++/v1/__algorithm/unwrap_iter.h index 0f661e10..8cc0d22d 100644 --- a/include/c++/v1/__algorithm/unwrap_iter.h +++ b/include/c++/v1/__algorithm/unwrap_iter.h @@ -13,7 +13,7 @@ #include <__iterator/iterator_traits.h> #include <__memory/pointer_traits.h> #include <__type_traits/enable_if.h> -#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_constructible.h> #include <__utility/declval.h> #include <__utility/move.h> @@ -21,24 +21,27 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD // TODO: Change the name of __unwrap_iter_impl to something more appropriate // The job of __unwrap_iter is to remove iterator wrappers (like reverse_iterator or __wrap_iter), // to reduce the number of template instantiations and to enable pointer-based optimizations e.g. in std::copy. -// In debug mode, we don't do this. // // Some algorithms (e.g. std::copy, but not std::sort) need to convert an // "unwrapped" result back into the original iterator type. Doing that is the job of __rewrap_iter. // Default case - we can't unwrap anything -template ::value> +template ::value> struct __unwrap_iter_impl { static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Iter __rewrap(_Iter, _Iter __iter) { return __iter; } static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Iter __unwrap(_Iter __i) _NOEXCEPT { return __i; } }; -#ifndef _LIBCPP_ENABLE_DEBUG_MODE +// TODO(hardening): make sure that the following unwrapping doesn't unexpectedly turn hardened iterators into raw +// pointers. // It's a contiguous iterator, so we can use a raw pointer instead template @@ -54,16 +57,22 @@ struct __unwrap_iter_impl<_Iter, true> { } }; -#endif // !_LIBCPP_ENABLE_DEBUG_MODE - -template, - __enable_if_t::value, int> = 0> -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -decltype(_Impl::__unwrap(std::declval<_Iter>())) __unwrap_iter(_Iter __i) _NOEXCEPT { +template , + __enable_if_t::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 decltype(_Impl::__unwrap(std::declval<_Iter>())) +__unwrap_iter(_Iter __i) _NOEXCEPT { return _Impl::__unwrap(__i); } +// Allow input_iterators to be passed to __unwrap_iter (but not __rewrap_iter) +#if _LIBCPP_STD_VER >= 20 +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI constexpr _Iter __unwrap_iter(_Iter __i) noexcept { + return __i; +} +#endif + template > _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _OrigIter __rewrap_iter(_OrigIter __orig_iter, _Iter __iter) _NOEXCEPT { return _Impl::__rewrap(std::move(__orig_iter), std::move(__iter)); @@ -71,4 +80,6 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _OrigIter __rewrap_iter(_OrigIter __orig _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_UNWRAP_ITER_H diff --git a/include/c++/v1/__algorithm/unwrap_range.h b/include/c++/v1/__algorithm/unwrap_range.h index 2c5d23e6..2d4b9bb5 100644 --- a/include/c++/v1/__algorithm/unwrap_range.h +++ b/include/c++/v1/__algorithm/unwrap_range.h @@ -22,13 +22,16 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD // __unwrap_range and __rewrap_range are used to unwrap ranges which may have different iterator and sentinel types. // __unwrap_iter and __rewrap_iter don't work for this, because they assume that the iterator and sentinel have // the same type. __unwrap_range tries to get two iterators and then forward to __unwrap_iter. -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template struct __unwrap_range_impl { _LIBCPP_HIDE_FROM_ABI static constexpr auto __unwrap(_Iter __first, _Sent __sent) @@ -43,14 +46,14 @@ struct __unwrap_range_impl { } _LIBCPP_HIDE_FROM_ABI static constexpr auto - __rewrap(_Iter __orig_iter, decltype(std::__unwrap_iter(__orig_iter)) __iter) + __rewrap(_Iter __orig_iter, decltype(std::__unwrap_iter(std::move(__orig_iter))) __iter) requires random_access_iterator<_Iter> && sized_sentinel_for<_Sent, _Iter> { return std::__rewrap_iter(std::move(__orig_iter), std::move(__iter)); } _LIBCPP_HIDE_FROM_ABI static constexpr auto __rewrap(const _Iter&, _Iter __iter) - requires (!(random_access_iterator<_Iter> && sized_sentinel_for<_Sent, _Iter>)) + requires(!(random_access_iterator<_Iter> && sized_sentinel_for<_Sent, _Iter>)) { return __iter; } @@ -73,25 +76,24 @@ _LIBCPP_HIDE_FROM_ABI constexpr auto __unwrap_range(_Iter __first, _Sent __last) return __unwrap_range_impl<_Iter, _Sent>::__unwrap(std::move(__first), std::move(__last)); } -template < - class _Sent, - class _Iter, - class _Unwrapped = decltype(std::__unwrap_range(std::declval<_Iter>(), std::declval<_Sent>()))> +template < class _Sent, class _Iter, class _Unwrapped> _LIBCPP_HIDE_FROM_ABI constexpr _Iter __rewrap_range(_Iter __orig_iter, _Unwrapped __iter) { return __unwrap_range_impl<_Iter, _Sent>::__rewrap(std::move(__orig_iter), std::move(__iter)); } -#else // _LIBCPP_STD_VER > 17 +#else // _LIBCPP_STD_VER >= 20 template ()))> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR pair<_Unwrapped, _Unwrapped> __unwrap_range(_Iter __first, _Iter __last) { return std::make_pair(std::__unwrap_iter(std::move(__first)), std::__unwrap_iter(std::move(__last))); } -template ()))> +template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Iter __rewrap_range(_Iter __orig_iter, _Unwrapped __iter) { return std::__rewrap_iter(std::move(__orig_iter), std::move(__iter)); } -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_UNWRAP_RANGE_H diff --git a/include/c++/v1/__algorithm/upper_bound.h b/include/c++/v1/__algorithm/upper_bound.h index 96552ce1..c39dec2e 100644 --- a/include/c++/v1/__algorithm/upper_bound.h +++ b/include/c++/v1/__algorithm/upper_bound.h @@ -18,13 +18,16 @@ #include <__iterator/advance.h> #include <__iterator/distance.h> #include <__iterator/iterator_traits.h> -#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_constructible.h> #include <__utility/move.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template @@ -45,24 +48,21 @@ __upper_bound(_Iter __first, _Sent __last, const _Tp& __value, _Compare&& __comp } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, _Compare __comp) { - static_assert(is_copy_constructible<_ForwardIterator>::value, - "Iterator has to be copy constructible"); + static_assert(is_copy_constructible<_ForwardIterator>::value, "Iterator has to be copy constructible"); return std::__upper_bound<_ClassicAlgPolicy>( std::move(__first), std::move(__last), __value, std::move(__comp), std::__identity()); } template -_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { - return std::upper_bound( - std::move(__first), - std::move(__last), - __value, - __less<_Tp, typename iterator_traits<_ForwardIterator>::value_type>()); + return std::upper_bound(std::move(__first), std::move(__last), __value, __less<>()); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ALGORITHM_UPPER_BOUND_H diff --git a/include/c++/v1/__assert b/include/c++/v1/__assert index 9c0cd1b1..49769fb4 100644 --- a/include/c++/v1/__assert +++ b/include/c++/v1/__assert @@ -10,46 +10,109 @@ #ifndef _LIBCPP___ASSERT #define _LIBCPP___ASSERT +#include <__assertion_handler> // Note: this include is generated by CMake and is potentially vendor-provided. #include <__config> -#include <__verbose_abort> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -// TODO: Remove in LLVM 17. -#if defined(_LIBCPP_DEBUG) -# error "Defining _LIBCPP_DEBUG is not supported anymore. Please use _LIBCPP_ENABLE_DEBUG_MODE instead." -#endif +#define _LIBCPP_ASSERT(expression, message) \ + (__builtin_expect(static_cast(expression), 1) \ + ? (void)0 \ + : _LIBCPP_ASSERTION_HANDLER(__FILE__ ":" _LIBCPP_TOSTRING(__LINE__) ": assertion " _LIBCPP_TOSTRING( \ + expression) " failed: " message "\n")) -// Automatically enable assertions when the debug mode is enabled. -#if defined(_LIBCPP_ENABLE_DEBUG_MODE) -# ifndef _LIBCPP_ENABLE_ASSERTIONS -# define _LIBCPP_ENABLE_ASSERTIONS 1 -# endif +// TODO: __builtin_assume can currently inhibit optimizations. Until this has been fixed and we can add +// assumptions without a clear optimization intent, disable that to avoid worsening the code generation. +// See https://discourse.llvm.org/t/llvm-assume-blocks-optimization/71609 for a discussion. +#if 0 && __has_builtin(__builtin_assume) +# define _LIBCPP_ASSUME(expression) \ + (_LIBCPP_DIAGNOSTIC_PUSH _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wassume") \ + __builtin_assume(static_cast(expression)) _LIBCPP_DIAGNOSTIC_POP) +#else +# define _LIBCPP_ASSUME(expression) ((void)0) #endif -#ifndef _LIBCPP_ENABLE_ASSERTIONS -# define _LIBCPP_ENABLE_ASSERTIONS _LIBCPP_ENABLE_ASSERTIONS_DEFAULT -#endif +// clang-format off +// Fast hardening mode checks. -#if _LIBCPP_ENABLE_ASSERTIONS != 0 && _LIBCPP_ENABLE_ASSERTIONS != 1 -# error "_LIBCPP_ENABLE_ASSERTIONS must be set to 0 or 1" -#endif +#if _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_FAST + +// Enabled checks. +# define _LIBCPP_ASSERT_VALID_INPUT_RANGE(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(expression, message) _LIBCPP_ASSERT(expression, message) +// Disabled checks. +// On most modern platforms, dereferencing a null pointer does not lead to an actual memory access. +# define _LIBCPP_ASSERT_NON_NULL(expression, message) _LIBCPP_ASSUME(expression) +// Overlapping ranges will make algorithms produce incorrect results but don't directly lead to a security +// vulnerability. +# define _LIBCPP_ASSERT_NON_OVERLAPPING_RANGES(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_VALID_DEALLOCATION(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_COMPATIBLE_ALLOCATOR(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_PEDANTIC(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_SEMANTIC_REQUIREMENT(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_INTERNAL(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_UNCATEGORIZED(expression, message) _LIBCPP_ASSUME(expression) + +// Extensive hardening mode checks. + +#elif _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_EXTENSIVE + +// Enabled checks. +# define _LIBCPP_ASSERT_VALID_INPUT_RANGE(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_NON_NULL(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_NON_OVERLAPPING_RANGES(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_VALID_DEALLOCATION(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_COMPATIBLE_ALLOCATOR(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_PEDANTIC(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_UNCATEGORIZED(expression, message) _LIBCPP_ASSERT(expression, message) +// Disabled checks. +# define _LIBCPP_ASSERT_SEMANTIC_REQUIREMENT(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_INTERNAL(expression, message) _LIBCPP_ASSUME(expression) + +// Debug hardening mode checks. + +#elif _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_DEBUG + +// All checks enabled. +# define _LIBCPP_ASSERT_VALID_INPUT_RANGE(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_NON_NULL(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_NON_OVERLAPPING_RANGES(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_VALID_DEALLOCATION(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_COMPATIBLE_ALLOCATOR(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_PEDANTIC(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_SEMANTIC_REQUIREMENT(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_INTERNAL(expression, message) _LIBCPP_ASSERT(expression, message) +# define _LIBCPP_ASSERT_UNCATEGORIZED(expression, message) _LIBCPP_ASSERT(expression, message) + +// Disable all checks if hardening is not enabled. -#if _LIBCPP_ENABLE_ASSERTIONS -# define _LIBCPP_ASSERT(expression, message) \ - (__builtin_expect(static_cast(expression), 1) ? \ - (void)0 : \ - _LIBCPP_VERBOSE_ABORT("%s:%d: assertion %s failed: %s", __FILE__, __LINE__, #expression, message)) -#elif !defined(_LIBCPP_ASSERTIONS_DISABLE_ASSUME) && __has_builtin(__builtin_assume) -# define _LIBCPP_ASSERT(expression, message) \ - (_LIBCPP_DIAGNOSTIC_PUSH \ - _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wassume") \ - __builtin_assume(static_cast(expression)) \ - _LIBCPP_DIAGNOSTIC_POP) #else -# define _LIBCPP_ASSERT(expression, message) ((void)0) -#endif + +// All checks disabled. +# define _LIBCPP_ASSERT_VALID_INPUT_RANGE(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_NON_NULL(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_NON_OVERLAPPING_RANGES(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_VALID_DEALLOCATION(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_COMPATIBLE_ALLOCATOR(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_PEDANTIC(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_SEMANTIC_REQUIREMENT(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_INTERNAL(expression, message) _LIBCPP_ASSUME(expression) +# define _LIBCPP_ASSERT_UNCATEGORIZED(expression, message) _LIBCPP_ASSUME(expression) + +#endif // _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_FAST +// clang-format on #endif // _LIBCPP___ASSERT diff --git a/include/c++/v1/__availability b/include/c++/v1/__availability deleted file mode 100644 index 50c6cdde..00000000 --- a/include/c++/v1/__availability +++ /dev/null @@ -1,298 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___AVAILABILITY -#define _LIBCPP___AVAILABILITY - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -// Libc++ is shipped by various vendors. In particular, it is used as a system -// library on macOS, iOS and other Apple platforms. In order for users to be -// able to compile a binary that is intended to be deployed to an older version -// of a platform, Clang provides availability attributes [1]. These attributes -// can be placed on declarations and are used to describe the life cycle of a -// symbol in the library. -// -// The main goal is to ensure a compile-time error if a symbol that hasn't been -// introduced in a previously released library is used in a program that targets -// that previously released library. Normally, this would be a load-time error -// when one tries to launch the program against the older library. -// -// For example, the filesystem library was introduced in the dylib in macOS 10.15. -// If a user compiles on a macOS 10.15 host but targets macOS 10.13 with their -// program, the compiler would normally not complain (because the required -// declarations are in the headers), but the dynamic loader would fail to find -// the symbols when actually trying to launch the program on macOS 10.13. To -// turn this into a compile-time issue instead, declarations are annotated with -// when they were introduced, and the compiler can produce a diagnostic if the -// program references something that isn't available on the deployment target. -// -// This mechanism is general in nature, and any vendor can add their markup to -// the library (see below). Whenever a new feature is added that requires support -// in the shared library, a macro should be added below to mark this feature -// as unavailable. When vendors decide to ship the feature as part of their -// shared library, they can update the markup appropriately. -// -// Furthermore, many features in the standard library have corresponding -// feature-test macros. When a feature is made unavailable on some deployment -// target, a macro should be defined to signal that it is unavailable. That -// macro can then be picked up when feature-test macros are generated (see -// generate_feature_test_macro_components.py) to make sure that feature-test -// macros don't announce a feature as being implemented if it has been marked -// as unavailable. -// -// Note that this mechanism is disabled by default in the "upstream" libc++. -// Availability annotations are only meaningful when shipping libc++ inside -// a platform (i.e. as a system library), and so vendors that want them should -// turn those annotations on at CMake configuration time. -// -// [1]: https://clang.llvm.org/docs/AttributeReference.html#availability - - -// For backwards compatibility, allow users to define _LIBCPP_DISABLE_AVAILABILITY -// for a while. -#if defined(_LIBCPP_DISABLE_AVAILABILITY) -# if !defined(_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS) -# define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS -# endif -#endif - -// Availability markup is disabled when building the library, or when the compiler -// doesn't support the proper attributes. -#if defined(_LIBCPP_BUILDING_LIBRARY) || \ - defined(_LIBCXXABI_BUILDING_LIBRARY) || \ - !__has_feature(attribute_availability_with_strict) || \ - !__has_feature(attribute_availability_in_templates) || \ - !__has_extension(pragma_clang_attribute_external_declaration) -# if !defined(_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS) -# define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS -# endif -#endif - -#if defined(_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS) - - // This controls the availability of std::shared_mutex and std::shared_timed_mutex, - // which were added to the dylib later. -# define _LIBCPP_AVAILABILITY_SHARED_MUTEX -// # define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_shared_mutex -// # define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_shared_timed_mutex - - // These macros control the availability of std::bad_optional_access and - // other exception types. These were put in the shared library to prevent - // code bloat from every user program defining the vtable for these exception - // types. - // - // Note that when exceptions are disabled, the methods that normally throw - // these exceptions can be used even on older deployment targets, but those - // methods will abort instead of throwing. -# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS -# define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS -# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST - - // This controls the availability of std::uncaught_exceptions(). -# define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS - - // This controls the availability of the sized version of ::operator delete, - // ::operator delete[], and their align_val_t variants, which were all added - // in C++17, and hence not present in early dylibs. -# define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE - - // This controls the availability of the std::future_error exception. - // - // Note that when exceptions are disabled, the methods that normally throw - // std::future_error can be used even on older deployment targets, but those - // methods will abort instead of throwing. -# define _LIBCPP_AVAILABILITY_FUTURE_ERROR - - // This controls the availability of std::type_info's vtable. - // I can't imagine how using std::type_info can work at all if - // this isn't supported. -# define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE - - // This controls the availability of std::locale::category members - // (e.g. std::locale::collate), which are defined in the dylib. -# define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY - - // This controls the availability of atomic operations on std::shared_ptr - // (e.g. `std::atomic_store(std::shared_ptr)`), which require a shared - // lock table located in the dylib. -# define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR - - // These macros control the availability of all parts of that - // depend on something in the dylib. -# define _LIBCPP_AVAILABILITY_FILESYSTEM -# define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH -# define _LIBCPP_AVAILABILITY_FILESYSTEM_POP -// # define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_filesystem - - // This controls the availability of floating-point std::to_chars functions. - // These overloads were added later than the integer overloads. -# define _LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT - - // This controls the availability of the C++20 synchronization library, - // which requires shared library support for various operations - // (see libcxx/src/atomic.cpp). This includes , , - // , and notification functions on std::atomic. -# define _LIBCPP_AVAILABILITY_SYNC -// # define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_atomic_wait -// # define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_barrier -// # define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_latch -// # define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_semaphore - - // This controls the availability of the C++20 format library. - // The library is in development and not ABI stable yet. P2216 is - // retroactively accepted in C++20. This paper contains ABI breaking - // changes. -# define _LIBCPP_AVAILABILITY_FORMAT -// # define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format - - // This controls whether the library claims to provide a default verbose - // termination function, and consequently whether the headers will try - // to use it when the mechanism isn't overriden at compile-time. -// # define _LIBCPP_HAS_NO_VERBOSE_ABORT_IN_LIBRARY - -#elif defined(__APPLE__) - -# define _LIBCPP_AVAILABILITY_SHARED_MUTEX \ - __attribute__((availability(macos,strict,introduced=10.12))) \ - __attribute__((availability(ios,strict,introduced=10.0))) \ - __attribute__((availability(tvos,strict,introduced=10.0))) \ - __attribute__((availability(watchos,strict,introduced=3.0))) -# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101200) || \ - (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 100000) || \ - (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 100000) || \ - (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 30000) -# define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_shared_mutex -# define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_shared_timed_mutex -# endif - - // Note: bad_optional_access & friends were not introduced in the matching - // macOS and iOS versions, so the version mismatch between macOS and others - // is intended. -# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS \ - __attribute__((availability(macos,strict,introduced=10.13))) \ - __attribute__((availability(ios,strict,introduced=12.0))) \ - __attribute__((availability(tvos,strict,introduced=12.0))) \ - __attribute__((availability(watchos,strict,introduced=5.0))) -# define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS \ - _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS -# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST \ - _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS - -# define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS \ - __attribute__((availability(macos,strict,introduced=10.12))) \ - __attribute__((availability(ios,strict,introduced=10.0))) \ - __attribute__((availability(tvos,strict,introduced=10.0))) \ - __attribute__((availability(watchos,strict,introduced=3.0))) - -# define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE \ - __attribute__((availability(macos,strict,introduced=10.12))) \ - __attribute__((availability(ios,strict,introduced=10.0))) \ - __attribute__((availability(tvos,strict,introduced=10.0))) \ - __attribute__((availability(watchos,strict,introduced=3.0))) - -# define _LIBCPP_AVAILABILITY_FUTURE_ERROR \ - __attribute__((availability(ios,strict,introduced=6.0))) - -# define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE \ - __attribute__((availability(macos,strict,introduced=10.9))) \ - __attribute__((availability(ios,strict,introduced=7.0))) - -# define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY \ - __attribute__((availability(macos,strict,introduced=10.9))) \ - __attribute__((availability(ios,strict,introduced=7.0))) - -# define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR \ - __attribute__((availability(macos,strict,introduced=10.9))) \ - __attribute__((availability(ios,strict,introduced=7.0))) - -# define _LIBCPP_AVAILABILITY_FILESYSTEM \ - __attribute__((availability(macos,strict,introduced=10.15))) \ - __attribute__((availability(ios,strict,introduced=13.0))) \ - __attribute__((availability(tvos,strict,introduced=13.0))) \ - __attribute__((availability(watchos,strict,introduced=6.0))) -# define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH \ - _Pragma("clang attribute push(__attribute__((availability(macos,strict,introduced=10.15))), apply_to=any(function,record))") \ - _Pragma("clang attribute push(__attribute__((availability(ios,strict,introduced=13.0))), apply_to=any(function,record))") \ - _Pragma("clang attribute push(__attribute__((availability(tvos,strict,introduced=13.0))), apply_to=any(function,record))") \ - _Pragma("clang attribute push(__attribute__((availability(watchos,strict,introduced=6.0))), apply_to=any(function,record))") -# define _LIBCPP_AVAILABILITY_FILESYSTEM_POP \ - _Pragma("clang attribute pop") \ - _Pragma("clang attribute pop") \ - _Pragma("clang attribute pop") \ - _Pragma("clang attribute pop") -# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101500) || \ - (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 130000) || \ - (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 130000) || \ - (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 60000) -# define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_filesystem -# endif - -# define _LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT \ - __attribute__((availability(macos,strict,introduced=13.3))) \ - __attribute__((availability(ios,strict,introduced=16.3))) \ - __attribute__((availability(tvos,strict,introduced=16.3))) \ - __attribute__((availability(watchos,strict,introduced=9.3))) - -# define _LIBCPP_AVAILABILITY_SYNC \ - __attribute__((availability(macos,strict,introduced=11.0))) \ - __attribute__((availability(ios,strict,introduced=14.0))) \ - __attribute__((availability(tvos,strict,introduced=14.0))) \ - __attribute__((availability(watchos,strict,introduced=7.0))) -# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 110000) || \ - (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 140000) || \ - (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 140000) || \ - (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 70000) -# define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_atomic_wait -# define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_barrier -# define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_latch -# define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_semaphore -# endif - - // Everything in is either header-only or included in libc++experimental.a since it is still experimental, - // so there is no deployment target requirement. -# define _LIBCPP_AVAILABILITY_FORMAT -// # define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format - -# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 140000) || \ - (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 170000) || \ - (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 170000) || \ - (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 100000) || \ - (defined(__ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__ < 230000) -# define _LIBCPP_HAS_NO_VERBOSE_ABORT_IN_LIBRARY -# endif - -#else - -// ...New vendors can add availability markup here... - -# error "It looks like you're trying to enable vendor availability markup, but you haven't defined the corresponding macros yet!" - -#endif - -// Define availability attributes that depend on _LIBCPP_NO_EXCEPTIONS. -// Those are defined in terms of the availability attributes above, and -// should not be vendor-specific. -#if defined(_LIBCPP_NO_EXCEPTIONS) -# define _LIBCPP_AVAILABILITY_FUTURE -# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST -# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS -# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS -#else -# define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR -# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _LIBCPP_AVAILABILITY_BAD_ANY_CAST -# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS -# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS -#endif - -#endif // _LIBCPP___AVAILABILITY diff --git a/include/c++/v1/__bit/bit_cast.h b/include/c++/v1/__bit/bit_cast.h index 2ca4120c..cd045673 100644 --- a/include/c++/v1/__bit/bit_cast.h +++ b/include/c++/v1/__bit/bit_cast.h @@ -19,17 +19,25 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#ifndef _LIBCPP_CXX03_LANG template - requires(sizeof(_ToType) == sizeof(_FromType) && - is_trivially_copyable_v<_ToType> && +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI constexpr _ToType __bit_cast(const _FromType& __from) noexcept { + return __builtin_bit_cast(_ToType, __from); +} + +#endif // _LIBCPP_CXX03_LANG + +#if _LIBCPP_STD_VER >= 20 + +template + requires(sizeof(_ToType) == sizeof(_FromType) && is_trivially_copyable_v<_ToType> && is_trivially_copyable_v<_FromType>) -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr _ToType bit_cast(const _FromType& __from) noexcept { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _ToType bit_cast(const _FromType& __from) noexcept { return __builtin_bit_cast(_ToType, __from); } -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__bit/bit_ceil.h b/include/c++/v1/__bit/bit_ceil.h index a558d619..cfd792dc 100644 --- a/include/c++/v1/__bit/bit_ceil.h +++ b/include/c++/v1/__bit/bit_ceil.h @@ -21,25 +21,33 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER >= 20 +#if _LIBCPP_STD_VER >= 17 -template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr _Tp bit_ceil(_Tp __t) noexcept { +template +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp __bit_ceil(_Tp __t) noexcept { if (__t < 2) return 1; - const unsigned __n = numeric_limits<_Tp>::digits - std::countl_zero((_Tp)(__t - 1u)); - _LIBCPP_ASSERT(__n != numeric_limits<_Tp>::digits, "Bad input to bit_ceil"); + const unsigned __n = numeric_limits<_Tp>::digits - std::__countl_zero((_Tp)(__t - 1u)); + _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(__n != numeric_limits<_Tp>::digits, "Bad input to bit_ceil"); if constexpr (sizeof(_Tp) >= sizeof(unsigned)) return _Tp{1} << __n; else { - const unsigned __extra = numeric_limits::digits - numeric_limits<_Tp>::digits; - const unsigned __retVal = 1u << (__n + __extra); - return (_Tp)(__retVal >> __extra); + const unsigned __extra = numeric_limits::digits - numeric_limits<_Tp>::digits; + const unsigned __ret_val = 1u << (__n + __extra); + return (_Tp)(__ret_val >> __extra); } } -#endif // _LIBCPP_STD_VER >= 20 +# if _LIBCPP_STD_VER >= 20 + +template <__libcpp_unsigned_integer _Tp> +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp bit_ceil(_Tp __t) noexcept { + return std::__bit_ceil(__t); +} + +# endif // _LIBCPP_STD_VER >= 20 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__bit/bit_floor.h b/include/c++/v1/__bit/bit_floor.h index b2e38092..133e3695 100644 --- a/include/c++/v1/__bit/bit_floor.h +++ b/include/c++/v1/__bit/bit_floor.h @@ -23,7 +23,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 20 template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr _Tp bit_floor(_Tp __t) noexcept { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp bit_floor(_Tp __t) noexcept { return __t == 0 ? 0 : _Tp{1} << std::__bit_log2(__t); } diff --git a/include/c++/v1/__bit/bit_width.h b/include/c++/v1/__bit/bit_width.h index 4381f227..853e4817 100644 --- a/include/c++/v1/__bit/bit_width.h +++ b/include/c++/v1/__bit/bit_width.h @@ -22,7 +22,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr int bit_width(_Tp __t) noexcept { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr int bit_width(_Tp __t) noexcept { return __t == 0 ? 0 : std::__bit_log2(__t) + 1; } diff --git a/include/c++/v1/__bit/blsr.h b/include/c++/v1/__bit/blsr.h index de991e9a..76bd521f 100644 --- a/include/c++/v1/__bit/blsr.h +++ b/include/c++/v1/__bit/blsr.h @@ -17,15 +17,15 @@ _LIBCPP_BEGIN_NAMESPACE_STD -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR unsigned __libcpp_blsr(unsigned __x) _NOEXCEPT { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR unsigned __libcpp_blsr(unsigned __x) _NOEXCEPT { return __x ^ (__x & -__x); } -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR unsigned long __libcpp_blsr(unsigned long __x) _NOEXCEPT { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR unsigned long __libcpp_blsr(unsigned long __x) _NOEXCEPT { return __x ^ (__x & -__x); } -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR unsigned long long __libcpp_blsr(unsigned long long __x) _NOEXCEPT { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR unsigned long long __libcpp_blsr(unsigned long long __x) _NOEXCEPT { return __x ^ (__x & -__x); } diff --git a/include/c++/v1/__bit/byteswap.h b/include/c++/v1/__bit/byteswap.h index 6fa8d48b..6225ecf2 100644 --- a/include/c++/v1/__bit/byteswap.h +++ b/include/c++/v1/__bit/byteswap.h @@ -13,7 +13,6 @@ #include <__concepts/arithmetic.h> #include <__config> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -21,11 +20,10 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 20 +#if _LIBCPP_STD_VER >= 23 template -_LIBCPP_HIDE_FROM_ABI constexpr _Tp byteswap(_Tp __val) noexcept { - +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp byteswap(_Tp __val) noexcept { if constexpr (sizeof(_Tp) == 1) { return __val; } else if constexpr (sizeof(_Tp) == 2) { @@ -34,21 +32,21 @@ _LIBCPP_HIDE_FROM_ABI constexpr _Tp byteswap(_Tp __val) noexcept { return __builtin_bswap32(__val); } else if constexpr (sizeof(_Tp) == 8) { return __builtin_bswap64(__val); -#ifndef _LIBCPP_HAS_NO_INT128 +# ifndef _LIBCPP_HAS_NO_INT128 } else if constexpr (sizeof(_Tp) == 16) { -#if __has_builtin(__builtin_bswap128) +# if __has_builtin(__builtin_bswap128) return __builtin_bswap128(__val); -#else +# else return static_cast<_Tp>(byteswap(static_cast(__val))) << 64 | static_cast<_Tp>(byteswap(static_cast(__val >> 64))); -#endif // __has_builtin(__builtin_bswap128) -#endif // _LIBCPP_HAS_NO_INT128 +# endif // __has_builtin(__builtin_bswap128) +# endif // _LIBCPP_HAS_NO_INT128 } else { static_assert(sizeof(_Tp) == 0, "byteswap is unimplemented for integral types of this size"); } } -#endif // _LIBCPP_STD_VER > 20 +#endif // _LIBCPP_STD_VER >= 23 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__bit/countl.h b/include/c++/v1/__bit/countl.h index 86eaee0c..998a0b44 100644 --- a/include/c++/v1/__bit/countl.h +++ b/include/c++/v1/__bit/countl.h @@ -6,6 +6,9 @@ // //===----------------------------------------------------------------------===// +// TODO: __builtin_clzg is available since Clang 19 and GCC 14. When support for older versions is dropped, we can +// refactor this code to exclusively use __builtin_clzg. + #ifndef _LIBCPP___BIT_COUNTL_H #define _LIBCPP___BIT_COUNTL_H @@ -24,18 +27,23 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -int __libcpp_clz(unsigned __x) _NOEXCEPT { return __builtin_clz(__x); } +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_clz(unsigned __x) _NOEXCEPT { + return __builtin_clz(__x); +} -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -int __libcpp_clz(unsigned long __x) _NOEXCEPT { return __builtin_clzl(__x); } +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_clz(unsigned long __x) _NOEXCEPT { + return __builtin_clzl(__x); +} -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -int __libcpp_clz(unsigned long long __x) _NOEXCEPT { return __builtin_clzll(__x); } +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_clz(unsigned long long __x) _NOEXCEPT { + return __builtin_clzll(__x); +} -# ifndef _LIBCPP_HAS_NO_INT128 -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -int __libcpp_clz(__uint128_t __x) _NOEXCEPT { +#ifndef _LIBCPP_HAS_NO_INT128 +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_clz(__uint128_t __x) _NOEXCEPT { +# if __has_builtin(__builtin_clzg) + return __builtin_clzg(__x); +# else // The function is written in this form due to C++ constexpr limitations. // The algorithm: // - Test whether any bit in the high 64-bits is set @@ -45,53 +53,54 @@ int __libcpp_clz(__uint128_t __x) _NOEXCEPT { // - Any bits set: // - The number of leading zeros of the input is the number of leading // zeros in the high 64-bits. - return ((__x >> 64) == 0) - ? (64 + __builtin_clzll(static_cast(__x))) - : __builtin_clzll(static_cast(__x >> 64)); + return ((__x >> 64) == 0) ? (64 + __builtin_clzll(static_cast(__x))) + : __builtin_clzll(static_cast(__x >> 64)); +# endif } -# endif // _LIBCPP_HAS_NO_INT128 - -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -int __countl_zero(_Tp __t) _NOEXCEPT -{ - static_assert(__libcpp_is_unsigned_integer<_Tp>::value, "__countl_zero requires an unsigned integer type"); - if (__t == 0) - return numeric_limits<_Tp>::digits; - - if (sizeof(_Tp) <= sizeof(unsigned int)) - return std::__libcpp_clz(static_cast(__t)) - - (numeric_limits::digits - numeric_limits<_Tp>::digits); - else if (sizeof(_Tp) <= sizeof(unsigned long)) - return std::__libcpp_clz(static_cast(__t)) - - (numeric_limits::digits - numeric_limits<_Tp>::digits); - else if (sizeof(_Tp) <= sizeof(unsigned long long)) - return std::__libcpp_clz(static_cast(__t)) - - (numeric_limits::digits - numeric_limits<_Tp>::digits); - else - { - int __ret = 0; - int __iter = 0; - const unsigned int __ulldigits = numeric_limits::digits; - while (true) { - __t = std::__rotr(__t, __ulldigits); - if ((__iter = std::__countl_zero(static_cast(__t))) != __ulldigits) - break; - __ret += __iter; - } - return __ret + __iter; +#endif // _LIBCPP_HAS_NO_INT128 + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 int __countl_zero(_Tp __t) _NOEXCEPT { + static_assert(__libcpp_is_unsigned_integer<_Tp>::value, "__countl_zero requires an unsigned integer type"); +#if __has_builtin(__builtin_clzg) + return __builtin_clzg(__t, numeric_limits<_Tp>::digits); +#else // __has_builtin(__builtin_clzg) + if (__t == 0) + return numeric_limits<_Tp>::digits; + + if (sizeof(_Tp) <= sizeof(unsigned int)) + return std::__libcpp_clz(static_cast(__t)) - + (numeric_limits::digits - numeric_limits<_Tp>::digits); + else if (sizeof(_Tp) <= sizeof(unsigned long)) + return std::__libcpp_clz(static_cast(__t)) - + (numeric_limits::digits - numeric_limits<_Tp>::digits); + else if (sizeof(_Tp) <= sizeof(unsigned long long)) + return std::__libcpp_clz(static_cast(__t)) - + (numeric_limits::digits - numeric_limits<_Tp>::digits); + else { + int __ret = 0; + int __iter = 0; + const unsigned int __ulldigits = numeric_limits::digits; + while (true) { + __t = std::__rotl(__t, __ulldigits); + if ((__iter = std::__countl_zero(static_cast(__t))) != __ulldigits) + break; + __ret += __iter; } + return __ret + __iter; + } +#endif // __has_builtin(__builtin_clzg) } #if _LIBCPP_STD_VER >= 20 template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr int countl_zero(_Tp __t) noexcept { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr int countl_zero(_Tp __t) noexcept { return std::__countl_zero(__t); } template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr int countl_one(_Tp __t) noexcept { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr int countl_one(_Tp __t) noexcept { return __t != numeric_limits<_Tp>::max() ? std::countl_zero(static_cast<_Tp>(~__t)) : numeric_limits<_Tp>::digits; } diff --git a/include/c++/v1/__bit/countr.h b/include/c++/v1/__bit/countr.h index d3ca5b6c..9e92021f 100644 --- a/include/c++/v1/__bit/countr.h +++ b/include/c++/v1/__bit/countr.h @@ -6,6 +6,9 @@ // //===----------------------------------------------------------------------===// +// TODO: __builtin_ctzg is available since Clang 19 and GCC 14. When support for older versions is dropped, we can +// refactor this code to exclusively use __builtin_ctzg. + #ifndef _LIBCPP___BIT_COUNTR_H #define _LIBCPP___BIT_COUNTR_H @@ -23,22 +26,25 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -int __libcpp_ctz(unsigned __x) _NOEXCEPT { return __builtin_ctz(__x); } - -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -int __libcpp_ctz(unsigned long __x) _NOEXCEPT { return __builtin_ctzl(__x); } +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_ctz(unsigned __x) _NOEXCEPT { + return __builtin_ctz(__x); +} -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -int __libcpp_ctz(unsigned long long __x) _NOEXCEPT { return __builtin_ctzll(__x); } +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_ctz(unsigned long __x) _NOEXCEPT { + return __builtin_ctzl(__x); +} -#if _LIBCPP_STD_VER >= 20 +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_ctz(unsigned long long __x) _NOEXCEPT { + return __builtin_ctzll(__x); +} -template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr int countr_zero(_Tp __t) noexcept { +template +_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 int __countr_zero(_Tp __t) _NOEXCEPT { +#if __has_builtin(__builtin_ctzg) + return __builtin_ctzg(__t, numeric_limits<_Tp>::digits); +#else // __has_builtin(__builtin_ctzg) if (__t == 0) return numeric_limits<_Tp>::digits; - if (sizeof(_Tp) <= sizeof(unsigned int)) return std::__libcpp_ctz(static_cast(__t)); else if (sizeof(_Tp) <= sizeof(unsigned long)) @@ -46,7 +52,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr int countr_zero(_Tp __t) noexcept { else if (sizeof(_Tp) <= sizeof(unsigned long long)) return std::__libcpp_ctz(static_cast(__t)); else { - int __ret = 0; + int __ret = 0; const unsigned int __ulldigits = numeric_limits::digits; while (static_cast(__t) == 0uLL) { __ret += __ulldigits; @@ -54,10 +60,18 @@ _LIBCPP_HIDE_FROM_ABI constexpr int countr_zero(_Tp __t) noexcept { } return __ret + std::__libcpp_ctz(static_cast(__t)); } +#endif // __has_builtin(__builtin_ctzg) +} + +#if _LIBCPP_STD_VER >= 20 + +template <__libcpp_unsigned_integer _Tp> +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr int countr_zero(_Tp __t) noexcept { + return std::__countr_zero(__t); } template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr int countr_one(_Tp __t) noexcept { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr int countr_one(_Tp __t) noexcept { return __t != numeric_limits<_Tp>::max() ? std::countr_zero(static_cast<_Tp>(~__t)) : numeric_limits<_Tp>::digits; } diff --git a/include/c++/v1/__bit/endian.h b/include/c++/v1/__bit/endian.h index 52635f2d..2d31e5dd 100644 --- a/include/c++/v1/__bit/endian.h +++ b/include/c++/v1/__bit/endian.h @@ -21,7 +21,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD enum class endian { little = 0xDEAD, - big = 0xFACE, + big = 0xFACE, # if defined(_LIBCPP_LITTLE_ENDIAN) native = little # elif defined(_LIBCPP_BIG_ENDIAN) diff --git a/include/c++/v1/__bit/has_single_bit.h b/include/c++/v1/__bit/has_single_bit.h index b89f5995..52f5853a 100644 --- a/include/c++/v1/__bit/has_single_bit.h +++ b/include/c++/v1/__bit/has_single_bit.h @@ -24,7 +24,7 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr bool has_single_bit(_Tp __t) noexcept { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool has_single_bit(_Tp __t) noexcept { return __t != 0 && (((__t & (__t - 1)) == 0)); } diff --git a/include/c++/v1/__bit/popcount.h b/include/c++/v1/__bit/popcount.h index 33b94cff..5cf0a01d 100644 --- a/include/c++/v1/__bit/popcount.h +++ b/include/c++/v1/__bit/popcount.h @@ -6,6 +6,9 @@ // //===----------------------------------------------------------------------===// +// TODO: __builtin_popcountg is available since Clang 19 and GCC 14. When support for older versions is dropped, we can +// refactor this code to exclusively use __builtin_popcountg. + #ifndef _LIBCPP___BIT_POPCOUNT_H #define _LIBCPP___BIT_POPCOUNT_H @@ -23,19 +26,25 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -int __libcpp_popcount(unsigned __x) _NOEXCEPT { return __builtin_popcount(__x); } +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_popcount(unsigned __x) _NOEXCEPT { + return __builtin_popcount(__x); +} -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -int __libcpp_popcount(unsigned long __x) _NOEXCEPT { return __builtin_popcountl(__x); } +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_popcount(unsigned long __x) _NOEXCEPT { + return __builtin_popcountl(__x); +} -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -int __libcpp_popcount(unsigned long long __x) _NOEXCEPT { return __builtin_popcountll(__x); } +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_popcount(unsigned long long __x) _NOEXCEPT { + return __builtin_popcountll(__x); +} #if _LIBCPP_STD_VER >= 20 template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr int popcount(_Tp __t) noexcept { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr int popcount(_Tp __t) noexcept { +# if __has_builtin(__builtin_popcountg) + return __builtin_popcountg(__t); +# else // __has_builtin(__builtin_popcountg) if (sizeof(_Tp) <= sizeof(unsigned int)) return std::__libcpp_popcount(static_cast(__t)); else if (sizeof(_Tp) <= sizeof(unsigned long)) @@ -50,6 +59,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr int popcount(_Tp __t) noexcept { } return __ret; } +# endif // __has_builtin(__builtin_popcountg) } #endif // _LIBCPP_STD_VER >= 20 diff --git a/include/c++/v1/__bit/rotate.h b/include/c++/v1/__bit/rotate.h index 5aa7518b..90e430e9 100644 --- a/include/c++/v1/__bit/rotate.h +++ b/include/c++/v1/__bit/rotate.h @@ -20,29 +20,48 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Tp __rotr(_Tp __t, unsigned int __cnt) _NOEXCEPT -{ - static_assert(__libcpp_is_unsigned_integer<_Tp>::value, "__rotr requires an unsigned integer type"); - const unsigned int __dig = numeric_limits<_Tp>::digits; - if ((__cnt % __dig) == 0) - return __t; - return (__t >> (__cnt % __dig)) | (__t << (__dig - (__cnt % __dig))); +// Writing two full functions for rotl and rotr makes it easier for the compiler +// to optimize the code. On x86 this function becomes the ROL instruction and +// the rotr function becomes the ROR instruction. +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp __rotl(_Tp __x, int __s) _NOEXCEPT { + static_assert(__libcpp_is_unsigned_integer<_Tp>::value, "__rotl requires an unsigned integer type"); + const int __N = numeric_limits<_Tp>::digits; + int __r = __s % __N; + + if (__r == 0) + return __x; + + if (__r > 0) + return (__x << __r) | (__x >> (__N - __r)); + + return (__x >> -__r) | (__x << (__N + __r)); +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp __rotr(_Tp __x, int __s) _NOEXCEPT { + static_assert(__libcpp_is_unsigned_integer<_Tp>::value, "__rotr requires an unsigned integer type"); + const int __N = numeric_limits<_Tp>::digits; + int __r = __s % __N; + + if (__r == 0) + return __x; + + if (__r > 0) + return (__x >> __r) | (__x << (__N - __r)); + + return (__x << -__r) | (__x >> (__N + __r)); } #if _LIBCPP_STD_VER >= 20 template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr _Tp rotl(_Tp __t, unsigned int __cnt) noexcept { - const unsigned int __dig = numeric_limits<_Tp>::digits; - if ((__cnt % __dig) == 0) - return __t; - return (__t << (__cnt % __dig)) | (__t >> (__dig - (__cnt % __dig))); +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp rotl(_Tp __t, int __cnt) noexcept { + return std::__rotl(__t, __cnt); } template <__libcpp_unsigned_integer _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr _Tp rotr(_Tp __t, unsigned int __cnt) noexcept { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp rotr(_Tp __t, int __cnt) noexcept { return std::__rotr(__t, __cnt); } diff --git a/include/c++/v1/__bit_reference b/include/c++/v1/__bit_reference index 26657491..22637d43 100644 --- a/include/c++/v1/__bit_reference +++ b/include/c++/v1/__bit_reference @@ -14,13 +14,17 @@ #include <__algorithm/fill_n.h> #include <__algorithm/min.h> #include <__bit/countr.h> +#include <__bit/invert_if.h> #include <__bit/popcount.h> +#include <__compare/ordering.h> #include <__config> +#include <__fwd/bit_reference.h> #include <__iterator/iterator_traits.h> #include <__memory/construct_at.h> #include <__memory/pointer_traits.h> +#include <__type_traits/conditional.h> +#include <__utility/swap.h> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -29,1328 +33,988 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> - _LIBCPP_BEGIN_NAMESPACE_STD -template class __bit_iterator; -template class __bit_const_reference; +template +class __bit_const_reference; template -struct __has_storage_type -{ - static const bool value = false; +struct __has_storage_type { + static const bool value = false; }; template ::value> -class __bit_reference -{ - typedef typename _Cp::__storage_type __storage_type; - typedef typename _Cp::__storage_pointer __storage_pointer; +class __bit_reference { + using __storage_type = typename _Cp::__storage_type; + using __storage_pointer = typename _Cp::__storage_pointer; - __storage_pointer __seg_; - __storage_type __mask_; + __storage_pointer __seg_; + __storage_type __mask_; - friend typename _Cp::__self; - - friend class __bit_const_reference<_Cp>; - friend class __bit_iterator<_Cp, false>; -public: - using __container = typename _Cp::__self; + friend typename _Cp::__self; - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - __bit_reference(const __bit_reference&) = default; - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 operator bool() const _NOEXCEPT - {return static_cast(*__seg_ & __mask_);} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool operator ~() const _NOEXCEPT - {return !static_cast(*this);} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - __bit_reference& operator=(bool __x) _NOEXCEPT - { - if (__x) - *__seg_ |= __mask_; - else - *__seg_ &= ~__mask_; - return *this; - } + friend class __bit_const_reference<_Cp>; + friend class __bit_iterator<_Cp, false>; -#if _LIBCPP_STD_VER > 20 - _LIBCPP_HIDE_FROM_ABI constexpr const __bit_reference& operator=(bool __x) const noexcept { - if (__x) - *__seg_ |= __mask_; - else - *__seg_ &= ~__mask_; - return *this; - } +public: + using __container = typename _Cp::__self; + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_reference(const __bit_reference&) = default; + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 operator bool() const _NOEXCEPT { + return static_cast(*__seg_ & __mask_); + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool operator~() const _NOEXCEPT { + return !static_cast(*this); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_reference& operator=(bool __x) _NOEXCEPT { + if (__x) + *__seg_ |= __mask_; + else + *__seg_ &= ~__mask_; + return *this; + } + +#if _LIBCPP_STD_VER >= 23 + _LIBCPP_HIDE_FROM_ABI constexpr const __bit_reference& operator=(bool __x) const noexcept { + if (__x) + *__seg_ |= __mask_; + else + *__seg_ &= ~__mask_; + return *this; + } #endif - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - __bit_reference& operator=(const __bit_reference& __x) _NOEXCEPT - {return operator=(static_cast(__x));} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_reference& operator=(const __bit_reference& __x) _NOEXCEPT { + return operator=(static_cast(__x)); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void flip() _NOEXCEPT { *__seg_ ^= __mask_; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, false> operator&() const _NOEXCEPT { + return __bit_iterator<_Cp, false>(__seg_, static_cast(std::__libcpp_ctz(__mask_))); + } - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 void flip() _NOEXCEPT {*__seg_ ^= __mask_;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, false> operator&() const _NOEXCEPT - {return __bit_iterator<_Cp, false>(__seg_, static_cast(std::__libcpp_ctz(__mask_)));} private: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - explicit __bit_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT - : __seg_(__s), __mask_(__m) {} + _LIBCPP_HIDE_FROM_ABI + _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit __bit_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT + : __seg_(__s), + __mask_(__m) {} }; template -class __bit_reference<_Cp, false> -{ -}; +class __bit_reference<_Cp, false> {}; template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -swap(__bit_reference<_Cp> __x, __bit_reference<_Cp> __y) _NOEXCEPT -{ - bool __t = __x; - __x = __y; - __y = __t; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +swap(__bit_reference<_Cp> __x, __bit_reference<_Cp> __y) _NOEXCEPT { + bool __t = __x; + __x = __y; + __y = __t; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -swap(__bit_reference<_Cp> __x, __bit_reference<_Dp> __y) _NOEXCEPT -{ - bool __t = __x; - __x = __y; - __y = __t; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +swap(__bit_reference<_Cp> __x, __bit_reference<_Dp> __y) _NOEXCEPT { + bool __t = __x; + __x = __y; + __y = __t; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -swap(__bit_reference<_Cp> __x, bool& __y) _NOEXCEPT -{ - bool __t = __x; - __x = __y; - __y = __t; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(__bit_reference<_Cp> __x, bool& __y) _NOEXCEPT { + bool __t = __x; + __x = __y; + __y = __t; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -swap(bool& __x, __bit_reference<_Cp> __y) _NOEXCEPT -{ - bool __t = __x; - __x = __y; - __y = __t; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(bool& __x, __bit_reference<_Cp> __y) _NOEXCEPT { + bool __t = __x; + __x = __y; + __y = __t; } template -class __bit_const_reference -{ - typedef typename _Cp::__storage_type __storage_type; - typedef typename _Cp::__const_storage_pointer __storage_pointer; +class __bit_const_reference { + using __storage_type = typename _Cp::__storage_type; + using __storage_pointer = typename _Cp::__const_storage_pointer; + + __storage_pointer __seg_; + __storage_type __mask_; - __storage_pointer __seg_; - __storage_type __mask_; + friend typename _Cp::__self; + friend class __bit_iterator<_Cp, true>; - friend typename _Cp::__self; - friend class __bit_iterator<_Cp, true>; public: - _LIBCPP_INLINE_VISIBILITY - __bit_const_reference(const __bit_const_reference&) = default; + using __container = typename _Cp::__self; - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - __bit_const_reference(const __bit_reference<_Cp>& __x) _NOEXCEPT - : __seg_(__x.__seg_), __mask_(__x.__mask_) {} + _LIBCPP_HIDE_FROM_ABI __bit_const_reference(const __bit_const_reference&) = default; + __bit_const_reference& operator=(const __bit_const_reference&) = delete; - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR operator bool() const _NOEXCEPT - {return static_cast(*__seg_ & __mask_);} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_const_reference(const __bit_reference<_Cp>& __x) _NOEXCEPT + : __seg_(__x.__seg_), + __mask_(__x.__mask_) {} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, true> operator&() const _NOEXCEPT - {return __bit_iterator<_Cp, true>(__seg_, static_cast(std::__libcpp_ctz(__mask_)));} -private: - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR - explicit __bit_const_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT - : __seg_(__s), __mask_(__m) {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR operator bool() const _NOEXCEPT { + return static_cast(*__seg_ & __mask_); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, true> operator&() const _NOEXCEPT { + return __bit_iterator<_Cp, true>(__seg_, static_cast(std::__libcpp_ctz(__mask_))); + } - __bit_const_reference& operator=(const __bit_const_reference&) = delete; +private: + _LIBCPP_HIDE_FROM_ABI + _LIBCPP_CONSTEXPR explicit __bit_const_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT + : __seg_(__s), + __mask_(__m) {} }; -// find +// copy template -_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, _IsConst> -__find_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, _IsConst> _It; - typedef typename _It::__storage_type __storage_type; - const int __bits_per_word = _It::__bits_per_word; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __storage_type __b = *__first.__seg_ & __m; - if (__b) - return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(__b))); - if (__n == __dn) - return __first + __n; - __n -= __dn; - ++__first.__seg_; +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> __copy_aligned( + __bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { + using _In = __bit_iterator<_Cp, _IsConst>; + using difference_type = typename _In::difference_type; + using __storage_type = typename _In::__storage_type; + + const int __bits_per_word = _In::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) { + // do first word + if (__first.__ctz_ != 0) { + unsigned __clz = __bits_per_word - __first.__ctz_; + difference_type __dn = std::min(static_cast(__clz), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); + __storage_type __b = *__first.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b; + __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); + ++__first.__seg_; + // __first.__ctz_ = 0; } - // do middle whole words - for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) - if (*__first.__seg_) - return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(*__first.__seg_))); - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = *__first.__seg_ & __m; - if (__b) - return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(__b))); + // __first.__ctz_ == 0; + // do middle words + __storage_type __nw = __n / __bits_per_word; + std::copy_n(std::__to_address(__first.__seg_), __nw, std::__to_address(__result.__seg_)); + __n -= __nw * __bits_per_word; + __result.__seg_ += __nw; + // do last word + if (__n > 0) { + __first.__seg_ += __nw; + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b = *__first.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b; + __result.__ctz_ = static_cast(__n); } - return _It(__first.__seg_, static_cast(__n)); + } + return __result; } template -_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, _IsConst> -__find_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, _IsConst> _It; - typedef typename _It::__storage_type __storage_type; - const int __bits_per_word = _It::__bits_per_word; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __storage_type __b = ~*__first.__seg_ & __m; - if (__b) - return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(__b))); - if (__n == __dn) - return __first + __n; - __n -= __dn; - ++__first.__seg_; - } - // do middle whole words - for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) - { - __storage_type __b = ~*__first.__seg_; - if (__b) - return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(__b))); +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> __copy_unaligned( + __bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { + using _In = __bit_iterator<_Cp, _IsConst>; + using difference_type = typename _In::difference_type; + using __storage_type = typename _In::__storage_type; + + const int __bits_per_word = _In::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) { + // do first word + if (__first.__ctz_ != 0) { + unsigned __clz_f = __bits_per_word - __first.__ctz_; + difference_type __dn = std::min(static_cast(__clz_f), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __storage_type __b = *__first.__seg_ & __m; + unsigned __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __ddn = std::min<__storage_type>(__dn, __clz_r); + __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); + *__result.__seg_ &= ~__m; + if (__result.__ctz_ > __first.__ctz_) + *__result.__seg_ |= __b << (__result.__ctz_ - __first.__ctz_); + else + *__result.__seg_ |= __b >> (__first.__ctz_ - __result.__ctz_); + __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__ddn + __result.__ctz_) % __bits_per_word); + __dn -= __ddn; + if (__dn > 0) { + __m = ~__storage_type(0) >> (__bits_per_word - __dn); + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b >> (__first.__ctz_ + __ddn); + __result.__ctz_ = static_cast(__dn); + } + ++__first.__seg_; + // __first.__ctz_ = 0; } - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = ~*__first.__seg_ & __m; - if (__b) - return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(__b))); - } - return _It(__first.__seg_, static_cast(__n)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -__bit_iterator<_Cp, _IsConst> -find(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value) -{ - if (static_cast(__value)) - return _VSTD::__find_bool_true(__first, static_cast(__last - __first)); - return _VSTD::__find_bool_false(__first, static_cast(__last - __first)); -} - -// count - -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 typename __bit_iterator<_Cp, _IsConst>::difference_type -__count_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, _IsConst> _It; - typedef typename _It::__storage_type __storage_type; - typedef typename _It::difference_type difference_type; - const int __bits_per_word = _It::__bits_per_word; - difference_type __r = 0; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __r = _VSTD::__libcpp_popcount(*__first.__seg_ & __m); - __n -= __dn; - ++__first.__seg_; + // __first.__ctz_ == 0; + // do middle words + unsigned __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __m = ~__storage_type(0) << __result.__ctz_; + for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_) { + __storage_type __b = *__first.__seg_; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b << __result.__ctz_; + ++__result.__seg_; + *__result.__seg_ &= __m; + *__result.__seg_ |= __b >> __clz_r; } - // do middle whole words - for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) - __r += _VSTD::__libcpp_popcount(*__first.__seg_); - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __r += _VSTD::__libcpp_popcount(*__first.__seg_ & __m); + // do last word + if (__n > 0) { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b = *__first.__seg_ & __m; + __storage_type __dn = std::min(__n, static_cast(__clz_r)); + __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b << __result.__ctz_; + __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); + __n -= __dn; + if (__n > 0) { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b >> __dn; + __result.__ctz_ = static_cast(__n); + } } - return __r; + } + return __result; } template -_LIBCPP_HIDE_FROM_ABI typename __bit_iterator<_Cp, _IsConst>::difference_type -__count_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, _IsConst> _It; - typedef typename _It::__storage_type __storage_type; - typedef typename _It::difference_type difference_type; - const int __bits_per_word = _It::__bits_per_word; - difference_type __r = 0; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __r = _VSTD::__libcpp_popcount(~*__first.__seg_ & __m); - __n -= __dn; - ++__first.__seg_; - } - // do middle whole words - for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) - __r += _VSTD::__libcpp_popcount(~*__first.__seg_); - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __r += _VSTD::__libcpp_popcount(~*__first.__seg_ & __m); - } - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __bit_iterator<_Cp, _IsConst>::difference_type -count(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value) -{ - if (static_cast(__value)) - return _VSTD::__count_bool_true(__first, static_cast(__last - __first)); - return _VSTD::__count_bool_false(__first, static_cast(__last - __first)); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, false> +copy(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { + if (__first.__ctz_ == __result.__ctz_) + return std::__copy_aligned(__first, __last, __result); + return std::__copy_unaligned(__first, __last, __result); } -// fill_n - -template -_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void -__fill_n_false(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, false> _It; - typedef typename _It::__storage_type __storage_type; - const int __bits_per_word = _It::__bits_per_word; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - *__first.__seg_ &= ~__m; - __n -= __dn; - ++__first.__seg_; - } - // do middle whole words - __storage_type __nw = __n / __bits_per_word; - std::fill_n(std::__to_address(__first.__seg_), __nw, 0); - __n -= __nw * __bits_per_word; - // do last partial word - if (__n > 0) - { - __first.__seg_ += __nw; - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - *__first.__seg_ &= ~__m; - } -} +// copy_backward -template -_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void -__fill_n_true(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, false> _It; - typedef typename _It::__storage_type __storage_type; - const int __bits_per_word = _It::__bits_per_word; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - *__first.__seg_ |= __m; - __n -= __dn; - ++__first.__seg_; +template +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> __copy_backward_aligned( + __bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { + using _In = __bit_iterator<_Cp, _IsConst>; + using difference_type = typename _In::difference_type; + using __storage_type = typename _In::__storage_type; + + const int __bits_per_word = _In::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) { + // do first word + if (__last.__ctz_ != 0) { + difference_type __dn = std::min(static_cast(__last.__ctz_), __n); + __n -= __dn; + unsigned __clz = __bits_per_word - __last.__ctz_; + __storage_type __m = (~__storage_type(0) << (__last.__ctz_ - __dn)) & (~__storage_type(0) >> __clz); + __storage_type __b = *__last.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b; + __result.__ctz_ = static_cast(((-__dn & (__bits_per_word - 1)) + __result.__ctz_) % __bits_per_word); + // __last.__ctz_ = 0 } - // do middle whole words + // __last.__ctz_ == 0 || __n == 0 + // __result.__ctz_ == 0 || __n == 0 + // do middle words __storage_type __nw = __n / __bits_per_word; - // __storage_type is always an unsigned type, so -1 sets all bits - std::fill_n(std::__to_address(__first.__seg_), __nw, static_cast<__storage_type>(-1)); + __result.__seg_ -= __nw; + __last.__seg_ -= __nw; + std::copy_n(std::__to_address(__last.__seg_), __nw, std::__to_address(__result.__seg_)); __n -= __nw * __bits_per_word; - // do last partial word - if (__n > 0) - { - __first.__seg_ += __nw; - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - *__first.__seg_ |= __m; - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -fill_n(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n, bool __value) -{ - if (__n > 0) - { - if (__value) - _VSTD::__fill_n_true(__first, __n); - else - _VSTD::__fill_n_false(__first, __n); - } -} - -// fill - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -fill(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __last, bool __value) -{ - _VSTD::fill_n(__first, static_cast(__last - __first), __value); -} - -// copy - -template -_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> -__copy_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, - __bit_iterator<_Cp, false> __result) -{ - typedef __bit_iterator<_Cp, _IsConst> _In; - typedef typename _In::difference_type difference_type; - typedef typename _In::__storage_type __storage_type; - const int __bits_per_word = _In::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__first.__ctz_ != 0) - { - unsigned __clz = __bits_per_word - __first.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); - __storage_type __b = *__first.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b; - __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); - ++__first.__seg_; - // __first.__ctz_ = 0; - } - // __first.__ctz_ == 0; - // do middle words - __storage_type __nw = __n / __bits_per_word; - std::copy_n(std::__to_address(__first.__seg_), __nw, std::__to_address(__result.__seg_)); - __n -= __nw * __bits_per_word; - __result.__seg_ += __nw; - // do last word - if (__n > 0) - { - __first.__seg_ += __nw; - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = *__first.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b; - __result.__ctz_ = static_cast(__n); - } + // do last word + if (__n > 0) { + __storage_type __m = ~__storage_type(0) << (__bits_per_word - __n); + __storage_type __b = *--__last.__seg_ & __m; + *--__result.__seg_ &= ~__m; + *__result.__seg_ |= __b; + __result.__ctz_ = static_cast(-__n & (__bits_per_word - 1)); } - return __result; + } + return __result; } template -_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> -__copy_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, - __bit_iterator<_Cp, false> __result) -{ - typedef __bit_iterator<_Cp, _IsConst> _In; - typedef typename _In::difference_type difference_type; - typedef typename _In::__storage_type __storage_type; - const int __bits_per_word = _In::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__first.__ctz_ != 0) - { - unsigned __clz_f = __bits_per_word - __first.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz_f), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __storage_type __b = *__first.__seg_ & __m; - unsigned __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r); - __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); - *__result.__seg_ &= ~__m; - if (__result.__ctz_ > __first.__ctz_) - *__result.__seg_ |= __b << (__result.__ctz_ - __first.__ctz_); - else - *__result.__seg_ |= __b >> (__first.__ctz_ - __result.__ctz_); - __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__ddn + __result.__ctz_) % __bits_per_word); - __dn -= __ddn; - if (__dn > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __dn); - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b >> (__first.__ctz_ + __ddn); - __result.__ctz_ = static_cast(__dn); - } - ++__first.__seg_; - // __first.__ctz_ = 0; - } - // __first.__ctz_ == 0; - // do middle words - unsigned __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __m = ~__storage_type(0) << __result.__ctz_; - for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_) - { - __storage_type __b = *__first.__seg_; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b << __result.__ctz_; - ++__result.__seg_; - *__result.__seg_ &= __m; - *__result.__seg_ |= __b >> __clz_r; - } - // do last word - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = *__first.__seg_ & __m; - __storage_type __dn = _VSTD::min(__n, static_cast(__clz_r)); - __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b << __result.__ctz_; - __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); - __n -= __dn; - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b >> __dn; - __result.__ctz_ = static_cast(__n); - } - } +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> __copy_backward_unaligned( + __bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { + using _In = __bit_iterator<_Cp, _IsConst>; + using difference_type = typename _In::difference_type; + using __storage_type = typename _In::__storage_type; + + const int __bits_per_word = _In::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) { + // do first word + if (__last.__ctz_ != 0) { + difference_type __dn = std::min(static_cast(__last.__ctz_), __n); + __n -= __dn; + unsigned __clz_l = __bits_per_word - __last.__ctz_; + __storage_type __m = (~__storage_type(0) << (__last.__ctz_ - __dn)) & (~__storage_type(0) >> __clz_l); + __storage_type __b = *__last.__seg_ & __m; + unsigned __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __ddn = std::min(__dn, static_cast(__result.__ctz_)); + if (__ddn > 0) { + __m = (~__storage_type(0) << (__result.__ctz_ - __ddn)) & (~__storage_type(0) >> __clz_r); + *__result.__seg_ &= ~__m; + if (__result.__ctz_ > __last.__ctz_) + *__result.__seg_ |= __b << (__result.__ctz_ - __last.__ctz_); + else + *__result.__seg_ |= __b >> (__last.__ctz_ - __result.__ctz_); + __result.__ctz_ = static_cast(((-__ddn & (__bits_per_word - 1)) + __result.__ctz_) % __bits_per_word); + __dn -= __ddn; + } + if (__dn > 0) { + // __result.__ctz_ == 0 + --__result.__seg_; + __result.__ctz_ = static_cast(-__dn & (__bits_per_word - 1)); + __m = ~__storage_type(0) << __result.__ctz_; + *__result.__seg_ &= ~__m; + __last.__ctz_ -= __dn + __ddn; + *__result.__seg_ |= __b << (__result.__ctz_ - __last.__ctz_); + } + // __last.__ctz_ = 0 } - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -__bit_iterator<_Cp, false> -copy(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) -{ - if (__first.__ctz_ == __result.__ctz_) - return _VSTD::__copy_aligned(__first, __last, __result); - return _VSTD::__copy_unaligned(__first, __last, __result); -} - -// copy_backward - -template -_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> -__copy_backward_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, - __bit_iterator<_Cp, false> __result) -{ - typedef __bit_iterator<_Cp, _IsConst> _In; - typedef typename _In::difference_type difference_type; - typedef typename _In::__storage_type __storage_type; - const int __bits_per_word = _In::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__last.__ctz_ != 0) - { - difference_type __dn = _VSTD::min(static_cast(__last.__ctz_), __n); - __n -= __dn; - unsigned __clz = __bits_per_word - __last.__ctz_; - __storage_type __m = (~__storage_type(0) << (__last.__ctz_ - __dn)) & (~__storage_type(0) >> __clz); - __storage_type __b = *__last.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b; - __result.__ctz_ = static_cast(((-__dn & (__bits_per_word - 1)) + - __result.__ctz_) % __bits_per_word); - // __last.__ctz_ = 0 - } - // __last.__ctz_ == 0 || __n == 0 - // __result.__ctz_ == 0 || __n == 0 - // do middle words - __storage_type __nw = __n / __bits_per_word; - __result.__seg_ -= __nw; - __last.__seg_ -= __nw; - std::copy_n(std::__to_address(__last.__seg_), __nw, std::__to_address(__result.__seg_)); - __n -= __nw * __bits_per_word; - // do last word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) << (__bits_per_word - __n); - __storage_type __b = *--__last.__seg_ & __m; - *--__result.__seg_ &= ~__m; - *__result.__seg_ |= __b; - __result.__ctz_ = static_cast(-__n & (__bits_per_word - 1)); - } + // __last.__ctz_ == 0 || __n == 0 + // __result.__ctz_ != 0 || __n == 0 + // do middle words + unsigned __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __m = ~__storage_type(0) >> __clz_r; + for (; __n >= __bits_per_word; __n -= __bits_per_word) { + __storage_type __b = *--__last.__seg_; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b >> __clz_r; + *--__result.__seg_ &= __m; + *__result.__seg_ |= __b << __result.__ctz_; } - return __result; -} - -template -_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> -__copy_backward_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, - __bit_iterator<_Cp, false> __result) -{ - typedef __bit_iterator<_Cp, _IsConst> _In; - typedef typename _In::difference_type difference_type; - typedef typename _In::__storage_type __storage_type; - const int __bits_per_word = _In::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__last.__ctz_ != 0) - { - difference_type __dn = _VSTD::min(static_cast(__last.__ctz_), __n); - __n -= __dn; - unsigned __clz_l = __bits_per_word - __last.__ctz_; - __storage_type __m = (~__storage_type(0) << (__last.__ctz_ - __dn)) & (~__storage_type(0) >> __clz_l); - __storage_type __b = *__last.__seg_ & __m; - unsigned __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __ddn = _VSTD::min(__dn, static_cast(__result.__ctz_)); - if (__ddn > 0) - { - __m = (~__storage_type(0) << (__result.__ctz_ - __ddn)) & (~__storage_type(0) >> __clz_r); - *__result.__seg_ &= ~__m; - if (__result.__ctz_ > __last.__ctz_) - *__result.__seg_ |= __b << (__result.__ctz_ - __last.__ctz_); - else - *__result.__seg_ |= __b >> (__last.__ctz_ - __result.__ctz_); - __result.__ctz_ = static_cast(((-__ddn & (__bits_per_word - 1)) + - __result.__ctz_) % __bits_per_word); - __dn -= __ddn; - } - if (__dn > 0) - { - // __result.__ctz_ == 0 - --__result.__seg_; - __result.__ctz_ = static_cast(-__dn & (__bits_per_word - 1)); - __m = ~__storage_type(0) << __result.__ctz_; - *__result.__seg_ &= ~__m; - __last.__ctz_ -= __dn + __ddn; - *__result.__seg_ |= __b << (__result.__ctz_ - __last.__ctz_); - } - // __last.__ctz_ = 0 - } - // __last.__ctz_ == 0 || __n == 0 - // __result.__ctz_ != 0 || __n == 0 - // do middle words - unsigned __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __m = ~__storage_type(0) >> __clz_r; - for (; __n >= __bits_per_word; __n -= __bits_per_word) - { - __storage_type __b = *--__last.__seg_; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b >> __clz_r; - *--__result.__seg_ &= __m; - *__result.__seg_ |= __b << __result.__ctz_; - } - // do last word - if (__n > 0) - { - __m = ~__storage_type(0) << (__bits_per_word - __n); - __storage_type __b = *--__last.__seg_ & __m; - __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __dn = _VSTD::min(__n, static_cast(__result.__ctz_)); - __m = (~__storage_type(0) << (__result.__ctz_ - __dn)) & (~__storage_type(0) >> __clz_r); - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b >> (__bits_per_word - __result.__ctz_); - __result.__ctz_ = static_cast(((-__dn & (__bits_per_word - 1)) + - __result.__ctz_) % __bits_per_word); - __n -= __dn; - if (__n > 0) - { - // __result.__ctz_ == 0 - --__result.__seg_; - __result.__ctz_ = static_cast(-__n & (__bits_per_word - 1)); - __m = ~__storage_type(0) << __result.__ctz_; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b << (__result.__ctz_ - (__bits_per_word - __n - __dn)); - } - } + // do last word + if (__n > 0) { + __m = ~__storage_type(0) << (__bits_per_word - __n); + __storage_type __b = *--__last.__seg_ & __m; + __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __dn = std::min(__n, static_cast(__result.__ctz_)); + __m = (~__storage_type(0) << (__result.__ctz_ - __dn)) & (~__storage_type(0) >> __clz_r); + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b >> (__bits_per_word - __result.__ctz_); + __result.__ctz_ = static_cast(((-__dn & (__bits_per_word - 1)) + __result.__ctz_) % __bits_per_word); + __n -= __dn; + if (__n > 0) { + // __result.__ctz_ == 0 + --__result.__seg_; + __result.__ctz_ = static_cast(-__n & (__bits_per_word - 1)); + __m = ~__storage_type(0) << __result.__ctz_; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b << (__result.__ctz_ - (__bits_per_word - __n - __dn)); + } } - return __result; + } + return __result; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -__bit_iterator<_Cp, false> -copy_backward(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) -{ - if (__last.__ctz_ == __result.__ctz_) - return _VSTD::__copy_backward_aligned(__first, __last, __result); - return _VSTD::__copy_backward_unaligned(__first, __last, __result); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, false> copy_backward( + __bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { + if (__last.__ctz_ == __result.__ctz_) + return std::__copy_backward_aligned(__first, __last, __result); + return std::__copy_backward_unaligned(__first, __last, __result); } // move template -inline _LIBCPP_INLINE_VISIBILITY -__bit_iterator<_Cp, false> -move(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) -{ - return _VSTD::copy(__first, __last, __result); +inline _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> +move(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { + return std::copy(__first, __last, __result); } // move_backward template -inline _LIBCPP_INLINE_VISIBILITY -__bit_iterator<_Cp, false> -move_backward(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) -{ - return _VSTD::copy_backward(__first, __last, __result); +inline _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> move_backward( + __bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { + return std::copy_backward(__first, __last, __result); } // swap_ranges -template -_LIBCPP_HIDE_FROM_ABI __bit_iterator<__C2, false> -__swap_ranges_aligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, false> __last, - __bit_iterator<__C2, false> __result) -{ - typedef __bit_iterator<__C1, false> _I1; - typedef typename _I1::difference_type difference_type; - typedef typename _I1::__storage_type __storage_type; - const int __bits_per_word = _I1::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__first.__ctz_ != 0) - { - unsigned __clz = __bits_per_word - __first.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); - __storage_type __b1 = *__first.__seg_ & __m; - *__first.__seg_ &= ~__m; - __storage_type __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b1; - *__first.__seg_ |= __b2; - __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); - ++__first.__seg_; - // __first.__ctz_ = 0; - } - // __first.__ctz_ == 0; - // do middle words - for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_, ++__result.__seg_) - swap(*__first.__seg_, *__result.__seg_); - // do last word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b1 = *__first.__seg_ & __m; - *__first.__seg_ &= ~__m; - __storage_type __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b1; - *__first.__seg_ |= __b2; - __result.__ctz_ = static_cast(__n); - } +template +_LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cr, false> __swap_ranges_aligned( + __bit_iterator<_Cl, false> __first, __bit_iterator<_Cl, false> __last, __bit_iterator<_Cr, false> __result) { + using _I1 = __bit_iterator<_Cl, false>; + using difference_type = typename _I1::difference_type; + using __storage_type = typename _I1::__storage_type; + + const int __bits_per_word = _I1::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) { + // do first word + if (__first.__ctz_ != 0) { + unsigned __clz = __bits_per_word - __first.__ctz_; + difference_type __dn = std::min(static_cast(__clz), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); + __storage_type __b1 = *__first.__seg_ & __m; + *__first.__seg_ &= ~__m; + __storage_type __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b1; + *__first.__seg_ |= __b2; + __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); + ++__first.__seg_; + // __first.__ctz_ = 0; + } + // __first.__ctz_ == 0; + // do middle words + for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_, ++__result.__seg_) + swap(*__first.__seg_, *__result.__seg_); + // do last word + if (__n > 0) { + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b1 = *__first.__seg_ & __m; + *__first.__seg_ &= ~__m; + __storage_type __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b1; + *__first.__seg_ |= __b2; + __result.__ctz_ = static_cast(__n); } - return __result; + } + return __result; } -template -_LIBCPP_HIDE_FROM_ABI __bit_iterator<__C2, false> -__swap_ranges_unaligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, false> __last, - __bit_iterator<__C2, false> __result) -{ - typedef __bit_iterator<__C1, false> _I1; - typedef typename _I1::difference_type difference_type; - typedef typename _I1::__storage_type __storage_type; - const int __bits_per_word = _I1::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__first.__ctz_ != 0) - { - unsigned __clz_f = __bits_per_word - __first.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz_f), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __storage_type __b1 = *__first.__seg_ & __m; - *__first.__seg_ &= ~__m; - unsigned __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r); - __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); - __storage_type __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - if (__result.__ctz_ > __first.__ctz_) - { - unsigned __s = __result.__ctz_ - __first.__ctz_; - *__result.__seg_ |= __b1 << __s; - *__first.__seg_ |= __b2 >> __s; - } - else - { - unsigned __s = __first.__ctz_ - __result.__ctz_; - *__result.__seg_ |= __b1 >> __s; - *__first.__seg_ |= __b2 << __s; - } - __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__ddn + __result.__ctz_) % __bits_per_word); - __dn -= __ddn; - if (__dn > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __dn); - __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - unsigned __s = __first.__ctz_ + __ddn; - *__result.__seg_ |= __b1 >> __s; - *__first.__seg_ |= __b2 << __s; - __result.__ctz_ = static_cast(__dn); - } - ++__first.__seg_; - // __first.__ctz_ = 0; - } - // __first.__ctz_ == 0; - // do middle words - __storage_type __m = ~__storage_type(0) << __result.__ctz_; - unsigned __clz_r = __bits_per_word - __result.__ctz_; - for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_) - { - __storage_type __b1 = *__first.__seg_; - __storage_type __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b1 << __result.__ctz_; - *__first.__seg_ = __b2 >> __result.__ctz_; - ++__result.__seg_; - __b2 = *__result.__seg_ & ~__m; - *__result.__seg_ &= __m; - *__result.__seg_ |= __b1 >> __clz_r; - *__first.__seg_ |= __b2 << __clz_r; - } - // do last word - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b1 = *__first.__seg_ & __m; - *__first.__seg_ &= ~__m; - __storage_type __dn = _VSTD::min<__storage_type>(__n, __clz_r); - __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); - __storage_type __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b1 << __result.__ctz_; - *__first.__seg_ |= __b2 >> __result.__ctz_; - __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); - __n -= __dn; - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b1 >> __dn; - *__first.__seg_ |= __b2 << __dn; - __result.__ctz_ = static_cast(__n); - } - } +template +_LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cr, false> __swap_ranges_unaligned( + __bit_iterator<_Cl, false> __first, __bit_iterator<_Cl, false> __last, __bit_iterator<_Cr, false> __result) { + using _I1 = __bit_iterator<_Cl, false>; + using difference_type = typename _I1::difference_type; + using __storage_type = typename _I1::__storage_type; + + const int __bits_per_word = _I1::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) { + // do first word + if (__first.__ctz_ != 0) { + unsigned __clz_f = __bits_per_word - __first.__ctz_; + difference_type __dn = std::min(static_cast(__clz_f), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __storage_type __b1 = *__first.__seg_ & __m; + *__first.__seg_ &= ~__m; + unsigned __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __ddn = std::min<__storage_type>(__dn, __clz_r); + __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); + __storage_type __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + if (__result.__ctz_ > __first.__ctz_) { + unsigned __s = __result.__ctz_ - __first.__ctz_; + *__result.__seg_ |= __b1 << __s; + *__first.__seg_ |= __b2 >> __s; + } else { + unsigned __s = __first.__ctz_ - __result.__ctz_; + *__result.__seg_ |= __b1 >> __s; + *__first.__seg_ |= __b2 << __s; + } + __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__ddn + __result.__ctz_) % __bits_per_word); + __dn -= __ddn; + if (__dn > 0) { + __m = ~__storage_type(0) >> (__bits_per_word - __dn); + __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + unsigned __s = __first.__ctz_ + __ddn; + *__result.__seg_ |= __b1 >> __s; + *__first.__seg_ |= __b2 << __s; + __result.__ctz_ = static_cast(__dn); + } + ++__first.__seg_; + // __first.__ctz_ = 0; } - return __result; + // __first.__ctz_ == 0; + // do middle words + __storage_type __m = ~__storage_type(0) << __result.__ctz_; + unsigned __clz_r = __bits_per_word - __result.__ctz_; + for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_) { + __storage_type __b1 = *__first.__seg_; + __storage_type __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b1 << __result.__ctz_; + *__first.__seg_ = __b2 >> __result.__ctz_; + ++__result.__seg_; + __b2 = *__result.__seg_ & ~__m; + *__result.__seg_ &= __m; + *__result.__seg_ |= __b1 >> __clz_r; + *__first.__seg_ |= __b2 << __clz_r; + } + // do last word + if (__n > 0) { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b1 = *__first.__seg_ & __m; + *__first.__seg_ &= ~__m; + __storage_type __dn = std::min<__storage_type>(__n, __clz_r); + __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); + __storage_type __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b1 << __result.__ctz_; + *__first.__seg_ |= __b2 >> __result.__ctz_; + __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); + __n -= __dn; + if (__n > 0) { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b1 >> __dn; + *__first.__seg_ |= __b2 << __dn; + __result.__ctz_ = static_cast(__n); + } + } + } + return __result; } -template -inline _LIBCPP_INLINE_VISIBILITY -__bit_iterator<__C2, false> -swap_ranges(__bit_iterator<__C1, false> __first1, __bit_iterator<__C1, false> __last1, - __bit_iterator<__C2, false> __first2) -{ - if (__first1.__ctz_ == __first2.__ctz_) - return _VSTD::__swap_ranges_aligned(__first1, __last1, __first2); - return _VSTD::__swap_ranges_unaligned(__first1, __last1, __first2); +template +inline _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cr, false> swap_ranges( + __bit_iterator<_Cl, false> __first1, __bit_iterator<_Cl, false> __last1, __bit_iterator<_Cr, false> __first2) { + if (__first1.__ctz_ == __first2.__ctz_) + return std::__swap_ranges_aligned(__first1, __last1, __first2); + return std::__swap_ranges_unaligned(__first1, __last1, __first2); } // rotate template -struct __bit_array -{ - typedef typename _Cp::difference_type difference_type; - typedef typename _Cp::__storage_type __storage_type; - typedef typename _Cp::__storage_pointer __storage_pointer; - typedef typename _Cp::iterator iterator; - static const unsigned __bits_per_word = _Cp::__bits_per_word; - static const unsigned _Np = 4; - - difference_type __size_; - __storage_type __word_[_Np]; - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 static difference_type capacity() - {return static_cast(_Np * __bits_per_word);} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit __bit_array(difference_type __s) : __size_(__s) { - if (__libcpp_is_constant_evaluated()) { - for (size_t __i = 0; __i != __bit_array<_Cp>::_Np; ++__i) - std::__construct_at(__word_ + __i, 0); - } - } - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 iterator begin() - { - return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]), 0); - } - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 iterator end() - { - return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]) + __size_ / __bits_per_word, - static_cast(__size_ % __bits_per_word)); +struct __bit_array { + using difference_type = typename _Cp::difference_type; + using __storage_type = typename _Cp::__storage_type; + using __storage_pointer = typename _Cp::__storage_pointer; + using iterator = typename _Cp::iterator; + + static const unsigned __bits_per_word = _Cp::__bits_per_word; + static const unsigned _Np = 4; + + difference_type __size_; + __storage_type __word_[_Np]; + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 static difference_type capacity() { + return static_cast(_Np * __bits_per_word); + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit __bit_array(difference_type __s) : __size_(__s) { + if (__libcpp_is_constant_evaluated()) { + for (size_t __i = 0; __i != __bit_array<_Cp>::_Np; ++__i) + std::__construct_at(__word_ + __i, 0); } + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 iterator begin() { + return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]), 0); + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 iterator end() { + return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]) + __size_ / __bits_per_word, + static_cast(__size_ % __bits_per_word)); + } }; template _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> -rotate(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __middle, __bit_iterator<_Cp, false> __last) -{ - typedef __bit_iterator<_Cp, false> _I1; - typedef typename _I1::difference_type difference_type; - difference_type __d1 = __middle - __first; - difference_type __d2 = __last - __middle; - _I1 __r = __first + __d2; - while (__d1 != 0 && __d2 != 0) - { - if (__d1 <= __d2) - { - if (__d1 <= __bit_array<_Cp>::capacity()) - { - __bit_array<_Cp> __b(__d1); - _VSTD::copy(__first, __middle, __b.begin()); - _VSTD::copy(__b.begin(), __b.end(), _VSTD::copy(__middle, __last, __first)); - break; - } - else - { - __bit_iterator<_Cp, false> __mp = _VSTD::swap_ranges(__first, __middle, __middle); - __first = __middle; - __middle = __mp; - __d2 -= __d1; - } - } - else - { - if (__d2 <= __bit_array<_Cp>::capacity()) - { - __bit_array<_Cp> __b(__d2); - _VSTD::copy(__middle, __last, __b.begin()); - _VSTD::copy_backward(__b.begin(), __b.end(), _VSTD::copy_backward(__first, __middle, __last)); - break; - } - else - { - __bit_iterator<_Cp, false> __mp = __first + __d2; - _VSTD::swap_ranges(__first, __mp, __middle); - __first = __mp; - __d1 -= __d2; - } - } +rotate(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __middle, __bit_iterator<_Cp, false> __last) { + using _I1 = __bit_iterator<_Cp, false>; + using difference_type = typename _I1::difference_type; + + difference_type __d1 = __middle - __first; + difference_type __d2 = __last - __middle; + _I1 __r = __first + __d2; + while (__d1 != 0 && __d2 != 0) { + if (__d1 <= __d2) { + if (__d1 <= __bit_array<_Cp>::capacity()) { + __bit_array<_Cp> __b(__d1); + std::copy(__first, __middle, __b.begin()); + std::copy(__b.begin(), __b.end(), std::copy(__middle, __last, __first)); + break; + } else { + __bit_iterator<_Cp, false> __mp = std::swap_ranges(__first, __middle, __middle); + __first = __middle; + __middle = __mp; + __d2 -= __d1; + } + } else { + if (__d2 <= __bit_array<_Cp>::capacity()) { + __bit_array<_Cp> __b(__d2); + std::copy(__middle, __last, __b.begin()); + std::copy_backward(__b.begin(), __b.end(), std::copy_backward(__first, __middle, __last)); + break; + } else { + __bit_iterator<_Cp, false> __mp = __first + __d2; + std::swap_ranges(__first, __mp, __middle); + __first = __mp; + __d1 -= __d2; + } } - return __r; + } + return __r; } // equal template -_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool -__equal_unaligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, - __bit_iterator<_Cp, _IC2> __first2) -{ - typedef __bit_iterator<_Cp, _IC1> _It; - typedef typename _It::difference_type difference_type; - typedef typename _It::__storage_type __storage_type; - const int __bits_per_word = _It::__bits_per_word; - difference_type __n = __last1 - __first1; - if (__n > 0) - { - // do first word - if (__first1.__ctz_ != 0) - { - unsigned __clz_f = __bits_per_word - __first1.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz_f), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first1.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __storage_type __b = *__first1.__seg_ & __m; - unsigned __clz_r = __bits_per_word - __first2.__ctz_; - __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r); - __m = (~__storage_type(0) << __first2.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); - if (__first2.__ctz_ > __first1.__ctz_) - { - if ((*__first2.__seg_ & __m) != (__b << (__first2.__ctz_ - __first1.__ctz_))) - return false; - } - else - { - if ((*__first2.__seg_ & __m) != (__b >> (__first1.__ctz_ - __first2.__ctz_))) - return false; - } - __first2.__seg_ += (__ddn + __first2.__ctz_) / __bits_per_word; - __first2.__ctz_ = static_cast((__ddn + __first2.__ctz_) % __bits_per_word); - __dn -= __ddn; - if (__dn > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __dn); - if ((*__first2.__seg_ & __m) != (__b >> (__first1.__ctz_ + __ddn))) - return false; - __first2.__ctz_ = static_cast(__dn); - } - ++__first1.__seg_; - // __first1.__ctz_ = 0; - } - // __first1.__ctz_ == 0; - // do middle words - unsigned __clz_r = __bits_per_word - __first2.__ctz_; - __storage_type __m = ~__storage_type(0) << __first2.__ctz_; - for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_) - { - __storage_type __b = *__first1.__seg_; - if ((*__first2.__seg_ & __m) != (__b << __first2.__ctz_)) - return false; - ++__first2.__seg_; - if ((*__first2.__seg_ & ~__m) != (__b >> __clz_r)) - return false; - } - // do last word - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = *__first1.__seg_ & __m; - __storage_type __dn = _VSTD::min(__n, static_cast(__clz_r)); - __m = (~__storage_type(0) << __first2.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); - if ((*__first2.__seg_ & __m) != (__b << __first2.__ctz_)) - return false; - __first2.__seg_ += (__dn + __first2.__ctz_) / __bits_per_word; - __first2.__ctz_ = static_cast((__dn + __first2.__ctz_) % __bits_per_word); - __n -= __dn; - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - if ((*__first2.__seg_ & __m) != (__b >> __dn)) - return false; - } - } +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool __equal_unaligned( + __bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, __bit_iterator<_Cp, _IC2> __first2) { + using _It = __bit_iterator<_Cp, _IC1>; + using difference_type = typename _It::difference_type; + using __storage_type = typename _It::__storage_type; + + const int __bits_per_word = _It::__bits_per_word; + difference_type __n = __last1 - __first1; + if (__n > 0) { + // do first word + if (__first1.__ctz_ != 0) { + unsigned __clz_f = __bits_per_word - __first1.__ctz_; + difference_type __dn = std::min(static_cast(__clz_f), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first1.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __storage_type __b = *__first1.__seg_ & __m; + unsigned __clz_r = __bits_per_word - __first2.__ctz_; + __storage_type __ddn = std::min<__storage_type>(__dn, __clz_r); + __m = (~__storage_type(0) << __first2.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); + if (__first2.__ctz_ > __first1.__ctz_) { + if ((*__first2.__seg_ & __m) != (__b << (__first2.__ctz_ - __first1.__ctz_))) + return false; + } else { + if ((*__first2.__seg_ & __m) != (__b >> (__first1.__ctz_ - __first2.__ctz_))) + return false; + } + __first2.__seg_ += (__ddn + __first2.__ctz_) / __bits_per_word; + __first2.__ctz_ = static_cast((__ddn + __first2.__ctz_) % __bits_per_word); + __dn -= __ddn; + if (__dn > 0) { + __m = ~__storage_type(0) >> (__bits_per_word - __dn); + if ((*__first2.__seg_ & __m) != (__b >> (__first1.__ctz_ + __ddn))) + return false; + __first2.__ctz_ = static_cast(__dn); + } + ++__first1.__seg_; + // __first1.__ctz_ = 0; + } + // __first1.__ctz_ == 0; + // do middle words + unsigned __clz_r = __bits_per_word - __first2.__ctz_; + __storage_type __m = ~__storage_type(0) << __first2.__ctz_; + for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_) { + __storage_type __b = *__first1.__seg_; + if ((*__first2.__seg_ & __m) != (__b << __first2.__ctz_)) + return false; + ++__first2.__seg_; + if ((*__first2.__seg_ & ~__m) != (__b >> __clz_r)) + return false; + } + // do last word + if (__n > 0) { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b = *__first1.__seg_ & __m; + __storage_type __dn = std::min(__n, static_cast(__clz_r)); + __m = (~__storage_type(0) << __first2.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); + if ((*__first2.__seg_ & __m) != (__b << __first2.__ctz_)) + return false; + __first2.__seg_ += (__dn + __first2.__ctz_) / __bits_per_word; + __first2.__ctz_ = static_cast((__dn + __first2.__ctz_) % __bits_per_word); + __n -= __dn; + if (__n > 0) { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + if ((*__first2.__seg_ & __m) != (__b >> __dn)) + return false; + } } - return true; + } + return true; } template -_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool -__equal_aligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, - __bit_iterator<_Cp, _IC2> __first2) -{ - typedef __bit_iterator<_Cp, _IC1> _It; - typedef typename _It::difference_type difference_type; - typedef typename _It::__storage_type __storage_type; - const int __bits_per_word = _It::__bits_per_word; - difference_type __n = __last1 - __first1; - if (__n > 0) - { - // do first word - if (__first1.__ctz_ != 0) - { - unsigned __clz = __bits_per_word - __first1.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first1.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); - if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m)) - return false; - ++__first2.__seg_; - ++__first1.__seg_; - // __first1.__ctz_ = 0; - // __first2.__ctz_ = 0; - } - // __first1.__ctz_ == 0; - // __first2.__ctz_ == 0; - // do middle words - for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_, ++__first2.__seg_) - if (*__first2.__seg_ != *__first1.__seg_) - return false; - // do last word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m)) - return false; - } +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool __equal_aligned( + __bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, __bit_iterator<_Cp, _IC2> __first2) { + using _It = __bit_iterator<_Cp, _IC1>; + using difference_type = typename _It::difference_type; + using __storage_type = typename _It::__storage_type; + + const int __bits_per_word = _It::__bits_per_word; + difference_type __n = __last1 - __first1; + if (__n > 0) { + // do first word + if (__first1.__ctz_ != 0) { + unsigned __clz = __bits_per_word - __first1.__ctz_; + difference_type __dn = std::min(static_cast(__clz), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first1.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); + if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m)) + return false; + ++__first2.__seg_; + ++__first1.__seg_; + // __first1.__ctz_ = 0; + // __first2.__ctz_ = 0; } - return true; + // __first1.__ctz_ == 0; + // __first2.__ctz_ == 0; + // do middle words + for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_, ++__first2.__seg_) + if (*__first2.__seg_ != *__first1.__seg_) + return false; + // do last word + if (__n > 0) { + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m)) + return false; + } + } + return true; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -bool -equal(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, __bit_iterator<_Cp, _IC2> __first2) -{ - if (__first1.__ctz_ == __first2.__ctz_) - return _VSTD::__equal_aligned(__first1, __last1, __first2); - return _VSTD::__equal_unaligned(__first1, __last1, __first2); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +equal(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, __bit_iterator<_Cp, _IC2> __first2) { + if (__first1.__ctz_ == __first2.__ctz_) + return std::__equal_aligned(__first1, __last1, __first2); + return std::__equal_unaligned(__first1, __last1, __first2); } -template -class __bit_iterator -{ +template +class __bit_iterator { public: - typedef typename _Cp::difference_type difference_type; - typedef bool value_type; - typedef __bit_iterator pointer; + using difference_type = typename _Cp::difference_type; + using value_type = bool; + using pointer = __bit_iterator; #ifndef _LIBCPP_ABI_BITSET_VECTOR_BOOL_CONST_SUBSCRIPT_RETURN_BOOL - typedef __conditional_t<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> > reference; + using reference = __conditional_t<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> >; #else - using reference = __conditional_t<_IsConst, bool, __bit_reference<_Cp> >; + using reference = __conditional_t<_IsConst, bool, __bit_reference<_Cp> >; #endif - typedef random_access_iterator_tag iterator_category; + using iterator_category = random_access_iterator_tag; private: - typedef typename _Cp::__storage_type __storage_type; - typedef __conditional_t<_IsConst, typename _Cp::__const_storage_pointer, typename _Cp::__storage_pointer> - __storage_pointer; - static const unsigned __bits_per_word = _Cp::__bits_per_word; + using __storage_type = typename _Cp::__storage_type; + using __storage_pointer = + __conditional_t<_IsConst, typename _Cp::__const_storage_pointer, typename _Cp::__storage_pointer>; + + static const unsigned __bits_per_word = _Cp::__bits_per_word; - __storage_pointer __seg_; - unsigned __ctz_; + __storage_pointer __seg_; + unsigned __ctz_; public: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator() _NOEXCEPT -#if _LIBCPP_STD_VER > 11 - : __seg_(nullptr), __ctz_(0) + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator() _NOEXCEPT +#if _LIBCPP_STD_VER >= 14 + : __seg_(nullptr), + __ctz_(0) #endif - {} - - // When _IsConst=false, this is the copy constructor. - // It is non-trivial. Making it trivial would break ABI. - // When _IsConst=true, this is a converting constructor; - // the copy and move constructors are implicitly generated - // and trivial. - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - __bit_iterator(const __bit_iterator<_Cp, false>& __it) _NOEXCEPT - : __seg_(__it.__seg_), __ctz_(__it.__ctz_) {} - - // When _IsConst=false, we have a user-provided copy constructor, - // so we must also provide a copy assignment operator because - // the implicit generation of a defaulted one is deprecated. - // When _IsConst=true, the assignment operators are - // implicitly generated and trivial. - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - __bit_iterator& operator=(const _If<_IsConst, struct __private_nat, __bit_iterator>& __it) { - __seg_ = __it.__seg_; - __ctz_ = __it.__ctz_; - return *this; - } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 reference operator*() const _NOEXCEPT { - return __conditional_t<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> >( - __seg_, __storage_type(1) << __ctz_); - } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator++() - { - if (__ctz_ != __bits_per_word-1) - ++__ctz_; - else - { - __ctz_ = 0; - ++__seg_; - } - return *this; - } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator++(int) - { - __bit_iterator __tmp = *this; - ++(*this); - return __tmp; - } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator--() - { - if (__ctz_ != 0) - --__ctz_; - else - { - __ctz_ = __bits_per_word - 1; - --__seg_; - } - return *this; - } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator--(int) - { - __bit_iterator __tmp = *this; - --(*this); - return __tmp; - } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator+=(difference_type __n) - { - if (__n >= 0) - __seg_ += (__n + __ctz_) / __bits_per_word; - else - __seg_ += static_cast(__n - __bits_per_word + __ctz_ + 1) - / static_cast(__bits_per_word); - __n &= (__bits_per_word - 1); - __ctz_ = static_cast((__n + __ctz_) % __bits_per_word); - return *this; + { + } + + // When _IsConst=false, this is the copy constructor. + // It is non-trivial. Making it trivial would break ABI. + // When _IsConst=true, this is a converting constructor; + // the copy and move constructors are implicitly generated + // and trivial. + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator(const __bit_iterator<_Cp, false>& __it) _NOEXCEPT + : __seg_(__it.__seg_), + __ctz_(__it.__ctz_) {} + + // When _IsConst=false, we have a user-provided copy constructor, + // so we must also provide a copy assignment operator because + // the implicit generation of a defaulted one is deprecated. + // When _IsConst=true, the assignment operators are + // implicitly generated and trivial. + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& + operator=(const _If<_IsConst, struct __private_nat, __bit_iterator>& __it) { + __seg_ = __it.__seg_; + __ctz_ = __it.__ctz_; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 reference operator*() const _NOEXCEPT { + return __conditional_t<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> >( + __seg_, __storage_type(1) << __ctz_); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator++() { + if (__ctz_ != __bits_per_word - 1) + ++__ctz_; + else { + __ctz_ = 0; + ++__seg_; } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator-=(difference_type __n) - { - return *this += -__n; - } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator+(difference_type __n) const - { - __bit_iterator __t(*this); - __t += __n; - return __t; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator++(int) { + __bit_iterator __tmp = *this; + ++(*this); + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator--() { + if (__ctz_ != 0) + --__ctz_; + else { + __ctz_ = __bits_per_word - 1; + --__seg_; } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator-(difference_type __n) const - { - __bit_iterator __t(*this); - __t -= __n; - return __t; - } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend __bit_iterator operator+(difference_type __n, const __bit_iterator& __it) {return __it + __n;} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend difference_type operator-(const __bit_iterator& __x, const __bit_iterator& __y) - {return (__x.__seg_ - __y.__seg_) * __bits_per_word + __x.__ctz_ - __y.__ctz_;} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 reference operator[](difference_type __n) const {return *(*this + __n);} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator==(const __bit_iterator& __x, const __bit_iterator& __y) - {return __x.__seg_ == __y.__seg_ && __x.__ctz_ == __y.__ctz_;} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator!=(const __bit_iterator& __x, const __bit_iterator& __y) - {return !(__x == __y);} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator<(const __bit_iterator& __x, const __bit_iterator& __y) - {return __x.__seg_ < __y.__seg_ || (__x.__seg_ == __y.__seg_ && __x.__ctz_ < __y.__ctz_);} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator>(const __bit_iterator& __x, const __bit_iterator& __y) - {return __y < __x;} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator<=(const __bit_iterator& __x, const __bit_iterator& __y) - {return !(__y < __x);} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator>=(const __bit_iterator& __x, const __bit_iterator& __y) - {return !(__x < __y);} + return *this; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator--(int) { + __bit_iterator __tmp = *this; + --(*this); + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator+=(difference_type __n) { + if (__n >= 0) + __seg_ += (__n + __ctz_) / __bits_per_word; + else + __seg_ += static_cast(__n - __bits_per_word + __ctz_ + 1) / + static_cast(__bits_per_word); + __n &= (__bits_per_word - 1); + __ctz_ = static_cast((__n + __ctz_) % __bits_per_word); + return *this; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator-=(difference_type __n) { + return *this += -__n; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator+(difference_type __n) const { + __bit_iterator __t(*this); + __t += __n; + return __t; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator-(difference_type __n) const { + __bit_iterator __t(*this); + __t -= __n; + return __t; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 friend __bit_iterator + operator+(difference_type __n, const __bit_iterator& __it) { + return __it + __n; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 friend difference_type + operator-(const __bit_iterator& __x, const __bit_iterator& __y) { + return (__x.__seg_ - __y.__seg_) * __bits_per_word + __x.__ctz_ - __y.__ctz_; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 reference operator[](difference_type __n) const { + return *(*this + __n); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool + operator==(const __bit_iterator& __x, const __bit_iterator& __y) { + return __x.__seg_ == __y.__seg_ && __x.__ctz_ == __y.__ctz_; + } + +#if _LIBCPP_STD_VER <= 17 + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool + operator!=(const __bit_iterator& __x, const __bit_iterator& __y) { + return !(__x == __y); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool + operator<(const __bit_iterator& __x, const __bit_iterator& __y) { + return __x.__seg_ < __y.__seg_ || (__x.__seg_ == __y.__seg_ && __x.__ctz_ < __y.__ctz_); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool + operator>(const __bit_iterator& __x, const __bit_iterator& __y) { + return __y < __x; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool + operator<=(const __bit_iterator& __x, const __bit_iterator& __y) { + return !(__y < __x); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool + operator>=(const __bit_iterator& __x, const __bit_iterator& __y) { + return !(__x < __y); + } +#else // _LIBCPP_STD_VER <= 17 + _LIBCPP_HIDE_FROM_ABI constexpr friend strong_ordering + operator<=>(const __bit_iterator& __x, const __bit_iterator& __y) { + if (__x.__seg_ < __y.__seg_) + return strong_ordering::less; + + if (__x.__seg_ == __y.__seg_) + return __x.__ctz_ <=> __y.__ctz_; + + return strong_ordering::greater; + } +#endif // _LIBCPP_STD_VER <= 17 private: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - explicit __bit_iterator(__storage_pointer __s, unsigned __ctz) _NOEXCEPT - : __seg_(__s), __ctz_(__ctz) {} - - friend typename _Cp::__self; - - friend class __bit_reference<_Cp>; - friend class __bit_const_reference<_Cp>; - friend class __bit_iterator<_Cp, true>; - template friend struct __bit_array; - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend void __fill_n_false(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); - - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend void __fill_n_true(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); - - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend __bit_iterator<_Dp, false> __copy_aligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend __bit_iterator<_Dp, false> __copy_unaligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend __bit_iterator<_Dp, false> copy(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend __bit_iterator<_Dp, false> __copy_backward_aligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend __bit_iterator<_Dp, false> __copy_backward_unaligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend __bit_iterator<_Dp, false> copy_backward(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<__C2, false> __swap_ranges_aligned(__bit_iterator<__C1, false>, - __bit_iterator<__C1, false>, - __bit_iterator<__C2, false>); - template friend __bit_iterator<__C2, false> __swap_ranges_unaligned(__bit_iterator<__C1, false>, - __bit_iterator<__C1, false>, - __bit_iterator<__C2, false>); - template friend __bit_iterator<__C2, false> swap_ranges(__bit_iterator<__C1, false>, - __bit_iterator<__C1, false>, - __bit_iterator<__C2, false>); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend __bit_iterator<_Dp, false> rotate(__bit_iterator<_Dp, false>, - __bit_iterator<_Dp, false>, - __bit_iterator<_Dp, false>); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend bool __equal_aligned(__bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC2>); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend bool __equal_unaligned(__bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC2>); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend bool equal(__bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC2>); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend __bit_iterator<_Dp, _IC> __find_bool_true(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); - template - _LIBCPP_CONSTEXPR_SINCE_CXX20 - friend __bit_iterator<_Dp, _IC> __find_bool_false(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); - template friend typename __bit_iterator<_Dp, _IC>::difference_type - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 - __count_bool_true(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); - template friend typename __bit_iterator<_Dp, _IC>::difference_type - __count_bool_false(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); + _LIBCPP_HIDE_FROM_ABI + _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit __bit_iterator(__storage_pointer __s, unsigned __ctz) _NOEXCEPT + : __seg_(__s), + __ctz_(__ctz) {} + + friend typename _Cp::__self; + + friend class __bit_reference<_Cp>; + friend class __bit_const_reference<_Cp>; + friend class __bit_iterator<_Cp, true>; + template + friend struct __bit_array; + + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend void + __fill_n_bool(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); + + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend __bit_iterator<_Dp, false> __copy_aligned( + __bit_iterator<_Dp, _IC> __first, __bit_iterator<_Dp, _IC> __last, __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend __bit_iterator<_Dp, false> __copy_unaligned( + __bit_iterator<_Dp, _IC> __first, __bit_iterator<_Dp, _IC> __last, __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend __bit_iterator<_Dp, false> + copy(__bit_iterator<_Dp, _IC> __first, __bit_iterator<_Dp, _IC> __last, __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend __bit_iterator<_Dp, false> __copy_backward_aligned( + __bit_iterator<_Dp, _IC> __first, __bit_iterator<_Dp, _IC> __last, __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend __bit_iterator<_Dp, false> __copy_backward_unaligned( + __bit_iterator<_Dp, _IC> __first, __bit_iterator<_Dp, _IC> __last, __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend __bit_iterator<_Dp, false> + copy_backward(__bit_iterator<_Dp, _IC> __first, __bit_iterator<_Dp, _IC> __last, __bit_iterator<_Dp, false> __result); + template + friend __bit_iterator<_Cr, false> + __swap_ranges_aligned(__bit_iterator<_Cl, false>, __bit_iterator<_Cl, false>, __bit_iterator<_Cr, false>); + template + friend __bit_iterator<_Cr, false> + __swap_ranges_unaligned(__bit_iterator<_Cl, false>, __bit_iterator<_Cl, false>, __bit_iterator<_Cr, false>); + template + friend __bit_iterator<_Cr, false> + swap_ranges(__bit_iterator<_Cl, false>, __bit_iterator<_Cl, false>, __bit_iterator<_Cr, false>); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend __bit_iterator<_Dp, false> + rotate(__bit_iterator<_Dp, false>, __bit_iterator<_Dp, false>, __bit_iterator<_Dp, false>); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool + __equal_aligned(__bit_iterator<_Dp, _IC1>, __bit_iterator<_Dp, _IC1>, __bit_iterator<_Dp, _IC2>); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool + __equal_unaligned(__bit_iterator<_Dp, _IC1>, __bit_iterator<_Dp, _IC1>, __bit_iterator<_Dp, _IC2>); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool + equal(__bit_iterator<_Dp, _IC1>, __bit_iterator<_Dp, _IC1>, __bit_iterator<_Dp, _IC2>); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 friend __bit_iterator<_Dp, _IC> + __find_bool(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); + template + friend typename __bit_iterator<_Dp, _IC>::difference_type _LIBCPP_HIDE_FROM_ABI + _LIBCPP_CONSTEXPR_SINCE_CXX20 __count_bool(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); }; _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__bsd_locale_defaults.h b/include/c++/v1/__bsd_locale_defaults.h deleted file mode 100644 index 4d990482..00000000 --- a/include/c++/v1/__bsd_locale_defaults.h +++ /dev/null @@ -1,36 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// The BSDs have lots of *_l functions. We don't want to define those symbols -// on other platforms though, for fear of conflicts with user code. So here, -// we will define the mapping from an internal macro to the real BSD symbol. -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___BSD_LOCALE_DEFAULTS_H -#define _LIBCPP___BSD_LOCALE_DEFAULTS_H - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#define __libcpp_mb_cur_max_l(loc) MB_CUR_MAX_L(loc) -#define __libcpp_btowc_l(ch, loc) btowc_l(ch, loc) -#define __libcpp_wctob_l(wch, loc) wctob_l(wch, loc) -#define __libcpp_wcsnrtombs_l(dst, src, nwc, len, ps, loc) wcsnrtombs_l(dst, src, nwc, len, ps, loc) -#define __libcpp_wcrtomb_l(src, wc, ps, loc) wcrtomb_l(src, wc, ps, loc) -#define __libcpp_mbsnrtowcs_l(dst, src, nms, len, ps, loc) mbsnrtowcs_l(dst, src, nms, len, ps, loc) -#define __libcpp_mbrtowc_l(pwc, s, n, ps, l) mbrtowc_l(pwc, s, n, ps, l) -#define __libcpp_mbtowc_l(pwc, pmb, max, l) mbtowc_l(pwc, pmb, max, l) -#define __libcpp_mbrlen_l(s, n, ps, l) mbrlen_l(s, n, ps, l) -#define __libcpp_localeconv_l(l) localeconv_l(l) -#define __libcpp_mbsrtowcs_l(dest, src, len, ps, l) mbsrtowcs_l(dest, src, len, ps, l) -#define __libcpp_snprintf_l(...) snprintf_l(__VA_ARGS__) -#define __libcpp_asprintf_l(...) asprintf_l(__VA_ARGS__) -#define __libcpp_sscanf_l(...) sscanf_l(__VA_ARGS__) - -#endif // _LIBCPP___BSD_LOCALE_DEFAULTS_H diff --git a/include/c++/v1/__bsd_locale_fallbacks.h b/include/c++/v1/__bsd_locale_fallbacks.h deleted file mode 100644 index 9abd7e7e..00000000 --- a/include/c++/v1/__bsd_locale_fallbacks.h +++ /dev/null @@ -1,142 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// The BSDs have lots of *_l functions. This file provides reimplementations -// of those functions for non-BSD platforms. -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___BSD_LOCALE_FALLBACKS_H -#define _LIBCPP___BSD_LOCALE_FALLBACKS_H - -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -inline _LIBCPP_INLINE_VISIBILITY -decltype(MB_CUR_MAX) __libcpp_mb_cur_max_l(locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return MB_CUR_MAX; -} - -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS -inline _LIBCPP_INLINE_VISIBILITY -wint_t __libcpp_btowc_l(int __c, locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return btowc(__c); -} - -inline _LIBCPP_INLINE_VISIBILITY -int __libcpp_wctob_l(wint_t __c, locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return wctob(__c); -} - -inline _LIBCPP_INLINE_VISIBILITY -size_t __libcpp_wcsnrtombs_l(char *__dest, const wchar_t **__src, size_t __nwc, - size_t __len, mbstate_t *__ps, locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return wcsnrtombs(__dest, __src, __nwc, __len, __ps); -} - -inline _LIBCPP_INLINE_VISIBILITY -size_t __libcpp_wcrtomb_l(char *__s, wchar_t __wc, mbstate_t *__ps, locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return wcrtomb(__s, __wc, __ps); -} - -inline _LIBCPP_INLINE_VISIBILITY -size_t __libcpp_mbsnrtowcs_l(wchar_t * __dest, const char **__src, size_t __nms, - size_t __len, mbstate_t *__ps, locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return mbsnrtowcs(__dest, __src, __nms, __len, __ps); -} - -inline _LIBCPP_INLINE_VISIBILITY -size_t __libcpp_mbrtowc_l(wchar_t *__pwc, const char *__s, size_t __n, - mbstate_t *__ps, locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return mbrtowc(__pwc, __s, __n, __ps); -} - -inline _LIBCPP_INLINE_VISIBILITY -int __libcpp_mbtowc_l(wchar_t *__pwc, const char *__pmb, size_t __max, locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return mbtowc(__pwc, __pmb, __max); -} - -inline _LIBCPP_INLINE_VISIBILITY -size_t __libcpp_mbrlen_l(const char *__s, size_t __n, mbstate_t *__ps, locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return mbrlen(__s, __n, __ps); -} -#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS - -inline _LIBCPP_INLINE_VISIBILITY -lconv *__libcpp_localeconv_l(locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return localeconv(); -} - -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS -inline _LIBCPP_INLINE_VISIBILITY -size_t __libcpp_mbsrtowcs_l(wchar_t *__dest, const char **__src, size_t __len, - mbstate_t *__ps, locale_t __l) -{ - __libcpp_locale_guard __current(__l); - return mbsrtowcs(__dest, __src, __len, __ps); -} -#endif - -inline _LIBCPP_ATTRIBUTE_FORMAT(__printf__, 4, 5) -int __libcpp_snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...) { - va_list __va; - va_start(__va, __format); - __libcpp_locale_guard __current(__l); - int __res = vsnprintf(__s, __n, __format, __va); - va_end(__va); - return __res; -} - -inline _LIBCPP_ATTRIBUTE_FORMAT(__printf__, 3, 4) -int __libcpp_asprintf_l(char **__s, locale_t __l, const char *__format, ...) { - va_list __va; - va_start(__va, __format); - __libcpp_locale_guard __current(__l); - int __res = vasprintf(__s, __format, __va); - va_end(__va); - return __res; -} - -inline _LIBCPP_ATTRIBUTE_FORMAT(__scanf__, 3, 4) -int __libcpp_sscanf_l(const char *__s, locale_t __l, const char *__format, ...) { - va_list __va; - va_start(__va, __format); - __libcpp_locale_guard __current(__l); - int __res = vsscanf(__s, __format, __va); - va_end(__va); - return __res; -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___BSD_LOCALE_FALLBACKS_H diff --git a/include/c++/v1/__charconv/chars_format.h b/include/c++/v1/__charconv/chars_format.h index 695bd873..c76cebd5 100644 --- a/include/c++/v1/__charconv/chars_format.h +++ b/include/c++/v1/__charconv/chars_format.h @@ -19,58 +19,42 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 - -enum class _LIBCPP_ENUM_VIS chars_format -{ - scientific = 0x1, - fixed = 0x2, - hex = 0x4, - general = fixed | scientific -}; - -inline _LIBCPP_INLINE_VISIBILITY constexpr chars_format -operator~(chars_format __x) { - return chars_format(~_VSTD::__to_underlying(__x)); +#if _LIBCPP_STD_VER >= 17 + +enum class chars_format { scientific = 0x1, fixed = 0x2, hex = 0x4, general = fixed | scientific }; + +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format operator~(chars_format __x) { + return chars_format(~std::__to_underlying(__x)); } -inline _LIBCPP_INLINE_VISIBILITY constexpr chars_format -operator&(chars_format __x, chars_format __y) { - return chars_format(_VSTD::__to_underlying(__x) & - _VSTD::__to_underlying(__y)); +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format operator&(chars_format __x, chars_format __y) { + return chars_format(std::__to_underlying(__x) & std::__to_underlying(__y)); } -inline _LIBCPP_INLINE_VISIBILITY constexpr chars_format -operator|(chars_format __x, chars_format __y) { - return chars_format(_VSTD::__to_underlying(__x) | - _VSTD::__to_underlying(__y)); +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format operator|(chars_format __x, chars_format __y) { + return chars_format(std::__to_underlying(__x) | std::__to_underlying(__y)); } -inline _LIBCPP_INLINE_VISIBILITY constexpr chars_format -operator^(chars_format __x, chars_format __y) { - return chars_format(_VSTD::__to_underlying(__x) ^ - _VSTD::__to_underlying(__y)); +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format operator^(chars_format __x, chars_format __y) { + return chars_format(std::__to_underlying(__x) ^ std::__to_underlying(__y)); } -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 chars_format& -operator&=(chars_format& __x, chars_format __y) { +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format& operator&=(chars_format& __x, chars_format __y) { __x = __x & __y; return __x; } -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 chars_format& -operator|=(chars_format& __x, chars_format __y) { +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format& operator|=(chars_format& __x, chars_format __y) { __x = __x | __y; return __x; } -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 chars_format& -operator^=(chars_format& __x, chars_format __y) { +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format& operator^=(chars_format& __x, chars_format __y) { __x = __x ^ __y; return __x; } -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__charconv/from_chars_result.h b/include/c++/v1/__charconv/from_chars_result.h index 05ffe148..a7bfd653 100644 --- a/include/c++/v1/__charconv/from_chars_result.h +++ b/include/c++/v1/__charconv/from_chars_result.h @@ -11,7 +11,7 @@ #define _LIBCPP___CHARCONV_FROM_CHARS_RESULT_H #include <__config> -#include <__errc> +#include <__system_error/errc.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -19,18 +19,20 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 -struct _LIBCPP_TYPE_VIS from_chars_result -{ - const char* ptr; - errc ec; -# if _LIBCPP_STD_VER > 17 - _LIBCPP_HIDE_FROM_ABI friend bool operator==(const from_chars_result&, const from_chars_result&) = default; +struct _LIBCPP_EXPORTED_FROM_ABI from_chars_result { + const char* ptr; + errc ec; +# if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI friend bool operator==(const from_chars_result&, const from_chars_result&) = default; +# endif +# if _LIBCPP_STD_VER >= 26 + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return ec == errc{}; } # endif }; -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__charconv/tables.h b/include/c++/v1/__charconv/tables.h index 9b824403..6b93536b 100644 --- a/include/c++/v1/__charconv/tables.h +++ b/include/c++/v1/__charconv/tables.h @@ -19,7 +19,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 namespace __itoa { @@ -62,32 +62,41 @@ inline constexpr char __base_16_lut[512] = { 'f', 'd', 'f', 'e', 'f', 'f'}; inline constexpr uint32_t __pow10_32[10] = { - UINT32_C(0), UINT32_C(10), UINT32_C(100), UINT32_C(1000), UINT32_C(10000), - UINT32_C(100000), UINT32_C(1000000), UINT32_C(10000000), UINT32_C(100000000), UINT32_C(1000000000)}; - -inline constexpr uint64_t __pow10_64[20] = {UINT64_C(0), - UINT64_C(10), - UINT64_C(100), - UINT64_C(1000), - UINT64_C(10000), - UINT64_C(100000), - UINT64_C(1000000), - UINT64_C(10000000), - UINT64_C(100000000), - UINT64_C(1000000000), - UINT64_C(10000000000), - UINT64_C(100000000000), - UINT64_C(1000000000000), - UINT64_C(10000000000000), - UINT64_C(100000000000000), - UINT64_C(1000000000000000), - UINT64_C(10000000000000000), - UINT64_C(100000000000000000), - UINT64_C(1000000000000000000), - UINT64_C(10000000000000000000)}; + UINT32_C(0), + UINT32_C(10), + UINT32_C(100), + UINT32_C(1000), + UINT32_C(10000), + UINT32_C(100000), + UINT32_C(1000000), + UINT32_C(10000000), + UINT32_C(100000000), + UINT32_C(1000000000)}; + +inline constexpr uint64_t __pow10_64[20] = { + UINT64_C(0), + UINT64_C(10), + UINT64_C(100), + UINT64_C(1000), + UINT64_C(10000), + UINT64_C(100000), + UINT64_C(1000000), + UINT64_C(10000000), + UINT64_C(100000000), + UINT64_C(1000000000), + UINT64_C(10000000000), + UINT64_C(100000000000), + UINT64_C(1000000000000), + UINT64_C(10000000000000), + UINT64_C(100000000000000), + UINT64_C(1000000000000000), + UINT64_C(10000000000000000), + UINT64_C(100000000000000000), + UINT64_C(1000000000000000000), + UINT64_C(10000000000000000000)}; # ifndef _LIBCPP_HAS_NO_INT128 -inline constexpr int __pow10_128_offset = 0; +inline constexpr int __pow10_128_offset = 0; inline constexpr __uint128_t __pow10_128[40] = { UINT64_C(0), UINT64_C(10), @@ -147,7 +156,7 @@ inline constexpr char __digits_base_10[200] = { } // namespace __itoa -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__charconv/to_chars_base_10.h b/include/c++/v1/__charconv/to_chars_base_10.h index fc7fb76e..c49f4f67 100644 --- a/include/c++/v1/__charconv/to_chars_base_10.h +++ b/include/c++/v1/__charconv/to_chars_base_10.h @@ -11,6 +11,7 @@ #define _LIBCPP___CHARCONV_TO_CHARS_BASE_10_H #include <__algorithm/copy_n.h> +#include <__assert> #include <__charconv/tables.h> #include <__config> #include @@ -25,7 +26,7 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 namespace __itoa { @@ -72,7 +73,8 @@ _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI char* __append10(char* __fir static_cast(__value % 100000000)); } -_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __base_10_u32(char* __first, uint32_t __value) noexcept { +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* +__base_10_u32(char* __first, uint32_t __value) noexcept { if (__value < 1000000) { if (__value < 10000) { if (__value < 100) { @@ -107,7 +109,8 @@ _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __base_10_u32(c return __itoa::__append10(__first, __value); } -_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __base_10_u64(char* __buffer, uint64_t __value) noexcept { +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* +__base_10_u64(char* __buffer, uint64_t __value) noexcept { if (__value <= UINT32_MAX) return __itoa::__base_10_u32(__buffer, static_cast(__value)); @@ -130,13 +133,14 @@ _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __base_10_u64(c /// range that can be used. However the range is sufficient for /// \ref __base_10_u128. _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline __uint128_t __pow_10(int __exp) noexcept { - _LIBCPP_ASSERT(__exp >= __pow10_128_offset, "Index out of bounds"); + _LIBCPP_ASSERT_INTERNAL(__exp >= __pow10_128_offset, "Index out of bounds"); return __pow10_128[__exp - __pow10_128_offset]; } -_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __base_10_u128(char* __buffer, __uint128_t __value) noexcept { - _LIBCPP_ASSERT( - __value > numeric_limits::max(), "The optimizations for this algorithm fail when this isn't true."); +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* +__base_10_u128(char* __buffer, __uint128_t __value) noexcept { + _LIBCPP_ASSERT_INTERNAL( + __value > numeric_limits::max(), "The optimizations for this algorithm fails when this isn't true."); // Unlike the 64 to 32 bit case the 128 bit case the "upper half" can't be // stored in the "lower half". Instead we first need to handle the top most @@ -159,8 +163,7 @@ _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __base_10_u128( __value %= __itoa::__pow_10(29); __buffer = __itoa::__append10(__buffer, static_cast(__value / __itoa::__pow_10(19))); __value %= __itoa::__pow_10(19); - } - else { + } else { // step 2 // This version needs to determine the position of the leading non-zero digit. __buffer = __base_10_u64(__buffer, static_cast(__value / __itoa::__pow_10(19))); @@ -176,7 +179,7 @@ _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __base_10_u128( # endif } // namespace __itoa -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__charconv/to_chars_result.h b/include/c++/v1/__charconv/to_chars_result.h index 2eb4098d..8df0897a 100644 --- a/include/c++/v1/__charconv/to_chars_result.h +++ b/include/c++/v1/__charconv/to_chars_result.h @@ -11,7 +11,7 @@ #define _LIBCPP___CHARCONV_TO_CHARS_RESULT_H #include <__config> -#include <__errc> +#include <__system_error/errc.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -19,18 +19,20 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 -struct _LIBCPP_TYPE_VIS to_chars_result -{ - char* ptr; - errc ec; -# if _LIBCPP_STD_VER > 17 - _LIBCPP_HIDE_FROM_ABI friend bool operator==(const to_chars_result&, const to_chars_result&) = default; +struct _LIBCPP_EXPORTED_FROM_ABI to_chars_result { + char* ptr; + errc ec; +# if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI friend bool operator==(const to_chars_result&, const to_chars_result&) = default; +# endif +# if _LIBCPP_STD_VER >= 26 + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return ec == errc{}; } # endif }; -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__chrono/calendar.h b/include/c++/v1/__chrono/calendar.h index d3762a63..bb1c5e7e 100644 --- a/include/c++/v1/__chrono/calendar.h +++ b/include/c++/v1/__chrono/calendar.h @@ -18,27 +18,27 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { struct local_t {}; -template -using local_time = time_point; +template +using local_time = time_point; using local_seconds = local_time; using local_days = local_time; -struct last_spec { _LIBCPP_HIDE_FROM_ABI explicit last_spec() = default; }; +struct last_spec { + explicit last_spec() = default; +}; inline constexpr last_spec last{}; - } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_CALENDAR_H diff --git a/include/c++/v1/__chrono/convert_to_timespec.h b/include/c++/v1/__chrono/convert_to_timespec.h index fab07f25..11e0b826 100644 --- a/include/c++/v1/__chrono/convert_to_timespec.h +++ b/include/c++/v1/__chrono/convert_to_timespec.h @@ -26,23 +26,18 @@ _LIBCPP_BEGIN_NAMESPACE_STD // Convert a nanoseconds duration to the given TimeSpec type, which must have // the same properties as std::timespec. template -_LIBCPP_HIDE_FROM_ABI inline -_TimeSpec __convert_to_timespec(const chrono::nanoseconds& __ns) -{ +_LIBCPP_HIDE_FROM_ABI inline _TimeSpec __convert_to_timespec(const chrono::nanoseconds& __ns) { using namespace chrono; seconds __s = duration_cast(__ns); _TimeSpec __ts; typedef decltype(__ts.tv_sec) __ts_sec; const __ts_sec __ts_sec_max = numeric_limits<__ts_sec>::max(); - if (__s.count() < __ts_sec_max) - { - __ts.tv_sec = static_cast<__ts_sec>(__s.count()); + if (__s.count() < __ts_sec_max) { + __ts.tv_sec = static_cast<__ts_sec>(__s.count()); __ts.tv_nsec = static_cast((__ns - __s).count()); - } - else - { - __ts.tv_sec = __ts_sec_max; + } else { + __ts.tv_sec = __ts_sec_max; __ts.tv_nsec = 999999999; // (10^9 - 1) } diff --git a/include/c++/v1/__chrono/convert_to_tm.h b/include/c++/v1/__chrono/convert_to_tm.h index 36846b3f..3a51019b 100644 --- a/include/c++/v1/__chrono/convert_to_tm.h +++ b/include/c++/v1/__chrono/convert_to_tm.h @@ -10,13 +10,18 @@ #ifndef _LIBCPP___CHRONO_CONVERT_TO_TM_H #define _LIBCPP___CHRONO_CONVERT_TO_TM_H +#include <__chrono/calendar.h> +#include <__chrono/concepts.h> #include <__chrono/day.h> #include <__chrono/duration.h> +#include <__chrono/file_clock.h> #include <__chrono/hh_mm_ss.h> +#include <__chrono/local_info.h> #include <__chrono/month.h> #include <__chrono/month_weekday.h> #include <__chrono/monthday.h> #include <__chrono/statically_widen.h> +#include <__chrono/sys_info.h> #include <__chrono/system_clock.h> #include <__chrono/time_point.h> #include <__chrono/weekday.h> @@ -24,19 +29,27 @@ #include <__chrono/year_month.h> #include <__chrono/year_month_day.h> #include <__chrono/year_month_weekday.h> +#include <__chrono/zoned_time.h> #include <__concepts/same_as.h> #include <__config> +#include <__format/format_error.h> #include <__memory/addressof.h> +#include <__type_traits/is_convertible.h> +#include <__type_traits/is_specialization.h> #include #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // Conerts a chrono date and weekday to a given _Tm type. // @@ -67,6 +80,24 @@ _LIBCPP_HIDE_FROM_ABI _Tm __convert_to_tm(const _Date& __date, chrono::weekday _ return __result; } +template +_LIBCPP_HIDE_FROM_ABI _Tm __convert_to_tm(const chrono::sys_time<_Duration> __tp) { + chrono::sys_days __days = chrono::floor(__tp); + chrono::year_month_day __ymd{__days}; + + _Tm __result = std::__convert_to_tm<_Tm>(chrono::year_month_day{__ymd}, chrono::weekday{__days}); + + uint64_t __sec = + chrono::duration_cast(__tp - chrono::time_point_cast(__days)).count(); + __sec %= 24 * 3600; + __result.tm_hour = __sec / 3600; + __sec %= 3600; + __result.tm_min = __sec / 60; + __result.tm_sec = __sec % 60; + + return __result; +} + // Convert a chrono (calendar) time point, or dururation to the given _Tm type, // which must have the same properties as std::tm. template @@ -76,17 +107,37 @@ _LIBCPP_HIDE_FROM_ABI _Tm __convert_to_tm(const _ChronoT& __value) { __result.tm_zone = "UTC"; # endif - if constexpr (chrono::__is_duration<_ChronoT>::value) { + if constexpr (__is_time_point<_ChronoT>) { + if constexpr (same_as) + return std::__convert_to_tm<_Tm>(__value); + else if constexpr (same_as) + return std::__convert_to_tm<_Tm>(_ChronoT::clock::to_sys(__value)); + else if constexpr (same_as) + return std::__convert_to_tm<_Tm>(chrono::sys_time{__value.time_since_epoch()}); + else + static_assert(sizeof(_ChronoT) == 0, "TODO: Add the missing clock specialization"); + } else if constexpr (chrono::__is_duration<_ChronoT>::value) { // [time.format]/6 // ... However, if a flag refers to a "time of day" (e.g. %H, %I, %p, // etc.), then a specialization of duration is interpreted as the time of // day elapsed since midnight. - uint64_t __sec = chrono::duration_cast(__value).count(); - __sec %= 24 * 3600; - __result.tm_hour = __sec / 3600; - __sec %= 3600; - __result.tm_min = __sec / 60; - __result.tm_sec = __sec % 60; + + // Not all values can be converted to hours, it may run into ratio + // conversion errors. In that case the conversion to seconds works. + if constexpr (is_convertible_v<_ChronoT, chrono::hours>) { + auto __hour = chrono::floor(__value); + auto __sec = chrono::duration_cast(__value - __hour); + __result.tm_hour = __hour.count() % 24; + __result.tm_min = __sec.count() / 60; + __result.tm_sec = __sec.count() % 60; + } else { + uint64_t __sec = chrono::duration_cast(__value).count(); + __sec %= 24 * 3600; + __result.tm_hour = __sec / 3600; + __sec %= 3600; + __result.tm_min = __sec / 60; + __result.tm_sec = __sec % 60; + } } else if constexpr (same_as<_ChronoT, chrono::day>) __result.tm_mday = static_cast(__value); else if constexpr (same_as<_ChronoT, chrono::month>) @@ -114,14 +165,38 @@ _LIBCPP_HIDE_FROM_ABI _Tm __convert_to_tm(const _ChronoT& __value) { } else if constexpr (same_as<_ChronoT, chrono::year_month_weekday> || same_as<_ChronoT, chrono::year_month_weekday_last>) { return std::__convert_to_tm<_Tm>(chrono::year_month_day{static_cast(__value)}, __value.weekday()); + } else if constexpr (__is_hh_mm_ss<_ChronoT>) { + __result.tm_sec = __value.seconds().count(); + __result.tm_min = __value.minutes().count(); + // In libc++ hours is stored as a long. The type in std::tm is an int. So + // the overflow can only occur when hour uses more bits than an int + // provides. + if constexpr (sizeof(std::chrono::hours::rep) > sizeof(__result.tm_hour)) + if (__value.hours().count() > std::numeric_limits::max()) + std::__throw_format_error("Formatting hh_mm_ss, encountered an hour overflow"); + __result.tm_hour = __value.hours().count(); +# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) + } else if constexpr (same_as<_ChronoT, chrono::sys_info>) { + // Has no time information. + } else if constexpr (same_as<_ChronoT, chrono::local_info>) { + // Has no time information. +# if !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) && \ + !defined(_LIBCPP_HAS_NO_LOCALIZATION) + } else if constexpr (__is_specialization_v<_ChronoT, chrono::zoned_time>) { + return std::__convert_to_tm<_Tm>( + chrono::sys_time{__value.get_local_time().time_since_epoch()}); +# endif +# endif // !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) } else static_assert(sizeof(_ChronoT) == 0, "Add the missing type specialization"); return __result; } -#endif //if _LIBCPP_STD_VER > 17 +#endif // if _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___CHRONO_CONVERT_TO_TM_H diff --git a/include/c++/v1/__chrono/day.h b/include/c++/v1/__chrono/day.h index 35ecfcf9..7342084b 100644 --- a/include/c++/v1/__chrono/day.h +++ b/include/c++/v1/__chrono/day.h @@ -18,67 +18,82 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { class day { private: - unsigned char __d_; + unsigned char __d_; + public: - _LIBCPP_HIDE_FROM_ABI day() = default; - _LIBCPP_HIDE_FROM_ABI explicit inline constexpr day(unsigned __val) noexcept : __d_(static_cast(__val)) {} - _LIBCPP_HIDE_FROM_ABI inline constexpr day& operator++() noexcept { ++__d_; return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr day operator++(int) noexcept { day __tmp = *this; ++(*this); return __tmp; } - _LIBCPP_HIDE_FROM_ABI inline constexpr day& operator--() noexcept { --__d_; return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr day operator--(int) noexcept { day __tmp = *this; --(*this); return __tmp; } - _LIBCPP_HIDE_FROM_ABI constexpr day& operator+=(const days& __dd) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr day& operator-=(const days& __dd) noexcept; - _LIBCPP_HIDE_FROM_ABI explicit inline constexpr operator unsigned() const noexcept { return __d_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __d_ >= 1 && __d_ <= 31; } - }; - - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const day& __lhs, const day& __rhs) noexcept -{ return static_cast(__lhs) == static_cast(__rhs); } - -_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const day& __lhs, const day& __rhs) noexcept { + day() = default; + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr day(unsigned __val) noexcept + : __d_(static_cast(__val)) {} + _LIBCPP_HIDE_FROM_ABI inline constexpr day& operator++() noexcept { + ++__d_; + return *this; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr day operator++(int) noexcept { + day __tmp = *this; + ++(*this); + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr day& operator--() noexcept { + --__d_; + return *this; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr day operator--(int) noexcept { + day __tmp = *this; + --(*this); + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI constexpr day& operator+=(const days& __dd) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr day& operator-=(const days& __dd) noexcept; + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr operator unsigned() const noexcept { return __d_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __d_ >= 1 && __d_ <= 31; } +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator==(const day& __lhs, const day& __rhs) noexcept { + return static_cast(__lhs) == static_cast(__rhs); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr strong_ordering operator<=>(const day& __lhs, const day& __rhs) noexcept { return static_cast(__lhs) <=> static_cast(__rhs); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -day operator+ (const day& __lhs, const days& __rhs) noexcept -{ return day(static_cast(__lhs) + __rhs.count()); } +_LIBCPP_HIDE_FROM_ABI inline constexpr day operator+(const day& __lhs, const days& __rhs) noexcept { + return day(static_cast(__lhs) + __rhs.count()); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -day operator+ (const days& __lhs, const day& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr day operator+(const days& __lhs, const day& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -day operator- (const day& __lhs, const days& __rhs) noexcept -{ return __lhs + -__rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr day operator-(const day& __lhs, const days& __rhs) noexcept { + return __lhs + -__rhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -days operator-(const day& __lhs, const day& __rhs) noexcept -{ return days(static_cast(static_cast(__lhs)) - - static_cast(static_cast(__rhs))); } +_LIBCPP_HIDE_FROM_ABI inline constexpr days operator-(const day& __lhs, const day& __rhs) noexcept { + return days(static_cast(static_cast(__lhs)) - static_cast(static_cast(__rhs))); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -day& day::operator+=(const days& __dd) noexcept -{ *this = *this + __dd; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr day& day::operator+=(const days& __dd) noexcept { + *this = *this + __dd; + return *this; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -day& day::operator-=(const days& __dd) noexcept -{ *this = *this - __dd; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr day& day::operator-=(const days& __dd) noexcept { + *this = *this - __dd; + return *this; +} } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_DAY_H diff --git a/include/c++/v1/__chrono/duration.h b/include/c++/v1/__chrono/duration.h index afcc38b5..1e36d734 100644 --- a/include/c++/v1/__chrono/duration.h +++ b/include/c++/v1/__chrono/duration.h @@ -10,6 +10,8 @@ #ifndef _LIBCPP___CHRONO_DURATION_H #define _LIBCPP___CHRONO_DURATION_H +#include <__compare/ordering.h> +#include <__compare/three_way_comparable.h> #include <__config> #include <__type_traits/common_type.h> #include <__type_traits/enable_if.h> @@ -27,589 +29,515 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { -template > class _LIBCPP_TEMPLATE_VIS duration; +template > +class _LIBCPP_TEMPLATE_VIS duration; template struct __is_duration : false_type {}; template -struct __is_duration > : true_type {}; +struct __is_duration > : true_type {}; template -struct __is_duration > : true_type {}; +struct __is_duration > : true_type {}; template -struct __is_duration > : true_type {}; +struct __is_duration > : true_type {}; template -struct __is_duration > : true_type {}; +struct __is_duration > : true_type {}; } // namespace chrono template -struct _LIBCPP_TEMPLATE_VIS common_type, - chrono::duration<_Rep2, _Period2> > -{ - typedef chrono::duration::type, - typename __ratio_gcd<_Period1, _Period2>::type> type; +struct _LIBCPP_TEMPLATE_VIS common_type, chrono::duration<_Rep2, _Period2> > { + typedef chrono::duration::type, typename __ratio_gcd<_Period1, _Period2>::type> + type; }; namespace chrono { // duration_cast -template ::type, - bool = _Period::num == 1, - bool = _Period::den == 1> + bool = _Period::num == 1, + bool = _Period::den == 1> struct __duration_cast; template -struct __duration_cast<_FromDuration, _ToDuration, _Period, true, true> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - _ToDuration operator()(const _FromDuration& __fd) const - { - return _ToDuration(static_cast(__fd.count())); - } +struct __duration_cast<_FromDuration, _ToDuration, _Period, true, true> { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration operator()(const _FromDuration& __fd) const { + return _ToDuration(static_cast(__fd.count())); + } }; template -struct __duration_cast<_FromDuration, _ToDuration, _Period, true, false> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - _ToDuration operator()(const _FromDuration& __fd) const - { - typedef typename common_type::type _Ct; - return _ToDuration(static_cast( - static_cast<_Ct>(__fd.count()) / static_cast<_Ct>(_Period::den))); - } +struct __duration_cast<_FromDuration, _ToDuration, _Period, true, false> { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration operator()(const _FromDuration& __fd) const { + typedef typename common_type::type _Ct; + return _ToDuration( + static_cast(static_cast<_Ct>(__fd.count()) / static_cast<_Ct>(_Period::den))); + } }; template -struct __duration_cast<_FromDuration, _ToDuration, _Period, false, true> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - _ToDuration operator()(const _FromDuration& __fd) const - { - typedef typename common_type::type _Ct; - return _ToDuration(static_cast( - static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num))); - } +struct __duration_cast<_FromDuration, _ToDuration, _Period, false, true> { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration operator()(const _FromDuration& __fd) const { + typedef typename common_type::type _Ct; + return _ToDuration( + static_cast(static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num))); + } }; template -struct __duration_cast<_FromDuration, _ToDuration, _Period, false, false> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - _ToDuration operator()(const _FromDuration& __fd) const - { - typedef typename common_type::type _Ct; - return _ToDuration(static_cast( - static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num) - / static_cast<_Ct>(_Period::den))); - } +struct __duration_cast<_FromDuration, _ToDuration, _Period, false, false> { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration operator()(const _FromDuration& __fd) const { + typedef typename common_type::type _Ct; + return _ToDuration(static_cast( + static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num) / static_cast<_Ct>(_Period::den))); + } }; -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename enable_if -< - __is_duration<_ToDuration>::value, - _ToDuration ->::type -duration_cast(const duration<_Rep, _Period>& __fd) -{ - return __duration_cast, _ToDuration>()(__fd); +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration duration_cast(const duration<_Rep, _Period>& __fd) { + return __duration_cast, _ToDuration>()(__fd); } template struct _LIBCPP_TEMPLATE_VIS treat_as_floating_point : is_floating_point<_Rep> {}; -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<_Rep>::value; #endif template -struct _LIBCPP_TEMPLATE_VIS duration_values -{ +struct _LIBCPP_TEMPLATE_VIS duration_values { public: - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep zero() _NOEXCEPT {return _Rep(0);} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep max() _NOEXCEPT {return numeric_limits<_Rep>::max();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep min() _NOEXCEPT {return numeric_limits<_Rep>::lowest();} + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR _Rep zero() _NOEXCEPT { return _Rep(0); } + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR _Rep max() _NOEXCEPT { return numeric_limits<_Rep>::max(); } + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR _Rep min() _NOEXCEPT { return numeric_limits<_Rep>::lowest(); } }; -#if _LIBCPP_STD_VER > 14 -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -typename enable_if -< - __is_duration<_ToDuration>::value, - _ToDuration ->::type -floor(const duration<_Rep, _Period>& __d) -{ - _ToDuration __t = chrono::duration_cast<_ToDuration>(__d); - if (__t > __d) - __t = __t - _ToDuration{1}; - return __t; +#if _LIBCPP_STD_VER >= 17 +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration floor(const duration<_Rep, _Period>& __d) { + _ToDuration __t = chrono::duration_cast<_ToDuration>(__d); + if (__t > __d) + __t = __t - _ToDuration{1}; + return __t; } -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -typename enable_if -< - __is_duration<_ToDuration>::value, - _ToDuration ->::type -ceil(const duration<_Rep, _Period>& __d) -{ - _ToDuration __t = chrono::duration_cast<_ToDuration>(__d); - if (__t < __d) - __t = __t + _ToDuration{1}; - return __t; +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration ceil(const duration<_Rep, _Period>& __d) { + _ToDuration __t = chrono::duration_cast<_ToDuration>(__d); + if (__t < __d) + __t = __t + _ToDuration{1}; + return __t; } -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -typename enable_if -< - __is_duration<_ToDuration>::value, - _ToDuration ->::type -round(const duration<_Rep, _Period>& __d) -{ - _ToDuration __lower = chrono::floor<_ToDuration>(__d); - _ToDuration __upper = __lower + _ToDuration{1}; - auto __lowerDiff = __d - __lower; - auto __upperDiff = __upper - __d; - if (__lowerDiff < __upperDiff) - return __lower; - if (__lowerDiff > __upperDiff) - return __upper; - return __lower.count() & 1 ? __upper : __lower; +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration round(const duration<_Rep, _Period>& __d) { + _ToDuration __lower = chrono::floor<_ToDuration>(__d); + _ToDuration __upper = __lower + _ToDuration{1}; + auto __lower_diff = __d - __lower; + auto __upper_diff = __upper - __d; + if (__lower_diff < __upper_diff) + return __lower; + if (__lower_diff > __upper_diff) + return __upper; + return __lower.count() & 1 ? __upper : __lower; } #endif // duration template -class _LIBCPP_TEMPLATE_VIS duration -{ - static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration"); - static_assert(__is_ratio<_Period>::value, "Second template parameter of duration must be a std::ratio"); - static_assert(_Period::num > 0, "duration period must be positive"); - - template - struct __no_overflow +class _LIBCPP_TEMPLATE_VIS duration { + static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration"); + static_assert(__is_ratio<_Period>::value, "Second template parameter of duration must be a std::ratio"); + static_assert(_Period::num > 0, "duration period must be positive"); + + template + struct __no_overflow { + private: + static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value; + static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value; + static const intmax_t __n1 = _R1::num / __gcd_n1_n2; + static const intmax_t __d1 = _R1::den / __gcd_d1_d2; + static const intmax_t __n2 = _R2::num / __gcd_n1_n2; + static const intmax_t __d2 = _R2::den / __gcd_d1_d2; + static const intmax_t max = -((intmax_t(1) << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1); + + template + struct __mul // __overflow == false { - private: - static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value; - static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value; - static const intmax_t __n1 = _R1::num / __gcd_n1_n2; - static const intmax_t __d1 = _R1::den / __gcd_d1_d2; - static const intmax_t __n2 = _R2::num / __gcd_n1_n2; - static const intmax_t __d2 = _R2::den / __gcd_d1_d2; - static const intmax_t max = -((intmax_t(1) << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1); - - template - struct __mul // __overflow == false - { - static const intmax_t value = _Xp * _Yp; - }; - - template - struct __mul<_Xp, _Yp, true> - { - static const intmax_t value = 1; - }; - - public: - static const bool value = (__n1 <= max / __d2) && (__n2 <= max / __d1); - typedef ratio<__mul<__n1, __d2, !value>::value, - __mul<__n2, __d1, !value>::value> type; + static const intmax_t value = _Xp * _Yp; + }; + + template + struct __mul<_Xp, _Yp, true> { + static const intmax_t value = 1; }; + public: + static const bool value = (__n1 <= max / __d2) && (__n2 <= max / __d1); + typedef ratio<__mul<__n1, __d2, !value>::value, __mul<__n2, __d1, !value>::value> type; + }; + public: - typedef _Rep rep; - typedef typename _Period::type period; + typedef _Rep rep; + typedef typename _Period::type period; + private: - rep __rep_; -public: + rep __rep_; - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +public: #ifndef _LIBCPP_CXX03_LANG - duration() = default; + constexpr duration() = default; #else - duration() {} + _LIBCPP_HIDE_FROM_ABI duration() {} #endif - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - explicit duration(const _Rep2& __r, - typename enable_if - < - is_convertible::value && - (treat_as_floating_point::value || - !treat_as_floating_point<_Rep2>::value) - >::type* = nullptr) - : __rep_(__r) {} - - // conversions - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - duration(const duration<_Rep2, _Period2>& __d, - typename enable_if - < - __no_overflow<_Period2, period>::value && ( - treat_as_floating_point::value || - (__no_overflow<_Period2, period>::type::den == 1 && - !treat_as_floating_point<_Rep2>::value)) - >::type* = nullptr) - : __rep_(chrono::duration_cast(__d).count()) {} - - // observer - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR rep count() const {return __rep_;} - - // arithmetic - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR typename common_type::type operator+() const {return typename common_type::type(*this);} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR typename common_type::type operator-() const {return typename common_type::type(-__rep_);} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator++() {++__rep_; return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration operator++(int) {return duration(__rep_++);} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator--() {--__rep_; return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration operator--(int) {return duration(__rep_--);} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator+=(const duration& __d) {__rep_ += __d.count(); return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator-=(const duration& __d) {__rep_ -= __d.count(); return *this;} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator*=(const rep& __rhs) {__rep_ *= __rhs; return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator/=(const rep& __rhs) {__rep_ /= __rhs; return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator%=(const rep& __rhs) {__rep_ %= __rhs; return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator%=(const duration& __rhs) {__rep_ %= __rhs.count(); return *this;} - - // special values - - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration zero() _NOEXCEPT {return duration(duration_values::zero());} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration min() _NOEXCEPT {return duration(duration_values::min());} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration max() _NOEXCEPT {return duration(duration_values::max());} + template ::value && + (treat_as_floating_point::value || !treat_as_floating_point<_Rep2>::value), + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR explicit duration(const _Rep2& __r) : __rep_(__r) {} + + // conversions + template ::value && (treat_as_floating_point::value || + (__no_overflow<_Period2, period>::type::den == 1 && + !treat_as_floating_point<_Rep2>::value)), + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR duration(const duration<_Rep2, _Period2>& __d) + : __rep_(chrono::duration_cast(__d).count()) {} + + // observer + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR rep count() const { return __rep_; } + + // arithmetic + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR typename common_type::type operator+() const { + return typename common_type::type(*this); + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR typename common_type::type operator-() const { + return typename common_type::type(-__rep_); + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator++() { + ++__rep_; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 duration operator++(int) { return duration(__rep_++); } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator--() { + --__rep_; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 duration operator--(int) { return duration(__rep_--); } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator+=(const duration& __d) { + __rep_ += __d.count(); + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator-=(const duration& __d) { + __rep_ -= __d.count(); + return *this; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator*=(const rep& __rhs) { + __rep_ *= __rhs; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator/=(const rep& __rhs) { + __rep_ /= __rhs; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator%=(const rep& __rhs) { + __rep_ %= __rhs; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator%=(const duration& __rhs) { + __rep_ %= __rhs.count(); + return *this; + } + + // special values + + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR duration zero() _NOEXCEPT { + return duration(duration_values::zero()); + } + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR duration min() _NOEXCEPT { + return duration(duration_values::min()); + } + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR duration max() _NOEXCEPT { + return duration(duration_values::max()); + } }; -typedef duration nanoseconds; -typedef duration microseconds; -typedef duration milliseconds; -typedef duration seconds; -typedef duration< long, ratio< 60> > minutes; -typedef duration< long, ratio<3600> > hours; -#if _LIBCPP_STD_VER > 17 -typedef duration< int, ratio_multiply, hours::period>> days; -typedef duration< int, ratio_multiply, days::period>> weeks; -typedef duration< int, ratio_multiply, days::period>> years; -typedef duration< int, ratio_divide>> months; +typedef duration nanoseconds; +typedef duration microseconds; +typedef duration milliseconds; +typedef duration seconds; +typedef duration< long, ratio< 60> > minutes; +typedef duration< long, ratio<3600> > hours; +#if _LIBCPP_STD_VER >= 20 +typedef duration< int, ratio_multiply, hours::period>> days; +typedef duration< int, ratio_multiply, days::period>> weeks; +typedef duration< int, ratio_multiply, days::period>> years; +typedef duration< int, ratio_divide>> months; #endif // Duration == template -struct __duration_eq -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const - { - typedef typename common_type<_LhsDuration, _RhsDuration>::type _Ct; - return _Ct(__lhs).count() == _Ct(__rhs).count(); - } +struct __duration_eq { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const { + typedef typename common_type<_LhsDuration, _RhsDuration>::type _Ct; + return _Ct(__lhs).count() == _Ct(__rhs).count(); + } }; template -struct __duration_eq<_LhsDuration, _LhsDuration> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const - {return __lhs.count() == __rhs.count();} +struct __duration_eq<_LhsDuration, _LhsDuration> { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const { + return __lhs.count() == __rhs.count(); + } }; template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator==(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return __duration_eq, duration<_Rep2, _Period2> >()(__lhs, __rhs); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool +operator==(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + return __duration_eq, duration<_Rep2, _Period2> >()(__lhs, __rhs); } +#if _LIBCPP_STD_VER <= 17 + // Duration != template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator!=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return !(__lhs == __rhs); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool +operator!=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + return !(__lhs == __rhs); } +#endif // _LIBCPP_STD_VER <= 17 + // Duration < template -struct __duration_lt -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const - { - typedef typename common_type<_LhsDuration, _RhsDuration>::type _Ct; - return _Ct(__lhs).count() < _Ct(__rhs).count(); - } +struct __duration_lt { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const { + typedef typename common_type<_LhsDuration, _RhsDuration>::type _Ct; + return _Ct(__lhs).count() < _Ct(__rhs).count(); + } }; template -struct __duration_lt<_LhsDuration, _LhsDuration> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const - {return __lhs.count() < __rhs.count();} +struct __duration_lt<_LhsDuration, _LhsDuration> { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const { + return __lhs.count() < __rhs.count(); + } }; template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator< (const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return __duration_lt, duration<_Rep2, _Period2> >()(__lhs, __rhs); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool +operator<(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + return __duration_lt, duration<_Rep2, _Period2> >()(__lhs, __rhs); } // Duration > template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator> (const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return __rhs < __lhs; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool +operator>(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + return __rhs < __lhs; } // Duration <= template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator<=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return !(__rhs < __lhs); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool +operator<=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + return !(__rhs < __lhs); } // Duration >= template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator>=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return !(__lhs < __rhs); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool +operator>=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + return !(__lhs < __rhs); +} + +#if _LIBCPP_STD_VER >= 20 + +template + requires three_way_comparable> +_LIBCPP_HIDE_FROM_ABI constexpr auto +operator<=>(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + using _Ct = common_type_t, duration<_Rep2, _Period2>>; + return _Ct(__lhs).count() <=> _Ct(__rhs).count(); } +#endif // _LIBCPP_STD_VER >= 20 + // Duration + template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR typename common_type, duration<_Rep2, _Period2> >::type -operator+(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; - return _Cd(_Cd(__lhs).count() + _Cd(__rhs).count()); +operator+(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; + return _Cd(_Cd(__lhs).count() + _Cd(__rhs).count()); } // Duration - template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR typename common_type, duration<_Rep2, _Period2> >::type -operator-(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; - return _Cd(_Cd(__lhs).count() - _Cd(__rhs).count()); +operator-(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; + return _Cd(_Cd(__lhs).count() - _Cd(__rhs).count()); } // Duration * -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename enable_if -< - is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value, - duration::type, _Period> ->::type -operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) -{ - typedef typename common_type<_Rep1, _Rep2>::type _Cr; - typedef duration<_Cr, _Period> _Cd; - return _Cd(_Cd(__d).count() * static_cast<_Cr>(__s)); +template ::type>::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR duration::type, _Period> +operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) { + typedef typename common_type<_Rep1, _Rep2>::type _Cr; + typedef duration<_Cr, _Period> _Cd; + return _Cd(_Cd(__d).count() * static_cast<_Cr>(__s)); } -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename enable_if -< - is_convertible<_Rep1, typename common_type<_Rep1, _Rep2>::type>::value, - duration::type, _Period> ->::type -operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) -{ - return __d * __s; +template ::type>::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR duration::type, _Period> +operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) { + return __d * __s; } // Duration / -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename enable_if -< - !__is_duration<_Rep2>::value && - is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value, - duration::type, _Period> ->::type -operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) -{ - typedef typename common_type<_Rep1, _Rep2>::type _Cr; - typedef duration<_Cr, _Period> _Cd; - return _Cd(_Cd(__d).count() / static_cast<_Cr>(__s)); +template ::value && + is_convertible::type>::value, + int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR duration::type, _Period> +operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) { + typedef typename common_type<_Rep1, _Rep2>::type _Cr; + typedef duration<_Cr, _Period> _Cd; + return _Cd(_Cd(__d).count() / static_cast<_Cr>(__s)); } template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename common_type<_Rep1, _Rep2>::type -operator/(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef typename common_type, duration<_Rep2, _Period2> >::type _Ct; - return _Ct(__lhs).count() / _Ct(__rhs).count(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR typename common_type<_Rep1, _Rep2>::type +operator/(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + typedef typename common_type, duration<_Rep2, _Period2> >::type _Ct; + return _Ct(__lhs).count() / _Ct(__rhs).count(); } // Duration % -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename enable_if -< - !__is_duration<_Rep2>::value && - is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value, - duration::type, _Period> ->::type -operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) -{ - typedef typename common_type<_Rep1, _Rep2>::type _Cr; - typedef duration<_Cr, _Period> _Cd; - return _Cd(_Cd(__d).count() % static_cast<_Cr>(__s)); +template ::value && + is_convertible::type>::value, + int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR duration::type, _Period> +operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) { + typedef typename common_type<_Rep1, _Rep2>::type _Cr; + typedef duration<_Cr, _Period> _Cd; + return _Cd(_Cd(__d).count() % static_cast<_Cr>(__s)); } template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR typename common_type, duration<_Rep2, _Period2> >::type -operator%(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef typename common_type<_Rep1, _Rep2>::type _Cr; - typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; - return _Cd(static_cast<_Cr>(_Cd(__lhs).count()) % static_cast<_Cr>(_Cd(__rhs).count())); +operator%(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + typedef typename common_type<_Rep1, _Rep2>::type _Cr; + typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; + return _Cd(static_cast<_Cr>(_Cd(__lhs).count()) % static_cast<_Cr>(_Cd(__rhs).count())); } } // namespace chrono -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 // Suffixes for duration literals [time.duration.literals] -inline namespace literals -{ - inline namespace chrono_literals - { - - _LIBCPP_HIDE_FROM_ABI constexpr chrono::hours operator""h(unsigned long long __h) - { - return chrono::hours(static_cast(__h)); - } - - _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration> operator""h(long double __h) - { - return chrono::duration>(__h); - } - - - _LIBCPP_HIDE_FROM_ABI constexpr chrono::minutes operator""min(unsigned long long __m) - { - return chrono::minutes(static_cast(__m)); - } - - _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration> operator""min(long double __m) - { - return chrono::duration> (__m); - } +inline namespace literals { +inline namespace chrono_literals { +_LIBCPP_HIDE_FROM_ABI constexpr chrono::hours operator""h(unsigned long long __h) { + return chrono::hours(static_cast(__h)); +} - _LIBCPP_HIDE_FROM_ABI constexpr chrono::seconds operator""s(unsigned long long __s) - { - return chrono::seconds(static_cast(__s)); - } +_LIBCPP_HIDE_FROM_ABI constexpr chrono::duration> operator""h(long double __h) { + return chrono::duration>(__h); +} - _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""s(long double __s) - { - return chrono::duration (__s); - } +_LIBCPP_HIDE_FROM_ABI constexpr chrono::minutes operator""min(unsigned long long __m) { + return chrono::minutes(static_cast(__m)); +} +_LIBCPP_HIDE_FROM_ABI constexpr chrono::duration> operator""min(long double __m) { + return chrono::duration>(__m); +} - _LIBCPP_HIDE_FROM_ABI constexpr chrono::milliseconds operator""ms(unsigned long long __ms) - { - return chrono::milliseconds(static_cast(__ms)); - } +_LIBCPP_HIDE_FROM_ABI constexpr chrono::seconds operator""s(unsigned long long __s) { + return chrono::seconds(static_cast(__s)); +} - _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""ms(long double __ms) - { - return chrono::duration(__ms); - } +_LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""s(long double __s) { + return chrono::duration(__s); +} +_LIBCPP_HIDE_FROM_ABI constexpr chrono::milliseconds operator""ms(unsigned long long __ms) { + return chrono::milliseconds(static_cast(__ms)); +} - _LIBCPP_HIDE_FROM_ABI constexpr chrono::microseconds operator""us(unsigned long long __us) - { - return chrono::microseconds(static_cast(__us)); - } +_LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""ms(long double __ms) { + return chrono::duration(__ms); +} - _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""us(long double __us) - { - return chrono::duration (__us); - } +_LIBCPP_HIDE_FROM_ABI constexpr chrono::microseconds operator""us(unsigned long long __us) { + return chrono::microseconds(static_cast(__us)); +} +_LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""us(long double __us) { + return chrono::duration(__us); +} - _LIBCPP_HIDE_FROM_ABI constexpr chrono::nanoseconds operator""ns(unsigned long long __ns) - { - return chrono::nanoseconds(static_cast(__ns)); - } +_LIBCPP_HIDE_FROM_ABI constexpr chrono::nanoseconds operator""ns(unsigned long long __ns) { + return chrono::nanoseconds(static_cast(__ns)); +} - _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""ns(long double __ns) - { - return chrono::duration (__ns); - } +_LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""ns(long double __ns) { + return chrono::duration(__ns); +} } // namespace chrono_literals } // namespace literals namespace chrono { // hoist the literals into namespace std::chrono - using namespace literals::chrono_literals; +using namespace literals::chrono_literals; } // namespace chrono -#endif // _LIBCPP_STD_VER > 11 +#endif // _LIBCPP_STD_VER >= 14 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__chrono/file_clock.h b/include/c++/v1/__chrono/file_clock.h index ef62b832..4dd3f88c 100644 --- a/include/c++/v1/__chrono/file_clock.h +++ b/include/c++/v1/__chrono/file_clock.h @@ -10,7 +10,6 @@ #ifndef _LIBCPP___CHRONO_FILE_CLOCK_H #define _LIBCPP___CHRONO_FILE_CLOCK_H -#include <__availability> #include <__chrono/duration.h> #include <__chrono/system_clock.h> #include <__chrono/time_point.h> @@ -27,57 +26,53 @@ struct _FilesystemClock; _LIBCPP_END_NAMESPACE_FILESYSTEM #endif // !_LIBCPP_CXX03_LANG -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { // [time.clock.file], type file_clock -using file_clock = _VSTD_FS::_FilesystemClock; +using file_clock = filesystem::_FilesystemClock; -template +template using file_time = time_point; } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #ifndef _LIBCPP_CXX03_LANG _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM struct _FilesystemClock { -#if !defined(_LIBCPP_HAS_NO_INT128) +# if !defined(_LIBCPP_HAS_NO_INT128) typedef __int128_t rep; typedef nano period; -#else +# else typedef long long rep; typedef nano period; -#endif +# endif typedef chrono::duration duration; typedef chrono::time_point<_FilesystemClock> time_point; - _LIBCPP_EXPORTED_FROM_ABI - static _LIBCPP_CONSTEXPR_SINCE_CXX14 const bool is_steady = false; + _LIBCPP_EXPORTED_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 const bool is_steady = false; - _LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_FUNC_VIS static time_point now() noexcept; + _LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY _LIBCPP_EXPORTED_FROM_ABI static time_point now() noexcept; -#if _LIBCPP_STD_VER > 17 +# if _LIBCPP_STD_VER >= 20 template - _LIBCPP_HIDE_FROM_ABI - static chrono::sys_time<_Duration> to_sys(const chrono::file_time<_Duration>& __t) { + _LIBCPP_HIDE_FROM_ABI static chrono::sys_time<_Duration> to_sys(const chrono::file_time<_Duration>& __t) { return chrono::sys_time<_Duration>(__t.time_since_epoch()); } template - _LIBCPP_HIDE_FROM_ABI - static chrono::file_time<_Duration> from_sys(const chrono::sys_time<_Duration>& __t) { + _LIBCPP_HIDE_FROM_ABI static chrono::file_time<_Duration> from_sys(const chrono::sys_time<_Duration>& __t) { return chrono::file_time<_Duration>(__t.time_since_epoch()); } -#endif // _LIBCPP_STD_VER > 17 +# endif // _LIBCPP_STD_VER >= 20 }; _LIBCPP_END_NAMESPACE_FILESYSTEM #endif // !_LIBCPP_CXX03_LANG diff --git a/include/c++/v1/__chrono/formatter.h b/include/c++/v1/__chrono/formatter.h index 2015783a..449c415e 100644 --- a/include/c++/v1/__chrono/formatter.h +++ b/include/c++/v1/__chrono/formatter.h @@ -10,23 +10,30 @@ #ifndef _LIBCPP___CHRONO_FORMATTER_H #define _LIBCPP___CHRONO_FORMATTER_H +#include <__algorithm/ranges_copy.h> #include <__chrono/calendar.h> +#include <__chrono/concepts.h> #include <__chrono/convert_to_tm.h> #include <__chrono/day.h> #include <__chrono/duration.h> +#include <__chrono/file_clock.h> #include <__chrono/hh_mm_ss.h> +#include <__chrono/local_info.h> #include <__chrono/month.h> #include <__chrono/month_weekday.h> #include <__chrono/monthday.h> #include <__chrono/ostream.h> #include <__chrono/parser_std_format_spec.h> #include <__chrono/statically_widen.h> +#include <__chrono/sys_info.h> +#include <__chrono/system_clock.h> #include <__chrono/time_point.h> #include <__chrono/weekday.h> #include <__chrono/year.h> #include <__chrono/year_month.h> #include <__chrono/year_month_day.h> #include <__chrono/year_month_weekday.h> +#include <__chrono/zoned_time.h> #include <__concepts/arithmetic.h> #include <__concepts/same_as.h> #include <__config> @@ -35,13 +42,14 @@ #include <__format/format_functions.h> #include <__format/format_parse_context.h> #include <__format/formatter.h> -#include <__format/formatter_output.h> #include <__format/parser_std_format_spec.h> +#include <__format/write_escaped.h> #include <__memory/addressof.h> +#include <__type_traits/is_specialization.h> #include #include +#include #include -#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -50,7 +58,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) +#if _LIBCPP_STD_VER >= 20 namespace __formatter { @@ -75,13 +83,18 @@ namespace __formatter { // For tiny ratios it's not possible to convert a duration to a hh_mm_ss. This // fails compile-time due to the limited precision of the ratio (64-bit is too // small). Therefore a duration uses its own conversion. -template - requires(chrono::__is_duration<_Tp>::value) -_LIBCPP_HIDE_FROM_ABI void __format_sub_seconds(const _Tp& __value, basic_stringstream<_CharT>& __sstr) { +template +_LIBCPP_HIDE_FROM_ABI void +__format_sub_seconds(basic_stringstream<_CharT>& __sstr, const chrono::duration<_Rep, _Period>& __value) { __sstr << std::use_facet>(__sstr.getloc()).decimal_point(); + using __duration = chrono::duration<_Rep, _Period>; + auto __fraction = __value - chrono::duration_cast(__value); - if constexpr (chrono::treat_as_floating_point_v) + // Converts a negative fraction to its positive value. + if (__value < chrono::seconds{0} && __fraction != __duration{0}) + __fraction += chrono::seconds{1}; + if constexpr (chrono::treat_as_floating_point_v<_Rep>) // When the floating-point value has digits itself they are ignored based // on the wording in [tab:time.format.spec] // If the precision of the input cannot be exactly represented with @@ -96,25 +109,64 @@ _LIBCPP_HIDE_FROM_ABI void __format_sub_seconds(const _Tp& __value, basic_string // https://godbolt.org/z/6dsbnW8ba std::format_to(std::ostreambuf_iterator<_CharT>{__sstr}, _LIBCPP_STATICALLY_WIDEN(_CharT, "{:0{}.0f}"), - __fraction.count(), - chrono::hh_mm_ss<_Tp>::fractional_width); + chrono::duration_cast::precision>(__fraction).count(), + chrono::hh_mm_ss<__duration>::fractional_width); + else + std::format_to(std::ostreambuf_iterator<_CharT>{__sstr}, + _LIBCPP_STATICALLY_WIDEN(_CharT, "{:0{}}"), + chrono::duration_cast::precision>(__fraction).count(), + chrono::hh_mm_ss<__duration>::fractional_width); +} + +template +_LIBCPP_HIDE_FROM_ABI void __format_sub_seconds(basic_stringstream<_CharT>& __sstr, const _Tp& __value) { + __formatter::__format_sub_seconds(__sstr, __value.time_since_epoch()); +} + +template +_LIBCPP_HIDE_FROM_ABI void +__format_sub_seconds(basic_stringstream<_CharT>& __sstr, const chrono::hh_mm_ss<_Duration>& __value) { + __sstr << std::use_facet>(__sstr.getloc()).decimal_point(); + if constexpr (chrono::treat_as_floating_point_v) + std::format_to(std::ostreambuf_iterator<_CharT>{__sstr}, + _LIBCPP_STATICALLY_WIDEN(_CharT, "{:0{}.0f}"), + __value.subseconds().count(), + __value.fractional_width); else std::format_to(std::ostreambuf_iterator<_CharT>{__sstr}, _LIBCPP_STATICALLY_WIDEN(_CharT, "{:0{}}"), - __fraction.count(), - chrono::hh_mm_ss<_Tp>::fractional_width); + __value.subseconds().count(), + __value.fractional_width); +} + +# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) && !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && \ + !defined(_LIBCPP_HAS_NO_FILESYSTEM) && !defined(_LIBCPP_HAS_NO_LOCALIZATION) +template +_LIBCPP_HIDE_FROM_ABI void +__format_sub_seconds(basic_stringstream<_CharT>& __sstr, const chrono::zoned_time<_Duration, _TimeZonePtr>& __value) { + __formatter::__format_sub_seconds(__sstr, __value.get_local_time().time_since_epoch()); } +# endif template consteval bool __use_fraction() { - if constexpr (chrono::__is_duration<_Tp>::value) + if constexpr (__is_time_point<_Tp>) + return chrono::hh_mm_ss::fractional_width; +# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) && !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && \ + !defined(_LIBCPP_HAS_NO_FILESYSTEM) && !defined(_LIBCPP_HAS_NO_LOCALIZATION) + else if constexpr (__is_specialization_v<_Tp, chrono::zoned_time>) + return chrono::hh_mm_ss::fractional_width; +# endif + else if constexpr (chrono::__is_duration<_Tp>::value) return chrono::hh_mm_ss<_Tp>::fractional_width; + else if constexpr (__is_hh_mm_ss<_Tp>) + return _Tp::fractional_width; else return false; } template -_LIBCPP_HIDE_FROM_ABI void __format_year(int __year, basic_stringstream<_CharT>& __sstr) { +_LIBCPP_HIDE_FROM_ABI void __format_year(basic_stringstream<_CharT>& __sstr, int __year) { if (__year < 0) { __sstr << _CharT('-'); __year = -__year; @@ -130,7 +182,7 @@ _LIBCPP_HIDE_FROM_ABI void __format_year(int __year, basic_stringstream<_CharT>& } template -_LIBCPP_HIDE_FROM_ABI void __format_century(int __year, basic_stringstream<_CharT>& __sstr) { +_LIBCPP_HIDE_FROM_ABI void __format_century(basic_stringstream<_CharT>& __sstr, int __year) { // TODO FMT Write an issue // [tab:time.format.spec] // %C The year divided by 100 using floored division. If the result is a @@ -141,10 +193,56 @@ _LIBCPP_HIDE_FROM_ABI void __format_century(int __year, basic_stringstream<_Char __sstr << std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:02}"), __century); } +// Implements the %z format specifier according to [tab:time.format.spec], where +// '__modifier' signals %Oz or %Ez were used. (Both modifiers behave the same, +// so there is no need to distinguish between them.) +template +_LIBCPP_HIDE_FROM_ABI void +__format_zone_offset(basic_stringstream<_CharT>& __sstr, chrono::seconds __offset, bool __modifier) { + if (__offset < 0s) { + __sstr << _CharT('-'); + __offset = -__offset; + } else { + __sstr << _CharT('+'); + } + + chrono::hh_mm_ss __hms{__offset}; + std::ostreambuf_iterator<_CharT> __out_it{__sstr}; + // Note HMS does not allow formatting hours > 23, but the offset is not limited to 24H. + std::format_to(__out_it, _LIBCPP_STATICALLY_WIDEN(_CharT, "{:02}"), __hms.hours().count()); + if (__modifier) + __sstr << _CharT(':'); + std::format_to(__out_it, _LIBCPP_STATICALLY_WIDEN(_CharT, "{:02}"), __hms.minutes().count()); +} + +// Helper to store the time zone information needed for formatting. +struct _LIBCPP_HIDE_FROM_ABI __time_zone { + // Typically these abbreviations are short and fit in the string's internal + // buffer. + string __abbrev; + chrono::seconds __offset; +}; + +template +_LIBCPP_HIDE_FROM_ABI __time_zone __convert_to_time_zone([[maybe_unused]] const _Tp& __value) { +# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) + if constexpr (same_as<_Tp, chrono::sys_info>) + return {__value.abbrev, __value.offset}; +# if !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) && \ + !defined(_LIBCPP_HAS_NO_LOCALIZATION) + else if constexpr (__is_specialization_v<_Tp, chrono::zoned_time>) + return __formatter::__convert_to_time_zone(__value.get_info()); +# endif + else +# endif // !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) + return {"UTC", chrono::seconds{0}}; +} + template _LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( - const _Tp& __value, basic_stringstream<_CharT>& __sstr, basic_string_view<_CharT> __chrono_specs) { + basic_stringstream<_CharT>& __sstr, const _Tp& __value, basic_string_view<_CharT> __chrono_specs) { tm __t = std::__convert_to_tm(__value); + __time_zone __z = __formatter::__convert_to_time_zone(__value); const auto& __facet = std::use_facet>(__sstr.getloc()); for (auto __it = __chrono_specs.begin(); __it != __chrono_specs.end(); ++__it) { if (*__it == _CharT('%')) { @@ -167,9 +265,10 @@ _LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( // strftime's output is only defined in the range [00, 99]. int __year = __t.tm_year + 1900; if (__year < 1000 || __year > 9999) - __formatter::__format_century(__year, __sstr); + __formatter::__format_century(__sstr, __year); else - __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), __s, __it + 1); + __facet.put( + {__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); } break; case _CharT('j'): @@ -180,7 +279,8 @@ _LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( // an intemediate step. __sstr << chrono::duration_cast(chrono::duration_cast(__value)).count(); else - __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), __s, __it + 1); + __facet.put( + {__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); break; case _CharT('q'): @@ -208,9 +308,10 @@ _LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( case _CharT('S'): case _CharT('T'): - __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), __s, __it + 1); + __facet.put( + {__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); if constexpr (__use_fraction<_Tp>()) - __formatter::__format_sub_seconds(__value, __sstr); + __formatter::__format_sub_seconds(__sstr, __value); break; // Unlike time_put and strftime the formatting library requires %Y @@ -240,29 +341,36 @@ _LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( // // TODO FMT evaluate the comment above. -# if defined(__GLIBC__) || defined(_AIX) +# if defined(__GLIBC__) || defined(_AIX) || defined(_WIN32) case _CharT('y'): // Glibc fails for negative values, AIX for positive values too. __sstr << std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:02}"), (std::abs(__t.tm_year + 1900)) % 100); break; -# endif // defined(__GLIBC__) || defined(_AIX) +# endif // defined(__GLIBC__) || defined(_AIX) || defined(_WIN32) - case _CharT('Y'): { - int __year = __t.tm_year + 1900; - if (__year < 1000) - __formatter::__format_year(__year, __sstr); - else - __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), __s, __it + 1); - } break; + case _CharT('Y'): + // Depending on the platform's libc the range of supported years is + // limited. Intead of of testing all conditions use the internal + // implementation unconditionally. + __formatter::__format_year(__sstr, __t.tm_year + 1900); + break; - case _CharT('F'): { - int __year = __t.tm_year + 1900; - if (__year < 1000) { - __formatter::__format_year(__year, __sstr); - __sstr << std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "-{:02}-{:02}"), __t.tm_mon + 1, __t.tm_mday); - } else - __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), __s, __it + 1); - } break; + case _CharT('F'): + // Depending on the platform's libc the range of supported years is + // limited. Instead of testing all conditions use the internal + // implementation unconditionally. + __formatter::__format_year(__sstr, __t.tm_year + 1900); + __sstr << std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "-{:02}-{:02}"), __t.tm_mon + 1, __t.tm_mday); + break; + + case _CharT('z'): + __formatter::__format_zone_offset(__sstr, __z.__offset, false); + break; + + case _CharT('Z'): + // __abbrev is always a char so the copy may convert. + ranges::copy(__z.__abbrev, std::ostreambuf_iterator<_CharT>{__sstr}); + break; case _CharT('O'): if constexpr (__use_fraction<_Tp>()) { @@ -271,17 +379,25 @@ _LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( // fractional part should be formatted. if (*(__it + 1) == 'S') { ++__it; - __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), __s, __it + 1); - __formatter::__format_sub_seconds(__value, __sstr); + __facet.put( + {__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); + __formatter::__format_sub_seconds(__sstr, __value); break; } } + + // Oz produces the same output as Ez below. [[fallthrough]]; case _CharT('E'): ++__it; + if (*__it == 'z') { + __formatter::__format_zone_offset(__sstr, __z.__offset, true); + break; + } [[fallthrough]]; default: - __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), __s, __it + 1); + __facet.put( + {__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); break; } } else { @@ -292,7 +408,9 @@ _LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( template _LIBCPP_HIDE_FROM_ABI constexpr bool __weekday_ok(const _Tp& __value) { - if constexpr (same_as<_Tp, chrono::day>) + if constexpr (__is_time_point<_Tp>) + return true; + else if constexpr (same_as<_Tp, chrono::day>) return true; else if constexpr (same_as<_Tp, chrono::month>) return __value.ok(); @@ -322,13 +440,28 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool __weekday_ok(const _Tp& __value) { return __value.weekday().ok(); else if constexpr (same_as<_Tp, chrono::year_month_weekday_last>) return __value.weekday().ok(); + else if constexpr (__is_hh_mm_ss<_Tp>) + return true; +# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) + else if constexpr (same_as<_Tp, chrono::sys_info>) + return true; + else if constexpr (same_as<_Tp, chrono::local_info>) + return true; +# if !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) && \ + !defined(_LIBCPP_HAS_NO_LOCALIZATION) + else if constexpr (__is_specialization_v<_Tp, chrono::zoned_time>) + return true; +# endif +# endif // !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) else static_assert(sizeof(_Tp) == 0, "Add the missing type specialization"); } template _LIBCPP_HIDE_FROM_ABI constexpr bool __weekday_name_ok(const _Tp& __value) { - if constexpr (same_as<_Tp, chrono::day>) + if constexpr (__is_time_point<_Tp>) + return true; + else if constexpr (same_as<_Tp, chrono::day>) return true; else if constexpr (same_as<_Tp, chrono::month>) return __value.ok(); @@ -358,13 +491,28 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool __weekday_name_ok(const _Tp& __value) { return __value.weekday().ok(); else if constexpr (same_as<_Tp, chrono::year_month_weekday_last>) return __value.weekday().ok(); + else if constexpr (__is_hh_mm_ss<_Tp>) + return true; +# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) + else if constexpr (same_as<_Tp, chrono::sys_info>) + return true; + else if constexpr (same_as<_Tp, chrono::local_info>) + return true; +# if !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) && \ + !defined(_LIBCPP_HAS_NO_LOCALIZATION) + else if constexpr (__is_specialization_v<_Tp, chrono::zoned_time>) + return true; +# endif +# endif // !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) else static_assert(sizeof(_Tp) == 0, "Add the missing type specialization"); } template _LIBCPP_HIDE_FROM_ABI constexpr bool __date_ok(const _Tp& __value) { - if constexpr (same_as<_Tp, chrono::day>) + if constexpr (__is_time_point<_Tp>) + return true; + else if constexpr (same_as<_Tp, chrono::day>) return true; else if constexpr (same_as<_Tp, chrono::month>) return __value.ok(); @@ -394,13 +542,28 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool __date_ok(const _Tp& __value) { return __value.ok(); else if constexpr (same_as<_Tp, chrono::year_month_weekday_last>) return __value.ok(); + else if constexpr (__is_hh_mm_ss<_Tp>) + return true; +# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) + else if constexpr (same_as<_Tp, chrono::sys_info>) + return true; + else if constexpr (same_as<_Tp, chrono::local_info>) + return true; +# if !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) && \ + !defined(_LIBCPP_HAS_NO_LOCALIZATION) + else if constexpr (__is_specialization_v<_Tp, chrono::zoned_time>) + return true; +# endif +# endif // !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) else static_assert(sizeof(_Tp) == 0, "Add the missing type specialization"); } template _LIBCPP_HIDE_FROM_ABI constexpr bool __month_name_ok(const _Tp& __value) { - if constexpr (same_as<_Tp, chrono::day>) + if constexpr (__is_time_point<_Tp>) + return true; + else if constexpr (same_as<_Tp, chrono::day>) return true; else if constexpr (same_as<_Tp, chrono::month>) return __value.ok(); @@ -430,16 +593,29 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool __month_name_ok(const _Tp& __value) { return __value.month().ok(); else if constexpr (same_as<_Tp, chrono::year_month_weekday_last>) return __value.month().ok(); + else if constexpr (__is_hh_mm_ss<_Tp>) + return true; +# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) + else if constexpr (same_as<_Tp, chrono::sys_info>) + return true; + else if constexpr (same_as<_Tp, chrono::local_info>) + return true; +# if !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) && \ + !defined(_LIBCPP_HAS_NO_LOCALIZATION) + else if constexpr (__is_specialization_v<_Tp, chrono::zoned_time>) + return true; +# endif +# endif // !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) else static_assert(sizeof(_Tp) == 0, "Add the missing type specialization"); } -template +template _LIBCPP_HIDE_FROM_ABI auto __format_chrono(const _Tp& __value, - auto& __ctx, + _FormatContext& __ctx, __format_spec::__parsed_specifications<_CharT> __specs, - basic_string_view<_CharT> __chrono_specs) -> decltype(__ctx.out()) { + basic_string_view<_CharT> __chrono_specs) { basic_stringstream<_CharT> __sstr; // [time.format]/2 // 2.1 - the "C" locale if the L option is not present in chrono-format-spec, otherwise @@ -455,51 +631,79 @@ __format_chrono(const _Tp& __value, __sstr << __value; else { if constexpr (chrono::__is_duration<_Tp>::value) { - if (__value < __value.zero()) - __sstr << _CharT('-'); - __formatter::__format_chrono_using_chrono_specs(chrono::abs(__value), __sstr, __chrono_specs); + // A duration can be a user defined arithmetic type. Users may specialize + // numeric_limits, but they may not specialize is_signed. + if constexpr (numeric_limits::is_signed) { + if (__value < __value.zero()) { + __sstr << _CharT('-'); + __formatter::__format_chrono_using_chrono_specs(__sstr, -__value, __chrono_specs); + } else + __formatter::__format_chrono_using_chrono_specs(__sstr, __value, __chrono_specs); + } else + __formatter::__format_chrono_using_chrono_specs(__sstr, __value, __chrono_specs); // TODO FMT When keeping the precision it will truncate the string. // Note that the behaviour what the precision does isn't specified. __specs.__precision_ = -1; } else { // Test __weekday_name_ before __weekday_ to give a better error. if (__specs.__chrono_.__weekday_name_ && !__formatter::__weekday_name_ok(__value)) - std::__throw_format_error("formatting a weekday name needs a valid weekday"); + std::__throw_format_error("Formatting a weekday name needs a valid weekday"); if (__specs.__chrono_.__weekday_ && !__formatter::__weekday_ok(__value)) - std::__throw_format_error("formatting a weekday needs a valid weekday"); + std::__throw_format_error("Formatting a weekday needs a valid weekday"); if (__specs.__chrono_.__day_of_year_ && !__formatter::__date_ok(__value)) - std::__throw_format_error("formatting a day of year needs a valid date"); + std::__throw_format_error("Formatting a day of year needs a valid date"); if (__specs.__chrono_.__week_of_year_ && !__formatter::__date_ok(__value)) - std::__throw_format_error("formatting a week of year needs a valid date"); + std::__throw_format_error("Formatting a week of year needs a valid date"); if (__specs.__chrono_.__month_name_ && !__formatter::__month_name_ok(__value)) - std::__throw_format_error("formatting a month name from an invalid month number"); + std::__throw_format_error("Formatting a month name from an invalid month number"); + + if constexpr (__is_hh_mm_ss<_Tp>) { + // Note this is a pedantic intepretation of the Standard. A hh_mm_ss + // is no longer a time_of_day and can store an arbitrary number of + // hours. A number of hours in a 12 or 24 hour clock can't represent + // 24 hours or more. The functions std::chrono::make12 and + // std::chrono::make24 reaffirm this view point. + // + // Interestingly this will be the only output stream function that + // throws. + // + // TODO FMT The wording probably needs to be adapted to + // - The displayed hours is hh_mm_ss.hours() % 24 + // - It should probably allow %j in the same fashion as duration. + // - The stream formatter should change its output when hours >= 24 + // - Write it as not valid, + // - or write the number of days. + if (__specs.__chrono_.__hour_ && __value.hours().count() > 23) + std::__throw_format_error("Formatting a hour needs a valid value"); + + if (__value.is_negative()) + __sstr << _CharT('-'); + } - __formatter::__format_chrono_using_chrono_specs(__value, __sstr, __chrono_specs); + __formatter::__format_chrono_using_chrono_specs(__sstr, __value, __chrono_specs); } } - // TODO FMT Use the stringstream's view after P0408R7 has been implemented. - basic_string<_CharT> __str = __sstr.str(); - return __formatter::__write_string(basic_string_view<_CharT>{__str}, __ctx.out(), __specs); + return __formatter::__write_string(__sstr.view(), __ctx.out(), __specs); } } // namespace __formatter template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_chrono { +struct _LIBCPP_TEMPLATE_VIS __formatter_chrono { public: - _LIBCPP_HIDE_FROM_ABI constexpr auto __parse( - basic_format_parse_context<_CharT>& __parse_ctx, __format_spec::__fields __fields, __format_spec::__flags __flags) - -> decltype(__parse_ctx.begin()) { - return __parser_.__parse(__parse_ctx, __fields, __flags); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator + __parse(_ParseContext& __ctx, __format_spec::__fields __fields, __format_spec::__flags __flags) { + return __parser_.__parse(__ctx, __fields, __flags); } - template - _LIBCPP_HIDE_FROM_ABI auto format(const _Tp& __value, auto& __ctx) const -> decltype(__ctx.out()) const { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(const _Tp& __value, _FormatContext& __ctx) const { return __formatter::__format_chrono( __value, __ctx, __parser_.__parser_.__get_parsed_chrono_specifications(__ctx), __parser_.__chrono_specs_); } @@ -507,13 +711,47 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_chrono { __format_spec::__parser_chrono<_CharT> __parser_; }; +template +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__clock); + } +}; + +template +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__clock); + } +}; + +template +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + // The flags are not __clock since there is no associated time-zone. + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date_time); + } +}; + template struct formatter, _CharT> : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { // [time.format]/1 // Giving a precision specification in the chrono-format-spec is valid only // for std::chrono::duration types where the representation type Rep is a @@ -523,193 +761,229 @@ struct formatter, _CharT> : public __formatter_c // // Note this doesn't refer to chrono::treat_as_floating_point_v<_Rep>. if constexpr (std::floating_point<_Rep>) - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono_fractional, __format_spec::__flags::__duration); + return _Base::__parse(__ctx, __format_spec::__fields_chrono_fractional, __format_spec::__flags::__duration); else - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__duration); + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__duration); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__day); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__day); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__year); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__year); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__weekday); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__weekday); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__weekday); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__weekday); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__weekday); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__weekday); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month_day); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month_day); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month_weekday); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month_weekday); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month_weekday); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month_weekday); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__year_month); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__year_month); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); } }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_chrono<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); + } +}; + +template +struct formatter, _CharT> : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__time); + } +}; + +# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) +template <__fmt_char_type _CharT> +struct formatter : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__time_zone); + } +}; + +template <__fmt_char_type _CharT> +struct formatter : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags{}); + } +}; +# if !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) && \ + !defined(_LIBCPP_HAS_NO_LOCALIZATION) +// Note due to how libc++'s formatters are implemented there is no need to add +// the exposition only local-time-format-t abstraction. +template +struct formatter, _CharT> : public __formatter_chrono<_CharT> { public: using _Base = __formatter_chrono<_CharT>; - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - return _Base::__parse(__parse_ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__clock); } }; +# endif // !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) && + // !defined(_LIBCPP_HAS_NO_LOCALIZATION) +# endif // !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) -#endif // if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) +#endif // if _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__chrono/hh_mm_ss.h b/include/c++/v1/__chrono/hh_mm_ss.h index fd61cbe8..57d2247f 100644 --- a/include/c++/v1/__chrono/hh_mm_ss.h +++ b/include/c++/v1/__chrono/hh_mm_ss.h @@ -13,100 +13,100 @@ #include <__chrono/duration.h> #include <__chrono/time_point.h> #include <__config> +#include <__type_traits/common_type.h> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { template -class hh_mm_ss -{ +class hh_mm_ss { private: - static_assert(__is_duration<_Duration>::value, "template parameter of hh_mm_ss must be a std::chrono::duration"); - using __CommonType = common_type_t<_Duration, chrono::seconds>; - - _LIBCPP_HIDE_FROM_ABI static constexpr uint64_t __pow10(unsigned __exp) - { - uint64_t __ret = 1; - for (unsigned __i = 0; __i < __exp; ++__i) - __ret *= 10U; - return __ret; - } - - _LIBCPP_HIDE_FROM_ABI static constexpr unsigned __width(uint64_t __n, uint64_t __d = 10, unsigned __w = 0) - { - if (__n >= 2 && __d != 0 && __w < 19) - return 1 + __width(__n, __d % __n * 10, __w+1); - return 0; - } + static_assert(__is_duration<_Duration>::value, "template parameter of hh_mm_ss must be a std::chrono::duration"); + using __CommonType = common_type_t<_Duration, chrono::seconds>; + + _LIBCPP_HIDE_FROM_ABI static constexpr uint64_t __pow10(unsigned __exp) { + uint64_t __ret = 1; + for (unsigned __i = 0; __i < __exp; ++__i) + __ret *= 10U; + return __ret; + } + + _LIBCPP_HIDE_FROM_ABI static constexpr unsigned __width(uint64_t __n, uint64_t __d = 10, unsigned __w = 0) { + if (__n >= 2 && __d != 0 && __w < 19) + return 1 + __width(__n, __d % __n * 10, __w + 1); + return 0; + } public: - _LIBCPP_HIDE_FROM_ABI static unsigned constexpr fractional_width = __width(__CommonType::period::den) < 19 ? - __width(__CommonType::period::den) : 6u; - using precision = duration>; + _LIBCPP_HIDE_FROM_ABI static unsigned constexpr fractional_width = + __width(__CommonType::period::den) < 19 ? __width(__CommonType::period::den) : 6u; + using precision = duration>; - _LIBCPP_HIDE_FROM_ABI constexpr hh_mm_ss() noexcept : hh_mm_ss{_Duration::zero()} {} + _LIBCPP_HIDE_FROM_ABI constexpr hh_mm_ss() noexcept : hh_mm_ss{_Duration::zero()} {} - _LIBCPP_HIDE_FROM_ABI constexpr explicit hh_mm_ss(_Duration __d) noexcept : - __is_neg_(__d < _Duration(0)), - __h_(chrono::duration_cast (chrono::abs(__d))), + _LIBCPP_HIDE_FROM_ABI constexpr explicit hh_mm_ss(_Duration __d) noexcept + : __is_neg_(__d < _Duration(0)), + __h_(chrono::duration_cast(chrono::abs(__d))), __m_(chrono::duration_cast(chrono::abs(__d) - hours())), __s_(chrono::duration_cast(chrono::abs(__d) - hours() - minutes())), - __f_(chrono::duration_cast (chrono::abs(__d) - hours() - minutes() - seconds())) - {} + __f_(chrono::duration_cast(chrono::abs(__d) - hours() - minutes() - seconds())) {} - _LIBCPP_HIDE_FROM_ABI constexpr bool is_negative() const noexcept { return __is_neg_; } - _LIBCPP_HIDE_FROM_ABI constexpr chrono::hours hours() const noexcept { return __h_; } - _LIBCPP_HIDE_FROM_ABI constexpr chrono::minutes minutes() const noexcept { return __m_; } - _LIBCPP_HIDE_FROM_ABI constexpr chrono::seconds seconds() const noexcept { return __s_; } - _LIBCPP_HIDE_FROM_ABI constexpr precision subseconds() const noexcept { return __f_; } + _LIBCPP_HIDE_FROM_ABI constexpr bool is_negative() const noexcept { return __is_neg_; } + _LIBCPP_HIDE_FROM_ABI constexpr chrono::hours hours() const noexcept { return __h_; } + _LIBCPP_HIDE_FROM_ABI constexpr chrono::minutes minutes() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI constexpr chrono::seconds seconds() const noexcept { return __s_; } + _LIBCPP_HIDE_FROM_ABI constexpr precision subseconds() const noexcept { return __f_; } - _LIBCPP_HIDE_FROM_ABI constexpr precision to_duration() const noexcept - { - auto __dur = __h_ + __m_ + __s_ + __f_; - return __is_neg_ ? -__dur : __dur; - } + _LIBCPP_HIDE_FROM_ABI constexpr precision to_duration() const noexcept { + auto __dur = __h_ + __m_ + __s_ + __f_; + return __is_neg_ ? -__dur : __dur; + } - _LIBCPP_HIDE_FROM_ABI constexpr explicit operator precision() const noexcept { return to_duration(); } + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator precision() const noexcept { return to_duration(); } private: - bool __is_neg_; - chrono::hours __h_; - chrono::minutes __m_; - chrono::seconds __s_; - precision __f_; + bool __is_neg_; + chrono::hours __h_; + chrono::minutes __m_; + chrono::seconds __s_; + precision __f_; }; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(hh_mm_ss); -_LIBCPP_HIDE_FROM_ABI constexpr bool is_am(const hours& __h) noexcept { return __h >= hours( 0) && __h < hours(12); } -_LIBCPP_HIDE_FROM_ABI constexpr bool is_pm(const hours& __h) noexcept { return __h >= hours(12) && __h < hours(24); } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool is_am(const hours& __h) noexcept { + return __h >= hours(0) && __h < hours(12); +} +_LIBCPP_HIDE_FROM_ABI inline constexpr bool is_pm(const hours& __h) noexcept { + return __h >= hours(12) && __h < hours(24); +} -_LIBCPP_HIDE_FROM_ABI constexpr hours make12(const hours& __h) noexcept -{ - if (__h == hours( 0)) return hours(12); - else if (__h <= hours(12)) return __h; - else return __h - hours(12); +_LIBCPP_HIDE_FROM_ABI inline constexpr hours make12(const hours& __h) noexcept { + if (__h == hours(0)) + return hours(12); + else if (__h <= hours(12)) + return __h; + else + return __h - hours(12); } -_LIBCPP_HIDE_FROM_ABI constexpr hours make24(const hours& __h, bool __is_pm) noexcept -{ - if (__is_pm) - return __h == hours(12) ? __h : __h + hours(12); - else - return __h == hours(12) ? hours(0) : __h; +_LIBCPP_HIDE_FROM_ABI inline constexpr hours make24(const hours& __h, bool __is_pm) noexcept { + if (__is_pm) + return __h == hours(12) ? __h : __h + hours(12); + else + return __h == hours(12) ? hours(0) : __h; } } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_HH_MM_SS_H diff --git a/include/c++/v1/__chrono/high_resolution_clock.h b/include/c++/v1/__chrono/high_resolution_clock.h index 778ff44f..0697fd2d 100644 --- a/include/c++/v1/__chrono/high_resolution_clock.h +++ b/include/c++/v1/__chrono/high_resolution_clock.h @@ -20,8 +20,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { #ifndef _LIBCPP_HAS_NO_MONOTONIC_CLOCK typedef steady_clock high_resolution_clock; diff --git a/include/c++/v1/__chrono/literals.h b/include/c++/v1/__chrono/literals.h index 50529bd4..89800440 100644 --- a/include/c++/v1/__chrono/literals.h +++ b/include/c++/v1/__chrono/literals.h @@ -18,32 +18,28 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -inline namespace literals -{ - inline namespace chrono_literals - { - _LIBCPP_HIDE_FROM_ABI constexpr chrono::day operator ""d(unsigned long long __d) noexcept - { - return chrono::day(static_cast(__d)); - } - - _LIBCPP_HIDE_FROM_ABI constexpr chrono::year operator ""y(unsigned long long __y) noexcept - { - return chrono::year(static_cast(__y)); - } +inline namespace literals { +inline namespace chrono_literals { +_LIBCPP_HIDE_FROM_ABI constexpr chrono::day operator""d(unsigned long long __d) noexcept { + return chrono::day(static_cast(__d)); +} + +_LIBCPP_HIDE_FROM_ABI constexpr chrono::year operator""y(unsigned long long __y) noexcept { + return chrono::year(static_cast(__y)); +} } // namespace chrono_literals } // namespace literals namespace chrono { // hoist the literals into namespace std::chrono - using namespace literals::chrono_literals; +using namespace literals::chrono_literals; } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_LITERALS_H diff --git a/include/c++/v1/__chrono/month.h b/include/c++/v1/__chrono/month.h index e929f248..ce5cc21a 100644 --- a/include/c++/v1/__chrono/month.h +++ b/include/c++/v1/__chrono/month.h @@ -18,68 +18,80 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { class month { private: - unsigned char __m_; + unsigned char __m_; + public: - _LIBCPP_HIDE_FROM_ABI month() = default; - _LIBCPP_HIDE_FROM_ABI explicit inline constexpr month(unsigned __val) noexcept : __m_(static_cast(__val)) {} - _LIBCPP_HIDE_FROM_ABI inline constexpr month& operator++() noexcept { ++__m_; return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr month operator++(int) noexcept { month __tmp = *this; ++(*this); return __tmp; } - _LIBCPP_HIDE_FROM_ABI inline constexpr month& operator--() noexcept { --__m_; return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr month operator--(int) noexcept { month __tmp = *this; --(*this); return __tmp; } - _LIBCPP_HIDE_FROM_ABI constexpr month& operator+=(const months& __m1) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr month& operator-=(const months& __m1) noexcept; - _LIBCPP_HIDE_FROM_ABI explicit inline constexpr operator unsigned() const noexcept { return __m_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_ >= 1 && __m_ <= 12; } + month() = default; + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr month(unsigned __val) noexcept + : __m_(static_cast(__val)) {} + _LIBCPP_HIDE_FROM_ABI inline constexpr month& operator++() noexcept { + *this += months{1}; + return *this; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr month operator++(int) noexcept { + month __tmp = *this; + ++(*this); + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr month& operator--() noexcept { + *this -= months{1}; + return *this; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr month operator--(int) noexcept { + month __tmp = *this; + --(*this); + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI constexpr month& operator+=(const months& __m1) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr month& operator-=(const months& __m1) noexcept; + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr operator unsigned() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_ >= 1 && __m_ <= 12; } }; +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator==(const month& __lhs, const month& __rhs) noexcept { + return static_cast(__lhs) == static_cast(__rhs); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const month& __lhs, const month& __rhs) noexcept -{ return static_cast(__lhs) == static_cast(__rhs); } - -_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const month& __lhs, const month& __rhs) noexcept { - return static_cast(__lhs) <=> static_cast(__rhs); +_LIBCPP_HIDE_FROM_ABI inline constexpr strong_ordering operator<=>(const month& __lhs, const month& __rhs) noexcept { + return static_cast(__lhs) <=> static_cast(__rhs); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -month operator+ (const month& __lhs, const months& __rhs) noexcept -{ - auto const __mu = static_cast(static_cast(__lhs)) + (__rhs.count() - 1); - auto const __yr = (__mu >= 0 ? __mu : __mu - 11) / 12; - return month{static_cast(__mu - __yr * 12 + 1)}; +_LIBCPP_HIDE_FROM_ABI inline constexpr month operator+(const month& __lhs, const months& __rhs) noexcept { + auto const __mu = static_cast(static_cast(__lhs)) + (__rhs.count() - 1); + auto const __yr = (__mu >= 0 ? __mu : __mu - 11) / 12; + return month{static_cast(__mu - __yr * 12 + 1)}; } -_LIBCPP_HIDE_FROM_ABI inline constexpr -month operator+ (const months& __lhs, const month& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month operator+(const months& __lhs, const month& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month operator- (const month& __lhs, const months& __rhs) noexcept -{ return __lhs + -__rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month operator-(const month& __lhs, const months& __rhs) noexcept { + return __lhs + -__rhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -months operator-(const month& __lhs, const month& __rhs) noexcept -{ - auto const __dm = static_cast(__lhs) - static_cast(__rhs); - return months(__dm <= 11 ? __dm : __dm + 12); +_LIBCPP_HIDE_FROM_ABI inline constexpr months operator-(const month& __lhs, const month& __rhs) noexcept { + auto const __dm = static_cast(__lhs) - static_cast(__rhs); + return months(__dm <= 11 ? __dm : __dm + 12); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -month& month::operator+=(const months& __dm) noexcept -{ *this = *this + __dm; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month& month::operator+=(const months& __dm) noexcept { + *this = *this + __dm; + return *this; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month& month::operator-=(const months& __dm) noexcept -{ *this = *this - __dm; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month& month::operator-=(const months& __dm) noexcept { + *this = *this - __dm; + return *this; +} inline constexpr month January{1}; inline constexpr month February{2}; @@ -98,6 +110,6 @@ inline constexpr month December{12}; _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_MONTH_H diff --git a/include/c++/v1/__chrono/month_weekday.h b/include/c++/v1/__chrono/month_weekday.h index 01cdf76d..79198796 100644 --- a/include/c++/v1/__chrono/month_weekday.h +++ b/include/c++/v1/__chrono/month_weekday.h @@ -18,89 +18,88 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { class month_weekday { private: - chrono::month __m_; - chrono::weekday_indexed __wdi_; + chrono::month __m_; + chrono::weekday_indexed __wdi_; + public: - _LIBCPP_HIDE_FROM_ABI constexpr month_weekday(const chrono::month& __mval, const chrono::weekday_indexed& __wdival) noexcept - : __m_{__mval}, __wdi_{__wdival} {} - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_indexed weekday_indexed() const noexcept { return __wdi_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_.ok() && __wdi_.ok(); } + _LIBCPP_HIDE_FROM_ABI constexpr month_weekday(const chrono::month& __mval, + const chrono::weekday_indexed& __wdival) noexcept + : __m_{__mval}, __wdi_{__wdival} {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_indexed weekday_indexed() const noexcept { return __wdi_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_.ok() && __wdi_.ok(); } }; -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const month_weekday& __lhs, const month_weekday& __rhs) noexcept -{ return __lhs.month() == __rhs.month() && __lhs.weekday_indexed() == __rhs.weekday_indexed(); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator!=(const month_weekday& __lhs, const month_weekday& __rhs) noexcept -{ return !(__lhs == __rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool +operator==(const month_weekday& __lhs, const month_weekday& __rhs) noexcept { + return __lhs.month() == __rhs.month() && __lhs.weekday_indexed() == __rhs.weekday_indexed(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_weekday operator/(const month& __lhs, const weekday_indexed& __rhs) noexcept -{ return month_weekday{__lhs, __rhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_weekday +operator/(const month& __lhs, const weekday_indexed& __rhs) noexcept { + return month_weekday{__lhs, __rhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_weekday operator/(int __lhs, const weekday_indexed& __rhs) noexcept -{ return month_weekday{month(__lhs), __rhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_weekday operator/(int __lhs, const weekday_indexed& __rhs) noexcept { + return month_weekday{month(__lhs), __rhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_weekday operator/(const weekday_indexed& __lhs, const month& __rhs) noexcept -{ return month_weekday{__rhs, __lhs}; } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_weekday operator/(const weekday_indexed& __lhs, int __rhs) noexcept -{ return month_weekday{month(__rhs), __lhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_weekday +operator/(const weekday_indexed& __lhs, const month& __rhs) noexcept { + return month_weekday{__rhs, __lhs}; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr month_weekday operator/(const weekday_indexed& __lhs, int __rhs) noexcept { + return month_weekday{month(__rhs), __lhs}; +} class month_weekday_last { - chrono::month __m_; - chrono::weekday_last __wdl_; - public: - _LIBCPP_HIDE_FROM_ABI constexpr month_weekday_last(const chrono::month& __mval, const chrono::weekday_last& __wdlval) noexcept - : __m_{__mval}, __wdl_{__wdlval} {} - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_last weekday_last() const noexcept { return __wdl_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_.ok() && __wdl_.ok(); } -}; + chrono::month __m_; + chrono::weekday_last __wdl_; -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept -{ return __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last(); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator!=(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept -{ return !(__lhs == __rhs); } +public: + _LIBCPP_HIDE_FROM_ABI constexpr month_weekday_last(const chrono::month& __mval, + const chrono::weekday_last& __wdlval) noexcept + : __m_{__mval}, __wdl_{__wdlval} {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_last weekday_last() const noexcept { return __wdl_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_.ok() && __wdl_.ok(); } +}; +_LIBCPP_HIDE_FROM_ABI inline constexpr bool +operator==(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept { + return __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_weekday_last operator/(const month& __lhs, const weekday_last& __rhs) noexcept -{ return month_weekday_last{__lhs, __rhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_weekday_last +operator/(const month& __lhs, const weekday_last& __rhs) noexcept { + return month_weekday_last{__lhs, __rhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_weekday_last operator/(int __lhs, const weekday_last& __rhs) noexcept -{ return month_weekday_last{month(__lhs), __rhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_weekday_last operator/(int __lhs, const weekday_last& __rhs) noexcept { + return month_weekday_last{month(__lhs), __rhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_weekday_last operator/(const weekday_last& __lhs, const month& __rhs) noexcept -{ return month_weekday_last{__rhs, __lhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_weekday_last +operator/(const weekday_last& __lhs, const month& __rhs) noexcept { + return month_weekday_last{__rhs, __lhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_weekday_last operator/(const weekday_last& __lhs, int __rhs) noexcept -{ return month_weekday_last{month(__rhs), __lhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_weekday_last operator/(const weekday_last& __lhs, int __rhs) noexcept { + return month_weekday_last{month(__rhs), __lhs}; +} } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_MONTH_WEEKDAY_H diff --git a/include/c++/v1/__chrono/monthday.h b/include/c++/v1/__chrono/monthday.h index c0ee3e4a..a89d16e5 100644 --- a/include/c++/v1/__chrono/monthday.h +++ b/include/c++/v1/__chrono/monthday.h @@ -20,110 +20,114 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { class month_day { private: - chrono::month __m_; - chrono::day __d_; + chrono::month __m_; + chrono::day __d_; + public: - _LIBCPP_HIDE_FROM_ABI month_day() = default; - _LIBCPP_HIDE_FROM_ABI constexpr month_day(const chrono::month& __mval, const chrono::day& __dval) noexcept - : __m_{__mval}, __d_{__dval} {} - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::day day() const noexcept { return __d_; } - _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept; + month_day() = default; + _LIBCPP_HIDE_FROM_ABI constexpr month_day(const chrono::month& __mval, const chrono::day& __dval) noexcept + : __m_{__mval}, __d_{__dval} {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::day day() const noexcept { return __d_; } + _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept; }; -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool month_day::ok() const noexcept -{ - if (!__m_.ok()) return false; - const unsigned __dval = static_cast(__d_); - if (__dval < 1 || __dval > 31) return false; - if (__dval <= 29) return true; -// Now we've got either 30 or 31 - const unsigned __mval = static_cast(__m_); - if (__mval == 2) return false; - if (__mval == 4 || __mval == 6 || __mval == 9 || __mval == 11) - return __dval == 30; +_LIBCPP_HIDE_FROM_ABI inline constexpr bool month_day::ok() const noexcept { + if (!__m_.ok()) + return false; + const unsigned __dval = static_cast(__d_); + if (__dval < 1 || __dval > 31) + return false; + if (__dval <= 29) return true; + // Now we've got either 30 or 31 + const unsigned __mval = static_cast(__m_); + if (__mval == 2) + return false; + if (__mval == 4 || __mval == 6 || __mval == 9 || __mval == 11) + return __dval == 30; + return true; } -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const month_day& __lhs, const month_day& __rhs) noexcept -{ return __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day(); } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator==(const month_day& __lhs, const month_day& __rhs) noexcept { + return __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day(); +} -_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const month_day& __lhs, const month_day& __rhs) noexcept { - if (auto __c = __lhs.month() <=> __rhs.month(); __c != 0) - return __c; - return __lhs.day() <=> __rhs.day(); +_LIBCPP_HIDE_FROM_ABI inline constexpr strong_ordering +operator<=>(const month_day& __lhs, const month_day& __rhs) noexcept { + if (auto __c = __lhs.month() <=> __rhs.month(); __c != 0) + return __c; + return __lhs.day() <=> __rhs.day(); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_day operator/(const month& __lhs, const day& __rhs) noexcept -{ return month_day{__lhs, __rhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_day operator/(const month& __lhs, const day& __rhs) noexcept { + return month_day{__lhs, __rhs}; +} -_LIBCPP_HIDE_FROM_ABI constexpr -month_day operator/(const day& __lhs, const month& __rhs) noexcept -{ return __rhs / __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_day operator/(const day& __lhs, const month& __rhs) noexcept { + return __rhs / __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_day operator/(const month& __lhs, int __rhs) noexcept -{ return __lhs / day(__rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_day operator/(const month& __lhs, int __rhs) noexcept { + return __lhs / day(__rhs); +} -_LIBCPP_HIDE_FROM_ABI constexpr -month_day operator/(int __lhs, const day& __rhs) noexcept -{ return month(__lhs) / __rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_day operator/(int __lhs, const day& __rhs) noexcept { + return month(__lhs) / __rhs; +} -_LIBCPP_HIDE_FROM_ABI constexpr -month_day operator/(const day& __lhs, int __rhs) noexcept -{ return month(__rhs) / __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_day operator/(const day& __lhs, int __rhs) noexcept { + return month(__rhs) / __lhs; +} class month_day_last { private: - chrono::month __m_; + chrono::month __m_; + public: - _LIBCPP_HIDE_FROM_ABI explicit constexpr month_day_last(const chrono::month& __val) noexcept - : __m_{__val} {} - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_.ok(); } + _LIBCPP_HIDE_FROM_ABI explicit constexpr month_day_last(const chrono::month& __val) noexcept : __m_{__val} {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_.ok(); } }; -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const month_day_last& __lhs, const month_day_last& __rhs) noexcept -{ return __lhs.month() == __rhs.month(); } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool +operator==(const month_day_last& __lhs, const month_day_last& __rhs) noexcept { + return __lhs.month() == __rhs.month(); +} -_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering +_LIBCPP_HIDE_FROM_ABI inline constexpr strong_ordering operator<=>(const month_day_last& __lhs, const month_day_last& __rhs) noexcept { - return __lhs.month() <=> __rhs.month(); + return __lhs.month() <=> __rhs.month(); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_day_last operator/(const month& __lhs, last_spec) noexcept -{ return month_day_last{__lhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_day_last operator/(const month& __lhs, last_spec) noexcept { + return month_day_last{__lhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_day_last operator/(last_spec, const month& __rhs) noexcept -{ return month_day_last{__rhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_day_last operator/(last_spec, const month& __rhs) noexcept { + return month_day_last{__rhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_day_last operator/(int __lhs, last_spec) noexcept -{ return month_day_last{month(__lhs)}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_day_last operator/(int __lhs, last_spec) noexcept { + return month_day_last{month(__lhs)}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -month_day_last operator/(last_spec, int __rhs) noexcept -{ return month_day_last{month(__rhs)}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr month_day_last operator/(last_spec, int __rhs) noexcept { + return month_day_last{month(__rhs)}; +} } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_MONTHDAY_H diff --git a/include/c++/v1/__chrono/ostream.h b/include/c++/v1/__chrono/ostream.h index 30a04bd2..e6c43254 100644 --- a/include/c++/v1/__chrono/ostream.h +++ b/include/c++/v1/__chrono/ostream.h @@ -10,21 +10,28 @@ #ifndef _LIBCPP___CHRONO_OSTREAM_H #define _LIBCPP___CHRONO_OSTREAM_H +#include <__chrono/calendar.h> #include <__chrono/day.h> #include <__chrono/duration.h> +#include <__chrono/file_clock.h> +#include <__chrono/hh_mm_ss.h> +#include <__chrono/local_info.h> #include <__chrono/month.h> #include <__chrono/month_weekday.h> #include <__chrono/monthday.h> #include <__chrono/statically_widen.h> +#include <__chrono/sys_info.h> +#include <__chrono/system_clock.h> #include <__chrono/weekday.h> #include <__chrono/year.h> #include <__chrono/year_month.h> #include <__chrono/year_month_day.h> #include <__chrono/year_month_weekday.h> +#include <__chrono/zoned_time.h> #include <__concepts/same_as.h> #include <__config> #include <__format/format_functions.h> -#include +#include <__fwd/ostream.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -33,10 +40,35 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) +#if _LIBCPP_STD_VER >= 20 namespace chrono { +template + requires(!treat_as_floating_point_v && _Duration{1} < days{1}) +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_time<_Duration>& __tp) { + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%F %T}"), __tp); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_days& __dp) { + return __os << year_month_day{__dp}; +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const file_time<_Duration> __tp) { + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%F %T}"), __tp); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const local_time<_Duration> __tp) { + return __os << sys_time<_Duration>{__tp.time_since_epoch()}; +} + // Depending on the type the return is a const _CharT* or a basic_string<_CharT> template _LIBCPP_HIDE_FROM_ABI auto __units_suffix() { @@ -92,7 +124,7 @@ _LIBCPP_HIDE_FROM_ABI auto __units_suffix() { } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const duration<_Rep, _Period>& __d) { basic_ostringstream<_CharT, _Traits> __s; __s.flags(__os.flags()); @@ -103,21 +135,19 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, const duration<_Rep, _Period>& } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& -operator<<(basic_ostream<_CharT, _Traits>& __os, const day& __d) { - return __os - << (__d.ok() - ? std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%d}"), __d) - // Note this error differs from the wording of the Standard. The - // Standard wording doesn't work well on AIX or Windows. There - // the formatted day seems to be either modulo 100 or completely - // omitted. Judging by the wording this is valid. - // TODO FMT Write a paper of file an LWG issue. - : std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:02} is not a valid day"), static_cast(__d))); +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const day& __d) { + return __os << (__d.ok() ? std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%d}"), __d) + // Note this error differs from the wording of the Standard. The + // Standard wording doesn't work well on AIX or Windows. There + // the formatted day seems to be either modulo 100 or completely + // omitted. Judging by the wording this is valid. + // TODO FMT Write a paper of file an LWG issue. + : std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:02} is not a valid day"), + static_cast(__d))); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const month& __m) { return __os << (__m.ok() ? std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%b}"), __m) : std::format(__os.getloc(), @@ -126,14 +156,14 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, const month& __m) { } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const year& __y) { return __os << (__y.ok() ? std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%Y}"), __y) : std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%Y} is not a valid year"), __y)); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const weekday& __wd) { return __os << (__wd.ok() ? std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%a}"), __wd) : std::format(__os.getloc(), // TODO FMT Standard mandated locale isn't used. @@ -142,7 +172,7 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, const weekday& __wd) { } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const weekday_indexed& __wdi) { auto __i = __wdi.index(); return __os << (__i >= 1 && __i <= 5 @@ -154,13 +184,13 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, const weekday_indexed& __wdi) { } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const weekday_last& __wdl) { return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}[last]"), __wdl.weekday()); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const month_day& __md) { // TODO FMT The Standard allows 30th of February to be printed. // It would be nice to show an error message instead. @@ -168,47 +198,47 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, const month_day& __md) { } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const month_day_last& __mdl) { return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}/last"), __mdl.month()); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const month_weekday& __mwd) { return __os << std::format( __os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}/{:L}"), __mwd.month(), __mwd.weekday_indexed()); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const month_weekday_last& __mwdl) { return __os << std::format( __os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}/{:L}"), __mwdl.month(), __mwdl.weekday_last()); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month& __ym) { return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{}/{:L}"), __ym.year(), __ym.month()); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month_day& __ymd) { return __os << (__ymd.ok() ? std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%F}"), __ymd) : std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%F} is not a valid date"), __ymd)); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month_day_last& __ymdl) { return __os << std::format( __os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{}/{:L}"), __ymdl.year(), __ymdl.month_day_last()); } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month_weekday& __ymwd) { return __os << std::format( __os.getloc(), @@ -219,7 +249,7 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month_weekday& __ymw } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT basic_ostream<_CharT, _Traits>& +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month_weekday_last& __ymwdl) { return __os << std::format( __os.getloc(), @@ -229,9 +259,63 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month_weekday_last& __ymwdl.weekday_last()); } +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const hh_mm_ss<_Duration> __hms) { + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%T}"), __hms); +} + +# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_info& __info) { + // __info.abbrev is always std::basic_string. + // Since these strings typically are short the conversion should be cheap. + std::basic_string<_CharT> __abbrev{__info.abbrev.begin(), __info.abbrev.end()}; + return __os << std::format( + _LIBCPP_STATICALLY_WIDEN(_CharT, "[{:%F %T}, {:%F %T}) {:%T} {:%Q%q} \"{}\""), + __info.begin, + __info.end, + hh_mm_ss{__info.offset}, + __info.save, + __abbrev); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const local_info& __info) { + auto __result = [&]() -> basic_string<_CharT> { + switch (__info.result) { + case local_info::unique: + return _LIBCPP_STATICALLY_WIDEN(_CharT, "unique"); + case local_info::nonexistent: + return _LIBCPP_STATICALLY_WIDEN(_CharT, "non-existent"); + case local_info::ambiguous: + return _LIBCPP_STATICALLY_WIDEN(_CharT, "ambiguous"); + + default: + return std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "unspecified result ({})"), __info.result); + }; + }; + + return __os << std::format( + _LIBCPP_STATICALLY_WIDEN(_CharT, "{}: {{{}, {}}}"), __result(), __info.first, __info.second); +} + +# if !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) && \ + !defined(_LIBCPP_HAS_NO_LOCALIZATION) +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const zoned_time<_Duration, _TimeZonePtr>& __tp) { + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%F %T %Z}"), __tp); +} +# endif +# endif // !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB) + } // namespace chrono -#endif //if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) +#endif // if _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__chrono/parser_std_format_spec.h b/include/c++/v1/__chrono/parser_std_format_spec.h index dbcfe6da..785bbae1 100644 --- a/include/c++/v1/__chrono/parser_std_format_spec.h +++ b/include/c++/v1/__chrono/parser_std_format_spec.h @@ -24,7 +24,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) +#if _LIBCPP_STD_VER >= 20 namespace __format_spec { @@ -137,17 +137,19 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __validate_time_zone(__flags __flags) { template class _LIBCPP_TEMPLATE_VIS __parser_chrono { + using _ConstIterator = typename basic_format_parse_context<_CharT>::const_iterator; + public: - _LIBCPP_HIDE_FROM_ABI constexpr auto - __parse(basic_format_parse_context<_CharT>& __parse_ctx, __fields __fields, __flags __flags) - -> decltype(__parse_ctx.begin()) { - const _CharT* __begin = __parser_.__parse(__parse_ctx, __fields); - const _CharT* __end = __parse_ctx.end(); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator + __parse(_ParseContext& __ctx, __fields __fields, __flags __flags) { + _ConstIterator __begin = __parser_.__parse(__ctx, __fields); + _ConstIterator __end = __ctx.end(); if (__begin == __end) return __begin; - const _CharT* __last = __parse_chrono_specs(__begin, __end, __flags); - __chrono_specs_ = basic_string_view<_CharT>{__begin, __last}; + _ConstIterator __last = __parse_chrono_specs(__begin, __end, __flags); + __chrono_specs_ = basic_string_view<_CharT>{__begin, __last}; return __last; } @@ -156,19 +158,19 @@ class _LIBCPP_TEMPLATE_VIS __parser_chrono { basic_string_view<_CharT> __chrono_specs_; private: - _LIBCPP_HIDE_FROM_ABI constexpr const _CharT* - __parse_chrono_specs(const _CharT* __begin, const _CharT* __end, __flags __flags) { - _LIBCPP_ASSERT(__begin != __end, - "When called with an empty input the function will cause " - "undefined behavior by evaluating data not in the input"); + _LIBCPP_HIDE_FROM_ABI constexpr _ConstIterator + __parse_chrono_specs(_ConstIterator __begin, _ConstIterator __end, __flags __flags) { + _LIBCPP_ASSERT_INTERNAL(__begin != __end, + "When called with an empty input the function will cause " + "undefined behavior by evaluating data not in the input"); if (*__begin != _CharT('%') && *__begin != _CharT('}')) - std::__throw_format_error("Expected '%' or '}' in the chrono format-string"); + std::__throw_format_error("The format specifier expects a '%' or a '}'"); do { switch (*__begin) { case _CharT('{'): - std::__throw_format_error("The chrono-specs contains a '{'"); + std::__throw_format_error("The chrono specifiers contain a '{'"); case _CharT('}'): return __begin; @@ -190,10 +192,10 @@ class _LIBCPP_TEMPLATE_VIS __parser_chrono { /// \pre *__begin == '%' /// \post __begin points at the end parsed conversion-spec _LIBCPP_HIDE_FROM_ABI constexpr void - __parse_conversion_spec(const _CharT*& __begin, const _CharT* __end, __flags __flags) { + __parse_conversion_spec(_ConstIterator& __begin, _ConstIterator __end, __flags __flags) { ++__begin; if (__begin == __end) - std::__throw_format_error("End of input while parsing the modifier chrono conversion-spec"); + std::__throw_format_error("End of input while parsing a conversion specifier"); switch (*__begin) { case _CharT('n'): @@ -212,6 +214,7 @@ class _LIBCPP_TEMPLATE_VIS __parser_chrono { case _CharT('p'): // TODO FMT does the formater require an hour or a time? case _CharT('H'): case _CharT('I'): + __parser_.__hour_ = true; __validate_hour(__flags); break; @@ -219,6 +222,7 @@ class _LIBCPP_TEMPLATE_VIS __parser_chrono { case _CharT('R'): case _CharT('T'): case _CharT('X'): + __parser_.__hour_ = true; __format_spec::__validate_time(__flags); break; @@ -304,13 +308,14 @@ class _LIBCPP_TEMPLATE_VIS __parser_chrono { /// \pre *__begin == 'E' /// \post __begin is incremented by one. _LIBCPP_HIDE_FROM_ABI constexpr void - __parse_modifier_E(const _CharT*& __begin, const _CharT* __end, __flags __flags) { + __parse_modifier_E(_ConstIterator& __begin, _ConstIterator __end, __flags __flags) { ++__begin; if (__begin == __end) std::__throw_format_error("End of input while parsing the modifier E"); switch (*__begin) { case _CharT('X'): + __parser_.__hour_ = true; __format_spec::__validate_time(__flags); break; @@ -343,7 +348,7 @@ class _LIBCPP_TEMPLATE_VIS __parser_chrono { /// \pre *__begin == 'O' /// \post __begin is incremented by one. _LIBCPP_HIDE_FROM_ABI constexpr void - __parse_modifier_O(const _CharT*& __begin, const _CharT* __end, __flags __flags) { + __parse_modifier_O(_ConstIterator& __begin, _ConstIterator __end, __flags __flags) { ++__begin; if (__begin == __end) std::__throw_format_error("End of input while parsing the modifier O"); @@ -359,6 +364,7 @@ class _LIBCPP_TEMPLATE_VIS __parser_chrono { case _CharT('I'): case _CharT('H'): + __parser_.__hour_ = true; __format_spec::__validate_hour(__flags); break; @@ -403,7 +409,7 @@ class _LIBCPP_TEMPLATE_VIS __parser_chrono { } // namespace __format_spec -#endif //_LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__chrono/statically_widen.h b/include/c++/v1/__chrono/statically_widen.h index 360b6c2c..a18c46f0 100644 --- a/include/c++/v1/__chrono/statically_widen.h +++ b/include/c++/v1/__chrono/statically_widen.h @@ -22,7 +22,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 # ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template <__fmt_char_type _CharT> @@ -33,7 +33,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr const _CharT* __statically_widen(const char* __s return __wstr; } # define _LIBCPP_STATICALLY_WIDEN(_CharT, __str) ::std::__statically_widen<_CharT>(__str, L##__str) -# else // _LIBCPP_HAS_NO_WIDE_CHARACTERS +# else // _LIBCPP_HAS_NO_WIDE_CHARACTERS // Without this indirection the unit test test/libcxx/modules_include.sh.cpp // fails for the CI build "No wide characters". This seems like a bug. @@ -45,7 +45,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr const _CharT* __statically_widen(const char* __s # define _LIBCPP_STATICALLY_WIDEN(_CharT, __str) ::std::__statically_widen<_CharT>(__str) # endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__chrono/steady_clock.h b/include/c++/v1/__chrono/steady_clock.h index ba833517..612a7f15 100644 --- a/include/c++/v1/__chrono/steady_clock.h +++ b/include/c++/v1/__chrono/steady_clock.h @@ -20,20 +20,18 @@ _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { #ifndef _LIBCPP_HAS_NO_MONOTONIC_CLOCK -class _LIBCPP_TYPE_VIS steady_clock -{ +class _LIBCPP_EXPORTED_FROM_ABI steady_clock { public: - typedef nanoseconds duration; - typedef duration::rep rep; - typedef duration::period period; - typedef chrono::time_point time_point; - static _LIBCPP_CONSTEXPR_SINCE_CXX14 const bool is_steady = true; + typedef nanoseconds duration; + typedef duration::rep rep; + typedef duration::period period; + typedef chrono::time_point time_point; + static _LIBCPP_CONSTEXPR_SINCE_CXX14 const bool is_steady = true; - static time_point now() _NOEXCEPT; + static time_point now() _NOEXCEPT; }; #endif diff --git a/include/c++/v1/__chrono/system_clock.h b/include/c++/v1/__chrono/system_clock.h index 331db468..5a9eb65b 100644 --- a/include/c++/v1/__chrono/system_clock.h +++ b/include/c++/v1/__chrono/system_clock.h @@ -21,24 +21,22 @@ _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { -class _LIBCPP_TYPE_VIS system_clock -{ +class _LIBCPP_EXPORTED_FROM_ABI system_clock { public: - typedef microseconds duration; - typedef duration::rep rep; - typedef duration::period period; - typedef chrono::time_point time_point; - static _LIBCPP_CONSTEXPR_SINCE_CXX14 const bool is_steady = false; - - static time_point now() _NOEXCEPT; - static time_t to_time_t (const time_point& __t) _NOEXCEPT; - static time_point from_time_t(time_t __t) _NOEXCEPT; + typedef microseconds duration; + typedef duration::rep rep; + typedef duration::period period; + typedef chrono::time_point time_point; + static _LIBCPP_CONSTEXPR_SINCE_CXX14 const bool is_steady = false; + + static time_point now() _NOEXCEPT; + static time_t to_time_t(const time_point& __t) _NOEXCEPT; + static time_point from_time_t(time_t __t) _NOEXCEPT; }; -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template using sys_time = time_point; diff --git a/include/c++/v1/__chrono/time_point.h b/include/c++/v1/__chrono/time_point.h index 8a8fa217..aaf0b098 100644 --- a/include/c++/v1/__chrono/time_point.h +++ b/include/c++/v1/__chrono/time_point.h @@ -11,6 +11,8 @@ #define _LIBCPP___CHRONO_TIME_POINT_H #include <__chrono/duration.h> +#include <__compare/ordering.h> +#include <__compare/three_way_comparable.h> #include <__config> #include <__type_traits/common_type.h> #include <__type_traits/enable_if.h> @@ -26,220 +28,187 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { template -class _LIBCPP_TEMPLATE_VIS time_point -{ - static_assert(__is_duration<_Duration>::value, - "Second template parameter of time_point must be a std::chrono::duration"); +class _LIBCPP_TEMPLATE_VIS time_point { + static_assert(__is_duration<_Duration>::value, + "Second template parameter of time_point must be a std::chrono::duration"); + public: - typedef _Clock clock; - typedef _Duration duration; - typedef typename duration::rep rep; - typedef typename duration::period period; + typedef _Clock clock; + typedef _Duration duration; + typedef typename duration::rep rep; + typedef typename duration::period period; + private: - duration __d_; + duration __d_; public: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 time_point() : __d_(duration::zero()) {} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit time_point(const duration& __d) : __d_(__d) {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 time_point() : __d_(duration::zero()) {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit time_point(const duration& __d) : __d_(__d) {} - // conversions - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 - time_point(const time_point& __t, - typename enable_if - < - is_convertible<_Duration2, duration>::value - >::type* = nullptr) - : __d_(__t.time_since_epoch()) {} + // conversions + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 time_point(const time_point& __t) + : __d_(__t.time_since_epoch()) {} - // observer + // observer - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 duration time_since_epoch() const {return __d_;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 duration time_since_epoch() const { return __d_; } - // arithmetic + // arithmetic - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 time_point& operator+=(const duration& __d) {__d_ += __d; return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 time_point& operator-=(const duration& __d) {__d_ -= __d; return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 time_point& operator+=(const duration& __d) { + __d_ += __d; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 time_point& operator-=(const duration& __d) { + __d_ -= __d; + return *this; + } - // special values + // special values - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point min() _NOEXCEPT {return time_point(duration::min());} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point max() _NOEXCEPT {return time_point(duration::max());} + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR time_point min() _NOEXCEPT { return time_point(duration::min()); } + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR time_point max() _NOEXCEPT { return time_point(duration::max()); } }; } // namespace chrono template -struct _LIBCPP_TEMPLATE_VIS common_type, - chrono::time_point<_Clock, _Duration2> > -{ - typedef chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type> type; +struct _LIBCPP_TEMPLATE_VIS +common_type, chrono::time_point<_Clock, _Duration2> > { + typedef chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type> type; }; namespace chrono { template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -time_point<_Clock, _ToDuration> -time_point_cast(const time_point<_Clock, _Duration>& __t) -{ - return time_point<_Clock, _ToDuration>(chrono::duration_cast<_ToDuration>(__t.time_since_epoch())); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 time_point<_Clock, _ToDuration> +time_point_cast(const time_point<_Clock, _Duration>& __t) { + return time_point<_Clock, _ToDuration>(chrono::duration_cast<_ToDuration>(__t.time_since_epoch())); } -#if _LIBCPP_STD_VER > 14 -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -typename enable_if -< - __is_duration<_ToDuration>::value, - time_point<_Clock, _ToDuration> ->::type -floor(const time_point<_Clock, _Duration>& __t) -{ - return time_point<_Clock, _ToDuration>{chrono::floor<_ToDuration>(__t.time_since_epoch())}; +#if _LIBCPP_STD_VER >= 17 +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI constexpr time_point<_Clock, _ToDuration> floor(const time_point<_Clock, _Duration>& __t) { + return time_point<_Clock, _ToDuration>{chrono::floor<_ToDuration>(__t.time_since_epoch())}; } -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -typename enable_if -< - __is_duration<_ToDuration>::value, - time_point<_Clock, _ToDuration> ->::type -ceil(const time_point<_Clock, _Duration>& __t) -{ - return time_point<_Clock, _ToDuration>{chrono::ceil<_ToDuration>(__t.time_since_epoch())}; +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI constexpr time_point<_Clock, _ToDuration> ceil(const time_point<_Clock, _Duration>& __t) { + return time_point<_Clock, _ToDuration>{chrono::ceil<_ToDuration>(__t.time_since_epoch())}; } -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -typename enable_if -< - __is_duration<_ToDuration>::value, - time_point<_Clock, _ToDuration> ->::type -round(const time_point<_Clock, _Duration>& __t) -{ - return time_point<_Clock, _ToDuration>{chrono::round<_ToDuration>(__t.time_since_epoch())}; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -typename enable_if -< - numeric_limits<_Rep>::is_signed, - duration<_Rep, _Period> ->::type -abs(duration<_Rep, _Period> __d) -{ - return __d >= __d.zero() ? +__d : -__d; -} -#endif // _LIBCPP_STD_VER > 14 +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI constexpr time_point<_Clock, _ToDuration> round(const time_point<_Clock, _Duration>& __t) { + return time_point<_Clock, _ToDuration>{chrono::round<_ToDuration>(__t.time_since_epoch())}; +} + +template ::is_signed, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI constexpr duration<_Rep, _Period> abs(duration<_Rep, _Period> __d) { + return __d >= __d.zero() ? +__d : -__d; +} +#endif // _LIBCPP_STD_VER >= 17 // time_point == template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -bool -operator==(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return __lhs.time_since_epoch() == __rhs.time_since_epoch(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool +operator==(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) { + return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } +#if _LIBCPP_STD_VER <= 17 + // time_point != template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -bool -operator!=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return !(__lhs == __rhs); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool +operator!=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) { + return !(__lhs == __rhs); } +#endif // _LIBCPP_STD_VER <= 17 + // time_point < template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -bool -operator<(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return __lhs.time_since_epoch() < __rhs.time_since_epoch(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool +operator<(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) { + return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } // time_point > template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -bool -operator>(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return __rhs < __lhs; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool +operator>(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) { + return __rhs < __lhs; } // time_point <= template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -bool -operator<=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return !(__rhs < __lhs); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool +operator<=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) { + return !(__rhs < __lhs); } // time_point >= template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -bool -operator>=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return !(__lhs < __rhs); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool +operator>=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) { + return !(__lhs < __rhs); } +#if _LIBCPP_STD_VER >= 20 + +template _Duration2> +_LIBCPP_HIDE_FROM_ABI constexpr auto +operator<=>(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) { + return __lhs.time_since_epoch() <=> __rhs.time_since_epoch(); +} + +#endif // _LIBCPP_STD_VER >= 20 + // time_point operator+(time_point x, duration y); template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> -operator+(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> _Tr; - return _Tr (__lhs.time_since_epoch() + __rhs); +inline _LIBCPP_HIDE_FROM_ABI +_LIBCPP_CONSTEXPR_SINCE_CXX14 time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> +operator+(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + typedef time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> _Tr; + return _Tr(__lhs.time_since_epoch() + __rhs); } // time_point operator+(duration x, time_point y); template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -time_point<_Clock, typename common_type, _Duration2>::type> -operator+(const duration<_Rep1, _Period1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return __rhs + __lhs; +inline _LIBCPP_HIDE_FROM_ABI +_LIBCPP_CONSTEXPR_SINCE_CXX14 time_point<_Clock, typename common_type, _Duration2>::type> +operator+(const duration<_Rep1, _Period1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) { + return __rhs + __lhs; } // time_point operator-(time_point x, duration y); template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> -operator-(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> _Ret; - return _Ret(__lhs.time_since_epoch() -__rhs); +inline _LIBCPP_HIDE_FROM_ABI +_LIBCPP_CONSTEXPR_SINCE_CXX14 time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> +operator-(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs) { + typedef time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> _Ret; + return _Ret(__lhs.time_since_epoch() - __rhs); } // duration operator-(time_point x, time_point y); template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -typename common_type<_Duration1, _Duration2>::type -operator-(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return __lhs.time_since_epoch() - __rhs.time_since_epoch(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename common_type<_Duration1, _Duration2>::type +operator-(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) { + return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } } // namespace chrono diff --git a/include/c++/v1/__chrono/weekday.h b/include/c++/v1/__chrono/weekday.h index e0bc8a4c..86c780cc 100644 --- a/include/c++/v1/__chrono/weekday.h +++ b/include/c++/v1/__chrono/weekday.h @@ -20,166 +20,167 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { class weekday_indexed; class weekday_last; class weekday { private: - unsigned char __wd_; - _LIBCPP_HIDE_FROM_ABI static constexpr unsigned char __weekday_from_days(int __days) noexcept; + unsigned char __wd_; + _LIBCPP_HIDE_FROM_ABI static constexpr unsigned char __weekday_from_days(int __days) noexcept; + public: - _LIBCPP_HIDE_FROM_ABI weekday() = default; - _LIBCPP_HIDE_FROM_ABI inline explicit constexpr weekday(unsigned __val) noexcept : __wd_(static_cast(__val == 7 ? 0 : __val)) {} - _LIBCPP_HIDE_FROM_ABI inline constexpr weekday(const sys_days& __sysd) noexcept - : __wd_(__weekday_from_days(__sysd.time_since_epoch().count())) {} + weekday() = default; + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr weekday(unsigned __val) noexcept + : __wd_(static_cast(__val == 7 ? 0 : __val)) {} + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday(const sys_days& __sysd) noexcept + : __wd_(__weekday_from_days(__sysd.time_since_epoch().count())) {} _LIBCPP_HIDE_FROM_ABI inline explicit constexpr weekday(const local_days& __locd) noexcept - : __wd_(__weekday_from_days(__locd.time_since_epoch().count())) {} - - _LIBCPP_HIDE_FROM_ABI inline constexpr weekday& operator++() noexcept { __wd_ = (__wd_ == 6 ? 0 : __wd_ + 1); return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr weekday operator++(int) noexcept { weekday __tmp = *this; ++(*this); return __tmp; } - _LIBCPP_HIDE_FROM_ABI inline constexpr weekday& operator--() noexcept { __wd_ = (__wd_ == 0 ? 6 : __wd_ - 1); return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr weekday operator--(int) noexcept { weekday __tmp = *this; --(*this); return __tmp; } - _LIBCPP_HIDE_FROM_ABI constexpr weekday& operator+=(const days& __dd) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr weekday& operator-=(const days& __dd) noexcept; - _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned c_encoding() const noexcept { return __wd_; } + : __wd_(__weekday_from_days(__locd.time_since_epoch().count())) {} + + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday& operator++() noexcept { + __wd_ = (__wd_ == 6 ? 0 : __wd_ + 1); + return *this; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday operator++(int) noexcept { + weekday __tmp = *this; + ++(*this); + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday& operator--() noexcept { + __wd_ = (__wd_ == 0 ? 6 : __wd_ - 1); + return *this; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday operator--(int) noexcept { + weekday __tmp = *this; + --(*this); + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI constexpr weekday& operator+=(const days& __dd) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr weekday& operator-=(const days& __dd) noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned c_encoding() const noexcept { return __wd_; } _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned iso_encoding() const noexcept { return __wd_ == 0u ? 7 : __wd_; } _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __wd_ <= 6; } - _LIBCPP_HIDE_FROM_ABI constexpr weekday_indexed operator[](unsigned __index) const noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr weekday_last operator[](last_spec) const noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr weekday_indexed operator[](unsigned __index) const noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr weekday_last operator[](last_spec) const noexcept; }; - // https://howardhinnant.github.io/date_algorithms.html#weekday_from_days -_LIBCPP_HIDE_FROM_ABI inline constexpr -unsigned char weekday::__weekday_from_days(int __days) noexcept -{ - return static_cast( - static_cast(__days >= -4 ? (__days+4) % 7 : (__days+5) % 7 + 6) - ); +_LIBCPP_HIDE_FROM_ABI inline constexpr unsigned char weekday::__weekday_from_days(int __days) noexcept { + return static_cast(static_cast(__days >= -4 ? (__days + 4) % 7 : (__days + 5) % 7 + 6)); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const weekday& __lhs, const weekday& __rhs) noexcept -{ return __lhs.c_encoding() == __rhs.c_encoding(); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator!=(const weekday& __lhs, const weekday& __rhs) noexcept -{ return !(__lhs == __rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator==(const weekday& __lhs, const weekday& __rhs) noexcept { + return __lhs.c_encoding() == __rhs.c_encoding(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator< (const weekday& __lhs, const weekday& __rhs) noexcept -{ return __lhs.c_encoding() < __rhs.c_encoding(); } +// TODO(LLVM 20): Remove the escape hatch +# ifdef _LIBCPP_ENABLE_REMOVED_WEEKDAY_RELATIONAL_OPERATORS +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator<(const weekday& __lhs, const weekday& __rhs) noexcept { + return __lhs.c_encoding() < __rhs.c_encoding(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator> (const weekday& __lhs, const weekday& __rhs) noexcept -{ return __rhs < __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator>(const weekday& __lhs, const weekday& __rhs) noexcept { + return __rhs < __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator<=(const weekday& __lhs, const weekday& __rhs) noexcept -{ return !(__rhs < __lhs);} +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator<=(const weekday& __lhs, const weekday& __rhs) noexcept { + return !(__rhs < __lhs); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator>=(const weekday& __lhs, const weekday& __rhs) noexcept -{ return !(__lhs < __rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator>=(const weekday& __lhs, const weekday& __rhs) noexcept { + return !(__lhs < __rhs); +} +# endif // _LIBCPP_ENABLE_REMOVED_WEEKDAY_RELATIONAL_OPERATORS -_LIBCPP_HIDE_FROM_ABI constexpr -weekday operator+(const weekday& __lhs, const days& __rhs) noexcept -{ - auto const __mu = static_cast(__lhs.c_encoding()) + __rhs.count(); - auto const __yr = (__mu >= 0 ? __mu : __mu - 6) / 7; - return weekday{static_cast(__mu - __yr * 7)}; +_LIBCPP_HIDE_FROM_ABI inline constexpr weekday operator+(const weekday& __lhs, const days& __rhs) noexcept { + auto const __mu = static_cast(__lhs.c_encoding()) + __rhs.count(); + auto const __yr = (__mu >= 0 ? __mu : __mu - 6) / 7; + return weekday{static_cast(__mu - __yr * 7)}; } -_LIBCPP_HIDE_FROM_ABI constexpr -weekday operator+(const days& __lhs, const weekday& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr weekday operator+(const days& __lhs, const weekday& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI constexpr -weekday operator-(const weekday& __lhs, const days& __rhs) noexcept -{ return __lhs + -__rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr weekday operator-(const weekday& __lhs, const days& __rhs) noexcept { + return __lhs + -__rhs; +} -_LIBCPP_HIDE_FROM_ABI constexpr -days operator-(const weekday& __lhs, const weekday& __rhs) noexcept -{ - const int __wdu = __lhs.c_encoding() - __rhs.c_encoding(); - const int __wk = (__wdu >= 0 ? __wdu : __wdu-6) / 7; - return days{__wdu - __wk * 7}; +_LIBCPP_HIDE_FROM_ABI inline constexpr days operator-(const weekday& __lhs, const weekday& __rhs) noexcept { + const int __wdu = __lhs.c_encoding() - __rhs.c_encoding(); + const int __wk = (__wdu >= 0 ? __wdu : __wdu - 6) / 7; + return days{__wdu - __wk * 7}; } -_LIBCPP_HIDE_FROM_ABI inline constexpr -weekday& weekday::operator+=(const days& __dd) noexcept -{ *this = *this + __dd; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr weekday& weekday::operator+=(const days& __dd) noexcept { + *this = *this + __dd; + return *this; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -weekday& weekday::operator-=(const days& __dd) noexcept -{ *this = *this - __dd; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr weekday& weekday::operator-=(const days& __dd) noexcept { + *this = *this - __dd; + return *this; +} class weekday_indexed { private: - chrono::weekday __wd_; - unsigned char __idx_; + chrono::weekday __wd_; + unsigned char __idx_; + public: - _LIBCPP_HIDE_FROM_ABI weekday_indexed() = default; - _LIBCPP_HIDE_FROM_ABI inline constexpr weekday_indexed(const chrono::weekday& __wdval, unsigned __idxval) noexcept - : __wd_{__wdval}, __idx_(__idxval) {} - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday weekday() const noexcept { return __wd_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned index() const noexcept { return __idx_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __wd_.ok() && __idx_ >= 1 && __idx_ <= 5; } + weekday_indexed() = default; + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday_indexed(const chrono::weekday& __wdval, unsigned __idxval) noexcept + : __wd_{__wdval}, __idx_(__idxval) {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday weekday() const noexcept { return __wd_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned index() const noexcept { return __idx_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __wd_.ok() && __idx_ >= 1 && __idx_ <= 5; } }; -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept -{ return __lhs.weekday() == __rhs.weekday() && __lhs.index() == __rhs.index(); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator!=(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept -{ return !(__lhs == __rhs); } - +_LIBCPP_HIDE_FROM_ABI inline constexpr bool +operator==(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept { + return __lhs.weekday() == __rhs.weekday() && __lhs.index() == __rhs.index(); +} class weekday_last { private: - chrono::weekday __wd_; + chrono::weekday __wd_; + public: - _LIBCPP_HIDE_FROM_ABI explicit constexpr weekday_last(const chrono::weekday& __val) noexcept - : __wd_{__val} {} - _LIBCPP_HIDE_FROM_ABI constexpr chrono::weekday weekday() const noexcept { return __wd_; } - _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept { return __wd_.ok(); } + _LIBCPP_HIDE_FROM_ABI explicit constexpr weekday_last(const chrono::weekday& __val) noexcept : __wd_{__val} {} + _LIBCPP_HIDE_FROM_ABI constexpr chrono::weekday weekday() const noexcept { return __wd_; } + _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept { return __wd_.ok(); } }; -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const weekday_last& __lhs, const weekday_last& __rhs) noexcept -{ return __lhs.weekday() == __rhs.weekday(); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator!=(const weekday_last& __lhs, const weekday_last& __rhs) noexcept -{ return !(__lhs == __rhs); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -weekday_indexed weekday::operator[](unsigned __index) const noexcept { return weekday_indexed{*this, __index}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator==(const weekday_last& __lhs, const weekday_last& __rhs) noexcept { + return __lhs.weekday() == __rhs.weekday(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -weekday_last weekday::operator[](last_spec) const noexcept { return weekday_last{*this}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr weekday_indexed weekday::operator[](unsigned __index) const noexcept { + return weekday_indexed{*this, __index}; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr weekday_last weekday::operator[](last_spec) const noexcept { + return weekday_last{*this}; +} -inline constexpr weekday Sunday{0}; -inline constexpr weekday Monday{1}; -inline constexpr weekday Tuesday{2}; -inline constexpr weekday Wednesday{3}; -inline constexpr weekday Thursday{4}; -inline constexpr weekday Friday{5}; -inline constexpr weekday Saturday{6}; +inline constexpr weekday Sunday{0}; +inline constexpr weekday Monday{1}; +inline constexpr weekday Tuesday{2}; +inline constexpr weekday Wednesday{3}; +inline constexpr weekday Thursday{4}; +inline constexpr weekday Friday{5}; +inline constexpr weekday Saturday{6}; } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_WEEKDAY_H diff --git a/include/c++/v1/__chrono/year.h b/include/c++/v1/__chrono/year.h index 79ee8a02..1899d09f 100644 --- a/include/c++/v1/__chrono/year.h +++ b/include/c++/v1/__chrono/year.h @@ -22,69 +22,85 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { class year { private: - short __y_; + short __y_; + public: - _LIBCPP_HIDE_FROM_ABI year() = default; - _LIBCPP_HIDE_FROM_ABI explicit inline constexpr year(int __val) noexcept : __y_(static_cast(__val)) {} - - _LIBCPP_HIDE_FROM_ABI inline constexpr year& operator++() noexcept { ++__y_; return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr year operator++(int) noexcept { year __tmp = *this; ++(*this); return __tmp; } - _LIBCPP_HIDE_FROM_ABI inline constexpr year& operator--() noexcept { --__y_; return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr year operator--(int) noexcept { year __tmp = *this; --(*this); return __tmp; } - _LIBCPP_HIDE_FROM_ABI constexpr year& operator+=(const years& __dy) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year& operator-=(const years& __dy) noexcept; - _LIBCPP_HIDE_FROM_ABI inline constexpr year operator+() const noexcept { return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr year operator-() const noexcept { return year{-__y_}; } - - _LIBCPP_HIDE_FROM_ABI inline constexpr bool is_leap() const noexcept { return __y_ % 4 == 0 && (__y_ % 100 != 0 || __y_ % 400 == 0); } - _LIBCPP_HIDE_FROM_ABI explicit inline constexpr operator int() const noexcept { return __y_; } - _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept; - _LIBCPP_HIDE_FROM_ABI static inline constexpr year min() noexcept { return year{-32767}; } - _LIBCPP_HIDE_FROM_ABI static inline constexpr year max() noexcept { return year{ 32767}; } + year() = default; + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr year(int __val) noexcept : __y_(static_cast(__val)) {} + + _LIBCPP_HIDE_FROM_ABI inline constexpr year& operator++() noexcept { + ++__y_; + return *this; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr year operator++(int) noexcept { + year __tmp = *this; + ++(*this); + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr year& operator--() noexcept { + --__y_; + return *this; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr year operator--(int) noexcept { + year __tmp = *this; + --(*this); + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI constexpr year& operator+=(const years& __dy) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year& operator-=(const years& __dy) noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr year operator+() const noexcept { return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr year operator-() const noexcept { return year{-__y_}; } + + _LIBCPP_HIDE_FROM_ABI inline constexpr bool is_leap() const noexcept { + return __y_ % 4 == 0 && (__y_ % 100 != 0 || __y_ % 400 == 0); + } + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr operator int() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept; + _LIBCPP_HIDE_FROM_ABI static inline constexpr year min() noexcept { return year{-32767}; } + _LIBCPP_HIDE_FROM_ABI static inline constexpr year max() noexcept { return year{32767}; } }; - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const year& __lhs, const year& __rhs) noexcept -{ return static_cast(__lhs) == static_cast(__rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator==(const year& __lhs, const year& __rhs) noexcept { + return static_cast(__lhs) == static_cast(__rhs); +} _LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const year& __lhs, const year& __rhs) noexcept { - return static_cast(__lhs) <=> static_cast(__rhs); + return static_cast(__lhs) <=> static_cast(__rhs); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -year operator+ (const year& __lhs, const years& __rhs) noexcept -{ return year(static_cast(__lhs) + __rhs.count()); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -year operator+ (const years& __lhs, const year& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year operator+(const year& __lhs, const years& __rhs) noexcept { + return year(static_cast(__lhs) + __rhs.count()); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year operator- (const year& __lhs, const years& __rhs) noexcept -{ return __lhs + -__rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year operator+(const years& __lhs, const year& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -years operator-(const year& __lhs, const year& __rhs) noexcept -{ return years{static_cast(__lhs) - static_cast(__rhs)}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year operator-(const year& __lhs, const years& __rhs) noexcept { + return __lhs + -__rhs; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr years operator-(const year& __lhs, const year& __rhs) noexcept { + return years{static_cast(__lhs) - static_cast(__rhs)}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year& year::operator+=(const years& __dy) noexcept -{ *this = *this + __dy; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year& year::operator+=(const years& __dy) noexcept { + *this = *this + __dy; + return *this; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year& year::operator-=(const years& __dy) noexcept -{ *this = *this - __dy; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year& year::operator-=(const years& __dy) noexcept { + *this = *this - __dy; + return *this; +} _LIBCPP_HIDE_FROM_ABI constexpr bool year::ok() const noexcept { static_assert(static_cast(std::numeric_limits::max()) == static_cast(max())); @@ -95,7 +111,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool year::ok() const noexcept { _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_POP_MACROS diff --git a/include/c++/v1/__chrono/year_month.h b/include/c++/v1/__chrono/year_month.h index 9f1e65c8..369ea38f 100644 --- a/include/c++/v1/__chrono/year_month.h +++ b/include/c++/v1/__chrono/year_month.h @@ -20,82 +20,104 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { class year_month { - chrono::year __y_; - chrono::month __m_; + chrono::year __y_; + chrono::month __m_; + public: - _LIBCPP_HIDE_FROM_ABI year_month() = default; - _LIBCPP_HIDE_FROM_ABI constexpr year_month(const chrono::year& __yval, const chrono::month& __mval) noexcept - : __y_{__yval}, __m_{__mval} {} - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator+=(const months& __dm) noexcept { this->__m_ += __dm; return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator-=(const months& __dm) noexcept { this->__m_ -= __dm; return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator+=(const years& __dy) noexcept { this->__y_ += __dy; return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator-=(const years& __dy) noexcept { this->__y_ -= __dy; return *this; } - _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __y_.ok() && __m_.ok(); } + year_month() = default; + _LIBCPP_HIDE_FROM_ABI constexpr year_month(const chrono::year& __yval, const chrono::month& __mval) noexcept + : __y_{__yval}, __m_{__mval} {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator+=(const months& __dm) noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator-=(const months& __dm) noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator+=(const years& __dy) noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator-=(const years& __dy) noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __y_.ok() && __m_.ok(); } }; -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month operator/(const year& __y, const month& __m) noexcept { return year_month{__y, __m}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month operator/(const year& __y, const month& __m) noexcept { + return year_month{__y, __m}; +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month operator/(const year& __y, int __m) noexcept { + return year_month{__y, month(__m)}; +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator==(const year_month& __lhs, const year_month& __rhs) noexcept { + return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month(); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr strong_ordering +operator<=>(const year_month& __lhs, const year_month& __rhs) noexcept { + if (auto __c = __lhs.year() <=> __rhs.year(); __c != 0) + return __c; + return __lhs.month() <=> __rhs.month(); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month operator+(const year_month& __lhs, const months& __rhs) noexcept { + int __dmi = static_cast(static_cast(__lhs.month())) - 1 + __rhs.count(); + const int __dy = (__dmi >= 0 ? __dmi : __dmi - 11) / 12; + __dmi = __dmi - __dy * 12 + 1; + return (__lhs.year() + years(__dy)) / month(static_cast(__dmi)); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month operator/(const year& __y, int __m) noexcept { return year_month{__y, month(__m)}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month operator+(const months& __lhs, const year_month& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const year_month& __lhs, const year_month& __rhs) noexcept -{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month(); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month operator+(const year_month& __lhs, const years& __rhs) noexcept { + return (__lhs.year() + __rhs) / __lhs.month(); +} -_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const year_month& __lhs, const year_month& __rhs) noexcept { - if (auto __c = __lhs.year() <=> __rhs.year(); __c != 0) - return __c; - return __lhs.month() <=> __rhs.month(); +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month operator+(const years& __lhs, const year_month& __rhs) noexcept { + return __rhs + __lhs; } -_LIBCPP_HIDE_FROM_ABI constexpr -year_month operator+(const year_month& __lhs, const months& __rhs) noexcept -{ - int __dmi = static_cast(static_cast(__lhs.month())) - 1 + __rhs.count(); - const int __dy = (__dmi >= 0 ? __dmi : __dmi-11) / 12; - __dmi = __dmi - __dy * 12 + 1; - return (__lhs.year() + years(__dy)) / month(static_cast(__dmi)); +_LIBCPP_HIDE_FROM_ABI inline constexpr months operator-(const year_month& __lhs, const year_month& __rhs) noexcept { + return (__lhs.year() - __rhs.year()) + + months(static_cast(__lhs.month()) - static_cast(__rhs.month())); } -_LIBCPP_HIDE_FROM_ABI constexpr -year_month operator+(const months& __lhs, const year_month& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month operator-(const year_month& __lhs, const months& __rhs) noexcept { + return __lhs + -__rhs; +} -_LIBCPP_HIDE_FROM_ABI constexpr -year_month operator+(const year_month& __lhs, const years& __rhs) noexcept -{ return (__lhs.year() + __rhs) / __lhs.month(); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month operator-(const year_month& __lhs, const years& __rhs) noexcept { + return __lhs + -__rhs; +} -_LIBCPP_HIDE_FROM_ABI constexpr -year_month operator+(const years& __lhs, const year_month& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month& year_month::operator+=(const months& __dm) noexcept { + *this = *this + __dm; + return *this; +} -_LIBCPP_HIDE_FROM_ABI constexpr -months operator-(const year_month& __lhs, const year_month& __rhs) noexcept -{ return (__lhs.year() - __rhs.year()) + months(static_cast(__lhs.month()) - static_cast(__rhs.month())); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month& year_month::operator-=(const months& __dm) noexcept { + *this = *this - __dm; + return *this; +} -_LIBCPP_HIDE_FROM_ABI constexpr -year_month operator-(const year_month& __lhs, const months& __rhs) noexcept -{ return __lhs + -__rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month& year_month::operator+=(const years& __dy) noexcept { + *this = *this + __dy; + return *this; +} -_LIBCPP_HIDE_FROM_ABI constexpr -year_month operator-(const year_month& __lhs, const years& __rhs) noexcept -{ return __lhs + -__rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month& year_month::operator-=(const years& __dy) noexcept { + *this = *this - __dy; + return *this; +} } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_YEAR_MONTH_H diff --git a/include/c++/v1/__chrono/year_month_day.h b/include/c++/v1/__chrono/year_month_day.h index b7490147..b06c0be0 100644 --- a/include/c++/v1/__chrono/year_month_day.h +++ b/include/c++/v1/__chrono/year_month_day.h @@ -27,281 +27,311 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { class year_month_day_last; class year_month_day { private: - chrono::year __y_; - chrono::month __m_; - chrono::day __d_; + chrono::year __y_; + chrono::month __m_; + chrono::day __d_; + public: - _LIBCPP_HIDE_FROM_ABI year_month_day() = default; - _LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day( - const chrono::year& __yval, const chrono::month& __mval, const chrono::day& __dval) noexcept - : __y_{__yval}, __m_{__mval}, __d_{__dval} {} - _LIBCPP_HIDE_FROM_ABI constexpr year_month_day(const year_month_day_last& __ymdl) noexcept; - _LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day(const sys_days& __sysd) noexcept - : year_month_day(__from_days(__sysd.time_since_epoch())) {} - _LIBCPP_HIDE_FROM_ABI inline explicit constexpr year_month_day(const local_days& __locd) noexcept - : year_month_day(__from_days(__locd.time_since_epoch())) {} - - _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator+=(const months& __dm) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator-=(const months& __dm) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator+=(const years& __dy) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator-=(const years& __dy) noexcept; - - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::day day() const noexcept { return __d_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; } - _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { return local_days{__to_days()}; } - - _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept; - - _LIBCPP_HIDE_FROM_ABI static constexpr year_month_day __from_days(days __d) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr days __to_days() const noexcept; + year_month_day() = default; + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day( + const chrono::year& __yval, const chrono::month& __mval, const chrono::day& __dval) noexcept + : __y_{__yval}, __m_{__mval}, __d_{__dval} {} + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day(const year_month_day_last& __ymdl) noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day(const sys_days& __sysd) noexcept + : year_month_day(__from_days(__sysd.time_since_epoch())) {} + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr year_month_day(const local_days& __locd) noexcept + : year_month_day(__from_days(__locd.time_since_epoch())) {} + + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator+=(const months& __dm) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator-=(const months& __dm) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator+=(const years& __dy) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator-=(const years& __dy) noexcept; + + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::day day() const noexcept { return __d_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; } + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { + return local_days{__to_days()}; + } + + _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept; + + _LIBCPP_HIDE_FROM_ABI static constexpr year_month_day __from_days(days __d) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr days __to_days() const noexcept; }; - // https://howardhinnant.github.io/date_algorithms.html#civil_from_days -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day year_month_day::__from_days(days __d) noexcept -{ - static_assert(numeric_limits::digits >= 18, ""); - static_assert(numeric_limits::digits >= 20 , ""); - const int __z = __d.count() + 719468; - const int __era = (__z >= 0 ? __z : __z - 146096) / 146097; - const unsigned __doe = static_cast(__z - __era * 146097); // [0, 146096] - const unsigned __yoe = (__doe - __doe/1460 + __doe/36524 - __doe/146096) / 365; // [0, 399] - const int __yr = static_cast(__yoe) + __era * 400; - const unsigned __doy = __doe - (365 * __yoe + __yoe/4 - __yoe/100); // [0, 365] - const unsigned __mp = (5 * __doy + 2)/153; // [0, 11] - const unsigned __dy = __doy - (153 * __mp + 2)/5 + 1; // [1, 31] - const unsigned __mth = __mp + (__mp < 10 ? 3 : -9); // [1, 12] - return year_month_day{chrono::year{__yr + (__mth <= 2)}, chrono::month{__mth}, chrono::day{__dy}}; +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day year_month_day::__from_days(days __d) noexcept { + static_assert(numeric_limits::digits >= 18, ""); + static_assert(numeric_limits::digits >= 20, ""); + const int __z = __d.count() + 719468; + const int __era = (__z >= 0 ? __z : __z - 146096) / 146097; + const unsigned __doe = static_cast(__z - __era * 146097); // [0, 146096] + const unsigned __yoe = (__doe - __doe / 1460 + __doe / 36524 - __doe / 146096) / 365; // [0, 399] + const int __yr = static_cast(__yoe) + __era * 400; + const unsigned __doy = __doe - (365 * __yoe + __yoe / 4 - __yoe / 100); // [0, 365] + const unsigned __mp = (5 * __doy + 2) / 153; // [0, 11] + const unsigned __dy = __doy - (153 * __mp + 2) / 5 + 1; // [1, 31] + const unsigned __mth = __mp + (__mp < 10 ? 3 : -9); // [1, 12] + return year_month_day{chrono::year{__yr + (__mth <= 2)}, chrono::month{__mth}, chrono::day{__dy}}; } // https://howardhinnant.github.io/date_algorithms.html#days_from_civil -_LIBCPP_HIDE_FROM_ABI inline constexpr -days year_month_day::__to_days() const noexcept -{ - static_assert(numeric_limits::digits >= 18, ""); - static_assert(numeric_limits::digits >= 20 , ""); - - const int __yr = static_cast(__y_) - (__m_ <= February); - const unsigned __mth = static_cast(__m_); - const unsigned __dy = static_cast(__d_); - - const int __era = (__yr >= 0 ? __yr : __yr - 399) / 400; - const unsigned __yoe = static_cast(__yr - __era * 400); // [0, 399] - const unsigned __doy = (153 * (__mth + (__mth > 2 ? -3 : 9)) + 2) / 5 + __dy-1; // [0, 365] - const unsigned __doe = __yoe * 365 + __yoe/4 - __yoe/100 + __doy; // [0, 146096] - return days{__era * 146097 + static_cast(__doe) - 719468}; +_LIBCPP_HIDE_FROM_ABI inline constexpr days year_month_day::__to_days() const noexcept { + static_assert(numeric_limits::digits >= 18, ""); + static_assert(numeric_limits::digits >= 20, ""); + + const int __yr = static_cast(__y_) - (__m_ <= February); + const unsigned __mth = static_cast(__m_); + const unsigned __dy = static_cast(__d_); + + const int __era = (__yr >= 0 ? __yr : __yr - 399) / 400; + const unsigned __yoe = static_cast(__yr - __era * 400); // [0, 399] + const unsigned __doy = (153 * (__mth + (__mth > 2 ? -3 : 9)) + 2) / 5 + __dy - 1; // [0, 365] + const unsigned __doe = __yoe * 365 + __yoe / 4 - __yoe / 100 + __doy; // [0, 146096] + return days{__era * 146097 + static_cast(__doe) - 719468}; } -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const year_month_day& __lhs, const year_month_day& __rhs) noexcept -{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day(); } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool +operator==(const year_month_day& __lhs, const year_month_day& __rhs) noexcept { + return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day(); +} -_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering +_LIBCPP_HIDE_FROM_ABI inline constexpr strong_ordering operator<=>(const year_month_day& __lhs, const year_month_day& __rhs) noexcept { - if (auto __c = __lhs.year() <=> __rhs.year(); __c != 0) - return __c; - if (auto __c = __lhs.month() <=> __rhs.month(); __c != 0) - return __c; - return __lhs.day() <=> __rhs.day(); + if (auto __c = __lhs.year() <=> __rhs.year(); __c != 0) + return __c; + if (auto __c = __lhs.month() <=> __rhs.month(); __c != 0) + return __c; + return __lhs.day() <=> __rhs.day(); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator/(const year_month& __lhs, const day& __rhs) noexcept -{ return year_month_day{__lhs.year(), __lhs.month(), __rhs}; } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator/(const year_month& __lhs, int __rhs) noexcept -{ return __lhs / day(__rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day operator/(const year_month& __lhs, const day& __rhs) noexcept { + return year_month_day{__lhs.year(), __lhs.month(), __rhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator/(const year& __lhs, const month_day& __rhs) noexcept -{ return __lhs / __rhs.month() / __rhs.day(); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day operator/(const year_month& __lhs, int __rhs) noexcept { + return __lhs / day(__rhs); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator/(int __lhs, const month_day& __rhs) noexcept -{ return year(__lhs) / __rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day operator/(const year& __lhs, const month_day& __rhs) noexcept { + return __lhs / __rhs.month() / __rhs.day(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator/(const month_day& __lhs, const year& __rhs) noexcept -{ return __rhs / __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day operator/(int __lhs, const month_day& __rhs) noexcept { + return year(__lhs) / __rhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator/(const month_day& __lhs, int __rhs) noexcept -{ return year(__rhs) / __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day operator/(const month_day& __lhs, const year& __rhs) noexcept { + return __rhs / __lhs; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day operator/(const month_day& __lhs, int __rhs) noexcept { + return year(__rhs) / __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator+(const year_month_day& __lhs, const months& __rhs) noexcept -{ return (__lhs.year()/__lhs.month() + __rhs)/__lhs.day(); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day +operator+(const year_month_day& __lhs, const months& __rhs) noexcept { + return (__lhs.year() / __lhs.month() + __rhs) / __lhs.day(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator+(const months& __lhs, const year_month_day& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day +operator+(const months& __lhs, const year_month_day& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator-(const year_month_day& __lhs, const months& __rhs) noexcept -{ return __lhs + -__rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day +operator-(const year_month_day& __lhs, const months& __rhs) noexcept { + return __lhs + -__rhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator+(const year_month_day& __lhs, const years& __rhs) noexcept -{ return (__lhs.year() + __rhs) / __lhs.month() / __lhs.day(); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day +operator+(const year_month_day& __lhs, const years& __rhs) noexcept { + return (__lhs.year() + __rhs) / __lhs.month() / __lhs.day(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator+(const years& __lhs, const year_month_day& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day +operator+(const years& __lhs, const year_month_day& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day operator-(const year_month_day& __lhs, const years& __rhs) noexcept -{ return __lhs + -__rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day +operator-(const year_month_day& __lhs, const years& __rhs) noexcept { + return __lhs + -__rhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator+=(const months& __dm) noexcept { + *this = *this + __dm; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator-=(const months& __dm) noexcept { + *this = *this - __dm; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator+=(const years& __dy) noexcept { + *this = *this + __dy; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator-=(const years& __dy) noexcept { + *this = *this - __dy; + return *this; +} class year_month_day_last { private: - chrono::year __y_; - chrono::month_day_last __mdl_; + chrono::year __y_; + chrono::month_day_last __mdl_; + public: - _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last(const year& __yval, const month_day_last& __mdlval) noexcept - : __y_{__yval}, __mdl_{__mdlval} {} - - _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator+=(const months& __m) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator-=(const months& __m) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator+=(const years& __y) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator-=(const years& __y) noexcept; - - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __mdl_.month(); } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month_day_last month_day_last() const noexcept { return __mdl_; } - _LIBCPP_HIDE_FROM_ABI constexpr chrono::day day() const noexcept; - _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{year()/month()/day()}; } - _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { return local_days{year()/month()/day()}; } - _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __y_.ok() && __mdl_.ok(); } + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last(const year& __yval, const month_day_last& __mdlval) noexcept + : __y_{__yval}, __mdl_{__mdlval} {} + + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator+=(const months& __m) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator-=(const months& __m) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator+=(const years& __y) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator-=(const years& __y) noexcept; + + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __mdl_.month(); } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month_day_last month_day_last() const noexcept { return __mdl_; } + _LIBCPP_HIDE_FROM_ABI constexpr chrono::day day() const noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { + return sys_days{year() / month() / day()}; + } + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { + return local_days{year() / month() / day()}; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __y_.ok() && __mdl_.ok(); } }; -_LIBCPP_HIDE_FROM_ABI inline constexpr -chrono::day year_month_day_last::day() const noexcept -{ - constexpr chrono::day __d[] = - { - chrono::day(31), chrono::day(28), chrono::day(31), - chrono::day(30), chrono::day(31), chrono::day(30), - chrono::day(31), chrono::day(31), chrono::day(30), - chrono::day(31), chrono::day(30), chrono::day(31) - }; - return (month() != February || !__y_.is_leap()) && month().ok() ? - __d[static_cast(month()) - 1] : chrono::day{29}; +_LIBCPP_HIDE_FROM_ABI inline constexpr chrono::day year_month_day_last::day() const noexcept { + constexpr chrono::day __d[] = { + chrono::day(31), + chrono::day(28), + chrono::day(31), + chrono::day(30), + chrono::day(31), + chrono::day(30), + chrono::day(31), + chrono::day(31), + chrono::day(30), + chrono::day(31), + chrono::day(30), + chrono::day(31)}; + return (month() != February || !__y_.is_leap()) && month().ok() + ? __d[static_cast(month()) - 1] + : chrono::day{29}; } -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept -{ return __lhs.year() == __rhs.year() && __lhs.month_day_last() == __rhs.month_day_last(); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator!=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept -{ return !(__lhs == __rhs); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator< (const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept -{ - if (__lhs.year() < __rhs.year()) return true; - if (__lhs.year() > __rhs.year()) return false; - return __lhs.month_day_last() < __rhs.month_day_last(); +_LIBCPP_HIDE_FROM_ABI inline constexpr bool +operator==(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept { + return __lhs.year() == __rhs.year() && __lhs.month_day_last() == __rhs.month_day_last(); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator> (const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept -{ return __rhs < __lhs; } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator<=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept -{ return !(__rhs < __lhs);} - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator>=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept -{ return !(__lhs < __rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr strong_ordering +operator<=>(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept { + if (auto __c = __lhs.year() <=> __rhs.year(); __c != 0) + return __c; + return __lhs.month_day_last() <=> __rhs.month_day_last(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day_last operator/(const year_month& __lhs, last_spec) noexcept -{ return year_month_day_last{__lhs.year(), month_day_last{__lhs.month()}}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last operator/(const year_month& __lhs, last_spec) noexcept { + return year_month_day_last{__lhs.year(), month_day_last{__lhs.month()}}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day_last operator/(const year& __lhs, const month_day_last& __rhs) noexcept -{ return year_month_day_last{__lhs, __rhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last +operator/(const year& __lhs, const month_day_last& __rhs) noexcept { + return year_month_day_last{__lhs, __rhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day_last operator/(int __lhs, const month_day_last& __rhs) noexcept -{ return year_month_day_last{year{__lhs}, __rhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last operator/(int __lhs, const month_day_last& __rhs) noexcept { + return year_month_day_last{year{__lhs}, __rhs}; +} _LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last -operator/(const month_day_last& __lhs, const year& __rhs) noexcept -{ return __rhs / __lhs; } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day_last operator/(const month_day_last& __lhs, int __rhs) noexcept -{ return year{__rhs} / __lhs; } +operator/(const month_day_last& __lhs, const year& __rhs) noexcept { + return __rhs / __lhs; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last operator/(const month_day_last& __lhs, int __rhs) noexcept { + return year{__rhs} / __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day_last operator+(const year_month_day_last& __lhs, const months& __rhs) noexcept -{ return (__lhs.year() / __lhs.month() + __rhs) / last; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last +operator+(const year_month_day_last& __lhs, const months& __rhs) noexcept { + return (__lhs.year() / __lhs.month() + __rhs) / last; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day_last operator+(const months& __lhs, const year_month_day_last& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last +operator+(const months& __lhs, const year_month_day_last& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day_last operator-(const year_month_day_last& __lhs, const months& __rhs) noexcept -{ return __lhs + (-__rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last +operator-(const year_month_day_last& __lhs, const months& __rhs) noexcept { + return __lhs + (-__rhs); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day_last operator+(const year_month_day_last& __lhs, const years& __rhs) noexcept -{ return year_month_day_last{__lhs.year() + __rhs, __lhs.month_day_last()}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last +operator+(const year_month_day_last& __lhs, const years& __rhs) noexcept { + return year_month_day_last{__lhs.year() + __rhs, __lhs.month_day_last()}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day_last operator+(const years& __lhs, const year_month_day_last& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last +operator+(const years& __lhs, const year_month_day_last& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day_last operator-(const year_month_day_last& __lhs, const years& __rhs) noexcept -{ return __lhs + (-__rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last +operator-(const year_month_day_last& __lhs, const years& __rhs) noexcept { + return __lhs + (-__rhs); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& year_month_day_last::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& year_month_day_last::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& year_month_day_last::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& year_month_day_last::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& +year_month_day_last::operator+=(const months& __dm) noexcept { + *this = *this + __dm; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& +year_month_day_last::operator-=(const months& __dm) noexcept { + *this = *this - __dm; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& +year_month_day_last::operator+=(const years& __dy) noexcept { + *this = *this + __dy; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& +year_month_day_last::operator-=(const years& __dy) noexcept { + *this = *this - __dy; + return *this; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_day::year_month_day(const year_month_day_last& __ymdl) noexcept +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day::year_month_day(const year_month_day_last& __ymdl) noexcept : __y_{__ymdl.year()}, __m_{__ymdl.month()}, __d_{__ymdl.day()} {} -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool year_month_day::ok() const noexcept -{ - if (!__y_.ok() || !__m_.ok()) return false; - return chrono::day{1} <= __d_ && __d_ <= (__y_ / __m_ / last).day(); +_LIBCPP_HIDE_FROM_ABI inline constexpr bool year_month_day::ok() const noexcept { + if (!__y_.ok() || !__m_.ok()) + return false; + return chrono::day{1} <= __d_ && __d_ <= (__y_ / __m_ / last).day(); } } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_YEAR_MONTH_DAY_H diff --git a/include/c++/v1/__chrono/year_month_weekday.h b/include/c++/v1/__chrono/year_month_weekday.h index 6604deaf..0c3dd494 100644 --- a/include/c++/v1/__chrono/year_month_weekday.h +++ b/include/c++/v1/__chrono/year_month_weekday.h @@ -27,229 +27,261 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -namespace chrono -{ +namespace chrono { class year_month_weekday { - chrono::year __y_; - chrono::month __m_; - chrono::weekday_indexed __wdi_; + chrono::year __y_; + chrono::month __m_; + chrono::weekday_indexed __wdi_; + public: - _LIBCPP_HIDE_FROM_ABI year_month_weekday() = default; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday(const chrono::year& __yval, const chrono::month& __mval, - const chrono::weekday_indexed& __wdival) noexcept - : __y_{__yval}, __m_{__mval}, __wdi_{__wdival} {} - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday(const sys_days& __sysd) noexcept - : year_month_weekday(__from_days(__sysd.time_since_epoch())) {} - _LIBCPP_HIDE_FROM_ABI inline explicit constexpr year_month_weekday(const local_days& __locd) noexcept - : year_month_weekday(__from_days(__locd.time_since_epoch())) {} - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator+=(const months&) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator-=(const months&) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator+=(const years&) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator-=(const years&) noexcept; - - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday weekday() const noexcept { return __wdi_.weekday(); } - _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned index() const noexcept { return __wdi_.index(); } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_indexed weekday_indexed() const noexcept { return __wdi_; } - - _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; } - _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { return local_days{__to_days()}; } - _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept - { - if (!__y_.ok() || !__m_.ok() || !__wdi_.ok()) return false; - if (__wdi_.index() <= 4) return true; - auto __nth_weekday_day = - __wdi_.weekday() - - chrono::weekday{static_cast(__y_ / __m_ / 1)} + - days{(__wdi_.index() - 1) * 7 + 1}; - return static_cast(__nth_weekday_day.count()) <= - static_cast((__y_ / __m_ / last).day()); - } - - _LIBCPP_HIDE_FROM_ABI static constexpr year_month_weekday __from_days(days __d) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr days __to_days() const noexcept; + year_month_weekday() = default; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday( + const chrono::year& __yval, const chrono::month& __mval, const chrono::weekday_indexed& __wdival) noexcept + : __y_{__yval}, __m_{__mval}, __wdi_{__wdival} {} + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday(const sys_days& __sysd) noexcept + : year_month_weekday(__from_days(__sysd.time_since_epoch())) {} + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr year_month_weekday(const local_days& __locd) noexcept + : year_month_weekday(__from_days(__locd.time_since_epoch())) {} + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator+=(const months&) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator-=(const months&) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator+=(const years&) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator-=(const years&) noexcept; + + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday weekday() const noexcept { return __wdi_.weekday(); } + _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned index() const noexcept { return __wdi_.index(); } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_indexed weekday_indexed() const noexcept { return __wdi_; } + + _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; } + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { + return local_days{__to_days()}; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { + if (!__y_.ok() || !__m_.ok() || !__wdi_.ok()) + return false; + if (__wdi_.index() <= 4) + return true; + auto __nth_weekday_day = + __wdi_.weekday() - chrono::weekday{static_cast(__y_ / __m_ / 1)} + days{(__wdi_.index() - 1) * 7 + 1}; + return static_cast(__nth_weekday_day.count()) <= static_cast((__y_ / __m_ / last).day()); + } + + _LIBCPP_HIDE_FROM_ABI static constexpr year_month_weekday __from_days(days __d) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr days __to_days() const noexcept; }; -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday year_month_weekday::__from_days(days __d) noexcept -{ - const sys_days __sysd{__d}; - const chrono::weekday __wd = chrono::weekday(__sysd); - const year_month_day __ymd = year_month_day(__sysd); - return year_month_weekday{__ymd.year(), __ymd.month(), - __wd[(static_cast(__ymd.day())-1)/7+1]}; +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday year_month_weekday::__from_days(days __d) noexcept { + const sys_days __sysd{__d}; + const chrono::weekday __wd = chrono::weekday(__sysd); + const year_month_day __ymd = year_month_day(__sysd); + return year_month_weekday{__ymd.year(), __ymd.month(), __wd[(static_cast(__ymd.day()) - 1) / 7 + 1]}; } -_LIBCPP_HIDE_FROM_ABI inline constexpr -days year_month_weekday::__to_days() const noexcept -{ - const sys_days __sysd = sys_days(__y_/__m_/1); - return (__sysd + (__wdi_.weekday() - chrono::weekday(__sysd) + days{(__wdi_.index()-1)*7})) - .time_since_epoch(); +_LIBCPP_HIDE_FROM_ABI inline constexpr days year_month_weekday::__to_days() const noexcept { + const sys_days __sysd = sys_days(__y_ / __m_ / 1); + return (__sysd + (__wdi_.weekday() - chrono::weekday(__sysd) + days{(__wdi_.index() - 1) * 7})).time_since_epoch(); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept -{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.weekday_indexed() == __rhs.weekday_indexed(); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator!=(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept -{ return !(__lhs == __rhs); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator/(const year_month& __lhs, const weekday_indexed& __rhs) noexcept -{ return year_month_weekday{__lhs.year(), __lhs.month(), __rhs}; } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator/(const year& __lhs, const month_weekday& __rhs) noexcept -{ return year_month_weekday{__lhs, __rhs.month(), __rhs.weekday_indexed()}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool +operator==(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept { + return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && + __lhs.weekday_indexed() == __rhs.weekday_indexed(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator/(int __lhs, const month_weekday& __rhs) noexcept -{ return year(__lhs) / __rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday +operator/(const year_month& __lhs, const weekday_indexed& __rhs) noexcept { + return year_month_weekday{__lhs.year(), __lhs.month(), __rhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator/(const month_weekday& __lhs, const year& __rhs) noexcept -{ return __rhs / __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday +operator/(const year& __lhs, const month_weekday& __rhs) noexcept { + return year_month_weekday{__lhs, __rhs.month(), __rhs.weekday_indexed()}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator/(const month_weekday& __lhs, int __rhs) noexcept -{ return year(__rhs) / __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday operator/(int __lhs, const month_weekday& __rhs) noexcept { + return year(__lhs) / __rhs; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday +operator/(const month_weekday& __lhs, const year& __rhs) noexcept { + return __rhs / __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator+(const year_month_weekday& __lhs, const months& __rhs) noexcept -{ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_indexed(); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday operator/(const month_weekday& __lhs, int __rhs) noexcept { + return year(__rhs) / __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator+(const months& __lhs, const year_month_weekday& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday +operator+(const year_month_weekday& __lhs, const months& __rhs) noexcept { + return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_indexed(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator-(const year_month_weekday& __lhs, const months& __rhs) noexcept -{ return __lhs + (-__rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday +operator+(const months& __lhs, const year_month_weekday& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator+(const year_month_weekday& __lhs, const years& __rhs) noexcept -{ return year_month_weekday{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_indexed()}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday +operator-(const year_month_weekday& __lhs, const months& __rhs) noexcept { + return __lhs + (-__rhs); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator+(const years& __lhs, const year_month_weekday& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday +operator+(const year_month_weekday& __lhs, const years& __rhs) noexcept { + return year_month_weekday{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_indexed()}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday operator-(const year_month_weekday& __lhs, const years& __rhs) noexcept -{ return __lhs + (-__rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday +operator+(const years& __lhs, const year_month_weekday& __rhs) noexcept { + return __rhs + __lhs; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday +operator-(const year_month_weekday& __lhs, const years& __rhs) noexcept { + return __lhs + (-__rhs); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator+=(const months& __dm) noexcept { + *this = *this + __dm; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator-=(const months& __dm) noexcept { + *this = *this - __dm; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator+=(const years& __dy) noexcept { + *this = *this + __dy; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator-=(const years& __dy) noexcept { + *this = *this - __dy; + return *this; +} class year_month_weekday_last { private: - chrono::year __y_; - chrono::month __m_; - chrono::weekday_last __wdl_; -public: - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last(const chrono::year& __yval, const chrono::month& __mval, - const chrono::weekday_last& __wdlval) noexcept - : __y_{__yval}, __m_{__mval}, __wdl_{__wdlval} {} - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator+=(const months& __dm) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator-=(const months& __dm) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator+=(const years& __dy) noexcept; - _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator-=(const years& __dy) noexcept; - - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday weekday() const noexcept { return __wdl_.weekday(); } - _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_last weekday_last() const noexcept { return __wdl_; } - _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; } - _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { return local_days{__to_days()}; } - _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __y_.ok() && __m_.ok() && __wdl_.ok(); } - - _LIBCPP_HIDE_FROM_ABI constexpr days __to_days() const noexcept; + chrono::year __y_; + chrono::month __m_; + chrono::weekday_last __wdl_; +public: + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last( + const chrono::year& __yval, const chrono::month& __mval, const chrono::weekday_last& __wdlval) noexcept + : __y_{__yval}, __m_{__mval}, __wdl_{__wdlval} {} + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator+=(const months& __dm) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator-=(const months& __dm) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator+=(const years& __dy) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator-=(const years& __dy) noexcept; + + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday weekday() const noexcept { return __wdl_.weekday(); } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_last weekday_last() const noexcept { return __wdl_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; } + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { + return local_days{__to_days()}; + } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __y_.ok() && __m_.ok() && __wdl_.ok(); } + + _LIBCPP_HIDE_FROM_ABI constexpr days __to_days() const noexcept; }; -_LIBCPP_HIDE_FROM_ABI inline constexpr -days year_month_weekday_last::__to_days() const noexcept -{ - const sys_days __last = sys_days{__y_/__m_/last}; - return (__last - (chrono::weekday{__last} - __wdl_.weekday())).time_since_epoch(); - +_LIBCPP_HIDE_FROM_ABI inline constexpr days year_month_weekday_last::__to_days() const noexcept { + const sys_days __last = sys_days{__y_ / __m_ / last}; + return (__last - (chrono::weekday{__last} - __wdl_.weekday())).time_since_epoch(); } -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator==(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept -{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last(); } - -_LIBCPP_HIDE_FROM_ABI inline constexpr -bool operator!=(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept -{ return !(__lhs == __rhs); } - - -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator/(const year_month& __lhs, const weekday_last& __rhs) noexcept -{ return year_month_weekday_last{__lhs.year(), __lhs.month(), __rhs}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool +operator==(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept { + return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator/(const year& __lhs, const month_weekday_last& __rhs) noexcept -{ return year_month_weekday_last{__lhs, __rhs.month(), __rhs.weekday_last()}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator/(const year_month& __lhs, const weekday_last& __rhs) noexcept { + return year_month_weekday_last{__lhs.year(), __lhs.month(), __rhs}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator/(int __lhs, const month_weekday_last& __rhs) noexcept -{ return year(__lhs) / __rhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator/(const year& __lhs, const month_weekday_last& __rhs) noexcept { + return year_month_weekday_last{__lhs, __rhs.month(), __rhs.weekday_last()}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator/(const month_weekday_last& __lhs, const year& __rhs) noexcept -{ return __rhs / __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator/(int __lhs, const month_weekday_last& __rhs) noexcept { + return year(__lhs) / __rhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator/(const month_weekday_last& __lhs, int __rhs) noexcept -{ return year(__rhs) / __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator/(const month_weekday_last& __lhs, const year& __rhs) noexcept { + return __rhs / __lhs; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator/(const month_weekday_last& __lhs, int __rhs) noexcept { + return year(__rhs) / __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator+(const year_month_weekday_last& __lhs, const months& __rhs) noexcept -{ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_last(); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator+(const year_month_weekday_last& __lhs, const months& __rhs) noexcept { + return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_last(); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator+(const months& __lhs, const year_month_weekday_last& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator+(const months& __lhs, const year_month_weekday_last& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator-(const year_month_weekday_last& __lhs, const months& __rhs) noexcept -{ return __lhs + (-__rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator-(const year_month_weekday_last& __lhs, const months& __rhs) noexcept { + return __lhs + (-__rhs); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator+(const year_month_weekday_last& __lhs, const years& __rhs) noexcept -{ return year_month_weekday_last{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_last()}; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator+(const year_month_weekday_last& __lhs, const years& __rhs) noexcept { + return year_month_weekday_last{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_last()}; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator+(const years& __lhs, const year_month_weekday_last& __rhs) noexcept -{ return __rhs + __lhs; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator+(const years& __lhs, const year_month_weekday_last& __rhs) noexcept { + return __rhs + __lhs; +} -_LIBCPP_HIDE_FROM_ABI inline constexpr -year_month_weekday_last operator-(const year_month_weekday_last& __lhs, const years& __rhs) noexcept -{ return __lhs + (-__rhs); } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last +operator-(const year_month_weekday_last& __lhs, const years& __rhs) noexcept { + return __lhs + (-__rhs); +} -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& year_month_weekday_last::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& year_month_weekday_last::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& year_month_weekday_last::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; } -_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& year_month_weekday_last::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& +year_month_weekday_last::operator+=(const months& __dm) noexcept { + *this = *this + __dm; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& +year_month_weekday_last::operator-=(const months& __dm) noexcept { + *this = *this - __dm; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& +year_month_weekday_last::operator+=(const years& __dy) noexcept { + *this = *this + __dy; + return *this; +} +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& +year_month_weekday_last::operator-=(const years& __dy) noexcept { + *this = *this - __dy; + return *this; +} } // namespace chrono _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #endif // _LIBCPP___CHRONO_YEAR_MONTH_WEEKDAY_H diff --git a/include/c++/v1/__compare/common_comparison_category.h b/include/c++/v1/__compare/common_comparison_category.h index 06c4b284..7aeb3da0 100644 --- a/include/c++/v1/__compare/common_comparison_category.h +++ b/include/c++/v1/__compare/common_comparison_category.h @@ -20,21 +20,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __comp_detail { -enum _ClassifyCompCategory : unsigned { - _None, - _PartialOrd, - _WeakOrd, - _StrongOrd, - _CCC_Size -}; +enum _ClassifyCompCategory : unsigned { _None, _PartialOrd, _WeakOrd, _StrongOrd, _CCC_Size }; template -_LIBCPP_HIDE_FROM_ABI -constexpr _ClassifyCompCategory __type_to_enum() noexcept { +_LIBCPP_HIDE_FROM_ABI constexpr _ClassifyCompCategory __type_to_enum() noexcept { if (is_same_v<_Tp, partial_ordering>) return _PartialOrd; if (is_same_v<_Tp, weak_ordering>) @@ -45,8 +38,7 @@ constexpr _ClassifyCompCategory __type_to_enum() noexcept { } template -_LIBCPP_HIDE_FROM_ABI -constexpr _ClassifyCompCategory +_LIBCPP_HIDE_FROM_ABI constexpr _ClassifyCompCategory __compute_comp_type(const _ClassifyCompCategory (&__types)[_Size]) { int __seen[_CCC_Size] = {}; for (auto __type : __types) @@ -60,19 +52,18 @@ __compute_comp_type(const _ClassifyCompCategory (&__types)[_Size]) { return _StrongOrd; } -template -_LIBCPP_HIDE_FROM_ABI -constexpr auto __get_comp_type() { - using _CCC = _ClassifyCompCategory; +template +_LIBCPP_HIDE_FROM_ABI constexpr auto __get_comp_type() { + using _CCC = _ClassifyCompCategory; constexpr _CCC __type_kinds[] = {_StrongOrd, __type_to_enum<_Ts>()...}; - constexpr _CCC _Cat = __comp_detail::__compute_comp_type(__type_kinds); - if constexpr (_Cat == _None) + constexpr _CCC __cat = __comp_detail::__compute_comp_type(__type_kinds); + if constexpr (__cat == _None) return void(); - else if constexpr (_Cat == _PartialOrd) + else if constexpr (__cat == _PartialOrd) return partial_ordering::equivalent; - else if constexpr (_Cat == _WeakOrd) + else if constexpr (__cat == _WeakOrd) return weak_ordering::equivalent; - else if constexpr (_Cat == _StrongOrd) + else if constexpr (__cat == _StrongOrd) return strong_ordering::equivalent; else static_assert(_False, "unhandled case"); @@ -80,15 +71,15 @@ constexpr auto __get_comp_type() { } // namespace __comp_detail // [cmp.common], common comparison category type -template +template struct _LIBCPP_TEMPLATE_VIS common_comparison_category { using type = decltype(__comp_detail::__get_comp_type<_Ts...>()); }; -template +template using common_comparison_category_t = typename common_comparison_category<_Ts...>::type; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/compare_partial_order_fallback.h b/include/c++/v1/__compare/compare_partial_order_fallback.h index 06f03fe7..e0efa3cc 100644 --- a/include/c++/v1/__compare/compare_partial_order_fallback.h +++ b/include/c++/v1/__compare/compare_partial_order_fallback.h @@ -23,51 +23,53 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [cmp.alg] namespace __compare_partial_order_fallback { - struct __fn { - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) - noexcept(noexcept(_VSTD::partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - -> decltype( _VSTD::partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))) - { return _VSTD::partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); } +struct __fn { + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) noexcept( + noexcept(std::partial_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) + -> decltype(std::partial_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))) { + return std::partial_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)); + } - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) - noexcept(noexcept(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? partial_ordering::equivalent : - _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? partial_ordering::less : - _VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t) ? partial_ordering::greater : - partial_ordering::unordered)) - -> decltype( _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? partial_ordering::equivalent : - _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? partial_ordering::less : - _VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t) ? partial_ordering::greater : - partial_ordering::unordered) - { - return _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? partial_ordering::equivalent : - _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? partial_ordering::less : - _VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t) ? partial_ordering::greater : - partial_ordering::unordered; - } + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) noexcept(noexcept( + std::forward<_Tp>(__t) == std::forward<_Up>(__u) ? partial_ordering::equivalent + : std::forward<_Tp>(__t) < std::forward<_Up>(__u) ? partial_ordering::less + : std::forward<_Up>(__u) < std::forward<_Tp>(__t) + ? partial_ordering::greater + : partial_ordering::unordered)) + -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u) ? partial_ordering::equivalent + : std::forward<_Tp>(__t) < std::forward<_Up>(__u) ? partial_ordering::less + : std::forward<_Up>(__u) < std::forward<_Tp>(__t) + ? partial_ordering::greater + : partial_ordering::unordered) { + return std::forward<_Tp>(__t) == std::forward<_Up>(__u) ? partial_ordering::equivalent + : std::forward<_Tp>(__t) < std::forward<_Up>(__u) ? partial_ordering::less + : std::forward<_Up>(__u) < std::forward<_Tp>(__t) + ? partial_ordering::greater + : partial_ordering::unordered; + } - template - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const - noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()))) - -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>())) - { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()); } - }; + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<1>()))) + -> decltype(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<1>())) { + return __go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<1>()); + } +}; } // namespace __compare_partial_order_fallback inline namespace __cpo { - inline constexpr auto compare_partial_order_fallback = __compare_partial_order_fallback::__fn{}; +inline constexpr auto compare_partial_order_fallback = __compare_partial_order_fallback::__fn{}; } // namespace __cpo -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/compare_strong_order_fallback.h b/include/c++/v1/__compare/compare_strong_order_fallback.h index 86938681..a94d517e 100644 --- a/include/c++/v1/__compare/compare_strong_order_fallback.h +++ b/include/c++/v1/__compare/compare_strong_order_fallback.h @@ -23,48 +23,50 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [cmp.alg] namespace __compare_strong_order_fallback { - struct __fn { - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) - noexcept(noexcept(_VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - -> decltype( _VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))) - { return _VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); } +struct __fn { + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) noexcept( + noexcept(std::strong_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) + -> decltype(std::strong_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))) { + return std::strong_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)); + } - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) - noexcept(noexcept(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? strong_ordering::equal : - _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? strong_ordering::less : - strong_ordering::greater)) - -> decltype( _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? strong_ordering::equal : - _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? strong_ordering::less : - strong_ordering::greater) - { - return _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? strong_ordering::equal : - _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? strong_ordering::less : - strong_ordering::greater; - } + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) noexcept(noexcept( + std::forward<_Tp>(__t) == std::forward<_Up>(__u) ? strong_ordering::equal + : std::forward<_Tp>(__t) < std::forward<_Up>(__u) + ? strong_ordering::less + : strong_ordering::greater)) + -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u) ? strong_ordering::equal + : std::forward<_Tp>(__t) < std::forward<_Up>(__u) + ? strong_ordering::less + : strong_ordering::greater) { + return std::forward<_Tp>(__t) == std::forward<_Up>(__u) ? strong_ordering::equal + : std::forward<_Tp>(__t) < std::forward<_Up>(__u) + ? strong_ordering::less + : strong_ordering::greater; + } - template - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const - noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()))) - -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>())) - { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()); } - }; + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<1>()))) + -> decltype(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<1>())) { + return __go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<1>()); + } +}; } // namespace __compare_strong_order_fallback inline namespace __cpo { - inline constexpr auto compare_strong_order_fallback = __compare_strong_order_fallback::__fn{}; +inline constexpr auto compare_strong_order_fallback = __compare_strong_order_fallback::__fn{}; } // namespace __cpo -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/compare_three_way.h b/include/c++/v1/__compare/compare_three_way.h index fdbba04a..01c12076 100644 --- a/include/c++/v1/__compare/compare_three_way.h +++ b/include/c++/v1/__compare/compare_three_way.h @@ -20,21 +20,20 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 - -struct _LIBCPP_TEMPLATE_VIS compare_three_way -{ - template - requires three_way_comparable_with<_T1, _T2> - constexpr _LIBCPP_HIDE_FROM_ABI - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) <=> _VSTD::forward<_T2>(__u))) - { return _VSTD::forward<_T1>(__t) <=> _VSTD::forward<_T2>(__u); } - - using is_transparent = void; +#if _LIBCPP_STD_VER >= 20 + +struct _LIBCPP_TEMPLATE_VIS compare_three_way { + template + requires three_way_comparable_with<_T1, _T2> + constexpr _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) <=> std::forward<_T2>(__u))) { + return std::forward<_T1>(__t) <=> std::forward<_T2>(__u); + } + + using is_transparent = void; }; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/compare_three_way_result.h b/include/c++/v1/__compare/compare_three_way_result.h index 8885d7ef..d7508073 100644 --- a/include/c++/v1/__compare/compare_three_way_result.h +++ b/include/c++/v1/__compare/compare_three_way_result.h @@ -19,25 +19,26 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 -template -struct _LIBCPP_HIDE_FROM_ABI __compare_three_way_result { }; +template +struct _LIBCPP_HIDE_FROM_ABI __compare_three_way_result {}; -template -struct _LIBCPP_HIDE_FROM_ABI __compare_three_way_result<_Tp, _Up, decltype( - std::declval<__make_const_lvalue_ref<_Tp>>() <=> std::declval<__make_const_lvalue_ref<_Up>>(), void() -)> { - using type = decltype(std::declval<__make_const_lvalue_ref<_Tp>>() <=> std::declval<__make_const_lvalue_ref<_Up>>()); +template +struct _LIBCPP_HIDE_FROM_ABI __compare_three_way_result< + _Tp, + _Up, + decltype(std::declval<__make_const_lvalue_ref<_Tp>>() <=> std::declval<__make_const_lvalue_ref<_Up>>(), void())> { + using type = decltype(std::declval<__make_const_lvalue_ref<_Tp>>() <=> std::declval<__make_const_lvalue_ref<_Up>>()); }; -template -struct _LIBCPP_TEMPLATE_VIS compare_three_way_result : __compare_three_way_result<_Tp, _Up, void> { }; +template +struct _LIBCPP_TEMPLATE_VIS compare_three_way_result : __compare_three_way_result<_Tp, _Up, void> {}; -template +template using compare_three_way_result_t = typename compare_three_way_result<_Tp, _Up>::type; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/compare_weak_order_fallback.h b/include/c++/v1/__compare/compare_weak_order_fallback.h index f434dcb4..062b7b58 100644 --- a/include/c++/v1/__compare/compare_weak_order_fallback.h +++ b/include/c++/v1/__compare/compare_weak_order_fallback.h @@ -23,48 +23,50 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [cmp.alg] namespace __compare_weak_order_fallback { - struct __fn { - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) - noexcept(noexcept(_VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - -> decltype( _VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))) - { return _VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); } +struct __fn { + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) noexcept( + noexcept(std::weak_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) + -> decltype(std::weak_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))) { + return std::weak_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)); + } - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) - noexcept(noexcept(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? weak_ordering::equivalent : - _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? weak_ordering::less : - weak_ordering::greater)) - -> decltype( _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? weak_ordering::equivalent : - _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? weak_ordering::less : - weak_ordering::greater) - { - return _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? weak_ordering::equivalent : - _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? weak_ordering::less : - weak_ordering::greater; - } + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) noexcept(noexcept( + std::forward<_Tp>(__t) == std::forward<_Up>(__u) ? weak_ordering::equivalent + : std::forward<_Tp>(__t) < std::forward<_Up>(__u) + ? weak_ordering::less + : weak_ordering::greater)) + -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u) ? weak_ordering::equivalent + : std::forward<_Tp>(__t) < std::forward<_Up>(__u) + ? weak_ordering::less + : weak_ordering::greater) { + return std::forward<_Tp>(__t) == std::forward<_Up>(__u) ? weak_ordering::equivalent + : std::forward<_Tp>(__t) < std::forward<_Up>(__u) + ? weak_ordering::less + : weak_ordering::greater; + } - template - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const - noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()))) - -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>())) - { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()); } - }; + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<1>()))) + -> decltype(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<1>())) { + return __go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<1>()); + } +}; } // namespace __compare_weak_order_fallback inline namespace __cpo { - inline constexpr auto compare_weak_order_fallback = __compare_weak_order_fallback::__fn{}; +inline constexpr auto compare_weak_order_fallback = __compare_weak_order_fallback::__fn{}; } // namespace __cpo -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/is_eq.h b/include/c++/v1/__compare/is_eq.h index 49648924..9a82df1e 100644 --- a/include/c++/v1/__compare/is_eq.h +++ b/include/c++/v1/__compare/is_eq.h @@ -18,7 +18,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_HIDE_FROM_ABI inline constexpr bool is_eq(partial_ordering __c) noexcept { return __c == 0; } _LIBCPP_HIDE_FROM_ABI inline constexpr bool is_neq(partial_ordering __c) noexcept { return __c != 0; } @@ -27,7 +27,7 @@ _LIBCPP_HIDE_FROM_ABI inline constexpr bool is_lteq(partial_ordering __c) noexce _LIBCPP_HIDE_FROM_ABI inline constexpr bool is_gt(partial_ordering __c) noexcept { return __c > 0; } _LIBCPP_HIDE_FROM_ABI inline constexpr bool is_gteq(partial_ordering __c) noexcept { return __c >= 0; } -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/ordering.h b/include/c++/v1/__compare/ordering.h index ff148abf..2995d381 100644 --- a/include/c++/v1/__compare/ordering.h +++ b/include/c++/v1/__compare/ordering.h @@ -19,49 +19,38 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // exposition only -enum class _LIBCPP_ENUM_VIS _OrdResult : signed char { - __less = -1, - __equiv = 0, - __greater = 1 -}; +enum class _OrdResult : signed char { __less = -1, __equiv = 0, __greater = 1 }; -enum class _LIBCPP_ENUM_VIS _NCmpResult : signed char { - __unordered = -127 -}; +enum class _NCmpResult : signed char { __unordered = -127 }; class partial_ordering; class weak_ordering; class strong_ordering; -template +template inline constexpr bool __one_of_v = (is_same_v<_Tp, _Args> || ...); struct _CmpUnspecifiedParam { - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEVAL - _CmpUnspecifiedParam(int _CmpUnspecifiedParam::*) noexcept {} + _LIBCPP_HIDE_FROM_ABI constexpr _CmpUnspecifiedParam(int _CmpUnspecifiedParam::*) noexcept {} - template>> + template >> _CmpUnspecifiedParam(_Tp) = delete; }; class partial_ordering { using _ValueT = signed char; - _LIBCPP_HIDE_FROM_ABI - explicit constexpr partial_ordering(_OrdResult __v) noexcept - : __value_(_ValueT(__v)) {} + _LIBCPP_HIDE_FROM_ABI explicit constexpr partial_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {} - _LIBCPP_HIDE_FROM_ABI - explicit constexpr partial_ordering(_NCmpResult __v) noexcept - : __value_(_ValueT(__v)) {} + _LIBCPP_HIDE_FROM_ABI explicit constexpr partial_ordering(_NCmpResult __v) noexcept : __value_(_ValueT(__v)) {} - _LIBCPP_HIDE_FROM_ABI - constexpr bool __is_ordered() const noexcept { + _LIBCPP_HIDE_FROM_ABI constexpr bool __is_ordered() const noexcept { return __value_ != _ValueT(_NCmpResult::__unordered); } + public: // valid values static const partial_ordering less; @@ -70,63 +59,54 @@ class partial_ordering { static const partial_ordering unordered; // comparisons - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator==(partial_ordering, partial_ordering) noexcept = default; + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(partial_ordering, partial_ordering) noexcept = default; - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator==(partial_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(partial_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__is_ordered() && __v.__value_ == 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator< (partial_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<(partial_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__is_ordered() && __v.__value_ < 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator<=(partial_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<=(partial_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__is_ordered() && __v.__value_ <= 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator> (partial_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>(partial_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__is_ordered() && __v.__value_ > 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator>=(partial_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>=(partial_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__is_ordered() && __v.__value_ >= 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator< (_CmpUnspecifiedParam, partial_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<(_CmpUnspecifiedParam, partial_ordering __v) noexcept { return __v.__is_ordered() && 0 < __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator<=(_CmpUnspecifiedParam, partial_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<=(_CmpUnspecifiedParam, partial_ordering __v) noexcept { return __v.__is_ordered() && 0 <= __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator> (_CmpUnspecifiedParam, partial_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>(_CmpUnspecifiedParam, partial_ordering __v) noexcept { return __v.__is_ordered() && 0 > __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator>=(_CmpUnspecifiedParam, partial_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>=(_CmpUnspecifiedParam, partial_ordering __v) noexcept { return __v.__is_ordered() && 0 >= __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr partial_ordering operator<=>(partial_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr partial_ordering + operator<=>(partial_ordering __v, _CmpUnspecifiedParam) noexcept { return __v; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr partial_ordering operator<=>(_CmpUnspecifiedParam, partial_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr partial_ordering + operator<=>(_CmpUnspecifiedParam, partial_ordering __v) noexcept { return __v < 0 ? partial_ordering::greater : (__v > 0 ? partial_ordering::less : __v); } + private: _ValueT __value_; }; @@ -139,76 +119,62 @@ inline constexpr partial_ordering partial_ordering::unordered(_NCmpResult ::__un class weak_ordering { using _ValueT = signed char; - _LIBCPP_HIDE_FROM_ABI - explicit constexpr weak_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {} + _LIBCPP_HIDE_FROM_ABI explicit constexpr weak_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {} public: static const weak_ordering less; static const weak_ordering equivalent; static const weak_ordering greater; - _LIBCPP_HIDE_FROM_ABI - constexpr operator partial_ordering() const noexcept { + _LIBCPP_HIDE_FROM_ABI constexpr operator partial_ordering() const noexcept { return __value_ == 0 ? partial_ordering::equivalent - : (__value_ < 0 ? partial_ordering::less : partial_ordering::greater); + : (__value_ < 0 ? partial_ordering::less : partial_ordering::greater); } // comparisons - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator==(weak_ordering, weak_ordering) noexcept = default; + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(weak_ordering, weak_ordering) noexcept = default; - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator==(weak_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(weak_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__value_ == 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator< (weak_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<(weak_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__value_ < 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator<=(weak_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<=(weak_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__value_ <= 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator> (weak_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>(weak_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__value_ > 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator>=(weak_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>=(weak_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__value_ >= 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator< (_CmpUnspecifiedParam, weak_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<(_CmpUnspecifiedParam, weak_ordering __v) noexcept { return 0 < __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator<=(_CmpUnspecifiedParam, weak_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<=(_CmpUnspecifiedParam, weak_ordering __v) noexcept { return 0 <= __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator> (_CmpUnspecifiedParam, weak_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>(_CmpUnspecifiedParam, weak_ordering __v) noexcept { return 0 > __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator>=(_CmpUnspecifiedParam, weak_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>=(_CmpUnspecifiedParam, weak_ordering __v) noexcept { return 0 >= __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr weak_ordering operator<=>(weak_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr weak_ordering operator<=>(weak_ordering __v, _CmpUnspecifiedParam) noexcept { return __v; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr weak_ordering operator<=>(_CmpUnspecifiedParam, weak_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr weak_ordering operator<=>(_CmpUnspecifiedParam, weak_ordering __v) noexcept { return __v < 0 ? weak_ordering::greater : (__v > 0 ? weak_ordering::less : __v); } @@ -223,8 +189,7 @@ inline constexpr weak_ordering weak_ordering::greater(_OrdResult::__greater); class strong_ordering { using _ValueT = signed char; - _LIBCPP_HIDE_FROM_ABI - explicit constexpr strong_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {} + _LIBCPP_HIDE_FROM_ABI explicit constexpr strong_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {} public: static const strong_ordering less; @@ -233,74 +198,61 @@ class strong_ordering { static const strong_ordering greater; // conversions - _LIBCPP_HIDE_FROM_ABI - constexpr operator partial_ordering() const noexcept { + _LIBCPP_HIDE_FROM_ABI constexpr operator partial_ordering() const noexcept { return __value_ == 0 ? partial_ordering::equivalent - : (__value_ < 0 ? partial_ordering::less : partial_ordering::greater); + : (__value_ < 0 ? partial_ordering::less : partial_ordering::greater); } - _LIBCPP_HIDE_FROM_ABI - constexpr operator weak_ordering() const noexcept { - return __value_ == 0 ? weak_ordering::equivalent - : (__value_ < 0 ? weak_ordering::less : weak_ordering::greater); + _LIBCPP_HIDE_FROM_ABI constexpr operator weak_ordering() const noexcept { + return __value_ == 0 ? weak_ordering::equivalent : (__value_ < 0 ? weak_ordering::less : weak_ordering::greater); } // comparisons - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator==(strong_ordering, strong_ordering) noexcept = default; + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(strong_ordering, strong_ordering) noexcept = default; - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator==(strong_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(strong_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__value_ == 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator< (strong_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<(strong_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__value_ < 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator<=(strong_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<=(strong_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__value_ <= 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator> (strong_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>(strong_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__value_ > 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator>=(strong_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>=(strong_ordering __v, _CmpUnspecifiedParam) noexcept { return __v.__value_ >= 0; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator< (_CmpUnspecifiedParam, strong_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<(_CmpUnspecifiedParam, strong_ordering __v) noexcept { return 0 < __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator<=(_CmpUnspecifiedParam, strong_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<=(_CmpUnspecifiedParam, strong_ordering __v) noexcept { return 0 <= __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator> (_CmpUnspecifiedParam, strong_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>(_CmpUnspecifiedParam, strong_ordering __v) noexcept { return 0 > __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator>=(_CmpUnspecifiedParam, strong_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>=(_CmpUnspecifiedParam, strong_ordering __v) noexcept { return 0 >= __v.__value_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr strong_ordering operator<=>(strong_ordering __v, _CmpUnspecifiedParam) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr strong_ordering + operator<=>(strong_ordering __v, _CmpUnspecifiedParam) noexcept { return __v; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr strong_ordering operator<=>(_CmpUnspecifiedParam, strong_ordering __v) noexcept { + _LIBCPP_HIDE_FROM_ABI friend constexpr strong_ordering + operator<=>(_CmpUnspecifiedParam, strong_ordering __v) noexcept { return __v < 0 ? strong_ordering::greater : (__v > 0 ? strong_ordering::less : __v); } @@ -319,7 +271,7 @@ inline constexpr strong_ordering strong_ordering::greater(_OrdResult::__greater) template concept __comparison_category = __one_of_v<_Tp, partial_ordering, weak_ordering, strong_ordering>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/partial_order.h b/include/c++/v1/__compare/partial_order.h index aee07ebb..1d2fae63 100644 --- a/include/c++/v1/__compare/partial_order.h +++ b/include/c++/v1/__compare/partial_order.h @@ -24,50 +24,53 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [cmp.alg] namespace __partial_order { - struct __fn { - // NOLINTBEGIN(libcpp-robust-against-adl) partial_order should use ADL, but only here - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<2>) - noexcept(noexcept(partial_ordering(partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) - -> decltype( partial_ordering(partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - { return partial_ordering(partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } - // NOLINTEND(libcpp-robust-against-adl) +void partial_order() = delete; - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) - noexcept(noexcept(partial_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) - -> decltype( partial_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - { return partial_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } +struct __fn { + // NOLINTBEGIN(libcpp-robust-against-adl) partial_order should use ADL, but only here + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<2>) noexcept( + noexcept(partial_ordering(partial_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))))) + -> decltype(partial_ordering(partial_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) { + return partial_ordering(partial_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))); + } + // NOLINTEND(libcpp-robust-against-adl) - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) - noexcept(noexcept(partial_ordering(_VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) - -> decltype( partial_ordering(_VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - { return partial_ordering(_VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) noexcept( + noexcept(partial_ordering(compare_three_way()(std::forward<_Tp>(__t), std::forward<_Up>(__u))))) + -> decltype(partial_ordering(compare_three_way()(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) { + return partial_ordering(compare_three_way()(std::forward<_Tp>(__t), std::forward<_Up>(__u))); + } - template - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const - noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>()))) - -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>())) - { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>()); } - }; + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) noexcept( + noexcept(partial_ordering(std::weak_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))))) + -> decltype(partial_ordering(std::weak_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) { + return partial_ordering(std::weak_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<2>()))) + -> decltype(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<2>())) { + return __go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<2>()); + } +}; } // namespace __partial_order inline namespace __cpo { - inline constexpr auto partial_order = __partial_order::__fn{}; +inline constexpr auto partial_order = __partial_order::__fn{}; } // namespace __cpo -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/strong_order.h b/include/c++/v1/__compare/strong_order.h index 05856c20..8c363b56 100644 --- a/include/c++/v1/__compare/strong_order.h +++ b/include/c++/v1/__compare/strong_order.h @@ -13,11 +13,14 @@ #include <__compare/compare_three_way.h> #include <__compare/ordering.h> #include <__config> +#include <__math/exponential_functions.h> +#include <__math/traits.h> #include <__type_traits/conditional.h> #include <__type_traits/decay.h> +#include <__type_traits/is_floating_point.h> +#include <__type_traits/is_same.h> #include <__utility/forward.h> #include <__utility/priority_tag.h> -#include #include #include @@ -30,107 +33,108 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [cmp.alg] namespace __strong_order { - struct __fn { - // NOLINTBEGIN(libcpp-robust-against-adl) strong_order should use ADL, but only here - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<2>) - noexcept(noexcept(strong_ordering(strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) - -> decltype( strong_ordering(strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - { return strong_ordering(strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } - // NOLINTEND(libcpp-robust-against-adl) - - template> - requires is_same_v<_Dp, decay_t<_Up>> && is_floating_point_v<_Dp> - _LIBCPP_HIDE_FROM_ABI static constexpr strong_ordering - __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) noexcept - { - if constexpr (numeric_limits<_Dp>::is_iec559 && sizeof(_Dp) == sizeof(int32_t)) { - int32_t __rx = _VSTD::bit_cast(__t); - int32_t __ry = _VSTD::bit_cast(__u); - __rx = (__rx < 0) ? (numeric_limits::min() - __rx - 1) : __rx; - __ry = (__ry < 0) ? (numeric_limits::min() - __ry - 1) : __ry; - return (__rx <=> __ry); - } else if constexpr (numeric_limits<_Dp>::is_iec559 && sizeof(_Dp) == sizeof(int64_t)) { - int64_t __rx = _VSTD::bit_cast(__t); - int64_t __ry = _VSTD::bit_cast(__u); - __rx = (__rx < 0) ? (numeric_limits::min() - __rx - 1) : __rx; - __ry = (__ry < 0) ? (numeric_limits::min() - __ry - 1) : __ry; - return (__rx <=> __ry); - } else if (__t < __u) { - return strong_ordering::less; - } else if (__t > __u) { - return strong_ordering::greater; - } else if (__t == __u) { - if constexpr (numeric_limits<_Dp>::radix == 2) { - return _VSTD::signbit(__u) <=> _VSTD::signbit(__t); - } else { - // This is bullet 3 of the IEEE754 algorithm, relevant - // only for decimal floating-point; - // see https://stackoverflow.com/questions/69068075/ - if (__t == 0 || _VSTD::isinf(__t)) { - return _VSTD::signbit(__u) <=> _VSTD::signbit(__t); - } else { - int __texp, __uexp; - (void)_VSTD::frexp(__t, &__texp); - (void)_VSTD::frexp(__u, &__uexp); - return (__t < 0) ? (__texp <=> __uexp) : (__uexp <=> __texp); - } - } - } else { - // They're unordered, so one of them must be a NAN. - // The order is -QNAN, -SNAN, numbers, +SNAN, +QNAN. - bool __t_is_nan = _VSTD::isnan(__t); - bool __u_is_nan = _VSTD::isnan(__u); - bool __t_is_negative = _VSTD::signbit(__t); - bool __u_is_negative = _VSTD::signbit(__u); - using _IntType = conditional_t< - sizeof(__t) == sizeof(int32_t), int32_t, conditional_t< - sizeof(__t) == sizeof(int64_t), int64_t, void> - >; - if constexpr (is_same_v<_IntType, void>) { - static_assert(sizeof(_Dp) == 0, "std::strong_order is unimplemented for this floating-point type"); - } else if (__t_is_nan && __u_is_nan) { - // Order by sign bit, then by "payload bits" (we'll just use bit_cast). - if (__t_is_negative != __u_is_negative) { - return (__u_is_negative <=> __t_is_negative); - } else { - return _VSTD::bit_cast<_IntType>(__t) <=> _VSTD::bit_cast<_IntType>(__u); - } - } else if (__t_is_nan) { - return __t_is_negative ? strong_ordering::less : strong_ordering::greater; - } else { - return __u_is_negative ? strong_ordering::greater : strong_ordering::less; - } - } +void strong_order() = delete; + +struct __fn { + // NOLINTBEGIN(libcpp-robust-against-adl) strong_order should use ADL, but only here + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<2>) noexcept( + noexcept(strong_ordering(strong_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))))) + -> decltype(strong_ordering(strong_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) { + return strong_ordering(strong_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))); + } + // NOLINTEND(libcpp-robust-against-adl) + + template > + requires is_same_v<_Dp, decay_t<_Up>> && is_floating_point_v<_Dp> + _LIBCPP_HIDE_FROM_ABI static constexpr strong_ordering __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) noexcept { + if constexpr (numeric_limits<_Dp>::is_iec559 && sizeof(_Dp) == sizeof(int32_t)) { + int32_t __rx = std::bit_cast(__t); + int32_t __ry = std::bit_cast(__u); + __rx = (__rx < 0) ? (numeric_limits::min() - __rx - 1) : __rx; + __ry = (__ry < 0) ? (numeric_limits::min() - __ry - 1) : __ry; + return (__rx <=> __ry); + } else if constexpr (numeric_limits<_Dp>::is_iec559 && sizeof(_Dp) == sizeof(int64_t)) { + int64_t __rx = std::bit_cast(__t); + int64_t __ry = std::bit_cast(__u); + __rx = (__rx < 0) ? (numeric_limits::min() - __rx - 1) : __rx; + __ry = (__ry < 0) ? (numeric_limits::min() - __ry - 1) : __ry; + return (__rx <=> __ry); + } else if (__t < __u) { + return strong_ordering::less; + } else if (__t > __u) { + return strong_ordering::greater; + } else if (__t == __u) { + if constexpr (numeric_limits<_Dp>::radix == 2) { + return __math::signbit(__u) <=> __math::signbit(__t); + } else { + // This is bullet 3 of the IEEE754 algorithm, relevant + // only for decimal floating-point; + // see https://stackoverflow.com/questions/69068075/ + if (__t == 0 || __math::isinf(__t)) { + return __math::signbit(__u) <=> __math::signbit(__t); + } else { + int __texp, __uexp; + (void)__math::frexp(__t, &__texp); + (void)__math::frexp(__u, &__uexp); + return (__t < 0) ? (__texp <=> __uexp) : (__uexp <=> __texp); } + } + } else { + // They're unordered, so one of them must be a NAN. + // The order is -QNAN, -SNAN, numbers, +SNAN, +QNAN. + bool __t_is_nan = __math::isnan(__t); + bool __u_is_nan = __math::isnan(__u); + bool __t_is_negative = __math::signbit(__t); + bool __u_is_negative = __math::signbit(__u); + using _IntType = + conditional_t< sizeof(__t) == sizeof(int32_t), + int32_t, + conditional_t< sizeof(__t) == sizeof(int64_t), int64_t, void> >; + if constexpr (is_same_v<_IntType, void>) { + static_assert(sizeof(_Dp) == 0, "std::strong_order is unimplemented for this floating-point type"); + } else if (__t_is_nan && __u_is_nan) { + // Order by sign bit, then by "payload bits" (we'll just use bit_cast). + if (__t_is_negative != __u_is_negative) { + return (__u_is_negative <=> __t_is_negative); + } else { + return std::bit_cast<_IntType>(__t) <=> std::bit_cast<_IntType>(__u); + } + } else if (__t_is_nan) { + return __t_is_negative ? strong_ordering::less : strong_ordering::greater; + } else { + return __u_is_negative ? strong_ordering::greater : strong_ordering::less; + } + } + } + + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) noexcept( + noexcept(strong_ordering(compare_three_way()(std::forward<_Tp>(__t), std::forward<_Up>(__u))))) + -> decltype(strong_ordering(compare_three_way()(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) { + return strong_ordering(compare_three_way()(std::forward<_Tp>(__t), std::forward<_Up>(__u))); + } - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) - noexcept(noexcept(strong_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) - -> decltype( strong_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - { return strong_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } - - template - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const - noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>()))) - -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>())) - { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>()); } - }; + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<2>()))) + -> decltype(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<2>())) { + return __go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<2>()); + } +}; } // namespace __strong_order inline namespace __cpo { - inline constexpr auto strong_order = __strong_order::__fn{}; +inline constexpr auto strong_order = __strong_order::__fn{}; } // namespace __cpo -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/synth_three_way.h b/include/c++/v1/__compare/synth_three_way.h index 7d338987..e48ce497 100644 --- a/include/c++/v1/__compare/synth_three_way.h +++ b/include/c++/v1/__compare/synth_three_way.h @@ -21,30 +21,31 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [expos.only.func] -_LIBCPP_HIDE_FROM_ABI inline constexpr auto __synth_three_way = - [](const _Tp& __t, const _Up& __u) - requires requires { - { __t < __u } -> __boolean_testable; - { __u < __t } -> __boolean_testable; - } - { - if constexpr (three_way_comparable_with<_Tp, _Up>) { - return __t <=> __u; - } else { - if (__t < __u) return weak_ordering::less; - if (__u < __t) return weak_ordering::greater; - return weak_ordering::equivalent; - } - }; +_LIBCPP_HIDE_FROM_ABI inline constexpr auto __synth_three_way = [](const _Tp& __t, const _Up& __u) + requires requires { + { __t < __u } -> __boolean_testable; + { __u < __t } -> __boolean_testable; + } +{ + if constexpr (three_way_comparable_with<_Tp, _Up>) { + return __t <=> __u; + } else { + if (__t < __u) + return weak_ordering::less; + if (__u < __t) + return weak_ordering::greater; + return weak_ordering::equivalent; + } +}; template using __synth_three_way_result = decltype(std::__synth_three_way(std::declval<_Tp&>(), std::declval<_Up&>())); -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/three_way_comparable.h b/include/c++/v1/__compare/three_way_comparable.h index 6c98916d..7a44ea91 100644 --- a/include/c++/v1/__compare/three_way_comparable.h +++ b/include/c++/v1/__compare/three_way_comparable.h @@ -25,34 +25,30 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 -template -concept __compares_as = - same_as, _Cat>; +template +concept __compares_as = same_as, _Cat>; -template +template concept three_way_comparable = - __weakly_equality_comparable_with<_Tp, _Tp> && - __partially_ordered_with<_Tp, _Tp> && - requires(__make_const_lvalue_ref<_Tp> __a, __make_const_lvalue_ref<_Tp> __b) { - { __a <=> __b } -> __compares_as<_Cat>; - }; + __weakly_equality_comparable_with<_Tp, _Tp> && __partially_ordered_with<_Tp, _Tp> && + requires(__make_const_lvalue_ref<_Tp> __a, __make_const_lvalue_ref<_Tp> __b) { + { __a <=> __b } -> __compares_as<_Cat>; + }; -template +template concept three_way_comparable_with = - three_way_comparable<_Tp, _Cat> && - three_way_comparable<_Up, _Cat> && - common_reference_with<__make_const_lvalue_ref<_Tp>, __make_const_lvalue_ref<_Up>> && - three_way_comparable, __make_const_lvalue_ref<_Up>>, _Cat> && - __weakly_equality_comparable_with<_Tp, _Up> && - __partially_ordered_with<_Tp, _Up> && - requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { - { __t <=> __u } -> __compares_as<_Cat>; - { __u <=> __t } -> __compares_as<_Cat>; - }; - -#endif // _LIBCPP_STD_VER > 17 + three_way_comparable<_Tp, _Cat> && three_way_comparable<_Up, _Cat> && + common_reference_with<__make_const_lvalue_ref<_Tp>, __make_const_lvalue_ref<_Up>> && + three_way_comparable, __make_const_lvalue_ref<_Up>>, _Cat> && + __weakly_equality_comparable_with<_Tp, _Up> && __partially_ordered_with<_Tp, _Up> && + requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { + { __t <=> __u } -> __compares_as<_Cat>; + { __u <=> __t } -> __compares_as<_Cat>; + }; + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__compare/weak_order.h b/include/c++/v1/__compare/weak_order.h index abb24e36..1a3e85fe 100644 --- a/include/c++/v1/__compare/weak_order.h +++ b/include/c++/v1/__compare/weak_order.h @@ -13,10 +13,12 @@ #include <__compare/ordering.h> #include <__compare/strong_order.h> #include <__config> +#include <__math/traits.h> #include <__type_traits/decay.h> +#include <__type_traits/is_floating_point.h> +#include <__type_traits/is_same.h> #include <__utility/forward.h> #include <__utility/priority_tag.h> -#include #ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER # pragma GCC system_header @@ -24,78 +26,79 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [cmp.alg] namespace __weak_order { - struct __fn { - // NOLINTBEGIN(libcpp-robust-against-adl) weak_order should use ADL, but only here - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<3>) - noexcept(noexcept(weak_ordering(weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) - -> decltype( weak_ordering(weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - { return weak_ordering(weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } - // NOLINTEND(libcpp-robust-against-adl) +void weak_order() = delete; - template> - requires is_same_v<_Dp, decay_t<_Up>> && is_floating_point_v<_Dp> - _LIBCPP_HIDE_FROM_ABI static constexpr weak_ordering - __go(_Tp&& __t, _Up&& __u, __priority_tag<2>) noexcept - { - partial_ordering __po = (__t <=> __u); - if (__po == partial_ordering::less) { - return weak_ordering::less; - } else if (__po == partial_ordering::equivalent) { - return weak_ordering::equivalent; - } else if (__po == partial_ordering::greater) { - return weak_ordering::greater; - } else { - // Otherwise, at least one of them is a NaN. - bool __t_is_nan = _VSTD::isnan(__t); - bool __u_is_nan = _VSTD::isnan(__u); - bool __t_is_negative = _VSTD::signbit(__t); - bool __u_is_negative = _VSTD::signbit(__u); - if (__t_is_nan && __u_is_nan) { - return (__u_is_negative <=> __t_is_negative); - } else if (__t_is_nan) { - return __t_is_negative ? weak_ordering::less : weak_ordering::greater; - } else { - return __u_is_negative ? weak_ordering::greater : weak_ordering::less; - } - } - } +struct __fn { + // NOLINTBEGIN(libcpp-robust-against-adl) weak_order should use ADL, but only here + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<3>) noexcept( + noexcept(weak_ordering(weak_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))))) + -> decltype(weak_ordering(weak_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) { + return weak_ordering(weak_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))); + } + // NOLINTEND(libcpp-robust-against-adl) - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) - noexcept(noexcept(weak_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) - -> decltype( weak_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - { return weak_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + template > + requires is_same_v<_Dp, decay_t<_Up>> && is_floating_point_v<_Dp> + _LIBCPP_HIDE_FROM_ABI static constexpr weak_ordering __go(_Tp&& __t, _Up&& __u, __priority_tag<2>) noexcept { + partial_ordering __po = (__t <=> __u); + if (__po == partial_ordering::less) { + return weak_ordering::less; + } else if (__po == partial_ordering::equivalent) { + return weak_ordering::equivalent; + } else if (__po == partial_ordering::greater) { + return weak_ordering::greater; + } else { + // Otherwise, at least one of them is a NaN. + bool __t_is_nan = __math::isnan(__t); + bool __u_is_nan = __math::isnan(__u); + bool __t_is_negative = __math::signbit(__t); + bool __u_is_negative = __math::signbit(__u); + if (__t_is_nan && __u_is_nan) { + return (__u_is_negative <=> __t_is_negative); + } else if (__t_is_nan) { + return __t_is_negative ? weak_ordering::less : weak_ordering::greater; + } else { + return __u_is_negative ? weak_ordering::greater : weak_ordering::less; + } + } + } - template - requires is_same_v, decay_t<_Up>> - _LIBCPP_HIDE_FROM_ABI static constexpr auto - __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) - noexcept(noexcept(weak_ordering(_VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) - -> decltype( weak_ordering(_VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - { return weak_ordering(_VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) noexcept( + noexcept(weak_ordering(compare_three_way()(std::forward<_Tp>(__t), std::forward<_Up>(__u))))) + -> decltype(weak_ordering(compare_three_way()(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) { + return weak_ordering(compare_three_way()(std::forward<_Tp>(__t), std::forward<_Up>(__u))); + } - template - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const - noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<3>()))) - -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<3>())) - { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<3>()); } - }; + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) noexcept( + noexcept(weak_ordering(std::strong_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))))) + -> decltype(weak_ordering(std::strong_order(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) { + return weak_ordering(std::strong_order(std::forward<_Tp>(__t), std::forward<_Up>(__u))); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<3>()))) + -> decltype(__go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<3>())) { + return __go(std::forward<_Tp>(__t), std::forward<_Up>(__u), __priority_tag<3>()); + } +}; } // namespace __weak_order inline namespace __cpo { - inline constexpr auto weak_order = __weak_order::__fn{}; +inline constexpr auto weak_order = __weak_order::__fn{}; } // namespace __cpo -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/arithmetic.h b/include/c++/v1/__concepts/arithmetic.h index 215b52aa..0c44f117 100644 --- a/include/c++/v1/__concepts/arithmetic.h +++ b/include/c++/v1/__concepts/arithmetic.h @@ -22,30 +22,34 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concepts.arithmetic], arithmetic concepts -template +template concept integral = is_integral_v<_Tp>; -template +template concept signed_integral = integral<_Tp> && is_signed_v<_Tp>; -template +template concept unsigned_integral = integral<_Tp> && !signed_integral<_Tp>; -template +template concept floating_point = is_floating_point_v<_Tp>; // Concept helpers for the internal type traits for the fundamental types. template concept __libcpp_unsigned_integer = __libcpp_is_unsigned_integer<_Tp>::value; + template concept __libcpp_signed_integer = __libcpp_is_signed_integer<_Tp>::value; -#endif // _LIBCPP_STD_VER > 17 +template +concept __libcpp_integer = __libcpp_unsigned_integer<_Tp> || __libcpp_signed_integer<_Tp>; + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/assignable.h b/include/c++/v1/__concepts/assignable.h index 91edd400..7423daab 100644 --- a/include/c++/v1/__concepts/assignable.h +++ b/include/c++/v1/__concepts/assignable.h @@ -22,19 +22,19 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.assignable] -template +template concept assignable_from = - is_lvalue_reference_v<_Lhs> && - common_reference_with<__make_const_lvalue_ref<_Lhs>, __make_const_lvalue_ref<_Rhs>> && - requires (_Lhs __lhs, _Rhs&& __rhs) { - { __lhs = _VSTD::forward<_Rhs>(__rhs) } -> same_as<_Lhs>; - }; + is_lvalue_reference_v<_Lhs> && + common_reference_with<__make_const_lvalue_ref<_Lhs>, __make_const_lvalue_ref<_Rhs>> && + requires(_Lhs __lhs, _Rhs&& __rhs) { + { __lhs = std::forward<_Rhs>(__rhs) } -> same_as<_Lhs>; + }; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/boolean_testable.h b/include/c++/v1/__concepts/boolean_testable.h index a96bde71..b379fe9c 100644 --- a/include/c++/v1/__concepts/boolean_testable.h +++ b/include/c++/v1/__concepts/boolean_testable.h @@ -19,19 +19,19 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concepts.booleantestable] -template +template concept __boolean_testable_impl = convertible_to<_Tp, bool>; -template +template concept __boolean_testable = __boolean_testable_impl<_Tp> && requires(_Tp&& __t) { - { !_VSTD::forward<_Tp>(__t) } -> __boolean_testable_impl; + { !std::forward<_Tp>(__t) } -> __boolean_testable_impl; }; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/class_or_enum.h b/include/c++/v1/__concepts/class_or_enum.h index c4d2f989..2739e31e 100644 --- a/include/c++/v1/__concepts/class_or_enum.h +++ b/include/c++/v1/__concepts/class_or_enum.h @@ -21,19 +21,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // Whether a type is a class type or enumeration type according to the Core wording. -template +template concept __class_or_enum = is_class_v<_Tp> || is_union_v<_Tp> || is_enum_v<_Tp>; -// Work around Clang bug https://llvm.org/PR52970 -// TODO: remove this workaround once libc++ no longer has to support Clang 13 (it was fixed in Clang 14). -template -concept __workaround_52970 = is_class_v<__remove_cvref_t<_Tp>> || is_union_v<__remove_cvref_t<_Tp>>; - -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/common_reference_with.h b/include/c++/v1/__concepts/common_reference_with.h index cc92762d..4eb687e0 100644 --- a/include/c++/v1/__concepts/common_reference_with.h +++ b/include/c++/v1/__concepts/common_reference_with.h @@ -20,17 +20,16 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.commonref] -template +template concept common_reference_with = - same_as, common_reference_t<_Up, _Tp>> && - convertible_to<_Tp, common_reference_t<_Tp, _Up>> && - convertible_to<_Up, common_reference_t<_Tp, _Up>>; + same_as, common_reference_t<_Up, _Tp>> && + convertible_to<_Tp, common_reference_t<_Tp, _Up>> && convertible_to<_Up, common_reference_t<_Tp, _Up>>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/common_with.h b/include/c++/v1/__concepts/common_with.h index 569a0ee3..85abb05e 100644 --- a/include/c++/v1/__concepts/common_with.h +++ b/include/c++/v1/__concepts/common_with.h @@ -23,27 +23,29 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.common] -template +// clang-format off +template concept common_with = - same_as, common_type_t<_Up, _Tp>> && - requires { - static_cast>(std::declval<_Tp>()); - static_cast>(std::declval<_Up>()); - } && - common_reference_with< - add_lvalue_reference_t, - add_lvalue_reference_t> && - common_reference_with< - add_lvalue_reference_t>, - common_reference_t< - add_lvalue_reference_t, - add_lvalue_reference_t>>; - -#endif // _LIBCPP_STD_VER > 17 + same_as, common_type_t<_Up, _Tp>> && + requires { + static_cast>(std::declval<_Tp>()); + static_cast>(std::declval<_Up>()); + } && + common_reference_with< + add_lvalue_reference_t, + add_lvalue_reference_t> && + common_reference_with< + add_lvalue_reference_t>, + common_reference_t< + add_lvalue_reference_t, + add_lvalue_reference_t>>; +// clang-format on + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/constructible.h b/include/c++/v1/__concepts/constructible.h index 1d78eb5f..835a4442 100644 --- a/include/c++/v1/__concepts/constructible.h +++ b/include/c++/v1/__concepts/constructible.h @@ -20,36 +20,35 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.constructible] -template -concept constructible_from = - destructible<_Tp> && is_constructible_v<_Tp, _Args...>; +template +concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>; // [concept.default.init] -template +template concept __default_initializable = requires { ::new _Tp; }; -template -concept default_initializable = constructible_from<_Tp> && - requires { _Tp{}; } && __default_initializable<_Tp>; +template +concept default_initializable = constructible_from<_Tp> && requires { _Tp{}; } && __default_initializable<_Tp>; // [concept.moveconstructible] -template -concept move_constructible = - constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>; +template +concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>; // [concept.copyconstructible] -template +// clang-format off +template concept copy_constructible = - move_constructible<_Tp> && - constructible_from<_Tp, _Tp&> && convertible_to<_Tp&, _Tp> && - constructible_from<_Tp, const _Tp&> && convertible_to && - constructible_from<_Tp, const _Tp> && convertible_to; + move_constructible<_Tp> && + constructible_from<_Tp, _Tp&> && convertible_to<_Tp&, _Tp> && + constructible_from<_Tp, const _Tp&> && convertible_to && + constructible_from<_Tp, const _Tp> && convertible_to; +// clang-format on -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/convertible_to.h b/include/c++/v1/__concepts/convertible_to.h index 2c1d2674..6d5b6c12 100644 --- a/include/c++/v1/__concepts/convertible_to.h +++ b/include/c++/v1/__concepts/convertible_to.h @@ -19,18 +19,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.convertible] -template -concept convertible_to = - is_convertible_v<_From, _To> && - requires { - static_cast<_To>(std::declval<_From>()); - }; +template +concept convertible_to = is_convertible_v<_From, _To> && requires { static_cast<_To>(std::declval<_From>()); }; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/copyable.h b/include/c++/v1/__concepts/copyable.h index c5d8a80b..2bf0ad42 100644 --- a/include/c++/v1/__concepts/copyable.h +++ b/include/c++/v1/__concepts/copyable.h @@ -20,19 +20,21 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concepts.object] -template +// clang-format off +template concept copyable = - copy_constructible<_Tp> && - movable<_Tp> && - assignable_from<_Tp&, _Tp&> && - assignable_from<_Tp&, const _Tp&> && - assignable_from<_Tp&, const _Tp>; - -#endif // _LIBCPP_STD_VER > 17 + copy_constructible<_Tp> && + movable<_Tp> && + assignable_from<_Tp&, _Tp&> && + assignable_from<_Tp&, const _Tp&> && + assignable_from<_Tp&, const _Tp>; +// clang-format on + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/derived_from.h b/include/c++/v1/__concepts/derived_from.h index 0d3462df..9875faee 100644 --- a/include/c++/v1/__concepts/derived_from.h +++ b/include/c++/v1/__concepts/derived_from.h @@ -19,16 +19,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.derived] -template -concept derived_from = - is_base_of_v<_Bp, _Dp> && - is_convertible_v; +template +concept derived_from = is_base_of_v<_Bp, _Dp> && is_convertible_v; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/destructible.h b/include/c++/v1/__concepts/destructible.h index ad3819d5..28b4b1bc 100644 --- a/include/c++/v1/__concepts/destructible.h +++ b/include/c++/v1/__concepts/destructible.h @@ -18,14 +18,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.destructible] -template +template concept destructible = is_nothrow_destructible_v<_Tp>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/different_from.h b/include/c++/v1/__concepts/different_from.h index 15fd8f05..fd31f6e2 100644 --- a/include/c++/v1/__concepts/different_from.h +++ b/include/c++/v1/__concepts/different_from.h @@ -19,12 +19,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 -template +template concept __different_from = !same_as, remove_cvref_t<_Up>>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/equality_comparable.h b/include/c++/v1/__concepts/equality_comparable.h index b8651417..278fc764 100644 --- a/include/c++/v1/__concepts/equality_comparable.h +++ b/include/c++/v1/__concepts/equality_comparable.h @@ -21,33 +21,35 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.equalitycomparable] -template +template concept __weakly_equality_comparable_with = - requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { - { __t == __u } -> __boolean_testable; - { __t != __u } -> __boolean_testable; - { __u == __t } -> __boolean_testable; - { __u != __t } -> __boolean_testable; - }; - -template + requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { + { __t == __u } -> __boolean_testable; + { __t != __u } -> __boolean_testable; + { __u == __t } -> __boolean_testable; + { __u != __t } -> __boolean_testable; + }; + +template concept equality_comparable = __weakly_equality_comparable_with<_Tp, _Tp>; -template +// clang-format off +template concept equality_comparable_with = - equality_comparable<_Tp> && equality_comparable<_Up> && - common_reference_with<__make_const_lvalue_ref<_Tp>, __make_const_lvalue_ref<_Up>> && - equality_comparable< - common_reference_t< - __make_const_lvalue_ref<_Tp>, - __make_const_lvalue_ref<_Up>>> && - __weakly_equality_comparable_with<_Tp, _Up>; - -#endif // _LIBCPP_STD_VER > 17 + equality_comparable<_Tp> && equality_comparable<_Up> && + common_reference_with<__make_const_lvalue_ref<_Tp>, __make_const_lvalue_ref<_Up>> && + equality_comparable< + common_reference_t< + __make_const_lvalue_ref<_Tp>, + __make_const_lvalue_ref<_Up>>> && + __weakly_equality_comparable_with<_Tp, _Up>; +// clang-format on + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/invocable.h b/include/c++/v1/__concepts/invocable.h index ec39b7b8..8a29398b 100644 --- a/include/c++/v1/__concepts/invocable.h +++ b/include/c++/v1/__concepts/invocable.h @@ -19,21 +19,21 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.invocable] -template +template concept invocable = requires(_Fn&& __fn, _Args&&... __args) { - _VSTD::invoke(_VSTD::forward<_Fn>(__fn), _VSTD::forward<_Args>(__args)...); // not required to be equality preserving + std::invoke(std::forward<_Fn>(__fn), std::forward<_Args>(__args)...); // not required to be equality preserving }; // [concept.regular.invocable] -template +template concept regular_invocable = invocable<_Fn, _Args...>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/movable.h b/include/c++/v1/__concepts/movable.h index 749b78ad..bc5b9d76 100644 --- a/include/c++/v1/__concepts/movable.h +++ b/include/c++/v1/__concepts/movable.h @@ -21,18 +21,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concepts.object] -template -concept movable = - is_object_v<_Tp> && - move_constructible<_Tp> && - assignable_from<_Tp&, _Tp> && - swappable<_Tp>; +template +concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/predicate.h b/include/c++/v1/__concepts/predicate.h index 7ae97832..00731efc 100644 --- a/include/c++/v1/__concepts/predicate.h +++ b/include/c++/v1/__concepts/predicate.h @@ -20,15 +20,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.predicate] -template -concept predicate = - regular_invocable<_Fn, _Args...> && __boolean_testable>; +template +concept predicate = regular_invocable<_Fn, _Args...> && __boolean_testable>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/regular.h b/include/c++/v1/__concepts/regular.h index d15728d2..9f3d8bf3 100644 --- a/include/c++/v1/__concepts/regular.h +++ b/include/c++/v1/__concepts/regular.h @@ -19,14 +19,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.object] -template +template concept regular = semiregular<_Tp> && equality_comparable<_Tp>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/relation.h b/include/c++/v1/__concepts/relation.h index 7d5141ca..7545a7db 100644 --- a/include/c++/v1/__concepts/relation.h +++ b/include/c++/v1/__concepts/relation.h @@ -18,26 +18,25 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.relation] -template +template concept relation = - predicate<_Rp, _Tp, _Tp> && predicate<_Rp, _Up, _Up> && - predicate<_Rp, _Tp, _Up> && predicate<_Rp, _Up, _Tp>; + predicate<_Rp, _Tp, _Tp> && predicate<_Rp, _Up, _Up> && predicate<_Rp, _Tp, _Up> && predicate<_Rp, _Up, _Tp>; // [concept.equiv] -template +template concept equivalence_relation = relation<_Rp, _Tp, _Up>; // [concept.strictweakorder] -template +template concept strict_weak_order = relation<_Rp, _Tp, _Up>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/same_as.h b/include/c++/v1/__concepts/same_as.h index 554ebc3b..4241131c 100644 --- a/include/c++/v1/__concepts/same_as.h +++ b/include/c++/v1/__concepts/same_as.h @@ -18,17 +18,17 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.same] -template +template concept __same_as_impl = _IsSame<_Tp, _Up>::value; -template +template concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/semiregular.h b/include/c++/v1/__concepts/semiregular.h index d15bb3ba..7a159d17 100644 --- a/include/c++/v1/__concepts/semiregular.h +++ b/include/c++/v1/__concepts/semiregular.h @@ -19,14 +19,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.object] -template +template concept semiregular = copyable<_Tp> && default_initializable<_Tp>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__concepts/swappable.h b/include/c++/v1/__concepts/swappable.h index d91a7a1d..d339488a 100644 --- a/include/c++/v1/__concepts/swappable.h +++ b/include/c++/v1/__concepts/swappable.h @@ -15,8 +15,8 @@ #include <__concepts/constructible.h> #include <__config> #include <__type_traits/extent.h> -#include <__type_traits/is_nothrow_move_assignable.h> -#include <__type_traits/is_nothrow_move_constructible.h> +#include <__type_traits/is_nothrow_assignable.h> +#include <__type_traits/is_nothrow_constructible.h> #include <__type_traits/remove_cvref.h> #include <__utility/exchange.h> #include <__utility/forward.h> @@ -28,94 +28,96 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.swappable] namespace ranges { namespace __swap { - template - void swap(_Tp&, _Tp&) = delete; +template +void swap(_Tp&, _Tp&) = delete; - template - concept __unqualified_swappable_with = +// clang-format off +template +concept __unqualified_swappable_with = (__class_or_enum> || __class_or_enum>) && requires(_Tp&& __t, _Up&& __u) { - swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); + swap(std::forward<_Tp>(__t), std::forward<_Up>(__u)); }; +// clang-format on - struct __fn; +struct __fn; - template - concept __swappable_arrays = - !__unqualified_swappable_with<_Tp(&)[_Size], _Up(&)[_Size]> && +// clang-format off +template +concept __swappable_arrays = + !__unqualified_swappable_with<_Tp (&)[_Size], _Up (&)[_Size]> && extent_v<_Tp> == extent_v<_Up> && - requires(_Tp(& __t)[_Size], _Up(& __u)[_Size], const __fn& __swap) { - __swap(__t[0], __u[0]); + requires(_Tp (&__t)[_Size], _Up (&__u)[_Size], const __fn& __swap) { + __swap(__t[0], __u[0]); }; - - template - concept __exchangeable = - !__unqualified_swappable_with<_Tp&, _Tp&> && - move_constructible<_Tp> && - assignable_from<_Tp&, _Tp>; - - struct __fn { - // 2.1 `S` is `(void)swap(E1, E2)`* if `E1` or `E2` has class or enumeration type and... - // *The name `swap` is used here unqualified. - template - requires __unqualified_swappable_with<_Tp, _Up> - constexpr void operator()(_Tp&& __t, _Up&& __u) const - noexcept(noexcept(swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) - { - swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); - } - - // 2.2 Otherwise, if `E1` and `E2` are lvalues of array types with equal extent and... - template - requires __swappable_arrays<_Tp, _Up, _Size> - constexpr void operator()(_Tp(& __t)[_Size], _Up(& __u)[_Size]) const - noexcept(noexcept((*this)(*__t, *__u))) - { - // TODO(cjdb): replace with `ranges::swap_ranges`. - for (size_t __i = 0; __i < _Size; ++__i) { - (*this)(__t[__i], __u[__i]); - } +// clang-format on + +template +concept __exchangeable = + !__unqualified_swappable_with<_Tp&, _Tp&> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp>; + +struct __fn { + // 2.1 `S` is `(void)swap(E1, E2)`* if `E1` or `E2` has class or enumeration type and... + // *The name `swap` is used here unqualified. + template + requires __unqualified_swappable_with<_Tp, _Up> + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(swap(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) { + swap(std::forward<_Tp>(__t), std::forward<_Up>(__u)); + } + + // 2.2 Otherwise, if `E1` and `E2` are lvalues of array types with equal extent and... + template + requires __swappable_arrays<_Tp, _Up, _Size> + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_Tp (&__t)[_Size], _Up (&__u)[_Size]) const + noexcept(noexcept((*this)(*__t, *__u))) { + // TODO(cjdb): replace with `ranges::swap_ranges`. + for (size_t __i = 0; __i < _Size; ++__i) { + (*this)(__t[__i], __u[__i]); } - - // 2.3 Otherwise, if `E1` and `E2` are lvalues of the same type `T` that models... - template<__exchangeable _Tp> - constexpr void operator()(_Tp& __x, _Tp& __y) const - noexcept(is_nothrow_move_constructible_v<_Tp> && is_nothrow_move_assignable_v<_Tp>) - { - __y = _VSTD::exchange(__x, _VSTD::move(__y)); - } - }; + } + + // 2.3 Otherwise, if `E1` and `E2` are lvalues of the same type `T` that models... + template <__exchangeable _Tp> + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_Tp& __x, _Tp& __y) const + noexcept(is_nothrow_move_constructible_v<_Tp> && is_nothrow_move_assignable_v<_Tp>) { + __y = std::exchange(__x, std::move(__y)); + } +}; } // namespace __swap inline namespace __cpo { - inline constexpr auto swap = __swap::__fn{}; +inline constexpr auto swap = __swap::__fn{}; } // namespace __cpo } // namespace ranges -template +template concept swappable = requires(_Tp& __a, _Tp& __b) { ranges::swap(__a, __b); }; -template -concept swappable_with = - common_reference_with<_Tp, _Up> && - requires(_Tp&& __t, _Up&& __u) { - ranges::swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Tp>(__t)); - ranges::swap(_VSTD::forward<_Up>(__u), _VSTD::forward<_Up>(__u)); - ranges::swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); - ranges::swap(_VSTD::forward<_Up>(__u), _VSTD::forward<_Tp>(__t)); - }; +template +concept swappable_with = common_reference_with<_Tp, _Up> && requires(_Tp&& __t, _Up&& __u) { + ranges::swap(std::forward<_Tp>(__t), std::forward<_Tp>(__t)); + ranges::swap(std::forward<_Up>(__u), std::forward<_Up>(__u)); + ranges::swap(std::forward<_Tp>(__t), std::forward<_Up>(__u)); + ranges::swap(std::forward<_Up>(__u), std::forward<_Tp>(__t)); +}; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___CONCEPTS_SWAPPABLE_H diff --git a/include/c++/v1/__concepts/totally_ordered.h b/include/c++/v1/__concepts/totally_ordered.h index f12d26b1..186c3b43 100644 --- a/include/c++/v1/__concepts/totally_ordered.h +++ b/include/c++/v1/__concepts/totally_ordered.h @@ -21,37 +21,38 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [concept.totallyordered] -template -concept __partially_ordered_with = - requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { - { __t < __u } -> __boolean_testable; - { __t > __u } -> __boolean_testable; - { __t <= __u } -> __boolean_testable; - { __t >= __u } -> __boolean_testable; - { __u < __t } -> __boolean_testable; - { __u > __t } -> __boolean_testable; - { __u <= __t } -> __boolean_testable; - { __u >= __t } -> __boolean_testable; - }; - -template +template +concept __partially_ordered_with = requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { + { __t < __u } -> __boolean_testable; + { __t > __u } -> __boolean_testable; + { __t <= __u } -> __boolean_testable; + { __t >= __u } -> __boolean_testable; + { __u < __t } -> __boolean_testable; + { __u > __t } -> __boolean_testable; + { __u <= __t } -> __boolean_testable; + { __u >= __t } -> __boolean_testable; +}; + +template concept totally_ordered = equality_comparable<_Tp> && __partially_ordered_with<_Tp, _Tp>; -template +// clang-format off +template concept totally_ordered_with = - totally_ordered<_Tp> && totally_ordered<_Up> && - equality_comparable_with<_Tp, _Up> && - totally_ordered< - common_reference_t< - __make_const_lvalue_ref<_Tp>, - __make_const_lvalue_ref<_Up>>> && - __partially_ordered_with<_Tp, _Up>; - -#endif // _LIBCPP_STD_VER > 17 + totally_ordered<_Tp> && totally_ordered<_Up> && + equality_comparable_with<_Tp, _Up> && + totally_ordered< + common_reference_t< + __make_const_lvalue_ref<_Tp>, + __make_const_lvalue_ref<_Up>>> && + __partially_ordered_with<_Tp, _Up>; +// clang-format on + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__config b/include/c++/v1/__config index 48dd9730..1e85d97c 100644 --- a/include/c++/v1/__config +++ b/include/c++/v1/__config @@ -11,240 +11,170 @@ #define _LIBCPP___CONFIG #include <__config_site> - -#if defined(_MSC_VER) && !defined(__clang__) -# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -# endif -#endif +#include <__configuration/abi.h> +#include <__configuration/availability.h> +#include <__configuration/compiler.h> +#include <__configuration/platform.h> #ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER # pragma GCC system_header #endif -#if defined(__apple_build_version__) -// Given AppleClang XX.Y.Z, _LIBCPP_APPLE_CLANG_VER is XXYZ (e.g. AppleClang 14.0.3 => 1403) -# define _LIBCPP_COMPILER_CLANG_BASED -# define _LIBCPP_APPLE_CLANG_VER (__apple_build_version__ / 10000) -#elif defined(__clang__) -# define _LIBCPP_COMPILER_CLANG_BASED -# define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__) -#elif defined(__GNUC__) -# define _LIBCPP_COMPILER_GCC -#endif - #ifdef __cplusplus +// The attributes supported by clang are documented at https://clang.llvm.org/docs/AttributeReference.html + // _LIBCPP_VERSION represents the version of libc++, which matches the version of LLVM. -// Given a LLVM release LLVM XX.YY.ZZ (e.g. LLVM 16.0.1 == 16.00.01), _LIBCPP_VERSION is +// Given a LLVM release LLVM XX.YY.ZZ (e.g. LLVM 17.0.1 == 17.00.01), _LIBCPP_VERSION is // defined to XXYYZZ. -# define _LIBCPP_VERSION 160006 +# define _LIBCPP_VERSION 190102 # define _LIBCPP_CONCAT_IMPL(_X, _Y) _X##_Y # define _LIBCPP_CONCAT(_X, _Y) _LIBCPP_CONCAT_IMPL(_X, _Y) -// Valid C++ identifier that revs with every libc++ version. This can be used to -// generate identifiers that must be unique for every released libc++ version. -# define _LIBCPP_VERSIONED_IDENTIFIER _LIBCPP_CONCAT(v, _LIBCPP_VERSION) - # if __STDC_HOSTED__ == 0 # define _LIBCPP_FREESTANDING # endif -# ifndef _LIBCPP_STD_VER -# if __cplusplus <= 201103L -# define _LIBCPP_STD_VER 11 -# elif __cplusplus <= 201402L -# define _LIBCPP_STD_VER 14 -# elif __cplusplus <= 201703L -# define _LIBCPP_STD_VER 17 -# elif __cplusplus <= 202002L -# define _LIBCPP_STD_VER 20 -# else -// Expected release year of the next C++ standard -# define _LIBCPP_STD_VER 23 -# endif -# endif // _LIBCPP_STD_VER - # if defined(__APPLE__) && defined(__ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__) # define _LIBCPP_ON_DRIVERKIT # endif -// TODO: This is a hacky way to detect that we're building for RTKit because -// they don't have a proper triple. Once they do, use a macro that would -// be defined by the compiler. -# if __has_include() && defined(_LIBCPP_HAS_NO_RANDOM_DEVICE) && defined(_LIBCPP_HAS_NO_LOCALIZATION) -# define _LIBCPP_ON_RTKIT -# endif - -// TODO: This is a hacky way to detect that we're building for SEP. We need the -// compiler to define a macro when we build for that triple instead. -# if defined(_LIBCPP_HAS_NO_RANDOM_DEVICE) && defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS) && !defined(_LIBCPP_ON_RTKIT) && !defined(_LIBCPP_ON_DRIVERKIT) -# define _LIBCPP_ON_SEP -# endif +// HARDENING { -# if defined(__ELF__) -# define _LIBCPP_OBJECT_FORMAT_ELF 1 -# elif defined(__MACH__) -# define _LIBCPP_OBJECT_FORMAT_MACHO 1 -# elif defined(_WIN32) -# define _LIBCPP_OBJECT_FORMAT_COFF 1 -# elif defined(__wasm__) -# define _LIBCPP_OBJECT_FORMAT_WASM 1 -# elif defined(_AIX) -# define _LIBCPP_OBJECT_FORMAT_XCOFF 1 -# else -// ... add new file formats here ... -# endif - -# if _LIBCPP_ABI_VERSION >= 2 -// Change short string representation so that string data starts at offset 0, -// improving its alignment in some cases. -# define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT -// Fix deque iterator type in order to support incomplete types. -# define _LIBCPP_ABI_INCOMPLETE_TYPES_IN_DEQUE -// Fix undefined behavior in how std::list stores its linked nodes. -# define _LIBCPP_ABI_LIST_REMOVE_NODE_POINTER_UB -// Fix undefined behavior in how __tree stores its end and parent nodes. -# define _LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB -// Fix undefined behavior in how __hash_table stores its pointer types. -# define _LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB -# define _LIBCPP_ABI_FORWARD_LIST_REMOVE_NODE_POINTER_UB -# define _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE -// Define a key function for `bad_function_call` in the library, to centralize -// its vtable and typeinfo to libc++ rather than having all other libraries -// using that class define their own copies. -# define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION -// Override the default return value of exception::what() for -// bad_function_call::what() with a string that is specific to -// bad_function_call (see http://wg21.link/LWG2233). This is an ABI break -// because it changes the vtable layout of bad_function_call. -# define _LIBCPP_ABI_BAD_FUNCTION_CALL_GOOD_WHAT_MESSAGE -// Enable optimized version of __do_get_(un)signed which avoids redundant copies. -# define _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET -// Give reverse_iterator one data member of type T, not two. -// Also, in C++17 and later, don't derive iterator types from std::iterator. -# define _LIBCPP_ABI_NO_ITERATOR_BASES -// Use the smallest possible integer type to represent the index of the variant. -// Previously libc++ used "unsigned int" exclusively. -# define _LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION -// Unstable attempt to provide a more optimized std::function -# define _LIBCPP_ABI_OPTIMIZED_FUNCTION -// All the regex constants must be distinct and nonzero. -# define _LIBCPP_ABI_REGEX_CONSTANTS_NONZERO -// Re-worked external template instantiations for std::string with a focus on -// performance and fast-path inlining. -# define _LIBCPP_ABI_STRING_OPTIMIZED_EXTERNAL_INSTANTIATION -// Enable clang::trivial_abi on std::unique_ptr. -# define _LIBCPP_ABI_ENABLE_UNIQUE_PTR_TRIVIAL_ABI -// Enable clang::trivial_abi on std::shared_ptr and std::weak_ptr -# define _LIBCPP_ABI_ENABLE_SHARED_PTR_TRIVIAL_ABI -// std::random_device holds some state when it uses an implementation that gets -// entropy from a file (see _LIBCPP_USING_DEV_RANDOM). When switching from this -// implementation to another one on a platform that has already shipped -// std::random_device, one needs to retain the same object layout to remain ABI -// compatible. This switch removes these workarounds for platforms that don't care -// about ABI compatibility. -# define _LIBCPP_ABI_NO_RANDOM_DEVICE_COMPATIBILITY_LAYOUT -// Don't export the legacy __basic_string_common class and its methods from the built library. -# define _LIBCPP_ABI_DO_NOT_EXPORT_BASIC_STRING_COMMON -// Don't export the legacy __vector_base_common class and its methods from the built library. -# define _LIBCPP_ABI_DO_NOT_EXPORT_VECTOR_BASE_COMMON -// According to the Standard, `bitset::operator[] const` returns bool -# define _LIBCPP_ABI_BITSET_VECTOR_BOOL_CONST_SUBSCRIPT_RETURN_BOOL -// Fix the implementation of CityHash used for std::hash. -// This is an ABI break because `std::hash` will return a different result, -// which means that hashing the same object in translation units built against -// different versions of libc++ can return inconsistent results. This is especially -// tricky since std::hash is used in the implementation of unordered containers. -// -// The incorrect implementation of CityHash has the problem that it drops some -// bits on the floor. -# define _LIBCPP_ABI_FIX_CITYHASH_IMPLEMENTATION -// Remove the base 10 implementation of std::to_chars from the dylib. -// The implementation moved to the header, but we still export the symbols from -// the dylib for backwards compatibility. -# define _LIBCPP_ABI_DO_NOT_EXPORT_TO_CHARS_BASE_10 -# elif _LIBCPP_ABI_VERSION == 1 -# if !(defined(_LIBCPP_OBJECT_FORMAT_COFF) || defined(_LIBCPP_OBJECT_FORMAT_XCOFF)) -// Enable compiling copies of now inline methods into the dylib to support -// applications compiled against older libraries. This is unnecessary with -// COFF dllexport semantics, since dllexport forces a non-inline definition -// of inline functions to be emitted anyway. Our own non-inline copy would -// conflict with the dllexport-emitted copy, so we disable it. For XCOFF, -// the linker will take issue with the symbols in the shared object if the -// weak inline methods get visibility (such as from -fvisibility-inlines-hidden), -// so disable it. -# define _LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS +// This is for backward compatibility -- make enabling `_LIBCPP_ENABLE_ASSERTIONS` (which predates hardening modes) +// equivalent to setting the extensive mode. This is deprecated and will be removed in LLVM 20. +# ifdef _LIBCPP_ENABLE_ASSERTIONS +# warning "_LIBCPP_ENABLE_ASSERTIONS is deprecated, please use _LIBCPP_HARDENING_MODE instead" +# if _LIBCPP_ENABLE_ASSERTIONS != 0 && _LIBCPP_ENABLE_ASSERTIONS != 1 +# error "_LIBCPP_ENABLE_ASSERTIONS must be set to 0 or 1" # endif -// Feature macros for disabling pre ABI v1 features. All of these options -// are deprecated. -# if defined(__FreeBSD__) -# define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR +# if _LIBCPP_ENABLE_ASSERTIONS +# define _LIBCPP_HARDENING_MODE _LIBCPP_HARDENING_MODE_EXTENSIVE # endif # endif -# if defined(_LIBCPP_BUILDING_LIBRARY) || _LIBCPP_ABI_VERSION >= 2 -// Enable additional explicit instantiations of iostreams components. This -// reduces the number of weak definitions generated in programs that use -// iostreams by providing a single strong definition in the shared library. -# define _LIBCPP_ABI_ENABLE_ADDITIONAL_IOSTREAM_EXPLICIT_INSTANTIATIONS_1 - -// Define a key function for `bad_function_call` in the library, to centralize -// its vtable and typeinfo to libc++ rather than having all other libraries -// using that class define their own copies. -# define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION -# endif +// The library provides the macro `_LIBCPP_HARDENING_MODE` which can be set to one of the following values: +// +// - `_LIBCPP_HARDENING_MODE_NONE`; +// - `_LIBCPP_HARDENING_MODE_FAST`; +// - `_LIBCPP_HARDENING_MODE_EXTENSIVE`; +// - `_LIBCPP_HARDENING_MODE_DEBUG`. +// +// These values have the following effects: +// +// - `_LIBCPP_HARDENING_MODE_NONE` -- sets the hardening mode to "none" which disables all runtime hardening checks; +// +// - `_LIBCPP_HARDENING_MODE_FAST` -- sets that hardening mode to "fast". The fast mode enables security-critical checks +// that can be done with relatively little runtime overhead in constant time; +// +// - `_LIBCPP_HARDENING_MODE_EXTENSIVE` -- sets the hardening mode to "extensive". The extensive mode is a superset of +// the fast mode that additionally enables checks that are relatively cheap and prevent common types of logic errors +// but are not necessarily security-critical; +// +// - `_LIBCPP_HARDENING_MODE_DEBUG` -- sets the hardening mode to "debug". The debug mode is a superset of the extensive +// mode and enables all checks available in the library, including internal assertions. Checks that are part of the +// debug mode can be very expensive and thus the debug mode is intended to be used for testing, not in production. -// Enable support for putting overridable functions in a separate section -// TODO: Generalize this mechanism beyond typed operator new/operator delete. -# if defined(_LIBCPP_HAS_TYPED_NEW_DELETE_DEFINITIONS) -# define _LIBCPP_ENABLE_OVERRIDABLE_FUNC_ISOLATED_SECTION -# endif +// Inside the library, assertions are categorized so they can be cherry-picked based on the chosen hardening mode. These +// macros are only for internal use -- users should only pick one of the high-level hardening modes described above. +// +// - `_LIBCPP_ASSERT_VALID_INPUT_RANGE` -- checks that ranges (whether expressed as an iterator pair, an iterator and +// a sentinel, an iterator and a count, or a `std::range`) given as input to library functions are valid: +// - the sentinel is reachable from the begin iterator; +// - TODO(hardening): both iterators refer to the same container. +// +// - `_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS` -- checks that any attempts to access a container element, whether through +// the container object or through an iterator, are valid and do not attempt to go out of bounds or otherwise access +// a non-existent element. For iterator checks to work, bounded iterators must be enabled in the ABI. Types like +// `optional` and `function` are considered one-element containers for the purposes of this check. +// +// - `_LIBCPP_ASSERT_NON_NULL` -- checks that the pointer being dereferenced is not null. On most modern platforms zero +// address does not refer to an actual location in memory, so a null pointer dereference would not compromize the +// memory security of a program (however, it is still undefined behavior that can result in strange errors due to +// compiler optimizations). +// +// - `_LIBCPP_ASSERT_NON_OVERLAPPING_RANGES` -- for functions that take several ranges as arguments, checks that the +// given ranges do not overlap. +// +// - `_LIBCPP_ASSERT_VALID_DEALLOCATION` -- checks that an attempt to deallocate memory is valid (e.g. the given object +// was allocated by the given allocator). Violating this category typically results in a memory leak. +// +// - `_LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL` -- checks that a call to an external API doesn't fail in +// an unexpected manner. This includes triggering documented cases of undefined behavior in an external library (like +// attempting to unlock an unlocked mutex in pthreads). Any API external to the library falls under this category +// (from system calls to compiler intrinsics). We generally don't expect these failures to compromize memory safety or +// otherwise create an immediate security issue. +// +// - `_LIBCPP_ASSERT_COMPATIBLE_ALLOCATOR` -- checks any operations that exchange nodes between containers to make sure +// the containers have compatible allocators. +// +// - `_LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN` -- checks that the given argument is within the domain of valid arguments +// for the function. Violating this typically produces an incorrect result (e.g. the clamp algorithm returns the +// original value without clamping it due to incorrect functors) or puts an object into an invalid state (e.g. +// a string view where only a subset of elements is possible to access). This category is for assertions violating +// which doesn't cause any immediate issues in the library -- whatever the consequences are, they will happen in the +// user code. +// +// - `_LIBCPP_ASSERT_PEDANTIC` -- checks prerequisites which are imposed by the Standard, but violating which happens to +// be benign in our implementation. +// +// - `_LIBCPP_ASSERT_SEMANTIC_REQUIREMENT` -- checks that the given argument satisfies the semantic requirements imposed +// by the Standard. Typically, there is no simple way to completely prove that a semantic requirement is satisfied; +// thus, this would often be a heuristic check and it might be quite expensive. +// +// - `_LIBCPP_ASSERT_INTERNAL` -- checks that internal invariants of the library hold. These assertions don't depend on +// user input. +// +// - `_LIBCPP_ASSERT_UNCATEGORIZED` -- for assertions that haven't been properly classified yet. -// The additional stream instantiations were added in iOS 15 and aligned. -#if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ - __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 120000) || \ - (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \ - __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 150000) || \ - (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && \ - __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ >= 80000) || \ - (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && \ - __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ >= 150000) -# define _LIBCPP_ABI_ENABLE_ADDITIONAL_IOSTREAM_EXPLICIT_INSTANTIATIONS_1 -#endif +// clang-format off +# define _LIBCPP_HARDENING_MODE_NONE (1 << 1) +# define _LIBCPP_HARDENING_MODE_FAST (1 << 2) +# define _LIBCPP_HARDENING_MODE_EXTENSIVE (1 << 4) // Deliberately not ordered. +# define _LIBCPP_HARDENING_MODE_DEBUG (1 << 3) +// clang-format on -# define _LIBCPP_TOSTRING2(x) #x -# define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x) +# ifndef _LIBCPP_HARDENING_MODE -# if __cplusplus < 201103L -# define _LIBCPP_CXX03_LANG -# endif +# ifndef _LIBCPP_HARDENING_MODE_DEFAULT +# error _LIBCPP_HARDENING_MODE_DEFAULT is not defined. This definition should be set at configuration time in the \ +`__config_site` header, please make sure your installation of libc++ is not broken. +# endif -# ifndef __has_attribute -# define __has_attribute(__x) 0 +# define _LIBCPP_HARDENING_MODE _LIBCPP_HARDENING_MODE_DEFAULT # endif -# ifndef __has_builtin -# define __has_builtin(__x) 0 +# if _LIBCPP_HARDENING_MODE != _LIBCPP_HARDENING_MODE_NONE && \ + _LIBCPP_HARDENING_MODE != _LIBCPP_HARDENING_MODE_FAST && \ + _LIBCPP_HARDENING_MODE != _LIBCPP_HARDENING_MODE_EXTENSIVE && \ + _LIBCPP_HARDENING_MODE != _LIBCPP_HARDENING_MODE_DEBUG +# error _LIBCPP_HARDENING_MODE must be set to one of the following values: \ +_LIBCPP_HARDENING_MODE_NONE, \ +_LIBCPP_HARDENING_MODE_FAST, \ +_LIBCPP_HARDENING_MODE_EXTENSIVE, \ +_LIBCPP_HARDENING_MODE_DEBUG # endif -# ifndef __has_extension -# define __has_extension(__x) 0 -# endif +// } HARDENING -# ifndef __has_feature -# define __has_feature(__x) 0 -# endif +# define _LIBCPP_TOSTRING2(x) #x +# define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x) -# ifndef __has_cpp_attribute -# define __has_cpp_attribute(__x) 0 +// NOLINTNEXTLINE(libcpp-cpp-version-check) +# if __cplusplus < 201103L +# define _LIBCPP_CXX03_LANG # endif # ifndef __has_constexpr_builtin # define __has_constexpr_builtin(x) 0 # endif +// This checks wheter a Clang module is built +# ifndef __building_module +# define __building_module(...) 0 +# endif + // '__is_identifier' returns '0' if '__x' is a reserved identifier provided by // the compiler and '1' otherwise. # ifndef __is_identifier @@ -257,8 +187,8 @@ # define __has_keyword(__x) !(__is_identifier(__x)) -# ifndef __has_include -# define __has_include(...) 0 +# ifndef __has_warning +# define __has_warning(...) 0 # endif # if !defined(_LIBCPP_COMPILER_CLANG_BASED) && __cplusplus < 201103L @@ -297,65 +227,18 @@ // Incomplete features get their own specific disabling flags. This makes it // easier to grep for target specific flags once the feature is complete. # if !defined(_LIBCPP_ENABLE_EXPERIMENTAL) && !defined(_LIBCPP_BUILDING_LIBRARY) -# define _LIBCPP_HAS_NO_INCOMPLETE_FORMAT +# define _LIBCPP_HAS_NO_INCOMPLETE_PSTL +# define _LIBCPP_HAS_NO_EXPERIMENTAL_STOP_TOKEN +# define _LIBCPP_HAS_NO_EXPERIMENTAL_TZDB +# define _LIBCPP_HAS_NO_EXPERIMENTAL_SYNCSTREAM # endif -// Need to detect which libc we're using if we're on Linux. -# if defined(__linux__) -# include -# if defined(__GLIBC_PREREQ) -# define _LIBCPP_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b) -# else -# define _LIBCPP_GLIBC_PREREQ(a, b) 0 -# endif // defined(__GLIBC_PREREQ) -# endif // defined(__linux__) - # if defined(__MVS__) # include // for __NATIVE_ASCII_F # endif -# ifdef __LITTLE_ENDIAN__ -# if __LITTLE_ENDIAN__ -# define _LIBCPP_LITTLE_ENDIAN -# endif // __LITTLE_ENDIAN__ -# endif // __LITTLE_ENDIAN__ - -# ifdef __BIG_ENDIAN__ -# if __BIG_ENDIAN__ -# define _LIBCPP_BIG_ENDIAN -# endif // __BIG_ENDIAN__ -# endif // __BIG_ENDIAN__ - -# ifdef __BYTE_ORDER__ -# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -# define _LIBCPP_LITTLE_ENDIAN -# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -# define _LIBCPP_BIG_ENDIAN -# endif // __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -# endif // __BYTE_ORDER__ - -# ifdef __FreeBSD__ -# include -# include -# if _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN -# else // _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_BIG_ENDIAN -# endif // _BYTE_ORDER == _LITTLE_ENDIAN -# endif // __FreeBSD__ - -# if defined(__NetBSD__) || defined(__OpenBSD__) -# include -# if _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN -# else // _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_BIG_ENDIAN -# endif // _BYTE_ORDER == _LITTLE_ENDIAN -# endif // defined(__NetBSD__) || defined(__OpenBSD__) - # if defined(_WIN32) # define _LIBCPP_WIN32API -# define _LIBCPP_LITTLE_ENDIAN # define _LIBCPP_SHORT_WCHAR 1 // Both MinGW and native MSVC provide a "MSVC"-like environment # define _LIBCPP_MSVCRT_LIKE @@ -370,15 +253,6 @@ # define _LIBCPP_HAS_OPEN_WITH_WCHAR # endif // defined(_WIN32) -# ifdef __sun__ -# include -# ifdef _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN -# else -# define _LIBCPP_BIG_ENDIAN -# endif -# endif // __sun__ - # if defined(_AIX) && !defined(__64BIT__) // The size of wchar is 2 byte on 32-bit mode on AIX. # define _LIBCPP_SHORT_WCHAR 1 @@ -423,7 +297,7 @@ // When this option is used, the token passed to `std::random_device`'s // constructor *must* be "/dev/urandom" -- anything else is an error. # if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || \ - defined(__DragonFly__) || defined(__sun__) + defined(__DragonFly__) # define _LIBCPP_USING_ARC4_RANDOM # elif defined(__wasi__) || defined(__EMSCRIPTEN__) # define _LIBCPP_USING_GETENTROPY @@ -437,23 +311,6 @@ # define _LIBCPP_USING_DEV_RANDOM # endif -# if !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN) -# include -# if __BYTE_ORDER == __LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN -# elif __BYTE_ORDER == __BIG_ENDIAN -# define _LIBCPP_BIG_ENDIAN -# else // __BYTE_ORDER == __BIG_ENDIAN -# error unable to determine endian -# endif -# endif // !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN) - -# if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC) -# define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi"))) -# else -# define _LIBCPP_NO_CFI -# endif - # ifndef _LIBCPP_CXX03_LANG # define _LIBCPP_ALIGNOF(_Tp) alignof(_Tp) @@ -461,7 +318,7 @@ # define _ALIGNAS(x) alignas(x) # define _LIBCPP_NORETURN [[noreturn]] # define _NOEXCEPT noexcept -# define _NOEXCEPT_(x) noexcept(x) +# define _NOEXCEPT_(...) noexcept(__VA_ARGS__) # define _LIBCPP_CONSTEXPR constexpr # else @@ -473,7 +330,7 @@ # define _LIBCPP_HAS_NO_NOEXCEPT # define nullptr __nullptr # define _NOEXCEPT throw() -# define _NOEXCEPT_(x) +# define _NOEXCEPT_(...) # define static_assert(...) _Static_assert(__VA_ARGS__) # define decltype(...) __decltype(__VA_ARGS__) # define _LIBCPP_CONSTEXPR @@ -483,68 +340,32 @@ typedef __char32_t char32_t; # endif -# if !defined(__cpp_exceptions) || __cpp_exceptions < 199711L -# define _LIBCPP_NO_EXCEPTIONS -# endif - # define _LIBCPP_PREFERRED_ALIGNOF(_Tp) __alignof(_Tp) -// For the DriverKit ABI, we use ABI v1 with a few ABI breaking fixes on top. -# if defined(_LIBCPP_ON_DRIVERKIT) -# define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT -# define _LIBCPP_ABI_LIST_REMOVE_NODE_POINTER_UB -# define _LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB -# define _LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB -# define _LIBCPP_ABI_FORWARD_LIST_REMOVE_NODE_POINTER_UB -# endif - -# if defined(_LIBCPP_COMPILER_CLANG_BASED) - -# if defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) && (!defined(__arm__) || __ARM_ARCH_7K__ >= 2) -# define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT -# endif - // Objective-C++ features (opt-in) -# if __has_feature(objc_arc) -# define _LIBCPP_HAS_OBJC_ARC -# endif - -# if __has_feature(objc_arc_weak) -# define _LIBCPP_HAS_OBJC_ARC_WEAK -# endif - -# if __has_extension(blocks) -# define _LIBCPP_HAS_EXTENSION_BLOCKS -# endif - -# if defined(_LIBCPP_HAS_EXTENSION_BLOCKS) && defined(__APPLE__) && !defined(_LIBCPP_ON_RTKIT) -# define _LIBCPP_HAS_BLOCKS_RUNTIME -# endif - -# if !__has_feature(address_sanitizer) -# define _LIBCPP_HAS_NO_ASAN -# endif - -// Allow for build-time disabling of unsigned integer sanitization -# if __has_attribute(no_sanitize) -# define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow"))) -# endif - -# define _LIBCPP_ALWAYS_INLINE __attribute__((__always_inline__)) +# if __has_feature(objc_arc) +# define _LIBCPP_HAS_OBJC_ARC +# endif -# define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ +# if __has_feature(objc_arc_weak) +# define _LIBCPP_HAS_OBJC_ARC_WEAK +# endif -# elif defined(_LIBCPP_COMPILER_GCC) +# if __has_extension(blocks) +# define _LIBCPP_HAS_EXTENSION_BLOCKS +# endif -# if !defined(__SANITIZE_ADDRESS__) -# define _LIBCPP_HAS_NO_ASAN -# endif +# if defined(_LIBCPP_HAS_EXTENSION_BLOCKS) && defined(__APPLE__) && !defined(_LIBCPP_ON_RTKIT) +# define _LIBCPP_HAS_BLOCKS_RUNTIME +# endif -# define _LIBCPP_ALWAYS_INLINE __attribute__((__always_inline__)) +# if !__has_feature(address_sanitizer) +# define _LIBCPP_HAS_NO_ASAN +# endif -# define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ +# define _LIBCPP_ALWAYS_INLINE __attribute__((__always_inline__)) -# endif // _LIBCPP_COMPILER_[CLANG|GCC] +# define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ # if defined(_LIBCPP_OBJECT_FORMAT_COFF) @@ -579,14 +400,11 @@ typedef __char32_t char32_t; # define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllimport) # endif -# define _LIBCPP_TYPE_VIS _LIBCPP_DLL_VIS -# define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS -# define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS # define _LIBCPP_HIDDEN # define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS # define _LIBCPP_TEMPLATE_VIS # define _LIBCPP_TEMPLATE_DATA_VIS -# define _LIBCPP_ENUM_VIS +# define _LIBCPP_TYPE_VISIBILITY_DEFAULT # else @@ -597,20 +415,11 @@ typedef __char32_t char32_t; # endif # define _LIBCPP_HIDDEN _LIBCPP_VISIBILITY("hidden") -# define _LIBCPP_FUNC_VIS _LIBCPP_VISIBILITY("default") -# define _LIBCPP_TYPE_VIS _LIBCPP_VISIBILITY("default") # define _LIBCPP_TEMPLATE_DATA_VIS _LIBCPP_VISIBILITY("default") # define _LIBCPP_EXPORTED_FROM_ABI _LIBCPP_VISIBILITY("default") -# define _LIBCPP_EXCEPTION_ABI _LIBCPP_VISIBILITY("default") # define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_VISIBILITY("default") # define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS -# if defined(_LIBCPP_ENABLE_OVERRIDABLE_FUNC_ISOLATED_SECTION) -# define _LIBCPP_OVERRIDABLE_FUNC_ISOLATED_SECTION __attribute__((__section__("__TEXT,__lcxx_override"))) -# else -# define _LIBCPP_OVERRIDABLE_FUNC_ISOLATED_SECTION -# endif - // TODO: Make this a proper customization point or remove the option to override it. # ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS # define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_VISIBILITY("default") @@ -623,20 +432,17 @@ typedef __char32_t char32_t; # define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS # endif -# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) -# if __has_attribute(__type_visibility__) -# define _LIBCPP_TEMPLATE_VIS __attribute__((__type_visibility__("default"))) -# else -# define _LIBCPP_TEMPLATE_VIS __attribute__((__visibility__("default"))) -# endif +// GCC doesn't support the type_visibility attribute, so we have to keep the visibility attribute on templates +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && !__has_attribute(__type_visibility__) +# define _LIBCPP_TEMPLATE_VIS __attribute__((__visibility__("default"))) # else # define _LIBCPP_TEMPLATE_VIS # endif # if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__) -# define _LIBCPP_ENUM_VIS __attribute__((__type_visibility__("default"))) +# define _LIBCPP_TYPE_VISIBILITY_DEFAULT __attribute__((__type_visibility__("default"))) # else -# define _LIBCPP_ENUM_VIS +# define _LIBCPP_TYPE_VISIBILITY_DEFAULT # endif # endif // defined(_LIBCPP_OBJECT_FORMAT_COFF) @@ -650,22 +456,71 @@ typedef __char32_t char32_t; # define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION _LIBCPP_ALWAYS_INLINE # endif +# ifdef _LIBCPP_COMPILER_CLANG_BASED +# define _LIBCPP_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") +# define _LIBCPP_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED(str) _Pragma(_LIBCPP_TOSTRING(clang diagnostic ignored str)) +# define _LIBCPP_GCC_DIAGNOSTIC_IGNORED(str) +# elif defined(_LIBCPP_COMPILER_GCC) +# define _LIBCPP_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") +# define _LIBCPP_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED(str) +# define _LIBCPP_GCC_DIAGNOSTIC_IGNORED(str) _Pragma(_LIBCPP_TOSTRING(GCC diagnostic ignored str)) +# else +# define _LIBCPP_DIAGNOSTIC_PUSH +# define _LIBCPP_DIAGNOSTIC_POP +# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED(str) +# define _LIBCPP_GCC_DIAGNOSTIC_IGNORED(str) +# endif + +# if _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_FAST +# define _LIBCPP_HARDENING_SIG f +# elif _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_EXTENSIVE +# define _LIBCPP_HARDENING_SIG s +# elif _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_DEBUG +# define _LIBCPP_HARDENING_SIG d +# else +# define _LIBCPP_HARDENING_SIG n // "none" +# endif + +# ifdef _LIBCPP_HAS_NO_EXCEPTIONS +# define _LIBCPP_EXCEPTIONS_SIG n +# else +# define _LIBCPP_EXCEPTIONS_SIG e +# endif + +# define _LIBCPP_ODR_SIGNATURE \ + _LIBCPP_CONCAT(_LIBCPP_CONCAT(_LIBCPP_HARDENING_SIG, _LIBCPP_EXCEPTIONS_SIG), _LIBCPP_VERSION) + // This macro marks a symbol as being hidden from libc++'s ABI. This is achieved // on two levels: // 1. The symbol is given hidden visibility, which ensures that users won't start exporting // symbols from their dynamic library by means of using the libc++ headers. This ensures // that those symbols stay private to the dynamic library in which it is defined. // -// 2. The symbol is given an ABI tag that changes with each version of libc++. This ensures -// that no ODR violation can arise from mixing two TUs compiled with different versions -// of libc++ where we would have changed the definition of a symbol. If the symbols shared -// the same name, the ODR would require that their definitions be token-by-token equivalent, -// which basically prevents us from being able to make any change to any function in our -// headers. Using this ABI tag ensures that the symbol name is "bumped" artificially at -// each release, which lets us change the definition of these symbols at our leisure. -// Note that historically, this has been achieved in various ways, including force-inlining -// all functions or giving internal linkage to all functions. Both these (previous) solutions -// suffer from drawbacks that lead notably to code bloat. +// 2. The symbol is given an ABI tag that encodes the ODR-relevant properties of the library. +// This ensures that no ODR violation can arise from mixing two TUs compiled with different +// versions or configurations of libc++ (such as exceptions vs no-exceptions). Indeed, if the +// program contains two definitions of a function, the ODR requires them to be token-by-token +// equivalent, and the linker is allowed to pick either definition and discard the other one. +// +// For example, if a program contains a copy of `vector::at()` compiled with exceptions enabled +// *and* a copy of `vector::at()` compiled with exceptions disabled (by means of having two TUs +// compiled with different settings), the two definitions are both visible by the linker and they +// have the same name, but they have a meaningfully different implementation (one throws an exception +// and the other aborts the program). This violates the ODR and makes the program ill-formed, and in +// practice what will happen is that the linker will pick one of the definitions at random and will +// discard the other one. This can quite clearly lead to incorrect program behavior. +// +// A similar reasoning holds for many other properties that are ODR-affecting. Essentially any +// property that causes the code of a function to differ from the code in another configuration +// can be considered ODR-affecting. In practice, we don't encode all such properties in the ABI +// tag, but we encode the ones that we think are most important: library version, exceptions, and +// hardening mode. +// +// Note that historically, solving this problem has been achieved in various ways, including +// force-inlining all functions or giving internal linkage to all functions. Both these previous +// solutions suffer from drawbacks that lead notably to code bloat. // // Note that we use _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION to ensure that we don't depend // on _LIBCPP_HIDE_FROM_ABI methods of classes explicitly instantiated in the dynamic library. @@ -679,22 +534,24 @@ typedef __char32_t char32_t; // the implementation of a virtual function in an ABI-incompatible way in the first place, // since that would be an ABI break anyway. Hence, the lack of ABI tag should not be noticeable. // +// The macro can be applied to record and enum types. When the tagged type is nested in +// a record this "parent" record needs to have the macro too. Another use case for applying +// this macro to records and unions is to apply an ABI tag to inline constexpr variables. +// This can be useful for inline variables that are implementation details which are expected +// to change in the future. +// // TODO: We provide a escape hatch with _LIBCPP_NO_ABI_TAG for folks who want to avoid increasing // the length of symbols with an ABI tag. In practice, we should remove the escape hatch and // use compression mangling instead, see https://github.com/itanium-cxx-abi/cxx-abi/issues/70. # ifndef _LIBCPP_NO_ABI_TAG # define _LIBCPP_HIDE_FROM_ABI \ _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION \ - __attribute__((__abi_tag__(_LIBCPP_TOSTRING(_LIBCPP_VERSIONED_IDENTIFIER)))) + __attribute__((__abi_tag__(_LIBCPP_TOSTRING(_LIBCPP_ODR_SIGNATURE)))) # else # define _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION # endif # define _LIBCPP_HIDE_FROM_ABI_VIRTUAL _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION -// This macro provides a HIDE_FROM_ABI equivalent that can be applied to extern -// "C" function, as those lack mangling. -# define _LIBCPP_HIDE_FROM_ABI_C _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION - # ifdef _LIBCPP_BUILDING_LIBRARY # if _LIBCPP_ABI_VERSION > 1 # define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI @@ -705,76 +562,80 @@ typedef __char32_t char32_t; # define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI # endif -// Just so we can migrate to the new macros gradually. -# define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI +// TODO: Remove this workaround once we drop support for Clang 16 +# if __has_warning("-Wc++23-extensions") +# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED_CXX23_EXTENSION _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++23-extensions") +# else +# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED_CXX23_EXTENSION _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++2b-extensions") +# endif + +// Clang modules take a significant compile time hit when pushing and popping diagnostics. +// Since all the headers are marked as system headers in the modulemap, we can simply disable this +// pushing and popping when building with clang modules. +# if !__has_feature(modules) +# define _LIBCPP_PUSH_EXTENSION_DIAGNOSTICS \ + _LIBCPP_DIAGNOSTIC_PUSH \ + _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++11-extensions") \ + _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++14-extensions") \ + _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++17-extensions") \ + _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++20-extensions") \ + _LIBCPP_CLANG_DIAGNOSTIC_IGNORED_CXX23_EXTENSION \ + _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++14-extensions") \ + _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++17-extensions") \ + _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++20-extensions") \ + _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++23-extensions") +# define _LIBCPP_POP_EXTENSION_DIAGNOSTICS _LIBCPP_DIAGNOSTIC_POP +# else +# define _LIBCPP_PUSH_EXTENSION_DIAGNOSTICS +# define _LIBCPP_POP_EXTENSION_DIAGNOSTICS +# endif // Inline namespaces are available in Clang/GCC/MSVC regardless of C++ dialect. // clang-format off -# define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_ABI_NAMESPACE { -# define _LIBCPP_END_NAMESPACE_STD }} -# define _VSTD std - -_LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD +# define _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_PUSH_EXTENSION_DIAGNOSTICS \ + namespace _LIBCPP_TYPE_VISIBILITY_DEFAULT std { \ + inline namespace _LIBCPP_ABI_NAMESPACE { +# define _LIBCPP_END_NAMESPACE_STD }} _LIBCPP_POP_EXTENSION_DIAGNOSTICS + +#ifdef _LIBCPP_ABI_NO_FILESYSTEM_INLINE_NAMESPACE +# define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM _LIBCPP_BEGIN_NAMESPACE_STD namespace filesystem { +# define _LIBCPP_END_NAMESPACE_FILESYSTEM } _LIBCPP_END_NAMESPACE_STD +#else +# define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM _LIBCPP_BEGIN_NAMESPACE_STD \ + inline namespace __fs { namespace filesystem { -# if _LIBCPP_STD_VER > 14 -# define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \ - _LIBCPP_BEGIN_NAMESPACE_STD inline namespace __fs { namespace filesystem { -# else -# define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \ - _LIBCPP_BEGIN_NAMESPACE_STD namespace __fs { namespace filesystem { -# endif +# define _LIBCPP_END_NAMESPACE_FILESYSTEM }} _LIBCPP_END_NAMESPACE_STD +#endif -# define _LIBCPP_END_NAMESPACE_FILESYSTEM _LIBCPP_END_NAMESPACE_STD }} // clang-format on -# define _VSTD_FS std::__fs::filesystem - # if __has_attribute(__enable_if__) # define _LIBCPP_PREFERRED_OVERLOAD __attribute__((__enable_if__(true, ""))) # endif -# ifndef __SIZEOF_INT128__ +# if !defined(__SIZEOF_INT128__) || defined(_MSC_VER) # define _LIBCPP_HAS_NO_INT128 # endif -# ifndef __cpp_consteval -# define _LIBCPP_CONSTEVAL _LIBCPP_CONSTEXPR -# else -# define _LIBCPP_CONSTEVAL consteval -# endif - -# if __has_attribute(__malloc__) -# define _LIBCPP_NOALIAS __attribute__((__malloc__)) -# else -# define _LIBCPP_NOALIAS -# endif - -# if __has_attribute(__using_if_exists__) -# define _LIBCPP_USING_IF_EXISTS __attribute__((__using_if_exists__)) -# else -# define _LIBCPP_USING_IF_EXISTS -# endif - # ifdef _LIBCPP_CXX03_LANG # define _LIBCPP_DECLARE_STRONG_ENUM(x) \ - struct _LIBCPP_TYPE_VIS x { \ + struct _LIBCPP_EXPORTED_FROM_ABI x { \ enum __lx // clang-format off # define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \ __lx __v_; \ - _LIBCPP_INLINE_VISIBILITY x(__lx __v) : __v_(__v) {} \ - _LIBCPP_INLINE_VISIBILITY explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \ - _LIBCPP_INLINE_VISIBILITY operator int() const { return __v_; } \ + _LIBCPP_HIDE_FROM_ABI x(__lx __v) : __v_(__v) {} \ + _LIBCPP_HIDE_FROM_ABI explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \ + _LIBCPP_HIDE_FROM_ABI operator int() const { return __v_; } \ }; // clang-format on # else // _LIBCPP_CXX03_LANG -# define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_ENUM_VIS x +# define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class x # define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) # endif // _LIBCPP_CXX03_LANG -# if defined(__APPLE__) || defined(__FreeBSD__) || defined(_LIBCPP_MSVCRT_LIKE) || defined(__sun__) || \ - defined(__NetBSD__) +# if defined(__APPLE__) || defined(__FreeBSD__) || defined(_LIBCPP_MSVCRT_LIKE) || defined(__NetBSD__) # if !defined(_LIBCPP_ON_SEP) # define _LIBCPP_LOCALE__L_EXTENSIONS 1 # endif @@ -818,7 +679,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # endif # endif -# if defined(__APPLE__) || defined(__FreeBSD__) || defined(__sun__) +# if defined(__APPLE__) || defined(__FreeBSD__) # define _LIBCPP_WCTYPE_IS_MASK # endif @@ -831,10 +692,10 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD // Deprecations warnings are always enabled, except when users explicitly opt-out // by defining _LIBCPP_DISABLE_DEPRECATION_WARNINGS. # if !defined(_LIBCPP_DISABLE_DEPRECATION_WARNINGS) -# if __has_attribute(deprecated) -# define _LIBCPP_DEPRECATED __attribute__((deprecated)) -# define _LIBCPP_DEPRECATED_(m) __attribute__((deprecated(m))) -# elif _LIBCPP_STD_VER > 11 +# if __has_attribute(__deprecated__) +# define _LIBCPP_DEPRECATED __attribute__((__deprecated__)) +# define _LIBCPP_DEPRECATED_(m) __attribute__((__deprecated__(m))) +# elif _LIBCPP_STD_VER >= 14 # define _LIBCPP_DEPRECATED [[deprecated]] # define _LIBCPP_DEPRECATED_(m) [[deprecated(m)]] # else @@ -846,35 +707,49 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # define _LIBCPP_DEPRECATED_(m) # endif +# if _LIBCPP_STD_VER < 20 +# define _LIBCPP_DEPRECATED_ATOMIC_SYNC \ + _LIBCPP_DEPRECATED_("The C++20 synchronization library has been deprecated prior to C++20. Please update to " \ + "using -std=c++20 if you need to use these facilities.") +# else +# define _LIBCPP_DEPRECATED_ATOMIC_SYNC /* nothing */ +# endif + # if !defined(_LIBCPP_CXX03_LANG) # define _LIBCPP_DEPRECATED_IN_CXX11 _LIBCPP_DEPRECATED # else # define _LIBCPP_DEPRECATED_IN_CXX11 # endif -# if _LIBCPP_STD_VER > 11 +# if _LIBCPP_STD_VER >= 14 # define _LIBCPP_DEPRECATED_IN_CXX14 _LIBCPP_DEPRECATED # else # define _LIBCPP_DEPRECATED_IN_CXX14 # endif -# if _LIBCPP_STD_VER > 14 +# if _LIBCPP_STD_VER >= 17 # define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED # else # define _LIBCPP_DEPRECATED_IN_CXX17 # endif -# if _LIBCPP_STD_VER > 17 +# if _LIBCPP_STD_VER >= 20 # define _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_DEPRECATED # else # define _LIBCPP_DEPRECATED_IN_CXX20 # endif -#if _LIBCPP_STD_VER >= 23 -# define _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_DEPRECATED -#else -# define _LIBCPP_DEPRECATED_IN_CXX23 -#endif +# if _LIBCPP_STD_VER >= 23 +# define _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_DEPRECATED +# else +# define _LIBCPP_DEPRECATED_IN_CXX23 +# endif + +# if _LIBCPP_STD_VER >= 26 +# define _LIBCPP_DEPRECATED_IN_CXX26 _LIBCPP_DEPRECATED +# else +# define _LIBCPP_DEPRECATED_IN_CXX26 +# endif # if !defined(_LIBCPP_HAS_NO_CHAR8_T) # define _LIBCPP_DEPRECATED_WITH_CHAR8_T _LIBCPP_DEPRECATED @@ -894,74 +769,41 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # endif # if _LIBCPP_STD_VER <= 11 -# define _LIBCPP_EXPLICIT_AFTER_CXX11 +# define _LIBCPP_EXPLICIT_SINCE_CXX14 # else -# define _LIBCPP_EXPLICIT_AFTER_CXX11 explicit +# define _LIBCPP_EXPLICIT_SINCE_CXX14 explicit # endif -# if _LIBCPP_STD_VER > 11 +# if _LIBCPP_STD_VER >= 23 +# define _LIBCPP_EXPLICIT_SINCE_CXX23 explicit +# else +# define _LIBCPP_EXPLICIT_SINCE_CXX23 +# endif + +# if _LIBCPP_STD_VER >= 14 # define _LIBCPP_CONSTEXPR_SINCE_CXX14 constexpr # else # define _LIBCPP_CONSTEXPR_SINCE_CXX14 # endif -# if _LIBCPP_STD_VER > 14 +# if _LIBCPP_STD_VER >= 17 # define _LIBCPP_CONSTEXPR_SINCE_CXX17 constexpr # else # define _LIBCPP_CONSTEXPR_SINCE_CXX17 # endif -# if _LIBCPP_STD_VER > 17 +# if _LIBCPP_STD_VER >= 20 # define _LIBCPP_CONSTEXPR_SINCE_CXX20 constexpr # else # define _LIBCPP_CONSTEXPR_SINCE_CXX20 # endif -# if _LIBCPP_STD_VER > 20 +# if _LIBCPP_STD_VER >= 23 # define _LIBCPP_CONSTEXPR_SINCE_CXX23 constexpr # else # define _LIBCPP_CONSTEXPR_SINCE_CXX23 # endif -# if __has_cpp_attribute(nodiscard) -# define _LIBCPP_NODISCARD [[nodiscard]] -# else -// We can't use GCC's [[gnu::warn_unused_result]] and -// __attribute__((warn_unused_result)), because GCC does not silence them via -// (void) cast. -# define _LIBCPP_NODISCARD -# endif - -// _LIBCPP_NODISCARD_EXT may be used to apply [[nodiscard]] to entities not -// specified as such as an extension. -# if !defined(_LIBCPP_DISABLE_NODISCARD_EXT) -# define _LIBCPP_NODISCARD_EXT _LIBCPP_NODISCARD -# else -# define _LIBCPP_NODISCARD_EXT -# endif - -# if _LIBCPP_STD_VER > 17 || !defined(_LIBCPP_DISABLE_NODISCARD_EXT) -# define _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_NODISCARD -# else -# define _LIBCPP_NODISCARD_AFTER_CXX17 -# endif - -# if __has_attribute(__no_destroy__) -# define _LIBCPP_NO_DESTROY __attribute__((__no_destroy__)) -# else -# define _LIBCPP_NO_DESTROY -# endif - -# ifndef _LIBCPP_HAS_NO_ASAN - extern "C" _LIBCPP_FUNC_VIS void - __sanitizer_annotate_contiguous_container(const void*, const void*, const void*, const void*); -# endif - -// Try to find out if RTTI is disabled. -# if !defined(__cpp_rtti) || __cpp_rtti < 199711L -# define _LIBCPP_HAS_NO_RTTI -# endif - # ifndef _LIBCPP_WEAK # define _LIBCPP_WEAK __attribute__((__weak__)) # endif @@ -981,7 +823,6 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD defined(__linux__) || \ defined(__GNU__) || \ (defined(__APPLE__) && !defined(_LIBCPP_ON_RTKIT) && !defined(_LIBCPP_ON_SEP)) || \ - defined(__sun__) || \ defined(__MVS__) || \ defined(_AIX) || \ defined(__EMSCRIPTEN__) @@ -1060,11 +901,6 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # define _LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION # endif -// Some systems do not provide gets() in their C library, for security reasons. -# if defined(_LIBCPP_MSVCRT) || (defined(__FreeBSD_version) && __FreeBSD_version >= 1300043) || defined(__OpenBSD__) -# define _LIBCPP_C_HAS_NO_GETS -# endif - # if defined(__BIONIC__) || defined(__NuttX__) || defined(__Fuchsia__) || defined(__wasi__) || \ defined(_LIBCPP_HAS_MUSL_LIBC) || defined(__OpenBSD__) || defined(_LIBCPP_ON_SEP) # define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE @@ -1083,13 +919,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # ifndef _LIBCPP_ATOMIC_FLAG_TYPE # define _LIBCPP_ATOMIC_FLAG_TYPE bool # endif -# ifdef _LIBCPP_FREESTANDING -# define _LIBCPP_ATOMIC_ONLY_USE_BUILTINS -# endif # endif -# ifndef _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK -# define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK +# if defined(__FreeBSD__) && defined(__clang__) && __has_attribute(__no_thread_safety_analysis__) +# define _LIBCPP_NO_THREAD_SAFETY_ANALYSIS __attribute__((__no_thread_safety_analysis__)) +# else +# define _LIBCPP_NO_THREAD_SAFETY_ANALYSIS # endif # if defined(_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS) @@ -1110,7 +945,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # define _LIBCPP_THREAD_SAFETY_ANNOTATION(x) # endif -# if _LIBCPP_STD_VER > 17 +# if _LIBCPP_STD_VER >= 20 # define _LIBCPP_CONSTINIT constinit # elif __has_attribute(__require_constant_initialization__) # define _LIBCPP_CONSTINIT __attribute__((__require_constant_initialization__)) @@ -1118,43 +953,21 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # define _LIBCPP_CONSTINIT # endif -# if __has_attribute(__diagnose_if__) && !defined(_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS) -# define _LIBCPP_DIAGNOSE_WARNING(...) __attribute__((__diagnose_if__(__VA_ARGS__, "warning"))) -# else -# define _LIBCPP_DIAGNOSE_WARNING(...) -# endif - -// Use a function like macro to imply that it must be followed by a semicolon -# if __has_cpp_attribute(fallthrough) -# define _LIBCPP_FALLTHROUGH() [[fallthrough]] -# elif __has_attribute(__fallthrough__) -# define _LIBCPP_FALLTHROUGH() __attribute__((__fallthrough__)) -# else -# define _LIBCPP_FALLTHROUGH() ((void)0) -# endif - -# if __has_cpp_attribute(_Clang::__lifetimebound__) -# define _LIBCPP_LIFETIMEBOUND [[_Clang::__lifetimebound__]] -# else -# define _LIBCPP_LIFETIMEBOUND -# endif - -# if __has_attribute(__nodebug__) -# define _LIBCPP_NODEBUG __attribute__((__nodebug__)) -# else -# define _LIBCPP_NODEBUG -# endif - -# if __has_attribute(__standalone_debug__) -# define _LIBCPP_STANDALONE_DEBUG __attribute__((__standalone_debug__)) -# else -# define _LIBCPP_STANDALONE_DEBUG -# endif - -# if __has_attribute(__preferred_name__) -# define _LIBCPP_PREFERRED_NAME(x) __attribute__((__preferred_name__(x))) +# if defined(__CUDACC__) || defined(__CUDA_ARCH__) || defined(__CUDA_LIBDEVICE__) +// The CUDA SDK contains an unfortunate definition for the __noinline__ macro, +// which breaks the regular __attribute__((__noinline__)) syntax. Therefore, +// when compiling for CUDA we use the non-underscored version of the noinline +// attribute. +// +// This is a temporary workaround and we still expect the CUDA SDK team to solve +// this issue properly in the SDK headers. +// +// See https://github.com/llvm/llvm-project/pull/73838 for more details. +# define _LIBCPP_NOINLINE __attribute__((noinline)) +# elif __has_attribute(__noinline__) +# define _LIBCPP_NOINLINE __attribute__((__noinline__)) # else -# define _LIBCPP_PREFERRED_NAME(x) +# define _LIBCPP_NOINLINE # endif // We often repeat things just for handling wide characters in the library. @@ -1167,31 +980,10 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # define _LIBCPP_IF_WIDE_CHARACTERS(...) __VA_ARGS__ # endif -# if defined(_LIBCPP_ABI_MICROSOFT) && __has_declspec_attribute(empty_bases) -# define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases) -# else -# define _LIBCPP_DECLSPEC_EMPTY_BASES -# endif - -# if defined(_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES) -# define _LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR -# define _LIBCPP_ENABLE_CXX17_REMOVED_BINDERS -# define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE -# define _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS -# define _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION -# endif // _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES - -# if defined(_LIBCPP_ENABLE_CXX20_REMOVED_FEATURES) -# define _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS -# define _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_VOID_SPECIALIZATION -# define _LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS -# define _LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS -# define _LIBCPP_ENABLE_CXX20_REMOVED_RAW_STORAGE_ITERATOR -# define _LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS -# endif // _LIBCPP_ENABLE_CXX20_REMOVED_FEATURES - -# define _LIBCPP_PUSH_MACROS _Pragma("push_macro(\"min\")") _Pragma("push_macro(\"max\")") -# define _LIBCPP_POP_MACROS _Pragma("pop_macro(\"min\")") _Pragma("pop_macro(\"max\")") +// clang-format off +# define _LIBCPP_PUSH_MACROS _Pragma("push_macro(\"min\")") _Pragma("push_macro(\"max\")") _Pragma("push_macro(\"refresh\")") _Pragma("push_macro(\"move\")") _Pragma("push_macro(\"erase\")") +# define _LIBCPP_POP_MACROS _Pragma("pop_macro(\"min\")") _Pragma("pop_macro(\"max\")") _Pragma("pop_macro(\"refresh\")") _Pragma("pop_macro(\"move\")") _Pragma("pop_macro(\"erase\")") +// clang-format on # ifndef _LIBCPP_NO_AUTO_LINK # if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY) @@ -1214,28 +1006,6 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # define _LIBCPP_FOPEN_CLOEXEC_MODE # endif -// Support for _FILE_OFFSET_BITS=64 landed gradually in Android, so the full set -// of functions used in cstdio may not be available for low API levels when -// using 64-bit file offsets on LP32. -# if defined(__BIONIC__) && defined(__USE_FILE_OFFSET64) && __ANDROID_API__ < 24 -# define _LIBCPP_HAS_NO_FGETPOS_FSETPOS -# endif - -# if __has_attribute(__init_priority__) -# define _LIBCPP_INIT_PRIORITY_MAX __attribute__((__init_priority__(100))) -# else -# define _LIBCPP_INIT_PRIORITY_MAX -# endif - -# if __has_attribute(__format__) -// The attribute uses 1-based indices for ordinary and static member functions. -// The attribute uses 2-based indices for non-static member functions. -# define _LIBCPP_ATTRIBUTE_FORMAT(archetype, format_string_index, first_format_arg_index) \ - __attribute__((__format__(archetype, format_string_index, first_format_arg_index))) -# else -# define _LIBCPP_ATTRIBUTE_FORMAT(archetype, format_string_index, first_format_arg_index) /* nothing */ -# endif - # if __has_cpp_attribute(msvc::no_unique_address) // MSVC implements [[no_unique_address]] as a silent no-op currently. // (If/when MSVC breaks its C++ ABI, it will be changed to work as intended.) @@ -1247,7 +1017,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD // [[msvc::no_unique_address]], this should be preferred though. # define _LIBCPP_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]] # elif __has_cpp_attribute(no_unique_address) -# define _LIBCPP_NO_UNIQUE_ADDRESS [[no_unique_address]] +# define _LIBCPP_NO_UNIQUE_ADDRESS [[__no_unique_address__]] # else # define _LIBCPP_NO_UNIQUE_ADDRESS /* nothing */ // Note that this can be replaced by #error as soon as clang-cl @@ -1258,37 +1028,6 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD // the ABI inconsistent. # endif -# ifdef _LIBCPP_COMPILER_CLANG_BASED -# define _LIBCPP_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") -# define _LIBCPP_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") -# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED(str) _Pragma(_LIBCPP_TOSTRING(clang diagnostic ignored str)) -# define _LIBCPP_GCC_DIAGNOSTIC_IGNORED(str) -# elif defined(_LIBCPP_COMPILER_GCC) -# define _LIBCPP_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") -# define _LIBCPP_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") -# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED(str) -# define _LIBCPP_GCC_DIAGNOSTIC_IGNORED(str) _Pragma(_LIBCPP_TOSTRING(GCC diagnostic ignored str)) -# else -# define _LIBCPP_DIAGNOSTIC_PUSH -# define _LIBCPP_DIAGNOSTIC_POP -# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED(str) -# define _LIBCPP_GCC_DIAGNOSTIC_IGNORED(str) -# endif - -# if defined(_AIX) && !defined(_LIBCPP_COMPILER_GCC) -# define _LIBCPP_PACKED_BYTE_FOR_AIX _Pragma("pack(1)") -# define _LIBCPP_PACKED_BYTE_FOR_AIX_END _Pragma("pack(pop)") -# else -# define _LIBCPP_PACKED_BYTE_FOR_AIX /* empty */ -# define _LIBCPP_PACKED_BYTE_FOR_AIX_END /* empty */ -# endif - -# if __has_attribute(__packed__) -# define _LIBCPP_PACKED __attribute__((__packed__)) -# else -# define _LIBCPP_PACKED -# endif - // c8rtomb() and mbrtoc8() were added in C++20 and C23. Support for these // functions is gradually being added to existing C libraries. The conditions // below check for known C library versions and conditions under which these @@ -1310,13 +1049,19 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD // macro is used to mark them as such, which suppresses the // '-Wctad-maybe-unsupported' compiler warning when CTAD is used in user code // with these classes. -#if _LIBCPP_STD_VER >= 17 -# define _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(_ClassName) \ - template \ - _ClassName(typename _Tag::__allow_ctad...) -> _ClassName<_Tag...> -#else -# define _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(_ClassName) static_assert(true, "") -#endif +# if _LIBCPP_STD_VER >= 17 +# ifdef _LIBCPP_COMPILER_CLANG_BASED +# define _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(_ClassName) \ + template \ + [[maybe_unused]] _ClassName(typename _Tag::__allow_ctad...)->_ClassName<_Tag...> +# else +# define _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(ClassName) \ + template \ + ClassName(typename _Tag::__allow_ctad...)->ClassName<_Tag...> +# endif +# else +# define _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(_ClassName) static_assert(true, "") +# endif // TODO(varconst): currently, there are bugs in Clang's intrinsics when handling Objective-C++ `id`, so don't use // compiler intrinsics in the Objective-C++ mode. @@ -1324,6 +1069,172 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # define _LIBCPP_WORKAROUND_OBJCXX_COMPILER_INTRINSICS # endif +# define _PSTL_PRAGMA(x) _Pragma(#x) + +// Enable SIMD for compilers that support OpenMP 4.0 +# if (defined(_OPENMP) && _OPENMP >= 201307) + +# define _PSTL_UDR_PRESENT +# define _PSTL_PRAGMA_SIMD _PSTL_PRAGMA(omp simd) +# define _PSTL_PRAGMA_DECLARE_SIMD _PSTL_PRAGMA(omp declare simd) +# define _PSTL_PRAGMA_SIMD_REDUCTION(PRM) _PSTL_PRAGMA(omp simd reduction(PRM)) +# define _PSTL_PRAGMA_SIMD_SCAN(PRM) _PSTL_PRAGMA(omp simd reduction(inscan, PRM)) +# define _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN(PRM) _PSTL_PRAGMA(omp scan inclusive(PRM)) +# define _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN(PRM) _PSTL_PRAGMA(omp scan exclusive(PRM)) + +// Declaration of reduction functor, where +// NAME - the name of the functor +// OP - type of the callable object with the reduction operation +// omp_in - refers to the local partial result +// omp_out - refers to the final value of the combiner operator +// omp_priv - refers to the private copy of the initial value +// omp_orig - refers to the original variable to be reduced +# define _PSTL_PRAGMA_DECLARE_REDUCTION(NAME, OP) \ + _PSTL_PRAGMA(omp declare reduction(NAME:OP : omp_out(omp_in)) initializer(omp_priv = omp_orig)) + +# elif defined(_LIBCPP_COMPILER_CLANG_BASED) + +# define _PSTL_PRAGMA_SIMD _Pragma("clang loop vectorize(enable) interleave(enable)") +# define _PSTL_PRAGMA_DECLARE_SIMD +# define _PSTL_PRAGMA_SIMD_REDUCTION(PRM) _Pragma("clang loop vectorize(enable) interleave(enable)") +# define _PSTL_PRAGMA_SIMD_SCAN(PRM) _Pragma("clang loop vectorize(enable) interleave(enable)") +# define _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN(PRM) +# define _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN(PRM) +# define _PSTL_PRAGMA_DECLARE_REDUCTION(NAME, OP) + +# else // (defined(_OPENMP) && _OPENMP >= 201307) + +# define _PSTL_PRAGMA_SIMD +# define _PSTL_PRAGMA_DECLARE_SIMD +# define _PSTL_PRAGMA_SIMD_REDUCTION(PRM) +# define _PSTL_PRAGMA_SIMD_SCAN(PRM) +# define _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN(PRM) +# define _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN(PRM) +# define _PSTL_PRAGMA_DECLARE_REDUCTION(NAME, OP) + +# endif // (defined(_OPENMP) && _OPENMP >= 201307) + +# define _PSTL_USE_NONTEMPORAL_STORES_IF_ALLOWED + +// Optional attributes - these are useful for a better QoI, but not required to be available + +# if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC) +# define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi"))) +# else +# define _LIBCPP_NO_CFI +# endif + +# if __has_attribute(__malloc__) +# define _LIBCPP_NOALIAS __attribute__((__malloc__)) +# else +# define _LIBCPP_NOALIAS +# endif + +# if __has_attribute(__using_if_exists__) +# define _LIBCPP_USING_IF_EXISTS __attribute__((__using_if_exists__)) +# else +# define _LIBCPP_USING_IF_EXISTS +# endif + +# if __has_cpp_attribute(__nodiscard__) +# define _LIBCPP_NODISCARD [[__nodiscard__]] +# else +// We can't use GCC's [[gnu::warn_unused_result]] and +// __attribute__((warn_unused_result)), because GCC does not silence them via +// (void) cast. +# define _LIBCPP_NODISCARD +# endif + +# if __has_attribute(__no_destroy__) +# define _LIBCPP_NO_DESTROY __attribute__((__no_destroy__)) +# else +# define _LIBCPP_NO_DESTROY +# endif + +# if __has_attribute(__diagnose_if__) +# define _LIBCPP_DIAGNOSE_WARNING(...) __attribute__((__diagnose_if__(__VA_ARGS__, "warning"))) +# else +# define _LIBCPP_DIAGNOSE_WARNING(...) +# endif + +// Use a function like macro to imply that it must be followed by a semicolon +# if __has_cpp_attribute(fallthrough) +# define _LIBCPP_FALLTHROUGH() [[fallthrough]] +# elif __has_attribute(__fallthrough__) +# define _LIBCPP_FALLTHROUGH() __attribute__((__fallthrough__)) +# else +# define _LIBCPP_FALLTHROUGH() ((void)0) +# endif + +# if __has_cpp_attribute(_Clang::__lifetimebound__) +# define _LIBCPP_LIFETIMEBOUND [[_Clang::__lifetimebound__]] +# else +# define _LIBCPP_LIFETIMEBOUND +# endif + +# if __has_attribute(__nodebug__) +# define _LIBCPP_NODEBUG __attribute__((__nodebug__)) +# else +# define _LIBCPP_NODEBUG +# endif + +# if __has_attribute(__standalone_debug__) +# define _LIBCPP_STANDALONE_DEBUG __attribute__((__standalone_debug__)) +# else +# define _LIBCPP_STANDALONE_DEBUG +# endif + +# if __has_attribute(__preferred_name__) +# define _LIBCPP_PREFERRED_NAME(x) __attribute__((__preferred_name__(x))) +# else +# define _LIBCPP_PREFERRED_NAME(x) +# endif + +# if __has_attribute(__no_sanitize__) +# define _LIBCPP_NO_SANITIZE(...) __attribute__((__no_sanitize__(__VA_ARGS__))) +# else +# define _LIBCPP_NO_SANITIZE(...) +# endif + +# if __has_attribute(__init_priority__) +# define _LIBCPP_INIT_PRIORITY_MAX __attribute__((__init_priority__(100))) +# else +# define _LIBCPP_INIT_PRIORITY_MAX +# endif + +# if __has_attribute(__format__) +// The attribute uses 1-based indices for ordinary and static member functions. +// The attribute uses 2-based indices for non-static member functions. +# define _LIBCPP_ATTRIBUTE_FORMAT(archetype, format_string_index, first_format_arg_index) \ + __attribute__((__format__(archetype, format_string_index, first_format_arg_index))) +# else +# define _LIBCPP_ATTRIBUTE_FORMAT(archetype, format_string_index, first_format_arg_index) /* nothing */ +# endif + +# if __has_attribute(__packed__) +# define _LIBCPP_PACKED __attribute__((__packed__)) +# else +# define _LIBCPP_PACKED +# endif + +# if defined(_LIBCPP_ABI_MICROSOFT) && __has_declspec_attribute(empty_bases) +# define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases) +# else +# define _LIBCPP_DECLSPEC_EMPTY_BASES +# endif + +// Allow for build-time disabling of unsigned integer sanitization +# if __has_attribute(no_sanitize) && !defined(_LIBCPP_COMPILER_GCC) +# define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow"))) +# else +# define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK +# endif + +// Clang-18 has support for deducing this, but it does not set the FTM. +# if defined(__cpp_explicit_this_parameter) || (defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER >= 1800) +# define _LIBCPP_HAS_EXPLICIT_THIS_PARAMETER +# endif + #endif // __cplusplus #endif // _LIBCPP___CONFIG diff --git a/include/c++/v1/__config_site b/include/c++/v1/__config_site index e0af5e1e..206848d4 100644 --- a/include/c++/v1/__config_site +++ b/include/c++/v1/__config_site @@ -19,20 +19,27 @@ /* #undef _LIBCPP_HAS_THREAD_API_PTHREAD */ /* #undef _LIBCPP_HAS_THREAD_API_EXTERNAL */ /* #undef _LIBCPP_HAS_THREAD_API_WIN32 */ -/* #undef _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL */ /* #undef _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS */ /* #undef _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS */ /* #undef _LIBCPP_NO_VCRUNTIME */ /* #undef _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION */ -/* #undef _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY */ -/* #undef _LIBCPP_HAS_PARALLEL_ALGORITHMS */ +/* #undef _LIBCPP_HAS_NO_FILESYSTEM */ /* #undef _LIBCPP_HAS_NO_RANDOM_DEVICE */ /* #undef _LIBCPP_HAS_NO_LOCALIZATION */ -/* #undef _LIBCPP_HAS_NO_FSTREAM */ +/* #undef _LIBCPP_HAS_NO_UNICODE */ /* #undef _LIBCPP_HAS_NO_WIDE_CHARACTERS */ +/* #undef _LIBCPP_HAS_NO_STD_MODULES */ +#define _LIBCPP_HAS_NO_TIME_ZONE_DATABASE #define _LIBCPP_HAS_TYPED_NEW_DELETE_DEFINITIONS -#define _LIBCPP_ENABLE_ASSERTIONS_DEFAULT 0 -/* #undef _LIBCPP_ENABLE_DEBUG_MODE */ +/* #undef _LIBCPP_INSTRUMENTED_WITH_ASAN */ + +// PSTL backends +/* #undef _LIBCPP_PSTL_BACKEND_SERIAL */ +/* #undef _LIBCPP_PSTL_BACKEND_STD_THREAD */ +#define _LIBCPP_PSTL_BACKEND_LIBDISPATCH + +// Hardening. +#define _LIBCPP_HARDENING_MODE_DEFAULT 2 // __USE_MINGW_ANSI_STDIO gets redefined on MinGW #ifdef __clang__ diff --git a/include/c++/v1/__coroutine/coroutine_handle.h b/include/c++/v1/__coroutine/coroutine_handle.h index 0a6cc1ca..4557a664 100644 --- a/include/c++/v1/__coroutine/coroutine_handle.h +++ b/include/c++/v1/__coroutine/coroutine_handle.h @@ -21,7 +21,7 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -32,172 +32,145 @@ struct _LIBCPP_TEMPLATE_VIS coroutine_handle; template <> struct _LIBCPP_TEMPLATE_VIS coroutine_handle { public: - // [coroutine.handle.con], construct/reset - _LIBCPP_HIDE_FROM_ABI - constexpr coroutine_handle() noexcept = default; - - _LIBCPP_HIDE_FROM_ABI - constexpr coroutine_handle(nullptr_t) noexcept {} - - _LIBCPP_HIDE_FROM_ABI - coroutine_handle& operator=(nullptr_t) noexcept { - __handle_ = nullptr; - return *this; - } - - // [coroutine.handle.export.import], export/import - _LIBCPP_HIDE_FROM_ABI - constexpr void* address() const noexcept { return __handle_; } - - _LIBCPP_HIDE_FROM_ABI - static constexpr coroutine_handle from_address(void* __addr) noexcept { - coroutine_handle __tmp; - __tmp.__handle_ = __addr; - return __tmp; - } - - // [coroutine.handle.observers], observers - _LIBCPP_HIDE_FROM_ABI - constexpr explicit operator bool() const noexcept { - return __handle_ != nullptr; - } - - _LIBCPP_HIDE_FROM_ABI - bool done() const { - _LIBCPP_ASSERT(__is_suspended(), "done() can be called only on suspended coroutines"); - return __builtin_coro_done(__handle_); - } - - // [coroutine.handle.resumption], resumption - _LIBCPP_HIDE_FROM_ABI - void operator()() const { resume(); } - - _LIBCPP_HIDE_FROM_ABI - void resume() const { - _LIBCPP_ASSERT(__is_suspended(), "resume() can be called only on suspended coroutines"); - _LIBCPP_ASSERT(!done(), "resume() has undefined behavior when the coroutine is done"); - __builtin_coro_resume(__handle_); - } - - _LIBCPP_HIDE_FROM_ABI - void destroy() const { - _LIBCPP_ASSERT(__is_suspended(), "destroy() can be called only on suspended coroutines"); - __builtin_coro_destroy(__handle_); - } + // [coroutine.handle.con], construct/reset + constexpr coroutine_handle() noexcept = default; + + _LIBCPP_HIDE_FROM_ABI constexpr coroutine_handle(nullptr_t) noexcept {} + + _LIBCPP_HIDE_FROM_ABI coroutine_handle& operator=(nullptr_t) noexcept { + __handle_ = nullptr; + return *this; + } + + // [coroutine.handle.export.import], export/import + _LIBCPP_HIDE_FROM_ABI constexpr void* address() const noexcept { return __handle_; } + + _LIBCPP_HIDE_FROM_ABI static constexpr coroutine_handle from_address(void* __addr) noexcept { + coroutine_handle __tmp; + __tmp.__handle_ = __addr; + return __tmp; + } + + // [coroutine.handle.observers], observers + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return __handle_ != nullptr; } + + _LIBCPP_HIDE_FROM_ABI bool done() const { + _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(__is_suspended(), "done() can be called only on suspended coroutines"); + return __builtin_coro_done(__handle_); + } + + // [coroutine.handle.resumption], resumption + _LIBCPP_HIDE_FROM_ABI void operator()() const { resume(); } + + _LIBCPP_HIDE_FROM_ABI void resume() const { + _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(__is_suspended(), "resume() can be called only on suspended coroutines"); + _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(!done(), "resume() has undefined behavior when the coroutine is done"); + __builtin_coro_resume(__handle_); + } + + _LIBCPP_HIDE_FROM_ABI void destroy() const { + _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(__is_suspended(), "destroy() can be called only on suspended coroutines"); + __builtin_coro_destroy(__handle_); + } private: - bool __is_suspended() const { - // FIXME actually implement a check for if the coro is suspended. - return __handle_ != nullptr; - } + _LIBCPP_HIDE_FROM_ABI bool __is_suspended() const { + // FIXME actually implement a check for if the coro is suspended. + return __handle_ != nullptr; + } - void* __handle_ = nullptr; + void* __handle_ = nullptr; }; // [coroutine.handle.compare] -inline _LIBCPP_HIDE_FROM_ABI -constexpr bool operator==(coroutine_handle<> __x, coroutine_handle<> __y) noexcept { - return __x.address() == __y.address(); +inline _LIBCPP_HIDE_FROM_ABI constexpr bool operator==(coroutine_handle<> __x, coroutine_handle<> __y) noexcept { + return __x.address() == __y.address(); } -inline _LIBCPP_HIDE_FROM_ABI -constexpr strong_ordering operator<=>(coroutine_handle<> __x, coroutine_handle<> __y) noexcept { - return compare_three_way()(__x.address(), __y.address()); +inline _LIBCPP_HIDE_FROM_ABI constexpr strong_ordering +operator<=>(coroutine_handle<> __x, coroutine_handle<> __y) noexcept { + return compare_three_way()(__x.address(), __y.address()); } template struct _LIBCPP_TEMPLATE_VIS coroutine_handle { public: - // [coroutine.handle.con], construct/reset - _LIBCPP_HIDE_FROM_ABI - constexpr coroutine_handle() noexcept = default; - - _LIBCPP_HIDE_FROM_ABI - constexpr coroutine_handle(nullptr_t) noexcept {} - - _LIBCPP_HIDE_FROM_ABI - static coroutine_handle from_promise(_Promise& __promise) { - using _RawPromise = __remove_cv_t<_Promise>; - coroutine_handle __tmp; - __tmp.__handle_ = - __builtin_coro_promise(_VSTD::addressof(const_cast<_RawPromise&>(__promise)), alignof(_Promise), true); - return __tmp; - } - - _LIBCPP_HIDE_FROM_ABI - coroutine_handle& operator=(nullptr_t) noexcept { - __handle_ = nullptr; - return *this; - } - - // [coroutine.handle.export.import], export/import - _LIBCPP_HIDE_FROM_ABI - constexpr void* address() const noexcept { return __handle_; } - - _LIBCPP_HIDE_FROM_ABI - static constexpr coroutine_handle from_address(void* __addr) noexcept { - coroutine_handle __tmp; - __tmp.__handle_ = __addr; - return __tmp; - } - - // [coroutine.handle.conv], conversion - _LIBCPP_HIDE_FROM_ABI - constexpr operator coroutine_handle<>() const noexcept { - return coroutine_handle<>::from_address(address()); - } - - // [coroutine.handle.observers], observers - _LIBCPP_HIDE_FROM_ABI - constexpr explicit operator bool() const noexcept { - return __handle_ != nullptr; - } - - _LIBCPP_HIDE_FROM_ABI - bool done() const { - _LIBCPP_ASSERT(__is_suspended(), "done() can be called only on suspended coroutines"); - return __builtin_coro_done(__handle_); - } - - // [coroutine.handle.resumption], resumption - _LIBCPP_HIDE_FROM_ABI - void operator()() const { resume(); } - - _LIBCPP_HIDE_FROM_ABI - void resume() const { - _LIBCPP_ASSERT(__is_suspended(), "resume() can be called only on suspended coroutines"); - _LIBCPP_ASSERT(!done(), "resume() has undefined behavior when the coroutine is done"); - __builtin_coro_resume(__handle_); - } - - _LIBCPP_HIDE_FROM_ABI - void destroy() const { - _LIBCPP_ASSERT(__is_suspended(), "destroy() can be called only on suspended coroutines"); - __builtin_coro_destroy(__handle_); - } - - // [coroutine.handle.promise], promise access - _LIBCPP_HIDE_FROM_ABI - _Promise& promise() const { - return *static_cast<_Promise*>(__builtin_coro_promise(this->__handle_, alignof(_Promise), false)); - } + // [coroutine.handle.con], construct/reset + constexpr coroutine_handle() noexcept = default; + + _LIBCPP_HIDE_FROM_ABI constexpr coroutine_handle(nullptr_t) noexcept {} + + _LIBCPP_HIDE_FROM_ABI static coroutine_handle from_promise(_Promise& __promise) { + using _RawPromise = __remove_cv_t<_Promise>; + coroutine_handle __tmp; + __tmp.__handle_ = + __builtin_coro_promise(std::addressof(const_cast<_RawPromise&>(__promise)), alignof(_Promise), true); + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI coroutine_handle& operator=(nullptr_t) noexcept { + __handle_ = nullptr; + return *this; + } + + // [coroutine.handle.export.import], export/import + _LIBCPP_HIDE_FROM_ABI constexpr void* address() const noexcept { return __handle_; } + + _LIBCPP_HIDE_FROM_ABI static constexpr coroutine_handle from_address(void* __addr) noexcept { + coroutine_handle __tmp; + __tmp.__handle_ = __addr; + return __tmp; + } + + // [coroutine.handle.conv], conversion + _LIBCPP_HIDE_FROM_ABI constexpr operator coroutine_handle<>() const noexcept { + return coroutine_handle<>::from_address(address()); + } + + // [coroutine.handle.observers], observers + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return __handle_ != nullptr; } + + _LIBCPP_HIDE_FROM_ABI bool done() const { + _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(__is_suspended(), "done() can be called only on suspended coroutines"); + return __builtin_coro_done(__handle_); + } + + // [coroutine.handle.resumption], resumption + _LIBCPP_HIDE_FROM_ABI void operator()() const { resume(); } + + _LIBCPP_HIDE_FROM_ABI void resume() const { + _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(__is_suspended(), "resume() can be called only on suspended coroutines"); + _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(!done(), "resume() has undefined behavior when the coroutine is done"); + __builtin_coro_resume(__handle_); + } + + _LIBCPP_HIDE_FROM_ABI void destroy() const { + _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(__is_suspended(), "destroy() can be called only on suspended coroutines"); + __builtin_coro_destroy(__handle_); + } + + // [coroutine.handle.promise], promise access + _LIBCPP_HIDE_FROM_ABI _Promise& promise() const { + return *static_cast<_Promise*>(__builtin_coro_promise(this->__handle_, alignof(_Promise), false)); + } private: - bool __is_suspended() const { - // FIXME actually implement a check for if the coro is suspended. - return __handle_ != nullptr; - } - void* __handle_ = nullptr; + _LIBCPP_HIDE_FROM_ABI bool __is_suspended() const { + // FIXME actually implement a check for if the coro is suspended. + return __handle_ != nullptr; + } + void* __handle_ = nullptr; }; // [coroutine.handle.hash] template struct hash> { - _LIBCPP_HIDE_FROM_ABI - size_t operator()(const coroutine_handle<_Tp>& __v) const noexcept { return hash()(__v.address()); } + _LIBCPP_HIDE_FROM_ABI size_t operator()(const coroutine_handle<_Tp>& __v) const noexcept { + return hash()(__v.address()); + } }; _LIBCPP_END_NAMESPACE_STD -#endif // __LIBCPP_STD_VER > 17 +#endif // __LIBCPP_STD_VER >= 20 #endif // _LIBCPP___COROUTINE_COROUTINE_HANDLE_H diff --git a/include/c++/v1/__coroutine/coroutine_traits.h b/include/c++/v1/__coroutine/coroutine_traits.h index d5130750..78f05341 100644 --- a/include/c++/v1/__coroutine/coroutine_traits.h +++ b/include/c++/v1/__coroutine/coroutine_traits.h @@ -16,7 +16,7 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -34,20 +34,15 @@ template struct __coroutine_traits_sfinae {}; template -struct __coroutine_traits_sfinae< - _Tp, __void_t > -{ +struct __coroutine_traits_sfinae< _Tp, __void_t > { using promise_type = typename _Tp::promise_type; }; template -struct coroutine_traits - : public __coroutine_traits_sfinae<_Ret> -{ -}; +struct coroutine_traits : public __coroutine_traits_sfinae<_Ret> {}; _LIBCPP_END_NAMESPACE_STD -#endif // __LIBCPP_STD_VER > 17 +#endif // __LIBCPP_STD_VER >= 20 #endif // _LIBCPP___COROUTINE_COROUTINE_TRAITS_H diff --git a/include/c++/v1/__coroutine/noop_coroutine_handle.h b/include/c++/v1/__coroutine/noop_coroutine_handle.h index 29930479..da13d579 100644 --- a/include/c++/v1/__coroutine/noop_coroutine_handle.h +++ b/include/c++/v1/__coroutine/noop_coroutine_handle.h @@ -16,11 +16,11 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD -#if __has_builtin(__builtin_coro_noop) || defined(_LIBCPP_COMPILER_GCC) +# if __has_builtin(__builtin_coro_noop) || defined(_LIBCPP_COMPILER_GCC) // [coroutine.noop] // [coroutine.promise.noop] @@ -30,83 +30,70 @@ struct noop_coroutine_promise {}; template <> struct _LIBCPP_TEMPLATE_VIS coroutine_handle { public: - // [coroutine.handle.noop.conv], conversion - _LIBCPP_HIDE_FROM_ABI - constexpr operator coroutine_handle<>() const noexcept { - return coroutine_handle<>::from_address(address()); - } - - // [coroutine.handle.noop.observers], observers - _LIBCPP_HIDE_FROM_ABI - constexpr explicit operator bool() const noexcept { return true; } - _LIBCPP_HIDE_FROM_ABI - constexpr bool done() const noexcept { return false; } - - // [coroutine.handle.noop.resumption], resumption - _LIBCPP_HIDE_FROM_ABI - constexpr void operator()() const noexcept {} - _LIBCPP_HIDE_FROM_ABI - constexpr void resume() const noexcept {} - _LIBCPP_HIDE_FROM_ABI - constexpr void destroy() const noexcept {} - - // [coroutine.handle.noop.promise], promise access - _LIBCPP_HIDE_FROM_ABI - noop_coroutine_promise& promise() const noexcept { - return *static_cast( - __builtin_coro_promise(this->__handle_, alignof(noop_coroutine_promise), false)); - } - - // [coroutine.handle.noop.address], address - _LIBCPP_HIDE_FROM_ABI - constexpr void* address() const noexcept { return __handle_; } + // [coroutine.handle.noop.conv], conversion + _LIBCPP_HIDE_FROM_ABI constexpr operator coroutine_handle<>() const noexcept { + return coroutine_handle<>::from_address(address()); + } + + // [coroutine.handle.noop.observers], observers + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return true; } + _LIBCPP_HIDE_FROM_ABI constexpr bool done() const noexcept { return false; } + + // [coroutine.handle.noop.resumption], resumption + _LIBCPP_HIDE_FROM_ABI constexpr void operator()() const noexcept {} + _LIBCPP_HIDE_FROM_ABI constexpr void resume() const noexcept {} + _LIBCPP_HIDE_FROM_ABI constexpr void destroy() const noexcept {} + + // [coroutine.handle.noop.promise], promise access + _LIBCPP_HIDE_FROM_ABI noop_coroutine_promise& promise() const noexcept { + return *static_cast( + __builtin_coro_promise(this->__handle_, alignof(noop_coroutine_promise), false)); + } + + // [coroutine.handle.noop.address], address + _LIBCPP_HIDE_FROM_ABI constexpr void* address() const noexcept { return __handle_; } private: - _LIBCPP_HIDE_FROM_ABI - friend coroutine_handle noop_coroutine() noexcept; + _LIBCPP_HIDE_FROM_ABI friend coroutine_handle noop_coroutine() noexcept; -#if __has_builtin(__builtin_coro_noop) - _LIBCPP_HIDE_FROM_ABI coroutine_handle() noexcept { - this->__handle_ = __builtin_coro_noop(); - } +# if __has_builtin(__builtin_coro_noop) + _LIBCPP_HIDE_FROM_ABI coroutine_handle() noexcept { this->__handle_ = __builtin_coro_noop(); } - void* __handle_ = nullptr; + void* __handle_ = nullptr; -#elif defined(_LIBCPP_COMPILER_GCC) - // GCC doesn't implement __builtin_coro_noop(). - // Construct the coroutine frame manually instead. - struct __noop_coroutine_frame_ty_ { - static void __dummy_resume_destroy_func() { } +# elif defined(_LIBCPP_COMPILER_GCC) + // GCC doesn't implement __builtin_coro_noop(). + // Construct the coroutine frame manually instead. + struct __noop_coroutine_frame_ty_ { + static void __dummy_resume_destroy_func() {} - void (*__resume_)() = __dummy_resume_destroy_func; - void (*__destroy_)() = __dummy_resume_destroy_func; - struct noop_coroutine_promise __promise_; - }; + void (*__resume_)() = __dummy_resume_destroy_func; + void (*__destroy_)() = __dummy_resume_destroy_func; + struct noop_coroutine_promise __promise_; + }; - static __noop_coroutine_frame_ty_ __noop_coroutine_frame_; + static __noop_coroutine_frame_ty_ __noop_coroutine_frame_; - void* __handle_ = &__noop_coroutine_frame_; + void* __handle_ = &__noop_coroutine_frame_; - _LIBCPP_HIDE_FROM_ABI coroutine_handle() noexcept = default; + _LIBCPP_HIDE_FROM_ABI coroutine_handle() noexcept = default; -#endif // __has_builtin(__builtin_coro_noop) +# endif // __has_builtin(__builtin_coro_noop) }; using noop_coroutine_handle = coroutine_handle; -#if defined(_LIBCPP_COMPILER_GCC) -inline noop_coroutine_handle::__noop_coroutine_frame_ty_ - noop_coroutine_handle::__noop_coroutine_frame_{}; -#endif +# if defined(_LIBCPP_COMPILER_GCC) +inline noop_coroutine_handle::__noop_coroutine_frame_ty_ noop_coroutine_handle::__noop_coroutine_frame_{}; +# endif // [coroutine.noop.coroutine] -inline _LIBCPP_HIDE_FROM_ABI -noop_coroutine_handle noop_coroutine() noexcept { return noop_coroutine_handle(); } +inline _LIBCPP_HIDE_FROM_ABI noop_coroutine_handle noop_coroutine() noexcept { return noop_coroutine_handle(); } -#endif // __has_builtin(__builtin_coro_noop) || defined(_LIBCPP_COMPILER_GCC) +# endif // __has_builtin(__builtin_coro_noop) || defined(_LIBCPP_COMPILER_GCC) _LIBCPP_END_NAMESPACE_STD -#endif // __LIBCPP_STD_VER > 17 +#endif // __LIBCPP_STD_VER >= 20 #endif // _LIBCPP___COROUTINE_NOOP_COROUTINE_HANDLE_H diff --git a/include/c++/v1/__coroutine/trivial_awaitables.h b/include/c++/v1/__coroutine/trivial_awaitables.h index bbbae7a4..b604bd3c 100644 --- a/include/c++/v1/__coroutine/trivial_awaitables.h +++ b/include/c++/v1/__coroutine/trivial_awaitables.h @@ -16,31 +16,25 @@ # pragma GCC system_header #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD // [coroutine.trivial.awaitables] struct suspend_never { - _LIBCPP_HIDE_FROM_ABI - constexpr bool await_ready() const noexcept { return true; } - _LIBCPP_HIDE_FROM_ABI - constexpr void await_suspend(coroutine_handle<>) const noexcept {} - _LIBCPP_HIDE_FROM_ABI - constexpr void await_resume() const noexcept {} + _LIBCPP_HIDE_FROM_ABI constexpr bool await_ready() const noexcept { return true; } + _LIBCPP_HIDE_FROM_ABI constexpr void await_suspend(coroutine_handle<>) const noexcept {} + _LIBCPP_HIDE_FROM_ABI constexpr void await_resume() const noexcept {} }; struct suspend_always { - _LIBCPP_HIDE_FROM_ABI - constexpr bool await_ready() const noexcept { return false; } - _LIBCPP_HIDE_FROM_ABI - constexpr void await_suspend(coroutine_handle<>) const noexcept {} - _LIBCPP_HIDE_FROM_ABI - constexpr void await_resume() const noexcept {} + _LIBCPP_HIDE_FROM_ABI constexpr bool await_ready() const noexcept { return false; } + _LIBCPP_HIDE_FROM_ABI constexpr void await_suspend(coroutine_handle<>) const noexcept {} + _LIBCPP_HIDE_FROM_ABI constexpr void await_resume() const noexcept {} }; _LIBCPP_END_NAMESPACE_STD -#endif // __LIBCPP_STD_VER > 17 +#endif // __LIBCPP_STD_VER >= 20 #endif // __LIBCPP___COROUTINE_TRIVIAL_AWAITABLES_H diff --git a/include/c++/v1/__cxxabi_config.h b/include/c++/v1/__cxxabi_config.h index f76e4ed2..97a7ceb5 100644 --- a/include/c++/v1/__cxxabi_config.h +++ b/include/c++/v1/__cxxabi_config.h @@ -32,7 +32,7 @@ #endif #if defined(_WIN32) - #if defined(_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS) + #if defined(_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS) || (defined(__MINGW32__) && !defined(_LIBCXXABI_BUILDING_LIBRARY)) #define _LIBCXXABI_HIDDEN #define _LIBCXXABI_DATA_VIS #define _LIBCXXABI_FUNC_VIS diff --git a/include/c++/v1/__debug b/include/c++/v1/__debug deleted file mode 100644 index 140cc914..00000000 --- a/include/c++/v1/__debug +++ /dev/null @@ -1,266 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___DEBUG -#define _LIBCPP___DEBUG - -#include <__assert> -#include <__config> -#include <__type_traits/is_constant_evaluated.h> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if defined(_LIBCPP_ENABLE_DEBUG_MODE) && !defined(_LIBCPP_CXX03_LANG) && !defined(_LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY) -# define _LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY -#endif - -#if defined(_LIBCPP_ENABLE_DEBUG_MODE) && !defined(_LIBCPP_DEBUG_ITERATOR_BOUNDS_CHECKING) -# define _LIBCPP_DEBUG_ITERATOR_BOUNDS_CHECKING -#endif - -#ifdef _LIBCPP_ENABLE_DEBUG_MODE -# define _LIBCPP_DEBUG_ASSERT(x, m) _LIBCPP_ASSERT(::std::__libcpp_is_constant_evaluated() || (x), m) -#else -# define _LIBCPP_DEBUG_ASSERT(x, m) ((void)0) -#endif - -#if defined(_LIBCPP_ENABLE_DEBUG_MODE) || defined(_LIBCPP_BUILDING_LIBRARY) - -_LIBCPP_BEGIN_NAMESPACE_STD - -struct _LIBCPP_TYPE_VIS __c_node; - -struct _LIBCPP_TYPE_VIS __i_node -{ - void* __i_; - __i_node* __next_; - __c_node* __c_; - - __i_node(const __i_node&) = delete; - __i_node& operator=(const __i_node&) = delete; - - _LIBCPP_INLINE_VISIBILITY - __i_node(void* __i, __i_node* __next, __c_node* __c) - : __i_(__i), __next_(__next), __c_(__c) {} - ~__i_node(); -}; - -struct _LIBCPP_TYPE_VIS __c_node -{ - void* __c_; - __c_node* __next_; - __i_node** beg_; - __i_node** end_; - __i_node** cap_; - - __c_node(const __c_node&) = delete; - __c_node& operator=(const __c_node&) = delete; - - _LIBCPP_INLINE_VISIBILITY - explicit __c_node(void* __c, __c_node* __next) - : __c_(__c), __next_(__next), beg_(nullptr), end_(nullptr), cap_(nullptr) {} - virtual ~__c_node(); - - virtual bool __dereferenceable(const void*) const = 0; - virtual bool __decrementable(const void*) const = 0; - virtual bool __addable(const void*, ptrdiff_t) const = 0; - virtual bool __subscriptable(const void*, ptrdiff_t) const = 0; - - void __add(__i_node* __i); - _LIBCPP_HIDDEN void __remove(__i_node* __i); -}; - -template -struct _C_node - : public __c_node -{ - explicit _C_node(void* __c, __c_node* __n) - : __c_node(__c, __n) {} - - bool __dereferenceable(const void*) const override; - bool __decrementable(const void*) const override; - bool __addable(const void*, ptrdiff_t) const override; - bool __subscriptable(const void*, ptrdiff_t) const override; -}; - -template -inline bool -_C_node<_Cont>::__dereferenceable(const void* __i) const -{ - typedef typename _Cont::const_iterator iterator; - const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__dereferenceable(__j); -} - -template -inline bool -_C_node<_Cont>::__decrementable(const void* __i) const -{ - typedef typename _Cont::const_iterator iterator; - const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__decrementable(__j); -} - -template -inline bool -_C_node<_Cont>::__addable(const void* __i, ptrdiff_t __n) const -{ - typedef typename _Cont::const_iterator iterator; - const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__addable(__j, __n); -} - -template -inline bool -_C_node<_Cont>::__subscriptable(const void* __i, ptrdiff_t __n) const -{ - typedef typename _Cont::const_iterator iterator; - const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__subscriptable(__j, __n); -} - -class _LIBCPP_TYPE_VIS __libcpp_db -{ - __c_node** __cbeg_; - __c_node** __cend_; - size_t __csz_; - __i_node** __ibeg_; - __i_node** __iend_; - size_t __isz_; - - explicit __libcpp_db(); -public: - __libcpp_db(const __libcpp_db&) = delete; - __libcpp_db& operator=(const __libcpp_db&) = delete; - - ~__libcpp_db(); - - class __db_c_iterator; - class __db_c_const_iterator; - class __db_i_iterator; - class __db_i_const_iterator; - - __db_c_const_iterator __c_end() const; - __db_i_const_iterator __i_end() const; - - typedef __c_node*(_InsertConstruct)(void*, void*, __c_node*); - - template - _LIBCPP_INLINE_VISIBILITY static __c_node* __create_C_node(void *__mem, void *__c, __c_node *__next) { - return ::new (__mem) _C_node<_Cont>(__c, __next); - } - - template - _LIBCPP_INLINE_VISIBILITY - void __insert_c(_Cont* __c) - { - __insert_c(static_cast(__c), &__create_C_node<_Cont>); - } - - void __insert_i(void* __i); - void __insert_c(void* __c, _InsertConstruct* __fn); - void __erase_c(void* __c); - - void __insert_ic(void* __i, const void* __c); - void __iterator_copy(void* __i, const void* __i0); - void __erase_i(void* __i); - - void* __find_c_from_i(void* __i) const; - void __invalidate_all(void* __c); - __c_node* __find_c_and_lock(void* __c) const; - __c_node* __find_c(void* __c) const; - void unlock() const; - - void swap(void* __c1, void* __c2); - - - bool __dereferenceable(const void* __i) const; - bool __decrementable(const void* __i) const; - bool __addable(const void* __i, ptrdiff_t __n) const; - bool __subscriptable(const void* __i, ptrdiff_t __n) const; - bool __less_than_comparable(const void* __i, const void* __j) const; -private: - _LIBCPP_HIDDEN - __i_node* __insert_iterator(void* __i); - _LIBCPP_HIDDEN - __i_node* __find_iterator(const void* __i) const; - - friend _LIBCPP_FUNC_VIS __libcpp_db* __get_db(); -}; - -_LIBCPP_FUNC_VIS __libcpp_db* __get_db(); -_LIBCPP_FUNC_VIS const __libcpp_db* __get_const_db(); - -_LIBCPP_END_NAMESPACE_STD - -#endif // defined(_LIBCPP_ENABLE_DEBUG_MODE) || defined(_LIBCPP_BUILDING_LIBRARY) - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 inline void __debug_db_insert_c(_Tp* __c) { -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - if (!__libcpp_is_constant_evaluated()) - __get_db()->__insert_c(__c); -#else - (void)(__c); -#endif -} - -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 inline void __debug_db_insert_i(_Tp* __i) { -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - if (!__libcpp_is_constant_evaluated()) - __get_db()->__insert_i(__i); -#else - (void)(__i); -#endif -} - -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 inline void __debug_db_erase_c(_Tp* __c) { -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - if (!__libcpp_is_constant_evaluated()) - __get_db()->__erase_c(__c); -#else - (void)(__c); -#endif -} - -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 inline void __debug_db_swap(_Tp* __lhs, _Tp* __rhs) { -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - if (!__libcpp_is_constant_evaluated()) - __get_db()->swap(__lhs, __rhs); -#else - (void)(__lhs); - (void)(__rhs); -#endif -} - -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 inline void __debug_db_invalidate_all(_Tp* __c) { -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - if (!__libcpp_is_constant_evaluated()) - __get_db()->__invalidate_all(__c); -#else - (void)(__c); -#endif -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___DEBUG diff --git a/include/c++/v1/__debug_utils/randomize_range.h b/include/c++/v1/__debug_utils/randomize_range.h index dce61923..7eb77d81 100644 --- a/include/c++/v1/__debug_utils/randomize_range.h +++ b/include/c++/v1/__debug_utils/randomize_range.h @@ -23,8 +23,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 -void __debug_randomize_range(_Iterator __first, _Sentinel __last) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void __debug_randomize_range(_Iterator __first, _Sentinel __last) { #ifdef _LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY # ifdef _LIBCPP_CXX03_LANG # error Support for unspecified stability is only for C++11 and higher diff --git a/include/c++/v1/__errc b/include/c++/v1/__errc deleted file mode 100644 index 17bbe0e2..00000000 --- a/include/c++/v1/__errc +++ /dev/null @@ -1,217 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___ERRC -#define _LIBCPP___ERRC - -/* - system_error synopsis - -namespace std -{ - -enum class errc -{ - address_family_not_supported, // EAFNOSUPPORT - address_in_use, // EADDRINUSE - address_not_available, // EADDRNOTAVAIL - already_connected, // EISCONN - argument_list_too_long, // E2BIG - argument_out_of_domain, // EDOM - bad_address, // EFAULT - bad_file_descriptor, // EBADF - bad_message, // EBADMSG - broken_pipe, // EPIPE - connection_aborted, // ECONNABORTED - connection_already_in_progress, // EALREADY - connection_refused, // ECONNREFUSED - connection_reset, // ECONNRESET - cross_device_link, // EXDEV - destination_address_required, // EDESTADDRREQ - device_or_resource_busy, // EBUSY - directory_not_empty, // ENOTEMPTY - executable_format_error, // ENOEXEC - file_exists, // EEXIST - file_too_large, // EFBIG - filename_too_long, // ENAMETOOLONG - function_not_supported, // ENOSYS - host_unreachable, // EHOSTUNREACH - identifier_removed, // EIDRM - illegal_byte_sequence, // EILSEQ - inappropriate_io_control_operation, // ENOTTY - interrupted, // EINTR - invalid_argument, // EINVAL - invalid_seek, // ESPIPE - io_error, // EIO - is_a_directory, // EISDIR - message_size, // EMSGSIZE - network_down, // ENETDOWN - network_reset, // ENETRESET - network_unreachable, // ENETUNREACH - no_buffer_space, // ENOBUFS - no_child_process, // ECHILD - no_link, // ENOLINK - no_lock_available, // ENOLCK - no_message_available, // ENODATA - no_message, // ENOMSG - no_protocol_option, // ENOPROTOOPT - no_space_on_device, // ENOSPC - no_stream_resources, // ENOSR - no_such_device_or_address, // ENXIO - no_such_device, // ENODEV - no_such_file_or_directory, // ENOENT - no_such_process, // ESRCH - not_a_directory, // ENOTDIR - not_a_socket, // ENOTSOCK - not_a_stream, // ENOSTR - not_connected, // ENOTCONN - not_enough_memory, // ENOMEM - not_supported, // ENOTSUP - operation_canceled, // ECANCELED - operation_in_progress, // EINPROGRESS - operation_not_permitted, // EPERM - operation_not_supported, // EOPNOTSUPP - operation_would_block, // EWOULDBLOCK - owner_dead, // EOWNERDEAD - permission_denied, // EACCES - protocol_error, // EPROTO - protocol_not_supported, // EPROTONOSUPPORT - read_only_file_system, // EROFS - resource_deadlock_would_occur, // EDEADLK - resource_unavailable_try_again, // EAGAIN - result_out_of_range, // ERANGE - state_not_recoverable, // ENOTRECOVERABLE - stream_timeout, // ETIME - text_file_busy, // ETXTBSY - timed_out, // ETIMEDOUT - too_many_files_open_in_system, // ENFILE - too_many_files_open, // EMFILE - too_many_links, // EMLINK - too_many_symbolic_link_levels, // ELOOP - value_too_large, // EOVERFLOW - wrong_protocol_type // EPROTOTYPE -}; - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -// Some error codes are not present on all platforms, so we provide equivalents -// for them: - -//enum class errc -_LIBCPP_DECLARE_STRONG_ENUM(errc) -{ - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - bad_message = EBADMSG, - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - identifier_removed = EIDRM, - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - no_link = ENOLINK, - no_lock_available = ENOLCK, -#ifdef ENODATA - no_message_available = ENODATA, -#else - no_message_available = ENOMSG, -#endif - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, -#ifdef ENOSR - no_stream_resources = ENOSR, -#else - no_stream_resources = ENOMEM, -#endif - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, -#ifdef ENOSTR - not_a_stream = ENOSTR, -#else - not_a_stream = EINVAL, -#endif - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - not_supported = ENOTSUP, - operation_canceled = ECANCELED, - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - owner_dead = EOWNERDEAD, - permission_denied = EACCES, - protocol_error = EPROTO, - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - state_not_recoverable = ENOTRECOVERABLE, -#ifdef ETIME - stream_timeout = ETIME, -#else - stream_timeout = ETIMEDOUT, -#endif - text_file_busy = ETXTBSY, - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - value_too_large = EOVERFLOW, - wrong_protocol_type = EPROTOTYPE -}; -_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(errc) - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___ERRC diff --git a/include/c++/v1/__expected/bad_expected_access.h b/include/c++/v1/__expected/bad_expected_access.h index 361eab4b..1b734389 100644 --- a/include/c++/v1/__expected/bad_expected_access.h +++ b/include/c++/v1/__expected/bad_expected_access.h @@ -10,14 +10,16 @@ #define _LIBCPP___EXPECTED_BAD_EXPECTED_ACCESS_H #include <__config> +#include <__exception/exception.h> #include <__utility/move.h> -#include - #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + #if _LIBCPP_STD_VER >= 23 _LIBCPP_BEGIN_NAMESPACE_STD @@ -25,23 +27,28 @@ _LIBCPP_BEGIN_NAMESPACE_STD template class bad_expected_access; +_LIBCPP_DIAGNOSTIC_PUSH +# if !_LIBCPP_AVAILABILITY_HAS_BAD_EXPECTED_ACCESS_KEY_FUNCTION +_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wweak-vtables") +# endif template <> -class bad_expected_access : public exception { +class _LIBCPP_EXPORTED_FROM_ABI bad_expected_access : public exception { protected: - _LIBCPP_HIDE_FROM_ABI bad_expected_access() noexcept = default; - _LIBCPP_HIDE_FROM_ABI bad_expected_access(const bad_expected_access&) = default; - _LIBCPP_HIDE_FROM_ABI bad_expected_access(bad_expected_access&&) = default; - _LIBCPP_HIDE_FROM_ABI bad_expected_access& operator=(const bad_expected_access&) = default; - _LIBCPP_HIDE_FROM_ABI bad_expected_access& operator=(bad_expected_access&&) = default; - ~bad_expected_access() override = default; + _LIBCPP_HIDE_FROM_ABI bad_expected_access() noexcept = default; + _LIBCPP_HIDE_FROM_ABI bad_expected_access(const bad_expected_access&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI bad_expected_access(bad_expected_access&&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI bad_expected_access& operator=(const bad_expected_access&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI bad_expected_access& operator=(bad_expected_access&&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL ~bad_expected_access() override = default; public: - // The way this has been designed (by using a class template below) means that we'll already - // have a profusion of these vtables in TUs, and the dynamic linker will already have a bunch - // of work to do. So it is not worth hiding the specialization in the dylib, given that - // it adds deployment target restrictions. - const char* what() const noexcept override { return "bad access to std::expected"; } +# if _LIBCPP_AVAILABILITY_HAS_BAD_EXPECTED_ACCESS_KEY_FUNCTION + const char* what() const noexcept override; +# else + _LIBCPP_HIDE_FROM_ABI_VIRTUAL const char* what() const noexcept override { return "bad access to std::expected"; } +# endif }; +_LIBCPP_DIAGNOSTIC_POP template class bad_expected_access : public bad_expected_access { @@ -61,4 +68,6 @@ _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 23 +_LIBCPP_POP_MACROS + #endif // _LIBCPP___EXPECTED_BAD_EXPECTED_ACCESS_H diff --git a/include/c++/v1/__expected/expected.h b/include/c++/v1/__expected/expected.h index ca3e8a59..f618b206 100644 --- a/include/c++/v1/__expected/expected.h +++ b/include/c++/v1/__expected/expected.h @@ -14,287 +14,609 @@ #include <__expected/bad_expected_access.h> #include <__expected/unexpect.h> #include <__expected/unexpected.h> +#include <__functional/invoke.h> #include <__memory/addressof.h> #include <__memory/construct_at.h> #include <__type_traits/conjunction.h> #include <__type_traits/disjunction.h> +#include <__type_traits/integral_constant.h> #include <__type_traits/is_assignable.h> #include <__type_traits/is_constructible.h> #include <__type_traits/is_convertible.h> -#include <__type_traits/is_copy_assignable.h> -#include <__type_traits/is_copy_constructible.h> -#include <__type_traits/is_default_constructible.h> #include <__type_traits/is_function.h> -#include <__type_traits/is_move_assignable.h> -#include <__type_traits/is_move_constructible.h> +#include <__type_traits/is_nothrow_assignable.h> #include <__type_traits/is_nothrow_constructible.h> -#include <__type_traits/is_nothrow_copy_assignable.h> -#include <__type_traits/is_nothrow_copy_constructible.h> -#include <__type_traits/is_nothrow_default_constructible.h> -#include <__type_traits/is_nothrow_move_assignable.h> -#include <__type_traits/is_nothrow_move_constructible.h> #include <__type_traits/is_reference.h> #include <__type_traits/is_same.h> #include <__type_traits/is_swappable.h> -#include <__type_traits/is_trivially_copy_constructible.h> +#include <__type_traits/is_trivially_constructible.h> #include <__type_traits/is_trivially_destructible.h> -#include <__type_traits/is_trivially_move_constructible.h> +#include <__type_traits/is_trivially_relocatable.h> #include <__type_traits/is_void.h> #include <__type_traits/lazy.h> #include <__type_traits/negation.h> #include <__type_traits/remove_cv.h> #include <__type_traits/remove_cvref.h> +#include <__utility/as_const.h> #include <__utility/exception_guard.h> #include <__utility/forward.h> #include <__utility/in_place.h> #include <__utility/move.h> #include <__utility/swap.h> -#include // for std::abort +#include <__verbose_abort> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + #if _LIBCPP_STD_VER >= 23 _LIBCPP_BEGIN_NAMESPACE_STD -namespace __expected { +template +class expected; + +template +struct __is_std_expected : false_type {}; + +template +struct __is_std_expected> : true_type {}; + +struct __expected_construct_in_place_from_invoke_tag {}; +struct __expected_construct_unexpected_from_invoke_tag {}; template _LIBCPP_HIDE_FROM_ABI void __throw_bad_expected_access(_Arg&& __arg) { -# ifndef _LIBCPP_NO_EXCEPTIONS +# ifndef _LIBCPP_HAS_NO_EXCEPTIONS throw bad_expected_access<_Err>(std::forward<_Arg>(__arg)); # else (void)__arg; - std::abort(); + _LIBCPP_VERBOSE_ABORT("bad_expected_access was thrown in -fno-exceptions mode"); # endif } -} // namespace __expected +// If parameter type `_Tp` of `__conditional_no_unique_address` is neither +// copyable nor movable, a constructor with this tag is provided. For that +// constructor, the user has to provide a function and arguments. The function +// must return an object of type `_Tp`. When the function is invoked by the +// constructor, guaranteed copy elision kicks in and the `_Tp` is constructed +// in place. +struct __conditional_no_unique_address_invoke_tag {}; + +// This class implements an object with `[[no_unique_address]]` conditionally applied to it, +// based on the value of `_NoUnique`. +// +// A member of this class must always have `[[no_unique_address]]` applied to +// it. Otherwise, the `[[no_unique_address]]` in the "`_NoUnique == true`" case +// would not have any effect. In the `false` case, the `__v` is not +// `[[no_unique_address]]`, so nullifies the effects of the "outer" +// `[[no_unique_address]]` regarding data layout. +// +// If we had a language feature, this class would basically be replaced by `[[no_unique_address(condition)]]`. +template +struct __conditional_no_unique_address; + +template +struct __conditional_no_unique_address { + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __conditional_no_unique_address(in_place_t, _Args&&... __args) + : __v(std::forward<_Args>(__args)...) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __conditional_no_unique_address( + __conditional_no_unique_address_invoke_tag, _Func&& __f, _Args&&... __args) + : __v(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} + + _LIBCPP_NO_UNIQUE_ADDRESS _Tp __v; +}; + +template +struct __conditional_no_unique_address { + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __conditional_no_unique_address(in_place_t, _Args&&... __args) + : __v(std::forward<_Args>(__args)...) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __conditional_no_unique_address( + __conditional_no_unique_address_invoke_tag, _Func&& __f, _Args&&... __args) + : __v(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} + + _Tp __v; +}; + +// This function returns whether the type `_Second` can be stuffed into the tail padding +// of the `_First` type if both of them are given `[[no_unique_address]]`. +template +inline constexpr bool __fits_in_tail_padding = []() { + struct __x { + _LIBCPP_NO_UNIQUE_ADDRESS _First __first; + _LIBCPP_NO_UNIQUE_ADDRESS _Second __second; + }; + return sizeof(__x) == sizeof(_First); +}(); + +// This class implements the storage used by `std::expected`. We have a few +// goals for this storage: +// 1. Whenever the underlying {_Tp | _Unex} combination has free bytes in its +// tail padding, we should reuse it to store the bool discriminator of the +// expected, so as to save space. +// 2. Whenever the `expected<_Tp, _Unex>` as a whole has free bytes in its tail +// padding, we should allow an object following the expected to be stored in +// its tail padding. +// 3. However, we never want a user object (say `X`) that would follow an +// `expected<_Tp, _Unex>` to be stored in the padding bytes of the +// underlying {_Tp | _Unex} union, if any. That is because we use +// `construct_at` on that union, which would end up overwriting the `X` +// member if it is stored in the tail padding of the union. +// +// To achieve this, `__expected_base`'s logic is implemented in an inner +// `__repr` class. `__expected_base` holds one `__repr` member which is +// conditionally `[[no_unique_address]]`. The `__repr` class holds the +// underlying {_Tp | _Unex} union and a boolean "has value" flag. +// +// Which one of the `__repr_`/`__union_` members is `[[no_unique_address]]` +// depends on whether the "has value" boolean fits into the tail padding of +// the underlying {_Tp | _Unex} union: +// +// - In case the "has value" bool fits into the tail padding of the union, the +// whole `__repr_` member is _not_ `[[no_unique_address]]` as it needs to be +// transparently replaced on `emplace()`/`swap()` etc. +// - In case the "has value" bool does not fit into the tail padding of the +// union, only the union member must be transparently replaced (therefore is +// _not_ `[[no_unique_address]]`) and the "has value" flag must be adjusted +// manually. +// +// This way, the member that is transparently replaced on mutating operations +// is never `[[no_unique_address]]`, satisfying the requirements from +// "[basic.life]" in the standard. +// +// Stripped away of all superfluous elements, the layout of `__expected_base` +// then looks like this: +// +// template +// class expected_base { +// union union_t { +// [[no_unique_address]] Tp val; +// [[no_unique_address]] Err unex; +// }; +// +// static constexpr bool put_flag_in_tail = fits_in_tail_padding; +// static constexpr bool allow_reusing_expected_tail_padding = !put_flag_in_tail; +// +// struct repr { +// private: +// // If "has value" fits into the tail, this should be +// // `[[no_unique_address]]`, otherwise not. +// [[no_unique_address]] conditional_no_unique_address< +// put_flag_in_tail, +// union_t>::type union_; +// [[no_unique_address]] bool has_val_; +// }; +// +// protected: +// // If "has value" fits into the tail, this must _not_ be +// // `[[no_unique_address]]` so that we fill out the +// // complete `expected` object. +// [[no_unique_address]] conditional_no_unique_address< +// allow_reusing_expected_tail_padding, +// repr>::type repr_; +// }; +// +template +class __expected_base { + // use named union because [[no_unique_address]] cannot be applied to an unnamed union, + // also guaranteed elision into a potentially-overlapping subobject is unsettled (and + // it's not clear that it's implementable, given that the function is allowed to clobber + // the tail padding) - see https://github.com/itanium-cxx-abi/cxx-abi/issues/107. + union __union_t { + _LIBCPP_HIDE_FROM_ABI constexpr __union_t(const __union_t&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __union_t(const __union_t&) + requires(is_copy_constructible_v<_Tp> && is_copy_constructible_v<_Err> && + is_trivially_copy_constructible_v<_Tp> && is_trivially_copy_constructible_v<_Err>) + = default; + _LIBCPP_HIDE_FROM_ABI constexpr __union_t(__union_t&&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __union_t(__union_t&&) + requires(is_move_constructible_v<_Tp> && is_move_constructible_v<_Err> && + is_trivially_move_constructible_v<_Tp> && is_trivially_move_constructible_v<_Err>) + = default; + _LIBCPP_HIDE_FROM_ABI constexpr __union_t& operator=(const __union_t&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __union_t& operator=(__union_t&&) = delete; + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t(in_place_t, _Args&&... __args) + : __val_(std::forward<_Args>(__args)...) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t(unexpect_t, _Args&&... __args) + : __unex_(std::forward<_Args>(__args)...) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t( + std::__expected_construct_in_place_from_invoke_tag, _Func&& __f, _Args&&... __args) + : __val_(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t( + std::__expected_construct_unexpected_from_invoke_tag, _Func&& __f, _Args&&... __args) + : __unex_(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} + + _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() + requires(is_trivially_destructible_v<_Tp> && is_trivially_destructible_v<_Err>) + = default; + + // __repr's destructor handles this + _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() {} + + _LIBCPP_NO_UNIQUE_ADDRESS _Tp __val_; + _LIBCPP_NO_UNIQUE_ADDRESS _Err __unex_; + }; + + static constexpr bool __put_flag_in_tail = __fits_in_tail_padding<__union_t, bool>; + static constexpr bool __allow_reusing_expected_tail_padding = !__put_flag_in_tail; + + struct __repr { + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr() = delete; + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr(in_place_t __tag, _Args&&... __args) + : __union_(in_place, __tag, std::forward<_Args>(__args)...), __has_val_(true) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr(unexpect_t __tag, _Args&&... __args) + : __union_(in_place, __tag, std::forward<_Args>(__args)...), __has_val_(false) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr(std::__expected_construct_in_place_from_invoke_tag __tag, + _Args&&... __args) + : __union_(in_place, __tag, std::forward<_Args>(__args)...), __has_val_(true) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr(std::__expected_construct_unexpected_from_invoke_tag __tag, + _Args&&... __args) + : __union_(in_place, __tag, std::forward<_Args>(__args)...), __has_val_(false) {} + + // The return value of `__make_union` must be constructed in place in the + // `__v` member of `__union_`, relying on guaranteed copy elision. To do + // this, the `__conditional_no_unique_address_invoke_tag` constructor is + // called with a lambda that is immediately called inside + // `__conditional_no_unique_address`'s constructor. + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr(bool __has_val, _OtherUnion&& __other) + requires(__allow_reusing_expected_tail_padding) + : __union_(__conditional_no_unique_address_invoke_tag{}, + [&] { return __make_union(__has_val, std::forward<_OtherUnion>(__other)); }), + __has_val_(__has_val) {} + + _LIBCPP_HIDE_FROM_ABI constexpr __repr(const __repr&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __repr(const __repr&) + requires(is_copy_constructible_v<_Tp> && is_copy_constructible_v<_Err> && + is_trivially_copy_constructible_v<_Tp> && is_trivially_copy_constructible_v<_Err>) + = default; + _LIBCPP_HIDE_FROM_ABI constexpr __repr(__repr&&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __repr(__repr&&) + requires(is_move_constructible_v<_Tp> && is_move_constructible_v<_Err> && + is_trivially_move_constructible_v<_Tp> && is_trivially_move_constructible_v<_Err>) + = default; + + _LIBCPP_HIDE_FROM_ABI constexpr __repr& operator=(const __repr&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __repr& operator=(__repr&&) = delete; + + _LIBCPP_HIDE_FROM_ABI constexpr ~__repr() + requires(is_trivially_destructible_v<_Tp> && is_trivially_destructible_v<_Err>) + = default; + + _LIBCPP_HIDE_FROM_ABI constexpr ~__repr() + requires(!is_trivially_destructible_v<_Tp> || !is_trivially_destructible_v<_Err>) + { + __destroy_union_member(); + } + + _LIBCPP_HIDE_FROM_ABI constexpr void __destroy_union() + requires(__allow_reusing_expected_tail_padding && + (is_trivially_destructible_v<_Tp> && is_trivially_destructible_v<_Err>)) + { + // Note: Since the destructor of the union is trivial, this does nothing + // except to end the lifetime of the union. + std::destroy_at(&__union_.__v); + } + + _LIBCPP_HIDE_FROM_ABI constexpr void __destroy_union() + requires(__allow_reusing_expected_tail_padding && + (!is_trivially_destructible_v<_Tp> || !is_trivially_destructible_v<_Err>)) + { + __destroy_union_member(); + std::destroy_at(&__union_.__v); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr void __construct_union(in_place_t, _Args&&... __args) + requires(__allow_reusing_expected_tail_padding) + { + std::construct_at(&__union_.__v, in_place, std::forward<_Args>(__args)...); + __has_val_ = true; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr void __construct_union(unexpect_t, _Args&&... __args) + requires(__allow_reusing_expected_tail_padding) + { + std::construct_at(&__union_.__v, unexpect, std::forward<_Args>(__args)...); + __has_val_ = false; + } + + private: + template + friend class __expected_base; + + _LIBCPP_HIDE_FROM_ABI constexpr void __destroy_union_member() + requires(!is_trivially_destructible_v<_Tp> || !is_trivially_destructible_v<_Err>) + { + if (__has_val_) { + std::destroy_at(std::addressof(__union_.__v.__val_)); + } else { + std::destroy_at(std::addressof(__union_.__v.__unex_)); + } + } + + template + _LIBCPP_HIDE_FROM_ABI static constexpr __union_t __make_union(bool __has_val, _OtherUnion&& __other) + requires(__allow_reusing_expected_tail_padding) + { + if (__has_val) + return __union_t(in_place, std::forward<_OtherUnion>(__other).__val_); + else + return __union_t(unexpect, std::forward<_OtherUnion>(__other).__unex_); + } + + _LIBCPP_NO_UNIQUE_ADDRESS __conditional_no_unique_address<__put_flag_in_tail, __union_t> __union_; + _LIBCPP_NO_UNIQUE_ADDRESS bool __has_val_; + }; + + template + _LIBCPP_HIDE_FROM_ABI static constexpr __repr __make_repr(bool __has_val, _OtherUnion&& __other) + requires(__put_flag_in_tail) + { + if (__has_val) + return __repr(in_place, std::forward<_OtherUnion>(__other).__val_); + else + return __repr(unexpect, std::forward<_OtherUnion>(__other).__unex_); + } + +protected: + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __expected_base(_Args&&... __args) + : __repr_(in_place, std::forward<_Args>(__args)...) {} + + // In case we copy/move construct from another `expected` we need to create + // our `expected` so that it either has a value or not, depending on the "has + // value" flag of the other `expected`. To do this without falling back on + // `std::construct_at` we rely on guaranteed copy elision using two helper + // functions `__make_repr` and `__make_union`. There have to be two since + // there are two data layouts with different members being + // `[[no_unique_address]]`. GCC (as of version 13) does not do guaranteed + // copy elision when initializing `[[no_unique_address]]` members. The two + // cases are: + // + // - `__make_repr`: This is used when the "has value" flag lives in the tail + // of the union. In this case, the `__repr` member is _not_ + // `[[no_unique_address]]`. + // - `__make_union`: When the "has value" flag does _not_ fit in the tail of + // the union, the `__repr` member is `[[no_unique_address]]` and the union + // is not. + // + // This constructor "catches" the first case and leaves the second case to + // `__union_t`, its constructors and `__make_union`. + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __expected_base(bool __has_val, _OtherUnion&& __other) + requires(__put_flag_in_tail) + : __repr_(__conditional_no_unique_address_invoke_tag{}, + [&] { return __make_repr(__has_val, std::forward<_OtherUnion>(__other)); }) {} + + _LIBCPP_HIDE_FROM_ABI constexpr void __destroy() { + if constexpr (__put_flag_in_tail) + std::destroy_at(&__repr_.__v); + else + __repr_.__v.__destroy_union(); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr void __construct(_Tag __tag, _Args&&... __args) { + if constexpr (__put_flag_in_tail) + std::construct_at(&__repr_.__v, __tag, std::forward<_Args>(__args)...); + else + __repr_.__v.__construct_union(__tag, std::forward<_Args>(__args)...); + } + + _LIBCPP_HIDE_FROM_ABI constexpr bool __has_val() const { return __repr_.__v.__has_val_; } + _LIBCPP_HIDE_FROM_ABI constexpr __union_t& __union() { return __repr_.__v.__union_.__v; } + _LIBCPP_HIDE_FROM_ABI constexpr const __union_t& __union() const { return __repr_.__v.__union_.__v; } + _LIBCPP_HIDE_FROM_ABI constexpr _Tp& __val() { return __repr_.__v.__union_.__v.__val_; } + _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& __val() const { return __repr_.__v.__union_.__v.__val_; } + _LIBCPP_HIDE_FROM_ABI constexpr _Err& __unex() { return __repr_.__v.__union_.__v.__unex_; } + _LIBCPP_HIDE_FROM_ABI constexpr const _Err& __unex() const { return __repr_.__v.__union_.__v.__unex_; } + +private: + _LIBCPP_NO_UNIQUE_ADDRESS __conditional_no_unique_address<__allow_reusing_expected_tail_padding, __repr> __repr_; +}; template -class expected { - static_assert( - !is_reference_v<_Tp> && - !is_function_v<_Tp> && - !is_same_v, in_place_t> && - !is_same_v, unexpect_t> && - !__is_std_unexpected>::value && - __valid_std_unexpected<_Err>::value - , - "[expected.object.general] A program that instantiates the definition of template expected for a " - "reference type, a function type, or for possibly cv-qualified types in_place_t, unexpect_t, or a " - "specialization of unexpected for the T parameter is ill-formed. A program that instantiates the " - "definition of the template expected with a type for the E parameter that is not a valid " - "template argument for unexpected is ill-formed."); +class expected : private __expected_base<_Tp, _Err> { + static_assert(!is_reference_v<_Tp> && !is_function_v<_Tp> && !is_same_v, in_place_t> && + !is_same_v, unexpect_t> && !__is_std_unexpected>::value && + __valid_std_unexpected<_Err>::value, + "[expected.object.general] A program that instantiates the definition of template expected for a " + "reference type, a function type, or for possibly cv-qualified types in_place_t, unexpect_t, or a " + "specialization of unexpected for the T parameter is ill-formed. A program that instantiates the " + "definition of the template expected with a type for the E parameter that is not a valid " + "template argument for unexpected is ill-formed."); template friend class expected; + using __base = __expected_base<_Tp, _Err>; + public: using value_type = _Tp; using error_type = _Err; using unexpected_type = unexpected<_Err>; + using __trivially_relocatable = + __conditional_t<__libcpp_is_trivially_relocatable<_Tp>::value && __libcpp_is_trivially_relocatable<_Err>::value, + expected, + void>; + template using rebind = expected<_Up, error_type>; // [expected.object.ctor], constructors - _LIBCPP_HIDE_FROM_ABI constexpr expected() - noexcept(is_nothrow_default_constructible_v<_Tp>) // strengthened + _LIBCPP_HIDE_FROM_ABI constexpr expected() noexcept(is_nothrow_default_constructible_v<_Tp>) // strengthened requires is_default_constructible_v<_Tp> - : __has_val_(true) { - std::construct_at(std::addressof(__union_.__val_)); - } + : __base(in_place) {} _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected&) = delete; _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected&) - requires(is_copy_constructible_v<_Tp> && - is_copy_constructible_v<_Err> && - is_trivially_copy_constructible_v<_Tp> && + requires(is_copy_constructible_v<_Tp> && is_copy_constructible_v<_Err> && is_trivially_copy_constructible_v<_Tp> && is_trivially_copy_constructible_v<_Err>) = default; - _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected& __other) - noexcept(is_nothrow_copy_constructible_v<_Tp> && is_nothrow_copy_constructible_v<_Err>) // strengthened + _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected& __other) noexcept( + is_nothrow_copy_constructible_v<_Tp> && is_nothrow_copy_constructible_v<_Err>) // strengthened requires(is_copy_constructible_v<_Tp> && is_copy_constructible_v<_Err> && !(is_trivially_copy_constructible_v<_Tp> && is_trivially_copy_constructible_v<_Err>)) - : __has_val_(__other.__has_val_) { - if (__has_val_) { - std::construct_at(std::addressof(__union_.__val_), __other.__union_.__val_); - } else { - std::construct_at(std::addressof(__union_.__unex_), __other.__union_.__unex_); - } - } - + : __base(__other.__has_val(), __other.__union()) {} _LIBCPP_HIDE_FROM_ABI constexpr expected(expected&&) - requires(is_move_constructible_v<_Tp> && is_move_constructible_v<_Err> - && is_trivially_move_constructible_v<_Tp> && is_trivially_move_constructible_v<_Err>) + requires(is_move_constructible_v<_Tp> && is_move_constructible_v<_Err> && is_trivially_move_constructible_v<_Tp> && + is_trivially_move_constructible_v<_Err>) = default; - _LIBCPP_HIDE_FROM_ABI constexpr expected(expected&& __other) - noexcept(is_nothrow_move_constructible_v<_Tp> && is_nothrow_move_constructible_v<_Err>) + _LIBCPP_HIDE_FROM_ABI constexpr expected(expected&& __other) noexcept( + is_nothrow_move_constructible_v<_Tp> && is_nothrow_move_constructible_v<_Err>) requires(is_move_constructible_v<_Tp> && is_move_constructible_v<_Err> && !(is_trivially_move_constructible_v<_Tp> && is_trivially_move_constructible_v<_Err>)) - : __has_val_(__other.__has_val_) { - if (__has_val_) { - std::construct_at(std::addressof(__union_.__val_), std::move(__other.__union_.__val_)); - } else { - std::construct_at(std::addressof(__union_.__unex_), std::move(__other.__union_.__unex_)); - } - } + : __base(__other.__has_val(), std::move(__other.__union())) {} private: template using __can_convert = _And< is_constructible<_Tp, _UfQual>, is_constructible<_Err, _OtherErrQual>, - _Not&>>, - _Not>>, - _Not&>>, - _Not>>, - _Not&, _Tp>>, - _Not&&, _Tp>>, - _Not&, _Tp>>, - _Not&&, _Tp>>, + _If<_Not, bool>>::value, + _And< + _Not<_And, is_same<_Err, _OtherErr>>>, // use the copy constructor instead, see #92676 + _Not&>>, + _Not>>, + _Not&>>, + _Not>>, + _Not&, _Tp>>, + _Not&&, _Tp>>, + _Not&, _Tp>>, + _Not&&, _Tp>>>, + true_type>, _Not, expected<_Up, _OtherErr>&>>, _Not, expected<_Up, _OtherErr>>>, _Not, const expected<_Up, _OtherErr>&>>, _Not, const expected<_Up, _OtherErr>>> >; + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected( + std::__expected_construct_in_place_from_invoke_tag __tag, _Func&& __f, _Args&&... __args) + : __base(__tag, std::forward<_Func>(__f), std::forward<_Args>(__args)...) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected( + std::__expected_construct_unexpected_from_invoke_tag __tag, _Func&& __f, _Args&&... __args) + : __base(__tag, std::forward<_Func>(__f), std::forward<_Args>(__args)...) {} public: template requires __can_convert<_Up, _OtherErr, const _Up&, const _OtherErr&>::value _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v || !is_convertible_v) - expected(const expected<_Up, _OtherErr>& __other) - noexcept(is_nothrow_constructible_v<_Tp, const _Up&> && - is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened - : __has_val_(__other.__has_val_) { - if (__has_val_) { - std::construct_at(std::addressof(__union_.__val_), __other.__union_.__val_); - } else { - std::construct_at(std::addressof(__union_.__unex_), __other.__union_.__unex_); - } - } + expected(const expected<_Up, _OtherErr>& __other) noexcept( + is_nothrow_constructible_v<_Tp, const _Up&> && + is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened + : __base(__other.__has_val(), __other.__union()) {} template requires __can_convert<_Up, _OtherErr, _Up, _OtherErr>::value _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v<_Up, _Tp> || !is_convertible_v<_OtherErr, _Err>) - expected(expected<_Up, _OtherErr>&& __other) - noexcept(is_nothrow_constructible_v<_Tp, _Up> && is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened - : __has_val_(__other.__has_val_) { - if (__has_val_) { - std::construct_at(std::addressof(__union_.__val_), std::move(__other.__union_.__val_)); - } else { - std::construct_at(std::addressof(__union_.__unex_), std::move(__other.__union_.__unex_)); - } - } + expected(expected<_Up, _OtherErr>&& __other) noexcept( + is_nothrow_constructible_v<_Tp, _Up> && is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened + : __base(__other.__has_val(), std::move(__other.__union())) {} template requires(!is_same_v, in_place_t> && !is_same_v> && - !__is_std_unexpected>::value && is_constructible_v<_Tp, _Up>) + is_constructible_v<_Tp, _Up> && !__is_std_unexpected>::value && + (!is_same_v, bool> || !__is_std_expected>::value)) _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v<_Up, _Tp>) - expected(_Up&& __u) - noexcept(is_nothrow_constructible_v<_Tp, _Up>) // strengthened - : __has_val_(true) { - std::construct_at(std::addressof(__union_.__val_), std::forward<_Up>(__u)); - } - + expected(_Up&& __u) noexcept(is_nothrow_constructible_v<_Tp, _Up>) // strengthened + : __base(in_place, std::forward<_Up>(__u)) {} template requires is_constructible_v<_Err, const _OtherErr&> - _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v) - expected(const unexpected<_OtherErr>& __unex) - noexcept(is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened - : __has_val_(false) { - std::construct_at(std::addressof(__union_.__unex_), __unex.error()); - } + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v) expected( + const unexpected<_OtherErr>& __unex) noexcept(is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened + : __base(unexpect, __unex.error()) {} template requires is_constructible_v<_Err, _OtherErr> _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v<_OtherErr, _Err>) - expected(unexpected<_OtherErr>&& __unex) - noexcept(is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened - : __has_val_(false) { - std::construct_at(std::addressof(__union_.__unex_), std::move(__unex.error())); - } + expected(unexpected<_OtherErr>&& __unex) noexcept(is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened + : __base(unexpect, std::move(__unex.error())) {} template requires is_constructible_v<_Tp, _Args...> - _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(in_place_t, _Args&&... __args) - noexcept(is_nothrow_constructible_v<_Tp, _Args...>) // strengthened - : __has_val_(true) { - std::construct_at(std::addressof(__union_.__val_), std::forward<_Args>(__args)...); - } + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(in_place_t, _Args&&... __args) noexcept( + is_nothrow_constructible_v<_Tp, _Args...>) // strengthened + : __base(in_place, std::forward<_Args>(__args)...) {} template requires is_constructible_v< _Tp, initializer_list<_Up>&, _Args... > - _LIBCPP_HIDE_FROM_ABI constexpr explicit - expected(in_place_t, initializer_list<_Up> __il, _Args&&... __args) - noexcept(is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, _Args...>) // strengthened - : __has_val_(true) { - std::construct_at(std::addressof(__union_.__val_), __il, std::forward<_Args>(__args)...); - } + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(in_place_t, initializer_list<_Up> __il, _Args&&... __args) noexcept( + is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, _Args...>) // strengthened + : __base(in_place, __il, std::forward<_Args>(__args)...) {} template requires is_constructible_v<_Err, _Args...> - _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(unexpect_t, _Args&&... __args) - noexcept(is_nothrow_constructible_v<_Err, _Args...>) // strengthened - : __has_val_(false) { - std::construct_at(std::addressof(__union_.__unex_), std::forward<_Args>(__args)...); - } + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(unexpect_t, _Args&&... __args) noexcept( + is_nothrow_constructible_v<_Err, _Args...>) // strengthened + : __base(unexpect, std::forward<_Args>(__args)...) {} template requires is_constructible_v< _Err, initializer_list<_Up>&, _Args... > - _LIBCPP_HIDE_FROM_ABI constexpr explicit - expected(unexpect_t, initializer_list<_Up> __il, _Args&&... __args) - noexcept(is_nothrow_constructible_v<_Err, initializer_list<_Up>&, _Args...>) // strengthened - : __has_val_(false) { - std::construct_at(std::addressof(__union_.__unex_), __il, std::forward<_Args>(__args)...); - } + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(unexpect_t, initializer_list<_Up> __il, _Args&&... __args) noexcept( + is_nothrow_constructible_v<_Err, initializer_list<_Up>&, _Args...>) // strengthened + : __base(unexpect, __il, std::forward<_Args>(__args)...) {} // [expected.object.dtor], destructor - _LIBCPP_HIDE_FROM_ABI constexpr ~expected() - requires(is_trivially_destructible_v<_Tp> && is_trivially_destructible_v<_Err>) - = default; - - _LIBCPP_HIDE_FROM_ABI constexpr ~expected() - requires(!is_trivially_destructible_v<_Tp> || !is_trivially_destructible_v<_Err>) - { - if (__has_val_) { - std::destroy_at(std::addressof(__union_.__val_)); - } else { - std::destroy_at(std::addressof(__union_.__unex_)); - } - } + _LIBCPP_HIDE_FROM_ABI constexpr ~expected() = default; private: - template - _LIBCPP_HIDE_FROM_ABI static constexpr void __reinit_expected(_T1& __newval, _T2& __oldval, _Args&&... __args) { + template + _LIBCPP_HIDE_FROM_ABI constexpr void __reinit_expected(_T2& __oldval, _Args&&... __args) { if constexpr (is_nothrow_constructible_v<_T1, _Args...>) { - std::destroy_at(std::addressof(__oldval)); - std::construct_at(std::addressof(__newval), std::forward<_Args>(__args)...); + this->__destroy(); + this->__construct(_Tag{}, std::forward<_Args>(__args)...); } else if constexpr (is_nothrow_move_constructible_v<_T1>) { _T1 __tmp(std::forward<_Args>(__args)...); - std::destroy_at(std::addressof(__oldval)); - std::construct_at(std::addressof(__newval), std::move(__tmp)); + this->__destroy(); + this->__construct(_Tag{}, std::move(__tmp)); } else { static_assert( is_nothrow_move_constructible_v<_T2>, "To provide strong exception guarantee, T2 has to satisfy `is_nothrow_move_constructible_v` so that it can " "be reverted to the previous state in case an exception is thrown during the assignment."); _T2 __tmp(std::move(__oldval)); - std::destroy_at(std::addressof(__oldval)); - auto __trans = - std::__make_exception_guard([&] { std::construct_at(std::addressof(__oldval), std::move(__tmp)); }); - std::construct_at(std::addressof(__newval), std::forward<_Args>(__args)...); + this->__destroy(); + auto __trans = std::__make_exception_guard([&] { this->__construct(_OtherTag{}, std::move(__tmp)); }); + this->__construct(_Tag{}, std::forward<_Args>(__args)...); __trans.__complete(); } } @@ -303,73 +625,55 @@ class expected { // [expected.object.assign], assignment _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const expected&) = delete; - _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const expected& __rhs) - noexcept(is_nothrow_copy_assignable_v<_Tp> && - is_nothrow_copy_constructible_v<_Tp> && - is_nothrow_copy_assignable_v<_Err> && - is_nothrow_copy_constructible_v<_Err>) // strengthened - requires(is_copy_assignable_v<_Tp> && - is_copy_constructible_v<_Tp> && - is_copy_assignable_v<_Err> && + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const expected& __rhs) noexcept( + is_nothrow_copy_assignable_v<_Tp> && is_nothrow_copy_constructible_v<_Tp> && is_nothrow_copy_assignable_v<_Err> && + is_nothrow_copy_constructible_v<_Err>) // strengthened + requires(is_copy_assignable_v<_Tp> && is_copy_constructible_v<_Tp> && is_copy_assignable_v<_Err> && is_copy_constructible_v<_Err> && - (is_nothrow_move_constructible_v<_Tp> || - is_nothrow_move_constructible_v<_Err>)) + (is_nothrow_move_constructible_v<_Tp> || is_nothrow_move_constructible_v<_Err>)) { - if (__has_val_ && __rhs.__has_val_) { - __union_.__val_ = __rhs.__union_.__val_; - } else if (__has_val_) { - __reinit_expected(__union_.__unex_, __union_.__val_, __rhs.__union_.__unex_); - } else if (__rhs.__has_val_) { - __reinit_expected(__union_.__val_, __union_.__unex_, __rhs.__union_.__val_); + if (this->__has_val() && __rhs.__has_val()) { + this->__val() = __rhs.__val(); + } else if (this->__has_val()) { + __reinit_expected(this->__val(), __rhs.__unex()); + } else if (__rhs.__has_val()) { + __reinit_expected(this->__unex(), __rhs.__val()); } else { - __union_.__unex_ = __rhs.__union_.__unex_; + this->__unex() = __rhs.__unex(); } - // note: only reached if no exception+rollback was done inside __reinit_expected - __has_val_ = __rhs.__has_val_; return *this; } - _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(expected&& __rhs) - noexcept(is_nothrow_move_assignable_v<_Tp> && - is_nothrow_move_constructible_v<_Tp> && - is_nothrow_move_assignable_v<_Err> && - is_nothrow_move_constructible_v<_Err>) - requires(is_move_constructible_v<_Tp> && - is_move_assignable_v<_Tp> && - is_move_constructible_v<_Err> && + _LIBCPP_HIDE_FROM_ABI constexpr expected& + operator=(expected&& __rhs) noexcept(is_nothrow_move_assignable_v<_Tp> && is_nothrow_move_constructible_v<_Tp> && + is_nothrow_move_assignable_v<_Err> && is_nothrow_move_constructible_v<_Err>) + requires(is_move_constructible_v<_Tp> && is_move_assignable_v<_Tp> && is_move_constructible_v<_Err> && is_move_assignable_v<_Err> && - (is_nothrow_move_constructible_v<_Tp> || - is_nothrow_move_constructible_v<_Err>)) + (is_nothrow_move_constructible_v<_Tp> || is_nothrow_move_constructible_v<_Err>)) { - if (__has_val_ && __rhs.__has_val_) { - __union_.__val_ = std::move(__rhs.__union_.__val_); - } else if (__has_val_) { - __reinit_expected(__union_.__unex_, __union_.__val_, std::move(__rhs.__union_.__unex_)); - } else if (__rhs.__has_val_) { - __reinit_expected(__union_.__val_, __union_.__unex_, std::move(__rhs.__union_.__val_)); + if (this->__has_val() && __rhs.__has_val()) { + this->__val() = std::move(__rhs.__val()); + } else if (this->__has_val()) { + __reinit_expected(this->__val(), std::move(__rhs.__unex())); + } else if (__rhs.__has_val()) { + __reinit_expected(this->__unex(), std::move(__rhs.__val())); } else { - __union_.__unex_ = std::move(__rhs.__union_.__unex_); + this->__unex() = std::move(__rhs.__unex()); } - // note: only reached if no exception+rollback was done inside __reinit_expected - __has_val_ = __rhs.__has_val_; return *this; } template _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(_Up&& __v) - requires(!is_same_v> && - !__is_std_unexpected>::value && - is_constructible_v<_Tp, _Up> && - is_assignable_v<_Tp&, _Up> && - (is_nothrow_constructible_v<_Tp, _Up> || - is_nothrow_move_constructible_v<_Tp> || + requires(!is_same_v> && !__is_std_unexpected>::value && + is_constructible_v<_Tp, _Up> && is_assignable_v<_Tp&, _Up> && + (is_nothrow_constructible_v<_Tp, _Up> || is_nothrow_move_constructible_v<_Tp> || is_nothrow_move_constructible_v<_Err>)) { - if (__has_val_) { - __union_.__val_ = std::forward<_Up>(__v); + if (this->__has_val()) { + this->__val() = std::forward<_Up>(__v); } else { - __reinit_expected(__union_.__val_, __union_.__unex_, std::forward<_Up>(__v)); - __has_val_ = true; + __reinit_expected(this->__unex(), std::forward<_Up>(__v)); } return *this; } @@ -388,11 +692,10 @@ class expected { template requires(__can_assign_from_unexpected) _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const unexpected<_OtherErr>& __un) { - if (__has_val_) { - __reinit_expected(__union_.__unex_, __union_.__val_, __un.error()); - __has_val_ = false; + if (this->__has_val()) { + __reinit_expected(this->__val(), __un.error()); } else { - __union_.__unex_ = __un.error(); + this->__unex() = __un.error(); } return *this; } @@ -400,11 +703,10 @@ class expected { template requires(__can_assign_from_unexpected<_OtherErr>) _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(unexpected<_OtherErr>&& __un) { - if (__has_val_) { - __reinit_expected(__union_.__unex_, __union_.__val_, std::move(__un.error())); - __has_val_ = false; + if (this->__has_val()) { + __reinit_expected(this->__val(), std::move(__un.error())); } else { - __union_.__unex_ = std::move(__un.error()); + this->__unex() = std::move(__un.error()); } return *this; } @@ -412,90 +714,69 @@ class expected { template requires is_nothrow_constructible_v<_Tp, _Args...> _LIBCPP_HIDE_FROM_ABI constexpr _Tp& emplace(_Args&&... __args) noexcept { - if (__has_val_) { - std::destroy_at(std::addressof(__union_.__val_)); - } else { - std::destroy_at(std::addressof(__union_.__unex_)); - __has_val_ = true; - } - return *std::construct_at(std::addressof(__union_.__val_), std::forward<_Args>(__args)...); + this->__destroy(); + this->__construct(in_place, std::forward<_Args>(__args)...); + return this->__val(); } template - requires is_nothrow_constructible_v< _Tp, initializer_list<_Up>&, _Args... > + requires is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, _Args...> _LIBCPP_HIDE_FROM_ABI constexpr _Tp& emplace(initializer_list<_Up> __il, _Args&&... __args) noexcept { - if (__has_val_) { - std::destroy_at(std::addressof(__union_.__val_)); - } else { - std::destroy_at(std::addressof(__union_.__unex_)); - __has_val_ = true; - } - return *std::construct_at(std::addressof(__union_.__val_), __il, std::forward<_Args>(__args)...); + this->__destroy(); + this->__construct(in_place, __il, std::forward<_Args>(__args)...); + return this->__val(); } - public: // [expected.object.swap], swap - _LIBCPP_HIDE_FROM_ABI constexpr void swap(expected& __rhs) - noexcept(is_nothrow_move_constructible_v<_Tp> && - is_nothrow_swappable_v<_Tp> && - is_nothrow_move_constructible_v<_Err> && - is_nothrow_swappable_v<_Err>) - requires(is_swappable_v<_Tp> && - is_swappable_v<_Err> && - is_move_constructible_v<_Tp> && + _LIBCPP_HIDE_FROM_ABI constexpr void + swap(expected& __rhs) noexcept(is_nothrow_move_constructible_v<_Tp> && is_nothrow_swappable_v<_Tp> && + is_nothrow_move_constructible_v<_Err> && is_nothrow_swappable_v<_Err>) + requires(is_swappable_v<_Tp> && is_swappable_v<_Err> && is_move_constructible_v<_Tp> && is_move_constructible_v<_Err> && - (is_nothrow_move_constructible_v<_Tp> || - is_nothrow_move_constructible_v<_Err>)) + (is_nothrow_move_constructible_v<_Tp> || is_nothrow_move_constructible_v<_Err>)) { - auto __swap_val_unex_impl = [&](expected& __with_val, expected& __with_err) { + auto __swap_val_unex_impl = [](expected& __with_val, expected& __with_err) { if constexpr (is_nothrow_move_constructible_v<_Err>) { - _Err __tmp(std::move(__with_err.__union_.__unex_)); - std::destroy_at(std::addressof(__with_err.__union_.__unex_)); - auto __trans = std::__make_exception_guard([&] { - std::construct_at(std::addressof(__with_err.__union_.__unex_), std::move(__tmp)); - }); - std::construct_at(std::addressof(__with_err.__union_.__val_), std::move(__with_val.__union_.__val_)); + _Err __tmp(std::move(__with_err.__unex())); + __with_err.__destroy(); + auto __trans = std::__make_exception_guard([&] { __with_err.__construct(unexpect, std::move(__tmp)); }); + __with_err.__construct(in_place, std::move(__with_val.__val())); __trans.__complete(); - std::destroy_at(std::addressof(__with_val.__union_.__val_)); - std::construct_at(std::addressof(__with_val.__union_.__unex_), std::move(__tmp)); + __with_val.__destroy(); + __with_val.__construct(unexpect, std::move(__tmp)); } else { static_assert(is_nothrow_move_constructible_v<_Tp>, "To provide strong exception guarantee, Tp has to satisfy `is_nothrow_move_constructible_v` so " "that it can be reverted to the previous state in case an exception is thrown during swap."); - _Tp __tmp(std::move(__with_val.__union_.__val_)); - std::destroy_at(std::addressof(__with_val.__union_.__val_)); - auto __trans = std::__make_exception_guard([&] { - std::construct_at(std::addressof(__with_val.__union_.__val_), std::move(__tmp)); - }); - std::construct_at(std::addressof(__with_val.__union_.__unex_), std::move(__with_err.__union_.__unex_)); + _Tp __tmp(std::move(__with_val.__val())); + __with_val.__destroy(); + auto __trans = std::__make_exception_guard([&] { __with_val.__construct(in_place, std::move(__tmp)); }); + __with_val.__construct(unexpect, std::move(__with_err.__unex())); __trans.__complete(); - std::destroy_at(std::addressof(__with_err.__union_.__unex_)); - std::construct_at(std::addressof(__with_err.__union_.__val_), std::move(__tmp)); + __with_err.__destroy(); + __with_err.__construct(in_place, std::move(__tmp)); } - __with_val.__has_val_ = false; - __with_err.__has_val_ = true; }; - if (__has_val_) { - if (__rhs.__has_val_) { + if (this->__has_val()) { + if (__rhs.__has_val()) { using std::swap; - swap(__union_.__val_, __rhs.__union_.__val_); + swap(this->__val(), __rhs.__val()); } else { __swap_val_unex_impl(*this, __rhs); } } else { - if (__rhs.__has_val_) { + if (__rhs.__has_val()) { __swap_val_unex_impl(__rhs, *this); } else { using std::swap; - swap(__union_.__unex_, __rhs.__union_.__unex_); + swap(this->__unex(), __rhs.__unex()); } } } - _LIBCPP_HIDE_FROM_ABI friend constexpr void swap(expected& __x, expected& __y) - noexcept(noexcept(__x.swap(__y))) + _LIBCPP_HIDE_FROM_ABI friend constexpr void swap(expected& __x, expected& __y) noexcept(noexcept(__x.swap(__y))) requires requires { __x.swap(__y); } { __x.swap(__y); @@ -503,152 +784,576 @@ class expected { // [expected.object.obs], observers _LIBCPP_HIDE_FROM_ABI constexpr const _Tp* operator->() const noexcept { - _LIBCPP_ASSERT(__has_val_, "expected::operator-> requires the expected to contain a value"); - return std::addressof(__union_.__val_); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + this->__has_val(), "expected::operator-> requires the expected to contain a value"); + return std::addressof(this->__val()); } _LIBCPP_HIDE_FROM_ABI constexpr _Tp* operator->() noexcept { - _LIBCPP_ASSERT(__has_val_, "expected::operator-> requires the expected to contain a value"); - return std::addressof(__union_.__val_); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + this->__has_val(), "expected::operator-> requires the expected to contain a value"); + return std::addressof(this->__val()); } _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& operator*() const& noexcept { - _LIBCPP_ASSERT(__has_val_, "expected::operator* requires the expected to contain a value"); - return __union_.__val_; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + this->__has_val(), "expected::operator* requires the expected to contain a value"); + return this->__val(); } _LIBCPP_HIDE_FROM_ABI constexpr _Tp& operator*() & noexcept { - _LIBCPP_ASSERT(__has_val_, "expected::operator* requires the expected to contain a value"); - return __union_.__val_; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + this->__has_val(), "expected::operator* requires the expected to contain a value"); + return this->__val(); } _LIBCPP_HIDE_FROM_ABI constexpr const _Tp&& operator*() const&& noexcept { - _LIBCPP_ASSERT(__has_val_, "expected::operator* requires the expected to contain a value"); - return std::move(__union_.__val_); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + this->__has_val(), "expected::operator* requires the expected to contain a value"); + return std::move(this->__val()); } _LIBCPP_HIDE_FROM_ABI constexpr _Tp&& operator*() && noexcept { - _LIBCPP_ASSERT(__has_val_, "expected::operator* requires the expected to contain a value"); - return std::move(__union_.__val_); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + this->__has_val(), "expected::operator* requires the expected to contain a value"); + return std::move(this->__val()); } - _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return __has_val_; } + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return this->__has_val(); } - _LIBCPP_HIDE_FROM_ABI constexpr bool has_value() const noexcept { return __has_val_; } + _LIBCPP_HIDE_FROM_ABI constexpr bool has_value() const noexcept { return this->__has_val(); } _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& value() const& { - if (!__has_val_) { - __expected::__throw_bad_expected_access<_Err>(__union_.__unex_); + static_assert(is_copy_constructible_v<_Err>, "error_type has to be copy constructible"); + if (!this->__has_val()) { + std::__throw_bad_expected_access<_Err>(std::as_const(error())); } - return __union_.__val_; + return this->__val(); } _LIBCPP_HIDE_FROM_ABI constexpr _Tp& value() & { - if (!__has_val_) { - __expected::__throw_bad_expected_access<_Err>(__union_.__unex_); + static_assert(is_copy_constructible_v<_Err>, "error_type has to be copy constructible"); + if (!this->__has_val()) { + std::__throw_bad_expected_access<_Err>(std::as_const(error())); } - return __union_.__val_; + return this->__val(); } _LIBCPP_HIDE_FROM_ABI constexpr const _Tp&& value() const&& { - if (!__has_val_) { - __expected::__throw_bad_expected_access<_Err>(std::move(__union_.__unex_)); + static_assert(is_copy_constructible_v<_Err> && is_constructible_v<_Err, decltype(std::move(error()))>, + "error_type has to be both copy constructible and constructible from decltype(std::move(error()))"); + if (!this->__has_val()) { + std::__throw_bad_expected_access<_Err>(std::move(error())); } - return std::move(__union_.__val_); + return std::move(this->__val()); } _LIBCPP_HIDE_FROM_ABI constexpr _Tp&& value() && { - if (!__has_val_) { - __expected::__throw_bad_expected_access<_Err>(std::move(__union_.__unex_)); + static_assert(is_copy_constructible_v<_Err> && is_constructible_v<_Err, decltype(std::move(error()))>, + "error_type has to be both copy constructible and constructible from decltype(std::move(error()))"); + if (!this->__has_val()) { + std::__throw_bad_expected_access<_Err>(std::move(error())); } - return std::move(__union_.__val_); + return std::move(this->__val()); } _LIBCPP_HIDE_FROM_ABI constexpr const _Err& error() const& noexcept { - _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); - return __union_.__unex_; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !this->__has_val(), "expected::error requires the expected to contain an error"); + return this->__unex(); } _LIBCPP_HIDE_FROM_ABI constexpr _Err& error() & noexcept { - _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); - return __union_.__unex_; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !this->__has_val(), "expected::error requires the expected to contain an error"); + return this->__unex(); } _LIBCPP_HIDE_FROM_ABI constexpr const _Err&& error() const&& noexcept { - _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); - return std::move(__union_.__unex_); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !this->__has_val(), "expected::error requires the expected to contain an error"); + return std::move(this->__unex()); } _LIBCPP_HIDE_FROM_ABI constexpr _Err&& error() && noexcept { - _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); - return std::move(__union_.__unex_); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !this->__has_val(), "expected::error requires the expected to contain an error"); + return std::move(this->__unex()); } template _LIBCPP_HIDE_FROM_ABI constexpr _Tp value_or(_Up&& __v) const& { static_assert(is_copy_constructible_v<_Tp>, "value_type has to be copy constructible"); static_assert(is_convertible_v<_Up, _Tp>, "argument has to be convertible to value_type"); - return __has_val_ ? __union_.__val_ : static_cast<_Tp>(std::forward<_Up>(__v)); + return this->__has_val() ? this->__val() : static_cast<_Tp>(std::forward<_Up>(__v)); } template _LIBCPP_HIDE_FROM_ABI constexpr _Tp value_or(_Up&& __v) && { static_assert(is_move_constructible_v<_Tp>, "value_type has to be move constructible"); static_assert(is_convertible_v<_Up, _Tp>, "argument has to be convertible to value_type"); - return __has_val_ ? std::move(__union_.__val_) : static_cast<_Tp>(std::forward<_Up>(__v)); + return this->__has_val() ? std::move(this->__val()) : static_cast<_Tp>(std::forward<_Up>(__v)); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Err error_or(_Up&& __error) const& { + static_assert(is_copy_constructible_v<_Err>, "error_type has to be copy constructible"); + static_assert(is_convertible_v<_Up, _Err>, "argument has to be convertible to error_type"); + if (has_value()) + return std::forward<_Up>(__error); + return error(); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Err error_or(_Up&& __error) && { + static_assert(is_move_constructible_v<_Err>, "error_type has to be move constructible"); + static_assert(is_convertible_v<_Up, _Err>, "argument has to be convertible to error_type"); + if (has_value()) + return std::forward<_Up>(__error); + return std::move(error()); + } + + // [expected.void.monadic], monadic + template + requires is_constructible_v<_Err, _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) & { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f(**this) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(**this) must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f), this->__val()); + } + return _Up(unexpect, error()); + } + + template + requires is_constructible_v<_Err, const _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const& { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f(**this) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(**this) must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f), this->__val()); + } + return _Up(unexpect, error()); + } + + template + requires is_constructible_v<_Err, _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) && { + using _Up = remove_cvref_t>; + static_assert( + __is_std_expected<_Up>::value, "The result of f(std::move(**this)) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(**this)) must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f), std::move(this->__val())); + } + return _Up(unexpect, std::move(error())); + } + + template + requires is_constructible_v<_Err, const _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const&& { + using _Up = remove_cvref_t>; + static_assert( + __is_std_expected<_Up>::value, "The result of f(std::move(**this)) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(**this)) must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f), std::move(this->__val())); + } + return _Up(unexpect, std::move(error())); + } + + template + requires is_constructible_v<_Tp, _Tp&> + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) & { + using _Gp = remove_cvref_t>; + static_assert(__is_std_expected<_Gp>::value, "The result of f(error()) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(error()) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(in_place, this->__val()); + } + return std::invoke(std::forward<_Func>(__f), error()); + } + + template + requires is_constructible_v<_Tp, const _Tp&> + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) const& { + using _Gp = remove_cvref_t>; + static_assert(__is_std_expected<_Gp>::value, "The result of f(error()) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(error()) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(in_place, this->__val()); + } + return std::invoke(std::forward<_Func>(__f), error()); + } + + template + requires is_constructible_v<_Tp, _Tp&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) && { + using _Gp = remove_cvref_t>; + static_assert( + __is_std_expected<_Gp>::value, "The result of f(std::move(error())) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(error())) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(in_place, std::move(this->__val())); + } + return std::invoke(std::forward<_Func>(__f), std::move(error())); + } + + template + requires is_constructible_v<_Tp, const _Tp&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) const&& { + using _Gp = remove_cvref_t>; + static_assert( + __is_std_expected<_Gp>::value, "The result of f(std::move(error())) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(error())) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(in_place, std::move(this->__val())); + } + return std::invoke(std::forward<_Func>(__f), std::move(error())); + } + + template + requires is_constructible_v<_Err, _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) & { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, error()); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>( + __expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f), this->__val()); + } else { + std::invoke(std::forward<_Func>(__f), this->__val()); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, const _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const& { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, error()); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>( + __expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f), this->__val()); + } else { + std::invoke(std::forward<_Func>(__f), this->__val()); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) && { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, std::move(error())); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>( + __expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f), std::move(this->__val())); + } else { + std::invoke(std::forward<_Func>(__f), std::move(this->__val())); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, const _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const&& { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, std::move(error())); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>( + __expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f), std::move(this->__val())); + } else { + std::invoke(std::forward<_Func>(__f), std::move(this->__val())); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Tp, _Tp&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) & { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(error()) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(in_place, this->__val()); + } + return expected<_Tp, _Gp>(__expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), error()); + } + + template + requires is_constructible_v<_Tp, const _Tp&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) const& { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(error()) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(in_place, this->__val()); + } + return expected<_Tp, _Gp>(__expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), error()); + } + + template + requires is_constructible_v<_Tp, _Tp&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) && { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(std::move(error())) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(in_place, std::move(this->__val())); + } + return expected<_Tp, _Gp>( + __expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), std::move(error())); + } + + template + requires is_constructible_v<_Tp, const _Tp&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) const&& { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(std::move(error())) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(in_place, std::move(this->__val())); + } + return expected<_Tp, _Gp>( + __expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), std::move(error())); } // [expected.object.eq], equality operators template requires(!is_void_v<_T2>) _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const expected& __x, const expected<_T2, _E2>& __y) { - if (__x.__has_val_ != __y.__has_val_) { + if (__x.__has_val() != __y.__has_val()) { return false; } else { - if (__x.__has_val_) { - return __x.__union_.__val_ == __y.__union_.__val_; + if (__x.__has_val()) { + return __x.__val() == __y.__val(); } else { - return __x.__union_.__unex_ == __y.__union_.__unex_; + return __x.__unex() == __y.__unex(); } } } template _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const expected& __x, const _T2& __v) { - return __x.__has_val_ && static_cast(__x.__union_.__val_ == __v); + return __x.__has_val() && static_cast(__x.__val() == __v); } template _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const expected& __x, const unexpected<_E2>& __e) { - return !__x.__has_val_ && static_cast(__x.__union_.__unex_ == __e.error()); + return !__x.__has_val() && static_cast(__x.__unex() == __e.error()); } +}; -private: +template +class __expected_void_base { struct __empty_t {}; - // use named union because [[no_unique_address]] cannot be applied to an unnamed union - _LIBCPP_NO_UNIQUE_ADDRESS union __union_t { - _LIBCPP_HIDE_FROM_ABI constexpr __union_t() : __empty_() {} + // use named union because [[no_unique_address]] cannot be applied to an unnamed union, + // also guaranteed elision into a potentially-overlapping subobject is unsettled (and + // it's not clear that it's implementable, given that the function is allowed to clobber + // the tail padding) - see https://github.com/itanium-cxx-abi/cxx-abi/issues/107. + union __union_t { + _LIBCPP_HIDE_FROM_ABI constexpr __union_t(const __union_t&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __union_t(const __union_t&) + requires(is_copy_constructible_v<_Err> && is_trivially_copy_constructible_v<_Err>) + = default; + _LIBCPP_HIDE_FROM_ABI constexpr __union_t(__union_t&&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __union_t(__union_t&&) + requires(is_move_constructible_v<_Err> && is_trivially_move_constructible_v<_Err>) + = default; + _LIBCPP_HIDE_FROM_ABI constexpr __union_t& operator=(const __union_t&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __union_t& operator=(__union_t&&) = delete; + + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t(in_place_t) : __empty_() {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t(unexpect_t, _Args&&... __args) + : __unex_(std::forward<_Args>(__args)...) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t( + __expected_construct_unexpected_from_invoke_tag, _Func&& __f, _Args&&... __args) + : __unex_(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() - requires(is_trivially_destructible_v<_Tp> && is_trivially_destructible_v<_Err>) + requires(is_trivially_destructible_v<_Err>) = default; - // the expected's destructor handles this + // __repr's destructor handles this _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() - requires(!is_trivially_destructible_v<_Tp> || !is_trivially_destructible_v<_Err>) + requires(!is_trivially_destructible_v<_Err>) {} _LIBCPP_NO_UNIQUE_ADDRESS __empty_t __empty_; - _LIBCPP_NO_UNIQUE_ADDRESS _Tp __val_; _LIBCPP_NO_UNIQUE_ADDRESS _Err __unex_; - } __union_; + }; + + static constexpr bool __put_flag_in_tail = __fits_in_tail_padding<__union_t, bool>; + static constexpr bool __allow_reusing_expected_tail_padding = !__put_flag_in_tail; + + struct __repr { + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr() = delete; + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr(in_place_t __tag) : __union_(in_place, __tag), __has_val_(true) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr(unexpect_t __tag, _Args&&... __args) + : __union_(in_place, __tag, std::forward<_Args>(__args)...), __has_val_(false) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr(std::__expected_construct_unexpected_from_invoke_tag __tag, + _Args&&... __args) + : __union_(in_place, __tag, std::forward<_Args>(__args)...), __has_val_(false) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __repr(bool __has_val, _OtherUnion&& __other) + requires(__allow_reusing_expected_tail_padding) + : __union_(__conditional_no_unique_address_invoke_tag{}, + [&] { return __make_union(__has_val, std::forward<_OtherUnion>(__other)); }), + __has_val_(__has_val) {} + + _LIBCPP_HIDE_FROM_ABI constexpr __repr(const __repr&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __repr(const __repr&) + requires(is_copy_constructible_v<_Err> && is_trivially_copy_constructible_v<_Err>) + = default; + _LIBCPP_HIDE_FROM_ABI constexpr __repr(__repr&&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __repr(__repr&&) + requires(is_move_constructible_v<_Err> && is_trivially_move_constructible_v<_Err>) + = default; + + _LIBCPP_HIDE_FROM_ABI constexpr __repr& operator=(const __repr&) = delete; + _LIBCPP_HIDE_FROM_ABI constexpr __repr& operator=(__repr&&) = delete; + + _LIBCPP_HIDE_FROM_ABI constexpr ~__repr() + requires(is_trivially_destructible_v<_Err>) + = default; + + _LIBCPP_HIDE_FROM_ABI constexpr ~__repr() + requires(!is_trivially_destructible_v<_Err>) + { + __destroy_union_member(); + } + + _LIBCPP_HIDE_FROM_ABI constexpr void __destroy_union() + requires(__allow_reusing_expected_tail_padding && is_trivially_destructible_v<_Err>) + { + std::destroy_at(&__union_.__v); + } + + _LIBCPP_HIDE_FROM_ABI constexpr void __destroy_union() + requires(__allow_reusing_expected_tail_padding && !is_trivially_destructible_v<_Err>) + { + __destroy_union_member(); + std::destroy_at(&__union_.__v); + } + + _LIBCPP_HIDE_FROM_ABI constexpr void __construct_union(in_place_t) + requires(__allow_reusing_expected_tail_padding) + { + std::construct_at(&__union_.__v, in_place); + __has_val_ = true; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr void __construct_union(unexpect_t, _Args&&... __args) + requires(__allow_reusing_expected_tail_padding) + { + std::construct_at(&__union_.__v, unexpect, std::forward<_Args>(__args)...); + __has_val_ = false; + } + + private: + template + friend class __expected_void_base; + + _LIBCPP_HIDE_FROM_ABI constexpr void __destroy_union_member() + requires(!is_trivially_destructible_v<_Err>) + { + if (!__has_val_) + std::destroy_at(std::addressof(__union_.__v.__unex_)); + } + + template + _LIBCPP_HIDE_FROM_ABI static constexpr __union_t __make_union(bool __has_val, _OtherUnion&& __other) + requires(__allow_reusing_expected_tail_padding) + { + if (__has_val) + return __union_t(in_place); + else + return __union_t(unexpect, std::forward<_OtherUnion>(__other).__unex_); + } + + _LIBCPP_NO_UNIQUE_ADDRESS __conditional_no_unique_address<__put_flag_in_tail, __union_t> __union_; + _LIBCPP_NO_UNIQUE_ADDRESS bool __has_val_; + }; + + template + _LIBCPP_HIDE_FROM_ABI static constexpr __repr __make_repr(bool __has_val, _OtherUnion&& __other) + requires(__put_flag_in_tail) + { + if (__has_val) + return __repr(in_place); + else + return __repr(unexpect, std::forward<_OtherUnion>(__other).__unex_); + } + +protected: + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __expected_void_base(_Args&&... __args) + : __repr_(in_place, std::forward<_Args>(__args)...) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __expected_void_base(bool __has_val, _OtherUnion&& __other) + requires(__put_flag_in_tail) + : __repr_(__conditional_no_unique_address_invoke_tag{}, + [&] { return __make_repr(__has_val, std::forward<_OtherUnion>(__other)); }) {} + + _LIBCPP_HIDE_FROM_ABI constexpr void __destroy() { + if constexpr (__put_flag_in_tail) + std::destroy_at(&__repr_.__v); + else + __repr_.__v.__destroy_union(); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr void __construct(_Tag __tag, _Args&&... __args) { + if constexpr (__put_flag_in_tail) + std::construct_at(&__repr_.__v, __tag, std::forward<_Args>(__args)...); + else + __repr_.__v.__construct_union(__tag, std::forward<_Args>(__args)...); + } + + _LIBCPP_HIDE_FROM_ABI constexpr bool __has_val() const { return __repr_.__v.__has_val_; } + _LIBCPP_HIDE_FROM_ABI constexpr __union_t& __union() { return __repr_.__v.__union_.__v; } + _LIBCPP_HIDE_FROM_ABI constexpr const __union_t& __union() const { return __repr_.__v.__union_.__v; } + _LIBCPP_HIDE_FROM_ABI constexpr _Err& __unex() { return __repr_.__v.__union_.__v.__unex_; } + _LIBCPP_HIDE_FROM_ABI constexpr const _Err& __unex() const { return __repr_.__v.__union_.__v.__unex_; } - bool __has_val_; +private: + _LIBCPP_NO_UNIQUE_ADDRESS __conditional_no_unique_address<__allow_reusing_expected_tail_padding, __repr> __repr_; }; template requires is_void_v<_Tp> -class expected<_Tp, _Err> { +class expected<_Tp, _Err> : private __expected_void_base<_Err> { static_assert(__valid_std_unexpected<_Err>::value, "[expected.void.general] A program that instantiates expected with a E that is not a " "valid argument for unexpected is ill-formed"); @@ -665,6 +1370,8 @@ class expected<_Tp, _Err> { _Not, const expected<_Up, _OtherErr>&>>, _Not, const expected<_Up, _OtherErr>>>>; + using __base = __expected_void_base<_Err>; + public: using value_type = _Tp; using error_type = _Err; @@ -674,7 +1381,7 @@ class expected<_Tp, _Err> { using rebind = expected<_Up, error_type>; // [expected.void.ctor], constructors - _LIBCPP_HIDE_FROM_ABI constexpr expected() noexcept : __has_val_(true) {} + _LIBCPP_HIDE_FROM_ABI constexpr expected() noexcept : __base(in_place) {} _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected&) = delete; @@ -682,119 +1389,104 @@ class expected<_Tp, _Err> { requires(is_copy_constructible_v<_Err> && is_trivially_copy_constructible_v<_Err>) = default; - _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected& __rhs) - noexcept(is_nothrow_copy_constructible_v<_Err>) // strengthened + _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected& __rhs) noexcept( + is_nothrow_copy_constructible_v<_Err>) // strengthened requires(is_copy_constructible_v<_Err> && !is_trivially_copy_constructible_v<_Err>) - : __has_val_(__rhs.__has_val_) { - if (!__rhs.__has_val_) { - std::construct_at(std::addressof(__union_.__unex_), __rhs.__union_.__unex_); - } - } + : __base(__rhs.__has_val(), __rhs.__union()) {} _LIBCPP_HIDE_FROM_ABI constexpr expected(expected&&) requires(is_move_constructible_v<_Err> && is_trivially_move_constructible_v<_Err>) = default; - _LIBCPP_HIDE_FROM_ABI constexpr expected(expected&& __rhs) - noexcept(is_nothrow_move_constructible_v<_Err>) + _LIBCPP_HIDE_FROM_ABI constexpr expected(expected&& __rhs) noexcept(is_nothrow_move_constructible_v<_Err>) requires(is_move_constructible_v<_Err> && !is_trivially_move_constructible_v<_Err>) - : __has_val_(__rhs.__has_val_) { - if (!__rhs.__has_val_) { - std::construct_at(std::addressof(__union_.__unex_), std::move(__rhs.__union_.__unex_)); - } - } + : __base(__rhs.__has_val(), std::move(__rhs.__union())) {} template requires __can_convert<_Up, _OtherErr, const _OtherErr&>::value _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v) - expected(const expected<_Up, _OtherErr>& __rhs) - noexcept(is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened - : __has_val_(__rhs.__has_val_) { - if (!__rhs.__has_val_) { - std::construct_at(std::addressof(__union_.__unex_), __rhs.__union_.__unex_); - } - } + expected(const expected<_Up, _OtherErr>& __rhs) noexcept( + is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened + : __base(__rhs.__has_val(), __rhs.__union()) {} template requires __can_convert<_Up, _OtherErr, _OtherErr>::value _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v<_OtherErr, _Err>) - expected(expected<_Up, _OtherErr>&& __rhs) - noexcept(is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened - : __has_val_(__rhs.__has_val_) { - if (!__rhs.__has_val_) { - std::construct_at(std::addressof(__union_.__unex_), std::move(__rhs.__union_.__unex_)); - } - } + expected(expected<_Up, _OtherErr>&& __rhs) noexcept(is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened + : __base(__rhs.__has_val(), std::move(__rhs.__union())) {} template requires is_constructible_v<_Err, const _OtherErr&> - _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v) - expected(const unexpected<_OtherErr>& __unex) - noexcept(is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened - : __has_val_(false) { - std::construct_at(std::addressof(__union_.__unex_), __unex.error()); - } + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v) expected( + const unexpected<_OtherErr>& __unex) noexcept(is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened + : __base(unexpect, __unex.error()) {} template requires is_constructible_v<_Err, _OtherErr> _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v<_OtherErr, _Err>) - expected(unexpected<_OtherErr>&& __unex) - noexcept(is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened - : __has_val_(false) { - std::construct_at(std::addressof(__union_.__unex_), std::move(__unex.error())); - } + expected(unexpected<_OtherErr>&& __unex) noexcept(is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened + : __base(unexpect, std::move(__unex.error())) {} - _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(in_place_t) noexcept : __has_val_(true) {} + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(in_place_t) noexcept : __base(in_place) {} template requires is_constructible_v<_Err, _Args...> - _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(unexpect_t, _Args&&... __args) - noexcept(is_nothrow_constructible_v<_Err, _Args...>) // strengthened - : __has_val_(false) { - std::construct_at(std::addressof(__union_.__unex_), std::forward<_Args>(__args)...); - } + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(unexpect_t, _Args&&... __args) noexcept( + is_nothrow_constructible_v<_Err, _Args...>) // strengthened + : __base(unexpect, std::forward<_Args>(__args)...) {} template requires is_constructible_v< _Err, initializer_list<_Up>&, _Args... > - _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(unexpect_t, initializer_list<_Up> __il, _Args&&... __args) - noexcept(is_nothrow_constructible_v<_Err, initializer_list<_Up>&, _Args...>) // strengthened - : __has_val_(false) { - std::construct_at(std::addressof(__union_.__unex_), __il, std::forward<_Args>(__args)...); - } + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(unexpect_t, initializer_list<_Up> __il, _Args&&... __args) noexcept( + is_nothrow_constructible_v<_Err, initializer_list<_Up>&, _Args...>) // strengthened + : __base(unexpect, __il, std::forward<_Args>(__args)...) {} +private: + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected( + __expected_construct_unexpected_from_invoke_tag __tag, _Func&& __f, _Args&&... __args) + : __base(__tag, std::forward<_Func>(__f), std::forward<_Args>(__args)...) {} + +public: // [expected.void.dtor], destructor - _LIBCPP_HIDE_FROM_ABI constexpr ~expected() - requires is_trivially_destructible_v<_Err> - = default; + _LIBCPP_HIDE_FROM_ABI constexpr ~expected() = default; - _LIBCPP_HIDE_FROM_ABI constexpr ~expected() - requires(!is_trivially_destructible_v<_Err>) - { - if (!__has_val_) { - std::destroy_at(std::addressof(__union_.__unex_)); - } +private: + template + _LIBCPP_HIDE_FROM_ABI constexpr void __reinit_expected(unexpect_t, _Args&&... __args) { + _LIBCPP_ASSERT_INTERNAL(this->__has_val(), "__reinit_expected(unexpect_t, ...) needs value to be set"); + + this->__destroy(); + auto __trans = std::__make_exception_guard([&] { this->__construct(in_place); }); + this->__construct(unexpect, std::forward<_Args>(__args)...); + __trans.__complete(); } - // [expected.void.assign], assignment + _LIBCPP_HIDE_FROM_ABI constexpr void __reinit_expected(in_place_t) { + _LIBCPP_ASSERT_INTERNAL(!this->__has_val(), "__reinit_expected(in_place_t, ...) needs value to be unset"); + this->__destroy(); + this->__construct(in_place); + } + +public: + // [expected.void.assign], assignment _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const expected&) = delete; - _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const expected& __rhs) - noexcept(is_nothrow_copy_assignable_v<_Err> && is_nothrow_copy_constructible_v<_Err>) // strengthened + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const expected& __rhs) noexcept( + is_nothrow_copy_assignable_v<_Err> && is_nothrow_copy_constructible_v<_Err>) // strengthened requires(is_copy_assignable_v<_Err> && is_copy_constructible_v<_Err>) { - if (__has_val_) { - if (!__rhs.__has_val_) { - std::construct_at(std::addressof(__union_.__unex_), __rhs.__union_.__unex_); - __has_val_ = false; + if (this->__has_val()) { + if (!__rhs.__has_val()) { + __reinit_expected(unexpect, __rhs.__unex()); } } else { - if (__rhs.__has_val_) { - std::destroy_at(std::addressof(__union_.__unex_)); - __has_val_ = true; + if (__rhs.__has_val()) { + __reinit_expected(in_place); } else { - __union_.__unex_ = __rhs.__union_.__unex_; + this->__unex() = __rhs.__unex(); } } return *this; @@ -802,23 +1494,19 @@ class expected<_Tp, _Err> { _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(expected&&) = delete; - _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(expected&& __rhs) - noexcept(is_nothrow_move_assignable_v<_Err> && - is_nothrow_move_constructible_v<_Err>) - requires(is_move_assignable_v<_Err> && - is_move_constructible_v<_Err>) + _LIBCPP_HIDE_FROM_ABI constexpr expected& + operator=(expected&& __rhs) noexcept(is_nothrow_move_assignable_v<_Err> && is_nothrow_move_constructible_v<_Err>) + requires(is_move_assignable_v<_Err> && is_move_constructible_v<_Err>) { - if (__has_val_) { - if (!__rhs.__has_val_) { - std::construct_at(std::addressof(__union_.__unex_), std::move(__rhs.__union_.__unex_)); - __has_val_ = false; + if (this->__has_val()) { + if (!__rhs.__has_val()) { + __reinit_expected(unexpect, std::move(__rhs.__unex())); } } else { - if (__rhs.__has_val_) { - std::destroy_at(std::addressof(__union_.__unex_)); - __has_val_ = true; + if (__rhs.__has_val()) { + __reinit_expected(in_place); } else { - __union_.__unex_ = std::move(__rhs.__union_.__unex_); + this->__unex() = std::move(__rhs.__unex()); } } return *this; @@ -827,11 +1515,10 @@ class expected<_Tp, _Err> { template requires(is_constructible_v<_Err, const _OtherErr&> && is_assignable_v<_Err&, const _OtherErr&>) _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const unexpected<_OtherErr>& __un) { - if (__has_val_) { - std::construct_at(std::addressof(__union_.__unex_), __un.error()); - __has_val_ = false; + if (this->__has_val()) { + __reinit_expected(unexpect, __un.error()); } else { - __union_.__unex_ = __un.error(); + this->__unex() = __un.error(); } return *this; } @@ -839,136 +1526,350 @@ class expected<_Tp, _Err> { template requires(is_constructible_v<_Err, _OtherErr> && is_assignable_v<_Err&, _OtherErr>) _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(unexpected<_OtherErr>&& __un) { - if (__has_val_) { - std::construct_at(std::addressof(__union_.__unex_), std::move(__un.error())); - __has_val_ = false; + if (this->__has_val()) { + __reinit_expected(unexpect, std::move(__un.error())); } else { - __union_.__unex_ = std::move(__un.error()); + this->__unex() = std::move(__un.error()); } return *this; } _LIBCPP_HIDE_FROM_ABI constexpr void emplace() noexcept { - if (!__has_val_) { - std::destroy_at(std::addressof(__union_.__unex_)); - __has_val_ = true; + if (!this->__has_val()) { + __reinit_expected(in_place); } } // [expected.void.swap], swap - _LIBCPP_HIDE_FROM_ABI constexpr void swap(expected& __rhs) - noexcept(is_nothrow_move_constructible_v<_Err> && is_nothrow_swappable_v<_Err>) + _LIBCPP_HIDE_FROM_ABI constexpr void + swap(expected& __rhs) noexcept(is_nothrow_move_constructible_v<_Err> && is_nothrow_swappable_v<_Err>) requires(is_swappable_v<_Err> && is_move_constructible_v<_Err>) { - auto __swap_val_unex_impl = [&](expected& __with_val, expected& __with_err) { - std::construct_at(std::addressof(__with_val.__union_.__unex_), std::move(__with_err.__union_.__unex_)); - std::destroy_at(std::addressof(__with_err.__union_.__unex_)); - __with_val.__has_val_ = false; - __with_err.__has_val_ = true; + auto __swap_val_unex_impl = [](expected& __with_val, expected& __with_err) { + // May throw, but will re-engage `__with_val` in that case. + __with_val.__reinit_expected(unexpect, std::move(__with_err.__unex())); + // Will not throw. + __with_err.__reinit_expected(in_place); }; - if (__has_val_) { - if (!__rhs.__has_val_) { + if (this->__has_val()) { + if (!__rhs.__has_val()) { __swap_val_unex_impl(*this, __rhs); } } else { - if (__rhs.__has_val_) { + if (__rhs.__has_val()) { __swap_val_unex_impl(__rhs, *this); } else { using std::swap; - swap(__union_.__unex_, __rhs.__union_.__unex_); + swap(this->__unex(), __rhs.__unex()); } } } - _LIBCPP_HIDE_FROM_ABI friend constexpr void swap(expected& __x, expected& __y) - noexcept(noexcept(__x.swap(__y))) + _LIBCPP_HIDE_FROM_ABI friend constexpr void swap(expected& __x, expected& __y) noexcept(noexcept(__x.swap(__y))) requires requires { __x.swap(__y); } { __x.swap(__y); } // [expected.void.obs], observers - _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return __has_val_; } + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return this->__has_val(); } - _LIBCPP_HIDE_FROM_ABI constexpr bool has_value() const noexcept { return __has_val_; } + _LIBCPP_HIDE_FROM_ABI constexpr bool has_value() const noexcept { return this->__has_val(); } _LIBCPP_HIDE_FROM_ABI constexpr void operator*() const noexcept { - _LIBCPP_ASSERT(__has_val_, "expected::operator* requires the expected to contain a value"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + this->__has_val(), "expected::operator* requires the expected to contain a value"); } _LIBCPP_HIDE_FROM_ABI constexpr void value() const& { - if (!__has_val_) { - __expected::__throw_bad_expected_access<_Err>(__union_.__unex_); + static_assert(is_copy_constructible_v<_Err>); + if (!this->__has_val()) { + std::__throw_bad_expected_access<_Err>(this->__unex()); } } _LIBCPP_HIDE_FROM_ABI constexpr void value() && { - if (!__has_val_) { - __expected::__throw_bad_expected_access<_Err>(std::move(__union_.__unex_)); + static_assert(is_copy_constructible_v<_Err> && is_move_constructible_v<_Err>); + if (!this->__has_val()) { + std::__throw_bad_expected_access<_Err>(std::move(this->__unex())); } } _LIBCPP_HIDE_FROM_ABI constexpr const _Err& error() const& noexcept { - _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); - return __union_.__unex_; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !this->__has_val(), "expected::error requires the expected to contain an error"); + return this->__unex(); } _LIBCPP_HIDE_FROM_ABI constexpr _Err& error() & noexcept { - _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); - return __union_.__unex_; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !this->__has_val(), "expected::error requires the expected to contain an error"); + return this->__unex(); } _LIBCPP_HIDE_FROM_ABI constexpr const _Err&& error() const&& noexcept { - _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); - return std::move(__union_.__unex_); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !this->__has_val(), "expected::error requires the expected to contain an error"); + return std::move(this->__unex()); } _LIBCPP_HIDE_FROM_ABI constexpr _Err&& error() && noexcept { - _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); - return std::move(__union_.__unex_); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !this->__has_val(), "expected::error requires the expected to contain an error"); + return std::move(this->__unex()); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Err error_or(_Up&& __error) const& { + static_assert(is_copy_constructible_v<_Err>, "error_type has to be copy constructible"); + static_assert(is_convertible_v<_Up, _Err>, "argument has to be convertible to error_type"); + if (has_value()) { + return std::forward<_Up>(__error); + } + return error(); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Err error_or(_Up&& __error) && { + static_assert(is_move_constructible_v<_Err>, "error_type has to be move constructible"); + static_assert(is_convertible_v<_Up, _Err>, "argument has to be convertible to error_type"); + if (has_value()) { + return std::forward<_Up>(__error); + } + return std::move(error()); + } + + // [expected.void.monadic], monadic + template + requires is_constructible_v<_Err, _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) & { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f() must be a specialization of std::expected"); + static_assert( + is_same_v, "The result of f() must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f)); + } + return _Up(unexpect, error()); + } + + template + requires is_constructible_v<_Err, const _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const& { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f() must be a specialization of std::expected"); + static_assert( + is_same_v, "The result of f() must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f)); + } + return _Up(unexpect, error()); + } + + template + requires is_constructible_v<_Err, _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) && { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f() must be a specialization of std::expected"); + static_assert( + is_same_v, "The result of f() must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f)); + } + return _Up(unexpect, std::move(error())); + } + + template + requires is_constructible_v<_Err, const _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const&& { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f() must be a specialization of std::expected"); + static_assert( + is_same_v, "The result of f() must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f)); + } + return _Up(unexpect, std::move(error())); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) & { + using _Gp = remove_cvref_t>; + static_assert(__is_std_expected<_Gp>::value, "The result of f(error()) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(error()) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(); + } + return std::invoke(std::forward<_Func>(__f), error()); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) const& { + using _Gp = remove_cvref_t>; + static_assert(__is_std_expected<_Gp>::value, "The result of f(error()) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(error()) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(); + } + return std::invoke(std::forward<_Func>(__f), error()); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) && { + using _Gp = remove_cvref_t>; + static_assert( + __is_std_expected<_Gp>::value, "The result of f(std::move(error())) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(error())) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(); + } + return std::invoke(std::forward<_Func>(__f), std::move(error())); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) const&& { + using _Gp = remove_cvref_t>; + static_assert( + __is_std_expected<_Gp>::value, "The result of f(std::move(error())) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(error())) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(); + } + return std::invoke(std::forward<_Func>(__f), std::move(error())); + } + + template + requires is_constructible_v<_Err, _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) & { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, error()); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>(__expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f)); + } else { + std::invoke(std::forward<_Func>(__f)); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, const _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const& { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, error()); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>(__expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f)); + } else { + std::invoke(std::forward<_Func>(__f)); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) && { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, std::move(error())); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>(__expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f)); + } else { + std::invoke(std::forward<_Func>(__f)); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, const _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const&& { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, std::move(error())); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>(__expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f)); + } else { + std::invoke(std::forward<_Func>(__f)); + return expected<_Up, _Err>(); + } + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) & { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(error()) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(); + } + return expected<_Tp, _Gp>(__expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), error()); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) const& { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(error()) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(); + } + return expected<_Tp, _Gp>(__expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), error()); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) && { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(std::move(error())) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(); + } + return expected<_Tp, _Gp>( + __expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), std::move(error())); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) const&& { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(std::move(error())) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(); + } + return expected<_Tp, _Gp>( + __expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), std::move(error())); } // [expected.void.eq], equality operators template requires is_void_v<_T2> _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const expected& __x, const expected<_T2, _E2>& __y) { - if (__x.__has_val_ != __y.__has_val_) { + if (__x.__has_val() != __y.__has_val()) { return false; } else { - return __x.__has_val_ || static_cast(__x.__union_.__unex_ == __y.__union_.__unex_); + return __x.__has_val() || static_cast(__x.__unex() == __y.__unex()); } } template _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const expected& __x, const unexpected<_E2>& __y) { - return !__x.__has_val_ && static_cast(__x.__union_.__unex_ == __y.error()); + return !__x.__has_val() && static_cast(__x.__unex() == __y.error()); } - -private: - struct __empty_t {}; - // use named union because [[no_unique_address]] cannot be applied to an unnamed union - _LIBCPP_NO_UNIQUE_ADDRESS union __union_t { - _LIBCPP_HIDE_FROM_ABI constexpr __union_t() : __empty_() {} - - _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() - requires(is_trivially_destructible_v<_Err>) - = default; - - // the expected's destructor handles this - _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() - requires(!is_trivially_destructible_v<_Err>) - {} - - _LIBCPP_NO_UNIQUE_ADDRESS __empty_t __empty_; - _LIBCPP_NO_UNIQUE_ADDRESS _Err __unex_; - } __union_; - - bool __has_val_; }; _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 23 +_LIBCPP_POP_MACROS + #endif // _LIBCPP___EXPECTED_EXPECTED_H diff --git a/include/c++/v1/__expected/unexpect.h b/include/c++/v1/__expected/unexpect.h index 20bafc11..df52787d 100644 --- a/include/c++/v1/__expected/unexpect.h +++ b/include/c++/v1/__expected/unexpect.h @@ -20,7 +20,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD struct unexpect_t { - _LIBCPP_HIDE_FROM_ABI explicit unexpect_t() = default; + explicit unexpect_t() = default; }; inline constexpr unexpect_t unexpect{}; diff --git a/include/c++/v1/__expected/unexpected.h b/include/c++/v1/__expected/unexpected.h index 075963a8..c7fe3c52 100644 --- a/include/c++/v1/__expected/unexpected.h +++ b/include/c++/v1/__expected/unexpected.h @@ -31,6 +31,9 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + #if _LIBCPP_STD_VER >= 23 _LIBCPP_BEGIN_NAMESPACE_STD @@ -119,4 +122,6 @@ _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 23 +_LIBCPP_POP_MACROS + #endif // _LIBCPP___EXPECTED_UNEXPECTED_H diff --git a/include/c++/v1/__filesystem/copy_options.h b/include/c++/v1/__filesystem/copy_options.h index 96c75358..097eebe6 100644 --- a/include/c++/v1/__filesystem/copy_options.h +++ b/include/c++/v1/__filesystem/copy_options.h @@ -10,75 +10,60 @@ #ifndef _LIBCPP___FILESYSTEM_COPY_OPTIONS_H #define _LIBCPP___FILESYSTEM_COPY_OPTIONS_H -#include <__availability> #include <__config> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH - -enum class _LIBCPP_ENUM_VIS copy_options : unsigned short { - none = 0, - skip_existing = 1, - overwrite_existing = 2, - update_existing = 4, - recursive = 8, - copy_symlinks = 16, - skip_symlinks = 32, - directories_only = 64, - create_symlinks = 128, - create_hard_links = 256, +enum class copy_options : unsigned short { + none = 0, + skip_existing = 1, + overwrite_existing = 2, + update_existing = 4, + recursive = 8, + copy_symlinks = 16, + skip_symlinks = 32, + directories_only = 64, + create_symlinks = 128, + create_hard_links = 256, __in_recursive_copy = 512, }; -_LIBCPP_INLINE_VISIBILITY -inline constexpr copy_options operator&(copy_options __lhs, copy_options __rhs) { - return static_cast(static_cast(__lhs) & - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator&(copy_options __lhs, copy_options __rhs) { + return static_cast(static_cast(__lhs) & static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr copy_options operator|(copy_options __lhs, copy_options __rhs) { - return static_cast(static_cast(__lhs) | - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator|(copy_options __lhs, copy_options __rhs) { + return static_cast(static_cast(__lhs) | static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr copy_options operator^(copy_options __lhs, copy_options __rhs) { - return static_cast(static_cast(__lhs) ^ - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator^(copy_options __lhs, copy_options __rhs) { + return static_cast(static_cast(__lhs) ^ static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr copy_options operator~(copy_options __lhs) { +_LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator~(copy_options __lhs) { return static_cast(~static_cast(__lhs)); } -_LIBCPP_INLINE_VISIBILITY -inline copy_options& operator&=(copy_options& __lhs, copy_options __rhs) { +_LIBCPP_HIDE_FROM_ABI inline copy_options& operator&=(copy_options& __lhs, copy_options __rhs) { return __lhs = __lhs & __rhs; } -_LIBCPP_INLINE_VISIBILITY -inline copy_options& operator|=(copy_options& __lhs, copy_options __rhs) { +_LIBCPP_HIDE_FROM_ABI inline copy_options& operator|=(copy_options& __lhs, copy_options __rhs) { return __lhs = __lhs | __rhs; } -_LIBCPP_INLINE_VISIBILITY -inline copy_options& operator^=(copy_options& __lhs, copy_options __rhs) { +_LIBCPP_HIDE_FROM_ABI inline copy_options& operator^=(copy_options& __lhs, copy_options __rhs) { return __lhs = __lhs ^ __rhs; } -_LIBCPP_AVAILABILITY_FILESYSTEM_POP - _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_COPY_OPTIONS_H diff --git a/include/c++/v1/__filesystem/directory_entry.h b/include/c++/v1/__filesystem/directory_entry.h index b17eaaab..2c638e7e 100644 --- a/include/c++/v1/__filesystem/directory_entry.h +++ b/include/c++/v1/__filesystem/directory_entry.h @@ -10,10 +10,9 @@ #ifndef _LIBCPP___FILESYSTEM_DIRECTORY_ENTRY_H #define _LIBCPP___FILESYSTEM_DIRECTORY_ENTRY_H -#include <__availability> #include <__chrono/time_point.h> +#include <__compare/ordering.h> #include <__config> -#include <__errc> #include <__filesystem/file_status.h> #include <__filesystem/file_time_type.h> #include <__filesystem/file_type.h> @@ -21,11 +20,12 @@ #include <__filesystem/operations.h> #include <__filesystem/path.h> #include <__filesystem/perms.h> +#include <__fwd/ostream.h> +#include <__system_error/errc.h> +#include <__system_error/error_code.h> +#include <__utility/move.h> #include <__utility/unreachable.h> #include -#include -#include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -34,231 +34,160 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM) _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH - +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_PUSH class directory_entry { - typedef _VSTD_FS::path _Path; + typedef filesystem::path _Path; public: // constructors and destructors - directory_entry() noexcept = default; - directory_entry(directory_entry const&) = default; - directory_entry(directory_entry&&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI directory_entry() noexcept = default; + _LIBCPP_HIDE_FROM_ABI directory_entry(directory_entry const&) = default; + _LIBCPP_HIDE_FROM_ABI directory_entry(directory_entry&&) noexcept = default; - _LIBCPP_INLINE_VISIBILITY - explicit directory_entry(_Path const& __p) : __p_(__p) { + _LIBCPP_HIDE_FROM_ABI explicit directory_entry(_Path const& __p) : __p_(__p) { error_code __ec; __refresh(&__ec); } - _LIBCPP_INLINE_VISIBILITY - directory_entry(_Path const& __p, error_code& __ec) : __p_(__p) { - __refresh(&__ec); - } + _LIBCPP_HIDE_FROM_ABI directory_entry(_Path const& __p, error_code& __ec) : __p_(__p) { __refresh(&__ec); } - ~directory_entry() {} + _LIBCPP_HIDE_FROM_ABI ~directory_entry() {} - directory_entry& operator=(directory_entry const&) = default; - directory_entry& operator=(directory_entry&&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI directory_entry& operator=(directory_entry const&) = default; + _LIBCPP_HIDE_FROM_ABI directory_entry& operator=(directory_entry&&) noexcept = default; - _LIBCPP_INLINE_VISIBILITY - void assign(_Path const& __p) { + _LIBCPP_HIDE_FROM_ABI void assign(_Path const& __p) { __p_ = __p; error_code __ec; __refresh(&__ec); } - _LIBCPP_INLINE_VISIBILITY - void assign(_Path const& __p, error_code& __ec) { + _LIBCPP_HIDE_FROM_ABI void assign(_Path const& __p, error_code& __ec) { __p_ = __p; __refresh(&__ec); } - _LIBCPP_INLINE_VISIBILITY - void replace_filename(_Path const& __p) { + _LIBCPP_HIDE_FROM_ABI void replace_filename(_Path const& __p) { __p_.replace_filename(__p); error_code __ec; __refresh(&__ec); } - _LIBCPP_INLINE_VISIBILITY - void replace_filename(_Path const& __p, error_code& __ec) { + _LIBCPP_HIDE_FROM_ABI void replace_filename(_Path const& __p, error_code& __ec) { __p_ = __p_.parent_path() / __p; __refresh(&__ec); } - _LIBCPP_INLINE_VISIBILITY - void refresh() { __refresh(); } + _LIBCPP_HIDE_FROM_ABI void refresh() { __refresh(); } - _LIBCPP_INLINE_VISIBILITY - void refresh(error_code& __ec) noexcept { __refresh(&__ec); } + _LIBCPP_HIDE_FROM_ABI void refresh(error_code& __ec) noexcept { __refresh(&__ec); } - _LIBCPP_INLINE_VISIBILITY - _Path const& path() const noexcept { return __p_; } + _LIBCPP_HIDE_FROM_ABI _Path const& path() const noexcept { return __p_; } - _LIBCPP_INLINE_VISIBILITY - operator const _Path&() const noexcept { return __p_; } + _LIBCPP_HIDE_FROM_ABI operator const _Path&() const noexcept { return __p_; } - _LIBCPP_INLINE_VISIBILITY - bool exists() const { return _VSTD_FS::exists(file_status{__get_ft()}); } + _LIBCPP_HIDE_FROM_ABI bool exists() const { return filesystem::exists(file_status{__get_ft()}); } - _LIBCPP_INLINE_VISIBILITY - bool exists(error_code& __ec) const noexcept { - return _VSTD_FS::exists(file_status{__get_ft(&__ec)}); + _LIBCPP_HIDE_FROM_ABI bool exists(error_code& __ec) const noexcept { + return filesystem::exists(file_status{__get_ft(&__ec)}); } - _LIBCPP_INLINE_VISIBILITY - bool is_block_file() const { return __get_ft() == file_type::block; } + _LIBCPP_HIDE_FROM_ABI bool is_block_file() const { return __get_ft() == file_type::block; } - _LIBCPP_INLINE_VISIBILITY - bool is_block_file(error_code& __ec) const noexcept { + _LIBCPP_HIDE_FROM_ABI bool is_block_file(error_code& __ec) const noexcept { return __get_ft(&__ec) == file_type::block; } - _LIBCPP_INLINE_VISIBILITY - bool is_character_file() const { return __get_ft() == file_type::character; } + _LIBCPP_HIDE_FROM_ABI bool is_character_file() const { return __get_ft() == file_type::character; } - _LIBCPP_INLINE_VISIBILITY - bool is_character_file(error_code& __ec) const noexcept { + _LIBCPP_HIDE_FROM_ABI bool is_character_file(error_code& __ec) const noexcept { return __get_ft(&__ec) == file_type::character; } - _LIBCPP_INLINE_VISIBILITY - bool is_directory() const { return __get_ft() == file_type::directory; } + _LIBCPP_HIDE_FROM_ABI bool is_directory() const { return __get_ft() == file_type::directory; } - _LIBCPP_INLINE_VISIBILITY - bool is_directory(error_code& __ec) const noexcept { + _LIBCPP_HIDE_FROM_ABI bool is_directory(error_code& __ec) const noexcept { return __get_ft(&__ec) == file_type::directory; } - _LIBCPP_INLINE_VISIBILITY - bool is_fifo() const { return __get_ft() == file_type::fifo; } + _LIBCPP_HIDE_FROM_ABI bool is_fifo() const { return __get_ft() == file_type::fifo; } - _LIBCPP_INLINE_VISIBILITY - bool is_fifo(error_code& __ec) const noexcept { - return __get_ft(&__ec) == file_type::fifo; - } + _LIBCPP_HIDE_FROM_ABI bool is_fifo(error_code& __ec) const noexcept { return __get_ft(&__ec) == file_type::fifo; } - _LIBCPP_INLINE_VISIBILITY - bool is_other() const { return _VSTD_FS::is_other(file_status{__get_ft()}); } + _LIBCPP_HIDE_FROM_ABI bool is_other() const { return filesystem::is_other(file_status{__get_ft()}); } - _LIBCPP_INLINE_VISIBILITY - bool is_other(error_code& __ec) const noexcept { - return _VSTD_FS::is_other(file_status{__get_ft(&__ec)}); + _LIBCPP_HIDE_FROM_ABI bool is_other(error_code& __ec) const noexcept { + return filesystem::is_other(file_status{__get_ft(&__ec)}); } - _LIBCPP_INLINE_VISIBILITY - bool is_regular_file() const { return __get_ft() == file_type::regular; } + _LIBCPP_HIDE_FROM_ABI bool is_regular_file() const { return __get_ft() == file_type::regular; } - _LIBCPP_INLINE_VISIBILITY - bool is_regular_file(error_code& __ec) const noexcept { + _LIBCPP_HIDE_FROM_ABI bool is_regular_file(error_code& __ec) const noexcept { return __get_ft(&__ec) == file_type::regular; } - _LIBCPP_INLINE_VISIBILITY - bool is_socket() const { return __get_ft() == file_type::socket; } + _LIBCPP_HIDE_FROM_ABI bool is_socket() const { return __get_ft() == file_type::socket; } - _LIBCPP_INLINE_VISIBILITY - bool is_socket(error_code& __ec) const noexcept { - return __get_ft(&__ec) == file_type::socket; - } + _LIBCPP_HIDE_FROM_ABI bool is_socket(error_code& __ec) const noexcept { return __get_ft(&__ec) == file_type::socket; } - _LIBCPP_INLINE_VISIBILITY - bool is_symlink() const { return __get_sym_ft() == file_type::symlink; } + _LIBCPP_HIDE_FROM_ABI bool is_symlink() const { return __get_sym_ft() == file_type::symlink; } - _LIBCPP_INLINE_VISIBILITY - bool is_symlink(error_code& __ec) const noexcept { + _LIBCPP_HIDE_FROM_ABI bool is_symlink(error_code& __ec) const noexcept { return __get_sym_ft(&__ec) == file_type::symlink; } - _LIBCPP_INLINE_VISIBILITY - uintmax_t file_size() const { return __get_size(); } + _LIBCPP_HIDE_FROM_ABI uintmax_t file_size() const { return __get_size(); } - _LIBCPP_INLINE_VISIBILITY - uintmax_t file_size(error_code& __ec) const noexcept { - return __get_size(&__ec); - } + _LIBCPP_HIDE_FROM_ABI uintmax_t file_size(error_code& __ec) const noexcept { return __get_size(&__ec); } - _LIBCPP_INLINE_VISIBILITY - uintmax_t hard_link_count() const { return __get_nlink(); } + _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count() const { return __get_nlink(); } - _LIBCPP_INLINE_VISIBILITY - uintmax_t hard_link_count(error_code& __ec) const noexcept { - return __get_nlink(&__ec); - } + _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(error_code& __ec) const noexcept { return __get_nlink(&__ec); } - _LIBCPP_INLINE_VISIBILITY - file_time_type last_write_time() const { return __get_write_time(); } + _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time() const { return __get_write_time(); } - _LIBCPP_INLINE_VISIBILITY - file_time_type last_write_time(error_code& __ec) const noexcept { + _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(error_code& __ec) const noexcept { return __get_write_time(&__ec); } - _LIBCPP_INLINE_VISIBILITY - file_status status() const { return __get_status(); } + _LIBCPP_HIDE_FROM_ABI file_status status() const { return __get_status(); } - _LIBCPP_INLINE_VISIBILITY - file_status status(error_code& __ec) const noexcept { - return __get_status(&__ec); - } + _LIBCPP_HIDE_FROM_ABI file_status status(error_code& __ec) const noexcept { return __get_status(&__ec); } - _LIBCPP_INLINE_VISIBILITY - file_status symlink_status() const { return __get_symlink_status(); } + _LIBCPP_HIDE_FROM_ABI file_status symlink_status() const { return __get_symlink_status(); } - _LIBCPP_INLINE_VISIBILITY - file_status symlink_status(error_code& __ec) const noexcept { + _LIBCPP_HIDE_FROM_ABI file_status symlink_status(error_code& __ec) const noexcept { return __get_symlink_status(&__ec); } + _LIBCPP_HIDE_FROM_ABI bool operator==(directory_entry const& __rhs) const noexcept { return __p_ == __rhs.__p_; } - _LIBCPP_INLINE_VISIBILITY - bool operator==(directory_entry const& __rhs) const noexcept { - return __p_ == __rhs.__p_; - } - -#if _LIBCPP_STD_VER <= 17 - _LIBCPP_INLINE_VISIBILITY - bool operator!=(directory_entry const& __rhs) const noexcept { - return __p_ != __rhs.__p_; - } +# if _LIBCPP_STD_VER <= 17 + _LIBCPP_HIDE_FROM_ABI bool operator!=(directory_entry const& __rhs) const noexcept { return __p_ != __rhs.__p_; } - _LIBCPP_INLINE_VISIBILITY - bool operator<(directory_entry const& __rhs) const noexcept { - return __p_ < __rhs.__p_; - } + _LIBCPP_HIDE_FROM_ABI bool operator<(directory_entry const& __rhs) const noexcept { return __p_ < __rhs.__p_; } - _LIBCPP_INLINE_VISIBILITY - bool operator<=(directory_entry const& __rhs) const noexcept { - return __p_ <= __rhs.__p_; - } + _LIBCPP_HIDE_FROM_ABI bool operator<=(directory_entry const& __rhs) const noexcept { return __p_ <= __rhs.__p_; } - _LIBCPP_INLINE_VISIBILITY - bool operator>(directory_entry const& __rhs) const noexcept { - return __p_ > __rhs.__p_; - } + _LIBCPP_HIDE_FROM_ABI bool operator>(directory_entry const& __rhs) const noexcept { return __p_ > __rhs.__p_; } - _LIBCPP_INLINE_VISIBILITY - bool operator>=(directory_entry const& __rhs) const noexcept { - return __p_ >= __rhs.__p_; - } + _LIBCPP_HIDE_FROM_ABI bool operator>=(directory_entry const& __rhs) const noexcept { return __p_ >= __rhs.__p_; } -#else // _LIBCPP_STD_VER <= 17 +# else // _LIBCPP_STD_VER <= 17 - _LIBCPP_HIDE_FROM_ABI - strong_ordering operator<=>(const directory_entry& __rhs) const noexcept { + _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(const directory_entry& __rhs) const noexcept { return __p_ <=> __rhs.__p_; } -#endif // _LIBCPP_STD_VER <= 17 +# endif // _LIBCPP_STD_VER <= 17 template - _LIBCPP_INLINE_VISIBILITY - friend basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const directory_entry& __d) { + _LIBCPP_HIDE_FROM_ABI friend basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, const directory_entry& __d) { return __os << __d.path(); } @@ -285,23 +214,20 @@ class directory_entry { file_type __type_; _CacheType __cache_type_; - _LIBCPP_INLINE_VISIBILITY - __cached_data() noexcept { __reset(); } + _LIBCPP_HIDE_FROM_ABI __cached_data() noexcept { __reset(); } - _LIBCPP_INLINE_VISIBILITY - void __reset() { + _LIBCPP_HIDE_FROM_ABI void __reset() { __cache_type_ = _Empty; - __type_ = file_type::none; + __type_ = file_type::none; __sym_perms_ = __non_sym_perms_ = perms::unknown; __size_ = __nlink_ = uintmax_t(-1); - __write_time_ = file_time_type::min(); + __write_time_ = file_time_type::min(); } }; - _LIBCPP_INLINE_VISIBILITY - static __cached_data __create_iter_result(file_type __ft) { + _LIBCPP_HIDE_FROM_ABI static __cached_data __create_iter_result(file_type __ft) { __cached_data __data; - __data.__type_ = __ft; + __data.__type_ = __ft; __data.__cache_type_ = [&]() { switch (__ft) { case file_type::none: @@ -315,17 +241,14 @@ class directory_entry { return __data; } - _LIBCPP_INLINE_VISIBILITY - void __assign_iter_entry(_Path&& __p, __cached_data __dt) { - __p_ = _VSTD::move(__p); + _LIBCPP_HIDE_FROM_ABI void __assign_iter_entry(_Path&& __p, __cached_data __dt) { + __p_ = std::move(__p); __data_ = __dt; } - _LIBCPP_FUNC_VIS - error_code __do_refresh() noexcept; + _LIBCPP_EXPORTED_FROM_ABI error_code __do_refresh() noexcept; - _LIBCPP_INLINE_VISIBILITY - static bool __is_dne_error(error_code const& __ec) { + _LIBCPP_HIDE_FROM_ABI static bool __is_dne_error(error_code const& __ec) { if (!__ec) return true; switch (static_cast(__ec.value())) { @@ -337,9 +260,8 @@ class directory_entry { } } - _LIBCPP_INLINE_VISIBILITY - void __handle_error(const char* __msg, error_code* __dest_ec, - error_code const& __ec, bool __allow_dne = false) const { + _LIBCPP_HIDE_FROM_ABI void + __handle_error(const char* __msg, error_code* __dest_ec, error_code const& __ec, bool __allow_dne = false) const { if (__dest_ec) { *__dest_ec = __ec; return; @@ -348,14 +270,14 @@ class directory_entry { __throw_filesystem_error(__msg, __p_, __ec); } - _LIBCPP_INLINE_VISIBILITY - void __refresh(error_code* __ec = nullptr) { - __handle_error("in directory_entry::refresh", __ec, __do_refresh(), + _LIBCPP_HIDE_FROM_ABI void __refresh(error_code* __ec = nullptr) { + __handle_error("in directory_entry::refresh", + __ec, + __do_refresh(), /*allow_dne*/ true); } - _LIBCPP_INLINE_VISIBILITY - file_type __get_sym_ft(error_code* __ec = nullptr) const { + _LIBCPP_HIDE_FROM_ABI file_type __get_sym_ft(error_code* __ec = nullptr) const { switch (__data_.__cache_type_) { case _Empty: return __symlink_status(__p_, __ec).type(); @@ -368,7 +290,7 @@ class directory_entry { case _IterNonSymlink: case _RefreshNonSymlink: file_status __st(__data_.__type_); - if (__ec && !_VSTD_FS::exists(__st)) + if (__ec && !filesystem::exists(__st)) *__ec = make_error_code(errc::no_such_file_or_directory); else if (__ec) __ec->clear(); @@ -377,8 +299,7 @@ class directory_entry { __libcpp_unreachable(); } - _LIBCPP_INLINE_VISIBILITY - file_type __get_ft(error_code* __ec = nullptr) const { + _LIBCPP_HIDE_FROM_ABI file_type __get_ft(error_code* __ec = nullptr) const { switch (__data_.__cache_type_) { case _Empty: case _IterSymlink: @@ -388,7 +309,7 @@ class directory_entry { case _RefreshNonSymlink: case _RefreshSymlink: { file_status __st(__data_.__type_); - if (__ec && !_VSTD_FS::exists(__st)) + if (__ec && !filesystem::exists(__st)) *__ec = make_error_code(errc::no_such_file_or_directory); else if (__ec) __ec->clear(); @@ -398,8 +319,7 @@ class directory_entry { __libcpp_unreachable(); } - _LIBCPP_INLINE_VISIBILITY - file_status __get_status(error_code* __ec = nullptr) const { + _LIBCPP_HIDE_FROM_ABI file_status __get_status(error_code* __ec = nullptr) const { switch (__data_.__cache_type_) { case _Empty: case _IterNonSymlink: @@ -413,8 +333,7 @@ class directory_entry { __libcpp_unreachable(); } - _LIBCPP_INLINE_VISIBILITY - file_status __get_symlink_status(error_code* __ec = nullptr) const { + _LIBCPP_HIDE_FROM_ABI file_status __get_symlink_status(error_code* __ec = nullptr) const { switch (__data_.__cache_type_) { case _Empty: case _IterNonSymlink: @@ -429,24 +348,21 @@ class directory_entry { __libcpp_unreachable(); } - _LIBCPP_INLINE_VISIBILITY - uintmax_t __get_size(error_code* __ec = nullptr) const { + _LIBCPP_HIDE_FROM_ABI uintmax_t __get_size(error_code* __ec = nullptr) const { switch (__data_.__cache_type_) { case _Empty: case _IterNonSymlink: case _IterSymlink: case _RefreshSymlinkUnresolved: - return _VSTD_FS::__file_size(__p_, __ec); + return filesystem::__file_size(__p_, __ec); case _RefreshSymlink: case _RefreshNonSymlink: { error_code __m_ec; file_status __st(__get_ft(&__m_ec)); __handle_error("in directory_entry::file_size", __ec, __m_ec); - if (_VSTD_FS::exists(__st) && !_VSTD_FS::is_regular_file(__st)) { - errc __err_kind = _VSTD_FS::is_directory(__st) ? errc::is_a_directory - : errc::not_supported; - __handle_error("in directory_entry::file_size", __ec, - make_error_code(__err_kind)); + if (filesystem::exists(__st) && !filesystem::is_regular_file(__st)) { + errc __err_kind = filesystem::is_directory(__st) ? errc::is_a_directory : errc::not_supported; + __handle_error("in directory_entry::file_size", __ec, make_error_code(__err_kind)); } return __data_.__size_; } @@ -454,14 +370,13 @@ class directory_entry { __libcpp_unreachable(); } - _LIBCPP_INLINE_VISIBILITY - uintmax_t __get_nlink(error_code* __ec = nullptr) const { + _LIBCPP_HIDE_FROM_ABI uintmax_t __get_nlink(error_code* __ec = nullptr) const { switch (__data_.__cache_type_) { case _Empty: case _IterNonSymlink: case _IterSymlink: case _RefreshSymlinkUnresolved: - return _VSTD_FS::__hard_link_count(__p_, __ec); + return filesystem::__hard_link_count(__p_, __ec); case _RefreshSymlink: case _RefreshNonSymlink: { error_code __m_ec; @@ -473,23 +388,20 @@ class directory_entry { __libcpp_unreachable(); } - _LIBCPP_INLINE_VISIBILITY - file_time_type __get_write_time(error_code* __ec = nullptr) const { + _LIBCPP_HIDE_FROM_ABI file_time_type __get_write_time(error_code* __ec = nullptr) const { switch (__data_.__cache_type_) { case _Empty: case _IterNonSymlink: case _IterSymlink: case _RefreshSymlinkUnresolved: - return _VSTD_FS::__last_write_time(__p_, __ec); + return filesystem::__last_write_time(__p_, __ec); case _RefreshSymlink: case _RefreshNonSymlink: { error_code __m_ec; file_status __st(__get_ft(&__m_ec)); __handle_error("in directory_entry::last_write_time", __ec, __m_ec); - if (_VSTD_FS::exists(__st) && - __data_.__write_time_ == file_time_type::min()) - __handle_error("in directory_entry::last_write_time", __ec, - make_error_code(errc::value_too_large)); + if (filesystem::exists(__st) && __data_.__write_time_ == file_time_type::min()) + __handle_error("in directory_entry::last_write_time", __ec, make_error_code(errc::value_too_large)); return __data_.__write_time_; } } @@ -503,24 +415,21 @@ class directory_entry { class __dir_element_proxy { public: - inline _LIBCPP_INLINE_VISIBILITY directory_entry operator*() { - return _VSTD::move(__elem_); - } + inline _LIBCPP_HIDE_FROM_ABI directory_entry operator*() { return std::move(__elem_); } private: friend class directory_iterator; friend class recursive_directory_iterator; - explicit __dir_element_proxy(directory_entry const& __e) : __elem_(__e) {} - __dir_element_proxy(__dir_element_proxy&& __o) - : __elem_(_VSTD::move(__o.__elem_)) {} + _LIBCPP_HIDE_FROM_ABI explicit __dir_element_proxy(directory_entry const& __e) : __elem_(__e) {} + _LIBCPP_HIDE_FROM_ABI __dir_element_proxy(__dir_element_proxy&& __o) : __elem_(std::move(__o.__elem_)) {} directory_entry __elem_; }; -_LIBCPP_AVAILABILITY_FILESYSTEM_POP +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_POP _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM) _LIBCPP_POP_MACROS diff --git a/include/c++/v1/__filesystem/directory_iterator.h b/include/c++/v1/__filesystem/directory_iterator.h index 5ff2f01a..e0246d80 100644 --- a/include/c++/v1/__filesystem/directory_iterator.h +++ b/include/c++/v1/__filesystem/directory_iterator.h @@ -11,27 +11,31 @@ #define _LIBCPP___FILESYSTEM_DIRECTORY_ITERATOR_H #include <__assert> -#include <__availability> #include <__config> #include <__filesystem/directory_entry.h> #include <__filesystem/directory_options.h> #include <__filesystem/path.h> +#include <__iterator/default_sentinel.h> #include <__iterator/iterator_traits.h> #include <__memory/shared_ptr.h> #include <__ranges/enable_borrowed_range.h> #include <__ranges/enable_view.h> +#include <__system_error/error_code.h> +#include <__utility/move.h> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM) _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_PUSH class _LIBCPP_HIDDEN __dir_stream; class directory_iterator { @@ -43,123 +47,105 @@ class directory_iterator { typedef input_iterator_tag iterator_category; public: - //ctor & dtor - _LIBCPP_HIDE_FROM_ABI - directory_iterator() noexcept {} + // ctor & dtor + _LIBCPP_HIDE_FROM_ABI directory_iterator() noexcept {} - _LIBCPP_HIDE_FROM_ABI - explicit directory_iterator(const path& __p) - : directory_iterator(__p, nullptr) {} + _LIBCPP_HIDE_FROM_ABI explicit directory_iterator(const path& __p) : directory_iterator(__p, nullptr) {} - _LIBCPP_HIDE_FROM_ABI - directory_iterator(const path& __p, directory_options __opts) + _LIBCPP_HIDE_FROM_ABI directory_iterator(const path& __p, directory_options __opts) : directory_iterator(__p, nullptr, __opts) {} - _LIBCPP_HIDE_FROM_ABI - directory_iterator(const path& __p, error_code& __ec) - : directory_iterator(__p, &__ec) {} + _LIBCPP_HIDE_FROM_ABI directory_iterator(const path& __p, error_code& __ec) : directory_iterator(__p, &__ec) {} - _LIBCPP_HIDE_FROM_ABI - directory_iterator(const path& __p, directory_options __opts, - error_code& __ec) + _LIBCPP_HIDE_FROM_ABI directory_iterator(const path& __p, directory_options __opts, error_code& __ec) : directory_iterator(__p, &__ec, __opts) {} - _LIBCPP_HIDE_FROM_ABI directory_iterator(const directory_iterator&) = default; - _LIBCPP_HIDE_FROM_ABI directory_iterator(directory_iterator&&) = default; + _LIBCPP_HIDE_FROM_ABI directory_iterator(const directory_iterator&) = default; + _LIBCPP_HIDE_FROM_ABI directory_iterator(directory_iterator&&) = default; _LIBCPP_HIDE_FROM_ABI directory_iterator& operator=(const directory_iterator&) = default; - _LIBCPP_HIDE_FROM_ABI - directory_iterator& operator=(directory_iterator&& __o) noexcept { + _LIBCPP_HIDE_FROM_ABI directory_iterator& operator=(directory_iterator&& __o) noexcept { // non-default implementation provided to support self-move assign. if (this != &__o) { - __imp_ = _VSTD::move(__o.__imp_); + __imp_ = std::move(__o.__imp_); } return *this; } _LIBCPP_HIDE_FROM_ABI ~directory_iterator() = default; - _LIBCPP_HIDE_FROM_ABI - const directory_entry& operator*() const { - _LIBCPP_ASSERT(__imp_, "The end iterator cannot be dereferenced"); + _LIBCPP_HIDE_FROM_ABI const directory_entry& operator*() const { + // Note: this check duplicates a check in `__dereference()`. + _LIBCPP_ASSERT_NON_NULL(__imp_, "The end iterator cannot be dereferenced"); return __dereference(); } - _LIBCPP_HIDE_FROM_ABI - const directory_entry* operator->() const { return &**this; } + _LIBCPP_HIDE_FROM_ABI const directory_entry* operator->() const { return &**this; } - _LIBCPP_HIDE_FROM_ABI - directory_iterator& operator++() { return __increment(); } + _LIBCPP_HIDE_FROM_ABI directory_iterator& operator++() { return __increment(); } - _LIBCPP_HIDE_FROM_ABI - __dir_element_proxy operator++(int) { + _LIBCPP_HIDE_FROM_ABI __dir_element_proxy operator++(int) { __dir_element_proxy __p(**this); __increment(); return __p; } - _LIBCPP_HIDE_FROM_ABI - directory_iterator& increment(error_code& __ec) { return __increment(&__ec); } + _LIBCPP_HIDE_FROM_ABI directory_iterator& increment(error_code& __ec) { return __increment(&__ec); } + +# if _LIBCPP_STD_VER >= 20 + + _LIBCPP_HIDE_FROM_ABI bool operator==(default_sentinel_t) const noexcept { return *this == directory_iterator(); } + +# endif private: inline _LIBCPP_HIDE_FROM_ABI friend bool - operator==(const directory_iterator& __lhs, - const directory_iterator& __rhs) noexcept; + operator==(const directory_iterator& __lhs, const directory_iterator& __rhs) noexcept; // construct the dir_stream - _LIBCPP_FUNC_VIS - directory_iterator(const path&, error_code*, - directory_options = directory_options::none); + _LIBCPP_EXPORTED_FROM_ABI directory_iterator(const path&, error_code*, directory_options = directory_options::none); - _LIBCPP_FUNC_VIS - directory_iterator& __increment(error_code* __ec = nullptr); + _LIBCPP_EXPORTED_FROM_ABI directory_iterator& __increment(error_code* __ec = nullptr); - _LIBCPP_FUNC_VIS - const directory_entry& __dereference() const; + _LIBCPP_EXPORTED_FROM_ABI const directory_entry& __dereference() const; private: shared_ptr<__dir_stream> __imp_; }; inline _LIBCPP_HIDE_FROM_ABI bool -operator==(const directory_iterator& __lhs, - const directory_iterator& __rhs) noexcept { +operator==(const directory_iterator& __lhs, const directory_iterator& __rhs) noexcept { return __lhs.__imp_ == __rhs.__imp_; } inline _LIBCPP_HIDE_FROM_ABI bool -operator!=(const directory_iterator& __lhs, - const directory_iterator& __rhs) noexcept { +operator!=(const directory_iterator& __lhs, const directory_iterator& __rhs) noexcept { return !(__lhs == __rhs); } // enable directory_iterator range-based for statements -inline _LIBCPP_HIDE_FROM_ABI directory_iterator -begin(directory_iterator __iter) noexcept { - return __iter; -} +inline _LIBCPP_HIDE_FROM_ABI directory_iterator begin(directory_iterator __iter) noexcept { return __iter; } -inline _LIBCPP_HIDE_FROM_ABI directory_iterator -end(directory_iterator) noexcept { - return directory_iterator(); -} +inline _LIBCPP_HIDE_FROM_ABI directory_iterator end(directory_iterator) noexcept { return directory_iterator(); } -_LIBCPP_AVAILABILITY_FILESYSTEM_POP +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_POP _LIBCPP_END_NAMESPACE_FILESYSTEM -#if _LIBCPP_STD_VER > 17 +# if _LIBCPP_STD_VER >= 20 template <> -_LIBCPP_AVAILABILITY_FILESYSTEM -inline constexpr bool _VSTD::ranges::enable_borrowed_range<_VSTD_FS::directory_iterator> = true; +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY inline constexpr bool + std::ranges::enable_borrowed_range = true; template <> -_LIBCPP_AVAILABILITY_FILESYSTEM -inline constexpr bool _VSTD::ranges::enable_view<_VSTD_FS::directory_iterator> = true; +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY inline constexpr bool + std::ranges::enable_view = true; + +# endif // _LIBCPP_STD_VER >= 20 -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM) -#endif // _LIBCPP_CXX03_LANG +_LIBCPP_POP_MACROS #endif // _LIBCPP___FILESYSTEM_DIRECTORY_ITERATOR_H diff --git a/include/c++/v1/__filesystem/directory_options.h b/include/c++/v1/__filesystem/directory_options.h index c5c031a5..d0cd3ebf 100644 --- a/include/c++/v1/__filesystem/directory_options.h +++ b/include/c++/v1/__filesystem/directory_options.h @@ -10,73 +10,48 @@ #ifndef _LIBCPP___FILESYSTEM_DIRECTORY_OPTIONS_H #define _LIBCPP___FILESYSTEM_DIRECTORY_OPTIONS_H -#include <__availability> #include <__config> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH +enum class directory_options : unsigned char { none = 0, follow_directory_symlink = 1, skip_permission_denied = 2 }; -enum class _LIBCPP_ENUM_VIS directory_options : unsigned char { - none = 0, - follow_directory_symlink = 1, - skip_permission_denied = 2 -}; - -_LIBCPP_INLINE_VISIBILITY -inline constexpr directory_options operator&(directory_options __lhs, - directory_options __rhs) { - return static_cast(static_cast(__lhs) & - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr directory_options operator&(directory_options __lhs, directory_options __rhs) { + return static_cast(static_cast(__lhs) & static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr directory_options operator|(directory_options __lhs, - directory_options __rhs) { - return static_cast(static_cast(__lhs) | - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr directory_options operator|(directory_options __lhs, directory_options __rhs) { + return static_cast(static_cast(__lhs) | static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr directory_options operator^(directory_options __lhs, - directory_options __rhs) { - return static_cast(static_cast(__lhs) ^ - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr directory_options operator^(directory_options __lhs, directory_options __rhs) { + return static_cast(static_cast(__lhs) ^ static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr directory_options operator~(directory_options __lhs) { +_LIBCPP_HIDE_FROM_ABI inline constexpr directory_options operator~(directory_options __lhs) { return static_cast(~static_cast(__lhs)); } -_LIBCPP_INLINE_VISIBILITY -inline directory_options& operator&=(directory_options& __lhs, - directory_options __rhs) { +_LIBCPP_HIDE_FROM_ABI inline directory_options& operator&=(directory_options& __lhs, directory_options __rhs) { return __lhs = __lhs & __rhs; } -_LIBCPP_INLINE_VISIBILITY -inline directory_options& operator|=(directory_options& __lhs, - directory_options __rhs) { +_LIBCPP_HIDE_FROM_ABI inline directory_options& operator|=(directory_options& __lhs, directory_options __rhs) { return __lhs = __lhs | __rhs; } -_LIBCPP_INLINE_VISIBILITY -inline directory_options& operator^=(directory_options& __lhs, - directory_options __rhs) { +_LIBCPP_HIDE_FROM_ABI inline directory_options& operator^=(directory_options& __lhs, directory_options __rhs) { return __lhs = __lhs ^ __rhs; } -_LIBCPP_AVAILABILITY_FILESYSTEM_POP - _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_DIRECTORY_OPTIONS_H diff --git a/include/c++/v1/__filesystem/file_status.h b/include/c++/v1/__filesystem/file_status.h index ac3f6cbe..da316c8b 100644 --- a/include/c++/v1/__filesystem/file_status.h +++ b/include/c++/v1/__filesystem/file_status.h @@ -10,7 +10,6 @@ #ifndef _LIBCPP___FILESYSTEM_FILE_STATUS_H #define _LIBCPP___FILESYSTEM_FILE_STATUS_H -#include <__availability> #include <__config> #include <__filesystem/file_type.h> #include <__filesystem/perms.h> @@ -19,54 +18,50 @@ # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH - -class _LIBCPP_TYPE_VIS file_status { +class _LIBCPP_EXPORTED_FROM_ABI file_status { public: // constructors - _LIBCPP_INLINE_VISIBILITY - file_status() noexcept : file_status(file_type::none) {} - _LIBCPP_INLINE_VISIBILITY - explicit file_status(file_type __ft, perms __prms = perms::unknown) noexcept - : __ft_(__ft), - __prms_(__prms) {} + _LIBCPP_HIDE_FROM_ABI file_status() noexcept : file_status(file_type::none) {} + _LIBCPP_HIDE_FROM_ABI explicit file_status(file_type __ft, perms __prms = perms::unknown) noexcept + : __ft_(__ft), __prms_(__prms) {} - file_status(const file_status&) noexcept = default; - file_status(file_status&&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI file_status(const file_status&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI file_status(file_status&&) noexcept = default; - _LIBCPP_INLINE_VISIBILITY - ~file_status() {} + _LIBCPP_HIDE_FROM_ABI ~file_status() {} - file_status& operator=(const file_status&) noexcept = default; - file_status& operator=(file_status&&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI file_status& operator=(const file_status&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI file_status& operator=(file_status&&) noexcept = default; // observers - _LIBCPP_INLINE_VISIBILITY - file_type type() const noexcept { return __ft_; } + _LIBCPP_HIDE_FROM_ABI file_type type() const noexcept { return __ft_; } - _LIBCPP_INLINE_VISIBILITY - perms permissions() const noexcept { return __prms_; } + _LIBCPP_HIDE_FROM_ABI perms permissions() const noexcept { return __prms_; } // modifiers - _LIBCPP_INLINE_VISIBILITY - void type(file_type __ft) noexcept { __ft_ = __ft; } + _LIBCPP_HIDE_FROM_ABI void type(file_type __ft) noexcept { __ft_ = __ft; } + + _LIBCPP_HIDE_FROM_ABI void permissions(perms __p) noexcept { __prms_ = __p; } + +# if _LIBCPP_STD_VER >= 20 - _LIBCPP_INLINE_VISIBILITY - void permissions(perms __p) noexcept { __prms_ = __p; } + _LIBCPP_HIDE_FROM_ABI friend bool operator==(const file_status& __lhs, const file_status& __rhs) noexcept { + return __lhs.type() == __rhs.type() && __lhs.permissions() == __rhs.permissions(); + } + +# endif private: file_type __ft_; perms __prms_; }; -_LIBCPP_AVAILABILITY_FILESYSTEM_POP - _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_FILE_STATUS_H diff --git a/include/c++/v1/__filesystem/file_time_type.h b/include/c++/v1/__filesystem/file_time_type.h index 7c4932e6..63e4ae15 100644 --- a/include/c++/v1/__filesystem/file_time_type.h +++ b/include/c++/v1/__filesystem/file_time_type.h @@ -10,7 +10,6 @@ #ifndef _LIBCPP___FILESYSTEM_FILE_TIME_TYPE_H #define _LIBCPP___FILESYSTEM_FILE_TIME_TYPE_H -#include <__availability> #include <__chrono/file_clock.h> #include <__chrono/time_point.h> #include <__config> @@ -19,7 +18,7 @@ # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM @@ -27,6 +26,6 @@ typedef chrono::time_point<_FilesystemClock> file_time_type; _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_FILE_TIME_TYPE_H diff --git a/include/c++/v1/__filesystem/file_type.h b/include/c++/v1/__filesystem/file_type.h index c756a05c..e4ac1dfe 100644 --- a/include/c++/v1/__filesystem/file_type.h +++ b/include/c++/v1/__filesystem/file_type.h @@ -10,34 +10,33 @@ #ifndef _LIBCPP___FILESYSTEM_FILE_TYPE_H #define _LIBCPP___FILESYSTEM_FILE_TYPE_H -#include <__availability> #include <__config> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM // On Windows, the library never identifies files as block, character, fifo // or socket. -enum class _LIBCPP_ENUM_VIS file_type : signed char { - none = 0, +enum class file_type : signed char { + none = 0, not_found = -1, - regular = 1, + regular = 1, directory = 2, - symlink = 3, - block = 4, + symlink = 3, + block = 4, character = 5, - fifo = 6, - socket = 7, - unknown = 8 + fifo = 6, + socket = 7, + unknown = 8 }; _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_FILE_TYPE_H diff --git a/include/c++/v1/__filesystem/filesystem_error.h b/include/c++/v1/__filesystem/filesystem_error.h index effe6998..80a11e3b 100644 --- a/include/c++/v1/__filesystem/filesystem_error.h +++ b/include/c++/v1/__filesystem/filesystem_error.h @@ -10,68 +10,55 @@ #ifndef _LIBCPP___FILESYSTEM_FILESYSTEM_ERROR_H #define _LIBCPP___FILESYSTEM_FILESYSTEM_ERROR_H -#include <__availability> #include <__config> #include <__filesystem/path.h> #include <__memory/shared_ptr.h> +#include <__system_error/error_code.h> +#include <__system_error/system_error.h> #include <__utility/forward.h> -#include -#include -#include -#include +#include <__verbose_abort> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -class _LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_EXCEPTION_ABI filesystem_error : public system_error { +class _LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY _LIBCPP_EXPORTED_FROM_ABI filesystem_error : public system_error { public: - _LIBCPP_INLINE_VISIBILITY - filesystem_error(const string& __what, error_code __ec) - : system_error(__ec, __what), - __storage_(make_shared<_Storage>(path(), path())) { + _LIBCPP_HIDE_FROM_ABI filesystem_error(const string& __what, error_code __ec) + : system_error(__ec, __what), __storage_(make_shared<_Storage>(path(), path())) { __create_what(0); } - _LIBCPP_INLINE_VISIBILITY - filesystem_error(const string& __what, const path& __p1, error_code __ec) - : system_error(__ec, __what), - __storage_(make_shared<_Storage>(__p1, path())) { + _LIBCPP_HIDE_FROM_ABI filesystem_error(const string& __what, const path& __p1, error_code __ec) + : system_error(__ec, __what), __storage_(make_shared<_Storage>(__p1, path())) { __create_what(1); } - _LIBCPP_INLINE_VISIBILITY - filesystem_error(const string& __what, const path& __p1, const path& __p2, - error_code __ec) - : system_error(__ec, __what), - __storage_(make_shared<_Storage>(__p1, __p2)) { + _LIBCPP_HIDE_FROM_ABI filesystem_error(const string& __what, const path& __p1, const path& __p2, error_code __ec) + : system_error(__ec, __what), __storage_(make_shared<_Storage>(__p1, __p2)) { __create_what(2); } - _LIBCPP_INLINE_VISIBILITY - const path& path1() const noexcept { return __storage_->__p1_; } + _LIBCPP_HIDE_FROM_ABI const path& path1() const noexcept { return __storage_->__p1_; } - _LIBCPP_INLINE_VISIBILITY - const path& path2() const noexcept { return __storage_->__p2_; } + _LIBCPP_HIDE_FROM_ABI const path& path2() const noexcept { return __storage_->__p2_; } - filesystem_error(const filesystem_error&) = default; + _LIBCPP_HIDE_FROM_ABI filesystem_error(const filesystem_error&) = default; ~filesystem_error() override; // key function _LIBCPP_HIDE_FROM_ABI_VIRTUAL - const char* what() const noexcept override { - return __storage_->__what_.c_str(); - } + const char* what() const noexcept override { return __storage_->__what_.c_str(); } void __create_what(int __num_paths); private: struct _LIBCPP_HIDDEN _Storage { - _LIBCPP_INLINE_VISIBILITY - _Storage(const path& __p1, const path& __p2) : __p1_(__p1), __p2_(__p2) {} + _LIBCPP_HIDE_FROM_ABI _Storage(const path& __p1, const path& __p2) : __p1_(__p1), __p2_(__p2) {} path __p1_; path __p2_; @@ -80,25 +67,22 @@ class _LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_EXCEPTION_ABI filesystem_error : p shared_ptr<_Storage> __storage_; }; -// TODO(ldionne): We need to pop the pragma and push it again after -// filesystem_error to work around PR41078. -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH - +# ifndef _LIBCPP_HAS_NO_EXCEPTIONS template -_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY -#ifndef _LIBCPP_NO_EXCEPTIONS -void __throw_filesystem_error(_Args&&... __args) { - throw filesystem_error(_VSTD::forward<_Args>(__args)...); +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY void +__throw_filesystem_error(_Args&&... __args) { + throw filesystem_error(std::forward<_Args>(__args)...); } -#else -void __throw_filesystem_error(_Args&&...) { - _VSTD::abort(); +# else +template +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY void +__throw_filesystem_error(_Args&&...) { + _LIBCPP_VERBOSE_ABORT("filesystem_error was thrown in -fno-exceptions mode"); } -#endif -_LIBCPP_AVAILABILITY_FILESYSTEM_POP +# endif _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_FILESYSTEM_ERROR_H diff --git a/include/c++/v1/__filesystem/operations.h b/include/c++/v1/__filesystem/operations.h index f48d301d..f588189e 100644 --- a/include/c++/v1/__filesystem/operations.h +++ b/include/c++/v1/__filesystem/operations.h @@ -10,7 +10,6 @@ #ifndef _LIBCPP___FILESYSTEM_OPERATIONS_H #define _LIBCPP___FILESYSTEM_OPERATIONS_H -#include <__availability> #include <__chrono/time_point.h> #include <__config> #include <__filesystem/copy_options.h> @@ -21,84 +20,137 @@ #include <__filesystem/perm_options.h> #include <__filesystem/perms.h> #include <__filesystem/space_info.h> +#include <__system_error/error_code.h> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM) _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH - -_LIBCPP_FUNC_VIS path __absolute(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS path __canonical(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS bool __copy_file(const path& __from, const path& __to, copy_options __opt, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS void __copy_symlink(const path& __existing_symlink, const path& __new_symlink, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS void __copy(const path& __from, const path& __to, copy_options __opt, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS bool __create_directories(const path&, error_code* = nullptr); -_LIBCPP_FUNC_VIS void __create_directory_symlink(const path& __to, const path& __new_symlink, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS bool __create_directory(const path&, error_code* = nullptr); -_LIBCPP_FUNC_VIS bool __create_directory(const path&, const path& __attributes, error_code* = nullptr); -_LIBCPP_FUNC_VIS void __create_hard_link(const path& __to, const path& __new_hard_link, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS void __create_symlink(const path& __to, const path& __new_symlink, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS path __current_path(error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS void __current_path(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS bool __equivalent(const path&, const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS file_status __status(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS uintmax_t __file_size(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS uintmax_t __hard_link_count(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS file_status __symlink_status(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS file_time_type __last_write_time(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS void __last_write_time(const path&, file_time_type __new_time, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS path __weakly_canonical(path const& __p, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS path __read_symlink(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS uintmax_t __remove_all(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS bool __remove(const path&, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS void __rename(const path& __from, const path& __to, error_code* __ec = nullptr); -_LIBCPP_FUNC_VIS void __resize_file(const path&, uintmax_t __size, error_code* = nullptr); -_LIBCPP_FUNC_VIS path __temp_directory_path(error_code* __ec = nullptr); +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_PUSH + +_LIBCPP_EXPORTED_FROM_ABI path __absolute(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI path __canonical(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI bool +__copy_file(const path& __from, const path& __to, copy_options __opt, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI void +__copy_symlink(const path& __existing_symlink, const path& __new_symlink, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI void +__copy(const path& __from, const path& __to, copy_options __opt, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI bool __create_directories(const path&, error_code* = nullptr); +_LIBCPP_EXPORTED_FROM_ABI void +__create_directory_symlink(const path& __to, const path& __new_symlink, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI bool __create_directory(const path&, error_code* = nullptr); +_LIBCPP_EXPORTED_FROM_ABI bool __create_directory(const path&, const path& __attributes, error_code* = nullptr); +_LIBCPP_EXPORTED_FROM_ABI void +__create_hard_link(const path& __to, const path& __new_hard_link, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI void +__create_symlink(const path& __to, const path& __new_symlink, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI path __current_path(error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI void __current_path(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI bool __equivalent(const path&, const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI file_status __status(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI uintmax_t __file_size(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI uintmax_t __hard_link_count(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI file_status __symlink_status(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI file_time_type __last_write_time(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI void __last_write_time(const path&, file_time_type __new_time, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI path __weakly_canonical(path const& __p, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI path __read_symlink(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI uintmax_t __remove_all(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI bool __remove(const path&, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI void __rename(const path& __from, const path& __to, error_code* __ec = nullptr); +_LIBCPP_EXPORTED_FROM_ABI void __resize_file(const path&, uintmax_t __size, error_code* = nullptr); +_LIBCPP_EXPORTED_FROM_ABI path __temp_directory_path(error_code* __ec = nullptr); inline _LIBCPP_HIDE_FROM_ABI path absolute(const path& __p) { return __absolute(__p); } inline _LIBCPP_HIDE_FROM_ABI path absolute(const path& __p, error_code& __ec) { return __absolute(__p, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI path canonical(const path& __p) { return __canonical(__p); } +inline _LIBCPP_HIDE_FROM_ABI path canonical(const path& __p) { return __canonical(__p); } inline _LIBCPP_HIDE_FROM_ABI path canonical(const path& __p, error_code& __ec) { return __canonical(__p, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to) { return __copy_file(__from, __to, copy_options::none); } -inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to, error_code& __ec) { return __copy_file(__from, __to, copy_options::none, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to, copy_options __opt) { return __copy_file(__from, __to, __opt); } -inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to, copy_options __opt, error_code& __ec) { return __copy_file(__from, __to, __opt, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to) { + return __copy_file(__from, __to, copy_options::none); +} +inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to, error_code& __ec) { + return __copy_file(__from, __to, copy_options::none, &__ec); +} +inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to, copy_options __opt) { + return __copy_file(__from, __to, __opt); +} +inline _LIBCPP_HIDE_FROM_ABI bool +copy_file(const path& __from, const path& __to, copy_options __opt, error_code& __ec) { + return __copy_file(__from, __to, __opt, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI void copy_symlink(const path& __from, const path& __to) { __copy_symlink(__from, __to); } -inline _LIBCPP_HIDE_FROM_ABI void copy_symlink(const path& __from, const path& __to, error_code& __ec) noexcept { __copy_symlink(__from, __to, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to) { __copy(__from, __to, copy_options::none); } -inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, error_code& __ec) { __copy(__from, __to, copy_options::none, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, copy_options __opt) { __copy(__from, __to, __opt); } -inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, copy_options __opt, error_code& __ec) { __copy(__from, __to, __opt, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void copy_symlink(const path& __from, const path& __to, error_code& __ec) noexcept { + __copy_symlink(__from, __to, &__ec); +} +inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to) { + __copy(__from, __to, copy_options::none); +} +inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, error_code& __ec) { + __copy(__from, __to, copy_options::none, &__ec); +} +inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, copy_options __opt) { + __copy(__from, __to, __opt); +} +inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, copy_options __opt, error_code& __ec) { + __copy(__from, __to, __opt, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI bool create_directories(const path& __p) { return __create_directories(__p); } -inline _LIBCPP_HIDE_FROM_ABI bool create_directories(const path& __p, error_code& __ec) { return __create_directories(__p, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI void create_directory_symlink(const path& __target, const path& __link) { __create_directory_symlink(__target, __link); } -inline _LIBCPP_HIDE_FROM_ABI void create_directory_symlink(const path& __target, const path& __link, error_code& __ec) noexcept { __create_directory_symlink(__target, __link, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool create_directories(const path& __p, error_code& __ec) { + return __create_directories(__p, &__ec); +} +inline _LIBCPP_HIDE_FROM_ABI void create_directory_symlink(const path& __target, const path& __link) { + __create_directory_symlink(__target, __link); +} +inline _LIBCPP_HIDE_FROM_ABI void +create_directory_symlink(const path& __target, const path& __link, error_code& __ec) noexcept { + __create_directory_symlink(__target, __link, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p) { return __create_directory(__p); } -inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, error_code& __ec) noexcept { return __create_directory(__p, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, const path& __attrs) { return __create_directory(__p, __attrs); } -inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, const path& __attrs, error_code& __ec) noexcept { return __create_directory(__p, __attrs, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI void create_hard_link(const path& __target, const path& __link) { __create_hard_link(__target, __link); } -inline _LIBCPP_HIDE_FROM_ABI void create_hard_link(const path& __target, const path& __link, error_code& __ec) noexcept { __create_hard_link(__target, __link, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI void create_symlink(const path& __target, const path& __link) { __create_symlink(__target, __link); } -inline _LIBCPP_HIDE_FROM_ABI void create_symlink(const path& __target, const path& __link, error_code& __ec) noexcept { return __create_symlink(__target, __link, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, error_code& __ec) noexcept { + return __create_directory(__p, &__ec); +} +inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, const path& __attrs) { + return __create_directory(__p, __attrs); +} +inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, const path& __attrs, error_code& __ec) noexcept { + return __create_directory(__p, __attrs, &__ec); +} +inline _LIBCPP_HIDE_FROM_ABI void create_hard_link(const path& __target, const path& __link) { + __create_hard_link(__target, __link); +} +inline _LIBCPP_HIDE_FROM_ABI void +create_hard_link(const path& __target, const path& __link, error_code& __ec) noexcept { + __create_hard_link(__target, __link, &__ec); +} +inline _LIBCPP_HIDE_FROM_ABI void create_symlink(const path& __target, const path& __link) { + __create_symlink(__target, __link); +} +inline _LIBCPP_HIDE_FROM_ABI void create_symlink(const path& __target, const path& __link, error_code& __ec) noexcept { + return __create_symlink(__target, __link, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI path current_path() { return __current_path(); } inline _LIBCPP_HIDE_FROM_ABI path current_path(error_code& __ec) { return __current_path(&__ec); } inline _LIBCPP_HIDE_FROM_ABI void current_path(const path& __p) { __current_path(__p); } -inline _LIBCPP_HIDE_FROM_ABI void current_path(const path& __p, error_code& __ec) noexcept { __current_path(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void current_path(const path& __p, error_code& __ec) noexcept { + __current_path(__p, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI bool equivalent(const path& __p1, const path& __p2) { return __equivalent(__p1, __p2); } -inline _LIBCPP_HIDE_FROM_ABI bool equivalent(const path& __p1, const path& __p2, error_code& __ec) noexcept { return __equivalent(__p1, __p2, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool equivalent(const path& __p1, const path& __p2, error_code& __ec) noexcept { + return __equivalent(__p1, __p2, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI bool status_known(file_status __s) noexcept { return __s.type() != file_type::none; } -inline _LIBCPP_HIDE_FROM_ABI bool exists(file_status __s) noexcept { return status_known(__s) && __s.type() != file_type::not_found; } +inline _LIBCPP_HIDE_FROM_ABI bool exists(file_status __s) noexcept { + return status_known(__s) && __s.type() != file_type::not_found; +} inline _LIBCPP_HIDE_FROM_ABI bool exists(const path& __p) { return exists(__status(__p)); } -inline _LIBCPP_INLINE_VISIBILITY bool exists(const path& __p, error_code& __ec) noexcept { +inline _LIBCPP_HIDE_FROM_ABI bool exists(const path& __p, error_code& __ec) noexcept { auto __s = __status(__p, &__ec); if (status_known(__s)) __ec.clear(); @@ -106,46 +158,81 @@ inline _LIBCPP_INLINE_VISIBILITY bool exists(const path& __p, error_code& __ec) } inline _LIBCPP_HIDE_FROM_ABI uintmax_t file_size(const path& __p) { return __file_size(__p); } -inline _LIBCPP_HIDE_FROM_ABI uintmax_t file_size(const path& __p, error_code& __ec) noexcept { return __file_size(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI uintmax_t file_size(const path& __p, error_code& __ec) noexcept { + return __file_size(__p, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(const path& __p) { return __hard_link_count(__p); } -inline _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(const path& __p, error_code& __ec) noexcept { return __hard_link_count(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(const path& __p, error_code& __ec) noexcept { + return __hard_link_count(__p, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI bool is_block_file(file_status __s) noexcept { return __s.type() == file_type::block; } inline _LIBCPP_HIDE_FROM_ABI bool is_block_file(const path& __p) { return is_block_file(__status(__p)); } -inline _LIBCPP_HIDE_FROM_ABI bool is_block_file(const path& __p, error_code& __ec) noexcept { return is_block_file(__status(__p, &__ec)); } -inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(file_status __s) noexcept { return __s.type() == file_type::character; } +inline _LIBCPP_HIDE_FROM_ABI bool is_block_file(const path& __p, error_code& __ec) noexcept { + return is_block_file(__status(__p, &__ec)); +} +inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(file_status __s) noexcept { + return __s.type() == file_type::character; +} inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(const path& __p) { return is_character_file(__status(__p)); } -inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(const path& __p, error_code& __ec) noexcept { return is_character_file(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(const path& __p, error_code& __ec) noexcept { + return is_character_file(__status(__p, &__ec)); +} inline _LIBCPP_HIDE_FROM_ABI bool is_directory(file_status __s) noexcept { return __s.type() == file_type::directory; } inline _LIBCPP_HIDE_FROM_ABI bool is_directory(const path& __p) { return is_directory(__status(__p)); } -inline _LIBCPP_HIDE_FROM_ABI bool is_directory(const path& __p, error_code& __ec) noexcept { return is_directory(__status(__p, &__ec)); } -_LIBCPP_FUNC_VIS bool __fs_is_empty(const path& __p, error_code* __ec = nullptr); +inline _LIBCPP_HIDE_FROM_ABI bool is_directory(const path& __p, error_code& __ec) noexcept { + return is_directory(__status(__p, &__ec)); +} +_LIBCPP_EXPORTED_FROM_ABI bool __fs_is_empty(const path& __p, error_code* __ec = nullptr); inline _LIBCPP_HIDE_FROM_ABI bool is_empty(const path& __p) { return __fs_is_empty(__p); } inline _LIBCPP_HIDE_FROM_ABI bool is_empty(const path& __p, error_code& __ec) { return __fs_is_empty(__p, &__ec); } inline _LIBCPP_HIDE_FROM_ABI bool is_fifo(file_status __s) noexcept { return __s.type() == file_type::fifo; } inline _LIBCPP_HIDE_FROM_ABI bool is_fifo(const path& __p) { return is_fifo(__status(__p)); } -inline _LIBCPP_HIDE_FROM_ABI bool is_fifo(const path& __p, error_code& __ec) noexcept { return is_fifo(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_fifo(const path& __p, error_code& __ec) noexcept { + return is_fifo(__status(__p, &__ec)); +} inline _LIBCPP_HIDE_FROM_ABI bool is_regular_file(file_status __s) noexcept { return __s.type() == file_type::regular; } inline _LIBCPP_HIDE_FROM_ABI bool is_regular_file(const path& __p) { return is_regular_file(__status(__p)); } -inline _LIBCPP_HIDE_FROM_ABI bool is_regular_file(const path& __p, error_code& __ec) noexcept { return is_regular_file(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_regular_file(const path& __p, error_code& __ec) noexcept { + return is_regular_file(__status(__p, &__ec)); +} inline _LIBCPP_HIDE_FROM_ABI bool is_symlink(file_status __s) noexcept { return __s.type() == file_type::symlink; } inline _LIBCPP_HIDE_FROM_ABI bool is_symlink(const path& __p) { return is_symlink(__symlink_status(__p)); } -inline _LIBCPP_HIDE_FROM_ABI bool is_symlink(const path& __p, error_code& __ec) noexcept { return is_symlink(__symlink_status(__p, &__ec)); } -inline _LIBCPP_HIDE_FROM_ABI bool is_other(file_status __s) noexcept { return exists(__s) && !is_regular_file(__s) && !is_directory(__s) && !is_symlink(__s); } +inline _LIBCPP_HIDE_FROM_ABI bool is_symlink(const path& __p, error_code& __ec) noexcept { + return is_symlink(__symlink_status(__p, &__ec)); +} +inline _LIBCPP_HIDE_FROM_ABI bool is_other(file_status __s) noexcept { + return exists(__s) && !is_regular_file(__s) && !is_directory(__s) && !is_symlink(__s); +} inline _LIBCPP_HIDE_FROM_ABI bool is_other(const path& __p) { return is_other(__status(__p)); } -inline _LIBCPP_HIDE_FROM_ABI bool is_other(const path& __p, error_code& __ec) noexcept { return is_other(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_other(const path& __p, error_code& __ec) noexcept { + return is_other(__status(__p, &__ec)); +} inline _LIBCPP_HIDE_FROM_ABI bool is_socket(file_status __s) noexcept { return __s.type() == file_type::socket; } inline _LIBCPP_HIDE_FROM_ABI bool is_socket(const path& __p) { return is_socket(__status(__p)); } -inline _LIBCPP_HIDE_FROM_ABI bool is_socket(const path& __p, error_code& __ec) noexcept { return is_socket(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_socket(const path& __p, error_code& __ec) noexcept { + return is_socket(__status(__p, &__ec)); +} inline _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(const path& __p) { return __last_write_time(__p); } -inline _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(const path& __p, error_code& __ec) noexcept { return __last_write_time(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(const path& __p, error_code& __ec) noexcept { + return __last_write_time(__p, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI void last_write_time(const path& __p, file_time_type __t) { __last_write_time(__p, __t); } -inline _LIBCPP_HIDE_FROM_ABI void last_write_time(const path& __p, file_time_type __t, error_code& __ec) noexcept { __last_write_time(__p, __t, &__ec); } -_LIBCPP_FUNC_VIS void __permissions(const path&, perms, perm_options, error_code* = nullptr); -inline _LIBCPP_HIDE_FROM_ABI void permissions(const path& __p, perms __prms, perm_options __opts = perm_options::replace) { __permissions(__p, __prms, __opts); } -inline _LIBCPP_HIDE_FROM_ABI void permissions(const path& __p, perms __prms, error_code& __ec) noexcept { __permissions(__p, __prms, perm_options::replace, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI void permissions(const path& __p, perms __prms, perm_options __opts, error_code& __ec) { __permissions(__p, __prms, __opts, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void last_write_time(const path& __p, file_time_type __t, error_code& __ec) noexcept { + __last_write_time(__p, __t, &__ec); +} +_LIBCPP_EXPORTED_FROM_ABI void __permissions(const path&, perms, perm_options, error_code* = nullptr); +inline _LIBCPP_HIDE_FROM_ABI void +permissions(const path& __p, perms __prms, perm_options __opts = perm_options::replace) { + __permissions(__p, __prms, __opts); +} +inline _LIBCPP_HIDE_FROM_ABI void permissions(const path& __p, perms __prms, error_code& __ec) noexcept { + __permissions(__p, __prms, perm_options::replace, &__ec); +} +inline _LIBCPP_HIDE_FROM_ABI void permissions(const path& __p, perms __prms, perm_options __opts, error_code& __ec) { + __permissions(__p, __prms, __opts, &__ec); +} -inline _LIBCPP_INLINE_VISIBILITY path proximate(const path& __p, const path& __base, error_code& __ec) { +inline _LIBCPP_HIDE_FROM_ABI path proximate(const path& __p, const path& __base, error_code& __ec) { path __tmp = __weakly_canonical(__p, &__ec); if (__ec) return {}; @@ -155,12 +242,16 @@ inline _LIBCPP_INLINE_VISIBILITY path proximate(const path& __p, const path& __b return __tmp.lexically_proximate(__tmp_base); } -inline _LIBCPP_HIDE_FROM_ABI path proximate(const path& __p, error_code& __ec) { return proximate(__p, current_path(), __ec); } -inline _LIBCPP_HIDE_FROM_ABI path proximate(const path& __p, const path& __base = current_path()) { return __weakly_canonical(__p).lexically_proximate(__weakly_canonical(__base)); } +inline _LIBCPP_HIDE_FROM_ABI path proximate(const path& __p, error_code& __ec) { + return proximate(__p, current_path(), __ec); +} +inline _LIBCPP_HIDE_FROM_ABI path proximate(const path& __p, const path& __base = current_path()) { + return __weakly_canonical(__p).lexically_proximate(__weakly_canonical(__base)); +} inline _LIBCPP_HIDE_FROM_ABI path read_symlink(const path& __p) { return __read_symlink(__p); } inline _LIBCPP_HIDE_FROM_ABI path read_symlink(const path& __p, error_code& __ec) { return __read_symlink(__p, &__ec); } -inline _LIBCPP_INLINE_VISIBILITY path relative(const path& __p, const path& __base, error_code& __ec) { +inline _LIBCPP_HIDE_FROM_ABI path relative(const path& __p, const path& __base, error_code& __ec) { path __tmp = __weakly_canonical(__p, &__ec); if (__ec) return path(); @@ -170,32 +261,50 @@ inline _LIBCPP_INLINE_VISIBILITY path relative(const path& __p, const path& __ba return __tmp.lexically_relative(__tmpbase); } -inline _LIBCPP_HIDE_FROM_ABI path relative(const path& __p, error_code& __ec) { return relative(__p, current_path(), __ec); } -inline _LIBCPP_HIDE_FROM_ABI path relative(const path& __p, const path& __base = current_path()) { return __weakly_canonical(__p).lexically_relative(__weakly_canonical(__base)); } +inline _LIBCPP_HIDE_FROM_ABI path relative(const path& __p, error_code& __ec) { + return relative(__p, current_path(), __ec); +} +inline _LIBCPP_HIDE_FROM_ABI path relative(const path& __p, const path& __base = current_path()) { + return __weakly_canonical(__p).lexically_relative(__weakly_canonical(__base)); +} inline _LIBCPP_HIDE_FROM_ABI uintmax_t remove_all(const path& __p) { return __remove_all(__p); } -inline _LIBCPP_HIDE_FROM_ABI uintmax_t remove_all(const path& __p, error_code& __ec) { return __remove_all(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI uintmax_t remove_all(const path& __p, error_code& __ec) { + return __remove_all(__p, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI bool remove(const path& __p) { return __remove(__p); } inline _LIBCPP_HIDE_FROM_ABI bool remove(const path& __p, error_code& __ec) noexcept { return __remove(__p, &__ec); } inline _LIBCPP_HIDE_FROM_ABI void rename(const path& __from, const path& __to) { return __rename(__from, __to); } -inline _LIBCPP_HIDE_FROM_ABI void rename(const path& __from, const path& __to, error_code& __ec) noexcept { return __rename(__from, __to, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void rename(const path& __from, const path& __to, error_code& __ec) noexcept { + return __rename(__from, __to, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI void resize_file(const path& __p, uintmax_t __ns) { return __resize_file(__p, __ns); } -inline _LIBCPP_HIDE_FROM_ABI void resize_file(const path& __p, uintmax_t __ns, error_code& __ec) noexcept { return __resize_file(__p, __ns, &__ec); } -_LIBCPP_FUNC_VIS space_info __space(const path&, error_code* __ec = nullptr); +inline _LIBCPP_HIDE_FROM_ABI void resize_file(const path& __p, uintmax_t __ns, error_code& __ec) noexcept { + return __resize_file(__p, __ns, &__ec); +} +_LIBCPP_EXPORTED_FROM_ABI space_info __space(const path&, error_code* __ec = nullptr); inline _LIBCPP_HIDE_FROM_ABI space_info space(const path& __p) { return __space(__p); } -inline _LIBCPP_HIDE_FROM_ABI space_info space(const path& __p, error_code& __ec) noexcept { return __space(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI space_info space(const path& __p, error_code& __ec) noexcept { + return __space(__p, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI file_status status(const path& __p) { return __status(__p); } -inline _LIBCPP_HIDE_FROM_ABI file_status status(const path& __p, error_code& __ec) noexcept { return __status(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI file_status status(const path& __p, error_code& __ec) noexcept { + return __status(__p, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI file_status symlink_status(const path& __p) { return __symlink_status(__p); } -inline _LIBCPP_HIDE_FROM_ABI file_status symlink_status(const path& __p, error_code& __ec) noexcept { return __symlink_status(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI file_status symlink_status(const path& __p, error_code& __ec) noexcept { + return __symlink_status(__p, &__ec); +} inline _LIBCPP_HIDE_FROM_ABI path temp_directory_path() { return __temp_directory_path(); } inline _LIBCPP_HIDE_FROM_ABI path temp_directory_path(error_code& __ec) { return __temp_directory_path(&__ec); } inline _LIBCPP_HIDE_FROM_ABI path weakly_canonical(path const& __p) { return __weakly_canonical(__p); } -inline _LIBCPP_HIDE_FROM_ABI path weakly_canonical(path const& __p, error_code& __ec) { return __weakly_canonical(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI path weakly_canonical(path const& __p, error_code& __ec) { + return __weakly_canonical(__p, &__ec); +} -_LIBCPP_AVAILABILITY_FILESYSTEM_POP +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_POP _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM) #endif // _LIBCPP___FILESYSTEM_OPERATIONS_H diff --git a/include/c++/v1/__filesystem/path.h b/include/c++/v1/__filesystem/path.h index 4e6912fc..eef1fc0d 100644 --- a/include/c++/v1/__filesystem/path.h +++ b/include/c++/v1/__filesystem/path.h @@ -12,29 +12,37 @@ #include <__algorithm/replace.h> #include <__algorithm/replace_copy.h> -#include <__availability> #include <__config> +#include <__functional/unary_function.h> +#include <__fwd/functional.h> #include <__iterator/back_insert_iterator.h> #include <__iterator/iterator_traits.h> +#include <__type_traits/decay.h> +#include <__type_traits/is_pointer.h> +#include <__type_traits/remove_const.h> +#include <__type_traits/remove_pointer.h> +#include <__utility/move.h> #include #include #include -#include #if !defined(_LIBCPP_HAS_NO_LOCALIZATION) -# include // for quoted -# include +# include // for quoted +# include #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_PUSH template struct __can_convert_char { @@ -45,47 +53,45 @@ struct __can_convert_char : public __can_convert_char<_Tp> {}; template <> struct __can_convert_char { static const bool value = true; - using __char_type = char; + using __char_type = char; }; template <> struct __can_convert_char { static const bool value = true; - using __char_type = wchar_t; + using __char_type = wchar_t; }; -#ifndef _LIBCPP_HAS_NO_CHAR8_T +# ifndef _LIBCPP_HAS_NO_CHAR8_T template <> struct __can_convert_char { static const bool value = true; - using __char_type = char8_t; + using __char_type = char8_t; }; -#endif +# endif template <> struct __can_convert_char { static const bool value = true; - using __char_type = char16_t; + using __char_type = char16_t; }; template <> struct __can_convert_char { static const bool value = true; - using __char_type = char32_t; + using __char_type = char32_t; }; -template -_LIBCPP_HIDE_FROM_ABI -typename enable_if<__can_convert_char<_ECharT>::value, bool>::type -__is_separator(_ECharT __e) { -#if defined(_LIBCPP_WIN32API) +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI bool __is_separator(_ECharT __e) { +# if defined(_LIBCPP_WIN32API) return __e == _ECharT('/') || __e == _ECharT('\\'); -#else +# else return __e == _ECharT('/'); -#endif +# endif } -#ifndef _LIBCPP_HAS_NO_CHAR8_T +# ifndef _LIBCPP_HAS_NO_CHAR8_T typedef u8string __u8_string; -#else +# else typedef string __u8_string; -#endif +# endif struct _NullSentinel {}; @@ -96,104 +102,75 @@ template struct __is_pathable_string : public false_type {}; template -struct __is_pathable_string< - basic_string<_ECharT, _Traits, _Alloc>, - _Void::__char_type> > +struct __is_pathable_string< basic_string<_ECharT, _Traits, _Alloc>, + _Void::__char_type> > : public __can_convert_char<_ECharT> { using _Str = basic_string<_ECharT, _Traits, _Alloc>; - using _Base = __can_convert_char<_ECharT>; - _LIBCPP_HIDE_FROM_ABI - static _ECharT const* __range_begin(_Str const& __s) { return __s.data(); } + _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_begin(_Str const& __s) { return __s.data(); } - _LIBCPP_HIDE_FROM_ABI - static _ECharT const* __range_end(_Str const& __s) { - return __s.data() + __s.length(); - } + _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_end(_Str const& __s) { return __s.data() + __s.length(); } - _LIBCPP_HIDE_FROM_ABI - static _ECharT __first_or_null(_Str const& __s) { - return __s.empty() ? _ECharT{} : __s[0]; - } + _LIBCPP_HIDE_FROM_ABI static _ECharT __first_or_null(_Str const& __s) { return __s.empty() ? _ECharT{} : __s[0]; } }; template -struct __is_pathable_string< - basic_string_view<_ECharT, _Traits>, - _Void::__char_type> > +struct __is_pathable_string< basic_string_view<_ECharT, _Traits>, + _Void::__char_type> > : public __can_convert_char<_ECharT> { using _Str = basic_string_view<_ECharT, _Traits>; - using _Base = __can_convert_char<_ECharT>; - _LIBCPP_HIDE_FROM_ABI - static _ECharT const* __range_begin(_Str const& __s) { return __s.data(); } + _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_begin(_Str const& __s) { return __s.data(); } - _LIBCPP_HIDE_FROM_ABI - static _ECharT const* __range_end(_Str const& __s) { - return __s.data() + __s.length(); - } + _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_end(_Str const& __s) { return __s.data() + __s.length(); } - _LIBCPP_HIDE_FROM_ABI - static _ECharT __first_or_null(_Str const& __s) { - return __s.empty() ? _ECharT{} : __s[0]; - } + _LIBCPP_HIDE_FROM_ABI static _ECharT __first_or_null(_Str const& __s) { return __s.empty() ? _ECharT{} : __s[0]; } }; -template ::type, - class _UnqualPtrType = - __remove_const_t<__remove_pointer_t<_DS> >, - bool _IsCharPtr = is_pointer<_DS>::value&& - __can_convert_char<_UnqualPtrType>::value> +template , + class _UnqualPtrType = __remove_const_t<__remove_pointer_t<_DS> >, + bool _IsCharPtr = is_pointer<_DS>::value && __can_convert_char<_UnqualPtrType>::value> struct __is_pathable_char_array : false_type {}; template -struct __is_pathable_char_array<_Source, _ECharT*, _UPtr, true> - : __can_convert_char<__remove_const_t<_ECharT> > { - using _Base = __can_convert_char<__remove_const_t<_ECharT> >; - - _LIBCPP_HIDE_FROM_ABI - static _ECharT const* __range_begin(const _ECharT* __b) { return __b; } +struct __is_pathable_char_array<_Source, _ECharT*, _UPtr, true> : __can_convert_char<__remove_const_t<_ECharT> > { + _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_begin(const _ECharT* __b) { return __b; } - _LIBCPP_HIDE_FROM_ABI - static _ECharT const* __range_end(const _ECharT* __b) { - using _Iter = const _ECharT*; + _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_end(const _ECharT* __b) { + using _Iter = const _ECharT*; const _ECharT __sentinel = _ECharT{}; - _Iter __e = __b; + _Iter __e = __b; for (; *__e != __sentinel; ++__e) ; return __e; } - _LIBCPP_HIDE_FROM_ABI - static _ECharT __first_or_null(const _ECharT* __b) { return *__b; } + _LIBCPP_HIDE_FROM_ABI static _ECharT __first_or_null(const _ECharT* __b) { return *__b; } }; -template ::value, - class = void> +template ::value, class = void> struct __is_pathable_iter : false_type {}; template struct __is_pathable_iter< - _Iter, true, - _Void::value_type>::__char_type> > + _Iter, + true, + _Void::value_type>::__char_type> > : __can_convert_char::value_type> { using _ECharT = typename iterator_traits<_Iter>::value_type; - using _Base = __can_convert_char<_ECharT>; - _LIBCPP_HIDE_FROM_ABI - static _Iter __range_begin(_Iter __b) { return __b; } + _LIBCPP_HIDE_FROM_ABI static _Iter __range_begin(_Iter __b) { return __b; } - _LIBCPP_HIDE_FROM_ABI - static _NullSentinel __range_end(_Iter) { return _NullSentinel{}; } + _LIBCPP_HIDE_FROM_ABI static _NullSentinel __range_end(_Iter) { return _NullSentinel{}; } - _LIBCPP_HIDE_FROM_ABI - static _ECharT __first_or_null(_Iter __b) { return *__b; } + _LIBCPP_HIDE_FROM_ABI static _ECharT __first_or_null(_Iter __b) { return *__b; } }; -template ::value, +template ::value, bool _IsCharIterT = __is_pathable_char_array<_Tp>::value, - bool _IsIterT = !_IsCharIterT && __is_pathable_iter<_Tp>::value> + bool _IsIterT = !_IsCharIterT && __is_pathable_iter<_Tp>::value> struct __is_pathable : false_type { static_assert(!_IsStringT && !_IsCharIterT && !_IsIterT, "Must all be false"); }; @@ -202,74 +179,64 @@ template struct __is_pathable<_Tp, true, false, false> : __is_pathable_string<_Tp> {}; template -struct __is_pathable<_Tp, false, true, false> : __is_pathable_char_array<_Tp> { -}; +struct __is_pathable<_Tp, false, true, false> : __is_pathable_char_array<_Tp> {}; template struct __is_pathable<_Tp, false, false, true> : __is_pathable_iter<_Tp> {}; -#if defined(_LIBCPP_WIN32API) +# if defined(_LIBCPP_WIN32API) typedef wstring __path_string; typedef wchar_t __path_value; -#else +# else typedef string __path_string; typedef char __path_value; -#endif +# endif -#if defined(_LIBCPP_WIN32API) -_LIBCPP_FUNC_VIS -size_t __wide_to_char(const wstring&, char*, size_t); -_LIBCPP_FUNC_VIS -size_t __char_to_wide(const string&, wchar_t*, size_t); -#endif +# if defined(_LIBCPP_WIN32API) +_LIBCPP_EXPORTED_FROM_ABI size_t __wide_to_char(const wstring&, char*, size_t); +_LIBCPP_EXPORTED_FROM_ABI size_t __char_to_wide(const string&, wchar_t*, size_t); +# endif template struct _PathCVT; -#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) +# if !defined(_LIBCPP_HAS_NO_LOCALIZATION) template struct _PathCVT { - static_assert(__can_convert_char<_ECharT>::value, - "Char type not convertible"); + static_assert(__can_convert_char<_ECharT>::value, "Char type not convertible"); typedef __narrow_to_utf8 _Narrower; -#if defined(_LIBCPP_WIN32API) +# if defined(_LIBCPP_WIN32API) typedef __widen_from_utf8 _Widener; -#endif +# endif - _LIBCPP_HIDE_FROM_ABI - static void __append_range(__path_string& __dest, _ECharT const* __b, - _ECharT const* __e) { -#if defined(_LIBCPP_WIN32API) + _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _ECharT const* __b, _ECharT const* __e) { +# if defined(_LIBCPP_WIN32API) string __utf8; _Narrower()(back_inserter(__utf8), __b, __e); _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); -#else +# else _Narrower()(back_inserter(__dest), __b, __e); -#endif +# endif } template - _LIBCPP_HIDE_FROM_ABI - static void __append_range(__path_string& __dest, _Iter __b, _Iter __e) { + _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _Iter __e) { static_assert(!is_same<_Iter, _ECharT*>::value, "Call const overload"); if (__b == __e) return; basic_string<_ECharT> __tmp(__b, __e); -#if defined(_LIBCPP_WIN32API) +# if defined(_LIBCPP_WIN32API) string __utf8; - _Narrower()(back_inserter(__utf8), __tmp.data(), - __tmp.data() + __tmp.length()); + _Narrower()(back_inserter(__utf8), __tmp.data(), __tmp.data() + __tmp.length()); _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); -#else - _Narrower()(back_inserter(__dest), __tmp.data(), - __tmp.data() + __tmp.length()); -#endif +# else + _Narrower()(back_inserter(__dest), __tmp.data(), __tmp.data() + __tmp.length()); +# endif } template - _LIBCPP_HIDE_FROM_ABI - static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { + _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { static_assert(!is_same<_Iter, _ECharT*>::value, "Call const overload"); const _ECharT __sentinel = _ECharT{}; if (*__b == __sentinel) @@ -277,94 +244,74 @@ struct _PathCVT { basic_string<_ECharT> __tmp; for (; *__b != __sentinel; ++__b) __tmp.push_back(*__b); -#if defined(_LIBCPP_WIN32API) +# if defined(_LIBCPP_WIN32API) string __utf8; - _Narrower()(back_inserter(__utf8), __tmp.data(), - __tmp.data() + __tmp.length()); + _Narrower()(back_inserter(__utf8), __tmp.data(), __tmp.data() + __tmp.length()); _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); -#else - _Narrower()(back_inserter(__dest), __tmp.data(), - __tmp.data() + __tmp.length()); -#endif +# else + _Narrower()(back_inserter(__dest), __tmp.data(), __tmp.data() + __tmp.length()); +# endif } template - _LIBCPP_HIDE_FROM_ABI - static void __append_source(__path_string& __dest, _Source const& __s) { + _LIBCPP_HIDE_FROM_ABI static void __append_source(__path_string& __dest, _Source const& __s) { using _Traits = __is_pathable<_Source>; - __append_range(__dest, _Traits::__range_begin(__s), - _Traits::__range_end(__s)); + __append_range(__dest, _Traits::__range_begin(__s), _Traits::__range_end(__s)); } }; -#endif // !_LIBCPP_HAS_NO_LOCALIZATION +# endif // !_LIBCPP_HAS_NO_LOCALIZATION template <> struct _PathCVT<__path_value> { - - template - _LIBCPP_HIDE_FROM_ABI - static typename enable_if<__is_exactly_cpp17_input_iterator<_Iter>::value>::type - __append_range(__path_string& __dest, _Iter __b, _Iter __e) { + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _Iter __e) { for (; __b != __e; ++__b) __dest.push_back(*__b); } - template - _LIBCPP_HIDE_FROM_ABI - static typename enable_if<__is_cpp17_forward_iterator<_Iter>::value>::type - __append_range(__path_string& __dest, _Iter __b, _Iter __e) { + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _Iter __e) { __dest.append(__b, __e); } template - _LIBCPP_HIDE_FROM_ABI - static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { + _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { const char __sentinel = char{}; for (; *__b != __sentinel; ++__b) __dest.push_back(*__b); } template - _LIBCPP_HIDE_FROM_ABI - static void __append_source(__path_string& __dest, _Source const& __s) { + _LIBCPP_HIDE_FROM_ABI static void __append_source(__path_string& __dest, _Source const& __s) { using _Traits = __is_pathable<_Source>; - __append_range(__dest, _Traits::__range_begin(__s), - _Traits::__range_end(__s)); + __append_range(__dest, _Traits::__range_begin(__s), _Traits::__range_end(__s)); } }; -#if defined(_LIBCPP_WIN32API) +# if defined(_LIBCPP_WIN32API) template <> struct _PathCVT { - - _LIBCPP_HIDE_FROM_ABI - static void - __append_string(__path_string& __dest, const basic_string &__str) { - size_t __size = __char_to_wide(__str, nullptr, 0); - size_t __pos = __dest.size(); - __dest.resize(__pos + __size); - __char_to_wide(__str, const_cast<__path_value*>(__dest.data()) + __pos, __size); + _LIBCPP_HIDE_FROM_ABI static void __append_string(__path_string& __dest, const basic_string& __str) { + size_t __size = __char_to_wide(__str, nullptr, 0); + size_t __pos = __dest.size(); + __dest.resize(__pos + __size); + __char_to_wide(__str, const_cast<__path_value*>(__dest.data()) + __pos, __size); } - template - _LIBCPP_HIDE_FROM_ABI - static typename enable_if<__is_exactly_cpp17_input_iterator<_Iter>::value>::type - __append_range(__path_string& __dest, _Iter __b, _Iter __e) { + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _Iter __e) { basic_string __tmp(__b, __e); __append_string(__dest, __tmp); } - template - _LIBCPP_HIDE_FROM_ABI - static typename enable_if<__is_cpp17_forward_iterator<_Iter>::value>::type - __append_range(__path_string& __dest, _Iter __b, _Iter __e) { + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _Iter __e) { basic_string __tmp(__b, __e); __append_string(__dest, __tmp); } template - _LIBCPP_HIDE_FROM_ABI - static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { + _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { const char __sentinel = char{}; basic_string __tmp; for (; *__b != __sentinel; ++__b) @@ -373,11 +320,9 @@ struct _PathCVT { } template - _LIBCPP_HIDE_FROM_ABI - static void __append_source(__path_string& __dest, _Source const& __s) { + _LIBCPP_HIDE_FROM_ABI static void __append_source(__path_string& __dest, _Source const& __s) { using _Traits = __is_pathable<_Source>; - __append_range(__dest, _Traits::__range_begin(__s), - _Traits::__range_end(__s)); + __append_range(__dest, _Traits::__range_begin(__s), _Traits::__range_end(__s)); } }; @@ -387,8 +332,7 @@ struct _PathExport { typedef __widen_from_utf8 _Widener; template - _LIBCPP_HIDE_FROM_ABI - static void __append(_Str& __dest, const __path_string& __src) { + _LIBCPP_HIDE_FROM_ABI static void __append(_Str& __dest, const __path_string& __src) { string __utf8; _Narrower()(back_inserter(__utf8), __src.data(), __src.data() + __src.size()); _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); @@ -398,10 +342,9 @@ struct _PathExport { template <> struct _PathExport { template - _LIBCPP_HIDE_FROM_ABI - static void __append(_Str& __dest, const __path_string& __src) { + _LIBCPP_HIDE_FROM_ABI static void __append(_Str& __dest, const __path_string& __src) { size_t __size = __wide_to_char(__src, nullptr, 0); - size_t __pos = __dest.size(); + size_t __pos = __dest.size(); __dest.resize(__size); __wide_to_char(__src, const_cast(__dest.data()) + __pos, __size); } @@ -410,8 +353,7 @@ struct _PathExport { template <> struct _PathExport { template - _LIBCPP_HIDE_FROM_ABI - static void __append(_Str& __dest, const __path_string& __src) { + _LIBCPP_HIDE_FROM_ABI static void __append(_Str& __dest, const __path_string& __src) { __dest.append(__src.begin(), __src.end()); } }; @@ -419,30 +361,27 @@ struct _PathExport { template <> struct _PathExport { template - _LIBCPP_HIDE_FROM_ABI - static void __append(_Str& __dest, const __path_string& __src) { + _LIBCPP_HIDE_FROM_ABI static void __append(_Str& __dest, const __path_string& __src) { __dest.append(__src.begin(), __src.end()); } }; -#ifndef _LIBCPP_HAS_NO_CHAR8_T +# ifndef _LIBCPP_HAS_NO_CHAR8_T template <> struct _PathExport { typedef __narrow_to_utf8 _Narrower; template - _LIBCPP_HIDE_FROM_ABI - static void __append(_Str& __dest, const __path_string& __src) { + _LIBCPP_HIDE_FROM_ABI static void __append(_Str& __dest, const __path_string& __src) { _Narrower()(back_inserter(__dest), __src.data(), __src.data() + __src.size()); } }; -#endif /* !_LIBCPP_HAS_NO_CHAR8_T */ -#endif /* _LIBCPP_WIN32API */ +# endif /* !_LIBCPP_HAS_NO_CHAR8_T */ +# endif /* _LIBCPP_WIN32API */ -class _LIBCPP_TYPE_VIS path { +class _LIBCPP_EXPORTED_FROM_ABI path { template - using _EnableIfPathable = - typename enable_if<__is_pathable<_SourceOrIter>::value, _Tp>::type; + using _EnableIfPathable = __enable_if_t<__is_pathable<_SourceOrIter>::value, _Tp>; template using _SourceChar = typename __is_pathable<_Tp>::__char_type; @@ -451,101 +390,84 @@ class _LIBCPP_TYPE_VIS path { using _SourceCVT = _PathCVT<_SourceChar<_Tp> >; public: -#if defined(_LIBCPP_WIN32API) +# if defined(_LIBCPP_WIN32API) typedef wchar_t value_type; static constexpr value_type preferred_separator = L'\\'; -#else +# else typedef char value_type; static constexpr value_type preferred_separator = '/'; -#endif +# endif typedef basic_string string_type; typedef basic_string_view __string_view; - enum _LIBCPP_ENUM_VIS format : unsigned char { - auto_format, - native_format, - generic_format - }; + enum format : unsigned char { auto_format, native_format, generic_format }; // constructors and destructor _LIBCPP_HIDE_FROM_ABI path() noexcept {} _LIBCPP_HIDE_FROM_ABI path(const path& __p) : __pn_(__p.__pn_) {} - _LIBCPP_HIDE_FROM_ABI path(path&& __p) noexcept - : __pn_(_VSTD::move(__p.__pn_)) {} + _LIBCPP_HIDE_FROM_ABI path(path&& __p) noexcept : __pn_(std::move(__p.__pn_)) {} - _LIBCPP_HIDE_FROM_ABI - path(string_type&& __s, format = format::auto_format) noexcept - : __pn_(_VSTD::move(__s)) {} + _LIBCPP_HIDE_FROM_ABI path(string_type&& __s, format = format::auto_format) noexcept : __pn_(std::move(__s)) {} template > - _LIBCPP_HIDE_FROM_ABI - path(const _Source& __src, format = format::auto_format) { + _LIBCPP_HIDE_FROM_ABI path(const _Source& __src, format = format::auto_format) { _SourceCVT<_Source>::__append_source(__pn_, __src); } template - _LIBCPP_HIDE_FROM_ABI - path(_InputIt __first, _InputIt __last, format = format::auto_format) { + _LIBCPP_HIDE_FROM_ABI path(_InputIt __first, _InputIt __last, format = format::auto_format) { typedef typename iterator_traits<_InputIt>::value_type _ItVal; _PathCVT<_ItVal>::__append_range(__pn_, __first, __last); } -/* -#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) - // TODO Implement locale conversions. - template > - path(const _Source& __src, const locale& __loc, format = format::auto_format); - template - path(_InputIt __first, _InputIt _last, const locale& __loc, - format = format::auto_format); -#endif -*/ + /* + #if !defined(_LIBCPP_HAS_NO_LOCALIZATION) + // TODO Implement locale conversions. + template > + path(const _Source& __src, const locale& __loc, format = format::auto_format); + template + path(_InputIt __first, _InputIt _last, const locale& __loc, + format = format::auto_format); + #endif + */ - _LIBCPP_HIDE_FROM_ABI - ~path() = default; + _LIBCPP_HIDE_FROM_ABI ~path() = default; // assignments - _LIBCPP_HIDE_FROM_ABI - path& operator=(const path& __p) { + _LIBCPP_HIDE_FROM_ABI path& operator=(const path& __p) { __pn_ = __p.__pn_; return *this; } - _LIBCPP_HIDE_FROM_ABI - path& operator=(path&& __p) noexcept { - __pn_ = _VSTD::move(__p.__pn_); + _LIBCPP_HIDE_FROM_ABI path& operator=(path&& __p) noexcept { + __pn_ = std::move(__p.__pn_); return *this; } - _LIBCPP_HIDE_FROM_ABI - path& operator=(string_type&& __s) noexcept { - __pn_ = _VSTD::move(__s); + _LIBCPP_HIDE_FROM_ABI path& operator=(string_type&& __s) noexcept { + __pn_ = std::move(__s); return *this; } - _LIBCPP_HIDE_FROM_ABI - path& assign(string_type&& __s) noexcept { - __pn_ = _VSTD::move(__s); + _LIBCPP_HIDE_FROM_ABI path& assign(string_type&& __s) noexcept { + __pn_ = std::move(__s); return *this; } template - _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> - operator=(const _Source& __src) { + _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> operator=(const _Source& __src) { return this->assign(__src); } template - _LIBCPP_HIDE_FROM_ABI - _EnableIfPathable<_Source> assign(const _Source& __src) { + _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> assign(const _Source& __src) { __pn_.clear(); _SourceCVT<_Source>::__append_source(__pn_, __src); return *this; } template - _LIBCPP_HIDE_FROM_ABI - path& assign(_InputIt __first, _InputIt __last) { + _LIBCPP_HIDE_FROM_ABI path& assign(_InputIt __first, _InputIt __last) { typedef typename iterator_traits<_InputIt>::value_type _ItVal; __pn_.clear(); _PathCVT<_ItVal>::__append_range(__pn_, __first, __last); @@ -554,19 +476,17 @@ class _LIBCPP_TYPE_VIS path { public: // appends -#if defined(_LIBCPP_WIN32API) - _LIBCPP_HIDE_FROM_ABI - path& operator/=(const path& __p) { - auto __p_root_name = __p.__root_name(); +# if defined(_LIBCPP_WIN32API) + _LIBCPP_HIDE_FROM_ABI path& operator/=(const path& __p) { + auto __p_root_name = __p.__root_name(); auto __p_root_name_size = __p_root_name.size(); - if (__p.is_absolute() || - (!__p_root_name.empty() && __p_root_name != __string_view(root_name().__pn_))) { + if (__p.is_absolute() || (!__p_root_name.empty() && __p_root_name != __string_view(root_name().__pn_))) { __pn_ = __p.__pn_; return *this; } if (__p.has_root_directory()) { path __root_name_str = root_name(); - __pn_ = __root_name_str.native(); + __pn_ = __root_name_str.native(); __pn_ += __string_view(__p.__pn_).substr(__p_root_name_size); return *this; } @@ -576,25 +496,21 @@ class _LIBCPP_TYPE_VIS path { return *this; } template - _LIBCPP_INLINE_VISIBILITY _EnableIfPathable<_Source> - operator/=(const _Source& __src) { + _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> operator/=(const _Source& __src) { return operator/=(path(__src)); } template - _LIBCPP_HIDE_FROM_ABI - _EnableIfPathable<_Source> append(const _Source& __src) { + _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> append(const _Source& __src) { return operator/=(path(__src)); } template - _LIBCPP_HIDE_FROM_ABI - path& append(_InputIt __first, _InputIt __last) { + _LIBCPP_HIDE_FROM_ABI path& append(_InputIt __first, _InputIt __last) { return operator/=(path(__first, __last)); } -#else - _LIBCPP_HIDE_FROM_ABI - path& operator/=(const path& __p) { +# else + _LIBCPP_HIDE_FROM_ABI path& operator/=(const path& __p) { if (__p.is_absolute()) { __pn_ = __p.__pn_; return *this; @@ -609,17 +525,15 @@ class _LIBCPP_TYPE_VIS path { // is known at compile time to be "/' since the user almost certainly intended // to append a separator instead of overwriting the path with "/" template - _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> - operator/=(const _Source& __src) { + _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> operator/=(const _Source& __src) { return this->append(__src); } template - _LIBCPP_HIDE_FROM_ABI - _EnableIfPathable<_Source> append(const _Source& __src) { - using _Traits = __is_pathable<_Source>; - using _CVT = _PathCVT<_SourceChar<_Source> >; - bool __source_is_absolute = _VSTD_FS::__is_separator(_Traits::__first_or_null(__src)); + _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> append(const _Source& __src) { + using _Traits = __is_pathable<_Source>; + using _CVT = _PathCVT<_SourceChar<_Source> >; + bool __source_is_absolute = filesystem::__is_separator(_Traits::__first_or_null(__src)); if (__source_is_absolute) __pn_.clear(); else if (has_filename()) @@ -629,103 +543,87 @@ class _LIBCPP_TYPE_VIS path { } template - _LIBCPP_HIDE_FROM_ABI - path& append(_InputIt __first, _InputIt __last) { + _LIBCPP_HIDE_FROM_ABI path& append(_InputIt __first, _InputIt __last) { typedef typename iterator_traits<_InputIt>::value_type _ItVal; static_assert(__can_convert_char<_ItVal>::value, "Must convertible"); using _CVT = _PathCVT<_ItVal>; - if (__first != __last && _VSTD_FS::__is_separator(*__first)) + if (__first != __last && filesystem::__is_separator(*__first)) __pn_.clear(); else if (has_filename()) __pn_ += preferred_separator; _CVT::__append_range(__pn_, __first, __last); return *this; } -#endif +# endif // concatenation - _LIBCPP_HIDE_FROM_ABI - path& operator+=(const path& __x) { + _LIBCPP_HIDE_FROM_ABI path& operator+=(const path& __x) { __pn_ += __x.__pn_; return *this; } - _LIBCPP_HIDE_FROM_ABI - path& operator+=(const string_type& __x) { + _LIBCPP_HIDE_FROM_ABI path& operator+=(const string_type& __x) { __pn_ += __x; return *this; } - _LIBCPP_HIDE_FROM_ABI - path& operator+=(__string_view __x) { + _LIBCPP_HIDE_FROM_ABI path& operator+=(__string_view __x) { __pn_ += __x; return *this; } - _LIBCPP_HIDE_FROM_ABI - path& operator+=(const value_type* __x) { + _LIBCPP_HIDE_FROM_ABI path& operator+=(const value_type* __x) { __pn_ += __x; return *this; } - _LIBCPP_HIDE_FROM_ABI - path& operator+=(value_type __x) { + _LIBCPP_HIDE_FROM_ABI path& operator+=(value_type __x) { __pn_ += __x; return *this; } - template - _LIBCPP_HIDE_FROM_ABI - typename enable_if<__can_convert_char<_ECharT>::value, path&>::type - operator+=(_ECharT __x) { - _PathCVT<_ECharT>::__append_source(__pn_, - basic_string_view<_ECharT>(&__x, 1)); + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI path& operator+=(_ECharT __x) { + _PathCVT<_ECharT>::__append_source(__pn_, basic_string_view<_ECharT>(&__x, 1)); return *this; } template - _LIBCPP_HIDE_FROM_ABI - _EnableIfPathable<_Source> operator+=(const _Source& __x) { + _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> operator+=(const _Source& __x) { return this->concat(__x); } template - _LIBCPP_HIDE_FROM_ABI - _EnableIfPathable<_Source> concat(const _Source& __x) { + _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> concat(const _Source& __x) { _SourceCVT<_Source>::__append_source(__pn_, __x); return *this; } template - _LIBCPP_HIDE_FROM_ABI - path& concat(_InputIt __first, _InputIt __last) { + _LIBCPP_HIDE_FROM_ABI path& concat(_InputIt __first, _InputIt __last) { typedef typename iterator_traits<_InputIt>::value_type _ItVal; _PathCVT<_ItVal>::__append_range(__pn_, __first, __last); return *this; } // modifiers - _LIBCPP_HIDE_FROM_ABI - void clear() noexcept { __pn_.clear(); } + _LIBCPP_HIDE_FROM_ABI void clear() noexcept { __pn_.clear(); } - _LIBCPP_HIDE_FROM_ABI - path& make_preferred() { -#if defined(_LIBCPP_WIN32API) - _VSTD::replace(__pn_.begin(), __pn_.end(), L'/', L'\\'); -#endif + _LIBCPP_HIDE_FROM_ABI path& make_preferred() { +# if defined(_LIBCPP_WIN32API) + std::replace(__pn_.begin(), __pn_.end(), L'/', L'\\'); +# endif return *this; } - _LIBCPP_HIDE_FROM_ABI - path& remove_filename() { + _LIBCPP_HIDE_FROM_ABI path& remove_filename() { auto __fname = __filename(); if (!__fname.empty()) __pn_.erase(__fname.data() - __pn_.data()); return *this; } - _LIBCPP_HIDE_FROM_ABI - path& replace_filename(const path& __replacement) { + _LIBCPP_HIDE_FROM_ABI path& replace_filename(const path& __replacement) { remove_filename(); return (*this /= __replacement); } @@ -751,7 +649,7 @@ class _LIBCPP_TYPE_VIS path { friend _LIBCPP_HIDE_FROM_ABI bool operator>=(const path& __lhs, const path& __rhs) noexcept { return __lhs.__compare(__rhs.__pn_) >= 0; } -# else // _LIBCPP_STD_VER <= 17 +# else // _LIBCPP_STD_VER <= 17 friend _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(const path& __lhs, const path& __rhs) noexcept { return __lhs.__compare(__rhs.__pn_) <=> 0; } @@ -763,39 +661,31 @@ class _LIBCPP_TYPE_VIS path { return __result; } - _LIBCPP_HIDE_FROM_ABI - void swap(path& __rhs) noexcept { __pn_.swap(__rhs.__pn_); } + _LIBCPP_HIDE_FROM_ABI void swap(path& __rhs) noexcept { __pn_.swap(__rhs.__pn_); } // private helper to allow reserving memory in the path - _LIBCPP_HIDE_FROM_ABI - void __reserve(size_t __s) { __pn_.reserve(__s); } + _LIBCPP_HIDE_FROM_ABI void __reserve(size_t __s) { __pn_.reserve(__s); } // native format observers - _LIBCPP_HIDE_FROM_ABI - const string_type& native() const noexcept { return __pn_; } + _LIBCPP_HIDE_FROM_ABI const string_type& native() const noexcept { return __pn_; } - _LIBCPP_HIDE_FROM_ABI - const value_type* c_str() const noexcept { return __pn_.c_str(); } + _LIBCPP_HIDE_FROM_ABI const value_type* c_str() const noexcept { return __pn_.c_str(); } _LIBCPP_HIDE_FROM_ABI operator string_type() const { return __pn_; } -#if defined(_LIBCPP_WIN32API) - _LIBCPP_HIDE_FROM_ABI _VSTD::wstring wstring() const { return __pn_; } +# if defined(_LIBCPP_WIN32API) + _LIBCPP_HIDE_FROM_ABI std::wstring wstring() const { return __pn_; } - _LIBCPP_HIDE_FROM_ABI - _VSTD::wstring generic_wstring() const { - _VSTD::wstring __s; + _LIBCPP_HIDE_FROM_ABI std::wstring generic_wstring() const { + std::wstring __s; __s.resize(__pn_.size()); - _VSTD::replace_copy(__pn_.begin(), __pn_.end(), __s.begin(), '\\', '/'); + std::replace_copy(__pn_.begin(), __pn_.end(), __s.begin(), '\\', '/'); return __s; } -#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) - template , - class _Allocator = allocator<_ECharT> > - _LIBCPP_HIDE_FROM_ABI - basic_string<_ECharT, _Traits, _Allocator> - string(const _Allocator& __a = _Allocator()) const { +# if !defined(_LIBCPP_HAS_NO_LOCALIZATION) + template , class _Allocator = allocator<_ECharT> > + _LIBCPP_HIDE_FROM_ABI basic_string<_ECharT, _Traits, _Allocator> string(const _Allocator& __a = _Allocator()) const { using _Str = basic_string<_ECharT, _Traits, _Allocator>; _Str __s(__a); __s.reserve(__pn_.size()); @@ -803,9 +693,7 @@ class _LIBCPP_TYPE_VIS path { return __s; } - _LIBCPP_HIDE_FROM_ABI _VSTD::string string() const { - return string(); - } + _LIBCPP_HIDE_FROM_ABI std::string string() const { return string(); } _LIBCPP_HIDE_FROM_ABI __u8_string u8string() const { using _CVT = __narrow_to_utf8; __u8_string __s; @@ -814,54 +702,43 @@ class _LIBCPP_TYPE_VIS path { return __s; } - _LIBCPP_HIDE_FROM_ABI _VSTD::u16string u16string() const { - return string(); - } - _LIBCPP_HIDE_FROM_ABI _VSTD::u32string u32string() const { - return string(); - } + _LIBCPP_HIDE_FROM_ABI std::u16string u16string() const { return string(); } + _LIBCPP_HIDE_FROM_ABI std::u32string u32string() const { return string(); } // generic format observers - template , - class _Allocator = allocator<_ECharT> > - _LIBCPP_HIDE_FROM_ABI - basic_string<_ECharT, _Traits, _Allocator> + template , class _Allocator = allocator<_ECharT> > + _LIBCPP_HIDE_FROM_ABI basic_string<_ECharT, _Traits, _Allocator> generic_string(const _Allocator& __a = _Allocator()) const { using _Str = basic_string<_ECharT, _Traits, _Allocator>; - _Str __s = string<_ECharT, _Traits, _Allocator>(__a); + _Str __s = string<_ECharT, _Traits, _Allocator>(__a); // Note: This (and generic_u8string below) is slightly suboptimal as // it iterates twice over the string; once to convert it to the right // character type, and once to replace path delimiters. - _VSTD::replace(__s.begin(), __s.end(), - static_cast<_ECharT>('\\'), static_cast<_ECharT>('/')); + std::replace(__s.begin(), __s.end(), static_cast<_ECharT>('\\'), static_cast<_ECharT>('/')); return __s; } - _LIBCPP_HIDE_FROM_ABI _VSTD::string generic_string() const { return generic_string(); } - _LIBCPP_HIDE_FROM_ABI _VSTD::u16string generic_u16string() const { return generic_string(); } - _LIBCPP_HIDE_FROM_ABI _VSTD::u32string generic_u32string() const { return generic_string(); } - _LIBCPP_HIDE_FROM_ABI - __u8_string generic_u8string() const { + _LIBCPP_HIDE_FROM_ABI std::string generic_string() const { return generic_string(); } + _LIBCPP_HIDE_FROM_ABI std::u16string generic_u16string() const { return generic_string(); } + _LIBCPP_HIDE_FROM_ABI std::u32string generic_u32string() const { return generic_string(); } + _LIBCPP_HIDE_FROM_ABI __u8_string generic_u8string() const { __u8_string __s = u8string(); - _VSTD::replace(__s.begin(), __s.end(), '\\', '/'); + std::replace(__s.begin(), __s.end(), '\\', '/'); return __s; } -#endif /* !_LIBCPP_HAS_NO_LOCALIZATION */ -#else /* _LIBCPP_WIN32API */ +# endif /* !_LIBCPP_HAS_NO_LOCALIZATION */ +# else /* _LIBCPP_WIN32API */ - _LIBCPP_HIDE_FROM_ABI _VSTD::string string() const { return __pn_; } -#ifndef _LIBCPP_HAS_NO_CHAR8_T - _LIBCPP_HIDE_FROM_ABI _VSTD::u8string u8string() const { return _VSTD::u8string(__pn_.begin(), __pn_.end()); } -#else - _LIBCPP_HIDE_FROM_ABI _VSTD::string u8string() const { return __pn_; } -#endif + _LIBCPP_HIDE_FROM_ABI std::string string() const { return __pn_; } +# ifndef _LIBCPP_HAS_NO_CHAR8_T + _LIBCPP_HIDE_FROM_ABI std::u8string u8string() const { return std::u8string(__pn_.begin(), __pn_.end()); } +# else + _LIBCPP_HIDE_FROM_ABI std::string u8string() const { return __pn_; } +# endif -#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) - template , - class _Allocator = allocator<_ECharT> > - _LIBCPP_HIDE_FROM_ABI - basic_string<_ECharT, _Traits, _Allocator> - string(const _Allocator& __a = _Allocator()) const { +# if !defined(_LIBCPP_HAS_NO_LOCALIZATION) + template , class _Allocator = allocator<_ECharT> > + _LIBCPP_HIDE_FROM_ABI basic_string<_ECharT, _Traits, _Allocator> string(const _Allocator& __a = _Allocator()) const { using _CVT = __widen_from_utf8; using _Str = basic_string<_ECharT, _Traits, _Allocator>; _Str __s(__a); @@ -870,43 +747,35 @@ class _LIBCPP_TYPE_VIS path { return __s; } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS - _LIBCPP_HIDE_FROM_ABI _VSTD::wstring wstring() const { - return string(); - } -#endif - _LIBCPP_HIDE_FROM_ABI _VSTD::u16string u16string() const { - return string(); - } - _LIBCPP_HIDE_FROM_ABI _VSTD::u32string u32string() const { - return string(); - } -#endif /* !_LIBCPP_HAS_NO_LOCALIZATION */ +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + _LIBCPP_HIDE_FROM_ABI std::wstring wstring() const { return string(); } +# endif + _LIBCPP_HIDE_FROM_ABI std::u16string u16string() const { return string(); } + _LIBCPP_HIDE_FROM_ABI std::u32string u32string() const { return string(); } +# endif /* !_LIBCPP_HAS_NO_LOCALIZATION */ // generic format observers - _LIBCPP_HIDE_FROM_ABI _VSTD::string generic_string() const { return __pn_; } -#ifndef _LIBCPP_HAS_NO_CHAR8_T - _LIBCPP_HIDE_FROM_ABI _VSTD::u8string generic_u8string() const { return _VSTD::u8string(__pn_.begin(), __pn_.end()); } -#else - _LIBCPP_HIDE_FROM_ABI _VSTD::string generic_u8string() const { return __pn_; } -#endif - -#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) - template , - class _Allocator = allocator<_ECharT> > - _LIBCPP_HIDE_FROM_ABI - basic_string<_ECharT, _Traits, _Allocator> + _LIBCPP_HIDE_FROM_ABI std::string generic_string() const { return __pn_; } +# ifndef _LIBCPP_HAS_NO_CHAR8_T + _LIBCPP_HIDE_FROM_ABI std::u8string generic_u8string() const { return std::u8string(__pn_.begin(), __pn_.end()); } +# else + _LIBCPP_HIDE_FROM_ABI std::string generic_u8string() const { return __pn_; } +# endif + +# if !defined(_LIBCPP_HAS_NO_LOCALIZATION) + template , class _Allocator = allocator<_ECharT> > + _LIBCPP_HIDE_FROM_ABI basic_string<_ECharT, _Traits, _Allocator> generic_string(const _Allocator& __a = _Allocator()) const { return string<_ECharT, _Traits, _Allocator>(__a); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS - _LIBCPP_HIDE_FROM_ABI _VSTD::wstring generic_wstring() const { return string(); } -#endif - _LIBCPP_HIDE_FROM_ABI _VSTD::u16string generic_u16string() const { return string(); } - _LIBCPP_HIDE_FROM_ABI _VSTD::u32string generic_u32string() const { return string(); } -#endif /* !_LIBCPP_HAS_NO_LOCALIZATION */ -#endif /* !_LIBCPP_WIN32API */ +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + _LIBCPP_HIDE_FROM_ABI std::wstring generic_wstring() const { return string(); } +# endif + _LIBCPP_HIDE_FROM_ABI std::u16string generic_u16string() const { return string(); } + _LIBCPP_HIDE_FROM_ABI std::u32string generic_u32string() const { return string(); } +# endif /* !_LIBCPP_HAS_NO_LOCALIZATION */ +# endif /* !_LIBCPP_WIN32API */ private: int __compare(__string_view) const; @@ -921,80 +790,43 @@ class _LIBCPP_TYPE_VIS path { public: // compare - _LIBCPP_HIDE_FROM_ABI int compare(const path& __p) const noexcept { - return __compare(__p.__pn_); - } - _LIBCPP_HIDE_FROM_ABI int compare(const string_type& __s) const { - return __compare(__s); - } - _LIBCPP_HIDE_FROM_ABI int compare(__string_view __s) const { - return __compare(__s); - } - _LIBCPP_HIDE_FROM_ABI int compare(const value_type* __s) const { - return __compare(__s); - } + _LIBCPP_HIDE_FROM_ABI int compare(const path& __p) const noexcept { return __compare(__p.__pn_); } + _LIBCPP_HIDE_FROM_ABI int compare(const string_type& __s) const { return __compare(__s); } + _LIBCPP_HIDE_FROM_ABI int compare(__string_view __s) const { return __compare(__s); } + _LIBCPP_HIDE_FROM_ABI int compare(const value_type* __s) const { return __compare(__s); } // decomposition - _LIBCPP_HIDE_FROM_ABI path root_name() const { - return string_type(__root_name()); - } - _LIBCPP_HIDE_FROM_ABI path root_directory() const { - return string_type(__root_directory()); - } + _LIBCPP_HIDE_FROM_ABI path root_name() const { return string_type(__root_name()); } + _LIBCPP_HIDE_FROM_ABI path root_directory() const { return string_type(__root_directory()); } _LIBCPP_HIDE_FROM_ABI path root_path() const { -#if defined(_LIBCPP_WIN32API) +# if defined(_LIBCPP_WIN32API) return string_type(__root_path_raw()); -#else +# else return root_name().append(string_type(__root_directory())); -#endif - } - _LIBCPP_HIDE_FROM_ABI path relative_path() const { - return string_type(__relative_path()); - } - _LIBCPP_HIDE_FROM_ABI path parent_path() const { - return string_type(__parent_path()); - } - _LIBCPP_HIDE_FROM_ABI path filename() const { - return string_type(__filename()); +# endif } + _LIBCPP_HIDE_FROM_ABI path relative_path() const { return string_type(__relative_path()); } + _LIBCPP_HIDE_FROM_ABI path parent_path() const { return string_type(__parent_path()); } + _LIBCPP_HIDE_FROM_ABI path filename() const { return string_type(__filename()); } _LIBCPP_HIDE_FROM_ABI path stem() const { return string_type(__stem()); } - _LIBCPP_HIDE_FROM_ABI path extension() const { - return string_type(__extension()); - } + _LIBCPP_HIDE_FROM_ABI path extension() const { return string_type(__extension()); } // query - _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI bool - empty() const noexcept { - return __pn_.empty(); - } - - _LIBCPP_HIDE_FROM_ABI bool has_root_name() const { - return !__root_name().empty(); - } - _LIBCPP_HIDE_FROM_ABI bool has_root_directory() const { - return !__root_directory().empty(); - } - _LIBCPP_HIDE_FROM_ABI bool has_root_path() const { - return !__root_path_raw().empty(); - } - _LIBCPP_HIDE_FROM_ABI bool has_relative_path() const { - return !__relative_path().empty(); - } - _LIBCPP_HIDE_FROM_ABI bool has_parent_path() const { - return !__parent_path().empty(); - } - _LIBCPP_HIDE_FROM_ABI bool has_filename() const { - return !__filename().empty(); - } + _LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI bool empty() const noexcept { return __pn_.empty(); } + + _LIBCPP_HIDE_FROM_ABI bool has_root_name() const { return !__root_name().empty(); } + _LIBCPP_HIDE_FROM_ABI bool has_root_directory() const { return !__root_directory().empty(); } + _LIBCPP_HIDE_FROM_ABI bool has_root_path() const { return !__root_path_raw().empty(); } + _LIBCPP_HIDE_FROM_ABI bool has_relative_path() const { return !__relative_path().empty(); } + _LIBCPP_HIDE_FROM_ABI bool has_parent_path() const { return !__parent_path().empty(); } + _LIBCPP_HIDE_FROM_ABI bool has_filename() const { return !__filename().empty(); } _LIBCPP_HIDE_FROM_ABI bool has_stem() const { return !__stem().empty(); } - _LIBCPP_HIDE_FROM_ABI bool has_extension() const { - return !__extension().empty(); - } + _LIBCPP_HIDE_FROM_ABI bool has_extension() const { return !__extension().empty(); } _LIBCPP_HIDE_FROM_ABI bool is_absolute() const { -#if defined(_LIBCPP_WIN32API) +# if defined(_LIBCPP_WIN32API) __string_view __root_name_str = __root_name(); - __string_view __root_dir = __root_directory(); + __string_view __root_dir = __root_directory(); if (__root_name_str.size() == 2 && __root_name_str[1] == ':') { // A drive letter with no root directory is relative, e.g. x:example. return !__root_dir.empty(); @@ -1011,9 +843,9 @@ class _LIBCPP_TYPE_VIS path { return false; // Seems to be a server root name return true; -#else +# else return has_root_directory(); -#endif +# endif } _LIBCPP_HIDE_FROM_ABI bool is_relative() const { return !is_absolute(); } @@ -1029,30 +861,30 @@ class _LIBCPP_TYPE_VIS path { } // iterators - class _LIBCPP_TYPE_VIS iterator; + class _LIBCPP_EXPORTED_FROM_ABI iterator; typedef iterator const_iterator; iterator begin() const; iterator end() const; -#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) - template - _LIBCPP_HIDE_FROM_ABI friend - typename enable_if::value && - is_same<_Traits, char_traits >::value, - basic_ostream<_CharT, _Traits>&>::type - operator<<(basic_ostream<_CharT, _Traits>& __os, const path& __p) { - __os << _VSTD::__quoted(__p.native()); +# if !defined(_LIBCPP_HAS_NO_LOCALIZATION) + template < + class _CharT, + class _Traits, + __enable_if_t::value && is_same<_Traits, char_traits >::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI friend basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, const path& __p) { + __os << std::__quoted(__p.native()); return __os; } - template - _LIBCPP_HIDE_FROM_ABI friend - typename enable_if::value || - !is_same<_Traits, char_traits >::value, - basic_ostream<_CharT, _Traits>&>::type - operator<<(basic_ostream<_CharT, _Traits>& __os, const path& __p) { - __os << _VSTD::__quoted(__p.string<_CharT, _Traits>()); + template < + class _CharT, + class _Traits, + __enable_if_t::value || !is_same<_Traits, char_traits >::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI friend basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, const path& __p) { + __os << std::__quoted(__p.string<_CharT, _Traits>()); return __os; } @@ -1060,32 +892,41 @@ class _LIBCPP_TYPE_VIS path { _LIBCPP_HIDE_FROM_ABI friend basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __is, path& __p) { basic_string<_CharT, _Traits> __tmp; - __is >> _VSTD::__quoted(__tmp); + __is >> std::__quoted(__tmp); __p = __tmp; return __is; } -#endif // !_LIBCPP_HAS_NO_LOCALIZATION +# endif // !_LIBCPP_HAS_NO_LOCALIZATION private: - inline _LIBCPP_HIDE_FROM_ABI path& - __assign_view(__string_view const& __s) noexcept { + inline _LIBCPP_HIDE_FROM_ABI path& __assign_view(__string_view const& __s) { __pn_ = string_type(__s); return *this; } string_type __pn_; }; -inline _LIBCPP_HIDE_FROM_ABI void swap(path& __lhs, path& __rhs) noexcept { - __lhs.swap(__rhs); -} +inline _LIBCPP_HIDE_FROM_ABI void swap(path& __lhs, path& __rhs) noexcept { __lhs.swap(__rhs); } -_LIBCPP_FUNC_VIS -size_t hash_value(const path& __p) noexcept; +_LIBCPP_EXPORTED_FROM_ABI size_t hash_value(const path& __p) noexcept; -_LIBCPP_AVAILABILITY_FILESYSTEM_POP +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_POP _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +_LIBCPP_BEGIN_NAMESPACE_STD + +template <> +struct _LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY hash : __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(filesystem::path const& __p) const noexcept { + return filesystem::hash_value(__p); + } +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_POP_MACROS #endif // _LIBCPP___FILESYSTEM_PATH_H diff --git a/include/c++/v1/__filesystem/path_iterator.h b/include/c++/v1/__filesystem/path_iterator.h index 6f2baf8f..f4d486d8 100644 --- a/include/c++/v1/__filesystem/path_iterator.h +++ b/include/c++/v1/__filesystem/path_iterator.h @@ -11,7 +11,6 @@ #define _LIBCPP___FILESYSTEM_PATH_ITERATOR_H #include <__assert> -#include <__availability> #include <__config> #include <__filesystem/path.h> #include <__iterator/iterator_traits.h> @@ -23,13 +22,11 @@ # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH - -class _LIBCPP_TYPE_VIS path::iterator { +class _LIBCPP_EXPORTED_FROM_ABI path::iterator { public: enum _ParserState : unsigned char { _Singular, @@ -51,49 +48,37 @@ class _LIBCPP_TYPE_VIS path::iterator { typedef path reference; public: - _LIBCPP_INLINE_VISIBILITY - iterator() - : __stashed_elem_(), __path_ptr_(nullptr), __entry_(), - __state_(_Singular) {} + _LIBCPP_HIDE_FROM_ABI iterator() : __stashed_elem_(), __path_ptr_(nullptr), __entry_(), __state_(_Singular) {} - iterator(const iterator&) = default; - ~iterator() = default; + _LIBCPP_HIDE_FROM_ABI iterator(const iterator&) = default; + _LIBCPP_HIDE_FROM_ABI ~iterator() = default; - iterator& operator=(const iterator&) = default; + _LIBCPP_HIDE_FROM_ABI iterator& operator=(const iterator&) = default; - _LIBCPP_INLINE_VISIBILITY - reference operator*() const { return __stashed_elem_; } + _LIBCPP_HIDE_FROM_ABI reference operator*() const { return __stashed_elem_; } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const { return &__stashed_elem_; } + _LIBCPP_HIDE_FROM_ABI pointer operator->() const { return &__stashed_elem_; } - _LIBCPP_INLINE_VISIBILITY - iterator& operator++() { - _LIBCPP_ASSERT(__state_ != _Singular, - "attempting to increment a singular iterator"); - _LIBCPP_ASSERT(__state_ != _AtEnd, - "attempting to increment the end iterator"); + _LIBCPP_HIDE_FROM_ABI iterator& operator++() { + _LIBCPP_ASSERT_NON_NULL(__state_ != _Singular, "attempting to increment a singular iterator"); + _LIBCPP_ASSERT_UNCATEGORIZED(__state_ != _AtEnd, "attempting to increment the end iterator"); return __increment(); } - _LIBCPP_INLINE_VISIBILITY - iterator operator++(int) { + _LIBCPP_HIDE_FROM_ABI iterator operator++(int) { iterator __it(*this); this->operator++(); return __it; } - _LIBCPP_INLINE_VISIBILITY - iterator& operator--() { - _LIBCPP_ASSERT(__state_ != _Singular, - "attempting to decrement a singular iterator"); - _LIBCPP_ASSERT(__entry_.data() != __path_ptr_->native().data(), - "attempting to decrement the begin iterator"); + _LIBCPP_HIDE_FROM_ABI iterator& operator--() { + _LIBCPP_ASSERT_NON_NULL(__state_ != _Singular, "attempting to decrement a singular iterator"); + _LIBCPP_ASSERT_UNCATEGORIZED( + __entry_.data() != __path_ptr_->native().data(), "attempting to decrement the begin iterator"); return __decrement(); } - _LIBCPP_INLINE_VISIBILITY - iterator operator--(int) { + _LIBCPP_HIDE_FROM_ABI iterator operator--(int) { iterator __it(*this); this->operator--(); return __it; @@ -102,8 +87,7 @@ class _LIBCPP_TYPE_VIS path::iterator { private: friend class path; - inline _LIBCPP_INLINE_VISIBILITY friend bool operator==(const iterator&, - const iterator&); + inline _LIBCPP_HIDE_FROM_ABI friend bool operator==(const iterator&, const iterator&); iterator& __increment(); iterator& __decrement(); @@ -114,21 +98,18 @@ class _LIBCPP_TYPE_VIS path::iterator { _ParserState __state_; }; -inline _LIBCPP_INLINE_VISIBILITY bool operator==(const path::iterator& __lhs, - const path::iterator& __rhs) { - return __lhs.__path_ptr_ == __rhs.__path_ptr_ && - __lhs.__entry_.data() == __rhs.__entry_.data(); +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY +inline _LIBCPP_HIDE_FROM_ABI bool operator==(const path::iterator& __lhs, const path::iterator& __rhs) { + return __lhs.__path_ptr_ == __rhs.__path_ptr_ && __lhs.__entry_.data() == __rhs.__entry_.data(); } -inline _LIBCPP_INLINE_VISIBILITY bool operator!=(const path::iterator& __lhs, - const path::iterator& __rhs) { +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY +inline _LIBCPP_HIDE_FROM_ABI bool operator!=(const path::iterator& __lhs, const path::iterator& __rhs) { return !(__lhs == __rhs); } -_LIBCPP_AVAILABILITY_FILESYSTEM_POP - _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_PATH_ITERATOR_H diff --git a/include/c++/v1/__filesystem/perm_options.h b/include/c++/v1/__filesystem/perm_options.h index 4aba302e..64c16ee6 100644 --- a/include/c++/v1/__filesystem/perm_options.h +++ b/include/c++/v1/__filesystem/perm_options.h @@ -10,68 +10,48 @@ #ifndef _LIBCPP___FILESYSTEM_PERM_OPTIONS_H #define _LIBCPP___FILESYSTEM_PERM_OPTIONS_H -#include <__availability> #include <__config> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH +enum class perm_options : unsigned char { replace = 1, add = 2, remove = 4, nofollow = 8 }; -enum class _LIBCPP_ENUM_VIS perm_options : unsigned char { - replace = 1, - add = 2, - remove = 4, - nofollow = 8 -}; - -_LIBCPP_INLINE_VISIBILITY -inline constexpr perm_options operator&(perm_options __lhs, perm_options __rhs) { - return static_cast(static_cast(__lhs) & - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr perm_options operator&(perm_options __lhs, perm_options __rhs) { + return static_cast(static_cast(__lhs) & static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr perm_options operator|(perm_options __lhs, perm_options __rhs) { - return static_cast(static_cast(__lhs) | - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr perm_options operator|(perm_options __lhs, perm_options __rhs) { + return static_cast(static_cast(__lhs) | static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr perm_options operator^(perm_options __lhs, perm_options __rhs) { - return static_cast(static_cast(__lhs) ^ - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr perm_options operator^(perm_options __lhs, perm_options __rhs) { + return static_cast(static_cast(__lhs) ^ static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr perm_options operator~(perm_options __lhs) { +_LIBCPP_HIDE_FROM_ABI inline constexpr perm_options operator~(perm_options __lhs) { return static_cast(~static_cast(__lhs)); } -_LIBCPP_INLINE_VISIBILITY -inline perm_options& operator&=(perm_options& __lhs, perm_options __rhs) { +_LIBCPP_HIDE_FROM_ABI inline perm_options& operator&=(perm_options& __lhs, perm_options __rhs) { return __lhs = __lhs & __rhs; } -_LIBCPP_INLINE_VISIBILITY -inline perm_options& operator|=(perm_options& __lhs, perm_options __rhs) { +_LIBCPP_HIDE_FROM_ABI inline perm_options& operator|=(perm_options& __lhs, perm_options __rhs) { return __lhs = __lhs | __rhs; } -_LIBCPP_INLINE_VISIBILITY -inline perm_options& operator^=(perm_options& __lhs, perm_options __rhs) { +_LIBCPP_HIDE_FROM_ABI inline perm_options& operator^=(perm_options& __lhs, perm_options __rhs) { return __lhs = __lhs ^ __rhs; } -_LIBCPP_AVAILABILITY_FILESYSTEM_POP - _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_PERM_OPTIONS_H diff --git a/include/c++/v1/__filesystem/perms.h b/include/c++/v1/__filesystem/perms.h index df459005..458f1e6e 100644 --- a/include/c++/v1/__filesystem/perms.h +++ b/include/c++/v1/__filesystem/perms.h @@ -10,86 +10,71 @@ #ifndef _LIBCPP___FILESYSTEM_PERMS_H #define _LIBCPP___FILESYSTEM_PERMS_H -#include <__availability> #include <__config> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH - // On Windows, these permission bits map to one single readonly flag per // file, and the executable bit is always returned as set. When setting // permissions, as long as the write bit is set for either owner, group or // others, the readonly flag is cleared. -enum class _LIBCPP_ENUM_VIS perms : unsigned { +enum class perms : unsigned { none = 0, - owner_read = 0400, + owner_read = 0400, owner_write = 0200, - owner_exec = 0100, - owner_all = 0700, + owner_exec = 0100, + owner_all = 0700, - group_read = 040, + group_read = 040, group_write = 020, - group_exec = 010, - group_all = 070, + group_exec = 010, + group_all = 070, - others_read = 04, + others_read = 04, others_write = 02, - others_exec = 01, - others_all = 07, + others_exec = 01, + others_all = 07, all = 0777, - set_uid = 04000, - set_gid = 02000, + set_uid = 04000, + set_gid = 02000, sticky_bit = 01000, - mask = 07777, - unknown = 0xFFFF, + mask = 07777, + unknown = 0xFFFF, }; -_LIBCPP_INLINE_VISIBILITY -inline constexpr perms operator&(perms __lhs, perms __rhs) { - return static_cast(static_cast(__lhs) & - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr perms operator&(perms __lhs, perms __rhs) { + return static_cast(static_cast(__lhs) & static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr perms operator|(perms __lhs, perms __rhs) { - return static_cast(static_cast(__lhs) | - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr perms operator|(perms __lhs, perms __rhs) { + return static_cast(static_cast(__lhs) | static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr perms operator^(perms __lhs, perms __rhs) { - return static_cast(static_cast(__lhs) ^ - static_cast(__rhs)); +_LIBCPP_HIDE_FROM_ABI inline constexpr perms operator^(perms __lhs, perms __rhs) { + return static_cast(static_cast(__lhs) ^ static_cast(__rhs)); } -_LIBCPP_INLINE_VISIBILITY -inline constexpr perms operator~(perms __lhs) { +_LIBCPP_HIDE_FROM_ABI inline constexpr perms operator~(perms __lhs) { return static_cast(~static_cast(__lhs)); } -_LIBCPP_INLINE_VISIBILITY -inline perms& operator&=(perms& __lhs, perms __rhs) { return __lhs = __lhs & __rhs; } - -_LIBCPP_INLINE_VISIBILITY -inline perms& operator|=(perms& __lhs, perms __rhs) { return __lhs = __lhs | __rhs; } +_LIBCPP_HIDE_FROM_ABI inline perms& operator&=(perms& __lhs, perms __rhs) { return __lhs = __lhs & __rhs; } -_LIBCPP_INLINE_VISIBILITY -inline perms& operator^=(perms& __lhs, perms __rhs) { return __lhs = __lhs ^ __rhs; } +_LIBCPP_HIDE_FROM_ABI inline perms& operator|=(perms& __lhs, perms __rhs) { return __lhs = __lhs | __rhs; } -_LIBCPP_AVAILABILITY_FILESYSTEM_POP +_LIBCPP_HIDE_FROM_ABI inline perms& operator^=(perms& __lhs, perms __rhs) { return __lhs = __lhs ^ __rhs; } _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_PERMS_H diff --git a/include/c++/v1/__filesystem/recursive_directory_iterator.h b/include/c++/v1/__filesystem/recursive_directory_iterator.h index b20d201f..caa1396e 100644 --- a/include/c++/v1/__filesystem/recursive_directory_iterator.h +++ b/include/c++/v1/__filesystem/recursive_directory_iterator.h @@ -10,176 +10,155 @@ #ifndef _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H #define _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H -#include <__availability> #include <__config> #include <__filesystem/directory_entry.h> #include <__filesystem/directory_options.h> #include <__filesystem/path.h> +#include <__iterator/default_sentinel.h> #include <__iterator/iterator_traits.h> #include <__memory/shared_ptr.h> #include <__ranges/enable_borrowed_range.h> #include <__ranges/enable_view.h> +#include <__system_error/error_code.h> +#include <__utility/move.h> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM) _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_PUSH class recursive_directory_iterator { public: - using value_type = directory_entry; - using difference_type = ptrdiff_t; - using pointer = directory_entry const*; - using reference = directory_entry const&; + using value_type = directory_entry; + using difference_type = ptrdiff_t; + using pointer = directory_entry const*; + using reference = directory_entry const&; using iterator_category = input_iterator_tag; public: // constructors and destructor - _LIBCPP_INLINE_VISIBILITY - recursive_directory_iterator() noexcept : __rec_(false) {} + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator() noexcept : __rec_(false) {} - _LIBCPP_INLINE_VISIBILITY - explicit recursive_directory_iterator( + _LIBCPP_HIDE_FROM_ABI explicit recursive_directory_iterator( const path& __p, directory_options __xoptions = directory_options::none) : recursive_directory_iterator(__p, __xoptions, nullptr) {} - _LIBCPP_INLINE_VISIBILITY - recursive_directory_iterator(const path& __p, directory_options __xoptions, - error_code& __ec) + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(const path& __p, directory_options __xoptions, error_code& __ec) : recursive_directory_iterator(__p, __xoptions, &__ec) {} - _LIBCPP_INLINE_VISIBILITY - recursive_directory_iterator(const path& __p, error_code& __ec) + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(const path& __p, error_code& __ec) : recursive_directory_iterator(__p, directory_options::none, &__ec) {} - recursive_directory_iterator(const recursive_directory_iterator&) = default; - recursive_directory_iterator(recursive_directory_iterator&&) = default; + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(const recursive_directory_iterator&) = default; + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(recursive_directory_iterator&&) = default; - recursive_directory_iterator& - operator=(const recursive_directory_iterator&) = default; + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default; - _LIBCPP_INLINE_VISIBILITY - recursive_directory_iterator& - operator=(recursive_directory_iterator&& __o) noexcept { + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& operator=(recursive_directory_iterator&& __o) noexcept { // non-default implementation provided to support self-move assign. if (this != &__o) { - __imp_ = _VSTD::move(__o.__imp_); + __imp_ = std::move(__o.__imp_); __rec_ = __o.__rec_; } return *this; } - ~recursive_directory_iterator() = default; + _LIBCPP_HIDE_FROM_ABI ~recursive_directory_iterator() = default; - _LIBCPP_INLINE_VISIBILITY - const directory_entry& operator*() const { return __dereference(); } + _LIBCPP_HIDE_FROM_ABI const directory_entry& operator*() const { return __dereference(); } - _LIBCPP_INLINE_VISIBILITY - const directory_entry* operator->() const { return &__dereference(); } + _LIBCPP_HIDE_FROM_ABI const directory_entry* operator->() const { return &__dereference(); } - recursive_directory_iterator& operator++() { return __increment(); } + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& operator++() { return __increment(); } - _LIBCPP_INLINE_VISIBILITY - __dir_element_proxy operator++(int) { + _LIBCPP_HIDE_FROM_ABI __dir_element_proxy operator++(int) { __dir_element_proxy __p(**this); __increment(); return __p; } - _LIBCPP_INLINE_VISIBILITY - recursive_directory_iterator& increment(error_code& __ec) { - return __increment(&__ec); - } - - _LIBCPP_FUNC_VIS directory_options options() const; - _LIBCPP_FUNC_VIS int depth() const; - - _LIBCPP_INLINE_VISIBILITY - void pop() { __pop(); } + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& increment(error_code& __ec) { return __increment(&__ec); } - _LIBCPP_INLINE_VISIBILITY - void pop(error_code& __ec) { __pop(&__ec); } + _LIBCPP_EXPORTED_FROM_ABI directory_options options() const; + _LIBCPP_EXPORTED_FROM_ABI int depth() const; - _LIBCPP_INLINE_VISIBILITY - bool recursion_pending() const { return __rec_; } + _LIBCPP_HIDE_FROM_ABI void pop() { __pop(); } - _LIBCPP_INLINE_VISIBILITY - void disable_recursion_pending() { __rec_ = false; } + _LIBCPP_HIDE_FROM_ABI void pop(error_code& __ec) { __pop(&__ec); } -private: - _LIBCPP_FUNC_VIS - recursive_directory_iterator(const path& __p, directory_options __opt, - error_code* __ec); + _LIBCPP_HIDE_FROM_ABI bool recursion_pending() const { return __rec_; } - _LIBCPP_FUNC_VIS - const directory_entry& __dereference() const; + _LIBCPP_HIDE_FROM_ABI void disable_recursion_pending() { __rec_ = false; } - _LIBCPP_FUNC_VIS - bool __try_recursion(error_code* __ec); +# if _LIBCPP_STD_VER >= 20 - _LIBCPP_FUNC_VIS - void __advance(error_code* __ec = nullptr); + _LIBCPP_HIDE_FROM_ABI bool operator==(default_sentinel_t) const noexcept { + return *this == recursive_directory_iterator(); + } - _LIBCPP_FUNC_VIS - recursive_directory_iterator& __increment(error_code* __ec = nullptr); +# endif - _LIBCPP_FUNC_VIS - void __pop(error_code* __ec = nullptr); +private: + _LIBCPP_EXPORTED_FROM_ABI recursive_directory_iterator(const path& __p, directory_options __opt, error_code* __ec); + _LIBCPP_EXPORTED_FROM_ABI const directory_entry& __dereference() const; + _LIBCPP_EXPORTED_FROM_ABI bool __try_recursion(error_code* __ec); + _LIBCPP_EXPORTED_FROM_ABI void __advance(error_code* __ec = nullptr); + _LIBCPP_EXPORTED_FROM_ABI recursive_directory_iterator& __increment(error_code* __ec = nullptr); + _LIBCPP_EXPORTED_FROM_ABI void __pop(error_code* __ec = nullptr); - inline _LIBCPP_INLINE_VISIBILITY friend bool - operator==(const recursive_directory_iterator&, - const recursive_directory_iterator&) noexcept; + inline _LIBCPP_HIDE_FROM_ABI friend bool + operator==(const recursive_directory_iterator&, const recursive_directory_iterator&) noexcept; struct _LIBCPP_HIDDEN __shared_imp; shared_ptr<__shared_imp> __imp_; bool __rec_; }; // class recursive_directory_iterator -inline _LIBCPP_INLINE_VISIBILITY bool -operator==(const recursive_directory_iterator& __lhs, - const recursive_directory_iterator& __rhs) noexcept { +inline _LIBCPP_HIDE_FROM_ABI bool +operator==(const recursive_directory_iterator& __lhs, const recursive_directory_iterator& __rhs) noexcept { return __lhs.__imp_ == __rhs.__imp_; } -_LIBCPP_INLINE_VISIBILITY -inline bool operator!=(const recursive_directory_iterator& __lhs, - const recursive_directory_iterator& __rhs) noexcept { +_LIBCPP_HIDE_FROM_ABI inline bool +operator!=(const recursive_directory_iterator& __lhs, const recursive_directory_iterator& __rhs) noexcept { return !(__lhs == __rhs); } // enable recursive_directory_iterator range-based for statements -inline _LIBCPP_INLINE_VISIBILITY recursive_directory_iterator -begin(recursive_directory_iterator __iter) noexcept { +inline _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator begin(recursive_directory_iterator __iter) noexcept { return __iter; } -inline _LIBCPP_INLINE_VISIBILITY recursive_directory_iterator -end(recursive_directory_iterator) noexcept { +inline _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator end(recursive_directory_iterator) noexcept { return recursive_directory_iterator(); } -_LIBCPP_AVAILABILITY_FILESYSTEM_POP +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_POP _LIBCPP_END_NAMESPACE_FILESYSTEM -#if _LIBCPP_STD_VER > 17 +# if _LIBCPP_STD_VER >= 20 template <> -_LIBCPP_AVAILABILITY_FILESYSTEM -inline constexpr bool _VSTD::ranges::enable_borrowed_range<_VSTD_FS::recursive_directory_iterator> = true; +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY inline constexpr bool + std::ranges::enable_borrowed_range = true; template <> -_LIBCPP_AVAILABILITY_FILESYSTEM -inline constexpr bool _VSTD::ranges::enable_view<_VSTD_FS::recursive_directory_iterator> = true; +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY inline constexpr bool + std::ranges::enable_view = true; + +# endif // _LIBCPP_STD_VER >= 20 -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM) -#endif // _LIBCPP_CXX03_LANG +_LIBCPP_POP_MACROS #endif // _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H diff --git a/include/c++/v1/__filesystem/space_info.h b/include/c++/v1/__filesystem/space_info.h index d0747e35..3fa57d33 100644 --- a/include/c++/v1/__filesystem/space_info.h +++ b/include/c++/v1/__filesystem/space_info.h @@ -10,7 +10,6 @@ #ifndef _LIBCPP___FILESYSTEM_SPACE_INFO_H #define _LIBCPP___FILESYSTEM_SPACE_INFO_H -#include <__availability> #include <__config> #include @@ -18,26 +17,22 @@ # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH - -struct _LIBCPP_TYPE_VIS space_info { +struct _LIBCPP_EXPORTED_FROM_ABI space_info { uintmax_t capacity; uintmax_t free; uintmax_t available; -# if _LIBCPP_STD_VER > 17 +# if _LIBCPP_STD_VER >= 20 friend _LIBCPP_HIDE_FROM_ABI bool operator==(const space_info&, const space_info&) = default; # endif }; -_LIBCPP_AVAILABILITY_FILESYSTEM_POP - _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_SPACE_INFO_H diff --git a/include/c++/v1/__filesystem/u8path.h b/include/c++/v1/__filesystem/u8path.h index d35faa14..dae58231 100644 --- a/include/c++/v1/__filesystem/u8path.h +++ b/include/c++/v1/__filesystem/u8path.h @@ -11,61 +11,55 @@ #define _LIBCPP___FILESYSTEM_U8PATH_H #include <__algorithm/unwrap_iter.h> -#include <__availability> #include <__config> #include <__filesystem/path.h> #include -#include // Only required on Windows for __widen_from_utf8, and included conservatively // because it requires support for localization. #if defined(_LIBCPP_WIN32API) -# include +# include #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -#ifndef _LIBCPP_CXX03_LANG +#if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM -_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_PUSH -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_WITH_CHAR8_T - typename enable_if<__is_pathable<_InputIt>::value, path>::type - u8path(_InputIt __f, _InputIt __l) { +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_WITH_CHAR8_T path u8path(_InputIt __f, _InputIt __l) { static_assert( -#ifndef _LIBCPP_HAS_NO_CHAR8_T +# ifndef _LIBCPP_HAS_NO_CHAR8_T is_same::__char_type, char8_t>::value || -#endif - is_same::__char_type, char>::value, +# endif + is_same::__char_type, char>::value, "u8path(Iter, Iter) requires Iter have a value_type of type 'char'" " or 'char8_t'"); -#if defined(_LIBCPP_WIN32API) +# if defined(_LIBCPP_WIN32API) string __tmp(__f, __l); using _CVT = __widen_from_utf8; - _VSTD::wstring __w; + std::wstring __w; __w.reserve(__tmp.size()); _CVT()(back_inserter(__w), __tmp.data(), __tmp.data() + __tmp.size()); return path(__w); -#else +# else return path(__f, __l); -#endif /* !_LIBCPP_WIN32API */ +# endif /* !_LIBCPP_WIN32API */ } -#if defined(_LIBCPP_WIN32API) -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_WITH_CHAR8_T - typename enable_if<__is_pathable<_InputIt>::value, path>::type - u8path(_InputIt __f, _NullSentinel) { +# if defined(_LIBCPP_WIN32API) +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_WITH_CHAR8_T path u8path(_InputIt __f, _NullSentinel) { static_assert( -#ifndef _LIBCPP_HAS_NO_CHAR8_T +# ifndef _LIBCPP_HAS_NO_CHAR8_T is_same::__char_type, char8_t>::value || -#endif - is_same::__char_type, char>::value, +# endif + is_same::__char_type, char>::value, "u8path(Iter, Iter) requires Iter have a value_type of type 'char'" " or 'char8_t'"); string __tmp; @@ -73,36 +67,34 @@ _LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_WITH_CHAR8_T for (; *__f != __sentinel; ++__f) __tmp.push_back(*__f); using _CVT = __widen_from_utf8; - _VSTD::wstring __w; + std::wstring __w; __w.reserve(__tmp.size()); _CVT()(back_inserter(__w), __tmp.data(), __tmp.data() + __tmp.size()); return path(__w); } -#endif /* _LIBCPP_WIN32API */ +# endif /* _LIBCPP_WIN32API */ -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_WITH_CHAR8_T - typename enable_if<__is_pathable<_Source>::value, path>::type - u8path(const _Source& __s) { +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_WITH_CHAR8_T path u8path(const _Source& __s) { static_assert( -#ifndef _LIBCPP_HAS_NO_CHAR8_T +# ifndef _LIBCPP_HAS_NO_CHAR8_T is_same::__char_type, char8_t>::value || -#endif - is_same::__char_type, char>::value, +# endif + is_same::__char_type, char>::value, "u8path(Source const&) requires Source have a character type of type " "'char' or 'char8_t'"); -#if defined(_LIBCPP_WIN32API) +# if defined(_LIBCPP_WIN32API) using _Traits = __is_pathable<_Source>; - return u8path(_VSTD::__unwrap_iter(_Traits::__range_begin(__s)), _VSTD::__unwrap_iter(_Traits::__range_end(__s))); -#else + return u8path(std::__unwrap_iter(_Traits::__range_begin(__s)), std::__unwrap_iter(_Traits::__range_end(__s))); +# else return path(__s); -#endif +# endif } -_LIBCPP_AVAILABILITY_FILESYSTEM_POP +_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_POP _LIBCPP_END_NAMESPACE_FILESYSTEM -#endif // _LIBCPP_CXX03_LANG +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FILESYSTEM_U8PATH_H diff --git a/include/c++/v1/__format/buffer.h b/include/c++/v1/__format/buffer.h index ddfe7672..8598f0a1 100644 --- a/include/c++/v1/__format/buffer.h +++ b/include/c++/v1/__format/buffer.h @@ -27,11 +27,18 @@ #include <__iterator/incrementable_traits.h> #include <__iterator/iterator_traits.h> #include <__iterator/wrap_iter.h> +#include <__memory/addressof.h> +#include <__memory/allocate_at_least.h> +#include <__memory/allocator_traits.h> +#include <__memory/construct_at.h> +#include <__memory/ranges_construct_at.h> +#include <__memory/uninitialized_algorithms.h> +#include <__type_traits/add_pointer.h> +#include <__type_traits/conditional.h> +#include <__utility/exception_guard.h> #include <__utility/move.h> #include #include -#include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -42,7 +49,7 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __format { @@ -64,7 +71,7 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer { __obj_(__obj) {} _LIBCPP_HIDE_FROM_ABI void __reset(_CharT* __ptr, size_t __capacity) { - __ptr_ = __ptr; + __ptr_ = __ptr; __capacity_ = __capacity; } @@ -88,7 +95,7 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer { _LIBCPP_HIDE_FROM_ABI void __copy(basic_string_view<_InCharT> __str) { // When the underlying iterator is a simple iterator the __capacity_ is // infinite. For a string or container back_inserter it isn't. This means - // adding a large string the the buffer can cause some overhead. In that + // that adding a large string to the buffer can cause some overhead. In that // case a better approach could be: // - flush the buffer // - container.append(__str.begin(), __str.end()); @@ -100,19 +107,19 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer { size_t __n = __str.size(); __flush_on_overflow(__n); - if (__n <= __capacity_) { - _VSTD::copy_n(__str.data(), __n, _VSTD::addressof(__ptr_[__size_])); + if (__n < __capacity_) { // push_back requires the buffer to have room for at least one character (so use <). + std::copy_n(__str.data(), __n, std::addressof(__ptr_[__size_])); __size_ += __n; return; } // The output doesn't fit in the internal buffer. // Copy the data in "__capacity_" sized chunks. - _LIBCPP_ASSERT(__size_ == 0, "the buffer should be flushed by __flush_on_overflow"); + _LIBCPP_ASSERT_INTERNAL(__size_ == 0, "the buffer should be flushed by __flush_on_overflow"); const _InCharT* __first = __str.data(); do { - size_t __chunk = _VSTD::min(__n, __capacity_); - _VSTD::copy_n(__first, __chunk, _VSTD::addressof(__ptr_[__size_])); + size_t __chunk = std::min(__n, __capacity_); + std::copy_n(__first, __chunk, std::addressof(__ptr_[__size_])); __size_ = __chunk; __first += __chunk; __n -= __chunk; @@ -123,24 +130,26 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer { /// A std::transform wrapper. /// /// Like @ref __copy it may need to do type conversion. - template <__fmt_char_type _InCharT, class _UnaryOperation> - _LIBCPP_HIDE_FROM_ABI void __transform(const _InCharT* __first, const _InCharT* __last, _UnaryOperation __operation) { - _LIBCPP_ASSERT(__first <= __last, "not a valid range"); + template ::value_type> + _LIBCPP_HIDE_FROM_ABI void __transform(_Iterator __first, _Iterator __last, _UnaryOperation __operation) { + _LIBCPP_ASSERT_INTERNAL(__first <= __last, "not a valid range"); size_t __n = static_cast(__last - __first); __flush_on_overflow(__n); - if (__n <= __capacity_) { - _VSTD::transform(__first, __last, _VSTD::addressof(__ptr_[__size_]), _VSTD::move(__operation)); + if (__n < __capacity_) { // push_back requires the buffer to have room for at least one character (so use <). + std::transform(__first, __last, std::addressof(__ptr_[__size_]), std::move(__operation)); __size_ += __n; return; } // The output doesn't fit in the internal buffer. // Transform the data in "__capacity_" sized chunks. - _LIBCPP_ASSERT(__size_ == 0, "the buffer should be flushed by __flush_on_overflow"); + _LIBCPP_ASSERT_INTERNAL(__size_ == 0, "the buffer should be flushed by __flush_on_overflow"); do { - size_t __chunk = _VSTD::min(__n, __capacity_); - _VSTD::transform(__first, __first + __chunk, _VSTD::addressof(__ptr_[__size_]), __operation); + size_t __chunk = std::min(__n, __capacity_); + std::transform(__first, __first + __chunk, std::addressof(__ptr_[__size_]), __operation); __size_ = __chunk; __first += __chunk; __n -= __chunk; @@ -151,18 +160,18 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer { /// A \c fill_n wrapper. _LIBCPP_HIDE_FROM_ABI void __fill(size_t __n, _CharT __value) { __flush_on_overflow(__n); - if (__n <= __capacity_) { - _VSTD::fill_n(_VSTD::addressof(__ptr_[__size_]), __n, __value); + if (__n < __capacity_) { // push_back requires the buffer to have room for at least one character (so use <). + std::fill_n(std::addressof(__ptr_[__size_]), __n, __value); __size_ += __n; return; } // The output doesn't fit in the internal buffer. // Fill the buffer in "__capacity_" sized chunks. - _LIBCPP_ASSERT(__size_ == 0, "the buffer should be flushed by __flush_on_overflow"); + _LIBCPP_ASSERT_INTERNAL(__size_ == 0, "the buffer should be flushed by __flush_on_overflow"); do { - size_t __chunk = _VSTD::min(__n, __capacity_); - _VSTD::fill_n(_VSTD::addressof(__ptr_[__size_]), __chunk, __value); + size_t __chunk = std::min(__n, __capacity_); + std::fill_n(std::addressof(__ptr_[__size_]), __chunk, __value); __size_ = __chunk; __n -= __chunk; __flush(); @@ -244,19 +253,18 @@ template <__fmt_char_type _CharT> class _LIBCPP_TEMPLATE_VIS __direct_storage {}; template -concept __enable_direct_output = __fmt_char_type<_CharT> && +concept __enable_direct_output = + __fmt_char_type<_CharT> && (same_as<_OutIt, _CharT*> -#ifndef _LIBCPP_ENABLE_DEBUG_MODE - || same_as<_OutIt, __wrap_iter<_CharT*>> -#endif - ); + // TODO(hardening): the following check might not apply to hardened iterators and might need to be wrapped in an + // `#ifdef`. + || same_as<_OutIt, __wrap_iter<_CharT*>>); /// Write policy for directly writing to the underlying output. template class _LIBCPP_TEMPLATE_VIS __writer_direct { public: - _LIBCPP_HIDE_FROM_ABI explicit __writer_direct(_OutIt __out_it) - : __out_it_(__out_it) {} + _LIBCPP_HIDE_FROM_ABI explicit __writer_direct(_OutIt __out_it) : __out_it_(__out_it) {} _LIBCPP_HIDE_FROM_ABI _OutIt __out_it() { return __out_it_; } @@ -274,8 +282,7 @@ class _LIBCPP_TEMPLATE_VIS __writer_direct { template class _LIBCPP_TEMPLATE_VIS __writer_iterator { public: - _LIBCPP_HIDE_FROM_ABI explicit __writer_iterator(_OutIt __out_it) - : __out_it_{_VSTD::move(__out_it)} {} + _LIBCPP_HIDE_FROM_ABI explicit __writer_iterator(_OutIt __out_it) : __out_it_{std::move(__out_it)} {} _LIBCPP_HIDE_FROM_ABI _OutIt __out_it() && { return std::move(__out_it_); } @@ -297,7 +304,8 @@ class _LIBCPP_TEMPLATE_VIS __writer_iterator { template concept __insertable = __enable_insertable<_Container> && __fmt_char_type && - requires(_Container& __t, add_pointer_t __first, + requires(_Container& __t, + add_pointer_t __first, add_pointer_t __last) { __t.insert(__t.end(), __first, __last); }; /// Extract the container type of a \ref back_insert_iterator. @@ -336,28 +344,29 @@ class _LIBCPP_TEMPLATE_VIS __writer_selector { using _Container = typename __back_insert_iterator_container<_OutIt>::type; public: - using type = conditional_t, __writer_container<_Container>, - conditional_t<__enable_direct_output<_OutIt, _CharT>, __writer_direct<_OutIt, _CharT>, - __writer_iterator<_OutIt, _CharT>>>; + using type = + conditional_t, + __writer_container<_Container>, + conditional_t<__enable_direct_output<_OutIt, _CharT>, + __writer_direct<_OutIt, _CharT>, + __writer_iterator<_OutIt, _CharT>>>; }; /// The generic formatting buffer. template -requires(output_iterator<_OutIt, const _CharT&>) class _LIBCPP_TEMPLATE_VIS - __format_buffer { + requires(output_iterator<_OutIt, const _CharT&>) +class _LIBCPP_TEMPLATE_VIS __format_buffer { using _Storage = - conditional_t<__enable_direct_output<_OutIt, _CharT>, - __direct_storage<_CharT>, __internal_storage<_CharT>>; + conditional_t<__enable_direct_output<_OutIt, _CharT>, __direct_storage<_CharT>, __internal_storage<_CharT>>; public: _LIBCPP_HIDE_FROM_ABI explicit __format_buffer(_OutIt __out_it) requires(same_as<_Storage, __internal_storage<_CharT>>) - : __output_(__storage_.__begin(), __storage_.__buffer_size, this), __writer_(_VSTD::move(__out_it)) {} + : __output_(__storage_.__begin(), __storage_.__buffer_size, this), __writer_(std::move(__out_it)) {} - _LIBCPP_HIDE_FROM_ABI explicit __format_buffer(_OutIt __out_it) requires( - same_as<_Storage, __direct_storage<_CharT>>) - : __output_(_VSTD::__unwrap_iter(__out_it), size_t(-1), this), - __writer_(_VSTD::move(__out_it)) {} + _LIBCPP_HIDE_FROM_ABI explicit __format_buffer(_OutIt __out_it) + requires(same_as<_Storage, __direct_storage<_CharT>>) + : __output_(std::__unwrap_iter(__out_it), size_t(-1), this), __writer_(std::move(__out_it)) {} _LIBCPP_HIDE_FROM_ABI auto __make_output_iterator() { return __output_.__make_output_iterator(); } @@ -365,7 +374,7 @@ requires(output_iterator<_OutIt, const _CharT&>) class _LIBCPP_TEMPLATE_VIS _LIBCPP_HIDE_FROM_ABI _OutIt __out_it() && { __output_.__flush(); - return _VSTD::move(__writer_).__out_it(); + return std::move(__writer_).__out_it(); } private: @@ -404,11 +413,11 @@ struct _LIBCPP_TEMPLATE_VIS __format_to_n_buffer_base { public: _LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer_base(_OutIt __out_it, _Size __max_size) - : __writer_(_VSTD::move(__out_it)), __max_size_(_VSTD::max(_Size(0), __max_size)) {} + : __writer_(std::move(__out_it)), __max_size_(std::max(_Size(0), __max_size)) {} _LIBCPP_HIDE_FROM_ABI void __flush(_CharT* __ptr, size_t __n) { if (_Size(__size_) <= __max_size_) - __writer_.__flush(__ptr, _VSTD::min(_Size(__n), __max_size_ - __size_)); + __writer_.__flush(__ptr, std::min(_Size(__n), __max_size_ - __size_)); __size_ += __n; } @@ -434,8 +443,8 @@ class _LIBCPP_TEMPLATE_VIS __format_to_n_buffer_base<_OutIt, _CharT, true> { public: _LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer_base(_OutIt __out_it, _Size __max_size) - : __output_(_VSTD::__unwrap_iter(__out_it), __max_size, this), - __writer_(_VSTD::move(__out_it)), + : __output_(std::__unwrap_iter(__out_it), __max_size, this), + __writer_(std::move(__out_it)), __max_size_(__max_size) { if (__max_size <= 0) [[unlikely]] __output_.__reset(__storage_.__begin(), __storage_.__buffer_size); @@ -459,7 +468,7 @@ class _LIBCPP_TEMPLATE_VIS __format_to_n_buffer_base<_OutIt, _CharT, true> { } else if (__size_ < __max_size_) { // Copies a part of the internal buffer to the output up to n characters. // See __output_buffer<_CharT>::__flush_on_overflow for more information. - _Size __s = _VSTD::min(_Size(__n), __max_size_ - __size_); + _Size __s = std::min(_Size(__n), __max_size_ - __size_); std::copy_n(__ptr, __s, __writer_.__out_it()); __writer_.__flush(__ptr, __s); } @@ -486,12 +495,12 @@ struct _LIBCPP_TEMPLATE_VIS __format_to_n_buffer final public: _LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer(_OutIt __out_it, _Size __max_size) - : _Base(_VSTD::move(__out_it), __max_size) {} + : _Base(std::move(__out_it), __max_size) {} _LIBCPP_HIDE_FROM_ABI auto __make_output_iterator() { return this->__output_.__make_output_iterator(); } _LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> __result() && { this->__output_.__flush(); - return {_VSTD::move(this->__writer_).__out_it(), this->__size_}; + return {std::move(this->__writer_).__out_it(), this->__size_}; } }; @@ -510,13 +519,19 @@ struct _LIBCPP_TEMPLATE_VIS __format_to_n_buffer final // context and the format arguments need to be retargeted to the new context. // This retargeting is done by a basic_format_context specialized for the // __iterator of this container. +// +// This class uses its own buffer management, since using vector +// would lead to a circular include with formatter for vector. template <__fmt_char_type _CharT> class _LIBCPP_TEMPLATE_VIS __retarget_buffer { + using _Alloc = allocator<_CharT>; + public: using value_type = _CharT; struct __iterator { using difference_type = ptrdiff_t; + using value_type = _CharT; _LIBCPP_HIDE_FROM_ABI constexpr explicit __iterator(__retarget_buffer& __buffer) : __buffer_(std::addressof(__buffer)) {} @@ -535,36 +550,103 @@ class _LIBCPP_TEMPLATE_VIS __retarget_buffer { __retarget_buffer* __buffer_; }; - _LIBCPP_HIDE_FROM_ABI explicit __retarget_buffer(size_t __size_hint) { __buffer_.reserve(__size_hint); } + __retarget_buffer(const __retarget_buffer&) = delete; + __retarget_buffer& operator=(const __retarget_buffer&) = delete; + + _LIBCPP_HIDE_FROM_ABI explicit __retarget_buffer(size_t __size_hint) { + // When the initial size is very small a lot of resizes happen + // when elements added. So use a hard-coded minimum size. + // + // Note a size < 2 will not work + // - 0 there is no buffer, while push_back requires 1 empty element. + // - 1 multiplied by the grow factor is 1 and thus the buffer never + // grows. + auto __result = std::__allocate_at_least(__alloc_, std::max(__size_hint, 256 / sizeof(_CharT))); + __ptr_ = __result.ptr; + __capacity_ = __result.count; + } + + _LIBCPP_HIDE_FROM_ABI ~__retarget_buffer() { + ranges::destroy_n(__ptr_, __size_); + allocator_traits<_Alloc>::deallocate(__alloc_, __ptr_, __capacity_); + } _LIBCPP_HIDE_FROM_ABI __iterator __make_output_iterator() { return __iterator{*this}; } - _LIBCPP_HIDE_FROM_ABI void push_back(_CharT __c) { __buffer_.push_back(__c); } + _LIBCPP_HIDE_FROM_ABI void push_back(_CharT __c) { + std::construct_at(__ptr_ + __size_, __c); + ++__size_; + + if (__size_ == __capacity_) + __grow_buffer(); + } template <__fmt_char_type _InCharT> _LIBCPP_HIDE_FROM_ABI void __copy(basic_string_view<_InCharT> __str) { - __buffer_.insert(__buffer_.end(), __str.begin(), __str.end()); + size_t __n = __str.size(); + if (__size_ + __n >= __capacity_) + // Push_back requires the buffer to have room for at least one character. + __grow_buffer(__size_ + __n + 1); + + std::uninitialized_copy_n(__str.data(), __n, __ptr_ + __size_); + __size_ += __n; } - template <__fmt_char_type _InCharT, class _UnaryOperation> - _LIBCPP_HIDE_FROM_ABI void __transform(const _InCharT* __first, const _InCharT* __last, _UnaryOperation __operation) { - _LIBCPP_ASSERT(__first <= __last, "not a valid range"); - std::transform(__first, __last, std::back_inserter(__buffer_), std::move(__operation)); + template ::value_type> + _LIBCPP_HIDE_FROM_ABI void __transform(_Iterator __first, _Iterator __last, _UnaryOperation __operation) { + _LIBCPP_ASSERT_INTERNAL(__first <= __last, "not a valid range"); + + size_t __n = static_cast(__last - __first); + if (__size_ + __n >= __capacity_) + // Push_back requires the buffer to have room for at least one character. + __grow_buffer(__size_ + __n + 1); + + std::uninitialized_default_construct_n(__ptr_ + __size_, __n); + std::transform(__first, __last, __ptr_ + __size_, std::move(__operation)); + __size_ += __n; } - _LIBCPP_HIDE_FROM_ABI void __fill(size_t __n, _CharT __value) { __buffer_.insert(__buffer_.end(), __n, __value); } + _LIBCPP_HIDE_FROM_ABI void __fill(size_t __n, _CharT __value) { + if (__size_ + __n >= __capacity_) + // Push_back requires the buffer to have room for at least one character. + __grow_buffer(__size_ + __n + 1); - _LIBCPP_HIDE_FROM_ABI basic_string_view<_CharT> __view() { return {__buffer_.data(), __buffer_.size()}; } + std::uninitialized_fill_n(__ptr_ + __size_, __n, __value); + __size_ += __n; + } + + _LIBCPP_HIDE_FROM_ABI basic_string_view<_CharT> __view() { return {__ptr_, __size_}; } private: - // Use vector instead of string to avoid adding zeros after every append - // operation. The buffer is exposed as a string_view and not as a c-string. - vector<_CharT> __buffer_; + _LIBCPP_HIDE_FROM_ABI void __grow_buffer() { __grow_buffer(__capacity_ * 1.6); } + + _LIBCPP_HIDE_FROM_ABI void __grow_buffer(size_t __capacity) { + _LIBCPP_ASSERT_INTERNAL(__capacity > __capacity_, "the buffer must grow"); + auto __result = std::__allocate_at_least(__alloc_, __capacity); + auto __guard = std::__make_exception_guard([&] { + allocator_traits<_Alloc>::deallocate(__alloc_, __result.ptr, __result.count); + }); + // This shouldn't throw, but just to be safe. Note that at -O1 this + // guard is optimized away so there is no runtime overhead. + std::uninitialized_move_n(__ptr_, __size_, __result.ptr); + __guard.__complete(); + ranges::destroy_n(__ptr_, __size_); + allocator_traits<_Alloc>::deallocate(__alloc_, __ptr_, __capacity_); + + __ptr_ = __result.ptr; + __capacity_ = __result.count; + } + _LIBCPP_NO_UNIQUE_ADDRESS _Alloc __alloc_; + _CharT* __ptr_; + size_t __capacity_; + size_t __size_{0}; }; } // namespace __format -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/concepts.h b/include/c++/v1/__format/concepts.h index ba8d8e31..13380e9b 100644 --- a/include/c++/v1/__format/concepts.h +++ b/include/c++/v1/__format/concepts.h @@ -13,12 +13,14 @@ #include <__concepts/same_as.h> #include <__concepts/semiregular.h> #include <__config> -#include <__format/format_fwd.h> #include <__format/format_parse_context.h> +#include <__fwd/format.h> +#include <__fwd/tuple.h> +#include <__tuple/tuple_size.h> #include <__type_traits/is_specialization.h> +#include <__type_traits/remove_const.h> +#include <__type_traits/remove_reference.h> #include <__utility/pair.h> -#include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -26,7 +28,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 /// The character type specializations of \ref formatter. template @@ -44,19 +46,23 @@ concept __fmt_char_type = template using __fmt_iter_for = _CharT*; +template >> +concept __formattable_with = + semiregular<_Formatter> && + requires(_Formatter& __f, + const _Formatter& __cf, + _Tp&& __t, + _Context __fc, + basic_format_parse_context __pc) { + { __f.parse(__pc) } -> same_as; + { __cf.format(__t, __fc) } -> same_as; + }; + template concept __formattable = - (semiregular, _CharT>>) && - requires(formatter, _CharT> __f, - const formatter, _CharT> __cf, - _Tp __t, - basic_format_context<__fmt_iter_for<_CharT>, _CharT> __fc, - basic_format_parse_context<_CharT> __pc) { - { __f.parse(__pc) } -> same_as::iterator>; - { __cf.format(__t, __fc) } -> same_as<__fmt_iter_for<_CharT>>; - }; + __formattable_with, basic_format_context<__fmt_iter_for<_CharT>, _CharT>>; -# if _LIBCPP_STD_VER > 20 +# if _LIBCPP_STD_VER >= 23 template concept formattable = __formattable<_Tp, _CharT>; @@ -69,8 +75,8 @@ template concept __fmt_pair_like = __is_specialization_v<_Tp, pair> || (__is_specialization_v<_Tp, tuple> && tuple_size_v<_Tp> == 2); -# endif //_LIBCPP_STD_VER > 20 -#endif //_LIBCPP_STD_VER > 17 +# endif //_LIBCPP_STD_VER >= 23 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/container_adaptor.h b/include/c++/v1/__format/container_adaptor.h index 62b69818..9f49ca03 100644 --- a/include/c++/v1/__format/container_adaptor.h +++ b/include/c++/v1/__format/container_adaptor.h @@ -14,17 +14,19 @@ # pragma GCC system_header #endif -#include <__availability> #include <__config> #include <__format/concepts.h> #include <__format/formatter.h> #include <__format/range_default_formatter.h> -#include -#include +#include <__fwd/queue.h> +#include <__fwd/stack.h> +#include <__ranges/ref_view.h> +#include <__type_traits/is_const.h> +#include <__type_traits/maybe_const.h> _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 20 +#if _LIBCPP_STD_VER >= 23 // [container.adaptors.format] only specifies the library should provide the // formatter specializations, not which header should provide them. @@ -33,10 +35,11 @@ _LIBCPP_BEGIN_NAMESPACE_STD // adaptor headers. To use the format functions users already include . template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_container_adaptor { +struct _LIBCPP_TEMPLATE_VIS __formatter_container_adaptor { private: - using __maybe_const_adaptor = __fmt_maybe_const<_Adaptor, _CharT>; - formatter __underlying_; + using __maybe_const_container = __fmt_maybe_const; + using __maybe_const_adaptor = __maybe_const, _Adaptor>; + formatter, _CharT> __underlying_; public: template @@ -52,18 +55,18 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_container_ad }; template _Container> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter, _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_container_adaptor, _CharT> {}; template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter, _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_container_adaptor, _CharT> {}; template _Container> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter, _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_container_adaptor, _CharT> {}; -#endif //_LIBCPP_STD_VER > 20 +#endif //_LIBCPP_STD_VER >= 23 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/enable_insertable.h b/include/c++/v1/__format/enable_insertable.h index 71b42529..86ef94a3 100644 --- a/include/c++/v1/__format/enable_insertable.h +++ b/include/c++/v1/__format/enable_insertable.h @@ -18,7 +18,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __format { @@ -28,7 +28,7 @@ inline constexpr bool __enable_insertable = false; } // namespace __format -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/escaped_output_table.h b/include/c++/v1/__format/escaped_output_table.h index bd2994bd..f7be2dc6 100644 --- a/include/c++/v1/__format/escaped_output_table.h +++ b/include/c++/v1/__format/escaped_output_table.h @@ -72,17 +72,17 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 20 +#if _LIBCPP_STD_VER >= 23 namespace __escaped_output_table { +// clang-format off /// The entries of the characters to escape in format's debug string. /// /// Contains the entries for [format.string.escaped]/2.2.1.2.1 -/// CE is a Unicode encoding and C corresponds to either a UCS scalar value -/// whose Unicode property General_Category has a value in the groups -/// Separator (Z) or Other (C) or to a UCS scalar value which has the Unicode -/// property Grapheme_Extend=Yes, as described by table 12 of UAX #44 +/// CE is a Unicode encoding and C corresponds to a UCS scalar value whose +/// Unicode property General_Category has a value in the groups Separator (Z) +/// or Other (C), as described by table 12 of UAX #44 /// /// Separator (Z) consists of General_Category /// - Space_Separator, @@ -97,7 +97,6 @@ namespace __escaped_output_table { /// - Unassigned. /// /// The data is generated from -/// - https://www.unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt /// - https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedGeneralCategory.txt /// /// The table is similar to the table @@ -106,932 +105,758 @@ namespace __escaped_output_table { /// table lacks a property, thus having more bits available for the size. /// /// The data has 2 values: -/// - bits [0, 10] The size of the range, allowing 2048 elements. -/// - bits [11, 31] The lower bound code point of the range. The upper bound of -/// the range is lower bound + size. -inline constexpr uint32_t __entries[893] = { - 0x00000020, - 0x0003f821, - 0x00056800, - 0x0018006f, - 0x001bc001, - 0x001c0003, - 0x001c5800, - 0x001c6800, - 0x001d1000, - 0x00241806, - 0x00298000, - 0x002ab801, - 0x002c5801, - 0x002c802d, - 0x002df800, - 0x002e0801, - 0x002e2001, - 0x002e3808, - 0x002f5803, - 0x002fa810, - 0x0030800a, - 0x0030e000, - 0x00325814, - 0x00338000, - 0x0036b007, - 0x0036f805, - 0x00373801, - 0x00375003, - 0x00387001, - 0x00388800, - 0x0039801c, - 0x003d300a, - 0x003d900d, - 0x003f5808, - 0x003fd802, - 0x0040b003, - 0x0040d808, - 0x00412802, - 0x00414806, - 0x0041f800, - 0x0042c804, - 0x0042f800, - 0x00435804, - 0x00447810, - 0x00465038, - 0x0049d000, - 0x0049e000, - 0x004a0807, - 0x004a6800, - 0x004a8806, - 0x004b1001, - 0x004c0800, - 0x004c2000, - 0x004c6801, - 0x004c8801, - 0x004d4800, - 0x004d8800, - 0x004d9802, - 0x004dd002, - 0x004df000, - 0x004e0805, - 0x004e4801, - 0x004e6800, - 0x004e780c, - 0x004ef000, - 0x004f1003, - 0x004ff004, - 0x00502000, - 0x00505803, - 0x00508801, - 0x00514800, - 0x00518800, - 0x0051a000, - 0x0051b800, - 0x0051d003, - 0x00520817, - 0x0052e800, - 0x0052f806, - 0x00538001, - 0x0053a800, - 0x0053b80b, - 0x00542000, - 0x00547000, - 0x00549000, - 0x00554800, - 0x00558800, - 0x0055a000, - 0x0055d002, - 0x00560807, - 0x00565000, - 0x00566802, - 0x0056880e, - 0x00571003, - 0x00579006, - 0x0057d007, - 0x00582000, - 0x00586801, - 0x00588801, - 0x00594800, - 0x00598800, - 0x0059a000, - 0x0059d002, - 0x0059f001, - 0x005a0805, - 0x005a4801, - 0x005a680e, - 0x005af000, - 0x005b1003, - 0x005bc00a, - 0x005c2000, - 0x005c5802, - 0x005c8800, - 0x005cb002, - 0x005cd800, - 0x005ce800, - 0x005d0002, - 0x005d2802, - 0x005d5802, - 0x005dd004, - 0x005e0000, - 0x005e1802, - 0x005e4800, - 0x005e6802, - 0x005e8814, - 0x005fd805, - 0x00602000, - 0x00606800, - 0x00608800, - 0x00614800, - 0x0061d002, - 0x0061f002, - 0x00622812, - 0x0062d801, - 0x0062f001, - 0x00631003, - 0x00638006, - 0x00640800, - 0x00646800, - 0x00648800, - 0x00654800, - 0x0065a000, - 0x0065d002, - 0x0065f800, - 0x00661000, - 0x00662801, - 0x00664800, - 0x00666010, - 0x0066f800, - 0x00671003, - 0x00678000, - 0x0067a00d, - 0x00686800, - 0x00688800, - 0x0069d801, - 0x0069f000, - 0x006a0804, - 0x006a4800, - 0x006a6800, - 0x006a8003, - 0x006ab800, - 0x006b1003, - 0x006c0001, - 0x006c2000, - 0x006cb802, - 0x006d9000, - 0x006de000, - 0x006df001, - 0x006e3808, - 0x006e9005, - 0x006ef806, - 0x006f8001, - 0x006fa80b, - 0x00718800, - 0x0071a00a, - 0x00723807, - 0x0072e024, - 0x00741800, - 0x00742800, - 0x00745800, - 0x00752000, - 0x00753000, - 0x00758800, - 0x0075a008, - 0x0075f001, - 0x00762800, - 0x00763808, - 0x0076d001, - 0x0077001f, - 0x0078c001, - 0x0079a800, - 0x0079b800, - 0x0079c800, - 0x007a4000, - 0x007b6811, - 0x007c0004, - 0x007c3001, - 0x007c6830, - 0x007e3000, - 0x007e6800, - 0x007ed824, - 0x00816803, - 0x00819005, - 0x0081c801, - 0x0081e801, - 0x0082c001, - 0x0082f002, - 0x00838803, - 0x00841000, - 0x00842801, - 0x00846800, - 0x0084e800, - 0x00863000, - 0x00864004, - 0x00867001, - 0x00924800, - 0x00927001, - 0x0092b800, - 0x0092c800, - 0x0092f001, - 0x00944800, - 0x00947001, - 0x00958800, - 0x0095b001, - 0x0095f800, - 0x00960800, - 0x00963001, - 0x0096b800, - 0x00988800, - 0x0098b001, - 0x009ad804, - 0x009be802, - 0x009cd005, - 0x009fb001, - 0x009ff001, - 0x00b40000, - 0x00b4e802, - 0x00b7c806, - 0x00b89002, - 0x00b8b008, - 0x00b99001, - 0x00b9b808, - 0x00ba900d, - 0x00bb6800, - 0x00bb880e, - 0x00bda001, - 0x00bdb806, - 0x00be3000, - 0x00be480a, - 0x00bee802, - 0x00bf5005, - 0x00bfd005, - 0x00c05804, - 0x00c0d005, - 0x00c3c806, - 0x00c42801, - 0x00c54800, - 0x00c55804, - 0x00c7b009, - 0x00c8f803, - 0x00c93801, - 0x00c96003, - 0x00c99000, - 0x00c9c806, - 0x00ca0802, - 0x00cb7001, - 0x00cba80a, - 0x00cd6003, - 0x00ce5005, - 0x00ced802, - 0x00d0b801, - 0x00d0d802, - 0x00d2b000, - 0x00d2c008, - 0x00d31000, - 0x00d32807, - 0x00d3980c, - 0x00d45005, - 0x00d4d005, - 0x00d57055, - 0x00d9a006, - 0x00d9e000, - 0x00da1000, - 0x00da6802, - 0x00db5808, - 0x00dbf802, - 0x00dd1003, - 0x00dd4001, - 0x00dd5802, - 0x00df3000, - 0x00df4001, - 0x00df6800, - 0x00df7802, - 0x00dfa007, - 0x00e16007, - 0x00e1b004, - 0x00e25002, - 0x00e44806, - 0x00e5d801, - 0x00e6400a, - 0x00e6a00c, - 0x00e71006, - 0x00e76800, - 0x00e7a000, - 0x00e7c001, - 0x00e7d804, - 0x00ee003f, - 0x00f8b001, - 0x00f8f001, - 0x00fa3001, - 0x00fa7001, - 0x00fac000, - 0x00fad000, - 0x00fae000, - 0x00faf000, - 0x00fbf001, - 0x00fda800, - 0x00fe2800, - 0x00fea001, - 0x00fee000, - 0x00ff8001, - 0x00ffa800, - 0x00fff810, - 0x01014007, - 0x0102f810, - 0x01039001, - 0x01047800, - 0x0104e802, - 0x0106083e, - 0x010c6003, - 0x01213818, - 0x01225814, - 0x015ba001, - 0x015cb000, - 0x01677802, - 0x0167a004, - 0x01693000, - 0x01694004, - 0x01697001, - 0x016b4006, - 0x016b880e, - 0x016cb808, - 0x016d3800, - 0x016d7800, - 0x016db800, - 0x016df800, - 0x016e3800, - 0x016e7800, - 0x016eb800, - 0x016ef820, - 0x0172f021, - 0x0174d000, - 0x0177a00b, - 0x017eb019, - 0x017fe004, - 0x01815005, - 0x01820000, - 0x0184b803, - 0x01880004, - 0x01898000, - 0x018c7800, - 0x018f200b, - 0x0190f800, - 0x05246802, - 0x05263808, - 0x05316013, - 0x05337803, - 0x0533a009, - 0x0534f001, - 0x05378001, - 0x0537c007, - 0x053e5804, - 0x053e9000, - 0x053ea000, - 0x053ed017, - 0x05401000, - 0x05403000, - 0x05405800, - 0x05412801, - 0x05416003, - 0x0541d005, - 0x0543c007, - 0x05462009, - 0x0546d017, - 0x0547f800, - 0x05493007, - 0x054a380a, - 0x054aa00a, - 0x054be805, - 0x054d9800, - 0x054db003, - 0x054de001, - 0x054e7000, - 0x054ed003, - 0x054f2800, - 0x054ff800, - 0x05514805, - 0x05518801, - 0x0551a80a, - 0x05521800, - 0x05526000, - 0x05527001, - 0x0552d001, - 0x0553e000, - 0x05558000, - 0x05559002, - 0x0555b801, - 0x0555f001, - 0x05560800, - 0x05561817, - 0x05576001, - 0x0557b00a, - 0x05583801, - 0x05587801, - 0x0558b808, - 0x05593800, - 0x05597800, - 0x055b6003, - 0x055f2800, - 0x055f4000, - 0x055f6802, - 0x055fd005, - 0x06bd200b, - 0x06be3803, - 0x06bfe7ff, - 0x06ffe7ff, - 0x073fe7ff, - 0x077fe7ff, - 0x07bfe103, - 0x07d37001, - 0x07d6d025, - 0x07d8380b, - 0x07d8c004, - 0x07d8f000, - 0x07d9b800, - 0x07d9e800, - 0x07d9f800, - 0x07da1000, - 0x07da2800, - 0x07de180f, - 0x07ec8001, - 0x07ee4006, - 0x07ee801f, - 0x07f0000f, - 0x07f0d015, - 0x07f29800, - 0x07f33800, - 0x07f36003, - 0x07f3a800, - 0x07f7e803, - 0x07fcf001, - 0x07fdf802, - 0x07fe4001, - 0x07fe8001, - 0x07fec001, - 0x07fee802, - 0x07ff3800, - 0x07ff780c, - 0x07fff001, - 0x08006000, - 0x08013800, - 0x0801d800, - 0x0801f000, - 0x08027001, - 0x0802f021, - 0x0807d804, - 0x08081803, - 0x0809a002, - 0x080c7800, - 0x080ce802, - 0x080d082e, - 0x080fe882, - 0x0814e802, - 0x0816880f, - 0x0817e003, - 0x08192008, - 0x081a5804, - 0x081bb009, - 0x081cf000, - 0x081e2003, - 0x081eb029, - 0x0824f001, - 0x08255005, - 0x0826a003, - 0x0827e003, - 0x08294007, - 0x082b200a, - 0x082bd800, - 0x082c5800, - 0x082c9800, - 0x082cb000, - 0x082d1000, - 0x082d9000, - 0x082dd000, - 0x082de842, - 0x0839b808, - 0x083ab009, - 0x083b4017, - 0x083c3000, - 0x083d8800, - 0x083dd844, - 0x08403001, - 0x08404800, - 0x0841b000, - 0x0841c802, - 0x0841e801, - 0x0842b000, - 0x0844f807, - 0x0845802f, - 0x08479800, - 0x0847b004, - 0x0848e002, - 0x0849d004, - 0x084a003f, - 0x084dc003, - 0x084e8001, - 0x0850080e, - 0x0850a000, - 0x0850c000, - 0x0851b009, - 0x08524806, - 0x0852c806, - 0x0855001f, - 0x08572805, - 0x0857b808, - 0x0859b002, - 0x085ab001, - 0x085b9804, - 0x085c9006, - 0x085ce80b, - 0x085d804f, - 0x08624836, - 0x0865980c, - 0x08679806, - 0x0869200b, - 0x0869d125, - 0x0873f800, - 0x08755002, - 0x08757001, - 0x0875904d, - 0x08794007, - 0x087a300a, - 0x087ad015, - 0x087c1003, - 0x087c5025, - 0x087e6013, - 0x087fb808, - 0x08800800, - 0x0881c00e, - 0x08827003, - 0x08838000, - 0x08839801, - 0x0883b00b, - 0x08859803, - 0x0885c801, - 0x0885e800, - 0x0886100d, - 0x08874806, - 0x0887d008, - 0x08893804, - 0x08896808, - 0x088a4007, - 0x088b9800, - 0x088bb80a, - 0x088db008, - 0x088e4803, - 0x088e7800, - 0x088f0000, - 0x088fa80a, - 0x08909000, - 0x08917802, - 0x0891a000, - 0x0891b001, - 0x0891f000, - 0x0892083e, - 0x08943800, - 0x08944800, - 0x08947000, - 0x0894f000, - 0x08955005, - 0x0896f800, - 0x0897180c, - 0x0897d007, - 0x08982000, - 0x08986801, - 0x08988801, - 0x08994800, - 0x08998800, - 0x0899a000, - 0x0899d002, - 0x0899f000, - 0x089a0000, - 0x089a2801, - 0x089a4801, - 0x089a7001, - 0x089a880b, - 0x089b209b, - 0x08a1c007, - 0x08a21002, - 0x08a23000, - 0x08a2e000, - 0x08a2f000, - 0x08a3101d, - 0x08a58000, - 0x08a59805, - 0x08a5d000, - 0x08a5e800, - 0x08a5f801, - 0x08a61001, - 0x08a64007, - 0x08a6d0a5, - 0x08ad7800, - 0x08ad9005, - 0x08ade001, - 0x08adf801, - 0x08aee023, - 0x08b19807, - 0x08b1e800, - 0x08b1f801, - 0x08b2280a, - 0x08b2d005, - 0x08b36812, - 0x08b55800, - 0x08b56800, - 0x08b58005, - 0x08b5b800, - 0x08b5d005, - 0x08b65035, - 0x08b8d804, - 0x08b91003, - 0x08b93808, - 0x08ba38b8, - 0x08c17808, - 0x08c1c801, - 0x08c1e063, - 0x08c7980b, - 0x08c83801, - 0x08c85001, - 0x08c8a000, - 0x08c8b800, - 0x08c98000, - 0x08c9b000, - 0x08c9c803, - 0x08c9f000, - 0x08ca1800, - 0x08ca3808, - 0x08cad045, - 0x08cd4001, - 0x08cea007, - 0x08cf0000, - 0x08cf281a, - 0x08d00809, - 0x08d19805, - 0x08d1d803, - 0x08d23808, - 0x08d28805, - 0x08d2c802, - 0x08d4500c, - 0x08d4c001, - 0x08d5180c, - 0x08d7c806, - 0x08d850f5, - 0x08e04800, - 0x08e1800d, - 0x08e1f800, - 0x08e23009, - 0x08e36802, - 0x08e48018, - 0x08e55006, - 0x08e59001, - 0x08e5a84a, - 0x08e83800, - 0x08e85000, - 0x08e98814, - 0x08ea3808, - 0x08ead005, - 0x08eb3000, - 0x08eb4800, - 0x08ec7803, - 0x08eca800, - 0x08ecb800, - 0x08ecc806, - 0x08ed5135, - 0x08f79801, - 0x08f7c808, - 0x08f88800, - 0x08f9b007, - 0x08fa0000, - 0x08fa1000, - 0x08fad055, - 0x08fd880e, - 0x08ff900c, - 0x091cd065, - 0x09237800, - 0x0923a80a, - 0x092a27ff, - 0x096a224b, - 0x097f980c, - 0x09a18010, - 0x09a23fff, - 0x09e23fb8, - 0x0a323fff, - 0x0a723fff, - 0x0ab23fff, - 0x0af23fff, - 0x0b3239b8, - 0x0b51c806, - 0x0b52f800, - 0x0b535003, - 0x0b55f800, - 0x0b565005, - 0x0b577006, - 0x0b57b009, - 0x0b598006, - 0x0b5a3009, - 0x0b5ad000, - 0x0b5b1000, - 0x0b5bc004, - 0x0b5c82af, - 0x0b74d864, - 0x0b7a5804, - 0x0b7c400a, - 0x0b7d003f, - 0x0b7f200b, - 0x0b7f900d, - 0x0c3fc007, - 0x0c66b029, - 0x0c684fff, - 0x0ca84fff, - 0x0ce84fff, - 0x0d284fff, - 0x0d684ae6, - 0x0d7fa000, - 0x0d7fe000, - 0x0d7ff800, - 0x0d89180e, - 0x0d89981c, - 0x0d8a9801, - 0x0d8ab00d, - 0x0d8b4007, - 0x0d97e7ff, - 0x0dd7e103, - 0x0de35804, - 0x0de3e802, - 0x0de44806, - 0x0de4d001, - 0x0de4e801, - 0x0de507ff, - 0x0e2507ff, - 0x0e6502af, - 0x0e7e203b, - 0x0e87b009, - 0x0e893801, - 0x0e8b2800, - 0x0e8b3802, - 0x0e8b7014, - 0x0e8c2806, - 0x0e8d5003, - 0x0e8f5814, - 0x0e921002, - 0x0e923079, - 0x0e96a00b, - 0x0e97a00b, - 0x0e9ab808, - 0x0e9bc886, - 0x0ea2a800, - 0x0ea4e800, - 0x0ea50001, - 0x0ea51801, - 0x0ea53801, - 0x0ea56800, - 0x0ea5d000, - 0x0ea5e000, - 0x0ea62000, - 0x0ea83000, - 0x0ea85801, - 0x0ea8a800, - 0x0ea8e800, - 0x0ea9d000, - 0x0ea9f800, - 0x0eaa2800, - 0x0eaa3802, - 0x0eaa8800, - 0x0eb53001, - 0x0ebe6001, - 0x0ed00036, - 0x0ed1d831, - 0x0ed3a800, - 0x0ed42000, - 0x0ed46473, - 0x0ef8f805, - 0x0ef95904, - 0x0f037091, - 0x0f096809, - 0x0f09f001, - 0x0f0a5003, - 0x0f0a813f, - 0x0f157011, - 0x0f176003, - 0x0f17d004, - 0x0f1801cf, - 0x0f276003, - 0x0f27d2e5, - 0x0f3f3800, - 0x0f3f6000, - 0x0f3f7800, - 0x0f3ff800, - 0x0f462801, - 0x0f46802f, - 0x0f4a2006, - 0x0f4a6003, - 0x0f4ad003, - 0x0f4b0310, - 0x0f65a84b, - 0x0f69f0c1, - 0x0f702000, - 0x0f710000, - 0x0f711800, - 0x0f712801, - 0x0f714000, - 0x0f719800, - 0x0f71c000, - 0x0f71d000, - 0x0f71e005, - 0x0f721803, - 0x0f724000, - 0x0f725000, - 0x0f726000, - 0x0f728000, - 0x0f729800, - 0x0f72a801, - 0x0f72c000, - 0x0f72d000, - 0x0f72e000, - 0x0f72f000, - 0x0f730000, - 0x0f731800, - 0x0f732801, - 0x0f735800, - 0x0f739800, - 0x0f73c000, - 0x0f73e800, - 0x0f73f800, - 0x0f745000, - 0x0f74e004, - 0x0f752000, - 0x0f755000, - 0x0f75e033, - 0x0f77910d, - 0x0f816003, - 0x0f84a00b, - 0x0f857801, - 0x0f860000, - 0x0f868000, - 0x0f87b009, - 0x0f8d7037, - 0x0f90180c, - 0x0f91e003, - 0x0f924806, - 0x0f92900d, - 0x0f933099, - 0x0fb6c003, - 0x0fb76802, - 0x0fb7e802, - 0x0fbbb803, - 0x0fbed005, - 0x0fbf6003, - 0x0fbf880e, - 0x0fc06003, - 0x0fc24007, - 0x0fc2d005, - 0x0fc44007, - 0x0fc57001, - 0x0fc5904d, - 0x0fd2a00b, - 0x0fd37001, - 0x0fd3e802, - 0x0fd44806, - 0x0fd5f000, - 0x0fd63007, - 0x0fd6e003, - 0x0fd74806, - 0x0fd7c806, - 0x0fdc9800, - 0x0fde5824, - 0x0fdfd405, - 0x1537001f, - 0x15b9d005, - 0x15c0f001, - 0x1675100d, - 0x175f0fff, - 0x179f0c1e, - 0x17d0f5e1, - 0x189a5804}; +/// - bits [0, 13] The size of the range, allowing 16384 elements. +/// - bits [14, 31] The lower bound code point of the range. The upper bound of +/// the range is lower bound + size. Note the code expects code units the fit +/// into 18 bits, instead of the 21 bits needed for the full Unicode range. +_LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __entries[711] = { + 0x00000020 /* 00000000 - 00000020 [ 33] */, + 0x001fc021 /* 0000007f - 000000a0 [ 34] */, + 0x002b4000 /* 000000ad - 000000ad [ 1] */, + 0x00de0001 /* 00000378 - 00000379 [ 2] */, + 0x00e00003 /* 00000380 - 00000383 [ 4] */, + 0x00e2c000 /* 0000038b - 0000038b [ 1] */, + 0x00e34000 /* 0000038d - 0000038d [ 1] */, + 0x00e88000 /* 000003a2 - 000003a2 [ 1] */, + 0x014c0000 /* 00000530 - 00000530 [ 1] */, + 0x0155c001 /* 00000557 - 00000558 [ 2] */, + 0x0162c001 /* 0000058b - 0000058c [ 2] */, + 0x01640000 /* 00000590 - 00000590 [ 1] */, + 0x01720007 /* 000005c8 - 000005cf [ 8] */, + 0x017ac003 /* 000005eb - 000005ee [ 4] */, + 0x017d4010 /* 000005f5 - 00000605 [ 17] */, + 0x01870000 /* 0000061c - 0000061c [ 1] */, + 0x01b74000 /* 000006dd - 000006dd [ 1] */, + 0x01c38001 /* 0000070e - 0000070f [ 2] */, + 0x01d2c001 /* 0000074b - 0000074c [ 2] */, + 0x01ec800d /* 000007b2 - 000007bf [ 14] */, + 0x01fec001 /* 000007fb - 000007fc [ 2] */, + 0x020b8001 /* 0000082e - 0000082f [ 2] */, + 0x020fc000 /* 0000083f - 0000083f [ 1] */, + 0x02170001 /* 0000085c - 0000085d [ 2] */, + 0x0217c000 /* 0000085f - 0000085f [ 1] */, + 0x021ac004 /* 0000086b - 0000086f [ 5] */, + 0x0223c008 /* 0000088f - 00000897 [ 9] */, + 0x02388000 /* 000008e2 - 000008e2 [ 1] */, + 0x02610000 /* 00000984 - 00000984 [ 1] */, + 0x02634001 /* 0000098d - 0000098e [ 2] */, + 0x02644001 /* 00000991 - 00000992 [ 2] */, + 0x026a4000 /* 000009a9 - 000009a9 [ 1] */, + 0x026c4000 /* 000009b1 - 000009b1 [ 1] */, + 0x026cc002 /* 000009b3 - 000009b5 [ 3] */, + 0x026e8001 /* 000009ba - 000009bb [ 2] */, + 0x02714001 /* 000009c5 - 000009c6 [ 2] */, + 0x02724001 /* 000009c9 - 000009ca [ 2] */, + 0x0273c007 /* 000009cf - 000009d6 [ 8] */, + 0x02760003 /* 000009d8 - 000009db [ 4] */, + 0x02778000 /* 000009de - 000009de [ 1] */, + 0x02790001 /* 000009e4 - 000009e5 [ 2] */, + 0x027fc001 /* 000009ff - 00000a00 [ 2] */, + 0x02810000 /* 00000a04 - 00000a04 [ 1] */, + 0x0282c003 /* 00000a0b - 00000a0e [ 4] */, + 0x02844001 /* 00000a11 - 00000a12 [ 2] */, + 0x028a4000 /* 00000a29 - 00000a29 [ 1] */, + 0x028c4000 /* 00000a31 - 00000a31 [ 1] */, + 0x028d0000 /* 00000a34 - 00000a34 [ 1] */, + 0x028dc000 /* 00000a37 - 00000a37 [ 1] */, + 0x028e8001 /* 00000a3a - 00000a3b [ 2] */, + 0x028f4000 /* 00000a3d - 00000a3d [ 1] */, + 0x0290c003 /* 00000a43 - 00000a46 [ 4] */, + 0x02924001 /* 00000a49 - 00000a4a [ 2] */, + 0x02938002 /* 00000a4e - 00000a50 [ 3] */, + 0x02948006 /* 00000a52 - 00000a58 [ 7] */, + 0x02974000 /* 00000a5d - 00000a5d [ 1] */, + 0x0297c006 /* 00000a5f - 00000a65 [ 7] */, + 0x029dc009 /* 00000a77 - 00000a80 [ 10] */, + 0x02a10000 /* 00000a84 - 00000a84 [ 1] */, + 0x02a38000 /* 00000a8e - 00000a8e [ 1] */, + 0x02a48000 /* 00000a92 - 00000a92 [ 1] */, + 0x02aa4000 /* 00000aa9 - 00000aa9 [ 1] */, + 0x02ac4000 /* 00000ab1 - 00000ab1 [ 1] */, + 0x02ad0000 /* 00000ab4 - 00000ab4 [ 1] */, + 0x02ae8001 /* 00000aba - 00000abb [ 2] */, + 0x02b18000 /* 00000ac6 - 00000ac6 [ 1] */, + 0x02b28000 /* 00000aca - 00000aca [ 1] */, + 0x02b38001 /* 00000ace - 00000acf [ 2] */, + 0x02b4400e /* 00000ad1 - 00000adf [ 15] */, + 0x02b90001 /* 00000ae4 - 00000ae5 [ 2] */, + 0x02bc8006 /* 00000af2 - 00000af8 [ 7] */, + 0x02c00000 /* 00000b00 - 00000b00 [ 1] */, + 0x02c10000 /* 00000b04 - 00000b04 [ 1] */, + 0x02c34001 /* 00000b0d - 00000b0e [ 2] */, + 0x02c44001 /* 00000b11 - 00000b12 [ 2] */, + 0x02ca4000 /* 00000b29 - 00000b29 [ 1] */, + 0x02cc4000 /* 00000b31 - 00000b31 [ 1] */, + 0x02cd0000 /* 00000b34 - 00000b34 [ 1] */, + 0x02ce8001 /* 00000b3a - 00000b3b [ 2] */, + 0x02d14001 /* 00000b45 - 00000b46 [ 2] */, + 0x02d24001 /* 00000b49 - 00000b4a [ 2] */, + 0x02d38006 /* 00000b4e - 00000b54 [ 7] */, + 0x02d60003 /* 00000b58 - 00000b5b [ 4] */, + 0x02d78000 /* 00000b5e - 00000b5e [ 1] */, + 0x02d90001 /* 00000b64 - 00000b65 [ 2] */, + 0x02de0009 /* 00000b78 - 00000b81 [ 10] */, + 0x02e10000 /* 00000b84 - 00000b84 [ 1] */, + 0x02e2c002 /* 00000b8b - 00000b8d [ 3] */, + 0x02e44000 /* 00000b91 - 00000b91 [ 1] */, + 0x02e58002 /* 00000b96 - 00000b98 [ 3] */, + 0x02e6c000 /* 00000b9b - 00000b9b [ 1] */, + 0x02e74000 /* 00000b9d - 00000b9d [ 1] */, + 0x02e80002 /* 00000ba0 - 00000ba2 [ 3] */, + 0x02e94002 /* 00000ba5 - 00000ba7 [ 3] */, + 0x02eac002 /* 00000bab - 00000bad [ 3] */, + 0x02ee8003 /* 00000bba - 00000bbd [ 4] */, + 0x02f0c002 /* 00000bc3 - 00000bc5 [ 3] */, + 0x02f24000 /* 00000bc9 - 00000bc9 [ 1] */, + 0x02f38001 /* 00000bce - 00000bcf [ 2] */, + 0x02f44005 /* 00000bd1 - 00000bd6 [ 6] */, + 0x02f6000d /* 00000bd8 - 00000be5 [ 14] */, + 0x02fec004 /* 00000bfb - 00000bff [ 5] */, + 0x03034000 /* 00000c0d - 00000c0d [ 1] */, + 0x03044000 /* 00000c11 - 00000c11 [ 1] */, + 0x030a4000 /* 00000c29 - 00000c29 [ 1] */, + 0x030e8001 /* 00000c3a - 00000c3b [ 2] */, + 0x03114000 /* 00000c45 - 00000c45 [ 1] */, + 0x03124000 /* 00000c49 - 00000c49 [ 1] */, + 0x03138006 /* 00000c4e - 00000c54 [ 7] */, + 0x0315c000 /* 00000c57 - 00000c57 [ 1] */, + 0x0316c001 /* 00000c5b - 00000c5c [ 2] */, + 0x03178001 /* 00000c5e - 00000c5f [ 2] */, + 0x03190001 /* 00000c64 - 00000c65 [ 2] */, + 0x031c0006 /* 00000c70 - 00000c76 [ 7] */, + 0x03234000 /* 00000c8d - 00000c8d [ 1] */, + 0x03244000 /* 00000c91 - 00000c91 [ 1] */, + 0x032a4000 /* 00000ca9 - 00000ca9 [ 1] */, + 0x032d0000 /* 00000cb4 - 00000cb4 [ 1] */, + 0x032e8001 /* 00000cba - 00000cbb [ 2] */, + 0x03314000 /* 00000cc5 - 00000cc5 [ 1] */, + 0x03324000 /* 00000cc9 - 00000cc9 [ 1] */, + 0x03338006 /* 00000cce - 00000cd4 [ 7] */, + 0x0335c005 /* 00000cd7 - 00000cdc [ 6] */, + 0x0337c000 /* 00000cdf - 00000cdf [ 1] */, + 0x03390001 /* 00000ce4 - 00000ce5 [ 2] */, + 0x033c0000 /* 00000cf0 - 00000cf0 [ 1] */, + 0x033d000b /* 00000cf4 - 00000cff [ 12] */, + 0x03434000 /* 00000d0d - 00000d0d [ 1] */, + 0x03444000 /* 00000d11 - 00000d11 [ 1] */, + 0x03514000 /* 00000d45 - 00000d45 [ 1] */, + 0x03524000 /* 00000d49 - 00000d49 [ 1] */, + 0x03540003 /* 00000d50 - 00000d53 [ 4] */, + 0x03590001 /* 00000d64 - 00000d65 [ 2] */, + 0x03600000 /* 00000d80 - 00000d80 [ 1] */, + 0x03610000 /* 00000d84 - 00000d84 [ 1] */, + 0x0365c002 /* 00000d97 - 00000d99 [ 3] */, + 0x036c8000 /* 00000db2 - 00000db2 [ 1] */, + 0x036f0000 /* 00000dbc - 00000dbc [ 1] */, + 0x036f8001 /* 00000dbe - 00000dbf [ 2] */, + 0x0371c002 /* 00000dc7 - 00000dc9 [ 3] */, + 0x0372c003 /* 00000dcb - 00000dce [ 4] */, + 0x03754000 /* 00000dd5 - 00000dd5 [ 1] */, + 0x0375c000 /* 00000dd7 - 00000dd7 [ 1] */, + 0x03780005 /* 00000de0 - 00000de5 [ 6] */, + 0x037c0001 /* 00000df0 - 00000df1 [ 2] */, + 0x037d400b /* 00000df5 - 00000e00 [ 12] */, + 0x038ec003 /* 00000e3b - 00000e3e [ 4] */, + 0x03970024 /* 00000e5c - 00000e80 [ 37] */, + 0x03a0c000 /* 00000e83 - 00000e83 [ 1] */, + 0x03a14000 /* 00000e85 - 00000e85 [ 1] */, + 0x03a2c000 /* 00000e8b - 00000e8b [ 1] */, + 0x03a90000 /* 00000ea4 - 00000ea4 [ 1] */, + 0x03a98000 /* 00000ea6 - 00000ea6 [ 1] */, + 0x03af8001 /* 00000ebe - 00000ebf [ 2] */, + 0x03b14000 /* 00000ec5 - 00000ec5 [ 1] */, + 0x03b1c000 /* 00000ec7 - 00000ec7 [ 1] */, + 0x03b3c000 /* 00000ecf - 00000ecf [ 1] */, + 0x03b68001 /* 00000eda - 00000edb [ 2] */, + 0x03b8001f /* 00000ee0 - 00000eff [ 32] */, + 0x03d20000 /* 00000f48 - 00000f48 [ 1] */, + 0x03db4003 /* 00000f6d - 00000f70 [ 4] */, + 0x03e60000 /* 00000f98 - 00000f98 [ 1] */, + 0x03ef4000 /* 00000fbd - 00000fbd [ 1] */, + 0x03f34000 /* 00000fcd - 00000fcd [ 1] */, + 0x03f6c024 /* 00000fdb - 00000fff [ 37] */, + 0x04318000 /* 000010c6 - 000010c6 [ 1] */, + 0x04320004 /* 000010c8 - 000010cc [ 5] */, + 0x04338001 /* 000010ce - 000010cf [ 2] */, + 0x04924000 /* 00001249 - 00001249 [ 1] */, + 0x04938001 /* 0000124e - 0000124f [ 2] */, + 0x0495c000 /* 00001257 - 00001257 [ 1] */, + 0x04964000 /* 00001259 - 00001259 [ 1] */, + 0x04978001 /* 0000125e - 0000125f [ 2] */, + 0x04a24000 /* 00001289 - 00001289 [ 1] */, + 0x04a38001 /* 0000128e - 0000128f [ 2] */, + 0x04ac4000 /* 000012b1 - 000012b1 [ 1] */, + 0x04ad8001 /* 000012b6 - 000012b7 [ 2] */, + 0x04afc000 /* 000012bf - 000012bf [ 1] */, + 0x04b04000 /* 000012c1 - 000012c1 [ 1] */, + 0x04b18001 /* 000012c6 - 000012c7 [ 2] */, + 0x04b5c000 /* 000012d7 - 000012d7 [ 1] */, + 0x04c44000 /* 00001311 - 00001311 [ 1] */, + 0x04c58001 /* 00001316 - 00001317 [ 2] */, + 0x04d6c001 /* 0000135b - 0000135c [ 2] */, + 0x04df4002 /* 0000137d - 0000137f [ 3] */, + 0x04e68005 /* 0000139a - 0000139f [ 6] */, + 0x04fd8001 /* 000013f6 - 000013f7 [ 2] */, + 0x04ff8001 /* 000013fe - 000013ff [ 2] */, + 0x05a00000 /* 00001680 - 00001680 [ 1] */, + 0x05a74002 /* 0000169d - 0000169f [ 3] */, + 0x05be4006 /* 000016f9 - 000016ff [ 7] */, + 0x05c58008 /* 00001716 - 0000171e [ 9] */, + 0x05cdc008 /* 00001737 - 0000173f [ 9] */, + 0x05d5000b /* 00001754 - 0000175f [ 12] */, + 0x05db4000 /* 0000176d - 0000176d [ 1] */, + 0x05dc4000 /* 00001771 - 00001771 [ 1] */, + 0x05dd000b /* 00001774 - 0000177f [ 12] */, + 0x05f78001 /* 000017de - 000017df [ 2] */, + 0x05fa8005 /* 000017ea - 000017ef [ 6] */, + 0x05fe8005 /* 000017fa - 000017ff [ 6] */, + 0x06038000 /* 0000180e - 0000180e [ 1] */, + 0x06068005 /* 0000181a - 0000181f [ 6] */, + 0x061e4006 /* 00001879 - 0000187f [ 7] */, + 0x062ac004 /* 000018ab - 000018af [ 5] */, + 0x063d8009 /* 000018f6 - 000018ff [ 10] */, + 0x0647c000 /* 0000191f - 0000191f [ 1] */, + 0x064b0003 /* 0000192c - 0000192f [ 4] */, + 0x064f0003 /* 0000193c - 0000193f [ 4] */, + 0x06504002 /* 00001941 - 00001943 [ 3] */, + 0x065b8001 /* 0000196e - 0000196f [ 2] */, + 0x065d400a /* 00001975 - 0000197f [ 11] */, + 0x066b0003 /* 000019ac - 000019af [ 4] */, + 0x06728005 /* 000019ca - 000019cf [ 6] */, + 0x0676c002 /* 000019db - 000019dd [ 3] */, + 0x06870001 /* 00001a1c - 00001a1d [ 2] */, + 0x0697c000 /* 00001a5f - 00001a5f [ 1] */, + 0x069f4001 /* 00001a7d - 00001a7e [ 2] */, + 0x06a28005 /* 00001a8a - 00001a8f [ 6] */, + 0x06a68005 /* 00001a9a - 00001a9f [ 6] */, + 0x06ab8001 /* 00001aae - 00001aaf [ 2] */, + 0x06b3c030 /* 00001acf - 00001aff [ 49] */, + 0x06d34002 /* 00001b4d - 00001b4f [ 3] */, + 0x06dfc000 /* 00001b7f - 00001b7f [ 1] */, + 0x06fd0007 /* 00001bf4 - 00001bfb [ 8] */, + 0x070e0002 /* 00001c38 - 00001c3a [ 3] */, + 0x07128002 /* 00001c4a - 00001c4c [ 3] */, + 0x07224006 /* 00001c89 - 00001c8f [ 7] */, + 0x072ec001 /* 00001cbb - 00001cbc [ 2] */, + 0x07320007 /* 00001cc8 - 00001ccf [ 8] */, + 0x073ec004 /* 00001cfb - 00001cff [ 5] */, + 0x07c58001 /* 00001f16 - 00001f17 [ 2] */, + 0x07c78001 /* 00001f1e - 00001f1f [ 2] */, + 0x07d18001 /* 00001f46 - 00001f47 [ 2] */, + 0x07d38001 /* 00001f4e - 00001f4f [ 2] */, + 0x07d60000 /* 00001f58 - 00001f58 [ 1] */, + 0x07d68000 /* 00001f5a - 00001f5a [ 1] */, + 0x07d70000 /* 00001f5c - 00001f5c [ 1] */, + 0x07d78000 /* 00001f5e - 00001f5e [ 1] */, + 0x07df8001 /* 00001f7e - 00001f7f [ 2] */, + 0x07ed4000 /* 00001fb5 - 00001fb5 [ 1] */, + 0x07f14000 /* 00001fc5 - 00001fc5 [ 1] */, + 0x07f50001 /* 00001fd4 - 00001fd5 [ 2] */, + 0x07f70000 /* 00001fdc - 00001fdc [ 1] */, + 0x07fc0001 /* 00001ff0 - 00001ff1 [ 2] */, + 0x07fd4000 /* 00001ff5 - 00001ff5 [ 1] */, + 0x07ffc010 /* 00001fff - 0000200f [ 17] */, + 0x080a0007 /* 00002028 - 0000202f [ 8] */, + 0x0817c010 /* 0000205f - 0000206f [ 17] */, + 0x081c8001 /* 00002072 - 00002073 [ 2] */, + 0x0823c000 /* 0000208f - 0000208f [ 1] */, + 0x08274002 /* 0000209d - 0000209f [ 3] */, + 0x0830400e /* 000020c1 - 000020cf [ 15] */, + 0x083c400e /* 000020f1 - 000020ff [ 15] */, + 0x08630003 /* 0000218c - 0000218f [ 4] */, + 0x0909c018 /* 00002427 - 0000243f [ 25] */, + 0x0912c014 /* 0000244b - 0000245f [ 21] */, + 0x0add0001 /* 00002b74 - 00002b75 [ 2] */, + 0x0ae58000 /* 00002b96 - 00002b96 [ 1] */, + 0x0b3d0004 /* 00002cf4 - 00002cf8 [ 5] */, + 0x0b498000 /* 00002d26 - 00002d26 [ 1] */, + 0x0b4a0004 /* 00002d28 - 00002d2c [ 5] */, + 0x0b4b8001 /* 00002d2e - 00002d2f [ 2] */, + 0x0b5a0006 /* 00002d68 - 00002d6e [ 7] */, + 0x0b5c400d /* 00002d71 - 00002d7e [ 14] */, + 0x0b65c008 /* 00002d97 - 00002d9f [ 9] */, + 0x0b69c000 /* 00002da7 - 00002da7 [ 1] */, + 0x0b6bc000 /* 00002daf - 00002daf [ 1] */, + 0x0b6dc000 /* 00002db7 - 00002db7 [ 1] */, + 0x0b6fc000 /* 00002dbf - 00002dbf [ 1] */, + 0x0b71c000 /* 00002dc7 - 00002dc7 [ 1] */, + 0x0b73c000 /* 00002dcf - 00002dcf [ 1] */, + 0x0b75c000 /* 00002dd7 - 00002dd7 [ 1] */, + 0x0b77c000 /* 00002ddf - 00002ddf [ 1] */, + 0x0b978021 /* 00002e5e - 00002e7f [ 34] */, + 0x0ba68000 /* 00002e9a - 00002e9a [ 1] */, + 0x0bbd000b /* 00002ef4 - 00002eff [ 12] */, + 0x0bf58019 /* 00002fd6 - 00002fef [ 26] */, + 0x0c000000 /* 00003000 - 00003000 [ 1] */, + 0x0c100000 /* 00003040 - 00003040 [ 1] */, + 0x0c25c001 /* 00003097 - 00003098 [ 2] */, + 0x0c400004 /* 00003100 - 00003104 [ 5] */, + 0x0c4c0000 /* 00003130 - 00003130 [ 1] */, + 0x0c63c000 /* 0000318f - 0000318f [ 1] */, + 0x0c79000a /* 000031e4 - 000031ee [ 11] */, + 0x0c87c000 /* 0000321f - 0000321f [ 1] */, + 0x29234002 /* 0000a48d - 0000a48f [ 3] */, + 0x2931c008 /* 0000a4c7 - 0000a4cf [ 9] */, + 0x298b0013 /* 0000a62c - 0000a63f [ 20] */, + 0x29be0007 /* 0000a6f8 - 0000a6ff [ 8] */, + 0x29f2c004 /* 0000a7cb - 0000a7cf [ 5] */, + 0x29f48000 /* 0000a7d2 - 0000a7d2 [ 1] */, + 0x29f50000 /* 0000a7d4 - 0000a7d4 [ 1] */, + 0x29f68017 /* 0000a7da - 0000a7f1 [ 24] */, + 0x2a0b4002 /* 0000a82d - 0000a82f [ 3] */, + 0x2a0e8005 /* 0000a83a - 0000a83f [ 6] */, + 0x2a1e0007 /* 0000a878 - 0000a87f [ 8] */, + 0x2a318007 /* 0000a8c6 - 0000a8cd [ 8] */, + 0x2a368005 /* 0000a8da - 0000a8df [ 6] */, + 0x2a55000a /* 0000a954 - 0000a95e [ 11] */, + 0x2a5f4002 /* 0000a97d - 0000a97f [ 3] */, + 0x2a738000 /* 0000a9ce - 0000a9ce [ 1] */, + 0x2a768003 /* 0000a9da - 0000a9dd [ 4] */, + 0x2a7fc000 /* 0000a9ff - 0000a9ff [ 1] */, + 0x2a8dc008 /* 0000aa37 - 0000aa3f [ 9] */, + 0x2a938001 /* 0000aa4e - 0000aa4f [ 2] */, + 0x2a968001 /* 0000aa5a - 0000aa5b [ 2] */, + 0x2ab0c017 /* 0000aac3 - 0000aada [ 24] */, + 0x2abdc009 /* 0000aaf7 - 0000ab00 [ 10] */, + 0x2ac1c001 /* 0000ab07 - 0000ab08 [ 2] */, + 0x2ac3c001 /* 0000ab0f - 0000ab10 [ 2] */, + 0x2ac5c008 /* 0000ab17 - 0000ab1f [ 9] */, + 0x2ac9c000 /* 0000ab27 - 0000ab27 [ 1] */, + 0x2acbc000 /* 0000ab2f - 0000ab2f [ 1] */, + 0x2adb0003 /* 0000ab6c - 0000ab6f [ 4] */, + 0x2afb8001 /* 0000abee - 0000abef [ 2] */, + 0x2afe8005 /* 0000abfa - 0000abff [ 6] */, + 0x35e9000b /* 0000d7a4 - 0000d7af [ 12] */, + 0x35f1c003 /* 0000d7c7 - 0000d7ca [ 4] */, + 0x35ff2103 /* 0000d7fc - 0000f8ff [ 8452] */, + 0x3e9b8001 /* 0000fa6e - 0000fa6f [ 2] */, + 0x3eb68025 /* 0000fada - 0000faff [ 38] */, + 0x3ec1c00b /* 0000fb07 - 0000fb12 [ 12] */, + 0x3ec60004 /* 0000fb18 - 0000fb1c [ 5] */, + 0x3ecdc000 /* 0000fb37 - 0000fb37 [ 1] */, + 0x3ecf4000 /* 0000fb3d - 0000fb3d [ 1] */, + 0x3ecfc000 /* 0000fb3f - 0000fb3f [ 1] */, + 0x3ed08000 /* 0000fb42 - 0000fb42 [ 1] */, + 0x3ed14000 /* 0000fb45 - 0000fb45 [ 1] */, + 0x3ef0c00f /* 0000fbc3 - 0000fbd2 [ 16] */, + 0x3f640001 /* 0000fd90 - 0000fd91 [ 2] */, + 0x3f720006 /* 0000fdc8 - 0000fdce [ 7] */, + 0x3f74001f /* 0000fdd0 - 0000fdef [ 32] */, + 0x3f868005 /* 0000fe1a - 0000fe1f [ 6] */, + 0x3f94c000 /* 0000fe53 - 0000fe53 [ 1] */, + 0x3f99c000 /* 0000fe67 - 0000fe67 [ 1] */, + 0x3f9b0003 /* 0000fe6c - 0000fe6f [ 4] */, + 0x3f9d4000 /* 0000fe75 - 0000fe75 [ 1] */, + 0x3fbf4003 /* 0000fefd - 0000ff00 [ 4] */, + 0x3fefc002 /* 0000ffbf - 0000ffc1 [ 3] */, + 0x3ff20001 /* 0000ffc8 - 0000ffc9 [ 2] */, + 0x3ff40001 /* 0000ffd0 - 0000ffd1 [ 2] */, + 0x3ff60001 /* 0000ffd8 - 0000ffd9 [ 2] */, + 0x3ff74002 /* 0000ffdd - 0000ffdf [ 3] */, + 0x3ff9c000 /* 0000ffe7 - 0000ffe7 [ 1] */, + 0x3ffbc00c /* 0000ffef - 0000fffb [ 13] */, + 0x3fff8001 /* 0000fffe - 0000ffff [ 2] */, + 0x40030000 /* 0001000c - 0001000c [ 1] */, + 0x4009c000 /* 00010027 - 00010027 [ 1] */, + 0x400ec000 /* 0001003b - 0001003b [ 1] */, + 0x400f8000 /* 0001003e - 0001003e [ 1] */, + 0x40138001 /* 0001004e - 0001004f [ 2] */, + 0x40178021 /* 0001005e - 0001007f [ 34] */, + 0x403ec004 /* 000100fb - 000100ff [ 5] */, + 0x4040c003 /* 00010103 - 00010106 [ 4] */, + 0x404d0002 /* 00010134 - 00010136 [ 3] */, + 0x4063c000 /* 0001018f - 0001018f [ 1] */, + 0x40674002 /* 0001019d - 0001019f [ 3] */, + 0x4068402e /* 000101a1 - 000101cf [ 47] */, + 0x407f8081 /* 000101fe - 0001027f [ 130] */, + 0x40a74002 /* 0001029d - 0001029f [ 3] */, + 0x40b4400e /* 000102d1 - 000102df [ 15] */, + 0x40bf0003 /* 000102fc - 000102ff [ 4] */, + 0x40c90008 /* 00010324 - 0001032c [ 9] */, + 0x40d2c004 /* 0001034b - 0001034f [ 5] */, + 0x40dec004 /* 0001037b - 0001037f [ 5] */, + 0x40e78000 /* 0001039e - 0001039e [ 1] */, + 0x40f10003 /* 000103c4 - 000103c7 [ 4] */, + 0x40f58029 /* 000103d6 - 000103ff [ 42] */, + 0x41278001 /* 0001049e - 0001049f [ 2] */, + 0x412a8005 /* 000104aa - 000104af [ 6] */, + 0x41350003 /* 000104d4 - 000104d7 [ 4] */, + 0x413f0003 /* 000104fc - 000104ff [ 4] */, + 0x414a0007 /* 00010528 - 0001052f [ 8] */, + 0x4159000a /* 00010564 - 0001056e [ 11] */, + 0x415ec000 /* 0001057b - 0001057b [ 1] */, + 0x4162c000 /* 0001058b - 0001058b [ 1] */, + 0x4164c000 /* 00010593 - 00010593 [ 1] */, + 0x41658000 /* 00010596 - 00010596 [ 1] */, + 0x41688000 /* 000105a2 - 000105a2 [ 1] */, + 0x416c8000 /* 000105b2 - 000105b2 [ 1] */, + 0x416e8000 /* 000105ba - 000105ba [ 1] */, + 0x416f4042 /* 000105bd - 000105ff [ 67] */, + 0x41cdc008 /* 00010737 - 0001073f [ 9] */, + 0x41d58009 /* 00010756 - 0001075f [ 10] */, + 0x41da0017 /* 00010768 - 0001077f [ 24] */, + 0x41e18000 /* 00010786 - 00010786 [ 1] */, + 0x41ec4000 /* 000107b1 - 000107b1 [ 1] */, + 0x41eec044 /* 000107bb - 000107ff [ 69] */, + 0x42018001 /* 00010806 - 00010807 [ 2] */, + 0x42024000 /* 00010809 - 00010809 [ 1] */, + 0x420d8000 /* 00010836 - 00010836 [ 1] */, + 0x420e4002 /* 00010839 - 0001083b [ 3] */, + 0x420f4001 /* 0001083d - 0001083e [ 2] */, + 0x42158000 /* 00010856 - 00010856 [ 1] */, + 0x4227c007 /* 0001089f - 000108a6 [ 8] */, + 0x422c002f /* 000108b0 - 000108df [ 48] */, + 0x423cc000 /* 000108f3 - 000108f3 [ 1] */, + 0x423d8004 /* 000108f6 - 000108fa [ 5] */, + 0x42470002 /* 0001091c - 0001091e [ 3] */, + 0x424e8004 /* 0001093a - 0001093e [ 5] */, + 0x4250003f /* 00010940 - 0001097f [ 64] */, + 0x426e0003 /* 000109b8 - 000109bb [ 4] */, + 0x42740001 /* 000109d0 - 000109d1 [ 2] */, + 0x42810000 /* 00010a04 - 00010a04 [ 1] */, + 0x4281c004 /* 00010a07 - 00010a0b [ 5] */, + 0x42850000 /* 00010a14 - 00010a14 [ 1] */, + 0x42860000 /* 00010a18 - 00010a18 [ 1] */, + 0x428d8001 /* 00010a36 - 00010a37 [ 2] */, + 0x428ec003 /* 00010a3b - 00010a3e [ 4] */, + 0x42924006 /* 00010a49 - 00010a4f [ 7] */, + 0x42964006 /* 00010a59 - 00010a5f [ 7] */, + 0x42a8001f /* 00010aa0 - 00010abf [ 32] */, + 0x42b9c003 /* 00010ae7 - 00010aea [ 4] */, + 0x42bdc008 /* 00010af7 - 00010aff [ 9] */, + 0x42cd8002 /* 00010b36 - 00010b38 [ 3] */, + 0x42d58001 /* 00010b56 - 00010b57 [ 2] */, + 0x42dcc004 /* 00010b73 - 00010b77 [ 5] */, + 0x42e48006 /* 00010b92 - 00010b98 [ 7] */, + 0x42e7400b /* 00010b9d - 00010ba8 [ 12] */, + 0x42ec004f /* 00010bb0 - 00010bff [ 80] */, + 0x43124036 /* 00010c49 - 00010c7f [ 55] */, + 0x432cc00c /* 00010cb3 - 00010cbf [ 13] */, + 0x433cc006 /* 00010cf3 - 00010cf9 [ 7] */, + 0x434a0007 /* 00010d28 - 00010d2f [ 8] */, + 0x434e8125 /* 00010d3a - 00010e5f [ 294] */, + 0x439fc000 /* 00010e7f - 00010e7f [ 1] */, + 0x43aa8000 /* 00010eaa - 00010eaa [ 1] */, + 0x43ab8001 /* 00010eae - 00010eaf [ 2] */, + 0x43ac804a /* 00010eb2 - 00010efc [ 75] */, + 0x43ca0007 /* 00010f28 - 00010f2f [ 8] */, + 0x43d68015 /* 00010f5a - 00010f6f [ 22] */, + 0x43e28025 /* 00010f8a - 00010faf [ 38] */, + 0x43f30013 /* 00010fcc - 00010fdf [ 20] */, + 0x43fdc008 /* 00010ff7 - 00010fff [ 9] */, + 0x44138003 /* 0001104e - 00011051 [ 4] */, + 0x441d8008 /* 00011076 - 0001107e [ 9] */, + 0x442f4000 /* 000110bd - 000110bd [ 1] */, + 0x4430c00c /* 000110c3 - 000110cf [ 13] */, + 0x443a4006 /* 000110e9 - 000110ef [ 7] */, + 0x443e8005 /* 000110fa - 000110ff [ 6] */, + 0x444d4000 /* 00011135 - 00011135 [ 1] */, + 0x44520007 /* 00011148 - 0001114f [ 8] */, + 0x445dc008 /* 00011177 - 0001117f [ 9] */, + 0x44780000 /* 000111e0 - 000111e0 [ 1] */, + 0x447d400a /* 000111f5 - 000111ff [ 11] */, + 0x44848000 /* 00011212 - 00011212 [ 1] */, + 0x4490803d /* 00011242 - 0001127f [ 62] */, + 0x44a1c000 /* 00011287 - 00011287 [ 1] */, + 0x44a24000 /* 00011289 - 00011289 [ 1] */, + 0x44a38000 /* 0001128e - 0001128e [ 1] */, + 0x44a78000 /* 0001129e - 0001129e [ 1] */, + 0x44aa8005 /* 000112aa - 000112af [ 6] */, + 0x44bac004 /* 000112eb - 000112ef [ 5] */, + 0x44be8005 /* 000112fa - 000112ff [ 6] */, + 0x44c10000 /* 00011304 - 00011304 [ 1] */, + 0x44c34001 /* 0001130d - 0001130e [ 2] */, + 0x44c44001 /* 00011311 - 00011312 [ 2] */, + 0x44ca4000 /* 00011329 - 00011329 [ 1] */, + 0x44cc4000 /* 00011331 - 00011331 [ 1] */, + 0x44cd0000 /* 00011334 - 00011334 [ 1] */, + 0x44ce8000 /* 0001133a - 0001133a [ 1] */, + 0x44d14001 /* 00011345 - 00011346 [ 2] */, + 0x44d24001 /* 00011349 - 0001134a [ 2] */, + 0x44d38001 /* 0001134e - 0001134f [ 2] */, + 0x44d44005 /* 00011351 - 00011356 [ 6] */, + 0x44d60004 /* 00011358 - 0001135c [ 5] */, + 0x44d90001 /* 00011364 - 00011365 [ 2] */, + 0x44db4002 /* 0001136d - 0001136f [ 3] */, + 0x44dd408a /* 00011375 - 000113ff [ 139] */, + 0x45170000 /* 0001145c - 0001145c [ 1] */, + 0x4518801d /* 00011462 - 0001147f [ 30] */, + 0x45320007 /* 000114c8 - 000114cf [ 8] */, + 0x453680a5 /* 000114da - 0001157f [ 166] */, + 0x456d8001 /* 000115b6 - 000115b7 [ 2] */, + 0x45778021 /* 000115de - 000115ff [ 34] */, + 0x4591400a /* 00011645 - 0001164f [ 11] */, + 0x45968005 /* 0001165a - 0001165f [ 6] */, + 0x459b4012 /* 0001166d - 0001167f [ 19] */, + 0x45ae8005 /* 000116ba - 000116bf [ 6] */, + 0x45b28035 /* 000116ca - 000116ff [ 54] */, + 0x45c6c001 /* 0001171b - 0001171c [ 2] */, + 0x45cb0003 /* 0001172c - 0001172f [ 4] */, + 0x45d1c0b8 /* 00011747 - 000117ff [ 185] */, + 0x460f0063 /* 0001183c - 0001189f [ 100] */, + 0x463cc00b /* 000118f3 - 000118fe [ 12] */, + 0x4641c001 /* 00011907 - 00011908 [ 2] */, + 0x46428001 /* 0001190a - 0001190b [ 2] */, + 0x46450000 /* 00011914 - 00011914 [ 1] */, + 0x4645c000 /* 00011917 - 00011917 [ 1] */, + 0x464d8000 /* 00011936 - 00011936 [ 1] */, + 0x464e4001 /* 00011939 - 0001193a [ 2] */, + 0x4651c008 /* 00011947 - 0001194f [ 9] */, + 0x46568045 /* 0001195a - 0001199f [ 70] */, + 0x466a0001 /* 000119a8 - 000119a9 [ 2] */, + 0x46760001 /* 000119d8 - 000119d9 [ 2] */, + 0x4679401a /* 000119e5 - 000119ff [ 27] */, + 0x46920007 /* 00011a48 - 00011a4f [ 8] */, + 0x46a8c00c /* 00011aa3 - 00011aaf [ 13] */, + 0x46be4006 /* 00011af9 - 00011aff [ 7] */, + 0x46c280f5 /* 00011b0a - 00011bff [ 246] */, + 0x47024000 /* 00011c09 - 00011c09 [ 1] */, + 0x470dc000 /* 00011c37 - 00011c37 [ 1] */, + 0x47118009 /* 00011c46 - 00011c4f [ 10] */, + 0x471b4002 /* 00011c6d - 00011c6f [ 3] */, + 0x47240001 /* 00011c90 - 00011c91 [ 2] */, + 0x472a0000 /* 00011ca8 - 00011ca8 [ 1] */, + 0x472dc048 /* 00011cb7 - 00011cff [ 73] */, + 0x4741c000 /* 00011d07 - 00011d07 [ 1] */, + 0x47428000 /* 00011d0a - 00011d0a [ 1] */, + 0x474dc002 /* 00011d37 - 00011d39 [ 3] */, + 0x474ec000 /* 00011d3b - 00011d3b [ 1] */, + 0x474f8000 /* 00011d3e - 00011d3e [ 1] */, + 0x47520007 /* 00011d48 - 00011d4f [ 8] */, + 0x47568005 /* 00011d5a - 00011d5f [ 6] */, + 0x47598000 /* 00011d66 - 00011d66 [ 1] */, + 0x475a4000 /* 00011d69 - 00011d69 [ 1] */, + 0x4763c000 /* 00011d8f - 00011d8f [ 1] */, + 0x47648000 /* 00011d92 - 00011d92 [ 1] */, + 0x47664006 /* 00011d99 - 00011d9f [ 7] */, + 0x476a8135 /* 00011daa - 00011edf [ 310] */, + 0x47be4006 /* 00011ef9 - 00011eff [ 7] */, + 0x47c44000 /* 00011f11 - 00011f11 [ 1] */, + 0x47cec002 /* 00011f3b - 00011f3d [ 3] */, + 0x47d68055 /* 00011f5a - 00011faf [ 86] */, + 0x47ec400e /* 00011fb1 - 00011fbf [ 15] */, + 0x47fc800c /* 00011ff2 - 00011ffe [ 13] */, + 0x48e68065 /* 0001239a - 000123ff [ 102] */, + 0x491bc000 /* 0001246f - 0001246f [ 1] */, + 0x491d400a /* 00012475 - 0001247f [ 11] */, + 0x49510a4b /* 00012544 - 00012f8f [ 2636] */, + 0x4bfcc00c /* 00012ff3 - 00012fff [ 13] */, + 0x4d0c000f /* 00013430 - 0001343f [ 16] */, + 0x4d158fa9 /* 00013456 - 000143ff [ 4010] */, + 0x5191e1b8 /* 00014647 - 000167ff [ 8633] */, + 0x5a8e4006 /* 00016a39 - 00016a3f [ 7] */, + 0x5a97c000 /* 00016a5f - 00016a5f [ 1] */, + 0x5a9a8003 /* 00016a6a - 00016a6d [ 4] */, + 0x5aafc000 /* 00016abf - 00016abf [ 1] */, + 0x5ab28005 /* 00016aca - 00016acf [ 6] */, + 0x5abb8001 /* 00016aee - 00016aef [ 2] */, + 0x5abd8009 /* 00016af6 - 00016aff [ 10] */, + 0x5ad18009 /* 00016b46 - 00016b4f [ 10] */, + 0x5ad68000 /* 00016b5a - 00016b5a [ 1] */, + 0x5ad88000 /* 00016b62 - 00016b62 [ 1] */, + 0x5ade0004 /* 00016b78 - 00016b7c [ 5] */, + 0x5ae402af /* 00016b90 - 00016e3f [ 688] */, + 0x5ba6c064 /* 00016e9b - 00016eff [ 101] */, + 0x5bd2c003 /* 00016f4b - 00016f4e [ 4] */, + 0x5be20006 /* 00016f88 - 00016f8e [ 7] */, + 0x5be8003f /* 00016fa0 - 00016fdf [ 64] */, + 0x5bf9400a /* 00016fe5 - 00016fef [ 11] */, + 0x5bfc800d /* 00016ff2 - 00016fff [ 14] */, + 0x61fe0007 /* 000187f8 - 000187ff [ 8] */, + 0x63358029 /* 00018cd6 - 00018cff [ 42] */, + 0x634262e6 /* 00018d09 - 0001afef [ 8935] */, + 0x6bfd0000 /* 0001aff4 - 0001aff4 [ 1] */, + 0x6bff0000 /* 0001affc - 0001affc [ 1] */, + 0x6bffc000 /* 0001afff - 0001afff [ 1] */, + 0x6c48c00e /* 0001b123 - 0001b131 [ 15] */, + 0x6c4cc01c /* 0001b133 - 0001b14f [ 29] */, + 0x6c54c001 /* 0001b153 - 0001b154 [ 2] */, + 0x6c55800d /* 0001b156 - 0001b163 [ 14] */, + 0x6c5a0007 /* 0001b168 - 0001b16f [ 8] */, + 0x6cbf0903 /* 0001b2fc - 0001bbff [ 2308] */, + 0x6f1ac004 /* 0001bc6b - 0001bc6f [ 5] */, + 0x6f1f4002 /* 0001bc7d - 0001bc7f [ 3] */, + 0x6f224006 /* 0001bc89 - 0001bc8f [ 7] */, + 0x6f268001 /* 0001bc9a - 0001bc9b [ 2] */, + 0x6f28125f /* 0001bca0 - 0001ceff [ 4704] */, + 0x73cb8001 /* 0001cf2e - 0001cf2f [ 2] */, + 0x73d1c008 /* 0001cf47 - 0001cf4f [ 9] */, + 0x73f1003b /* 0001cfc4 - 0001cfff [ 60] */, + 0x743d8009 /* 0001d0f6 - 0001d0ff [ 10] */, + 0x7449c001 /* 0001d127 - 0001d128 [ 2] */, + 0x745cc007 /* 0001d173 - 0001d17a [ 8] */, + 0x747ac014 /* 0001d1eb - 0001d1ff [ 21] */, + 0x74918079 /* 0001d246 - 0001d2bf [ 122] */, + 0x74b5000b /* 0001d2d4 - 0001d2df [ 12] */, + 0x74bd000b /* 0001d2f4 - 0001d2ff [ 12] */, + 0x74d5c008 /* 0001d357 - 0001d35f [ 9] */, + 0x74de4086 /* 0001d379 - 0001d3ff [ 135] */, + 0x75154000 /* 0001d455 - 0001d455 [ 1] */, + 0x75274000 /* 0001d49d - 0001d49d [ 1] */, + 0x75280001 /* 0001d4a0 - 0001d4a1 [ 2] */, + 0x7528c001 /* 0001d4a3 - 0001d4a4 [ 2] */, + 0x7529c001 /* 0001d4a7 - 0001d4a8 [ 2] */, + 0x752b4000 /* 0001d4ad - 0001d4ad [ 1] */, + 0x752e8000 /* 0001d4ba - 0001d4ba [ 1] */, + 0x752f0000 /* 0001d4bc - 0001d4bc [ 1] */, + 0x75310000 /* 0001d4c4 - 0001d4c4 [ 1] */, + 0x75418000 /* 0001d506 - 0001d506 [ 1] */, + 0x7542c001 /* 0001d50b - 0001d50c [ 2] */, + 0x75454000 /* 0001d515 - 0001d515 [ 1] */, + 0x75474000 /* 0001d51d - 0001d51d [ 1] */, + 0x754e8000 /* 0001d53a - 0001d53a [ 1] */, + 0x754fc000 /* 0001d53f - 0001d53f [ 1] */, + 0x75514000 /* 0001d545 - 0001d545 [ 1] */, + 0x7551c002 /* 0001d547 - 0001d549 [ 3] */, + 0x75544000 /* 0001d551 - 0001d551 [ 1] */, + 0x75a98001 /* 0001d6a6 - 0001d6a7 [ 2] */, + 0x75f30001 /* 0001d7cc - 0001d7cd [ 2] */, + 0x76a3000e /* 0001da8c - 0001da9a [ 15] */, + 0x76a80000 /* 0001daa0 - 0001daa0 [ 1] */, + 0x76ac044f /* 0001dab0 - 0001deff [ 1104] */, + 0x77c7c005 /* 0001df1f - 0001df24 [ 6] */, + 0x77cac0d4 /* 0001df2b - 0001dfff [ 213] */, + 0x7801c000 /* 0001e007 - 0001e007 [ 1] */, + 0x78064001 /* 0001e019 - 0001e01a [ 2] */, + 0x78088000 /* 0001e022 - 0001e022 [ 1] */, + 0x78094000 /* 0001e025 - 0001e025 [ 1] */, + 0x780ac004 /* 0001e02b - 0001e02f [ 5] */, + 0x781b8020 /* 0001e06e - 0001e08e [ 33] */, + 0x7824006f /* 0001e090 - 0001e0ff [ 112] */, + 0x784b4002 /* 0001e12d - 0001e12f [ 3] */, + 0x784f8001 /* 0001e13e - 0001e13f [ 2] */, + 0x78528003 /* 0001e14a - 0001e14d [ 4] */, + 0x7854013f /* 0001e150 - 0001e28f [ 320] */, + 0x78abc010 /* 0001e2af - 0001e2bf [ 17] */, + 0x78be8004 /* 0001e2fa - 0001e2fe [ 5] */, + 0x78c001cf /* 0001e300 - 0001e4cf [ 464] */, + 0x793e82e5 /* 0001e4fa - 0001e7df [ 742] */, + 0x79f9c000 /* 0001e7e7 - 0001e7e7 [ 1] */, + 0x79fb0000 /* 0001e7ec - 0001e7ec [ 1] */, + 0x79fbc000 /* 0001e7ef - 0001e7ef [ 1] */, + 0x79ffc000 /* 0001e7ff - 0001e7ff [ 1] */, + 0x7a314001 /* 0001e8c5 - 0001e8c6 [ 2] */, + 0x7a35c028 /* 0001e8d7 - 0001e8ff [ 41] */, + 0x7a530003 /* 0001e94c - 0001e94f [ 4] */, + 0x7a568003 /* 0001e95a - 0001e95d [ 4] */, + 0x7a580310 /* 0001e960 - 0001ec70 [ 785] */, + 0x7b2d404b /* 0001ecb5 - 0001ed00 [ 76] */, + 0x7b4f80c1 /* 0001ed3e - 0001edff [ 194] */, + 0x7b810000 /* 0001ee04 - 0001ee04 [ 1] */, + 0x7b880000 /* 0001ee20 - 0001ee20 [ 1] */, + 0x7b88c000 /* 0001ee23 - 0001ee23 [ 1] */, + 0x7b894001 /* 0001ee25 - 0001ee26 [ 2] */, + 0x7b8a0000 /* 0001ee28 - 0001ee28 [ 1] */, + 0x7b8cc000 /* 0001ee33 - 0001ee33 [ 1] */, + 0x7b8e0000 /* 0001ee38 - 0001ee38 [ 1] */, + 0x7b8e8000 /* 0001ee3a - 0001ee3a [ 1] */, + 0x7b8f0005 /* 0001ee3c - 0001ee41 [ 6] */, + 0x7b90c003 /* 0001ee43 - 0001ee46 [ 4] */, + 0x7b920000 /* 0001ee48 - 0001ee48 [ 1] */, + 0x7b928000 /* 0001ee4a - 0001ee4a [ 1] */, + 0x7b930000 /* 0001ee4c - 0001ee4c [ 1] */, + 0x7b940000 /* 0001ee50 - 0001ee50 [ 1] */, + 0x7b94c000 /* 0001ee53 - 0001ee53 [ 1] */, + 0x7b954001 /* 0001ee55 - 0001ee56 [ 2] */, + 0x7b960000 /* 0001ee58 - 0001ee58 [ 1] */, + 0x7b968000 /* 0001ee5a - 0001ee5a [ 1] */, + 0x7b970000 /* 0001ee5c - 0001ee5c [ 1] */, + 0x7b978000 /* 0001ee5e - 0001ee5e [ 1] */, + 0x7b980000 /* 0001ee60 - 0001ee60 [ 1] */, + 0x7b98c000 /* 0001ee63 - 0001ee63 [ 1] */, + 0x7b994001 /* 0001ee65 - 0001ee66 [ 2] */, + 0x7b9ac000 /* 0001ee6b - 0001ee6b [ 1] */, + 0x7b9cc000 /* 0001ee73 - 0001ee73 [ 1] */, + 0x7b9e0000 /* 0001ee78 - 0001ee78 [ 1] */, + 0x7b9f4000 /* 0001ee7d - 0001ee7d [ 1] */, + 0x7b9fc000 /* 0001ee7f - 0001ee7f [ 1] */, + 0x7ba28000 /* 0001ee8a - 0001ee8a [ 1] */, + 0x7ba70004 /* 0001ee9c - 0001eea0 [ 5] */, + 0x7ba90000 /* 0001eea4 - 0001eea4 [ 1] */, + 0x7baa8000 /* 0001eeaa - 0001eeaa [ 1] */, + 0x7baf0033 /* 0001eebc - 0001eeef [ 52] */, + 0x7bbc810d /* 0001eef2 - 0001efff [ 270] */, + 0x7c0b0003 /* 0001f02c - 0001f02f [ 4] */, + 0x7c25000b /* 0001f094 - 0001f09f [ 12] */, + 0x7c2bc001 /* 0001f0af - 0001f0b0 [ 2] */, + 0x7c300000 /* 0001f0c0 - 0001f0c0 [ 1] */, + 0x7c340000 /* 0001f0d0 - 0001f0d0 [ 1] */, + 0x7c3d8009 /* 0001f0f6 - 0001f0ff [ 10] */, + 0x7c6b8037 /* 0001f1ae - 0001f1e5 [ 56] */, + 0x7c80c00c /* 0001f203 - 0001f20f [ 13] */, + 0x7c8f0003 /* 0001f23c - 0001f23f [ 4] */, + 0x7c924006 /* 0001f249 - 0001f24f [ 7] */, + 0x7c94800d /* 0001f252 - 0001f25f [ 14] */, + 0x7c998099 /* 0001f266 - 0001f2ff [ 154] */, + 0x7db60003 /* 0001f6d8 - 0001f6db [ 4] */, + 0x7dbb4002 /* 0001f6ed - 0001f6ef [ 3] */, + 0x7dbf4002 /* 0001f6fd - 0001f6ff [ 3] */, + 0x7dddc003 /* 0001f777 - 0001f77a [ 4] */, + 0x7df68005 /* 0001f7da - 0001f7df [ 6] */, + 0x7dfb0003 /* 0001f7ec - 0001f7ef [ 4] */, + 0x7dfc400e /* 0001f7f1 - 0001f7ff [ 15] */, + 0x7e030003 /* 0001f80c - 0001f80f [ 4] */, + 0x7e120007 /* 0001f848 - 0001f84f [ 8] */, + 0x7e168005 /* 0001f85a - 0001f85f [ 6] */, + 0x7e220007 /* 0001f888 - 0001f88f [ 8] */, + 0x7e2b8001 /* 0001f8ae - 0001f8af [ 2] */, + 0x7e2c804d /* 0001f8b2 - 0001f8ff [ 78] */, + 0x7e95000b /* 0001fa54 - 0001fa5f [ 12] */, + 0x7e9b8001 /* 0001fa6e - 0001fa6f [ 2] */, + 0x7e9f4002 /* 0001fa7d - 0001fa7f [ 3] */, + 0x7ea24006 /* 0001fa89 - 0001fa8f [ 7] */, + 0x7eaf8000 /* 0001fabe - 0001fabe [ 1] */, + 0x7eb18007 /* 0001fac6 - 0001facd [ 8] */, + 0x7eb70003 /* 0001fadc - 0001fadf [ 4] */, + 0x7eba4006 /* 0001fae9 - 0001faef [ 7] */, + 0x7ebe4006 /* 0001faf9 - 0001faff [ 7] */, + 0x7ee4c000 /* 0001fb93 - 0001fb93 [ 1] */, + 0x7ef2c024 /* 0001fbcb - 0001fbef [ 37] */, + 0x7efe8405 /* 0001fbfa - 0001ffff [ 1030] */, + 0xa9b8001f /* 0002a6e0 - 0002a6ff [ 32] */, + 0xadce8005 /* 0002b73a - 0002b73f [ 6] */, + 0xae078001 /* 0002b81e - 0002b81f [ 2] */, + 0xb3a8800d /* 0002cea2 - 0002ceaf [ 14] */, + 0xbaf8400e /* 0002ebe1 - 0002ebef [ 15] */, + 0xbb9789a1 /* 0002ee5e - 0002f7ff [ 2466] */, + 0xbe8785e1 /* 0002fa1e - 0002ffff [ 1506] */, + 0xc4d2c004 /* 0003134b - 0003134f [ 5] */}; +/// Returns whether the code unit needs to be escaped. +/// /// At the end of the valid Unicode code points space a lot of code points are /// either reserved or a noncharacter. Adding all these entries to the -/// lookup table would add 446 entries to the table (in Unicode 14). -/// Instead the only the start of the region is stored, every code point in -/// this region needs to be escaped. -inline constexpr uint32_t __unallocated_region_lower_bound = 0x000323b0; +/// lookup table would greatly increase the size of the table. Instead these +/// entries are manually processed. In this large area of reserved code points, +/// there is a small area of extended graphemes that should not be escaped +/// unconditionally. This is also manually coded. See the generation script for +/// more details. -/// Returns whether the code unit needs to be escaped. /// -/// \pre The code point is a valid Unicode code point. +/// \\pre The code point is a valid Unicode code point. [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool __needs_escape(const char32_t __code_point) noexcept { - // Since __unallocated_region_lower_bound contains the unshifted range do the - // comparison without shifting. - if (__code_point >= __unallocated_region_lower_bound) + + // The entries in the gap at the end. + if(__code_point >= 0x000e0100 && __code_point <= 0x000e01ef) + return false; + + // The entries at the end. + if (__code_point >= 0x000323b0) return true; - ptrdiff_t __i = std::ranges::upper_bound(__entries, (__code_point << 11) | 0x7ffu) - __entries; + ptrdiff_t __i = std::ranges::upper_bound(__entries, (__code_point << 14) | 0x3fffu) - __entries; if (__i == 0) return false; --__i; - uint32_t __upper_bound = (__entries[__i] >> 11) + (__entries[__i] & 0x7ffu); + uint32_t __upper_bound = (__entries[__i] >> 14) + (__entries[__i] & 0x3fffu); return __code_point <= __upper_bound; } +// clang-format on } // namespace __escaped_output_table -#endif //_LIBCPP_STD_VER > 20 +#endif //_LIBCPP_STD_VER >= 23 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/extended_grapheme_cluster_table.h b/include/c++/v1/__format/extended_grapheme_cluster_table.h index 1ffcfeb5..48581d8a 100644 --- a/include/c++/v1/__format/extended_grapheme_cluster_table.h +++ b/include/c++/v1/__format/extended_grapheme_cluster_table.h @@ -73,7 +73,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __extended_grapheme_custer_property_boundary { @@ -124,7 +124,8 @@ enum class __property : uint8_t { /// this approach uses less space for the data and is about 4% faster in the /// following benchmark. /// libcxx/benchmarks/std_format_spec_string_unicode.bench.cpp -inline constexpr uint32_t __entries[1496] = { +// clang-format off +_LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __entries[1496] = { 0x00000091, 0x00005005, 0x00005811, @@ -1621,6 +1622,7 @@ inline constexpr uint32_t __entries[1496] = { 0x707787f1, 0x707b87f1, 0x707f80f1}; +// clang-format on /// Returns the extended grapheme cluster bondary property of a code point. [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __property __get_property(const char32_t __code_point) noexcept { @@ -1654,7 +1656,7 @@ inline constexpr uint32_t __entries[1496] = { } // namespace __extended_grapheme_custer_property_boundary -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/format_arg.h b/include/c++/v1/__format/format_arg.h index 771a03ff..aa02f81d 100644 --- a/include/c++/v1/__format/format_arg.h +++ b/include/c++/v1/__format/format_arg.h @@ -13,24 +13,30 @@ #include <__assert> #include <__concepts/arithmetic.h> #include <__config> -#include <__format/format_error.h> -#include <__format/format_fwd.h> +#include <__format/concepts.h> #include <__format/format_parse_context.h> #include <__functional/invoke.h> +#include <__fwd/format.h> #include <__memory/addressof.h> +#include <__type_traits/conditional.h> +#include <__type_traits/remove_const.h> #include <__utility/forward.h> +#include <__utility/move.h> #include <__utility/unreachable.h> #include <__variant/monostate.h> -#include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __format { /// The type stored in @ref basic_format_arg. @@ -51,7 +57,7 @@ namespace __format { /// handle to satisfy the user observable behaviour. The internal function /// __visit_format_arg doesn't do this wrapping. So in the format functions /// this function is used to avoid unneeded overhead. -enum class _LIBCPP_ENUM_VIS __arg_t : uint8_t { +enum class __arg_t : uint8_t { __none, __boolean, __char_type, @@ -71,17 +77,17 @@ enum class _LIBCPP_ENUM_VIS __arg_t : uint8_t { }; inline constexpr unsigned __packed_arg_t_bits = 5; -inline constexpr uint8_t __packed_arg_t_mask = 0x1f; +inline constexpr uint8_t __packed_arg_t_mask = 0x1f; inline constexpr unsigned __packed_types_storage_bits = 64; -inline constexpr unsigned __packed_types_max = __packed_types_storage_bits / __packed_arg_t_bits; +inline constexpr unsigned __packed_types_max = __packed_types_storage_bits / __packed_arg_t_bits; -_LIBCPP_HIDE_FROM_ABI -constexpr bool __use_packed_format_arg_store(size_t __size) { return __size <= __packed_types_max; } +_LIBCPP_HIDE_FROM_ABI constexpr bool __use_packed_format_arg_store(size_t __size) { + return __size <= __packed_types_max; +} -_LIBCPP_HIDE_FROM_ABI -constexpr __arg_t __get_packed_type(uint64_t __types, size_t __id) { - _LIBCPP_ASSERT(__id <= __packed_types_max, ""); +_LIBCPP_HIDE_FROM_ABI constexpr __arg_t __get_packed_type(uint64_t __types, size_t __id) { + _LIBCPP_ASSERT_INTERNAL(__id <= __packed_types_max, ""); if (__id > 0) __types >>= __id * __packed_arg_t_bits; @@ -91,58 +97,110 @@ constexpr __arg_t __get_packed_type(uint64_t __types, size_t __id) { } // namespace __format -// This function is not user obervable, so it can directly use the non-standard +// This function is not user observable, so it can directly use the non-standard // types of the "variant". See __arg_t for more details. template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT decltype(auto) -__visit_format_arg(_Visitor&& __vis, basic_format_arg<_Context> __arg) { +_LIBCPP_HIDE_FROM_ABI decltype(auto) __visit_format_arg(_Visitor&& __vis, basic_format_arg<_Context> __arg) { switch (__arg.__type_) { case __format::__arg_t::__none: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__monostate_); + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__monostate_); case __format::__arg_t::__boolean: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__boolean_); + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__boolean_); case __format::__arg_t::__char_type: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__char_type_); + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__char_type_); case __format::__arg_t::__int: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__int_); + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__int_); case __format::__arg_t::__long_long: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__long_long_); + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__long_long_); case __format::__arg_t::__i128: # ifndef _LIBCPP_HAS_NO_INT128 - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__i128_); + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__i128_); # else __libcpp_unreachable(); # endif case __format::__arg_t::__unsigned: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__unsigned_); + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__unsigned_); case __format::__arg_t::__unsigned_long_long: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__unsigned_long_long_); + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__unsigned_long_long_); case __format::__arg_t::__u128: # ifndef _LIBCPP_HAS_NO_INT128 - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__u128_); + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__u128_); # else __libcpp_unreachable(); # endif case __format::__arg_t::__float: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__float_); + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__float_); + case __format::__arg_t::__double: + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__double_); + case __format::__arg_t::__long_double: + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__long_double_); + case __format::__arg_t::__const_char_type_ptr: + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__const_char_type_ptr_); + case __format::__arg_t::__string_view: + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__string_view_); + case __format::__arg_t::__ptr: + return std::invoke(std::forward<_Visitor>(__vis), __arg.__value_.__ptr_); + case __format::__arg_t::__handle: + return std::invoke( + std::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__arg.__value_.__handle_}); + } + + __libcpp_unreachable(); +} + +# if _LIBCPP_STD_VER >= 26 && defined(_LIBCPP_HAS_EXPLICIT_THIS_PARAMETER) + +template +_LIBCPP_HIDE_FROM_ABI _Rp __visit_format_arg(_Visitor&& __vis, basic_format_arg<_Context> __arg) { + switch (__arg.__type_) { + case __format::__arg_t::__none: + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__monostate_); + case __format::__arg_t::__boolean: + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__boolean_); + case __format::__arg_t::__char_type: + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__char_type_); + case __format::__arg_t::__int: + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__int_); + case __format::__arg_t::__long_long: + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__long_long_); + case __format::__arg_t::__i128: +# ifndef _LIBCPP_HAS_NO_INT128 + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__i128_); +# else + __libcpp_unreachable(); +# endif + case __format::__arg_t::__unsigned: + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__unsigned_); + case __format::__arg_t::__unsigned_long_long: + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__unsigned_long_long_); + case __format::__arg_t::__u128: +# ifndef _LIBCPP_HAS_NO_INT128 + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__u128_); +# else + __libcpp_unreachable(); +# endif + case __format::__arg_t::__float: + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__float_); case __format::__arg_t::__double: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__double_); + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__double_); case __format::__arg_t::__long_double: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__long_double_); + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__long_double_); case __format::__arg_t::__const_char_type_ptr: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__const_char_type_ptr_); + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__const_char_type_ptr_); case __format::__arg_t::__string_view: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__string_view_); + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__string_view_); case __format::__arg_t::__ptr: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__ptr_); + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), __arg.__value_.__ptr_); case __format::__arg_t::__handle: - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), - typename basic_format_arg<_Context>::handle{__arg.__value_.__handle_}); + return std::invoke_r<_Rp>( + std::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__arg.__value_.__handle_}); } __libcpp_unreachable(); } +# endif // _LIBCPP_STD_VER >= 26 && defined(_LIBCPP_HAS_EXPLICIT_THIS_PARAMETER) + /// Contains the values used in basic_format_arg. /// /// This is a separate type so it's possible to store the values and types in @@ -155,18 +213,14 @@ class __basic_format_arg_value { /// Contains the implementation for basic_format_arg::handle. struct __handle { template - _LIBCPP_HIDE_FROM_ABI explicit __handle(_Tp&& __v) noexcept - : __ptr_(_VSTD::addressof(__v)), + _LIBCPP_HIDE_FROM_ABI explicit __handle(_Tp& __v) noexcept + : __ptr_(std::addressof(__v)), __format_([](basic_format_parse_context<_CharT>& __parse_ctx, _Context& __ctx, const void* __ptr) { - using _Dp = remove_cvref_t<_Tp>; - using _Formatter = typename _Context::template formatter_type<_Dp>; - constexpr bool __const_formattable = - requires { _Formatter().format(std::declval(), std::declval<_Context&>()); }; - using _Qp = conditional_t<__const_formattable, const _Dp, _Dp>; + using _Dp = remove_const_t<_Tp>; + using _Qp = conditional_t<__formattable_with, const _Dp, _Dp>; + static_assert(__formattable_with<_Qp, _Context>, "Mandated by [format.arg]/10"); - static_assert(__const_formattable || !is_const_v>, "Mandated by [format.arg]/18"); - - _Formatter __f; + typename _Context::template formatter_type<_Dp> __f; __parse_ctx.advance_to(__f.parse(__parse_ctx)); __ctx.advance_to(__f.format(*const_cast<_Qp*>(static_cast(__ptr)), __ctx)); }) {} @@ -218,23 +272,64 @@ class __basic_format_arg_value { _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(basic_string_view<_CharT> __value) noexcept : __string_view_(__value) {} _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(const void* __value) noexcept : __ptr_(__value) {} - _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(__handle __value) noexcept - // TODO FMT Investigate why it doesn't work without the forward. - : __handle_(std::forward<__handle>(__value)) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(__handle&& __value) noexcept : __handle_(std::move(__value)) {} }; template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_arg { +class _LIBCPP_TEMPLATE_VIS basic_format_arg { public: class _LIBCPP_TEMPLATE_VIS handle; - _LIBCPP_HIDE_FROM_ABI basic_format_arg() noexcept - : __type_{__format::__arg_t::__none} {} + _LIBCPP_HIDE_FROM_ABI basic_format_arg() noexcept : __type_{__format::__arg_t::__none} {} + + _LIBCPP_HIDE_FROM_ABI explicit operator bool() const noexcept { return __type_ != __format::__arg_t::__none; } + +# if _LIBCPP_STD_VER >= 26 && defined(_LIBCPP_HAS_EXPLICIT_THIS_PARAMETER) + + // This function is user facing, so it must wrap the non-standard types of + // the "variant" in a handle to stay conforming. See __arg_t for more details. + template + _LIBCPP_HIDE_FROM_ABI decltype(auto) visit(this basic_format_arg __arg, _Visitor&& __vis) { + switch (__arg.__type_) { +# ifndef _LIBCPP_HAS_NO_INT128 + case __format::__arg_t::__i128: { + typename __basic_format_arg_value<_Context>::__handle __h{__arg.__value_.__i128_}; + return std::invoke(std::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__h}); + } + + case __format::__arg_t::__u128: { + typename __basic_format_arg_value<_Context>::__handle __h{__arg.__value_.__u128_}; + return std::invoke(std::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__h}); + } +# endif + default: + return std::__visit_format_arg(std::forward<_Visitor>(__vis), __arg); + } + } - _LIBCPP_HIDE_FROM_ABI explicit operator bool() const noexcept { - return __type_ != __format::__arg_t::__none; + // This function is user facing, so it must wrap the non-standard types of + // the "variant" in a handle to stay conforming. See __arg_t for more details. + template + _LIBCPP_HIDE_FROM_ABI _Rp visit(this basic_format_arg __arg, _Visitor&& __vis) { + switch (__arg.__type_) { +# ifndef _LIBCPP_HAS_NO_INT128 + case __format::__arg_t::__i128: { + typename __basic_format_arg_value<_Context>::__handle __h{__arg.__value_.__i128_}; + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__h}); + } + + case __format::__arg_t::__u128: { + typename __basic_format_arg_value<_Context>::__handle __h{__arg.__value_.__u128_}; + return std::invoke_r<_Rp>(std::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__h}); + } +# endif + default: + return std::__visit_format_arg<_Rp>(std::forward<_Visitor>(__vis), __arg); + } } +# endif // _LIBCPP_STD_VER >= 26 && defined(_LIBCPP_HAS_EXPLICIT_THIS_PARAMETER) + private: using char_type = typename _Context::char_type; @@ -261,8 +356,7 @@ class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_arg { template class _LIBCPP_TEMPLATE_VIS basic_format_arg<_Context>::handle { public: - _LIBCPP_HIDE_FROM_ABI - void format(basic_format_parse_context& __parse_ctx, _Context& __ctx) const { + _LIBCPP_HIDE_FROM_ABI void format(basic_format_parse_context& __parse_ctx, _Context& __ctx) const { __handle_.__format_(__parse_ctx, __ctx, __handle_.__ptr_); } @@ -276,27 +370,32 @@ class _LIBCPP_TEMPLATE_VIS basic_format_arg<_Context>::handle { // This function is user facing, so it must wrap the non-standard types of // the "variant" in a handle to stay conforming. See __arg_t for more details. template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT decltype(auto) -visit_format_arg(_Visitor&& __vis, basic_format_arg<_Context> __arg) { +# if _LIBCPP_STD_VER >= 26 && defined(_LIBCPP_HAS_EXPLICIT_THIS_PARAMETER) +_LIBCPP_DEPRECATED_IN_CXX26 +# endif + _LIBCPP_HIDE_FROM_ABI decltype(auto) + visit_format_arg(_Visitor&& __vis, basic_format_arg<_Context> __arg) { switch (__arg.__type_) { # ifndef _LIBCPP_HAS_NO_INT128 case __format::__arg_t::__i128: { typename __basic_format_arg_value<_Context>::__handle __h{__arg.__value_.__i128_}; - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__h}); + return std::invoke(std::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__h}); } case __format::__arg_t::__u128: { typename __basic_format_arg_value<_Context>::__handle __h{__arg.__value_.__u128_}; - return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__h}); + return std::invoke(std::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__h}); } -# endif +# endif // _LIBCPP_STD_VER >= 26 && defined(_LIBCPP_HAS_EXPLICIT_THIS_PARAMETER) default: - return _VSTD::__visit_format_arg(_VSTD::forward<_Visitor>(__vis), __arg); + return std::__visit_format_arg(std::forward<_Visitor>(__vis), __arg); } } -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___FORMAT_FORMAT_ARG_H diff --git a/include/c++/v1/__format/format_arg_store.h b/include/c++/v1/__format/format_arg_store.h index 6f4f4c36..23a599e9 100644 --- a/include/c++/v1/__format/format_arg_store.h +++ b/include/c++/v1/__format/format_arg_store.h @@ -19,15 +19,15 @@ #include <__config> #include <__format/concepts.h> #include <__format/format_arg.h> -#include <__utility/forward.h> -#include +#include <__type_traits/conditional.h> +#include <__type_traits/extent.h> +#include <__type_traits/remove_const.h> #include #include -#include _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __format { @@ -142,29 +142,42 @@ consteval __arg_t __determine_arg_t() { // // Note this version can't be constrained avoiding ambiguous overloads. // That means it can be instantiated by disabled formatters. To solve this, a -// constrained version for not formattable formatters is added. That overload -// is marked as deleted to fail creating a storage type for disabled formatters. +// constrained version for not formattable formatters is added. template consteval __arg_t __determine_arg_t() { return __arg_t::__handle; } +// The overload for not formattable types allows triggering the static +// assertion below. template - requires(!__formattable<_Tp, typename _Context::char_type>) -consteval __arg_t __determine_arg_t() = delete; + requires(!__formattable_with<_Tp, _Context>) +consteval __arg_t __determine_arg_t() { + return __arg_t::__none; +} +// Pseudo constuctor for basic_format_arg +// +// Modeled after template explicit basic_format_arg(T& v) noexcept; +// [format.arg]/4-6 template -_LIBCPP_HIDE_FROM_ABI basic_format_arg<_Context> __create_format_arg(_Tp&& __value) noexcept { - constexpr __arg_t __arg = __determine_arg_t<_Context, remove_cvref_t<_Tp>>(); - static_assert(__arg != __arg_t::__none); +_LIBCPP_HIDE_FROM_ABI basic_format_arg<_Context> __create_format_arg(_Tp& __value) noexcept { + using _Dp = remove_const_t<_Tp>; + constexpr __arg_t __arg = __determine_arg_t<_Context, _Dp>(); + static_assert(__arg != __arg_t::__none, "the supplied type is not formattable"); + static_assert(__formattable_with<_Tp, _Context>); // Not all types can be used to directly initialize the // __basic_format_arg_value. First handle all types needing adjustment, the // final else requires no adjustment. if constexpr (__arg == __arg_t::__char_type) - // On some platforms initializing a wchar_t from a char is a narrowing - // conversion. - return basic_format_arg<_Context>{__arg, static_cast(__value)}; + +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + if constexpr (same_as && same_as<_Dp, char>) + return basic_format_arg<_Context>{__arg, static_cast(static_cast(__value))}; + else +# endif + return basic_format_arg<_Context>{__arg, __value}; else if constexpr (__arg == __arg_t::__int) return basic_format_arg<_Context>{__arg, static_cast(__value)}; else if constexpr (__arg == __arg_t::__long_long) @@ -175,9 +188,9 @@ _LIBCPP_HIDE_FROM_ABI basic_format_arg<_Context> __create_format_arg(_Tp&& __val return basic_format_arg<_Context>{__arg, static_cast(__value)}; else if constexpr (__arg == __arg_t::__string_view) // Using std::size on a character array will add the NUL-terminator to the size. - if constexpr (is_array_v>) + if constexpr (is_array_v<_Dp>) return basic_format_arg<_Context>{ - __arg, basic_string_view{__value, extent_v> - 1}}; + __arg, basic_string_view{__value, extent_v<_Dp> - 1}}; else // When the _Traits or _Allocator are different an implicit conversion will // fail. @@ -186,15 +199,14 @@ _LIBCPP_HIDE_FROM_ABI basic_format_arg<_Context> __create_format_arg(_Tp&& __val else if constexpr (__arg == __arg_t::__ptr) return basic_format_arg<_Context>{__arg, static_cast(__value)}; else if constexpr (__arg == __arg_t::__handle) - return basic_format_arg<_Context>{ - __arg, typename __basic_format_arg_value<_Context>::__handle{_VSTD::forward<_Tp>(__value)}}; + return basic_format_arg<_Context>{__arg, typename __basic_format_arg_value<_Context>::__handle{__value}}; else return basic_format_arg<_Context>{__arg, __value}; } template -_LIBCPP_HIDE_FROM_ABI void __create_packed_storage(uint64_t& __types, __basic_format_arg_value<_Context>* __values, - _Args&&... __args) noexcept { +_LIBCPP_HIDE_FROM_ABI void +__create_packed_storage(uint64_t& __types, __basic_format_arg_value<_Context>* __values, _Args&... __args) noexcept { int __shift = 0; ( [&] { @@ -211,27 +223,26 @@ _LIBCPP_HIDE_FROM_ABI void __create_packed_storage(uint64_t& __types, __basic_fo } template -_LIBCPP_HIDE_FROM_ABI void __store_basic_format_arg(basic_format_arg<_Context>* __data, _Args&&... __args) noexcept { +_LIBCPP_HIDE_FROM_ABI void __store_basic_format_arg(basic_format_arg<_Context>* __data, _Args&... __args) noexcept { ([&] { *__data++ = __format::__create_format_arg<_Context>(__args); }(), ...); } -template +template struct __packed_format_arg_store { - __basic_format_arg_value<_Context> __values_[N]; - uint64_t __types_; + __basic_format_arg_value<_Context> __values_[_Np]; + uint64_t __types_ = 0; }; -template +template struct __unpacked_format_arg_store { - basic_format_arg<_Context> __args_[N]; + basic_format_arg<_Context> __args_[_Np]; }; } // namespace __format template struct _LIBCPP_TEMPLATE_VIS __format_arg_store { - _LIBCPP_HIDE_FROM_ABI - __format_arg_store(_Args&... __args) noexcept { + _LIBCPP_HIDE_FROM_ABI __format_arg_store(_Args&... __args) noexcept { if constexpr (sizeof...(_Args) != 0) { if constexpr (__format::__use_packed_format_arg_store(sizeof...(_Args))) __format::__create_packed_storage(__storage.__types_, __storage.__values_, __args...); @@ -240,14 +251,15 @@ struct _LIBCPP_TEMPLATE_VIS __format_arg_store { } } - using _Storage = conditional_t<__format::__use_packed_format_arg_store(sizeof...(_Args)), - __format::__packed_format_arg_store<_Context, sizeof...(_Args)>, - __format::__unpacked_format_arg_store<_Context, sizeof...(_Args)>>; + using _Storage = + conditional_t<__format::__use_packed_format_arg_store(sizeof...(_Args)), + __format::__packed_format_arg_store<_Context, sizeof...(_Args)>, + __format::__unpacked_format_arg_store<_Context, sizeof...(_Args)>>; _Storage __storage; }; -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/format_args.h b/include/c++/v1/__format/format_args.h index 8b8fbde9..07923570 100644 --- a/include/c++/v1/__format/format_args.h +++ b/include/c++/v1/__format/format_args.h @@ -10,11 +10,10 @@ #ifndef _LIBCPP___FORMAT_FORMAT_ARGS_H #define _LIBCPP___FORMAT_FORMAT_ARGS_H -#include <__availability> #include <__config> #include <__format/format_arg.h> #include <__format/format_arg_store.h> -#include <__format/format_fwd.h> +#include <__fwd/format.h> #include #include @@ -24,27 +23,24 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_args { +class _LIBCPP_TEMPLATE_VIS basic_format_args { public: - _LIBCPP_HIDE_FROM_ABI basic_format_args() noexcept = default; - template _LIBCPP_HIDE_FROM_ABI basic_format_args(const __format_arg_store<_Context, _Args...>& __store) noexcept : __size_(sizeof...(_Args)) { if constexpr (sizeof...(_Args) != 0) { if constexpr (__format::__use_packed_format_arg_store(sizeof...(_Args))) { __values_ = __store.__storage.__values_; - __types_ = __store.__storage.__types_; + __types_ = __store.__storage.__types_; } else __args_ = __store.__storage.__args_; } } - _LIBCPP_HIDE_FROM_ABI - basic_format_arg<_Context> get(size_t __id) const noexcept { + _LIBCPP_HIDE_FROM_ABI basic_format_arg<_Context> get(size_t __id) const noexcept { if (__id >= __size_) return basic_format_arg<_Context>{}; @@ -71,9 +67,11 @@ class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_args { const basic_format_arg<_Context>* __args_; }; }; -_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(basic_format_args); -#endif //_LIBCPP_STD_VER > 17 +template +basic_format_args(__format_arg_store<_Context, _Args...>) -> basic_format_args<_Context>; + +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/format_context.h b/include/c++/v1/__format/format_context.h index 85e00eb2..20c07559 100644 --- a/include/c++/v1/__format/format_context.h +++ b/include/c++/v1/__format/format_context.h @@ -10,7 +10,6 @@ #ifndef _LIBCPP___FORMAT_FORMAT_CONTEXT_H #define _LIBCPP___FORMAT_FORMAT_CONTEXT_H -#include <__availability> #include <__concepts/same_as.h> #include <__config> #include <__format/buffer.h> @@ -18,7 +17,7 @@ #include <__format/format_arg_store.h> #include <__format/format_args.h> #include <__format/format_error.h> -#include <__format/format_fwd.h> +#include <__fwd/format.h> #include <__iterator/back_insert_iterator.h> #include <__iterator/concepts.h> #include <__memory/addressof.h> @@ -27,23 +26,26 @@ #include #ifndef _LIBCPP_HAS_NO_LOCALIZATION -#include -#include +# include <__locale> +# include #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template -requires output_iterator<_OutIt, const _CharT&> -class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_context; + requires output_iterator<_OutIt, const _CharT&> +class _LIBCPP_TEMPLATE_VIS basic_format_context; -#ifndef _LIBCPP_HAS_NO_LOCALIZATION +# ifndef _LIBCPP_HAS_NO_LOCALIZATION /** * Helper to create a basic_format_context. * @@ -51,64 +53,56 @@ class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_context; */ template _LIBCPP_HIDE_FROM_ABI basic_format_context<_OutIt, _CharT> -__format_context_create( - _OutIt __out_it, - basic_format_args> __args, - optional<_VSTD::locale>&& __loc = nullopt) { - return _VSTD::basic_format_context(_VSTD::move(__out_it), __args, _VSTD::move(__loc)); +__format_context_create(_OutIt __out_it, + basic_format_args> __args, + optional&& __loc = nullopt) { + return std::basic_format_context(std::move(__out_it), __args, std::move(__loc)); } -#else +# else template _LIBCPP_HIDE_FROM_ABI basic_format_context<_OutIt, _CharT> -__format_context_create( - _OutIt __out_it, - basic_format_args> __args) { - return _VSTD::basic_format_context(_VSTD::move(__out_it), __args); +__format_context_create(_OutIt __out_it, basic_format_args> __args) { + return std::basic_format_context(std::move(__out_it), __args); } -#endif +# endif -using format_context = - basic_format_context>, - char>; -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS -using wformat_context = basic_format_context< - back_insert_iterator<__format::__output_buffer>, wchar_t>; -#endif +using format_context = basic_format_context>, char>; +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wformat_context = basic_format_context< back_insert_iterator<__format::__output_buffer>, wchar_t>; +# endif template -requires output_iterator<_OutIt, const _CharT&> + requires output_iterator<_OutIt, const _CharT&> class // clang-format off _LIBCPP_TEMPLATE_VIS - _LIBCPP_AVAILABILITY_FORMAT _LIBCPP_PREFERRED_NAME(format_context) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wformat_context)) // clang-format on basic_format_context { public: - using iterator = _OutIt; + using iterator = _OutIt; using char_type = _CharT; template using formatter_type = formatter<_Tp, _CharT>; - _LIBCPP_HIDE_FROM_ABI basic_format_arg - arg(size_t __id) const noexcept { + _LIBCPP_HIDE_FROM_ABI basic_format_arg arg(size_t __id) const noexcept { return __args_.get(__id); } -#ifndef _LIBCPP_HAS_NO_LOCALIZATION - _LIBCPP_HIDE_FROM_ABI _VSTD::locale locale() { +# ifndef _LIBCPP_HAS_NO_LOCALIZATION + _LIBCPP_HIDE_FROM_ABI std::locale locale() { if (!__loc_) - __loc_ = _VSTD::locale{}; + __loc_ = std::locale{}; return *__loc_; } -#endif +# endif _LIBCPP_HIDE_FROM_ABI iterator out() { return std::move(__out_it_); } _LIBCPP_HIDE_FROM_ABI void advance_to(iterator __it) { __out_it_ = std::move(__it); } private: iterator __out_it_; basic_format_args __args_; -#ifndef _LIBCPP_HAS_NO_LOCALIZATION +# ifndef _LIBCPP_HAS_NO_LOCALIZATION // The Standard doesn't specify how the locale is stored. // [format.context]/6 @@ -119,30 +113,27 @@ class // locale() is called and the optional has no value the value will be created. // This allows the implementation to lazily create the locale. // TODO FMT Validate whether lazy creation is the best solution. - optional<_VSTD::locale> __loc_; + optional __loc_; - template - friend _LIBCPP_HIDE_FROM_ABI basic_format_context<__OutIt, __CharT> - __format_context_create(__OutIt, basic_format_args>, - optional<_VSTD::locale>&&); + template + friend _LIBCPP_HIDE_FROM_ABI basic_format_context<_OtherOutIt, _OtherCharT> __format_context_create( + _OtherOutIt, basic_format_args>, optional&&); // Note: the Standard doesn't specify the required constructors. - _LIBCPP_HIDE_FROM_ABI - explicit basic_format_context(_OutIt __out_it, - basic_format_args __args, - optional<_VSTD::locale>&& __loc) - : __out_it_(_VSTD::move(__out_it)), __args_(__args), - __loc_(_VSTD::move(__loc)) {} -#else - template - friend _LIBCPP_HIDE_FROM_ABI basic_format_context<__OutIt, __CharT> - __format_context_create(__OutIt, basic_format_args>); - - _LIBCPP_HIDE_FROM_ABI - explicit basic_format_context(_OutIt __out_it, - basic_format_args __args) - : __out_it_(_VSTD::move(__out_it)), __args_(__args) {} -#endif + _LIBCPP_HIDE_FROM_ABI explicit basic_format_context( + _OutIt __out_it, basic_format_args __args, optional&& __loc) + : __out_it_(std::move(__out_it)), __args_(__args), __loc_(std::move(__loc)) {} +# else + template + friend _LIBCPP_HIDE_FROM_ABI basic_format_context<_OtherOutIt, _OtherCharT> + __format_context_create(_OtherOutIt, basic_format_args>); + + _LIBCPP_HIDE_FROM_ABI explicit basic_format_context(_OutIt __out_it, basic_format_args __args) + : __out_it_(std::move(__out_it)), __args_(__args) {} +# endif + + basic_format_context(const basic_format_context&) = delete; + basic_format_context& operator=(const basic_format_context&) = delete; }; // A specialization for __retarget_buffer @@ -162,8 +153,7 @@ class // Here the width of an element in input is determined dynamically. // Note when the top-level element has no width the retargeting is not needed. template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT - basic_format_context::__iterator, _CharT> { +class _LIBCPP_TEMPLATE_VIS basic_format_context::__iterator, _CharT> { public: using iterator = typename __format::__retarget_buffer<_CharT>::__iterator; using char_type = _CharT; @@ -178,20 +168,25 @@ class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT # endif __ctx_(std::addressof(__ctx)), __arg_([](void* __c, size_t __id) { - return std::visit_format_arg( - [&](auto __arg) -> basic_format_arg { - if constexpr (same_as) - return {}; - else if constexpr (same_as::handle>) - // At the moment it's not possible for formatting to use a re-targeted handle. - // TODO FMT add this when support is needed. - std::__throw_format_error("Re-targeting handle not supported"); - else - return basic_format_arg{ - __format::__determine_arg_t(), - __basic_format_arg_value(__arg)}; - }, - static_cast<_Context*>(__c)->arg(__id)); + auto __visitor = [&](auto __arg) -> basic_format_arg { + if constexpr (same_as) + return {}; + else if constexpr (same_as::handle>) + // At the moment it's not possible for formatting to use a re-targeted handle. + // TODO FMT add this when support is needed. + std::__throw_format_error("Re-targeting handle not supported"); + else + return basic_format_arg{ + __format::__determine_arg_t(), + __basic_format_arg_value(__arg)}; + }; +# if _LIBCPP_STD_VER >= 26 && defined(_LIBCPP_HAS_EXPLICIT_THIS_PARAMETER) + return static_cast<_Context*>(__c)->arg(__id).visit(std::move(__visitor)); +# else + _LIBCPP_SUPPRESS_DEPRECATED_PUSH + return std::visit_format_arg(std::move(__visitor), static_cast<_Context*>(__c)->arg(__id)); + _LIBCPP_SUPPRESS_DEPRECATED_POP +# endif // _LIBCPP_STD_VER >= 26 && defined(_LIBCPP_HAS_EXPLICIT_THIS_PARAMETER) }) { } @@ -199,7 +194,7 @@ class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT return __arg_(__ctx_, __id); } # ifndef _LIBCPP_HAS_NO_LOCALIZATION - _LIBCPP_HIDE_FROM_ABI _VSTD::locale locale() { return __loc_(__ctx_); } + _LIBCPP_HIDE_FROM_ABI std::locale locale() { return __loc_(__ctx_); } # endif _LIBCPP_HIDE_FROM_ABI iterator out() { return std::move(__out_it_); } _LIBCPP_HIDE_FROM_ABI void advance_to(iterator __it) { __out_it_ = std::move(__it); } @@ -216,8 +211,10 @@ class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(basic_format_context); -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___FORMAT_FORMAT_CONTEXT_H diff --git a/include/c++/v1/__format/format_error.h b/include/c++/v1/__format/format_error.h index 002d1a40..ed40e395 100644 --- a/include/c++/v1/__format/format_error.h +++ b/include/c++/v1/__format/format_error.h @@ -11,7 +11,7 @@ #define _LIBCPP___FORMAT_FORMAT_ERROR_H #include <__config> -#include +#include <__verbose_abort> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -20,35 +20,30 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 -class _LIBCPP_EXCEPTION_ABI format_error : public runtime_error { +_LIBCPP_DIAGNOSTIC_PUSH +_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wweak-vtables") +class _LIBCPP_EXPORTED_FROM_ABI format_error : public runtime_error { public: - _LIBCPP_HIDE_FROM_ABI explicit format_error(const string& __s) - : runtime_error(__s) {} - _LIBCPP_HIDE_FROM_ABI explicit format_error(const char* __s) - : runtime_error(__s) {} - // TODO FMT Remove when format is no longer experimental. - // Avoids linker errors when building the Clang-cl Windows DLL which doesn't - // support the experimental library. -# ifndef _LIBCPP_INLINE_FORMAT_ERROR_DTOR - ~format_error() noexcept override; -# else - ~format_error() noexcept override {} -# endif + _LIBCPP_HIDE_FROM_ABI explicit format_error(const string& __s) : runtime_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit format_error(const char* __s) : runtime_error(__s) {} + _LIBCPP_HIDE_FROM_ABI format_error(const format_error&) = default; + _LIBCPP_HIDE_FROM_ABI format_error& operator=(const format_error&) = default; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL + ~format_error() noexcept override = default; }; +_LIBCPP_DIAGNOSTIC_POP -_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void -__throw_format_error(const char* __s) { -#ifndef _LIBCPP_NO_EXCEPTIONS +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void __throw_format_error(const char* __s) { +# ifndef _LIBCPP_HAS_NO_EXCEPTIONS throw format_error(__s); -#else - (void)__s; - _VSTD::abort(); -#endif +# else + _LIBCPP_VERBOSE_ABORT("format_error was thrown in -fno-exceptions mode with message \"%s\"", __s); +# endif } -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/format_functions.h b/include/c++/v1/__format/format_functions.h index 0f000127..d14b49af 100644 --- a/include/c++/v1/__format/format_functions.h +++ b/include/c++/v1/__format/format_functions.h @@ -10,16 +10,10 @@ #ifndef _LIBCPP___FORMAT_FORMAT_FUNCTIONS #define _LIBCPP___FORMAT_FORMAT_FUNCTIONS -// TODO FMT This is added to fix Apple back-deployment. -#include -#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) - #include <__algorithm/clamp.h> -#include <__availability> #include <__concepts/convertible_to.h> #include <__concepts/same_as.h> #include <__config> -#include <__debug> #include <__format/buffer.h> #include <__format/format_arg.h> #include <__format/format_arg_store.h> @@ -38,23 +32,28 @@ #include <__format/formatter_string.h> #include <__format/parser_std_format_spec.h> #include <__iterator/back_insert_iterator.h> +#include <__iterator/concepts.h> #include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> // iter_value_t #include <__variant/monostate.h> #include #include #include #ifndef _LIBCPP_HAS_NO_LOCALIZATION -#include +# include <__locale> #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // TODO FMT Evaluate which templates should be external templates. This // improves the efficiency of the header. However since the header is still @@ -62,21 +61,21 @@ _LIBCPP_BEGIN_NAMESPACE_STD // to do this optimization now. using format_args = basic_format_args; -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS using wformat_args = basic_format_args; -#endif +# endif template -_LIBCPP_HIDE_FROM_ABI __format_arg_store<_Context, _Args...> make_format_args(_Args&&... __args) { - return _VSTD::__format_arg_store<_Context, _Args...>(__args...); +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI __format_arg_store<_Context, _Args...> make_format_args(_Args&... __args) { + return std::__format_arg_store<_Context, _Args...>(__args...); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template -_LIBCPP_HIDE_FROM_ABI __format_arg_store make_wformat_args(_Args&&... __args) { - return _VSTD::__format_arg_store(__args...); +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI __format_arg_store make_wformat_args(_Args&... __args) { + return std::__format_arg_store(__args...); } -#endif +# endif namespace __format { @@ -87,14 +86,16 @@ namespace __format { template class _LIBCPP_TEMPLATE_VIS __compile_time_handle { public: - _LIBCPP_HIDE_FROM_ABI - constexpr void __parse(basic_format_parse_context<_CharT>& __parse_ctx) const { __parse_(__parse_ctx); } + template + _LIBCPP_HIDE_FROM_ABI constexpr void __parse(_ParseContext& __ctx) const { + __parse_(__ctx); + } template _LIBCPP_HIDE_FROM_ABI constexpr void __enable() { - __parse_ = [](basic_format_parse_context<_CharT>& __parse_ctx) { + __parse_ = [](basic_format_parse_context<_CharT>& __ctx) { formatter<_Tp, _CharT> __f; - __parse_ctx.advance_to(__f.parse(__parse_ctx)); + __ctx.advance_to(__f.parse(__ctx)); }; } @@ -128,13 +129,13 @@ struct _LIBCPP_TEMPLATE_VIS __compile_time_basic_format_context { _LIBCPP_HIDE_FROM_ABI constexpr __arg_t arg(size_t __id) const { if (__id >= __size_) - std::__throw_format_error("Argument index out of bounds"); + std::__throw_format_error("The argument index value is too large for the number of arguments supplied"); return __args_[__id]; } _LIBCPP_HIDE_FROM_ABI constexpr const __compile_time_handle<_CharT>& __handle(size_t __id) const { if (__id >= __size_) - std::__throw_format_error("Argument index out of bounds"); + std::__throw_format_error("The argument index value is too large for the number of arguments supplied"); return __handles_[__id]; } @@ -147,48 +148,52 @@ struct _LIBCPP_TEMPLATE_VIS __compile_time_basic_format_context { size_t __size_; }; -_LIBCPP_HIDE_FROM_ABI -constexpr void __compile_time_validate_integral(__arg_t __type) { - switch (__type) { - case __arg_t::__int: - case __arg_t::__long_long: - case __arg_t::__i128: - case __arg_t::__unsigned: - case __arg_t::__unsigned_long_long: - case __arg_t::__u128: - return; - - default: - std::__throw_format_error("Argument isn't an integral type"); - } -} - +// [format.string.std]/8 +// If { arg-idopt } is used in a width or precision, the value of the +// corresponding formatting argument is used in its place. If the +// corresponding formatting argument is not of standard signed or unsigned +// integer type, or its value is negative for precision or non-positive for +// width, an exception of type format_error is thrown. +// // _HasPrecision does the formatter have a precision? template -_LIBCPP_HIDE_FROM_ABI constexpr void -__compile_time_validate_argument(basic_format_parse_context<_CharT>& __parse_ctx, - __compile_time_basic_format_context<_CharT>& __ctx) { +_LIBCPP_HIDE_FROM_ABI constexpr void __compile_time_validate_argument( + basic_format_parse_context<_CharT>& __parse_ctx, __compile_time_basic_format_context<_CharT>& __ctx) { + auto __validate_type = [](__arg_t __type) { + // LWG3720 originally allowed "signed or unsigned integer types", however + // the final version explicitly changed it to "*standard* signed or unsigned + // integer types". It's trivial to use 128-bit integrals in libc++'s + // implementation, but other implementations may not implement it. + // (Using a width or precision, that does not fit in 64-bits, sounds very + // unlikely in real world code.) + switch (__type) { + case __arg_t::__int: + case __arg_t::__long_long: + case __arg_t::__unsigned: + case __arg_t::__unsigned_long_long: + return; + + default: + std::__throw_format_error("Replacement argument isn't a standard signed or unsigned integer type"); + } + }; + formatter<_Tp, _CharT> __formatter; __parse_ctx.advance_to(__formatter.parse(__parse_ctx)); - // [format.string.std]/7 - // ... If the corresponding formatting argument is not of integral type, or - // its value is negative for precision or non-positive for width, an - // exception of type format_error is thrown. - // - // Validate whether the arguments are integrals. if (__formatter.__parser_.__width_as_arg_) - __format::__compile_time_validate_integral(__ctx.arg(__formatter.__parser_.__width_)); + __validate_type(__ctx.arg(__formatter.__parser_.__width_)); if constexpr (_HasPrecision) if (__formatter.__parser_.__precision_as_arg_) - __format::__compile_time_validate_integral(__ctx.arg(__formatter.__parser_.__precision_)); + __validate_type(__ctx.arg(__formatter.__parser_.__precision_)); } // This function is not user facing, so it can directly use the non-standard types of the "variant". template -_LIBCPP_HIDE_FROM_ABI constexpr void __compile_time_visit_format_arg(basic_format_parse_context<_CharT>& __parse_ctx, - __compile_time_basic_format_context<_CharT>& __ctx, - __arg_t __type) { +_LIBCPP_HIDE_FROM_ABI constexpr void __compile_time_visit_format_arg( + basic_format_parse_context<_CharT>& __parse_ctx, + __compile_time_basic_format_context<_CharT>& __ctx, + __arg_t __type) { switch (__type) { case __arg_t::__none: std::__throw_format_error("Invalid argument"); @@ -201,22 +206,22 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __compile_time_visit_format_arg(basic_forma case __arg_t::__long_long: return __format::__compile_time_validate_argument<_CharT, long long>(__parse_ctx, __ctx); case __arg_t::__i128: -# ifndef _LIBCPP_HAS_NO_INT128 +# ifndef _LIBCPP_HAS_NO_INT128 return __format::__compile_time_validate_argument<_CharT, __int128_t>(__parse_ctx, __ctx); -# else +# else std::__throw_format_error("Invalid argument"); -# endif +# endif return; case __arg_t::__unsigned: return __format::__compile_time_validate_argument<_CharT, unsigned>(__parse_ctx, __ctx); case __arg_t::__unsigned_long_long: return __format::__compile_time_validate_argument<_CharT, unsigned long long>(__parse_ctx, __ctx); case __arg_t::__u128: -# ifndef _LIBCPP_HAS_NO_INT128 +# ifndef _LIBCPP_HAS_NO_INT128 return __format::__compile_time_validate_argument<_CharT, __uint128_t>(__parse_ctx, __ctx); -# else +# else std::__throw_format_error("Invalid argument"); -# endif +# endif return; case __arg_t::__float: return __format::__compile_time_validate_argument<_CharT, float, true>(__parse_ctx, __ctx); @@ -236,39 +241,42 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __compile_time_visit_format_arg(basic_forma std::__throw_format_error("Invalid argument"); } -template -_LIBCPP_HIDE_FROM_ABI constexpr const _CharT* -__handle_replacement_field(const _CharT* __begin, const _CharT* __end, - _ParseCtx& __parse_ctx, _Ctx& __ctx) { +template +_LIBCPP_HIDE_FROM_ABI constexpr _Iterator +__handle_replacement_field(_Iterator __begin, _Iterator __end, _ParseCtx& __parse_ctx, _Ctx& __ctx) { + using _CharT = iter_value_t<_Iterator>; __format::__parse_number_result __r = __format::__parse_arg_id(__begin, __end, __parse_ctx); - bool __parse = *__r.__ptr == _CharT(':'); - switch (*__r.__ptr) { + if (__r.__last == __end) + std::__throw_format_error("The argument index should end with a ':' or a '}'"); + + bool __parse = *__r.__last == _CharT(':'); + switch (*__r.__last) { case _CharT(':'): // The arg-id has a format-specifier, advance the input to the format-spec. - __parse_ctx.advance_to(__r.__ptr + 1); + __parse_ctx.advance_to(__r.__last + 1); break; case _CharT('}'): // The arg-id has no format-specifier. - __parse_ctx.advance_to(__r.__ptr); + __parse_ctx.advance_to(__r.__last); break; default: - std::__throw_format_error("The replacement field arg-id should terminate at a ':' or '}'"); + std::__throw_format_error("The argument index should end with a ':' or a '}'"); } if constexpr (same_as<_Ctx, __compile_time_basic_format_context<_CharT>>) { __arg_t __type = __ctx.arg(__r.__value); if (__type == __arg_t::__none) - std::__throw_format_error("Argument index out of bounds"); + std::__throw_format_error("The argument index value is too large for the number of arguments supplied"); else if (__type == __arg_t::__handle) __ctx.__handle(__r.__value).__parse(__parse_ctx); else if (__parse) __format::__compile_time_visit_format_arg(__parse_ctx, __ctx, __type); } else - _VSTD::__visit_format_arg( + std::__visit_format_arg( [&](auto __arg) { if constexpr (same_as) - std::__throw_format_error("Argument index out of bounds"); + std::__throw_format_error("The argument index value is too large for the number of arguments supplied"); else if constexpr (same_as::handle>) __arg.format(__parse_ctx, __ctx); else { @@ -288,13 +296,12 @@ __handle_replacement_field(const _CharT* __begin, const _CharT* __end, } template -_LIBCPP_HIDE_FROM_ABI constexpr typename _Ctx::iterator -__vformat_to(_ParseCtx&& __parse_ctx, _Ctx&& __ctx) { +_LIBCPP_HIDE_FROM_ABI constexpr typename _Ctx::iterator __vformat_to(_ParseCtx&& __parse_ctx, _Ctx&& __ctx) { using _CharT = typename _ParseCtx::char_type; static_assert(same_as); - const _CharT* __begin = __parse_ctx.begin(); - const _CharT* __end = __parse_ctx.end(); + auto __begin = __parse_ctx.begin(); + auto __end = __parse_ctx.end(); typename _Ctx::iterator __out_it = __ctx.out(); while (__begin != __end) { switch (*__begin) { @@ -304,9 +311,8 @@ __vformat_to(_ParseCtx&& __parse_ctx, _Ctx&& __ctx) { std::__throw_format_error("The format string terminates at a '{'"); if (*__begin != _CharT('{')) [[likely]] { - __ctx.advance_to(_VSTD::move(__out_it)); - __begin = - __format::__handle_replacement_field(__begin, __end, __parse_ctx, __ctx); + __ctx.advance_to(std::move(__out_it)); + __begin = __format::__handle_replacement_field(__begin, __end, __parse_ctx, __ctx); __out_it = __ctx.out(); // The output is written and __begin points to the next character. So @@ -332,6 +338,30 @@ __vformat_to(_ParseCtx&& __parse_ctx, _Ctx&& __ctx) { } // namespace __format +# if _LIBCPP_STD_VER >= 26 +template +struct _LIBCPP_TEMPLATE_VIS __runtime_format_string { +private: + basic_string_view<_CharT> __str_; + + template + friend struct _LIBCPP_TEMPLATE_VIS basic_format_string; + +public: + _LIBCPP_HIDE_FROM_ABI __runtime_format_string(basic_string_view<_CharT> __s) noexcept : __str_(__s) {} + + __runtime_format_string(const __runtime_format_string&) = delete; + __runtime_format_string& operator=(const __runtime_format_string&) = delete; +}; + +_LIBCPP_HIDE_FROM_ABI inline __runtime_format_string runtime_format(string_view __fmt) noexcept { return __fmt; } +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +_LIBCPP_HIDE_FROM_ABI inline __runtime_format_string runtime_format(wstring_view __fmt) noexcept { + return __fmt; +} +# endif +# endif //_LIBCPP_STD_VER >= 26 + template struct _LIBCPP_TEMPLATE_VIS basic_format_string { template @@ -341,9 +371,10 @@ struct _LIBCPP_TEMPLATE_VIS basic_format_string { _Context{__types_.data(), __handles_.data(), sizeof...(_Args)}); } - _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT constexpr basic_string_view<_CharT> get() const noexcept { - return __str_; - } + _LIBCPP_HIDE_FROM_ABI constexpr basic_string_view<_CharT> get() const noexcept { return __str_; } +# if _LIBCPP_STD_VER >= 26 + _LIBCPP_HIDE_FROM_ABI basic_format_string(__runtime_format_string<_CharT> __s) noexcept : __str_(__s.__str_) {} +# endif private: basic_string_view<_CharT> __str_; @@ -353,20 +384,6 @@ struct _LIBCPP_TEMPLATE_VIS basic_format_string { static constexpr array<__format::__arg_t, sizeof...(_Args)> __types_{ __format::__determine_arg_t<_Context, remove_cvref_t<_Args>>()...}; - // TODO FMT remove this work-around when the AIX ICE has been resolved. -# if defined(_AIX) && defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER < 1400 - template - static constexpr __format::__compile_time_handle<_CharT> __get_handle() { - __format::__compile_time_handle<_CharT> __handle; - if (__format::__determine_arg_t<_Context, _Tp>() == __format::__arg_t::__handle) - __handle.template __enable<_Tp>(); - - return __handle; - } - - static constexpr array<__format::__compile_time_handle<_CharT>, sizeof...(_Args)> __handles_{ - __get_handle<_Args>()...}; -# else static constexpr array<__format::__compile_time_handle<_CharT>, sizeof...(_Args)> __handles_{[] { using _Tp = remove_cvref_t<_Args>; __format::__compile_time_handle<_CharT> __handle; @@ -375,30 +392,29 @@ struct _LIBCPP_TEMPLATE_VIS basic_format_string { return __handle; }()...}; -# endif }; template using format_string = basic_format_string...>; -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template using wformat_string = basic_format_string...>; -#endif +# endif template -requires(output_iterator<_OutIt, const _CharT&>) _LIBCPP_HIDE_FROM_ABI _OutIt - __vformat_to( - _OutIt __out_it, basic_string_view<_CharT> __fmt, - basic_format_args> __args) { + requires(output_iterator<_OutIt, const _CharT&>) +_LIBCPP_HIDE_FROM_ABI _OutIt __vformat_to(_OutIt __out_it, + basic_string_view<_CharT> __fmt, + basic_format_args> __args) { if constexpr (same_as<_OutIt, _FormatOutIt>) - return _VSTD::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, - _VSTD::__format_context_create(_VSTD::move(__out_it), __args)); + return std::__format::__vformat_to( + basic_format_parse_context{__fmt, __args.__size()}, std::__format_context_create(std::move(__out_it), __args)); else { - __format::__format_buffer<_OutIt, _CharT> __buffer{_VSTD::move(__out_it)}; - _VSTD::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, - _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args)); - return _VSTD::move(__buffer).__out_it(); + __format::__format_buffer<_OutIt, _CharT> __buffer{std::move(__out_it)}; + std::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, + std::__format_context_create(__buffer.__make_output_iterator(), __args)); + return std::move(__buffer).__out_it(); } } @@ -406,258 +422,259 @@ requires(output_iterator<_OutIt, const _CharT&>) _LIBCPP_HIDE_FROM_ABI _OutIt // https://reviews.llvm.org/D110499#inline-1180704 // TODO FMT Evaluate whether we want to file a Clang bug report regarding this. template _OutIt> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt -vformat_to(_OutIt __out_it, string_view __fmt, format_args __args) { - return _VSTD::__vformat_to(_VSTD::move(__out_it), __fmt, __args); +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt vformat_to(_OutIt __out_it, string_view __fmt, format_args __args) { + return std::__vformat_to(std::move(__out_it), __fmt, __args); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template _OutIt> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt vformat_to(_OutIt __out_it, wstring_view __fmt, wformat_args __args) { - return _VSTD::__vformat_to(_VSTD::move(__out_it), __fmt, __args); + return std::__vformat_to(std::move(__out_it), __fmt, __args); } -#endif +# endif template _OutIt, class... _Args> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt format_to(_OutIt __out_it, format_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::vformat_to(_VSTD::move(__out_it), __fmt.get(), - _VSTD::make_format_args(__args...)); + return std::vformat_to(std::move(__out_it), __fmt.get(), std::make_format_args(__args...)); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template _OutIt, class... _Args> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt format_to(_OutIt __out_it, wformat_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::vformat_to(_VSTD::move(__out_it), __fmt.get(), - _VSTD::make_wformat_args(__args...)); + return std::vformat_to(std::move(__out_it), __fmt.get(), std::make_wformat_args(__args...)); } -#endif +# endif -_LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT string -vformat(string_view __fmt, format_args __args) { +// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup +// fires too eagerly, see http://llvm.org/PR61563. +template +[[nodiscard]] _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI string vformat(string_view __fmt, format_args __args) { string __res; - _VSTD::vformat_to(_VSTD::back_inserter(__res), __fmt, __args); + std::vformat_to(std::back_inserter(__res), __fmt, __args); return __res; } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS -_LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT wstring +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup +// fires too eagerly, see http://llvm.org/PR61563. +template +[[nodiscard]] _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI wstring vformat(wstring_view __fmt, wformat_args __args) { wstring __res; - _VSTD::vformat_to(_VSTD::back_inserter(__res), __fmt, __args); + std::vformat_to(std::back_inserter(__res), __fmt, __args); return __res; } -#endif +# endif template -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT string format(format_string<_Args...> __fmt, - _Args&&... __args) { - return _VSTD::vformat(__fmt.get(), _VSTD::make_format_args(__args...)); +[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI string +format(format_string<_Args...> __fmt, _Args&&... __args) { + return std::vformat(__fmt.get(), std::make_format_args(__args...)); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT wstring +[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI wstring format(wformat_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::vformat(__fmt.get(), _VSTD::make_wformat_args(__args...)); + return std::vformat(__fmt.get(), std::make_wformat_args(__args...)); } -#endif +# endif template -_LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> __vformat_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, - basic_string_view<_CharT> __fmt, - basic_format_args<_Context> __args) { - __format::__format_to_n_buffer<_OutIt, _CharT> __buffer{_VSTD::move(__out_it), __n}; - _VSTD::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, - _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args)); - return _VSTD::move(__buffer).__result(); +_LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> +__vformat_to_n(_OutIt __out_it, + iter_difference_t<_OutIt> __n, + basic_string_view<_CharT> __fmt, + basic_format_args<_Context> __args) { + __format::__format_to_n_buffer<_OutIt, _CharT> __buffer{std::move(__out_it), __n}; + std::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, + std::__format_context_create(__buffer.__make_output_iterator(), __args)); + return std::move(__buffer).__result(); } template _OutIt, class... _Args> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT format_to_n_result<_OutIt> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, format_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::__vformat_to_n(_VSTD::move(__out_it), __n, __fmt.get(), _VSTD::make_format_args(__args...)); + return std::__vformat_to_n(std::move(__out_it), __n, __fmt.get(), std::make_format_args(__args...)); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template _OutIt, class... _Args> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT format_to_n_result<_OutIt> -format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, wformat_string<_Args...> __fmt, - _Args&&... __args) { - return _VSTD::__vformat_to_n(_VSTD::move(__out_it), __n, __fmt.get(), _VSTD::make_wformat_args(__args...)); +_LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> +format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, wformat_string<_Args...> __fmt, _Args&&... __args) { + return std::__vformat_to_n(std::move(__out_it), __n, __fmt.get(), std::make_wformat_args(__args...)); } -#endif +# endif template _LIBCPP_HIDE_FROM_ABI size_t __vformatted_size(basic_string_view<_CharT> __fmt, auto __args) { __format::__formatted_size_buffer<_CharT> __buffer; - _VSTD::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, - _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args)); - return _VSTD::move(__buffer).__result(); + std::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, + std::__format_context_create(__buffer.__make_output_iterator(), __args)); + return std::move(__buffer).__result(); } template -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT size_t +[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t formatted_size(format_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::__vformatted_size(__fmt.get(), basic_format_args{_VSTD::make_format_args(__args...)}); + return std::__vformatted_size(__fmt.get(), basic_format_args{std::make_format_args(__args...)}); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT size_t +[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t formatted_size(wformat_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::__vformatted_size(__fmt.get(), basic_format_args{_VSTD::make_wformat_args(__args...)}); + return std::__vformatted_size(__fmt.get(), basic_format_args{std::make_wformat_args(__args...)}); } -#endif +# endif -#ifndef _LIBCPP_HAS_NO_LOCALIZATION +# ifndef _LIBCPP_HAS_NO_LOCALIZATION template -requires(output_iterator<_OutIt, const _CharT&>) _LIBCPP_HIDE_FROM_ABI _OutIt - __vformat_to( - _OutIt __out_it, locale __loc, basic_string_view<_CharT> __fmt, - basic_format_args> __args) { + requires(output_iterator<_OutIt, const _CharT&>) +_LIBCPP_HIDE_FROM_ABI _OutIt __vformat_to( + _OutIt __out_it, + locale __loc, + basic_string_view<_CharT> __fmt, + basic_format_args> __args) { if constexpr (same_as<_OutIt, _FormatOutIt>) - return _VSTD::__format::__vformat_to( - basic_format_parse_context{__fmt, __args.__size()}, - _VSTD::__format_context_create(_VSTD::move(__out_it), __args, _VSTD::move(__loc))); + return std::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, + std::__format_context_create(std::move(__out_it), __args, std::move(__loc))); else { - __format::__format_buffer<_OutIt, _CharT> __buffer{_VSTD::move(__out_it)}; - _VSTD::__format::__vformat_to( + __format::__format_buffer<_OutIt, _CharT> __buffer{std::move(__out_it)}; + std::__format::__vformat_to( basic_format_parse_context{__fmt, __args.__size()}, - _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args, _VSTD::move(__loc))); - return _VSTD::move(__buffer).__out_it(); + std::__format_context_create(__buffer.__make_output_iterator(), __args, std::move(__loc))); + return std::move(__buffer).__out_it(); } } template _OutIt> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt vformat_to( - _OutIt __out_it, locale __loc, string_view __fmt, format_args __args) { - return _VSTD::__vformat_to(_VSTD::move(__out_it), _VSTD::move(__loc), __fmt, - __args); +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt +vformat_to(_OutIt __out_it, locale __loc, string_view __fmt, format_args __args) { + return std::__vformat_to(std::move(__out_it), std::move(__loc), __fmt, __args); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template _OutIt> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt vformat_to( - _OutIt __out_it, locale __loc, wstring_view __fmt, wformat_args __args) { - return _VSTD::__vformat_to(_VSTD::move(__out_it), _VSTD::move(__loc), __fmt, - __args); +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt +vformat_to(_OutIt __out_it, locale __loc, wstring_view __fmt, wformat_args __args) { + return std::__vformat_to(std::move(__out_it), std::move(__loc), __fmt, __args); } -#endif +# endif template _OutIt, class... _Args> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt format_to(_OutIt __out_it, locale __loc, format_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::vformat_to(_VSTD::move(__out_it), _VSTD::move(__loc), __fmt.get(), - _VSTD::make_format_args(__args...)); + return std::vformat_to(std::move(__out_it), std::move(__loc), __fmt.get(), std::make_format_args(__args...)); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template _OutIt, class... _Args> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt format_to(_OutIt __out_it, locale __loc, wformat_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::vformat_to(_VSTD::move(__out_it), _VSTD::move(__loc), __fmt.get(), - _VSTD::make_wformat_args(__args...)); + return std::vformat_to(std::move(__out_it), std::move(__loc), __fmt.get(), std::make_wformat_args(__args...)); } -#endif +# endif -_LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT string +// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup +// fires too eagerly, see http://llvm.org/PR61563. +template +[[nodiscard]] _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI string vformat(locale __loc, string_view __fmt, format_args __args) { string __res; - _VSTD::vformat_to(_VSTD::back_inserter(__res), _VSTD::move(__loc), __fmt, - __args); + std::vformat_to(std::back_inserter(__res), std::move(__loc), __fmt, __args); return __res; } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS -_LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT wstring +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup +// fires too eagerly, see http://llvm.org/PR61563. +template +[[nodiscard]] _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI wstring vformat(locale __loc, wstring_view __fmt, wformat_args __args) { wstring __res; - _VSTD::vformat_to(_VSTD::back_inserter(__res), _VSTD::move(__loc), __fmt, - __args); + std::vformat_to(std::back_inserter(__res), std::move(__loc), __fmt, __args); return __res; } -#endif +# endif template -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT string format(locale __loc, - format_string<_Args...> __fmt, - _Args&&... __args) { - return _VSTD::vformat(_VSTD::move(__loc), __fmt.get(), - _VSTD::make_format_args(__args...)); +[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI string +format(locale __loc, format_string<_Args...> __fmt, _Args&&... __args) { + return std::vformat(std::move(__loc), __fmt.get(), std::make_format_args(__args...)); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT wstring +[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI wstring format(locale __loc, wformat_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::vformat(_VSTD::move(__loc), __fmt.get(), - _VSTD::make_wformat_args(__args...)); + return std::vformat(std::move(__loc), __fmt.get(), std::make_wformat_args(__args...)); } -#endif +# endif template -_LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> __vformat_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, - locale __loc, basic_string_view<_CharT> __fmt, - basic_format_args<_Context> __args) { - __format::__format_to_n_buffer<_OutIt, _CharT> __buffer{_VSTD::move(__out_it), __n}; - _VSTD::__format::__vformat_to( +_LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> __vformat_to_n( + _OutIt __out_it, + iter_difference_t<_OutIt> __n, + locale __loc, + basic_string_view<_CharT> __fmt, + basic_format_args<_Context> __args) { + __format::__format_to_n_buffer<_OutIt, _CharT> __buffer{std::move(__out_it), __n}; + std::__format::__vformat_to( basic_format_parse_context{__fmt, __args.__size()}, - _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args, _VSTD::move(__loc))); - return _VSTD::move(__buffer).__result(); + std::__format_context_create(__buffer.__make_output_iterator(), __args, std::move(__loc))); + return std::move(__buffer).__result(); } template _OutIt, class... _Args> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT format_to_n_result<_OutIt> -format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, locale __loc, format_string<_Args...> __fmt, - _Args&&... __args) { - return _VSTD::__vformat_to_n(_VSTD::move(__out_it), __n, _VSTD::move(__loc), __fmt.get(), - _VSTD::make_format_args(__args...)); +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> format_to_n( + _OutIt __out_it, iter_difference_t<_OutIt> __n, locale __loc, format_string<_Args...> __fmt, _Args&&... __args) { + return std::__vformat_to_n( + std::move(__out_it), __n, std::move(__loc), __fmt.get(), std::make_format_args(__args...)); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template _OutIt, class... _Args> -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT format_to_n_result<_OutIt> -format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, locale __loc, wformat_string<_Args...> __fmt, - _Args&&... __args) { - return _VSTD::__vformat_to_n(_VSTD::move(__out_it), __n, _VSTD::move(__loc), __fmt.get(), - _VSTD::make_wformat_args(__args...)); +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> format_to_n( + _OutIt __out_it, iter_difference_t<_OutIt> __n, locale __loc, wformat_string<_Args...> __fmt, _Args&&... __args) { + return std::__vformat_to_n( + std::move(__out_it), __n, std::move(__loc), __fmt.get(), std::make_wformat_args(__args...)); } -#endif +# endif template _LIBCPP_HIDE_FROM_ABI size_t __vformatted_size(locale __loc, basic_string_view<_CharT> __fmt, auto __args) { __format::__formatted_size_buffer<_CharT> __buffer; - _VSTD::__format::__vformat_to( + std::__format::__vformat_to( basic_format_parse_context{__fmt, __args.__size()}, - _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args, _VSTD::move(__loc))); - return _VSTD::move(__buffer).__result(); + std::__format_context_create(__buffer.__make_output_iterator(), __args, std::move(__loc))); + return std::move(__buffer).__result(); } template -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT size_t +[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t formatted_size(locale __loc, format_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::__vformatted_size(_VSTD::move(__loc), __fmt.get(), basic_format_args{_VSTD::make_format_args(__args...)}); + return std::__vformatted_size(std::move(__loc), __fmt.get(), basic_format_args{std::make_format_args(__args...)}); } -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template -_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT size_t +[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t formatted_size(locale __loc, wformat_string<_Args...> __fmt, _Args&&... __args) { - return _VSTD::__vformatted_size(_VSTD::move(__loc), __fmt.get(), basic_format_args{_VSTD::make_wformat_args(__args...)}); + return std::__vformatted_size(std::move(__loc), __fmt.get(), basic_format_args{std::make_wformat_args(__args...)}); } -#endif - -#endif // _LIBCPP_HAS_NO_LOCALIZATION +# endif +# endif // _LIBCPP_HAS_NO_LOCALIZATION -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD -#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) +_LIBCPP_POP_MACROS #endif // _LIBCPP___FORMAT_FORMAT_FUNCTIONS diff --git a/include/c++/v1/__format/format_fwd.h b/include/c++/v1/__format/format_fwd.h deleted file mode 100644 index f7c72e21..00000000 --- a/include/c++/v1/__format/format_fwd.h +++ /dev/null @@ -1,39 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___FORMAT_FORMAT_FWD_H -#define _LIBCPP___FORMAT_FORMAT_FWD_H - -#include <__availability> -#include <__config> -#include <__iterator/concepts.h> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -#if _LIBCPP_STD_VER > 17 - -template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_arg; - -template - requires output_iterator<_OutIt, const _CharT&> -class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_context; - -template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter; - -#endif //_LIBCPP_STD_VER > 17 - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___FORMAT_FORMAT_FWD_H diff --git a/include/c++/v1/__format/format_parse_context.h b/include/c++/v1/__format/format_parse_context.h index 30e3a7df..aefcd549 100644 --- a/include/c++/v1/__format/format_parse_context.h +++ b/include/c++/v1/__format/format_parse_context.h @@ -12,6 +12,7 @@ #include <__config> #include <__format/format_error.h> +#include <__type_traits/is_constant_evaluated.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -20,37 +21,29 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_parse_context { +class _LIBCPP_TEMPLATE_VIS basic_format_parse_context { public: - using char_type = _CharT; + using char_type = _CharT; using const_iterator = typename basic_string_view<_CharT>::const_iterator; - using iterator = const_iterator; + using iterator = const_iterator; - _LIBCPP_HIDE_FROM_ABI - constexpr explicit basic_format_parse_context(basic_string_view<_CharT> __fmt, - size_t __num_args = 0) noexcept + _LIBCPP_HIDE_FROM_ABI constexpr explicit basic_format_parse_context( + basic_string_view<_CharT> __fmt, size_t __num_args = 0) noexcept : __begin_(__fmt.begin()), __end_(__fmt.end()), __indexing_(__unknown), __next_arg_id_(0), __num_args_(__num_args) {} - basic_format_parse_context(const basic_format_parse_context&) = delete; - basic_format_parse_context& - operator=(const basic_format_parse_context&) = delete; + basic_format_parse_context(const basic_format_parse_context&) = delete; + basic_format_parse_context& operator=(const basic_format_parse_context&) = delete; - _LIBCPP_HIDE_FROM_ABI constexpr const_iterator begin() const noexcept { - return __begin_; - } - _LIBCPP_HIDE_FROM_ABI constexpr const_iterator end() const noexcept { - return __end_; - } - _LIBCPP_HIDE_FROM_ABI constexpr void advance_to(const_iterator __it) { - __begin_ = __it; - } + _LIBCPP_HIDE_FROM_ABI constexpr const_iterator begin() const noexcept { return __begin_; } + _LIBCPP_HIDE_FROM_ABI constexpr const_iterator end() const noexcept { return __end_; } + _LIBCPP_HIDE_FROM_ABI constexpr void advance_to(const_iterator __it) { __begin_ = __it; } _LIBCPP_HIDE_FROM_ABI constexpr size_t next_arg_id() { if (__indexing_ == __manual) @@ -58,6 +51,18 @@ class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_parse_contex if (__indexing_ == __unknown) __indexing_ = __automatic; + + // Throws an exception to make the expression a non core constant + // expression as required by: + // [format.parse.ctx]/8 + // Remarks: Let cur-arg-id be the value of next_arg_id_ prior to this + // call. Call expressions where cur-arg-id >= num_args_ is true are not + // core constant expressions (7.7 [expr.const]). + // Note: the Throws clause [format.parse.ctx]/9 doesn't specify the + // behavior when id >= num_args_. + if (is_constant_evaluated() && __next_arg_id_ >= __num_args_) + std::__throw_format_error("Argument index outside the valid range"); + return __next_arg_id_++; } _LIBCPP_HIDE_FROM_ABI constexpr void check_arg_id(size_t __id) { @@ -89,11 +94,11 @@ class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT basic_format_parse_contex _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(basic_format_parse_context); using format_parse_context = basic_format_parse_context; -#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS using wformat_parse_context = basic_format_parse_context; -#endif +# endif -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/format_string.h b/include/c++/v1/__format/format_string.h index d9caf866..bdf3cff7 100644 --- a/include/c++/v1/__format/format_string.h +++ b/include/c++/v1/__format/format_string.h @@ -13,6 +13,8 @@ #include <__assert> #include <__config> #include <__format/format_error.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> // iter_value_t #include #include @@ -22,22 +24,21 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __format { -template +template struct _LIBCPP_TEMPLATE_VIS __parse_number_result { - const _CharT* __ptr; + _Iterator __last; uint32_t __value; }; -template -__parse_number_result(const _CharT*, uint32_t) -> __parse_number_result<_CharT>; +template +__parse_number_result(_Iterator, uint32_t) -> __parse_number_result<_Iterator>; -template -_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_CharT> -__parse_number(const _CharT* __begin, const _CharT* __end); +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> __parse_number(_Iterator __begin, _Iterator __end); /** * The maximum value of a numeric argument. @@ -53,27 +54,26 @@ __parse_number(const _CharT* __begin, const _CharT* __end); inline constexpr uint32_t __number_max = INT32_MAX; namespace __detail { -template -_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_CharT> -__parse_zero(const _CharT* __begin, const _CharT*, auto& __parse_ctx) { +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_zero(_Iterator __begin, _Iterator, auto& __parse_ctx) { __parse_ctx.check_arg_id(0); return {++__begin, 0}; // can never be larger than the maximum. } -template -_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_CharT> -__parse_automatic(const _CharT* __begin, const _CharT*, auto& __parse_ctx) { +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_automatic(_Iterator __begin, _Iterator, auto& __parse_ctx) { size_t __value = __parse_ctx.next_arg_id(); - _LIBCPP_ASSERT(__value <= __number_max, - "Compilers don't support this number of arguments"); + _LIBCPP_ASSERT_UNCATEGORIZED(__value <= __number_max, "Compilers don't support this number of arguments"); return {__begin, uint32_t(__value)}; } -template -_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_CharT> -__parse_manual(const _CharT* __begin, const _CharT* __end, auto& __parse_ctx) { - __parse_number_result<_CharT> __r = __format::__parse_number(__begin, __end); +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_manual(_Iterator __begin, _Iterator __end, auto& __parse_ctx) { + __parse_number_result<_Iterator> __r = __format::__parse_number(__begin, __end); __parse_ctx.check_arg_id(__r.__value); return __r; } @@ -86,11 +86,11 @@ __parse_manual(const _CharT* __begin, const _CharT* __end, auto& __parse_ctx) { * The number is used for the 31-bit values @em width and @em precision. This * allows a maximum value of 2147483647. */ -template -_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_CharT> -__parse_number(const _CharT* __begin, const _CharT* __end_input) { - static_assert(__format::__number_max == INT32_MAX, - "The algorithm is implemented based on this value."); +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_number(_Iterator __begin, _Iterator __end_input) { + using _CharT = iter_value_t<_Iterator>; + static_assert(__format::__number_max == INT32_MAX, "The algorithm is implemented based on this value."); /* * Limit the input to 9 digits, otherwise we need two checks during every * iteration: @@ -98,7 +98,7 @@ __parse_number(const _CharT* __begin, const _CharT* __end_input) { * - Does the value exceed width of an uint32_t? (Switching to uint64_t would * have the same issue, but with a higher maximum.) */ - const _CharT* __end = __end_input - __begin > 9 ? __begin + 9 : __end_input; + _Iterator __end = __end_input - __begin > 9 ? __begin + 9 : __end_input; uint32_t __value = *__begin - _CharT('0'); while (++__begin != __end) { if (*__begin < _CharT('0') || *__begin > _CharT('9')) @@ -107,9 +107,7 @@ __parse_number(const _CharT* __begin, const _CharT* __end_input) { __value = __value * 10 + *__begin - _CharT('0'); } - if (__begin != __end_input && *__begin >= _CharT('0') && - *__begin <= _CharT('9')) { - + if (__begin != __end_input && *__begin >= _CharT('0') && *__begin <= _CharT('9')) { /* * There are more than 9 digits, do additional validations: * - Does the 10th digit exceed the maximum allowed value? @@ -117,10 +115,8 @@ __parse_number(const _CharT* __begin, const _CharT* __end_input) { * (More than 10 digits always overflows the maximum.) */ uint64_t __v = uint64_t(__value) * 10 + *__begin++ - _CharT('0'); - if (__v > __number_max || - (__begin != __end_input && *__begin >= _CharT('0') && - *__begin <= _CharT('9'))) - std::__throw_format_error("The numeric value of the format-spec is too large"); + if (__v > __number_max || (__begin != __end_input && *__begin >= _CharT('0') && *__begin <= _CharT('9'))) + std::__throw_format_error("The numeric value of the format specifier is too large"); __value = __v; } @@ -134,9 +130,10 @@ __parse_number(const _CharT* __begin, const _CharT* __end_input) { * The parser will return a pointer beyond the last consumed character. This * should be the closing '}' of the arg-id. */ -template -_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_CharT> -__parse_arg_id(const _CharT* __begin, const _CharT* __end, auto& __parse_ctx) { +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_arg_id(_Iterator __begin, _Iterator __end, auto& __parse_ctx) { + using _CharT = iter_value_t<_Iterator>; switch (*__begin) { case _CharT('0'): return __detail::__parse_zero(__begin, __end, __parse_ctx); @@ -149,14 +146,14 @@ __parse_arg_id(const _CharT* __begin, const _CharT* __end, auto& __parse_ctx) { return __detail::__parse_automatic(__begin, __end, __parse_ctx); } if (*__begin < _CharT('0') || *__begin > _CharT('9')) - std::__throw_format_error("The arg-id of the format-spec starts with an invalid character"); + std::__throw_format_error("The argument index starts with an invalid character"); return __detail::__parse_manual(__begin, __end, __parse_ctx); } } // namespace __format -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/format_to_n_result.h b/include/c++/v1/__format/format_to_n_result.h index f1ed9a09..6f30546d 100644 --- a/include/c++/v1/__format/format_to_n_result.h +++ b/include/c++/v1/__format/format_to_n_result.h @@ -19,7 +19,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template struct _LIBCPP_TEMPLATE_VIS format_to_n_result { @@ -28,7 +28,7 @@ struct _LIBCPP_TEMPLATE_VIS format_to_n_result { }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(format_to_n_result); -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/formatter.h b/include/c++/v1/__format/formatter.h index 900a09af..e2f418f9 100644 --- a/include/c++/v1/__format/formatter.h +++ b/include/c++/v1/__format/formatter.h @@ -10,9 +10,8 @@ #ifndef _LIBCPP___FORMAT_FORMATTER_H #define _LIBCPP___FORMAT_FORMATTER_H -#include <__availability> #include <__config> -#include <__format/format_fwd.h> +#include <__fwd/format.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -20,7 +19,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 /// The default formatter template. /// @@ -32,13 +31,13 @@ _LIBCPP_BEGIN_NAMESPACE_STD /// - is_copy_assignable, and /// - is_move_assignable. template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter { - formatter() = delete; - formatter(const formatter&) = delete; +struct _LIBCPP_TEMPLATE_VIS formatter { + formatter() = delete; + formatter(const formatter&) = delete; formatter& operator=(const formatter&) = delete; }; -# if _LIBCPP_STD_VER > 20 +# if _LIBCPP_STD_VER >= 23 template _LIBCPP_HIDE_FROM_ABI constexpr void __set_debug_format(_Tp& __formatter) { @@ -46,8 +45,8 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __set_debug_format(_Tp& __formatter) { __formatter.set_debug_format(); } -# endif // _LIBCPP_STD_VER > 20 -#endif // _LIBCPP_STD_VER > 17 +# endif // _LIBCPP_STD_VER >= 23 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/formatter_bool.h b/include/c++/v1/__format/formatter_bool.h index 0d005a1b..17dc6954 100644 --- a/include/c++/v1/__format/formatter_bool.h +++ b/include/c++/v1/__format/formatter_bool.h @@ -11,20 +11,17 @@ #define _LIBCPP___FORMAT_FORMATTER_BOOL_H #include <__algorithm/copy.h> -#include <__availability> +#include <__assert> #include <__config> -#include <__debug> #include <__format/concepts.h> -#include <__format/format_error.h> #include <__format/format_parse_context.h> #include <__format/formatter.h> #include <__format/formatter_integral.h> #include <__format/parser_std_format_spec.h> #include <__utility/unreachable.h> -#include #ifndef _LIBCPP_HAS_NO_LOCALIZATION -# include +# include <__locale> #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -33,19 +30,20 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter { +struct _LIBCPP_TEMPLATE_VIS formatter { public: - _LIBCPP_HIDE_FROM_ABI constexpr auto - parse(basic_format_parse_context<_CharT>& __parse_ctx) -> decltype(__parse_ctx.begin()) { - auto __result = __parser_.__parse(__parse_ctx, __format_spec::__fields_integral); - __format_spec::__process_parsed_bool(__parser_); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_integral); + __format_spec::__process_parsed_bool(__parser_, "a bool"); return __result; } - _LIBCPP_HIDE_FROM_ABI auto format(bool __value, auto& __ctx) const -> decltype(__ctx.out()) { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(bool __value, _FormatContext& __ctx) const { switch (__parser_.__type_) { case __format_spec::__type::__default: case __format_spec::__type::__string: @@ -63,7 +61,7 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter static_cast(__value), __ctx, __parser_.__get_parsed_std_specifications(__ctx)); default: - _LIBCPP_ASSERT(false, "The parse function should have validated the type"); + _LIBCPP_ASSERT_INTERNAL(false, "The parse function should have validated the type"); __libcpp_unreachable(); } } @@ -71,7 +69,7 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter __format_spec::__parser<_CharT> __parser_; }; -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/formatter_char.h b/include/c++/v1/__format/formatter_char.h index 8a92e744..d33e8436 100644 --- a/include/c++/v1/__format/formatter_char.h +++ b/include/c++/v1/__format/formatter_char.h @@ -10,7 +10,6 @@ #ifndef _LIBCPP___FORMAT_FORMATTER_CHAR_H #define _LIBCPP___FORMAT_FORMATTER_CHAR_H -#include <__availability> #include <__concepts/same_as.h> #include <__config> #include <__format/concepts.h> @@ -19,8 +18,9 @@ #include <__format/formatter_integral.h> #include <__format/formatter_output.h> #include <__format/parser_std_format_spec.h> +#include <__format/write_escaped.h> #include <__type_traits/conditional.h> -#include <__type_traits/is_signed.h> +#include <__type_traits/make_unsigned.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -28,45 +28,46 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_char { +struct _LIBCPP_TEMPLATE_VIS __formatter_char { public: - _LIBCPP_HIDE_FROM_ABI constexpr auto - parse(basic_format_parse_context<_CharT>& __parse_ctx) -> decltype(__parse_ctx.begin()) { - auto __result = __parser_.__parse(__parse_ctx, __format_spec::__fields_integral); - __format_spec::__process_parsed_char(__parser_); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_integral); + __format_spec::__process_parsed_char(__parser_, "a character"); return __result; } - _LIBCPP_HIDE_FROM_ABI auto format(_CharT __value, auto& __ctx) const -> decltype(__ctx.out()) { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_CharT __value, _FormatContext& __ctx) const { if (__parser_.__type_ == __format_spec::__type::__default || __parser_.__type_ == __format_spec::__type::__char) return __formatter::__format_char(__value, __ctx.out(), __parser_.__get_parsed_std_specifications(__ctx)); -# if _LIBCPP_STD_VER > 20 +# if _LIBCPP_STD_VER >= 23 if (__parser_.__type_ == __format_spec::__type::__debug) return __formatter::__format_escaped_char(__value, __ctx.out(), __parser_.__get_parsed_std_specifications(__ctx)); # endif - if constexpr (sizeof(_CharT) <= sizeof(int)) - // Promotes _CharT to an integral type. This reduces the number of - // instantiations of __format_integer reducing code size. + if constexpr (sizeof(_CharT) <= sizeof(unsigned)) return __formatter::__format_integer( - static_cast, int, unsigned>>(__value), + static_cast(static_cast>(__value)), __ctx, __parser_.__get_parsed_std_specifications(__ctx)); else - return __formatter::__format_integer(__value, __ctx, __parser_.__get_parsed_std_specifications(__ctx)); + return __formatter::__format_integer( + static_cast>(__value), __ctx, __parser_.__get_parsed_std_specifications(__ctx)); } - _LIBCPP_HIDE_FROM_ABI auto format(char __value, auto& __ctx) const -> decltype(__ctx.out()) + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(char __value, _FormatContext& __ctx) const requires(same_as<_CharT, wchar_t>) { - return format(static_cast(__value), __ctx); + return format(static_cast(static_cast(__value)), __ctx); } -# if _LIBCPP_STD_VER > 20 +# if _LIBCPP_STD_VER >= 23 _LIBCPP_HIDE_FROM_ABI constexpr void set_debug_format() { __parser_.__type_ = __format_spec::__type::__debug; } # endif @@ -74,19 +75,18 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_char { }; template <> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter : public __formatter_char {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_char {}; # ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template <> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter : public __formatter_char {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_char {}; template <> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter : public __formatter_char { -}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_char {}; # endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/formatter_floating_point.h b/include/c++/v1/__format/formatter_floating_point.h index ca065723..fa42ba20 100644 --- a/include/c++/v1/__format/formatter_floating_point.h +++ b/include/c++/v1/__format/formatter_floating_point.h @@ -16,6 +16,10 @@ #include <__algorithm/min.h> #include <__algorithm/rotate.h> #include <__algorithm/transform.h> +#include <__assert> +#include <__charconv/chars_format.h> +#include <__charconv/to_chars_floating_point.h> +#include <__charconv/to_chars_result.h> #include <__concepts/arithmetic.h> #include <__concepts/same_as.h> #include <__config> @@ -25,13 +29,17 @@ #include <__format/formatter_integral.h> #include <__format/formatter_output.h> #include <__format/parser_std_format_spec.h> +#include <__iterator/concepts.h> #include <__memory/allocator.h> +#include <__system_error/errc.h> +#include <__type_traits/conditional.h> #include <__utility/move.h> #include <__utility/unreachable.h> -#include +#include +#include #ifndef _LIBCPP_HAS_NO_LOCALIZATION -# include +# include <__locale> #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -43,28 +51,28 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __formatter { template _LIBCPP_HIDE_FROM_ABI char* __to_buffer(char* __first, char* __last, _Tp __value) { - to_chars_result __r = _VSTD::to_chars(__first, __last, __value); - _LIBCPP_ASSERT(__r.ec == errc(0), "Internal buffer too small"); + to_chars_result __r = std::to_chars(__first, __last, __value); + _LIBCPP_ASSERT_INTERNAL(__r.ec == errc(0), "Internal buffer too small"); return __r.ptr; } template _LIBCPP_HIDE_FROM_ABI char* __to_buffer(char* __first, char* __last, _Tp __value, chars_format __fmt) { - to_chars_result __r = _VSTD::to_chars(__first, __last, __value, __fmt); - _LIBCPP_ASSERT(__r.ec == errc(0), "Internal buffer too small"); + to_chars_result __r = std::to_chars(__first, __last, __value, __fmt); + _LIBCPP_ASSERT_INTERNAL(__r.ec == errc(0), "Internal buffer too small"); return __r.ptr; } template _LIBCPP_HIDE_FROM_ABI char* __to_buffer(char* __first, char* __last, _Tp __value, chars_format __fmt, int __precision) { - to_chars_result __r = _VSTD::to_chars(__first, __last, __value, __fmt, __precision); - _LIBCPP_ASSERT(__r.ec == errc(0), "Internal buffer too small"); + to_chars_result __r = std::to_chars(__first, __last, __value, __fmt, __precision); + _LIBCPP_ASSERT_INTERNAL(__r.ec == errc(0), "Internal buffer too small"); return __r.ptr; } @@ -109,8 +117,8 @@ _LIBCPP_HIDE_FROM_ABI constexpr size_t __float_buffer_size(int __precision) { template <> struct __traits { - static constexpr int __max_integral = 38; - static constexpr int __max_fractional = 149; + static constexpr int __max_integral = 38; + static constexpr int __max_fractional = 149; static constexpr int __max_fractional_value = 3; static constexpr size_t __stack_buffer_size = 256; @@ -119,8 +127,8 @@ struct __traits { template <> struct __traits { - static constexpr int __max_integral = 308; - static constexpr int __max_fractional = 1074; + static constexpr int __max_integral = 308; + static constexpr int __max_fractional = 1074; static constexpr int __max_fractional_value = 4; static constexpr size_t __stack_buffer_size = 1024; @@ -129,7 +137,7 @@ struct __traits { /// Helper class to store the conversion buffer. /// -/// Depending on the maxium size required for a value, the buffer is allocated +/// Depending on the maximum size required for a value, the buffer is allocated /// on the stack or the heap. template class _LIBCPP_TEMPLATE_VIS __float_buffer { @@ -146,7 +154,6 @@ class _LIBCPP_TEMPLATE_VIS __float_buffer { // required. explicit _LIBCPP_HIDE_FROM_ABI __float_buffer(int __precision) : __precision_(__precision != -1 ? __precision : _Traits::__max_fractional) { - // When the precision is larger than _Traits::__max_fractional the digits in // the range (_Traits::__max_fractional, precision] will contain the value // zero. There's no need to request to_chars to write these zeros: @@ -158,7 +165,7 @@ class _LIBCPP_TEMPLATE_VIS __float_buffer { // to be converted from a char to a wchar_t. if (__precision_ > _Traits::__max_fractional) { __num_trailing_zeros_ = __precision_ - _Traits::__max_fractional; - __precision_ = _Traits::__max_fractional; + __precision_ = _Traits::__max_fractional; } __size_ = __formatter::__float_buffer_size<_Fp>(__precision_); @@ -173,7 +180,7 @@ class _LIBCPP_TEMPLATE_VIS __float_buffer { if (__size_ > _Traits::__stack_buffer_size) allocator{}.deallocate(__begin_, __size_); } - _LIBCPP_HIDE_FROM_ABI __float_buffer(const __float_buffer&) = delete; + _LIBCPP_HIDE_FROM_ABI __float_buffer(const __float_buffer&) = delete; _LIBCPP_HIDE_FROM_ABI __float_buffer& operator=(const __float_buffer&) = delete; _LIBCPP_HIDE_FROM_ABI char* begin() const { return __begin_; } @@ -217,7 +224,7 @@ struct __float_result { constexpr inline _LIBCPP_HIDE_FROM_ABI char* __find_exponent(char* __first, char* __last) { ptrdiff_t __size = __last - __first; if (__size >= 4) { - __first = __last - _VSTD::min(__size, ptrdiff_t(6)); + __first = __last - std::min(__size, ptrdiff_t(6)); for (; __first != __last - 3; ++__first) { if (*__first == 'e') return __first; @@ -227,8 +234,8 @@ constexpr inline _LIBCPP_HIDE_FROM_ABI char* __find_exponent(char* __first, char } template -_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_default(const __float_buffer<_Fp>& __buffer, _Tp __value, - char* __integral) { +_LIBCPP_HIDE_FROM_ABI __float_result +__format_buffer_default(const __float_buffer<_Fp>& __buffer, _Tp __value, char* __integral) { __float_result __result; __result.__integral = __integral; __result.__last = __formatter::__to_buffer(__integral, __buffer.end(), __value); @@ -238,7 +245,7 @@ _LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_default(const __float_buffe // Constrains: // - There's at least one decimal digit before the radix point. // - The radix point, when present, is placed before the exponent. - __result.__radix_point = _VSTD::find(__result.__integral + 1, __result.__exponent, '.'); + __result.__radix_point = std::find(__result.__integral + 1, __result.__exponent, '.'); // When the radix point isn't found its position is the exponent instead of // __result.__last. @@ -246,19 +253,18 @@ _LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_default(const __float_buffe __result.__radix_point = __result.__last; // clang-format off - _LIBCPP_ASSERT((__result.__integral != __result.__last) && - (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && - (__result.__exponent == __result.__last || *__result.__exponent == 'e'), - "Post-condition failure."); + _LIBCPP_ASSERT_INTERNAL((__result.__integral != __result.__last) && + (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && + (__result.__exponent == __result.__last || *__result.__exponent == 'e'), + "Post-condition failure."); // clang-format on return __result; } template -_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_hexadecimal_lower_case(const __float_buffer<_Fp>& __buffer, - _Tp __value, int __precision, - char* __integral) { +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_hexadecimal_lower_case( + const __float_buffer<_Fp>& __buffer, _Tp __value, int __precision, char* __integral) { __float_result __result; __result.__integral = __integral; if (__precision == -1) @@ -290,67 +296,64 @@ _LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_hexadecimal_lower_case(cons // 0123456789 static_assert(__traits<_Fp>::__hex_precision_digits <= 4, "Guard against possible underflow."); - char* __last = __result.__last - 2; - __first = __last - __traits<_Fp>::__hex_precision_digits; - __result.__exponent = _VSTD::find(__first, __last, 'p'); + char* __last = __result.__last - 2; + __first = __last - __traits<_Fp>::__hex_precision_digits; + __result.__exponent = std::find(__first, __last, 'p'); } else { __result.__radix_point = __result.__last; - __result.__exponent = __first; + __result.__exponent = __first; } // clang-format off - _LIBCPP_ASSERT((__result.__integral != __result.__last) && - (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && - (__result.__exponent != __result.__last && *__result.__exponent == 'p'), - "Post-condition failure."); + _LIBCPP_ASSERT_INTERNAL((__result.__integral != __result.__last) && + (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && + (__result.__exponent != __result.__last && *__result.__exponent == 'p'), + "Post-condition failure."); // clang-format on return __result; } template -_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_hexadecimal_upper_case(const __float_buffer<_Fp>& __buffer, - _Tp __value, int __precision, - char* __integral) { +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_hexadecimal_upper_case( + const __float_buffer<_Fp>& __buffer, _Tp __value, int __precision, char* __integral) { __float_result __result = __formatter::__format_buffer_hexadecimal_lower_case(__buffer, __value, __precision, __integral); - _VSTD::transform(__result.__integral, __result.__exponent, __result.__integral, __hex_to_upper); + std::transform(__result.__integral, __result.__exponent, __result.__integral, __hex_to_upper); *__result.__exponent = 'P'; return __result; } template -_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_scientific_lower_case(const __float_buffer<_Fp>& __buffer, - _Tp __value, int __precision, - char* __integral) { +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_scientific_lower_case( + const __float_buffer<_Fp>& __buffer, _Tp __value, int __precision, char* __integral) { __float_result __result; __result.__integral = __integral; __result.__last = __formatter::__to_buffer(__integral, __buffer.end(), __value, chars_format::scientific, __precision); char* __first = __integral + 1; - _LIBCPP_ASSERT(__first != __result.__last, "No exponent present"); + _LIBCPP_ASSERT_INTERNAL(__first != __result.__last, "No exponent present"); if (*__first == '.') { __result.__radix_point = __first; __result.__exponent = __formatter::__find_exponent(__first + 1, __result.__last); } else { __result.__radix_point = __result.__last; - __result.__exponent = __first; + __result.__exponent = __first; } // clang-format off - _LIBCPP_ASSERT((__result.__integral != __result.__last) && - (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && - (__result.__exponent != __result.__last && *__result.__exponent == 'e'), - "Post-condition failure."); + _LIBCPP_ASSERT_INTERNAL((__result.__integral != __result.__last) && + (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && + (__result.__exponent != __result.__last && *__result.__exponent == 'e'), + "Post-condition failure."); // clang-format on return __result; } template -_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_scientific_upper_case(const __float_buffer<_Fp>& __buffer, - _Tp __value, int __precision, - char* __integral) { +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_scientific_upper_case( + const __float_buffer<_Fp>& __buffer, _Tp __value, int __precision, char* __integral) { __float_result __result = __formatter::__format_buffer_scientific_lower_case(__buffer, __value, __precision, __integral); *__result.__exponent = 'E'; @@ -358,8 +361,8 @@ _LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_scientific_upper_case(const } template -_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_fixed(const __float_buffer<_Fp>& __buffer, _Tp __value, - int __precision, char* __integral) { +_LIBCPP_HIDE_FROM_ABI __float_result +__format_buffer_fixed(const __float_buffer<_Fp>& __buffer, _Tp __value, int __precision, char* __integral) { __float_result __result; __result.__integral = __integral; __result.__last = __formatter::__to_buffer(__integral, __buffer.end(), __value, chars_format::fixed, __precision); @@ -369,21 +372,20 @@ _LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_fixed(const __float_buffer< // By converting __precision to a bool the subtraction can be done // unconditionally. __result.__radix_point = __result.__last - (__precision + bool(__precision)); - __result.__exponent = __result.__last; + __result.__exponent = __result.__last; // clang-format off - _LIBCPP_ASSERT((__result.__integral != __result.__last) && - (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && - (__result.__exponent == __result.__last), - "Post-condition failure."); + _LIBCPP_ASSERT_INTERNAL((__result.__integral != __result.__last) && + (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && + (__result.__exponent == __result.__last), + "Post-condition failure."); // clang-format on return __result; } template -_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_general_lower_case(__float_buffer<_Fp>& __buffer, _Tp __value, - int __precision, char* __integral) { - +_LIBCPP_HIDE_FROM_ABI __float_result +__format_buffer_general_lower_case(__float_buffer<_Fp>& __buffer, _Tp __value, int __precision, char* __integral) { __buffer.__remove_trailing_zeros(); __float_result __result; @@ -393,7 +395,7 @@ _LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_general_lower_case(__float_ char* __first = __integral + 1; if (__first == __result.__last) { __result.__radix_point = __result.__last; - __result.__exponent = __result.__last; + __result.__exponent = __result.__last; } else { __result.__exponent = __formatter::__find_exponent(__first, __result.__last); if (__result.__exponent != __result.__last) @@ -404,23 +406,23 @@ _LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_general_lower_case(__float_ // In fixed mode the algorithm truncates trailing spaces and possibly the // radix point. There's no good guess for the position of the radix point // therefore scan the output after the first digit. - __result.__radix_point = _VSTD::find(__first, __result.__last, '.'); + __result.__radix_point = std::find(__first, __result.__last, '.'); } } // clang-format off - _LIBCPP_ASSERT((__result.__integral != __result.__last) && - (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && - (__result.__exponent == __result.__last || *__result.__exponent == 'e'), - "Post-condition failure."); + _LIBCPP_ASSERT_INTERNAL((__result.__integral != __result.__last) && + (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && + (__result.__exponent == __result.__last || *__result.__exponent == 'e'), + "Post-condition failure."); // clang-format on return __result; } template -_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_general_upper_case(__float_buffer<_Fp>& __buffer, _Tp __value, - int __precision, char* __integral) { +_LIBCPP_HIDE_FROM_ABI __float_result +__format_buffer_general_upper_case(__float_buffer<_Fp>& __buffer, _Tp __value, int __precision, char* __integral) { __float_result __result = __formatter::__format_buffer_general_lower_case(__buffer, __value, __precision, __integral); if (__result.__exponent != __result.__last) *__result.__exponent = 'E'; @@ -484,7 +486,7 @@ _LIBCPP_HIDE_FROM_ABI __float_result __format_buffer( return __formatter::__format_buffer_general_upper_case(__buffer, __value, __buffer.__precision(), __first); default: - _LIBCPP_ASSERT(false, "The parser should have validated the type"); + _LIBCPP_ASSERT_INTERNAL(false, "The parser should have validated the type"); __libcpp_unreachable(); } } @@ -495,13 +497,13 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __format_locale_specific_form( _OutIt __out_it, const __float_buffer<_Fp>& __buffer, const __float_result& __result, - _VSTD::locale __loc, + std::locale __loc, __format_spec::__parsed_specifications<_CharT> __specs) { - const auto& __np = std::use_facet>(__loc); + const auto& __np = std::use_facet>(__loc); string __grouping = __np.grouping(); - char* __first = __result.__integral; + char* __first = __result.__integral; // When no radix point or exponent are present __last will be __result.__last. - char* __last = _VSTD::min(__result.__radix_point, __result.__exponent); + char* __last = std::min(__result.__radix_point, __result.__exponent); ptrdiff_t __digits = __last - __first; if (!__grouping.empty()) { @@ -517,12 +519,12 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __format_locale_specific_form( __grouping.size() - // Grouping contains one !__grouping.empty(); // additional character - __formatter::__padding_size_result __padding = {0, 0}; - bool __zero_padding = __specs.__alignment_ == __format_spec::__alignment::__zero_padding; + __formatter::__padding_size_result __padding = {0, 0}; + bool __zero_padding = __specs.__alignment_ == __format_spec::__alignment::__zero_padding; if (__size < __specs.__width_) { if (__zero_padding) { - __specs.__alignment_ = __format_spec::__alignment::__right; - __specs.__fill_ = _CharT('0'); + __specs.__alignment_ = __format_spec::__alignment::__right; + __specs.__fill_.__data[0] = _CharT('0'); } __padding = __formatter::__padding_size(__size, __specs.__width_, __specs.__alignment_); @@ -531,16 +533,16 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __format_locale_specific_form( // sign and (zero padding or alignment) if (__zero_padding && __first != __buffer.begin()) *__out_it++ = *__buffer.begin(); - __out_it = __formatter::__fill(_VSTD::move(__out_it), __padding.__before_, __specs.__fill_); + __out_it = __formatter::__fill(std::move(__out_it), __padding.__before_, __specs.__fill_); if (!__zero_padding && __first != __buffer.begin()) *__out_it++ = *__buffer.begin(); // integral part if (__grouping.empty()) { - __out_it = __formatter::__copy(__first, __digits, _VSTD::move(__out_it)); + __out_it = __formatter::__copy(__first, __digits, std::move(__out_it)); } else { - auto __r = __grouping.rbegin(); - auto __e = __grouping.rend() - 1; + auto __r = __grouping.rbegin(); + auto __e = __grouping.rend() - 1; _CharT __sep = __np.thousands_sep(); // The output is divided in small groups of numbers to write: // - A group before the first separator. @@ -549,7 +551,7 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __format_locale_specific_form( // This loop achieves that process by testing the termination condition // midway in the loop. while (true) { - __out_it = __formatter::__copy(__first, *__r, _VSTD::move(__out_it)); + __out_it = __formatter::__copy(__first, *__r, std::move(__out_it)); __first += *__r; if (__r == __e) @@ -563,16 +565,16 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __format_locale_specific_form( // fractional part if (__result.__radix_point != __result.__last) { *__out_it++ = __np.decimal_point(); - __out_it = __formatter::__copy(__result.__radix_point + 1, __result.__exponent, _VSTD::move(__out_it)); - __out_it = __formatter::__fill(_VSTD::move(__out_it), __buffer.__num_trailing_zeros(), _CharT('0')); + __out_it = __formatter::__copy(__result.__radix_point + 1, __result.__exponent, std::move(__out_it)); + __out_it = __formatter::__fill(std::move(__out_it), __buffer.__num_trailing_zeros(), _CharT('0')); } // exponent if (__result.__exponent != __result.__last) - __out_it = __formatter::__copy(__result.__exponent, __result.__last, _VSTD::move(__out_it)); + __out_it = __formatter::__copy(__result.__exponent, __result.__last, std::move(__out_it)); // alignment - return __formatter::__fill(_VSTD::move(__out_it), __padding.__after_, __specs.__fill_); + return __formatter::__fill(std::move(__out_it), __padding.__after_, __specs.__fill_); } # endif // _LIBCPP_HAS_NO_LOCALIZATION @@ -590,7 +592,7 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __format_floating_point_non_finite( __specs.__std_.__type_ == __format_spec::__type::__scientific_upper_case || __specs.__std_.__type_ == __format_spec::__type::__fixed_upper_case || __specs.__std_.__type_ == __format_spec::__type::__general_upper_case; - __last = _VSTD::copy_n(&("infnanINFNAN"[6 * __upper_case + 3 * __isnan]), 3, __last); + __last = std::copy_n(&("infnanINFNAN"[6 * __upper_case + 3 * __isnan]), 3, __last); // [format.string.std]/13 // A zero (0) character preceding the width field pads the field with @@ -599,17 +601,45 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __format_floating_point_non_finite( if (__specs.__alignment_ == __format_spec::__alignment::__zero_padding) __specs.__alignment_ = __format_spec::__alignment::__right; - return __formatter::__write(__buffer, __last, _VSTD::move(__out_it), __specs); + return __formatter::__write(__buffer, __last, std::move(__out_it), __specs); +} + +/// Writes additional zero's for the precision before the exponent. +/// This is used when the precision requested in the format string is larger +/// than the maximum precision of the floating-point type. These precision +/// digits are always 0. +/// +/// \param __exponent The location of the exponent character. +/// \param __num_trailing_zeros The number of 0's to write before the exponent +/// character. +template +_LIBCPP_HIDE_FROM_ABI auto __write_using_trailing_zeros( + const _CharT* __first, + const _CharT* __last, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_ParserCharT> __specs, + size_t __size, + const _CharT* __exponent, + size_t __num_trailing_zeros) -> decltype(__out_it) { + _LIBCPP_ASSERT_INTERNAL(__first <= __last, "Not a valid range"); + _LIBCPP_ASSERT_INTERNAL(__num_trailing_zeros > 0, "The overload not writing trailing zeros should have been used"); + + __padding_size_result __padding = + __formatter::__padding_size(__size + __num_trailing_zeros, __specs.__width_, __specs.__alignment_); + __out_it = __formatter::__fill(std::move(__out_it), __padding.__before_, __specs.__fill_); + __out_it = __formatter::__copy(__first, __exponent, std::move(__out_it)); + __out_it = __formatter::__fill(std::move(__out_it), __num_trailing_zeros, _CharT('0')); + __out_it = __formatter::__copy(__exponent, __last, std::move(__out_it)); + return __formatter::__fill(std::move(__out_it), __padding.__after_, __specs.__fill_); } -template -_LIBCPP_HIDE_FROM_ABI auto -__format_floating_point(_Tp __value, auto& __ctx, __format_spec::__parsed_specifications<_CharT> __specs) - -> decltype(__ctx.out()) { - bool __negative = _VSTD::signbit(__value); +template +_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator +__format_floating_point(_Tp __value, _FormatContext& __ctx, __format_spec::__parsed_specifications<_CharT> __specs) { + bool __negative = std::signbit(__value); - if (!_VSTD::isfinite(__value)) [[unlikely]] - return __formatter::__format_floating_point_non_finite(__ctx.out(), __specs, __negative, _VSTD::isnan(__value)); + if (!std::isfinite(__value)) [[unlikely]] + return __formatter::__format_floating_point_non_finite(__ctx.out(), __specs, __negative, std::isnan(__value)); // Depending on the std-format-spec string the sign and the value // might not be outputted together: @@ -635,7 +665,7 @@ __format_floating_point(_Tp __value, auto& __ctx, __format_spec::__parsed_specif // When there is an exponent the point needs to be moved before the // exponent. When there's no exponent the rotate does nothing. Since // rotate tests whether the operation is a nop, call it unconditionally. - _VSTD::rotate(__result.__exponent, __result.__last - 1, __result.__last); + std::rotate(__result.__exponent, __result.__last - 1, __result.__last); __result.__radix_point = __result.__exponent; // The radix point is always placed before the exponent. @@ -660,7 +690,7 @@ __format_floating_point(_Tp __value, auto& __ctx, __format_spec::__parsed_specif // Let P equal the precision if nonzero, 6 if the precision is not // specified, or 1 if the precision is 0. Then, if a conversion with // style E would have an exponent of X: - int __p = _VSTD::max(1, (__specs.__has_precision() ? __specs.__precision_ : 6)); + int __p = std::max(1, (__specs.__has_precision() ? __specs.__precision_ : 6)); if (__result.__exponent == __result.__last) // if P > X >= -4, the conversion is with style f or F and precision P - 1 - X. // By including the radix point it calculates P - (1 + X) @@ -706,15 +736,15 @@ __format_floating_point(_Tp __value, auto& __ctx, __format_spec::__parsed_specif *__out_it++ = *__first++; // After the sign is written, zero padding is the same a right alignment // with '0'. - __specs.__alignment_ = __format_spec::__alignment::__right; - __specs.__fill_ = _CharT('0'); + __specs.__alignment_ = __format_spec::__alignment::__right; + __specs.__fill_.__data[0] = _CharT('0'); } if (__num_trailing_zeros) return __formatter::__write_using_trailing_zeros( - __first, __result.__last, _VSTD::move(__out_it), __specs, __size, __result.__exponent, __num_trailing_zeros); + __first, __result.__last, std::move(__out_it), __specs, __size, __result.__exponent, __num_trailing_zeros); - return __formatter::__write(__first, __result.__last, _VSTD::move(__out_it), __specs, __size); + return __formatter::__write(__first, __result.__last, std::move(__out_it), __specs, __size); } } // namespace __formatter @@ -722,15 +752,15 @@ __format_floating_point(_Tp __value, auto& __ctx, __format_spec::__parsed_specif template <__fmt_char_type _CharT> struct _LIBCPP_TEMPLATE_VIS __formatter_floating_point { public: - _LIBCPP_HIDE_FROM_ABI constexpr auto - parse(basic_format_parse_context<_CharT>& __parse_ctx) -> decltype(__parse_ctx.begin()) { - auto __result = __parser_.__parse(__parse_ctx, __format_spec::__fields_floating_point); - __format_spec::__process_parsed_floating_point(__parser_); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_floating_point); + __format_spec::__process_parsed_floating_point(__parser_, "a floating-point"); return __result; } - template - _LIBCPP_HIDE_FROM_ABI auto format(_Tp __value, auto& __ctx) const -> decltype(__ctx.out()) { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_Tp __value, _FormatContext& __ctx) const { return __formatter::__format_floating_point(__value, __ctx, __parser_.__get_parsed_std_specifications(__ctx)); } @@ -738,16 +768,13 @@ struct _LIBCPP_TEMPLATE_VIS __formatter_floating_point { }; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_floating_point<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_floating_point<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_floating_point<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_floating_point<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_floating_point<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_floating_point<_CharT> {}; -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/formatter_integer.h b/include/c++/v1/__format/formatter_integer.h index b4be9f9a..41400f00 100644 --- a/include/c++/v1/__format/formatter_integer.h +++ b/include/c++/v1/__format/formatter_integer.h @@ -10,7 +10,6 @@ #ifndef _LIBCPP___FORMAT_FORMATTER_INTEGER_H #define _LIBCPP___FORMAT_FORMATTER_INTEGER_H -#include <__availability> #include <__concepts/arithmetic.h> #include <__config> #include <__format/concepts.h> @@ -19,37 +18,36 @@ #include <__format/formatter_integral.h> #include <__format/formatter_output.h> #include <__format/parser_std_format_spec.h> +#include <__type_traits/is_void.h> #include <__type_traits/make_32_64_or_128_bit.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif - _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 - - template <__fmt_char_type _CharT> - struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_integer { +#if _LIBCPP_STD_VER >= 20 +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS __formatter_integer { public: - _LIBCPP_HIDE_FROM_ABI constexpr auto - parse(basic_format_parse_context<_CharT>& __parse_ctx) -> decltype(__parse_ctx.begin()) { - auto __result = __parser_.__parse(__parse_ctx, __format_spec::__fields_integral); - __format_spec::__process_parsed_integer(__parser_); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_integral); + __format_spec::__process_parsed_integer(__parser_, "an integer"); return __result; } - template - _LIBCPP_HIDE_FROM_ABI auto format(_Tp __value, auto& __ctx) const -> decltype(__ctx.out()) { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_Tp __value, _FormatContext& __ctx) const { __format_spec::__parsed_specifications<_CharT> __specs = __parser_.__get_parsed_std_specifications(__ctx); if (__specs.__std_.__type_ == __format_spec::__type::__char) return __formatter::__format_char(__value, __ctx.out(), __specs); using _Type = __make_32_64_or_128_bit_t<_Tp>; - static_assert(!is_same<_Type, void>::value, "unsupported integral type used in __formatter_integer::__format"); + static_assert(!is_void<_Type>::value, "unsupported integral type used in __formatter_integer::__format"); // Reduce the number of instantiation of the integer formatter return __formatter::__format_integer(static_cast<_Type>(__value), __ctx, __specs); @@ -60,47 +58,37 @@ // Signed integral types. template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter : public __formatter_integer<_CharT> { -}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; # ifndef _LIBCPP_HAS_NO_INT128 template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter<__int128_t, _CharT> - : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter<__int128_t, _CharT> : public __formatter_integer<_CharT> {}; # endif // Unsigned integral types. template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; # ifndef _LIBCPP_HAS_NO_INT128 template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter<__uint128_t, _CharT> - : public __formatter_integer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter<__uint128_t, _CharT> : public __formatter_integer<_CharT> {}; # endif -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/formatter_integral.h b/include/c++/v1/__format/formatter_integral.h index fe3a0631..eca966f8 100644 --- a/include/c++/v1/__format/formatter_integral.h +++ b/include/c++/v1/__format/formatter_integral.h @@ -10,6 +10,9 @@ #ifndef _LIBCPP___FORMAT_FORMATTER_INTEGRAL_H #define _LIBCPP___FORMAT_FORMATTER_INTEGRAL_H +#include <__charconv/to_chars_integral.h> +#include <__charconv/to_chars_result.h> +#include <__charconv/traits.h> #include <__concepts/arithmetic.h> #include <__concepts/same_as.h> #include <__config> @@ -17,14 +20,19 @@ #include <__format/format_error.h> #include <__format/formatter_output.h> #include <__format/parser_std_format_spec.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__memory/pointer_traits.h> +#include <__system_error/errc.h> +#include <__type_traits/make_unsigned.h> #include <__utility/unreachable.h> #include -#include #include #include +#include #ifndef _LIBCPP_HAS_NO_LOCALIZATION -# include +# include <__locale> #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -36,7 +44,7 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __formatter { @@ -44,7 +52,9 @@ namespace __formatter { // Generic // -_LIBCPP_HIDE_FROM_ABI inline char* __insert_sign(char* __buf, bool __negative, __format_spec::__sign __sign) { +template + requires same_as> +_LIBCPP_HIDE_FROM_ABI inline _Iterator __insert_sign(_Iterator __buf, bool __negative, __format_spec::__sign __sign) { if (__negative) *__buf++ = '-'; else @@ -80,9 +90,8 @@ _LIBCPP_HIDE_FROM_ABI inline char* __insert_sign(char* __buf, bool __negative, _ * regardless whether the @c std::numpunct's type is @c char or @c wchar_t. */ _LIBCPP_HIDE_FROM_ABI inline string __determine_grouping(ptrdiff_t __size, const string& __grouping) { - _LIBCPP_ASSERT(!__grouping.empty() && __size > __grouping[0], - "The slow grouping formatting is used while there will be no " - "separators written"); + _LIBCPP_ASSERT_INTERNAL(!__grouping.empty() && __size > __grouping[0], + "The slow grouping formatting is used while there will be no separators written"); string __r; auto __end = __grouping.end() - 1; auto __ptr = __grouping.begin(); @@ -114,10 +123,10 @@ _LIBCPP_HIDE_FROM_ABI inline string __determine_grouping(ptrdiff_t __size, const // template <__fmt_char_type _CharT> -_LIBCPP_HIDE_FROM_ABI auto __format_char( - integral auto __value, - output_iterator auto __out_it, - __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { +_LIBCPP_HIDE_FROM_ABI auto +__format_char(integral auto __value, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { using _Tp = decltype(__value); if constexpr (!same_as<_CharT, _Tp>) { // cmp_less and cmp_greater can't be used for character types. @@ -136,21 +145,23 @@ _LIBCPP_HIDE_FROM_ABI auto __format_char( } const auto __c = static_cast<_CharT>(__value); - return __formatter::__write(_VSTD::addressof(__c), _VSTD::addressof(__c) + 1, _VSTD::move(__out_it), __specs); + return __formatter::__write(std::addressof(__c), std::addressof(__c) + 1, std::move(__out_it), __specs); } // // Integer // -/** Wrapper around @ref to_chars, returning the output pointer. */ -template -_LIBCPP_HIDE_FROM_ABI char* __to_buffer(char* __first, char* __last, _Tp __value, int __base) { +/** Wrapper around @ref to_chars, returning the output iterator. */ +template + requires same_as> +_LIBCPP_HIDE_FROM_ABI _Iterator __to_buffer(_Iterator __first, _Iterator __last, _Tp __value, int __base) { // TODO FMT Evaluate code overhead due to not calling the internal function // directly. (Should be zero overhead.) - to_chars_result __r = _VSTD::to_chars(__first, __last, __value, __base); - _LIBCPP_ASSERT(__r.ec == errc(0), "Internal buffer too small"); - return __r.ptr; + to_chars_result __r = std::to_chars(std::to_address(__first), std::to_address(__last), __value, __base); + _LIBCPP_ASSERT_INTERNAL(__r.ec == errc(0), "Internal buffer too small"); + auto __diff = __r.ptr - std::to_address(__first); + return __first + __diff; } /** @@ -198,22 +209,93 @@ consteval size_t __buffer_size() noexcept + 1; // Reserve space for the sign. } -template -_LIBCPP_HIDE_FROM_ABI auto __format_integer( +template + requires same_as> +_LIBCPP_HIDE_FROM_ABI _OutIt __write_using_decimal_separators( + _OutIt __out_it, + _Iterator __begin, + _Iterator __first, + _Iterator __last, + string&& __grouping, + _CharT __sep, + __format_spec::__parsed_specifications<_CharT> __specs) { + int __size = (__first - __begin) + // [sign][prefix] + (__last - __first) + // data + (__grouping.size() - 1); // number of separator characters + + __padding_size_result __padding = {0, 0}; + if (__specs.__alignment_ == __format_spec::__alignment::__zero_padding) { + // Write [sign][prefix]. + __out_it = __formatter::__copy(__begin, __first, std::move(__out_it)); + + if (__specs.__width_ > __size) { + // Write zero padding. + __padding.__before_ = __specs.__width_ - __size; + __out_it = __formatter::__fill(std::move(__out_it), __specs.__width_ - __size, _CharT('0')); + } + } else { + if (__specs.__width_ > __size) { + // Determine padding and write padding. + __padding = __formatter::__padding_size(__size, __specs.__width_, __specs.__alignment_); + + __out_it = __formatter::__fill(std::move(__out_it), __padding.__before_, __specs.__fill_); + } + // Write [sign][prefix]. + __out_it = __formatter::__copy(__begin, __first, std::move(__out_it)); + } + + auto __r = __grouping.rbegin(); + auto __e = __grouping.rend() - 1; + _LIBCPP_ASSERT_INTERNAL( + __r != __e, "The slow grouping formatting is used while there will be no separators written."); + // The output is divided in small groups of numbers to write: + // - A group before the first separator. + // - A separator and a group, repeated for the number of separators. + // - A group after the last separator. + // This loop achieves that process by testing the termination condition + // midway in the loop. + // + // TODO FMT This loop evaluates the loop invariant `__parser.__type != + // _Flags::_Type::__hexadecimal_upper_case` for every iteration. (This test + // happens in the __write call.) Benchmark whether making two loops and + // hoisting the invariant is worth the effort. + while (true) { + if (__specs.__std_.__type_ == __format_spec::__type::__hexadecimal_upper_case) { + __last = __first + *__r; + __out_it = __formatter::__transform(__first, __last, std::move(__out_it), __hex_to_upper); + __first = __last; + } else { + __out_it = __formatter::__copy(__first, *__r, std::move(__out_it)); + __first += *__r; + } + + if (__r == __e) + break; + + ++__r; + *__out_it++ = __sep; + } + + return __formatter::__fill(std::move(__out_it), __padding.__after_, __specs.__fill_); +} + +template + requires same_as> +_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator __format_integer( _Tp __value, - auto& __ctx, + _FormatContext& __ctx, __format_spec::__parsed_specifications<_CharT> __specs, bool __negative, - char* __begin, - char* __end, + _Iterator __begin, + _Iterator __end, const char* __prefix, - int __base) -> decltype(__ctx.out()) { - char* __first = __formatter::__insert_sign(__begin, __negative, __specs.__std_.__sign_); + int __base) { + _Iterator __first = __formatter::__insert_sign(__begin, __negative, __specs.__std_.__sign_); if (__specs.__std_.__alternate_form_ && __prefix) while (*__prefix) *__first++ = *__prefix++; - char* __last = __formatter::__to_buffer(__first, __end, __value, __base); + _Iterator __last = __formatter::__to_buffer(__first, __end, __value, __base); # ifndef _LIBCPP_HAS_NO_LOCALIZATION if (__specs.__std_.__locale_specific_form_) { @@ -244,12 +326,12 @@ _LIBCPP_HIDE_FROM_ABI auto __format_integer( // The zero padding is done like: // - Write [sign][prefix] // - Write data right aligned with '0' as fill character. - __out_it = __formatter::__copy(__begin, __first, _VSTD::move(__out_it)); - __specs.__alignment_ = __format_spec::__alignment::__right; - __specs.__fill_ = _CharT('0'); - int32_t __size = __first - __begin; + __out_it = __formatter::__copy(__begin, __first, std::move(__out_it)); + __specs.__alignment_ = __format_spec::__alignment::__right; + __specs.__fill_.__data[0] = _CharT('0'); + int32_t __size = __first - __begin; - __specs.__width_ -= _VSTD::min(__size, __specs.__width_); + __specs.__width_ -= std::min(__size, __specs.__width_); } if (__specs.__std_.__type_ != __format_spec::__type::__hexadecimal_upper_case) [[likely]] @@ -258,10 +340,12 @@ _LIBCPP_HIDE_FROM_ABI auto __format_integer( return __formatter::__write_transformed(__first, __last, __ctx.out(), __specs, __formatter::__hex_to_upper); } -template -_LIBCPP_HIDE_FROM_ABI auto __format_integer( - _Tp __value, auto& __ctx, __format_spec::__parsed_specifications<_CharT> __specs, bool __negative = false) - -> decltype(__ctx.out()) { +template +_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator +__format_integer(_Tp __value, + _FormatContext& __ctx, + __format_spec::__parsed_specifications<_CharT> __specs, + bool __negative = false) { switch (__specs.__std_.__type_) { case __format_spec::__type::__binary_lower_case: { array()> __array; @@ -292,15 +376,14 @@ _LIBCPP_HIDE_FROM_ABI auto __format_integer( return __formatter::__format_integer(__value, __ctx, __specs, __negative, __array.begin(), __array.end(), "0X", 16); } default: - _LIBCPP_ASSERT(false, "The parse function should have validated the type"); + _LIBCPP_ASSERT_INTERNAL(false, "The parse function should have validated the type"); __libcpp_unreachable(); } } -template -_LIBCPP_HIDE_FROM_ABI auto -__format_integer(_Tp __value, auto& __ctx, __format_spec::__parsed_specifications<_CharT> __specs) - -> decltype(__ctx.out()) { +template +_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator +__format_integer(_Tp __value, _FormatContext& __ctx, __format_spec::__parsed_specifications<_CharT> __specs) { // Depending on the std-format-spec string the sign and the value // might not be outputted together: // - alternate form may insert a prefix string. @@ -336,10 +419,9 @@ struct _LIBCPP_TEMPLATE_VIS __bool_strings { }; # endif -template -_LIBCPP_HIDE_FROM_ABI auto -__format_bool(bool __value, auto& __ctx, __format_spec::__parsed_specifications<_CharT> __specs) - -> decltype(__ctx.out()) { +template +_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator +__format_bool(bool __value, _FormatContext& __ctx, __format_spec::__parsed_specifications<_CharT> __specs) { # ifndef _LIBCPP_HAS_NO_LOCALIZATION if (__specs.__std_.__locale_specific_form_) { const auto& __np = std::use_facet>(__ctx.locale()); @@ -354,7 +436,7 @@ __format_bool(bool __value, auto& __ctx, __format_spec::__parsed_specifications< } // namespace __formatter -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/formatter_output.h b/include/c++/v1/__format/formatter_output.h index 46769255..1498f64c 100644 --- a/include/c++/v1/__format/formatter_output.h +++ b/include/c++/v1/__format/formatter_output.h @@ -13,31 +13,34 @@ #include <__algorithm/ranges_copy.h> #include <__algorithm/ranges_fill_n.h> #include <__algorithm/ranges_transform.h> -#include <__chrono/statically_widen.h> +#include <__bit/countl.h> #include <__concepts/same_as.h> #include <__config> #include <__format/buffer.h> #include <__format/concepts.h> -#include <__format/escaped_output_table.h> #include <__format/formatter.h> #include <__format/parser_std_format_spec.h> #include <__format/unicode.h> #include <__iterator/back_insert_iterator.h> -#include <__type_traits/make_unsigned.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__memory/addressof.h> +#include <__memory/pointer_traits.h> #include <__utility/move.h> #include <__utility/unreachable.h> -#include #include -#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __formatter { @@ -59,15 +62,15 @@ _LIBCPP_HIDE_FROM_ABI constexpr char __hex_to_upper(char __c) { return __c; } -struct _LIBCPP_TYPE_VIS __padding_size_result { +struct _LIBCPP_EXPORTED_FROM_ABI __padding_size_result { size_t __before_; size_t __after_; }; _LIBCPP_HIDE_FROM_ABI constexpr __padding_size_result __padding_size(size_t __size, size_t __width, __format_spec::__alignment __align) { - _LIBCPP_ASSERT(__width > __size, "don't call this function when no padding is required"); - _LIBCPP_ASSERT( + _LIBCPP_ASSERT_INTERNAL(__width > __size, "don't call this function when no padding is required"); + _LIBCPP_ASSERT_INTERNAL( __align != __format_spec::__alignment::__zero_padding, "the caller should have handled the zero-padding"); size_t __fill = __width - __size; @@ -97,51 +100,55 @@ __padding_size(size_t __size, size_t __width, __format_spec::__alignment __align /// /// This uses a "mass output function" of __format::__output_buffer when possible. template <__fmt_char_type _CharT, __fmt_char_type _OutCharT = _CharT> -_LIBCPP_HIDE_FROM_ABI auto __copy(basic_string_view<_CharT> __str, output_iterator auto __out_it) - -> decltype(__out_it) { - if constexpr (_VSTD::same_as>>) { +_LIBCPP_HIDE_FROM_ABI auto +__copy(basic_string_view<_CharT> __str, output_iterator auto __out_it) -> decltype(__out_it) { + if constexpr (std::same_as>>) { __out_it.__get_container()->__copy(__str); return __out_it; - } else if constexpr (_VSTD::same_as::__iterator>) { + } else if constexpr (std::same_as::__iterator>) { __out_it.__buffer_->__copy(__str); return __out_it; } else { - return std::ranges::copy(__str, _VSTD::move(__out_it)).out; + return std::ranges::copy(__str, std::move(__out_it)).out; } } -template <__fmt_char_type _CharT, __fmt_char_type _OutCharT = _CharT> +template ::value_type, + __fmt_char_type _OutCharT = _CharT> _LIBCPP_HIDE_FROM_ABI auto -__copy(const _CharT* __first, const _CharT* __last, output_iterator auto __out_it) - -> decltype(__out_it) { - return __formatter::__copy(basic_string_view{__first, __last}, _VSTD::move(__out_it)); +__copy(_Iterator __first, _Iterator __last, output_iterator auto __out_it) -> decltype(__out_it) { + return __formatter::__copy(basic_string_view{__first, __last}, std::move(__out_it)); } -template <__fmt_char_type _CharT, __fmt_char_type _OutCharT = _CharT> -_LIBCPP_HIDE_FROM_ABI auto __copy(const _CharT* __first, size_t __n, output_iterator auto __out_it) - -> decltype(__out_it) { - return __formatter::__copy(basic_string_view{__first, __n}, _VSTD::move(__out_it)); +template ::value_type, + __fmt_char_type _OutCharT = _CharT> +_LIBCPP_HIDE_FROM_ABI auto +__copy(_Iterator __first, size_t __n, output_iterator auto __out_it) -> decltype(__out_it) { + return __formatter::__copy(basic_string_view{std::to_address(__first), __n}, std::move(__out_it)); } /// Transform wrapper. /// /// This uses a "mass output function" of __format::__output_buffer when possible. -template <__fmt_char_type _CharT, __fmt_char_type _OutCharT = _CharT, class _UnaryOperation> +template ::value_type, + __fmt_char_type _OutCharT = _CharT, + class _UnaryOperation> _LIBCPP_HIDE_FROM_ABI auto -__transform(const _CharT* __first, - const _CharT* __last, +__transform(_Iterator __first, + _Iterator __last, output_iterator auto __out_it, _UnaryOperation __operation) -> decltype(__out_it) { - if constexpr (_VSTD::same_as>>) { - __out_it.__get_container()->__transform(__first, __last, _VSTD::move(__operation)); + if constexpr (std::same_as>>) { + __out_it.__get_container()->__transform(__first, __last, std::move(__operation)); return __out_it; - } else if constexpr (_VSTD::same_as::__iterator>) { - __out_it.__buffer_->__transform(__first, __last, _VSTD::move(__operation)); + } else if constexpr (std::same_as::__iterator>) { + __out_it.__buffer_->__transform(__first, __last, std::move(__operation)); return __out_it; } else { - return std::ranges::transform(__first, __last, _VSTD::move(__out_it), __operation).out; + return std::ranges::transform(__first, __last, std::move(__out_it), __operation).out; } } @@ -150,80 +157,56 @@ __transform(const _CharT* __first, /// This uses a "mass output function" of __format::__output_buffer when possible. template <__fmt_char_type _CharT, output_iterator _OutIt> _LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, _CharT __value) { - if constexpr (_VSTD::same_as>>) { + if constexpr (std::same_as>>) { __out_it.__get_container()->__fill(__n, __value); return __out_it; - } else if constexpr (_VSTD::same_as::__iterator>) { + } else if constexpr (std::same_as::__iterator>) { __out_it.__buffer_->__fill(__n, __value); return __out_it; } else { - return std::ranges::fill_n(_VSTD::move(__out_it), __n, __value); + return std::ranges::fill_n(std::move(__out_it), __n, __value); } } -template -_LIBCPP_HIDE_FROM_ABI _OutIt __write_using_decimal_separators(_OutIt __out_it, const char* __begin, const char* __first, - const char* __last, string&& __grouping, _CharT __sep, - __format_spec::__parsed_specifications<_CharT> __specs) { - int __size = (__first - __begin) + // [sign][prefix] - (__last - __first) + // data - (__grouping.size() - 1); // number of separator characters - - __padding_size_result __padding = {0, 0}; - if (__specs.__alignment_ == __format_spec::__alignment::__zero_padding) { - // Write [sign][prefix]. - __out_it = __formatter::__copy(__begin, __first, _VSTD::move(__out_it)); - - if (__specs.__width_ > __size) { - // Write zero padding. - __padding.__before_ = __specs.__width_ - __size; - __out_it = __formatter::__fill(_VSTD::move(__out_it), __specs.__width_ - __size, _CharT('0')); - } - } else { - if (__specs.__width_ > __size) { - // Determine padding and write padding. - __padding = __formatter::__padding_size(__size, __specs.__width_, __specs.__alignment_); - - __out_it = __formatter::__fill(_VSTD::move(__out_it), __padding.__before_, __specs.__fill_); - } - // Write [sign][prefix]. - __out_it = __formatter::__copy(__begin, __first, _VSTD::move(__out_it)); - } +# ifndef _LIBCPP_HAS_NO_UNICODE +template <__fmt_char_type _CharT, output_iterator _OutIt> + requires(same_as<_CharT, char>) +_LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, __format_spec::__code_point<_CharT> __value) { + std::size_t __bytes = std::countl_one(static_cast(__value.__data[0])); + if (__bytes == 0) + return __formatter::__fill(std::move(__out_it), __n, __value.__data[0]); + + for (size_t __i = 0; __i < __n; ++__i) + __out_it = __formatter::__copy( + std::addressof(__value.__data[0]), std::addressof(__value.__data[0]) + __bytes, std::move(__out_it)); + return __out_it; +} - auto __r = __grouping.rbegin(); - auto __e = __grouping.rend() - 1; - _LIBCPP_ASSERT(__r != __e, "The slow grouping formatting is used while " - "there will be no separators written."); - // The output is divided in small groups of numbers to write: - // - A group before the first separator. - // - A separator and a group, repeated for the number of separators. - // - A group after the last separator. - // This loop achieves that process by testing the termination condition - // midway in the loop. - // - // TODO FMT This loop evaluates the loop invariant `__parser.__type != - // _Flags::_Type::__hexadecimal_upper_case` for every iteration. (This test - // happens in the __write call.) Benchmark whether making two loops and - // hoisting the invariant is worth the effort. - while (true) { - if (__specs.__std_.__type_ == __format_spec::__type::__hexadecimal_upper_case) { - __last = __first + *__r; - __out_it = __formatter::__transform(__first, __last, _VSTD::move(__out_it), __hex_to_upper); - __first = __last; - } else { - __out_it = __formatter::__copy(__first, *__r, _VSTD::move(__out_it)); - __first += *__r; - } - - if (__r == __e) - break; - - ++__r; - *__out_it++ = __sep; - } +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template <__fmt_char_type _CharT, output_iterator _OutIt> + requires(same_as<_CharT, wchar_t> && sizeof(wchar_t) == 2) +_LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, __format_spec::__code_point<_CharT> __value) { + if (!__unicode::__is_high_surrogate(__value.__data[0])) + return __formatter::__fill(std::move(__out_it), __n, __value.__data[0]); + + for (size_t __i = 0; __i < __n; ++__i) + __out_it = __formatter::__copy( + std::addressof(__value.__data[0]), std::addressof(__value.__data[0]) + 2, std::move(__out_it)); + return __out_it; +} - return __formatter::__fill(_VSTD::move(__out_it), __padding.__after_, __specs.__fill_); +template <__fmt_char_type _CharT, output_iterator _OutIt> + requires(same_as<_CharT, wchar_t> && sizeof(wchar_t) == 4) +_LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, __format_spec::__code_point<_CharT> __value) { + return __formatter::__fill(std::move(__out_it), __n, __value.__data[0]); } +# endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS +# else // _LIBCPP_HAS_NO_UNICODE +template <__fmt_char_type _CharT, output_iterator _OutIt> +_LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, __format_spec::__code_point<_CharT> __value) { + return __formatter::__fill(std::move(__out_it), __n, __value.__data[0]); +} +# endif // _LIBCPP_HAS_NO_UNICODE /// Writes the input to the output with the required padding. /// @@ -253,82 +236,58 @@ __write(basic_string_view<_CharT> __str, __format_spec::__parsed_specifications<_ParserCharT> __specs, ptrdiff_t __size) -> decltype(__out_it) { if (__size >= __specs.__width_) - return __formatter::__copy(__str, _VSTD::move(__out_it)); + return __formatter::__copy(__str, std::move(__out_it)); __padding_size_result __padding = __formatter::__padding_size(__size, __specs.__width_, __specs.__std_.__alignment_); - __out_it = __formatter::__fill(_VSTD::move(__out_it), __padding.__before_, __specs.__fill_); - __out_it = __formatter::__copy(__str, _VSTD::move(__out_it)); - return __formatter::__fill(_VSTD::move(__out_it), __padding.__after_, __specs.__fill_); + __out_it = __formatter::__fill(std::move(__out_it), __padding.__before_, __specs.__fill_); + __out_it = __formatter::__copy(__str, std::move(__out_it)); + return __formatter::__fill(std::move(__out_it), __padding.__after_, __specs.__fill_); } -template +template _LIBCPP_HIDE_FROM_ABI auto -__write(const _CharT* __first, - const _CharT* __last, - output_iterator auto __out_it, +__write(_Iterator __first, + _Iterator __last, + output_iterator&> auto __out_it, __format_spec::__parsed_specifications<_ParserCharT> __specs, ptrdiff_t __size) -> decltype(__out_it) { - _LIBCPP_ASSERT(__first <= __last, "Not a valid range"); - return __formatter::__write(basic_string_view{__first, __last}, _VSTD::move(__out_it), __specs, __size); + _LIBCPP_ASSERT_VALID_INPUT_RANGE(__first <= __last, "Not a valid range"); + return __formatter::__write(basic_string_view{__first, __last}, std::move(__out_it), __specs, __size); } /// \overload /// /// Calls the function above where \a __size = \a __last - \a __first. -template +template _LIBCPP_HIDE_FROM_ABI auto -__write(const _CharT* __first, - const _CharT* __last, - output_iterator auto __out_it, +__write(_Iterator __first, + _Iterator __last, + output_iterator&> auto __out_it, __format_spec::__parsed_specifications<_ParserCharT> __specs) -> decltype(__out_it) { - _LIBCPP_ASSERT(__first <= __last, "Not a valid range"); - return __formatter::__write(__first, __last, _VSTD::move(__out_it), __specs, __last - __first); + _LIBCPP_ASSERT_VALID_INPUT_RANGE(__first <= __last, "Not a valid range"); + return __formatter::__write(__first, __last, std::move(__out_it), __specs, __last - __first); } -template -_LIBCPP_HIDE_FROM_ABI auto __write_transformed(const _CharT* __first, const _CharT* __last, - output_iterator auto __out_it, - __format_spec::__parsed_specifications<_ParserCharT> __specs, - _UnaryOperation __op) -> decltype(__out_it) { - _LIBCPP_ASSERT(__first <= __last, "Not a valid range"); +template ::value_type, + class _ParserCharT, + class _UnaryOperation> +_LIBCPP_HIDE_FROM_ABI auto __write_transformed( + _Iterator __first, + _Iterator __last, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_ParserCharT> __specs, + _UnaryOperation __op) -> decltype(__out_it) { + _LIBCPP_ASSERT_VALID_INPUT_RANGE(__first <= __last, "Not a valid range"); ptrdiff_t __size = __last - __first; if (__size >= __specs.__width_) - return __formatter::__transform(__first, __last, _VSTD::move(__out_it), __op); + return __formatter::__transform(__first, __last, std::move(__out_it), __op); __padding_size_result __padding = __formatter::__padding_size(__size, __specs.__width_, __specs.__alignment_); - __out_it = __formatter::__fill(_VSTD::move(__out_it), __padding.__before_, __specs.__fill_); - __out_it = __formatter::__transform(__first, __last, _VSTD::move(__out_it), __op); - return __formatter::__fill(_VSTD::move(__out_it), __padding.__after_, __specs.__fill_); -} - -/// Writes additional zero's for the precision before the exponent. -/// This is used when the precision requested in the format string is larger -/// than the maximum precision of the floating-point type. These precision -/// digits are always 0. -/// -/// \param __exponent The location of the exponent character. -/// \param __num_trailing_zeros The number of 0's to write before the exponent -/// character. -template -_LIBCPP_HIDE_FROM_ABI auto __write_using_trailing_zeros( - const _CharT* __first, - const _CharT* __last, - output_iterator auto __out_it, - __format_spec::__parsed_specifications<_ParserCharT> __specs, - size_t __size, - const _CharT* __exponent, - size_t __num_trailing_zeros) -> decltype(__out_it) { - _LIBCPP_ASSERT(__first <= __last, "Not a valid range"); - _LIBCPP_ASSERT(__num_trailing_zeros > 0, "The overload not writing trailing zeros should have been used"); - - __padding_size_result __padding = - __formatter::__padding_size(__size + __num_trailing_zeros, __specs.__width_, __specs.__alignment_); - __out_it = __formatter::__fill(_VSTD::move(__out_it), __padding.__before_, __specs.__fill_); - __out_it = __formatter::__copy(__first, __exponent, _VSTD::move(__out_it)); - __out_it = __formatter::__fill(_VSTD::move(__out_it), __num_trailing_zeros, _CharT('0')); - __out_it = __formatter::__copy(__exponent, __last, _VSTD::move(__out_it)); - return __formatter::__fill(_VSTD::move(__out_it), __padding.__after_, __specs.__fill_); + __out_it = __formatter::__fill(std::move(__out_it), __padding.__before_, __specs.__fill_); + __out_it = __formatter::__transform(__first, __last, std::move(__out_it), __op); + return __formatter::__fill(std::move(__out_it), __padding.__after_, __specs.__fill_); } /// Writes a string using format's width estimation algorithm. @@ -342,11 +301,11 @@ _LIBCPP_HIDE_FROM_ABI auto __write_string_no_precision( basic_string_view<_CharT> __str, output_iterator auto __out_it, __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { - _LIBCPP_ASSERT(!__specs.__has_precision(), "use __write_string"); + _LIBCPP_ASSERT_INTERNAL(!__specs.__has_precision(), "use __write_string"); // No padding -> copy the string if (!__specs.__has_width()) - return __formatter::__copy(__str, _VSTD::move(__out_it)); + return __formatter::__copy(__str, std::move(__out_it)); // Note when the estimated width is larger than size there's no padding. So // there's no reason to get the real size when the estimate is larger than or @@ -354,217 +313,23 @@ _LIBCPP_HIDE_FROM_ABI auto __write_string_no_precision( size_t __size = __format_spec::__estimate_column_width(__str, __specs.__width_, __format_spec::__column_width_rounding::__up) .__width_; - return __formatter::__write(__str, _VSTD::move(__out_it), __specs, __size); + return __formatter::__write(__str, std::move(__out_it), __specs, __size); } template _LIBCPP_HIDE_FROM_ABI int __truncate(basic_string_view<_CharT>& __str, int __precision) { - __format_spec::__column_width_result<_CharT> __result = + __format_spec::__column_width_result __result = __format_spec::__estimate_column_width(__str, __precision, __format_spec::__column_width_rounding::__down); __str = basic_string_view<_CharT>{__str.begin(), __result.__last_}; return __result.__width_; } -/// Writes a string using format's width estimation algorithm. -/// -/// \note When \c _LIBCPP_HAS_NO_UNICODE is defined the function assumes the -/// input is ASCII. -template -_LIBCPP_HIDE_FROM_ABI auto __write_string( - basic_string_view<_CharT> __str, - output_iterator auto __out_it, - __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { - if (!__specs.__has_precision()) - return __formatter::__write_string_no_precision(__str, _VSTD::move(__out_it), __specs); - - int __size = __formatter::__truncate(__str, __specs.__precision_); - - return __formatter::__write(__str.begin(), __str.end(), _VSTD::move(__out_it), __specs, __size); -} - -# if _LIBCPP_STD_VER > 20 - -struct __nul_terminator {}; - -template -_LIBCPP_HIDE_FROM_ABI bool operator==(const _CharT* __cstr, __nul_terminator) { - return *__cstr == _CharT('\0'); -} - -template -_LIBCPP_HIDE_FROM_ABI void -__write_escaped_code_unit(basic_string<_CharT>& __str, char32_t __value, const _CharT* __prefix) { - back_insert_iterator __out_it{__str}; - std::ranges::copy(__prefix, __nul_terminator{}, __out_it); - - char __buffer[8]; - to_chars_result __r = std::to_chars(std::begin(__buffer), std::end(__buffer), __value, 16); - _LIBCPP_ASSERT(__r.ec == errc(0), "Internal buffer too small"); - std::ranges::copy(std::begin(__buffer), __r.ptr, __out_it); - - __str += _CharT('}'); -} - -// [format.string.escaped]/2.2.1.2 -// ... -// then the sequence \u{hex-digit-sequence} is appended to E, where -// hex-digit-sequence is the shortest hexadecimal representation of C using -// lower-case hexadecimal digits. -template -_LIBCPP_HIDE_FROM_ABI void __write_well_formed_escaped_code_unit(basic_string<_CharT>& __str, char32_t __value) { - __formatter::__write_escaped_code_unit(__str, __value, _LIBCPP_STATICALLY_WIDEN(_CharT, "\\u{")); -} - -// [format.string.escaped]/2.2.3 -// Otherwise (X is a sequence of ill-formed code units), each code unit U is -// appended to E in order as the sequence \x{hex-digit-sequence}, where -// hex-digit-sequence is the shortest hexadecimal representation of U using -// lower-case hexadecimal digits. -template -_LIBCPP_HIDE_FROM_ABI void __write_escape_ill_formed_code_unit(basic_string<_CharT>& __str, char32_t __value) { - __formatter::__write_escaped_code_unit(__str, __value, _LIBCPP_STATICALLY_WIDEN(_CharT, "\\x{")); -} - -template -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool __is_escaped_sequence_written(basic_string<_CharT>& __str, char32_t __value) { -# ifdef _LIBCPP_HAS_NO_UNICODE - // For ASCII assume everything above 127 is printable. - if (__value > 127) - return false; -# endif - - if (!__escaped_output_table::__needs_escape(__value)) - return false; - - __formatter::__write_well_formed_escaped_code_unit(__str, __value); - return true; -} - -template -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr char32_t __to_char32(_CharT __value) { - return static_cast>(__value); -} - -enum class _LIBCPP_ENUM_VIS __escape_quotation_mark { __apostrophe, __double_quote }; - -// [format.string.escaped]/2 -template -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool -__is_escaped_sequence_written(basic_string<_CharT>& __str, char32_t __value, __escape_quotation_mark __mark) { - // 2.2.1.1 - Mapped character in [tab:format.escape.sequences] - switch (__value) { - case _CharT('\t'): - __str += _LIBCPP_STATICALLY_WIDEN(_CharT, "\\t"); - return true; - case _CharT('\n'): - __str += _LIBCPP_STATICALLY_WIDEN(_CharT, "\\n"); - return true; - case _CharT('\r'): - __str += _LIBCPP_STATICALLY_WIDEN(_CharT, "\\r"); - return true; - case _CharT('\''): - if (__mark == __escape_quotation_mark::__apostrophe) - __str += _LIBCPP_STATICALLY_WIDEN(_CharT, R"(\')"); - else - __str += __value; - return true; - case _CharT('"'): - if (__mark == __escape_quotation_mark::__double_quote) - __str += _LIBCPP_STATICALLY_WIDEN(_CharT, R"(\")"); - else - __str += __value; - return true; - case _CharT('\\'): - __str += _LIBCPP_STATICALLY_WIDEN(_CharT, R"(\\)"); - return true; - - // 2.2.1.2 - Space - case _CharT(' '): - __str += __value; - return true; - } - - // 2.2.2 - // Otherwise, if X is a shift sequence, the effect on E and further - // decoding of S is unspecified. - // For now shift sequences are ignored and treated as Unicode. Other parts - // of the format library do the same. It's unknown how ostream treats them. - // TODO FMT determine what to do with shift sequences. - - // 2.2.1.2.1 and 2.2.1.2.2 - Escape - return __formatter::__is_escaped_sequence_written(__str, __formatter::__to_char32(__value)); -} - -template -_LIBCPP_HIDE_FROM_ABI void -__escape(basic_string<_CharT>& __str, basic_string_view<_CharT> __values, __escape_quotation_mark __mark) { - __unicode::__code_point_view<_CharT> __view{__values.begin(), __values.end()}; - - while (!__view.__at_end()) { - const _CharT* __first = __view.__position(); - typename __unicode::__consume_p2286_result __result = __view.__consume_p2286(); - if (__result.__ill_formed_size == 0) { - if (!__formatter::__is_escaped_sequence_written(__str, __result.__value, __mark)) - // 2.2.1.3 - Add the character - ranges::copy(__first, __view.__position(), std::back_insert_iterator(__str)); - - } else { - // 2.2.3 sequence of ill-formed code units - // The number of code-units in __result.__value depends on the character type being used. - if constexpr (sizeof(_CharT) == 1) { - _LIBCPP_ASSERT(__result.__ill_formed_size == 1 || __result.__ill_formed_size == 4, - "illegal number of invalid code units."); - if (__result.__ill_formed_size == 1) // ill-formed, one code unit - __formatter::__write_escape_ill_formed_code_unit(__str, __result.__value & 0xff); - else { // out of valid range, four code units - // The code point was properly encoded, decode the value. - __formatter::__write_escape_ill_formed_code_unit(__str, __result.__value >> 18 | 0xf0); - __formatter::__write_escape_ill_formed_code_unit(__str, (__result.__value >> 12 & 0x3f) | 0x80); - __formatter::__write_escape_ill_formed_code_unit(__str, (__result.__value >> 6 & 0x3f) | 0x80); - __formatter::__write_escape_ill_formed_code_unit(__str, (__result.__value & 0x3f) | 0x80); - } - } else if constexpr (sizeof(_CharT) == 2) { - _LIBCPP_ASSERT(__result.__ill_formed_size == 1, "for UTF-16 at most one invalid code unit"); - __formatter::__write_escape_ill_formed_code_unit(__str, __result.__value & 0xffff); - } else { - static_assert(sizeof(_CharT) == 4, "unsupported character width"); - _LIBCPP_ASSERT(__result.__ill_formed_size == 1, "for UTF-32 one code unit is one code point"); - __formatter::__write_escape_ill_formed_code_unit(__str, __result.__value); - } - } - } -} - -template -_LIBCPP_HIDE_FROM_ABI auto -__format_escaped_char(_CharT __value, - output_iterator auto __out_it, - __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { - basic_string<_CharT> __str; - __str += _CharT('\''); - __formatter::__escape(__str, basic_string_view{std::addressof(__value), 1}, __escape_quotation_mark::__apostrophe); - __str += _CharT('\''); - return __formatter::__write(__str.data(), __str.data() + __str.size(), _VSTD::move(__out_it), __specs, __str.size()); -} - -template -_LIBCPP_HIDE_FROM_ABI auto -__format_escaped_string(basic_string_view<_CharT> __values, - output_iterator auto __out_it, - __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { - basic_string<_CharT> __str; - __str += _CharT('"'); - __formatter::__escape(__str, __values, __escape_quotation_mark::__double_quote); - __str += _CharT('"'); - return __formatter::__write_string(basic_string_view{__str}, _VSTD::move(__out_it), __specs); -} - -# endif // _LIBCPP_STD_VER > 20 - } // namespace __formatter -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___FORMAT_FORMATTER_OUTPUT_H diff --git a/include/c++/v1/__format/formatter_pointer.h b/include/c++/v1/__format/formatter_pointer.h index 31b49e17..6941343e 100644 --- a/include/c++/v1/__format/formatter_pointer.h +++ b/include/c++/v1/__format/formatter_pointer.h @@ -10,7 +10,6 @@ #ifndef _LIBCPP___FORMAT_FORMATTER_POINTER_H #define _LIBCPP___FORMAT_FORMATTER_POINTER_H -#include <__availability> #include <__config> #include <__format/concepts.h> #include <__format/format_parse_context.h> @@ -27,24 +26,27 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template <__fmt_char_type _CharT> struct _LIBCPP_TEMPLATE_VIS __formatter_pointer { public: - constexpr __formatter_pointer() { __parser_.__alignment_ = __format_spec::__alignment::__right; } - - _LIBCPP_HIDE_FROM_ABI constexpr auto - parse(basic_format_parse_context<_CharT>& __parse_ctx) -> decltype(__parse_ctx.begin()) { - auto __result = __parser_.__parse(__parse_ctx, __format_spec::__fields_pointer); - __format_spec::__process_display_type_pointer(__parser_.__type_); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_pointer); + __format_spec::__process_display_type_pointer(__parser_.__type_, "a pointer"); return __result; } - _LIBCPP_HIDE_FROM_ABI auto format(const void* __ptr, auto& __ctx) const -> decltype(__ctx.out()) { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(const void* __ptr, _FormatContext& __ctx) const { __format_spec::__parsed_specifications<_CharT> __specs = __parser_.__get_parsed_std_specifications(__ctx); __specs.__std_.__alternate_form_ = true; - __specs.__std_.__type_ = __format_spec::__type::__hexadecimal_lower_case; + __specs.__std_.__type_ = + __specs.__std_.__type_ == __format_spec::__type::__pointer_upper_case + ? __format_spec::__type::__hexadecimal_upper_case + : __format_spec::__type::__hexadecimal_lower_case; + return __formatter::__format_integer(reinterpret_cast(__ptr), __ctx, __specs); } @@ -57,16 +59,13 @@ struct _LIBCPP_TEMPLATE_VIS __formatter_pointer { // - template<> struct formatter; // - template<> struct formatter; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_pointer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_pointer<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter : public __formatter_pointer<_CharT> { -}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_pointer<_CharT> {}; template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_pointer<_CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_pointer<_CharT> {}; -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/formatter_string.h b/include/c++/v1/__format/formatter_string.h index 606fb792..347439fc 100644 --- a/include/c++/v1/__format/formatter_string.h +++ b/include/c++/v1/__format/formatter_string.h @@ -10,14 +10,13 @@ #ifndef _LIBCPP___FORMAT_FORMATTER_STRING_H #define _LIBCPP___FORMAT_FORMATTER_STRING_H -#include <__availability> #include <__config> #include <__format/concepts.h> #include <__format/format_parse_context.h> #include <__format/formatter.h> #include <__format/formatter_output.h> #include <__format/parser_std_format_spec.h> -#include <__utility/move.h> +#include <__format/write_escaped.h> #include #include @@ -27,20 +26,22 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template <__fmt_char_type _CharT> struct _LIBCPP_TEMPLATE_VIS __formatter_string { public: - _LIBCPP_HIDE_FROM_ABI constexpr auto parse(basic_format_parse_context<_CharT>& __parse_ctx) - -> decltype(__parse_ctx.begin()) { - auto __result = __parser_.__parse(__parse_ctx, __format_spec::__fields_string); + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_string); __format_spec::__process_display_type_string(__parser_.__type_); return __result; } - _LIBCPP_HIDE_FROM_ABI auto format(basic_string_view<_CharT> __str, auto& __ctx) const -> decltype(__ctx.out()) { -# if _LIBCPP_STD_VER > 20 + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(basic_string_view<_CharT> __str, _FormatContext& __ctx) const { +# if _LIBCPP_STD_VER >= 23 if (__parser_.__type_ == __format_spec::__type::__debug) return __formatter::__format_escaped_string(__str, __ctx.out(), __parser_.__get_parsed_std_specifications(__ctx)); # endif @@ -48,7 +49,7 @@ struct _LIBCPP_TEMPLATE_VIS __formatter_string { return __formatter::__write_string(__str, __ctx.out(), __parser_.__get_parsed_std_specifications(__ctx)); } -# if _LIBCPP_STD_VER > 20 +# if _LIBCPP_STD_VER >= 23 _LIBCPP_HIDE_FROM_ABI constexpr void set_debug_format() { __parser_.__type_ = __format_spec::__type::__debug; } # endif @@ -57,16 +58,15 @@ struct _LIBCPP_TEMPLATE_VIS __formatter_string { // Formatter const char*. template <__fmt_char_type _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_string<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_string<_CharT> { using _Base = __formatter_string<_CharT>; - _LIBCPP_HIDE_FROM_ABI auto format(const _CharT* __str, auto& __ctx) const -> decltype(__ctx.out()) { - _LIBCPP_ASSERT(__str, "The basic_format_arg constructor should have " - "prevented an invalid pointer."); + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(const _CharT* __str, _FormatContext& __ctx) const { + _LIBCPP_ASSERT_INTERNAL(__str, "The basic_format_arg constructor should have prevented an invalid pointer."); __format_spec::__parsed_specifications<_CharT> __specs = _Base::__parser_.__get_parsed_std_specifications(__ctx); -# if _LIBCPP_STD_VER > 20 +# if _LIBCPP_STD_VER >= 23 if (_Base::__parser_.__type_ == __format_spec::__type::__debug) return __formatter::__format_escaped_string(basic_string_view<_CharT>{__str}, __ctx.out(), __specs); # endif @@ -95,45 +95,36 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter<_CharT*, _CharT> - : public formatter { +struct _LIBCPP_TEMPLATE_VIS formatter<_CharT*, _CharT> : public formatter { using _Base = formatter; - _LIBCPP_HIDE_FROM_ABI auto format(_CharT* __str, auto& __ctx) const -> decltype(__ctx.out()) { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_CharT* __str, _FormatContext& __ctx) const { return _Base::format(__str, __ctx); } }; // Formatter char[]. template <__fmt_char_type _CharT, size_t _Size> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter<_CharT[_Size], _CharT> - : public __formatter_string<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter<_CharT[_Size], _CharT> : public __formatter_string<_CharT> { using _Base = __formatter_string<_CharT>; - _LIBCPP_HIDE_FROM_ABI auto format(_CharT __str[_Size], auto& __ctx) const -> decltype(__ctx.out()) { - return _Base::format(basic_string_view<_CharT>(__str, _Size), __ctx); - } -}; - -// Formatter const char[]. -template <__fmt_char_type _CharT, size_t _Size> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter - : public __formatter_string<_CharT> { - using _Base = __formatter_string<_CharT>; - - _LIBCPP_HIDE_FROM_ABI auto format(const _CharT __str[_Size], auto& __ctx) const -> decltype(__ctx.out()) { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(const _CharT (&__str)[_Size], _FormatContext& __ctx) const { return _Base::format(basic_string_view<_CharT>(__str, _Size), __ctx); } }; // Formatter std::string. template <__fmt_char_type _CharT, class _Traits, class _Allocator> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter, _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_string<_CharT> { using _Base = __formatter_string<_CharT>; - _LIBCPP_HIDE_FROM_ABI auto format(const basic_string<_CharT, _Traits, _Allocator>& __str, auto& __ctx) const - -> decltype(__ctx.out()) { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(const basic_string<_CharT, _Traits, _Allocator>& __str, _FormatContext& __ctx) const { // Drop _Traits and _Allocator to have one std::basic_string formatter. return _Base::format(basic_string_view<_CharT>(__str.data(), __str.size()), __ctx); } @@ -141,18 +132,18 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter, _CharT> - : public __formatter_string<_CharT> { +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_string<_CharT> { using _Base = __formatter_string<_CharT>; - _LIBCPP_HIDE_FROM_ABI auto format(basic_string_view<_CharT, _Traits> __str, auto& __ctx) const - -> decltype(__ctx.out()) { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(basic_string_view<_CharT, _Traits> __str, _FormatContext& __ctx) const { // Drop _Traits to have one std::basic_string_view formatter. return _Base::format(basic_string_view<_CharT>(__str.data(), __str.size()), __ctx); } }; -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/formatter_tuple.h b/include/c++/v1/__format/formatter_tuple.h index 82f5ada6..030097a8 100644 --- a/include/c++/v1/__format/formatter_tuple.h +++ b/include/c++/v1/__format/formatter_tuple.h @@ -11,18 +11,16 @@ #define _LIBCPP___FORMAT_FORMATTER_TUPLE_H #include <__algorithm/ranges_copy.h> -#include <__availability> #include <__chrono/statically_widen.h> #include <__config> +#include <__format/buffer.h> #include <__format/concepts.h> -#include <__format/format_args.h> #include <__format/format_context.h> #include <__format/format_error.h> #include <__format/format_parse_context.h> #include <__format/formatter.h> #include <__format/formatter_output.h> #include <__format/parser_std_format_spec.h> -#include <__iterator/back_insert_iterator.h> #include <__type_traits/remove_cvref.h> #include <__utility/integer_sequence.h> #include <__utility/pair.h> @@ -35,49 +33,52 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 20 +#if _LIBCPP_STD_VER >= 23 template <__fmt_char_type _CharT, class _Tuple, formattable<_CharT>... _Args> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_tuple { - _LIBCPP_HIDE_FROM_ABI constexpr void set_separator(basic_string_view<_CharT> __separator) { +struct _LIBCPP_TEMPLATE_VIS __formatter_tuple { + _LIBCPP_HIDE_FROM_ABI constexpr void set_separator(basic_string_view<_CharT> __separator) noexcept { __separator_ = __separator; } _LIBCPP_HIDE_FROM_ABI constexpr void - set_brackets(basic_string_view<_CharT> __opening_bracket, basic_string_view<_CharT> __closing_bracket) { + set_brackets(basic_string_view<_CharT> __opening_bracket, basic_string_view<_CharT> __closing_bracket) noexcept { __opening_bracket_ = __opening_bracket; __closing_bracket_ = __closing_bracket; } template - _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __parse_ctx) { - const _CharT* __begin = __parser_.__parse(__parse_ctx, __format_spec::__fields_tuple); + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + auto __begin = __parser_.__parse(__ctx, __format_spec::__fields_tuple); - // [format.tuple]/7 - // ... For each element e in underlying_, if e.set_debug_format() - // is a valid expression, calls e.set_debug_format(). - // TODO FMT this can be removed when P2733 is accepted. - std::__for_each_index_sequence(make_index_sequence(), [&] { - std::__set_debug_format(std::get<_Index>(__underlying_)); - }); - - const _CharT* __end = __parse_ctx.end(); - if (__begin == __end) - return __begin; - - if (*__begin == _CharT('m')) { + auto __end = __ctx.end(); + // Note 'n' is part of the type here + if (__parser_.__clear_brackets_) + set_brackets({}, {}); + else if (__begin != __end && *__begin == _CharT('m')) { if constexpr (sizeof...(_Args) == 2) { set_separator(_LIBCPP_STATICALLY_WIDEN(_CharT, ": ")); set_brackets({}, {}); ++__begin; } else - std::__throw_format_error("The format specifier m requires a pair or a two-element tuple"); - } else if (*__begin == _CharT('n')) { - set_brackets({}, {}); - ++__begin; + std::__throw_format_error("Type m requires a pair or a tuple with two elements"); } if (__begin != __end && *__begin != _CharT('}')) - std::__throw_format_error("The format-spec should consume the input or end with a '}'"); + std::__throw_format_error("The format specifier should consume the input or end with a '}'"); + + __ctx.advance_to(__begin); + + // [format.tuple]/7 + // ... For each element e in underlying_, if e.set_debug_format() + // is a valid expression, calls e.set_debug_format(). + std::__for_each_index_sequence(make_index_sequence(), [&] { + auto& __formatter = std::get<_Index>(__underlying_); + __formatter.parse(__ctx); + // Unlike the range_formatter we don't guard against evil parsers. Since + // this format-spec never has a format-spec for the underlying type + // adding the test would give additional overhead. + std::__set_debug_format(__formatter); + }); return __begin; } @@ -91,26 +92,25 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_tuple { if (!__specs.__has_width()) return __format_tuple(__tuple, __ctx); - basic_string<_CharT> __str; - - // Since the output is written to a different iterator a new context is - // created. Since the underlying formatter uses the default formatting it - // doesn't need a locale or the formatting arguments. So creating a new - // context works. - // - // This solution works for this formatter, but it will not work for the - // range_formatter. In that patch a generic solution is work in progress. - // Once that is finished it can be used here. (The range_formatter will use - // these features so it's easier to add it there and then port it.) - // - // TODO FMT Use formatting wrapping used in the range_formatter. - basic_format_context __c = std::__format_context_create( - back_insert_iterator{__str}, - basic_format_args>, _CharT>>{}); + // The size of the buffer needed is: + // - open bracket characters + // - close bracket character + // - n elements where every element may have a different size + // - (n -1) separators + // The size of the element is hard to predict, knowing the type helps but + // it depends on the format-spec. As an initial estimate we guess 6 + // characters. + // Typically both brackets are 1 character and the separator is 2 + // characters. Which means there will be + // (n - 1) * 2 + 1 + 1 = n * 2 character + // So estimate 8 times the range size as buffer. + __format::__retarget_buffer<_CharT> __buffer{8 * tuple_size_v<_Tuple>}; + basic_format_context::__iterator, _CharT> __c{ + __buffer.__make_output_iterator(), __ctx}; __format_tuple(__tuple, __c); - return __formatter::__write_string_no_precision(basic_string_view{__str}, __ctx.out(), __specs); + return __formatter::__write_string_no_precision(basic_string_view{__buffer.__view()}, __ctx.out(), __specs); } template @@ -120,35 +120,7 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_tuple { std::__for_each_index_sequence(make_index_sequence(), [&] { if constexpr (_Index) __ctx.advance_to(std::ranges::copy(__separator_, __ctx.out()).out); - - // During review Victor suggested to make the exposition only - // __underlying_ member a local variable. Currently the Standard - // requires nested debug-enabled formatter specializations not to - // output escaped output. P2733 fixes that bug, once accepted the - // code below can be used. - // (Note when a paper allows parsing a tuple-underlying-spec the - // exposition only member needs to be a class member. Earlier - // revisions of P2286 proposed that, but this was not pursued, - // due to time constrains and complexity of the matter.) - // TODO FMT This can be updated after P2733 is accepted. -# if 0 - // P2286 uses an exposition only member in the formatter - // tuple, _CharT>...> __underlying_; - // This was used in earlier versions of the paper since - // __underlying_.parse(...) was called. This is no longer the case - // so we can reduce the scope of the formatter. - // - // It does require the underlying's parse effect to be moved here too. - using _Arg = tuple_element<_Index, decltype(__tuple)>; - formatter, _CharT> __underlying; - - // [format.tuple]/7 - // ... For each element e in underlying_, if e.set_debug_format() - // is a valid expression, calls e.set_debug_format(). - std::__set_debug_format(__underlying); -# else __ctx.advance_to(std::get<_Index>(__underlying_).format(std::get<_Index>(__tuple), __ctx)); -# endif }); return std::ranges::copy(__closing_bracket_, __ctx.out()).out; @@ -164,14 +136,14 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __formatter_tuple { }; template <__fmt_char_type _CharT, formattable<_CharT>... _Args> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter, _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_tuple<_CharT, pair<_Args...>, _Args...> {}; template <__fmt_char_type _CharT, formattable<_CharT>... _Args> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter, _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_tuple<_CharT, tuple<_Args...>, _Args...> {}; -#endif //_LIBCPP_STD_VER > 20 +#endif //_LIBCPP_STD_VER >= 23 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/parser_std_format_spec.h b/include/c++/v1/__format/parser_std_format_spec.h index c03cec97..150bdde8 100644 --- a/include/c++/v1/__format/parser_std_format_spec.h +++ b/include/c++/v1/__format/parser_std_format_spec.h @@ -16,23 +16,28 @@ /// This header has some support for the chrono-format-spec since it doesn't /// affect the std-format-spec. -#include <__algorithm/find_if.h> +#include <__algorithm/copy_n.h> #include <__algorithm/min.h> #include <__assert> #include <__concepts/arithmetic.h> #include <__concepts/same_as.h> #include <__config> -#include <__debug> #include <__format/format_arg.h> #include <__format/format_error.h> #include <__format/format_parse_context.h> #include <__format/format_string.h> #include <__format/unicode.h> +#include <__format/width_estimation_table.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> // iter_value_t +#include <__memory/addressof.h> +#include <__type_traits/common_type.h> +#include <__type_traits/is_constant_evaluated.h> +#include <__type_traits/is_trivially_copyable.h> #include <__variant/monostate.h> -#include #include +#include #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -43,30 +48,41 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __format_spec { -template -_LIBCPP_HIDE_FROM_ABI constexpr __format::__parse_number_result< _CharT> -__parse_arg_id(const _CharT* __begin, const _CharT* __end, auto& __parse_ctx) { +_LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI inline void +__throw_invalid_option_format_error(const char* __id, const char* __option) { + std::__throw_format_error( + (string("The format specifier for ") + __id + " does not allow the " + __option + " option").c_str()); +} + +_LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI inline void __throw_invalid_type_format_error(const char* __id) { + std::__throw_format_error( + (string("The type option contains an invalid value for ") + __id + " formatting argument").c_str()); +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr __format::__parse_number_result<_Iterator> +__parse_arg_id(_Iterator __begin, _Iterator __end, _ParseContext& __ctx) { + using _CharT = iter_value_t<_Iterator>; // This function is a wrapper to call the real parser. But it does the // validation for the pre-conditions and post-conditions. if (__begin == __end) - std::__throw_format_error("End of input while parsing format-spec arg-id"); + std::__throw_format_error("End of input while parsing an argument index"); - __format::__parse_number_result __r = __format::__parse_arg_id(__begin, __end, __parse_ctx); + __format::__parse_number_result __r = __format::__parse_arg_id(__begin, __end, __ctx); - if (__r.__ptr == __end || *__r.__ptr != _CharT('}')) - std::__throw_format_error("Invalid arg-id"); + if (__r.__last == __end || *__r.__last != _CharT('}')) + std::__throw_format_error("The argument index is invalid"); - ++__r.__ptr; + ++__r.__last; return __r; } template -_LIBCPP_HIDE_FROM_ABI constexpr uint32_t -__substitute_arg_id(basic_format_arg<_Context> __format_arg) { +_LIBCPP_HIDE_FROM_ABI constexpr uint32_t __substitute_arg_id(basic_format_arg<_Context> __format_arg) { // [format.string.std]/8 // If the corresponding formatting argument is not of integral type... // This wording allows char and bool too. LWG-3720 changes the wording to @@ -75,25 +91,36 @@ __substitute_arg_id(basic_format_arg<_Context> __format_arg) { // This means the 128-bit will not be valid anymore. // TODO FMT Verify this resolution is accepted and add a test to verify // 128-bit integrals fail and switch to visit_format_arg. - return _VSTD::__visit_format_arg( + return std::__visit_format_arg( [](auto __arg) -> uint32_t { using _Type = decltype(__arg); - if constexpr (integral<_Type>) { + if constexpr (same_as<_Type, monostate>) + std::__throw_format_error("The argument index value is too large for the number of arguments supplied"); + + // [format.string.std]/8 + // If { arg-idopt } is used in a width or precision, the value of the + // corresponding formatting argument is used in its place. If the + // corresponding formatting argument is not of standard signed or unsigned + // integer type, or its value is negative for precision or non-positive for + // width, an exception of type format_error is thrown. + // + // When an integral is used in a format function, it is stored as one of + // the types checked below. Other integral types are promoted. For example, + // a signed char is stored as an int. + if constexpr (same_as<_Type, int> || same_as<_Type, unsigned int> || // + same_as<_Type, long long> || same_as<_Type, unsigned long long>) { if constexpr (signed_integral<_Type>) { if (__arg < 0) - std::__throw_format_error("A format-spec arg-id replacement shouldn't have a negative value"); + std::__throw_format_error("An argument index may not have a negative value"); } using _CT = common_type_t<_Type, decltype(__format::__number_max)>; - if (static_cast<_CT>(__arg) > - static_cast<_CT>(__format::__number_max)) - std::__throw_format_error("A format-spec arg-id replacement exceeds the maximum supported value"); + if (static_cast<_CT>(__arg) > static_cast<_CT>(__format::__number_max)) + std::__throw_format_error("The value of the argument index exceeds its maximum value"); return __arg; - } else if constexpr (same_as<_Type, monostate>) - std::__throw_format_error("Argument index out of bounds"); - else - std::__throw_format_error("A format-spec arg-id replacement argument isn't an integral type"); + } else + std::__throw_format_error("Replacement argument isn't a standard signed or unsigned integer type"); }, __format_arg); } @@ -102,47 +129,52 @@ __substitute_arg_id(basic_format_arg<_Context> __format_arg) { /// /// They default to false so when a new field is added it needs to be opted in /// explicitly. -// TODO FMT Use an ABI tag for this struct. -struct __fields { - uint8_t __sign_ : 1 {false}; - uint8_t __alternate_form_ : 1 {false}; - uint8_t __zero_padding_ : 1 {false}; - uint8_t __precision_ : 1 {false}; - uint8_t __locale_specific_form_ : 1 {false}; - uint8_t __type_ : 1 {false}; +struct _LIBCPP_HIDE_FROM_ABI __fields { + uint16_t __sign_ : 1 {false}; + uint16_t __alternate_form_ : 1 {false}; + uint16_t __zero_padding_ : 1 {false}; + uint16_t __precision_ : 1 {false}; + uint16_t __locale_specific_form_ : 1 {false}; + uint16_t __type_ : 1 {false}; // Determines the valid values for fill. // // Originally the fill could be any character except { and }. Range-based // formatters use the colon to mark the beginning of the // underlying-format-spec. To avoid parsing ambiguities these formatter // specializations prohibit the use of the colon as a fill character. - uint8_t __allow_colon_in_fill_ : 1 {false}; + uint16_t __use_range_fill_ : 1 {false}; + uint16_t __clear_brackets_ : 1 {false}; + uint16_t __consume_all_ : 1 {false}; }; // By not placing this constant in the formatter class it's not duplicated for // char and wchar_t. +inline constexpr __fields __fields_bool{.__locale_specific_form_ = true, .__type_ = true, .__consume_all_ = true}; inline constexpr __fields __fields_integral{ .__sign_ = true, .__alternate_form_ = true, .__zero_padding_ = true, .__locale_specific_form_ = true, - .__type_ = true}; + .__type_ = true, + .__consume_all_ = true}; inline constexpr __fields __fields_floating_point{ .__sign_ = true, .__alternate_form_ = true, .__zero_padding_ = true, .__precision_ = true, .__locale_specific_form_ = true, - .__type_ = true}; -inline constexpr __fields __fields_string{.__precision_ = true, .__type_ = true}; -inline constexpr __fields __fields_pointer{.__type_ = true}; - -# if _LIBCPP_STD_VER > 20 -inline constexpr __fields __fields_tuple{.__type_ = false, .__allow_colon_in_fill_ = true}; -inline constexpr __fields __fields_range{.__type_ = false, .__allow_colon_in_fill_ = true}; + .__type_ = true, + .__consume_all_ = true}; +inline constexpr __fields __fields_string{.__precision_ = true, .__type_ = true, .__consume_all_ = true}; +inline constexpr __fields __fields_pointer{.__zero_padding_ = true, .__type_ = true, .__consume_all_ = true}; + +# if _LIBCPP_STD_VER >= 23 +inline constexpr __fields __fields_tuple{.__use_range_fill_ = true, .__clear_brackets_ = true}; +inline constexpr __fields __fields_range{.__use_range_fill_ = true, .__clear_brackets_ = true}; +inline constexpr __fields __fields_fill_align_width{}; # endif -enum class _LIBCPP_ENUM_VIS __alignment : uint8_t { +enum class __alignment : uint8_t { /// No alignment is set in the format string. __default, __left, @@ -151,7 +183,7 @@ enum class _LIBCPP_ENUM_VIS __alignment : uint8_t { __zero_padding }; -enum class _LIBCPP_ENUM_VIS __sign : uint8_t { +enum class __sign : uint8_t { /// No sign is set in the format string. /// /// The sign isn't allowed for certain format-types. By using this value @@ -163,8 +195,8 @@ enum class _LIBCPP_ENUM_VIS __sign : uint8_t { __space }; -enum class _LIBCPP_ENUM_VIS __type : uint8_t { - __default, +enum class __type : uint8_t { + __default = 0, __string, __binary_lower_case, __binary_upper_case, @@ -172,7 +204,8 @@ enum class _LIBCPP_ENUM_VIS __type : uint8_t { __decimal, __hexadecimal_lower_case, __hexadecimal_upper_case, - __pointer, + __pointer_lower_case, + __pointer_upper_case, __char, __hexfloat_lower_case, __hexfloat_upper_case, @@ -185,24 +218,63 @@ enum class _LIBCPP_ENUM_VIS __type : uint8_t { __debug }; +_LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __create_type_mask(__type __t) { + uint32_t __shift = static_cast(__t); + if (__shift == 0) + return 1; + + if (__shift > 31) + std::__throw_format_error("The type does not fit in the mask"); + + return 1 << __shift; +} + +inline constexpr uint32_t __type_mask_integer = + __create_type_mask(__type::__binary_lower_case) | // + __create_type_mask(__type::__binary_upper_case) | // + __create_type_mask(__type::__decimal) | // + __create_type_mask(__type::__octal) | // + __create_type_mask(__type::__hexadecimal_lower_case) | // + __create_type_mask(__type::__hexadecimal_upper_case); + struct __std { - __alignment __alignment_ : 3; - __sign __sign_ : 2; - bool __alternate_form_ : 1; + __alignment __alignment_ : 3; + __sign __sign_ : 2; + bool __alternate_form_ : 1; bool __locale_specific_form_ : 1; __type __type_; }; struct __chrono { - __alignment __alignment_ : 3; + __alignment __alignment_ : 3; bool __locale_specific_form_ : 1; - bool __weekday_name_ : 1; + bool __hour_ : 1; + bool __weekday_name_ : 1; bool __weekday_ : 1; bool __day_of_year_ : 1; bool __week_of_year_ : 1; - bool __month_name_ : 1; + bool __month_name_ : 1; +}; + +// The fill UCS scalar value. +// +// This is always an array, with 1, 2, or 4 elements. +// The size of the data structure is always 32-bits. +template +struct __code_point; + +template <> +struct __code_point { + char __data[4] = {' '}; }; +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template <> +struct __code_point { + wchar_t __data[4 / sizeof(wchar_t)] = {L' '}; +}; +# endif + /// Contains the parsed formatting specifications. /// /// This contains information for both the std-format-spec and the @@ -238,7 +310,7 @@ struct __parsed_specifications { /// replaced with the value of that arg-id. int32_t __precision_; - _CharT __fill_; + __code_point<_CharT> __fill_; _LIBCPP_HIDE_FROM_ABI constexpr bool __has_width() const { return __width_ > 0; } @@ -265,51 +337,163 @@ static_assert(is_trivially_copyable_v<__parsed_specifications>); template class _LIBCPP_TEMPLATE_VIS __parser { public: - _LIBCPP_HIDE_FROM_ABI constexpr auto __parse(basic_format_parse_context<_CharT>& __parse_ctx, __fields __fields) - -> decltype(__parse_ctx.begin()) { - - const _CharT* __begin = __parse_ctx.begin(); - const _CharT* __end = __parse_ctx.end(); - if (__begin == __end) + // Parses the format specification. + // + // Depending on whether the parsing is done compile-time or run-time + // the method slightly differs. + // - Only parses a field when it is in the __fields. Accepting all + // fields and then validating the valid ones has a performance impact. + // This is faster but gives slighly worse error messages. + // - At compile-time when a field is not accepted the parser will still + // parse it and give an error when it's present. This gives a more + // accurate error. + // The idea is that most times the format instead of the vformat + // functions are used. In that case the error will be detected during + // compilation and there is no need to pay for the run-time overhead. + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator __parse(_ParseContext& __ctx, __fields __fields) { + auto __begin = __ctx.begin(); + auto __end = __ctx.end(); + if (__begin == __end || *__begin == _CharT('}') || (__fields.__use_range_fill_ && *__begin == _CharT(':'))) return __begin; - if (__parse_fill_align(__begin, __end, __fields.__allow_colon_in_fill_) && __begin == __end) + if (__parse_fill_align(__begin, __end) && __begin == __end) return __begin; - if (__fields.__sign_ && __parse_sign(__begin) && __begin == __end) - return __begin; + if (__fields.__sign_) { + if (__parse_sign(__begin) && __begin == __end) + return __begin; + } else if (std::is_constant_evaluated() && __parse_sign(__begin)) { + std::__throw_format_error("The format specification does not allow the sign option"); + } - if (__fields.__alternate_form_ && __parse_alternate_form(__begin) && __begin == __end) - return __begin; + if (__fields.__alternate_form_) { + if (__parse_alternate_form(__begin) && __begin == __end) + return __begin; + } else if (std::is_constant_evaluated() && __parse_alternate_form(__begin)) { + std::__throw_format_error("The format specifier does not allow the alternate form option"); + } - if (__fields.__zero_padding_ && __parse_zero_padding(__begin) && __begin == __end) - return __begin; + if (__fields.__zero_padding_) { + if (__parse_zero_padding(__begin) && __begin == __end) + return __begin; + } else if (std::is_constant_evaluated() && __parse_zero_padding(__begin)) { + std::__throw_format_error("The format specifier does not allow the zero-padding option"); + } - if (__parse_width(__begin, __end, __parse_ctx) && __begin == __end) + if (__parse_width(__begin, __end, __ctx) && __begin == __end) return __begin; - if (__fields.__precision_ && __parse_precision(__begin, __end, __parse_ctx) && __begin == __end) - return __begin; + if (__fields.__precision_) { + if (__parse_precision(__begin, __end, __ctx) && __begin == __end) + return __begin; + } else if (std::is_constant_evaluated() && __parse_precision(__begin, __end, __ctx)) { + std::__throw_format_error("The format specifier does not allow the precision option"); + } - if (__fields.__locale_specific_form_ && __parse_locale_specific_form(__begin) && __begin == __end) - return __begin; + if (__fields.__locale_specific_form_) { + if (__parse_locale_specific_form(__begin) && __begin == __end) + return __begin; + } else if (std::is_constant_evaluated() && __parse_locale_specific_form(__begin)) { + std::__throw_format_error("The format specifier does not allow the locale-specific form option"); + } + + if (__fields.__clear_brackets_) { + if (__parse_clear_brackets(__begin) && __begin == __end) + return __begin; + } else if (std::is_constant_evaluated() && __parse_clear_brackets(__begin)) { + std::__throw_format_error("The format specifier does not allow the n option"); + } - if (__fields.__type_) { + if (__fields.__type_) __parse_type(__begin); - // When __type_ is false the calling parser is expected to do additional - // parsing. In that case that parser should do the end of format string - // validation. - if (__begin != __end && *__begin != _CharT('}')) - std::__throw_format_error("The format-spec should consume the input or end with a '}'"); - } + if (!__fields.__consume_all_) + return __begin; + + if (__begin != __end && *__begin != _CharT('}')) + std::__throw_format_error("The format specifier should consume the input or end with a '}'"); return __begin; } + // Validates the selected the parsed data. + // + // The valid fields in the parser may depend on the display type + // selected. But the type is the last optional field, so by the time + // it's known an option can't be used, it already has been parsed. + // This does the validation again. + // + // For example an integral may have a sign, zero-padding, or alternate + // form when the type option is not 'c'. So the generic approach is: + // + // typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_integral); + // if (__parser.__type_ == __format_spec::__type::__char) { + // __parser.__validate((__format_spec::__fields_bool, "an integer"); + // ... // more char adjustments + // } else { + // ... // validate an integral type. + // } + // + // For some types all valid options need a second validation run, like + // boolean types. + // + // Depending on whether the validation is done at compile-time or + // run-time the error differs + // - run-time the exception is thrown and contains the type of field + // being validated. + // - at compile-time the line with `std::__throw_format_error` is shown + // in the output. In that case it's important for the error to be on one + // line. + // Note future versions of C++ may allow better compile-time error + // reporting. + _LIBCPP_HIDE_FROM_ABI constexpr void + __validate(__fields __fields, const char* __id, uint32_t __type_mask = -1) const { + if (!__fields.__sign_ && __sign_ != __sign::__default) { + if (std::is_constant_evaluated()) + std::__throw_format_error("The format specifier does not allow the sign option"); + else + __format_spec::__throw_invalid_option_format_error(__id, "sign"); + } + + if (!__fields.__alternate_form_ && __alternate_form_) { + if (std::is_constant_evaluated()) + std::__throw_format_error("The format specifier does not allow the alternate form option"); + else + __format_spec::__throw_invalid_option_format_error(__id, "alternate form"); + } + + if (!__fields.__zero_padding_ && __alignment_ == __alignment::__zero_padding) { + if (std::is_constant_evaluated()) + std::__throw_format_error("The format specifier does not allow the zero-padding option"); + else + __format_spec::__throw_invalid_option_format_error(__id, "zero-padding"); + } + + if (!__fields.__precision_ && __precision_ != -1) { // Works both when the precision has a value or an arg-id. + if (std::is_constant_evaluated()) + std::__throw_format_error("The format specifier does not allow the precision option"); + else + __format_spec::__throw_invalid_option_format_error(__id, "precision"); + } + + if (!__fields.__locale_specific_form_ && __locale_specific_form_) { + if (std::is_constant_evaluated()) + std::__throw_format_error("The format specifier does not allow the locale-specific form option"); + else + __format_spec::__throw_invalid_option_format_error(__id, "locale-specific form"); + } + + if ((__create_type_mask(__type_) & __type_mask) == 0) { + if (std::is_constant_evaluated()) + std::__throw_format_error("The format specifier uses an invalid value for the type option"); + else + __format_spec::__throw_invalid_type_format_error(__id); + } + } + /// \returns the `__parsed_specifications` with the resolved dynamic sizes.. - _LIBCPP_HIDE_FROM_ABI - __parsed_specifications<_CharT> __get_parsed_std_specifications(auto& __ctx) const { + _LIBCPP_HIDE_FROM_ABI __parsed_specifications<_CharT> __get_parsed_std_specifications(auto& __ctx) const { return __parsed_specifications<_CharT>{ .__std_ = __std{.__alignment_ = __alignment_, .__sign_ = __sign_, @@ -326,6 +510,7 @@ class _LIBCPP_TEMPLATE_VIS __parser { .__chrono_ = __chrono{.__alignment_ = __alignment_, .__locale_specific_form_ = __locale_specific_form_, + .__hour_ = __hour_, .__weekday_name_ = __weekday_name_, .__weekday_ = __weekday_, .__day_of_year_ = __day_of_year_, @@ -336,15 +521,17 @@ class _LIBCPP_TEMPLATE_VIS __parser { .__fill_{__fill_}}; } - __alignment __alignment_ : 3 {__alignment::__default}; - __sign __sign_ : 2 {__sign::__default}; - bool __alternate_form_ : 1 {false}; + __alignment __alignment_ : 3 {__alignment::__default}; + __sign __sign_ : 2 {__sign::__default}; + bool __alternate_form_ : 1 {false}; bool __locale_specific_form_ : 1 {false}; - bool __reserved_0_ : 1 {false}; + bool __clear_brackets_ : 1 {false}; __type __type_{__type::__default}; // These flags are only used for formatting chrono. Since the struct has // padding space left it's added to this structure. + bool __hour_ : 1 {false}; + bool __weekday_name_ : 1 {false}; bool __weekday_ : 1 {false}; @@ -353,11 +540,11 @@ class _LIBCPP_TEMPLATE_VIS __parser { bool __month_name_ : 1 {false}; - uint8_t __reserved_1_ : 3 {0}; - uint8_t __reserved_2_ : 6 {0}; + uint8_t __reserved_0_ : 2 {0}; + uint8_t __reserved_1_ : 6 {0}; // These two flags are only used internally and not part of the // __parsed_specifications. Therefore put them at the end. - bool __width_as_arg_ : 1 {false}; + bool __width_as_arg_ : 1 {false}; bool __precision_as_arg_ : 1 {false}; /// The requested width, either the value or the arg-id. @@ -366,11 +553,7 @@ class _LIBCPP_TEMPLATE_VIS __parser { /// The requested precision, either the value or the arg-id. int32_t __precision_{-1}; - // LWG 3576 will probably change this to always accept a Unicode code point - // To avoid changing the size with that change align the field so when it - // becomes 32-bit its alignment will remain the same. That also means the - // size will remain the same. (D2572 addresses the solution for LWG 3576.) - _CharT __fill_{_CharT(' ')}; + __code_point<_CharT> __fill_{}; private: _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_alignment(_CharT __c) { @@ -390,19 +573,91 @@ class _LIBCPP_TEMPLATE_VIS __parser { return false; } + _LIBCPP_HIDE_FROM_ABI constexpr void __validate_fill_character(_CharT __fill) { + // The forbidden fill characters all code points formed from a single code unit, thus the + // check can be omitted when more code units are used. + if (__fill == _CharT('{')) + std::__throw_format_error("The fill option contains an invalid value"); + } + +# ifndef _LIBCPP_HAS_NO_UNICODE + // range-fill and tuple-fill are identical + template + requires same_as<_CharT, char> +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + || (same_as<_CharT, wchar_t> && sizeof(wchar_t) == 2) +# endif + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_fill_align(_Iterator& __begin, _Iterator __end) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __begin != __end, + "when called with an empty input the function will cause " + "undefined behavior by evaluating data not in the input"); + __unicode::__code_point_view<_CharT> __view{__begin, __end}; + __unicode::__consume_result __consumed = __view.__consume(); + if (__consumed.__status != __unicode::__consume_result::__ok) + std::__throw_format_error("The format specifier contains malformed Unicode characters"); + + if (__view.__position() < __end && __parse_alignment(*__view.__position())) { + ptrdiff_t __code_units = __view.__position() - __begin; + if (__code_units == 1) + // The forbidden fill characters all are code points encoded + // in one code unit, thus the check can be omitted when more + // code units are used. + __validate_fill_character(*__begin); + + std::copy_n(__begin, __code_units, std::addressof(__fill_.__data[0])); + __begin += __code_units + 1; + return true; + } + + if (!__parse_alignment(*__begin)) + return false; + + ++__begin; + return true; + } + +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + template + requires(same_as<_CharT, wchar_t> && sizeof(wchar_t) == 4) + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_fill_align(_Iterator& __begin, _Iterator __end) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __begin != __end, + "when called with an empty input the function will cause " + "undefined behavior by evaluating data not in the input"); + if (__begin + 1 != __end && __parse_alignment(*(__begin + 1))) { + if (!__unicode::__is_scalar_value(*__begin)) + std::__throw_format_error("The fill option contains an invalid value"); + + __validate_fill_character(*__begin); + + __fill_.__data[0] = *__begin; + __begin += 2; + return true; + } + + if (!__parse_alignment(*__begin)) + return false; + + ++__begin; + return true; + } + +# endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS + +# else // _LIBCPP_HAS_NO_UNICODE // range-fill and tuple-fill are identical - _LIBCPP_HIDE_FROM_ABI constexpr bool - __parse_fill_align(const _CharT*& __begin, const _CharT* __end, bool __use_range_fill) { - _LIBCPP_ASSERT(__begin != __end, "when called with an empty input the function will cause " - "undefined behavior by evaluating data not in the input"); + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_fill_align(_Iterator& __begin, _Iterator __end) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __begin != __end, + "when called with an empty input the function will cause " + "undefined behavior by evaluating data not in the input"); if (__begin + 1 != __end) { if (__parse_alignment(*(__begin + 1))) { - if (__use_range_fill && (*__begin == _CharT('{') || *__begin == _CharT('}') || *__begin == _CharT(':'))) - std::__throw_format_error("The format-spec range-fill field contains an invalid character"); - else if (*__begin == _CharT('{') || *__begin == _CharT('}')) - std::__throw_format_error("The format-spec fill field contains an invalid character"); + __validate_fill_character(*__begin); - __fill_ = *__begin; + __fill_.__data[0] = *__begin; __begin += 2; return true; } @@ -415,7 +670,10 @@ class _LIBCPP_TEMPLATE_VIS __parser { return true; } - _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_sign(const _CharT*& __begin) { +# endif // _LIBCPP_HAS_NO_UNICODE + + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_sign(_Iterator& __begin) { switch (*__begin) { case _CharT('-'): __sign_ = __sign::__minus; @@ -433,7 +691,8 @@ class _LIBCPP_TEMPLATE_VIS __parser { return true; } - _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_alternate_form(const _CharT*& __begin) { + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_alternate_form(_Iterator& __begin) { if (*__begin != _CharT('#')) return false; @@ -442,7 +701,8 @@ class _LIBCPP_TEMPLATE_VIS __parser { return true; } - _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_zero_padding(const _CharT*& __begin) { + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_zero_padding(_Iterator& __begin) { if (*__begin != _CharT('0')) return false; @@ -452,15 +712,16 @@ class _LIBCPP_TEMPLATE_VIS __parser { return true; } - _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_width(const _CharT*& __begin, const _CharT* __end, auto& __parse_ctx) { + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_width(_Iterator& __begin, _Iterator __end, auto& __ctx) { if (*__begin == _CharT('0')) - std::__throw_format_error("A format-spec width field shouldn't have a leading zero"); + std::__throw_format_error("The width option should not have a leading zero"); if (*__begin == _CharT('{')) { - __format::__parse_number_result __r = __format_spec::__parse_arg_id(++__begin, __end, __parse_ctx); - __width_as_arg_ = true; - __width_ = __r.__value; - __begin = __r.__ptr; + __format::__parse_number_result __r = __format_spec::__parse_arg_id(++__begin, __end, __ctx); + __width_as_arg_ = true; + __width_ = __r.__value; + __begin = __r.__last; return true; } @@ -468,41 +729,43 @@ class _LIBCPP_TEMPLATE_VIS __parser { return false; __format::__parse_number_result __r = __format::__parse_number(__begin, __end); - __width_ = __r.__value; - _LIBCPP_ASSERT(__width_ != 0, "A zero value isn't allowed and should be impossible, " - "due to validations in this function"); - __begin = __r.__ptr; + __width_ = __r.__value; + _LIBCPP_ASSERT_INTERNAL(__width_ != 0, + "A zero value isn't allowed and should be impossible, " + "due to validations in this function"); + __begin = __r.__last; return true; } - _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_precision(const _CharT*& __begin, const _CharT* __end, - auto& __parse_ctx) { + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_precision(_Iterator& __begin, _Iterator __end, auto& __ctx) { if (*__begin != _CharT('.')) return false; ++__begin; if (__begin == __end) - std::__throw_format_error("End of input while parsing format-spec precision"); + std::__throw_format_error("End of input while parsing format specifier precision"); if (*__begin == _CharT('{')) { - __format::__parse_number_result __arg_id = __format_spec::__parse_arg_id(++__begin, __end, __parse_ctx); - __precision_as_arg_ = true; - __precision_ = __arg_id.__value; - __begin = __arg_id.__ptr; + __format::__parse_number_result __arg_id = __format_spec::__parse_arg_id(++__begin, __end, __ctx); + __precision_as_arg_ = true; + __precision_ = __arg_id.__value; + __begin = __arg_id.__last; return true; } if (*__begin < _CharT('0') || *__begin > _CharT('9')) - std::__throw_format_error("The format-spec precision field doesn't contain a value or arg-id"); + std::__throw_format_error("The precision option does not contain a value or an argument index"); __format::__parse_number_result __r = __format::__parse_number(__begin, __end); - __precision_ = __r.__value; - __precision_as_arg_ = false; - __begin = __r.__ptr; + __precision_ = __r.__value; + __precision_as_arg_ = false; + __begin = __r.__last; return true; } - _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_locale_specific_form(const _CharT*& __begin) { + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_locale_specific_form(_Iterator& __begin) { if (*__begin != _CharT('L')) return false; @@ -511,7 +774,18 @@ class _LIBCPP_TEMPLATE_VIS __parser { return true; } - _LIBCPP_HIDE_FROM_ABI constexpr void __parse_type(const _CharT*& __begin) { + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_clear_brackets(_Iterator& __begin) { + if (*__begin != _CharT('n')) + return false; + + __clear_brackets_ = true; + ++__begin; + return true; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr void __parse_type(_Iterator& __begin) { // Determines the type. It does not validate whether the selected type is // valid. Most formatters have optional fields that are only allowed for // certain types. These parsers need to do validation after the type has @@ -561,7 +835,10 @@ class _LIBCPP_TEMPLATE_VIS __parser { __type_ = __type::__octal; break; case 'p': - __type_ = __type::__pointer; + __type_ = __type::__pointer_lower_case; + break; + case 'P': + __type_ = __type::__pointer_upper_case; break; case 's': __type_ = __type::__string; @@ -569,7 +846,7 @@ class _LIBCPP_TEMPLATE_VIS __parser { case 'x': __type_ = __type::__hexadecimal_lower_case; break; -# if _LIBCPP_STD_VER > 20 +# if _LIBCPP_STD_VER >= 23 case '?': __type_ = __type::__debug; break; @@ -580,16 +857,14 @@ class _LIBCPP_TEMPLATE_VIS __parser { ++__begin; } - _LIBCPP_HIDE_FROM_ABI - int32_t __get_width(auto& __ctx) const { + _LIBCPP_HIDE_FROM_ABI int32_t __get_width(auto& __ctx) const { if (!__width_as_arg_) return __width_; return __format_spec::__substitute_arg_id(__ctx.arg(__width_)); } - _LIBCPP_HIDE_FROM_ABI - int32_t __get_precision(auto& __ctx) const { + _LIBCPP_HIDE_FROM_ABI int32_t __get_precision(auto& __ctx) const { if (!__precision_as_arg_) return __precision_; @@ -611,36 +886,28 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_string(__format_spec break; default: - std::__throw_format_error("The format-spec type has a type not supported for a string argument"); + std::__throw_format_error("The type option contains an invalid value for a string formatting argument"); } } template -_LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_bool_string(__parser<_CharT>& __parser) { - if (__parser.__sign_ != __sign::__default) - std::__throw_format_error("A sign field isn't allowed in this format-spec"); - - if (__parser.__alternate_form_) - std::__throw_format_error("An alternate form field isn't allowed in this format-spec"); - - if (__parser.__alignment_ == __alignment::__zero_padding) - std::__throw_format_error("A zero-padding field isn't allowed in this format-spec"); - +_LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_bool_string(__parser<_CharT>& __parser, const char* __id) { + __parser.__validate(__format_spec::__fields_bool, __id); if (__parser.__alignment_ == __alignment::__default) __parser.__alignment_ = __alignment::__left; } template -_LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_char(__parser<_CharT>& __parser) { - __format_spec::__process_display_type_bool_string(__parser); +_LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_char(__parser<_CharT>& __parser, const char* __id) { + __format_spec::__process_display_type_bool_string(__parser, __id); } template -_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_bool(__parser<_CharT>& __parser) { +_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_bool(__parser<_CharT>& __parser, const char* __id) { switch (__parser.__type_) { case __format_spec::__type::__default: case __format_spec::__type::__string: - __format_spec::__process_display_type_bool_string(__parser); + __format_spec::__process_display_type_bool_string(__parser, __id); break; case __format_spec::__type::__binary_lower_case: @@ -652,17 +919,17 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_bool(__parser<_CharT>& __p break; default: - std::__throw_format_error("The format-spec type has a type not supported for a bool argument"); + __format_spec::__throw_invalid_type_format_error(__id); } } template -_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_char(__parser<_CharT>& __parser) { +_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_char(__parser<_CharT>& __parser, const char* __id) { switch (__parser.__type_) { case __format_spec::__type::__default: case __format_spec::__type::__char: case __format_spec::__type::__debug: - __format_spec::__process_display_type_char(__parser); + __format_spec::__process_display_type_char(__parser, __id); break; case __format_spec::__type::__binary_lower_case: @@ -674,12 +941,12 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_char(__parser<_CharT>& __p break; default: - std::__throw_format_error("The format-spec type has a type not supported for a char argument"); + __format_spec::__throw_invalid_type_format_error(__id); } } template -_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_integer(__parser<_CharT>& __parser) { +_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_integer(__parser<_CharT>& __parser, const char* __id) { switch (__parser.__type_) { case __format_spec::__type::__default: case __format_spec::__type::__binary_lower_case: @@ -691,16 +958,16 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_integer(__parser<_CharT>& break; case __format_spec::__type::__char: - __format_spec::__process_display_type_char(__parser); + __format_spec::__process_display_type_char(__parser, __id); break; default: - std::__throw_format_error("The format-spec type has a type not supported for an integer argument"); + __format_spec::__throw_invalid_type_format_error(__id); } } template -_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_floating_point(__parser<_CharT>& __parser) { +_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_floating_point(__parser<_CharT>& __parser, const char* __id) { switch (__parser.__type_) { case __format_spec::__type::__default: case __format_spec::__type::__hexfloat_lower_case: @@ -719,33 +986,34 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_floating_point(__parser<_C break; default: - std::__throw_format_error("The format-spec type has a type not supported for a floating-point argument"); + __format_spec::__throw_invalid_type_format_error(__id); } } -_LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_pointer(__format_spec::__type __type) { +_LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_pointer(__format_spec::__type __type, const char* __id) { switch (__type) { case __format_spec::__type::__default: - case __format_spec::__type::__pointer: + case __format_spec::__type::__pointer_lower_case: + case __format_spec::__type::__pointer_upper_case: break; default: - std::__throw_format_error("The format-spec type has a type not supported for a pointer argument"); + __format_spec::__throw_invalid_type_format_error(__id); } } -template +template struct __column_width_result { /// The number of output columns. size_t __width_; /// One beyond the last code unit used in the estimation. /// /// This limits the original output to fit in the wanted number of columns. - const _CharT* __last_; + _Iterator __last_; }; -template -__column_width_result(size_t, const _CharT*) -> __column_width_result<_CharT>; +template +__column_width_result(size_t, _Iterator) -> __column_width_result<_Iterator>; /// Since a column width can be two it's possible that the requested column /// width can't be achieved. Depending on the intended usage the policy can be @@ -761,66 +1029,16 @@ enum class __column_width_rounding { __down, __up }; # ifndef _LIBCPP_HAS_NO_UNICODE namespace __detail { - -/// Converts a code point to the column width. -/// -/// The estimations are conforming to [format.string.general]/11 -/// -/// This version expects a value less than 0x1'0000, which is a 3-byte UTF-8 -/// character. -_LIBCPP_HIDE_FROM_ABI constexpr int __column_width_3(uint32_t __c) noexcept { - _LIBCPP_ASSERT(__c < 0x10000, "Use __column_width_4 or __column_width for larger values"); - - // clang-format off - return 1 + (__c >= 0x1100 && (__c <= 0x115f || - (__c >= 0x2329 && (__c <= 0x232a || - (__c >= 0x2e80 && (__c <= 0x303e || - (__c >= 0x3040 && (__c <= 0xa4cf || - (__c >= 0xac00 && (__c <= 0xd7a3 || - (__c >= 0xf900 && (__c <= 0xfaff || - (__c >= 0xfe10 && (__c <= 0xfe19 || - (__c >= 0xfe30 && (__c <= 0xfe6f || - (__c >= 0xff00 && (__c <= 0xff60 || - (__c >= 0xffe0 && (__c <= 0xffe6 - )))))))))))))))))))); - // clang-format on -} - -/// @overload -/// -/// This version expects a value greater than or equal to 0x1'0000, which is a -/// 4-byte UTF-8 character. -_LIBCPP_HIDE_FROM_ABI constexpr int __column_width_4(uint32_t __c) noexcept { - _LIBCPP_ASSERT(__c >= 0x10000, "Use __column_width_3 or __column_width for smaller values"); - - // clang-format off - return 1 + (__c >= 0x1'f300 && (__c <= 0x1'f64f || - (__c >= 0x1'f900 && (__c <= 0x1'f9ff || - (__c >= 0x2'0000 && (__c <= 0x2'fffd || - (__c >= 0x3'0000 && (__c <= 0x3'fffd - )))))))); - // clang-format on -} - -/// @overload -/// -/// The general case, accepting all values. -_LIBCPP_HIDE_FROM_ABI constexpr int __column_width(uint32_t __c) noexcept { - if (__c < 0x10000) - return __detail::__column_width_3(__c); - - return __detail::__column_width_4(__c); -} - -template -_LIBCPP_HIDE_FROM_ABI constexpr __column_width_result<_CharT> __estimate_column_width_grapheme_clustering( - const _CharT* __first, const _CharT* __last, size_t __maximum, __column_width_rounding __rounding) noexcept { +template +_LIBCPP_HIDE_FROM_ABI constexpr __column_width_result<_Iterator> __estimate_column_width_grapheme_clustering( + _Iterator __first, _Iterator __last, size_t __maximum, __column_width_rounding __rounding) noexcept { + using _CharT = iter_value_t<_Iterator>; __unicode::__extended_grapheme_cluster_view<_CharT> __view{__first, __last}; - __column_width_result<_CharT> __result{0, __first}; + __column_width_result<_Iterator> __result{0, __first}; while (__result.__last_ != __last && __result.__width_ <= __maximum) { typename __unicode::__extended_grapheme_cluster_view<_CharT>::__cluster __cluster = __view.__consume(); - int __width = __detail::__column_width(__cluster.__code_point_); + int __width = __width_estimation_table::__estimated_width(__cluster.__code_point_); // When the next entry would exceed the maximum width the previous width // might be returned. For example when a width of 100 is requested the @@ -884,8 +1102,8 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool __is_ascii(char32_t __c) { return __c < 0x8 /// \param __rounding Selects the rounding method. /// \c __down result.__width_ <= __maximum /// \c __up result.__width_ <= __maximum + 1 -template -_LIBCPP_HIDE_FROM_ABI constexpr __column_width_result<_CharT> __estimate_column_width( +template ::const_iterator> +_LIBCPP_HIDE_FROM_ABI constexpr __column_width_result<_Iterator> __estimate_column_width( basic_string_view<_CharT> __str, size_t __maximum, __column_width_rounding __rounding) noexcept { // The width estimation is done in two steps: // - Quickly process for the ASCII part. ASCII has the following properties @@ -904,7 +1122,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr __column_width_result<_CharT> __estimate_column_ // need to scan one code unit beyond the requested precision. When this code // unit is non-ASCII we omit the current code unit and let the Grapheme // clustering algorithm do its work. - const _CharT* __it = __str.begin(); + auto __it = __str.begin(); if (__format_spec::__is_ascii(*__it)) { do { --__maximum; @@ -932,20 +1150,20 @@ _LIBCPP_HIDE_FROM_ABI constexpr __column_width_result<_CharT> __estimate_column_ } # else // !defined(_LIBCPP_HAS_NO_UNICODE) template -_LIBCPP_HIDE_FROM_ABI constexpr __column_width_result<_CharT> +_LIBCPP_HIDE_FROM_ABI constexpr __column_width_result::const_iterator> __estimate_column_width(basic_string_view<_CharT> __str, size_t __maximum, __column_width_rounding) noexcept { // When Unicode isn't supported assume ASCII and every code unit is one code // point. In ASCII the estimated column width is always one. Thus there's no // need for rounding. - size_t __width_ = _VSTD::min(__str.size(), __maximum); - return {__width_, __str.begin() + __width_}; + size_t __width = std::min(__str.size(), __maximum); + return {__width, __str.begin() + __width}; } # endif // !defined(_LIBCPP_HAS_NO_UNICODE) } // namespace __format_spec -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/range_default_formatter.h b/include/c++/v1/__format/range_default_formatter.h index 774887b0..b35223ae 100644 --- a/include/c++/v1/__format/range_default_formatter.h +++ b/include/c++/v1/__format/range_default_formatter.h @@ -14,22 +14,26 @@ # pragma GCC system_header #endif -#include <__availability> +#include <__algorithm/ranges_copy.h> #include <__chrono/statically_widen.h> #include <__concepts/same_as.h> #include <__config> #include <__format/concepts.h> #include <__format/formatter.h> #include <__format/range_formatter.h> +#include <__iterator/back_insert_iterator.h> #include <__ranges/concepts.h> +#include <__ranges/data.h> +#include <__ranges/from_range.h> +#include <__ranges/size.h> +#include <__type_traits/conditional.h> #include <__type_traits/remove_cvref.h> #include <__utility/pair.h> #include -#include _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 20 +#if _LIBCPP_STD_VER >= 23 template concept __const_formattable_range = @@ -83,40 +87,23 @@ inline constexpr range_format format_kind<_Rp> = [] { return range_format::sequence; }(); -// This is a non-standard work-around to fix instantiation of -// formatter -// const _CharT[N] satisfies the ranges::input_range concept. -// remove_cvref_t is _CharT[N] so it does not satisfy the -// requirement of the above specialization. Instead it will instantiate the -// primary template, which is ill-formed. -// -// An alternative solution is to remove the offending formatter. -// -// https://godbolt.org/z/bqjhhaexx -// -// The removal is proposed in LWG3833, but use the work-around until the issue -// has been adopted. -// TODO FMT Implement LWG3833. -template -inline constexpr range_format format_kind = range_format::disabled; - template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __range_default_formatter; +struct _LIBCPP_TEMPLATE_VIS __range_default_formatter; // Required specializations template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __range_default_formatter { +struct _LIBCPP_TEMPLATE_VIS __range_default_formatter { private: using __maybe_const_r = __fmt_maybe_const<_Rp, _CharT>; range_formatter>, _CharT> __underlying_; public: - _LIBCPP_HIDE_FROM_ABI constexpr void set_separator(basic_string_view<_CharT> __separator) { + _LIBCPP_HIDE_FROM_ABI constexpr void set_separator(basic_string_view<_CharT> __separator) noexcept { __underlying_.set_separator(__separator); } _LIBCPP_HIDE_FROM_ABI constexpr void - set_brackets(basic_string_view<_CharT> __opening_bracket, basic_string_view<_CharT> __closing_bracket) { + set_brackets(basic_string_view<_CharT> __opening_bracket, basic_string_view<_CharT> __closing_bracket) noexcept { __underlying_.set_brackets(__opening_bracket, __closing_bracket); } @@ -125,14 +112,15 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __range_default_formatte return __underlying_.parse(__ctx); } - template - _LIBCPP_HIDE_FROM_ABI typename FormatContext::iterator format(__maybe_const_r& __range, FormatContext& __ctx) const { + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(__maybe_const_r& __range, _FormatContext& __ctx) const { return __underlying_.format(__range, __ctx); } }; template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __range_default_formatter { +struct _LIBCPP_TEMPLATE_VIS __range_default_formatter { private: using __maybe_const_map = __fmt_maybe_const<_Rp, _CharT>; using __element_type = remove_cvref_t>; @@ -160,7 +148,7 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __range_default_formatte }; template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __range_default_formatter { +struct _LIBCPP_TEMPLATE_VIS __range_default_formatter { private: using __maybe_const_set = __fmt_maybe_const<_Rp, _CharT>; using __element_type = remove_cvref_t>; @@ -185,16 +173,41 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __range_default_formatte template requires(_Kp == range_format::string || _Kp == range_format::debug_string) -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT __range_default_formatter<_Kp, _Rp, _CharT> { - __range_default_formatter() = delete; // TODO FMT Implement +struct _LIBCPP_TEMPLATE_VIS __range_default_formatter<_Kp, _Rp, _CharT> { +private: + // This deviates from the Standard, there the exposition only type is + // formatter, charT> underlying_; + // Using a string_view allows the format function to avoid a copy of the + // input range when it is a contigious range. + formatter, _CharT> __underlying_; + +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __i = __underlying_.parse(__ctx); + if constexpr (_Kp == range_format::debug_string) + __underlying_.set_debug_format(); + return __i; + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(conditional_t, const _Rp&, _Rp&> __range, _FormatContext& __ctx) const { + // When the range is contiguous use a basic_string_view instead to avoid a + // copy of the underlying data. The basic_string_view formatter + // specialization is the "basic" string formatter in libc++. + if constexpr (ranges::contiguous_range<_Rp> && std::ranges::sized_range<_Rp>) + return __underlying_.format(basic_string_view<_CharT>{ranges::data(__range), ranges::size(__range)}, __ctx); + else + return __underlying_.format(basic_string<_CharT>{from_range, __range}, __ctx); + } }; template requires(format_kind<_Rp> != range_format::disabled && formattable, _CharT>) -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter<_Rp, _CharT> - : __range_default_formatter, _Rp, _CharT> {}; +struct _LIBCPP_TEMPLATE_VIS formatter<_Rp, _CharT> : __range_default_formatter, _Rp, _CharT> {}; -#endif //_LIBCPP_STD_VER > 20 +#endif //_LIBCPP_STD_VER >= 23 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/range_formatter.h b/include/c++/v1/__format/range_formatter.h index 9ea61a70..69156307 100644 --- a/include/c++/v1/__format/range_formatter.h +++ b/include/c++/v1/__format/range_formatter.h @@ -15,13 +15,11 @@ #endif #include <__algorithm/ranges_copy.h> -#include <__availability> #include <__chrono/statically_widen.h> #include <__concepts/same_as.h> #include <__config> #include <__format/buffer.h> #include <__format/concepts.h> -#include <__format/format_args.h> #include <__format/format_context.h> #include <__format/format_error.h> #include <__format/formatter.h> @@ -30,60 +28,80 @@ #include <__iterator/back_insert_iterator.h> #include <__ranges/concepts.h> #include <__ranges/data.h> +#include <__ranges/from_range.h> #include <__ranges/size.h> #include <__type_traits/remove_cvref.h> #include _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 20 +#if _LIBCPP_STD_VER >= 23 template requires same_as, _Tp> && formattable<_Tp, _CharT> -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT range_formatter { - _LIBCPP_HIDE_FROM_ABI constexpr void set_separator(basic_string_view<_CharT> __separator) { +struct _LIBCPP_TEMPLATE_VIS range_formatter { + _LIBCPP_HIDE_FROM_ABI constexpr void set_separator(basic_string_view<_CharT> __separator) noexcept { __separator_ = __separator; } _LIBCPP_HIDE_FROM_ABI constexpr void - set_brackets(basic_string_view<_CharT> __opening_bracket, basic_string_view<_CharT> __closing_bracket) { + set_brackets(basic_string_view<_CharT> __opening_bracket, basic_string_view<_CharT> __closing_bracket) noexcept { __opening_bracket_ = __opening_bracket; __closing_bracket_ = __closing_bracket; } - _LIBCPP_HIDE_FROM_ABI constexpr formatter<_Tp, _CharT>& underlying() { return __underlying_; } - _LIBCPP_HIDE_FROM_ABI constexpr const formatter<_Tp, _CharT>& underlying() const { return __underlying_; } + _LIBCPP_HIDE_FROM_ABI constexpr formatter<_Tp, _CharT>& underlying() noexcept { return __underlying_; } + _LIBCPP_HIDE_FROM_ABI constexpr const formatter<_Tp, _CharT>& underlying() const noexcept { return __underlying_; } template - _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __parse_ctx) { - const _CharT* __begin = __parser_.__parse(__parse_ctx, __format_spec::__fields_range); - const _CharT* __end = __parse_ctx.end(); - if (__begin == __end) - return __begin; + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + auto __begin = __parser_.__parse(__ctx, __format_spec::__fields_range); + auto __end = __ctx.end(); + // Note the cases where __begin == __end in this code only happens when the + // replacement-field has no terminating }, or when the parse is manually + // called with a format-spec. The former is an error and the latter means + // using a formatter without the format functions or print. + if (__begin == __end) [[unlikely]] + return __parse_empty_range_underlying_spec(__ctx, __begin); // The n field overrides a possible m type, therefore delay applying the // effect of n until the type has been procesed. - bool __clear_brackets = (*__begin == _CharT('n')); - if (__clear_brackets) { - ++__begin; - if (__begin == __end) { - // Since there is no more data, clear the brackets before returning. - set_brackets({}, {}); - return __begin; - } - } - __parse_type(__begin, __end); - if (__clear_brackets) + if (__parser_.__clear_brackets_) set_brackets({}, {}); - if (__begin == __end) - return __begin; + if (__begin == __end) [[unlikely]] + return __parse_empty_range_underlying_spec(__ctx, __begin); bool __has_range_underlying_spec = *__begin == _CharT(':'); + if (__has_range_underlying_spec) { + // range-underlying-spec: + // : format-spec + ++__begin; + } else if (__begin != __end && *__begin != _CharT('}')) + // When there is no underlaying range the current parse should have + // consumed the format-spec. If not, the not consumed input will be + // processed by the underlying. For example {:-} for a range in invalid, + // the sign field is not present. Without this check the underlying_ will + // get -} as input which my be valid. + std::__throw_format_error("The format specifier should consume the input or end with a '}'"); + + __ctx.advance_to(__begin); + __begin = __underlying_.parse(__ctx); + + // This test should not be required if __has_range_underlying_spec is false. + // However this test makes sure the underlying formatter left the parser in + // a valid state. (Note this is not a full protection against evil parsers. + // For example + // } this is test for the next argument {} + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + // could consume more than it should. + if (__begin != __end && *__begin != _CharT('}')) + std::__throw_format_error("The format specifier should consume the input or end with a '}'"); + if (__parser_.__type_ != __format_spec::__type::__default) { // [format.range.formatter]/6 // If the range-type is s or ?s, then there shall be no n option and no // range-underlying-spec. - if (__clear_brackets) { + if (__parser_.__clear_brackets_) { if (__parser_.__type_ == __format_spec::__type::__string) std::__throw_format_error("The n option and type s can't be used together"); std::__throw_format_error("The n option and type ?s can't be used together"); @@ -96,20 +114,6 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT range_formatter { } else if (!__has_range_underlying_spec) std::__set_debug_format(__underlying_); - if (__has_range_underlying_spec) { - // range-underlying-spec: - // : format-spec - ++__begin; - if (__begin == __end) - return __begin; - - __parse_ctx.advance_to(__begin); - __begin = __underlying_.parse(__parse_ctx); - } - - if (__begin != __end && *__begin != _CharT('}')) - std::__throw_format_error("The format-spec should consume the input or end with a '}'"); - return __begin; } @@ -181,13 +185,7 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT range_formatter { std::formatter, _CharT> __formatter; if (__debug_format) __formatter.set_debug_format(); - // P2106's from_range has not been implemented yet. Instead use a simple - // copy operation. - // TODO FMT use basic_string's "from_range" constructor. - // return std::formatter, _CharT>{}.format(basic_string<_CharT>{from_range, __range}, __ctx); - basic_string<_CharT> __str; - ranges::copy(__range, back_insert_iterator{__str}); - return __formatter.format(__str, __ctx); + return __formatter.format(basic_string<_CharT>{from_range, __range}, __ctx); } } @@ -211,7 +209,8 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT range_formatter { __format_spec::__parser<_CharT> __parser_{.__alignment_ = __format_spec::__alignment::__left}; private: - _LIBCPP_HIDE_FROM_ABI constexpr void __parse_type(const _CharT*& __begin, const _CharT* __end) { + template + _LIBCPP_HIDE_FROM_ABI constexpr void __parse_type(_Iterator& __begin, _Iterator __end) { switch (*__begin) { case _CharT('m'): if constexpr (__fmt_pair_like<_Tp>) { @@ -219,7 +218,7 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT range_formatter { set_separator(_LIBCPP_STATICALLY_WIDEN(_CharT, ", ")); ++__begin; } else - std::__throw_format_error("The range-format-spec type m requires two elements for a pair or tuple"); + std::__throw_format_error("Type m requires a pair or a tuple with two elements"); break; case _CharT('s'): @@ -227,28 +226,38 @@ struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT range_formatter { __parser_.__type_ = __format_spec::__type::__string; ++__begin; } else - std::__throw_format_error("The range-format-spec type s requires formatting a character type"); + std::__throw_format_error("Type s requires character type as formatting argument"); break; case _CharT('?'): ++__begin; if (__begin == __end || *__begin != _CharT('s')) - std::__throw_format_error("The format-spec should consume the input or end with a '}'"); + std::__throw_format_error("The format specifier should consume the input or end with a '}'"); if constexpr (same_as<_Tp, _CharT>) { __parser_.__type_ = __format_spec::__type::__debug; ++__begin; } else - std::__throw_format_error("The range-format-spec type ?s requires formatting a character type"); + std::__throw_format_error("Type ?s requires character type as formatting argument"); } } + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator + __parse_empty_range_underlying_spec(_ParseContext& __ctx, typename _ParseContext::iterator __begin) { + __ctx.advance_to(__begin); + [[maybe_unused]] typename _ParseContext::iterator __result = __underlying_.parse(__ctx); + _LIBCPP_ASSERT_INTERNAL(__result == __begin, + "the underlying's parse function should not advance the input beyond the end of the input"); + return __begin; + } + formatter<_Tp, _CharT> __underlying_; basic_string_view<_CharT> __separator_ = _LIBCPP_STATICALLY_WIDEN(_CharT, ", "); basic_string_view<_CharT> __opening_bracket_ = _LIBCPP_STATICALLY_WIDEN(_CharT, "["); basic_string_view<_CharT> __closing_bracket_ = _LIBCPP_STATICALLY_WIDEN(_CharT, "]"); }; -#endif //_LIBCPP_STD_VER > 20 +#endif //_LIBCPP_STD_VER >= 23 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__format/unicode.h b/include/c++/v1/__format/unicode.h index 43272587..de7d0fea 100644 --- a/include/c++/v1/__format/unicode.h +++ b/include/c++/v1/__format/unicode.h @@ -11,11 +11,15 @@ #define _LIBCPP___FORMAT_UNICODE_H #include <__assert> +#include <__bit/countl.h> +#include <__concepts/same_as.h> #include <__config> #include <__format/extended_grapheme_cluster_table.h> -#include <__type_traits/make_unsigned.h> +#include <__format/indic_conjunct_break_table.h> +#include <__iterator/concepts.h> +#include <__iterator/readable_traits.h> // iter_value_t #include <__utility/unreachable.h> -#include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -23,27 +27,32 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace __unicode { -# if _LIBCPP_STD_VER > 20 - -/// The result of consuming a code point using P2286' semantics -/// -/// TODO FMT Combine __consume and __consume_p2286 in one function. -struct __consume_p2286_result { - // A size of 0 means well formed. This to differenciate between - // a valid code point and a code unit that's invalid like 0b11111xxx. - int __ill_formed_size; - - // If well formed the consumed code point. - // Otherwise the ill-formed code units as unsigned 8-bit values. They are - // stored in reverse order, to make it easier to extract the values. - char32_t __value; +// Helper struct for the result of a consume operation. +// +// The status value for a correct code point is 0. This allows a valid value to +// be used without masking. +// When the decoding fails it know the number of code units affected. For the +// current use-cases that value is not needed, therefore it is not stored. +// The escape routine needs the number of code units for both a valid and +// invalid character and keeps track of it itself. Doing it in this result +// unconditionally would give some overhead when the value is unneeded. +struct __consume_result { + // When __status == __ok it contains the decoded code point. + // Else it contains the replacement character U+FFFD + char32_t __code_point : 31; + + enum : char32_t { + // Consumed a well-formed code point. + __ok = 0, + // Encountered invalid UTF-8 + __error = 1 + } __status : 1 {__ok}; }; - -# endif // _LIBCPP_STD_VER > 20 +static_assert(sizeof(__consume_result) == sizeof(char32_t)); # ifndef _LIBCPP_HAS_NO_UNICODE @@ -62,9 +71,41 @@ struct __consume_p2286_result { inline constexpr char32_t __replacement_character = U'\ufffd'; -_LIBCPP_HIDE_FROM_ABI constexpr bool __is_continuation(const char* __char, int __count) { +// The error of a consume operation. +// +// This sets the code point to the replacement character. This code point does +// not participate in the grapheme clustering, so grapheme clustering code can +// ignore the error status and always use the code point. +inline constexpr __consume_result __consume_result_error{__replacement_character, __consume_result::__error}; + +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool __is_high_surrogate(char32_t __value) { + return __value >= 0xd800 && __value <= 0xdbff; +} + +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool __is_low_surrogate(char32_t __value) { + return __value >= 0xdc00 && __value <= 0xdfff; +} + +// https://www.unicode.org/glossary/#surrogate_code_point +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr bool __is_surrogate(char32_t __value) { + return __value >= 0xd800 && __value <= 0xdfff; +} + +// https://www.unicode.org/glossary/#code_point +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr bool __is_code_point(char32_t __value) { + return __value <= 0x10ffff; +} + +// https://www.unicode.org/glossary/#unicode_scalar_value +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr bool __is_scalar_value(char32_t __value) { + return __unicode::__is_code_point(__value) && !__unicode::__is_surrogate(__value); +} + +template + requires same_as, char> +_LIBCPP_HIDE_FROM_ABI constexpr bool __is_continuation(_Iterator __char, int __count) { do { - if ((*__char & 0b1000'0000) != 0b1000'0000) + if ((*__char & 0b1100'0000) != 0b1000'0000) return false; --__count; ++__char; @@ -82,133 +123,116 @@ class __code_point_view; /// UTF-8 specialization. template <> class __code_point_view { + using _Iterator = basic_string_view::const_iterator; + public: - _LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(const char* __first, const char* __last) + _LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(_Iterator __first, _Iterator __last) : __first_(__first), __last_(__last) {} _LIBCPP_HIDE_FROM_ABI constexpr bool __at_end() const noexcept { return __first_ == __last_; } - _LIBCPP_HIDE_FROM_ABI constexpr const char* __position() const noexcept { return __first_; } + _LIBCPP_HIDE_FROM_ABI constexpr _Iterator __position() const noexcept { return __first_; } - _LIBCPP_HIDE_FROM_ABI constexpr char32_t __consume() noexcept { - _LIBCPP_ASSERT(__first_ != __last_, "can't move beyond the end of input"); + // https://www.unicode.org/versions/latest/ch03.pdf#G7404 + // Based on Table 3-7, Well-Formed UTF-8 Byte Sequences + // + // Code Points First Byte Second Byte Third Byte Fourth Byte Remarks + // U+0000..U+007F 00..7F U+0000..U+007F 1 code unit range + // C0..C1 80..BF invalid overlong encoding + // U+0080..U+07FF C2..DF 80..BF U+0080..U+07FF 2 code unit range + // E0 80..9F 80..BF invalid overlong encoding + // U+0800..U+0FFF E0 A0..BF 80..BF U+0800..U+FFFF 3 code unit range + // U+1000..U+CFFF E1..EC 80..BF 80..BF + // U+D000..U+D7FF ED 80..9F 80..BF + // U+D800..U+DFFF ED A0..BF 80..BF invalid encoding of surrogate code point + // U+E000..U+FFFF EE..EF 80..BF 80..BF + // F0 80..8F 80..BF 80..BF invalid overlong encoding + // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF U+10000..U+10FFFF 4 code unit range + // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + // F4 90..BF 80..BF 80..BF U+110000.. invalid code point range + // + // Unlike other parsers, these invalid entries are tested after decoding. + // - The parser always needs to consume these code units + // - The code is optimized for well-formed UTF-8 + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __consume_result __consume() noexcept { + _LIBCPP_ASSERT_INTERNAL(__first_ != __last_, "can't move beyond the end of input"); // Based on the number of leading 1 bits the number of code units in the // code point can be determined. See // https://en.wikipedia.org/wiki/UTF-8#Encoding - switch (_VSTD::countl_one(static_cast(*__first_))) { + switch (std::countl_one(static_cast(*__first_))) { case 0: - return *__first_++; + return {static_cast(*__first_++)}; - case 2: + case 2: { if (__last_ - __first_ < 2 || !__unicode::__is_continuation(__first_ + 1, 1)) [[unlikely]] break; - else { - char32_t __value = static_cast(*__first_++) & 0x1f; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - return __value; - } - case 3: - if (__last_ - __first_ < 3 || !__unicode::__is_continuation(__first_ + 1, 2)) [[unlikely]] - break; - else { - char32_t __value = static_cast(*__first_++) & 0x0f; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - return __value; - } + char32_t __value = static_cast(*__first_++) & 0x1f; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; - case 4: - if (__last_ - __first_ < 4 || !__unicode::__is_continuation(__first_ + 1, 3)) [[unlikely]] - break; - else { - char32_t __value = static_cast(*__first_++) & 0x07; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - return __value; - } - } - // An invalid number of leading ones can be garbage or a code unit in the - // middle of a code point. By consuming one code unit the parser may get - // "in sync" after a few code units. - ++__first_; - return __replacement_character; - } - -# if _LIBCPP_STD_VER > 20 - _LIBCPP_HIDE_FROM_ABI constexpr __consume_p2286_result __consume_p2286() noexcept { - _LIBCPP_ASSERT(__first_ != __last_, "can't move beyond the end of input"); + // These values should be encoded in 1 UTF-8 code unit. + if (__value < 0x0080) [[unlikely]] + return __consume_result_error; - // Based on the number of leading 1 bits the number of code units in the - // code point can be determined. See - // https://en.wikipedia.org/wiki/UTF-8#Encoding - switch (std::countl_one(static_cast(*__first_))) { - case 0: - return {0, static_cast(*__first_++)}; + return {__value}; + } - case 2: - if (__last_ - __first_ < 2) [[unlikely]] + case 3: { + if (__last_ - __first_ < 3 || !__unicode::__is_continuation(__first_ + 1, 2)) [[unlikely]] break; - if (__unicode::__is_continuation(__first_ + 1, 1)) { - char32_t __value = static_cast(*__first_++) & 0x1f; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - return {0, __value}; - } - break; + char32_t __value = static_cast(*__first_++) & 0x0f; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; - case 3: - if (__last_ - __first_ < 3) [[unlikely]] - break; + // These values should be encoded in 1 or 2 UTF-8 code units. + if (__value < 0x0800) [[unlikely]] + return __consume_result_error; - if (__unicode::__is_continuation(__first_ + 1, 2)) { - char32_t __value = static_cast(*__first_++) & 0x0f; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - return {0, __value}; - } - break; + // A surrogate value is always encoded in 3 UTF-8 code units. + if (__unicode::__is_surrogate(__value)) [[unlikely]] + return __consume_result_error; + + return {__value}; + } - case 4: - if (__last_ - __first_ < 4) [[unlikely]] + case 4: { + if (__last_ - __first_ < 4 || !__unicode::__is_continuation(__first_ + 1, 3)) [[unlikely]] break; - if (__unicode::__is_continuation(__first_ + 1, 3)) { - char32_t __value = static_cast(*__first_++) & 0x07; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; - __value <<= 6; - __value |= static_cast(*__first_++) & 0x3f; + char32_t __value = static_cast(*__first_++) & 0x07; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; - if (__value > 0x10FFFF) // Outside the valid Unicode range? - return {4, __value}; + // These values should be encoded in 1, 2, or 3 UTF-8 code units. + if (__value < 0x10000) [[unlikely]] + return __consume_result_error; - return {0, __value}; - } - break; + // A value too large is always encoded in 4 UTF-8 code units. + if (!__unicode::__is_code_point(__value)) [[unlikely]] + return __consume_result_error; + + return {__value}; + } } // An invalid number of leading ones can be garbage or a code unit in the // middle of a code point. By consuming one code unit the parser may get // "in sync" after a few code units. - return {1, static_cast(*__first_++)}; + ++__first_; + return __consume_result_error; } -# endif // _LIBCPP_STD_VER > 20 private: - const char* __first_; - const char* __last_; + _Iterator __first_; + _Iterator __last_; }; # ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS @@ -225,157 +249,276 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool __is_surrogate_pair_low(wchar_t __value) { /// - 4 UTF-32 (for example Linux) template <> class __code_point_view { + using _Iterator = typename basic_string_view::const_iterator; + public: static_assert(sizeof(wchar_t) == 2 || sizeof(wchar_t) == 4, "sizeof(wchar_t) has a not implemented value"); - _LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(const wchar_t* __first, const wchar_t* __last) + _LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(_Iterator __first, _Iterator __last) : __first_(__first), __last_(__last) {} - _LIBCPP_HIDE_FROM_ABI constexpr const wchar_t* __position() const noexcept { return __first_; } + _LIBCPP_HIDE_FROM_ABI constexpr _Iterator __position() const noexcept { return __first_; } _LIBCPP_HIDE_FROM_ABI constexpr bool __at_end() const noexcept { return __first_ == __last_; } - _LIBCPP_HIDE_FROM_ABI constexpr char32_t __consume() noexcept { - _LIBCPP_ASSERT(__first_ != __last_, "can't move beyond the end of input"); + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __consume_result __consume() noexcept { + _LIBCPP_ASSERT_INTERNAL(__first_ != __last_, "can't move beyond the end of input"); + char32_t __value = static_cast(*__first_++); if constexpr (sizeof(wchar_t) == 2) { - char32_t __result = *__first_++; - // Is the code unit part of a surrogate pair? See - // https://en.wikipedia.org/wiki/UTF-16#U+D800_to_U+DFFF - if (__result >= 0xd800 && __result <= 0xDfff) { - // Malformed Unicode. - if (__first_ == __last_) [[unlikely]] - return __replacement_character; - - __result -= 0xd800; - __result <<= 10; - __result += *__first_++ - 0xdc00; - __result += 0x10000; - } - return __result; + if (__unicode::__is_low_surrogate(__value)) [[unlikely]] + return __consume_result_error; - } else if constexpr (sizeof(wchar_t) == 4) { - char32_t __result = *__first_++; - if (__result > 0x10FFFF) [[unlikely]] - return __replacement_character; - return __result; - } else { - __libcpp_unreachable(); - } - } + if (__unicode::__is_high_surrogate(__value)) { + if (__first_ == __last_ || !__unicode::__is_low_surrogate(static_cast(*__first_))) [[unlikely]] + return __consume_result_error; -# if _LIBCPP_STD_VER > 20 - _LIBCPP_HIDE_FROM_ABI constexpr __consume_p2286_result __consume_p2286() noexcept { - _LIBCPP_ASSERT(__first_ != __last_, "can't move beyond the end of input"); + __value -= 0xd800; + __value <<= 10; + __value += static_cast(*__first_++) - 0xdc00; + __value += 0x10000; - char32_t __result = *__first_++; - if constexpr (sizeof(wchar_t) == 2) { - // https://en.wikipedia.org/wiki/UTF-16#U+D800_to_U+DFFF - if (__is_surrogate_pair_high(__result)) { - // Malformed Unicode. - if (__first_ == __last_ || !__is_surrogate_pair_low(*(__first_ + 1))) [[unlikely]] - return {1, __result}; - - __result -= 0xd800; - __result <<= 10; - __result += *__first_++ - 0xdc00; - __result += 0x10000; - } else if (__is_surrogate_pair_low(__result)) - // A code point shouldn't start with the low surrogate pair - return {1, __result}; + if (!__unicode::__is_code_point(__value)) [[unlikely]] + return __consume_result_error; + } } else { - if (__result > 0x10FFFF) [[unlikely]] - return {1, __result}; + if (!__unicode::__is_scalar_value(__value)) [[unlikely]] + return __consume_result_error; } - return {0, __result}; + return {__value}; } -# endif // _LIBCPP_STD_VER > 20 private: - const wchar_t* __first_; - const wchar_t* __last_; + _Iterator __first_; + _Iterator __last_; }; # endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS -_LIBCPP_HIDE_FROM_ABI constexpr bool __at_extended_grapheme_cluster_break( - bool& __ri_break_allowed, - bool __has_extened_pictographic, - __extended_grapheme_custer_property_boundary::__property __prev, - __extended_grapheme_custer_property_boundary::__property __next) { - using __extended_grapheme_custer_property_boundary::__property; +// State machine to implement the Extended Grapheme Cluster Boundary +// +// The exact rules may change between Unicode versions. +// This implements the extended rules see +// https://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries +class __extended_grapheme_cluster_break { + using __EGC_property = __extended_grapheme_custer_property_boundary::__property; + using __inCB_property = __indic_conjunct_break::__property; - __has_extened_pictographic |= __prev == __property::__Extended_Pictographic; +public: + _LIBCPP_HIDE_FROM_ABI constexpr explicit __extended_grapheme_cluster_break(char32_t __first_code_point) + : __prev_code_point_(__first_code_point), + __prev_property_(__extended_grapheme_custer_property_boundary::__get_property(__first_code_point)) { + // Initializes the active rule. + if (__prev_property_ == __EGC_property::__Extended_Pictographic) + __active_rule_ = __rule::__GB11_emoji; + else if (__prev_property_ == __EGC_property::__Regional_Indicator) + __active_rule_ = __rule::__GB12_GB13_regional_indicator; + else if (__indic_conjunct_break::__get_property(__first_code_point) == __inCB_property::__Consonant) + __active_rule_ = __rule::__GB9c_indic_conjunct_break; + } - // https://www.unicode.org/reports/tr29/tr29-39.html#Grapheme_Cluster_Boundary_Rules + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(char32_t __next_code_point) { + __EGC_property __next_property = __extended_grapheme_custer_property_boundary::__get_property(__next_code_point); + bool __result = __evaluate(__next_code_point, __next_property); + __prev_code_point_ = __next_code_point; + __prev_property_ = __next_property; + return __result; + } + + // The code point whose break propery are considered during the next + // evaluation cyle. + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr char32_t __current_code_point() const { return __prev_code_point_; } - // *** Break at the start and end of text, unless the text is empty. *** +private: + // The naming of the identifiers matches the Unicode standard. + // NOLINTBEGIN(readability-identifier-naming) + + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + __evaluate(char32_t __next_code_point, __EGC_property __next_property) { + switch (__active_rule_) { + case __rule::__none: + return __evaluate_none(__next_code_point, __next_property); + case __rule::__GB9c_indic_conjunct_break: + return __evaluate_GB9c_indic_conjunct_break(__next_code_point, __next_property); + case __rule::__GB11_emoji: + return __evaluate_GB11_emoji(__next_code_point, __next_property); + case __rule::__GB12_GB13_regional_indicator: + return __evaluate_GB12_GB13_regional_indicator(__next_code_point, __next_property); + } + __libcpp_unreachable(); + } - _LIBCPP_ASSERT(__prev != __property::__sot, "should be handled in the constructor"); // GB1 - _LIBCPP_ASSERT(__prev != __property::__eot, "should be handled by our caller"); // GB2 + _LIBCPP_HIDE_FROM_ABI constexpr bool __evaluate_none(char32_t __next_code_point, __EGC_property __next_property) { + // *** Break at the start and end of text, unless the text is empty. *** - // *** Do not break between a CR and LF. Otherwise, break before and after controls. *** - if (__prev == __property::__CR && __next == __property::__LF) // GB3 - return false; + _LIBCPP_ASSERT_INTERNAL(__prev_property_ != __EGC_property::__sot, "should be handled in the constructor"); // GB1 + _LIBCPP_ASSERT_INTERNAL(__prev_property_ != __EGC_property::__eot, "should be handled by our caller"); // GB2 - if (__prev == __property::__Control || __prev == __property::__CR || __prev == __property::__LF) // GB4 - return true; + // *** Do not break between a CR and LF. Otherwise, break before and after controls. *** + if (__prev_property_ == __EGC_property::__CR && __next_property == __EGC_property::__LF) // GB3 + return false; - if (__next == __property::__Control || __next == __property::__CR || __next == __property::__LF) // GB5 - return true; + if (__prev_property_ == __EGC_property::__Control || __prev_property_ == __EGC_property::__CR || + __prev_property_ == __EGC_property::__LF) // GB4 + return true; - // *** Do not break Hangul syllable sequences. *** - if (__prev == __property::__L && - (__next == __property::__L || __next == __property::__V || __next == __property::__LV || - __next == __property::__LVT)) // GB6 - return false; + if (__next_property == __EGC_property::__Control || __next_property == __EGC_property::__CR || + __next_property == __EGC_property::__LF) // GB5 + return true; - if ((__prev == __property::__LV || __prev == __property::__V) && - (__next == __property::__V || __next == __property::__T)) // GB7 - return false; + // *** Do not break Hangul syllable sequences. *** + if (__prev_property_ == __EGC_property::__L && + (__next_property == __EGC_property::__L || __next_property == __EGC_property::__V || + __next_property == __EGC_property::__LV || __next_property == __EGC_property::__LVT)) // GB6 + return false; - if ((__prev == __property::__LVT || __prev == __property::__T) && __next == __property::__T) // GB8 - return false; + if ((__prev_property_ == __EGC_property::__LV || __prev_property_ == __EGC_property::__V) && + (__next_property == __EGC_property::__V || __next_property == __EGC_property::__T)) // GB7 + return false; - // *** Do not break before extending characters or ZWJ. *** - if (__next == __property::__Extend || __next == __property::__ZWJ) - return false; // GB9 + if ((__prev_property_ == __EGC_property::__LVT || __prev_property_ == __EGC_property::__T) && + __next_property == __EGC_property::__T) // GB8 + return false; - // *** Do not break before SpacingMarks, or after Prepend characters. *** - if (__next == __property::__SpacingMark) // GB9a - return false; + // *** Do not break before extending characters or ZWJ. *** + if (__next_property == __EGC_property::__Extend || __next_property == __EGC_property::__ZWJ) + return false; // GB9 - if (__prev == __property::__Prepend) // GB9b - return false; + // *** Do not break before SpacingMarks, or after Prepend characters. *** + if (__next_property == __EGC_property::__SpacingMark) // GB9a + return false; - // *** Do not break within emoji modifier sequences or emoji zwj sequences. *** + if (__prev_property_ == __EGC_property::__Prepend) // GB9b + return false; - // GB11 \p{Extended_Pictographic} Extend* ZWJ x \p{Extended_Pictographic} - // - // Note that several parts of this rule are matched by GB9: Any x (Extend | ZWJ) - // - \p{Extended_Pictographic} x Extend - // - Extend x Extend - // - \p{Extended_Pictographic} x ZWJ - // - Extend x ZWJ - // - // So the only case left to test is - // - \p{Extended_Pictographic}' x ZWJ x \p{Extended_Pictographic} - // where \p{Extended_Pictographic}' is stored in __has_extened_pictographic - if (__has_extened_pictographic && __prev == __property::__ZWJ && __next == __property::__Extended_Pictographic) - return false; + // *** Do not break within certain combinations with Indic_Conjunct_Break (InCB)=Linker. *** + if (__indic_conjunct_break::__get_property(__next_code_point) == __inCB_property::__Consonant) { + __active_rule_ = __rule::__GB9c_indic_conjunct_break; + __GB9c_indic_conjunct_break_state_ = __GB9c_indic_conjunct_break_state::__Consonant; + return true; + } - // *** Do not break within emoji flag sequences *** + // *** Do not break within emoji modifier sequences or emoji zwj sequences. *** + if (__next_property == __EGC_property::__Extended_Pictographic) { + __active_rule_ = __rule::__GB11_emoji; + __GB11_emoji_state_ = __GB11_emoji_state::__Extended_Pictographic; + return true; + } - // That is, do not break between regional indicator (RI) symbols if there - // is an odd number of RI characters before the break point. + // *** Do not break within emoji flag sequences *** - if (__prev == __property::__Regional_Indicator && __next == __property::__Regional_Indicator) { // GB12 + GB13 - __ri_break_allowed = !__ri_break_allowed; - return __ri_break_allowed; + // That is, do not break between regional indicator (RI) symbols if there + // is an odd number of RI characters before the break point. + if (__next_property == __EGC_property::__Regional_Indicator) { // GB12 + GB13 + __active_rule_ = __rule::__GB12_GB13_regional_indicator; + return true; + } + + // *** Otherwise, break everywhere. *** + return true; // GB999 } - // *** Otherwise, break everywhere. *** - return true; // GB999 -} + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + __evaluate_GB9c_indic_conjunct_break(char32_t __next_code_point, __EGC_property __next_property) { + __inCB_property __break = __indic_conjunct_break::__get_property(__next_code_point); + if (__break == __inCB_property::__none) { + __active_rule_ = __rule::__none; + return __evaluate_none(__next_code_point, __next_property); + } + + switch (__GB9c_indic_conjunct_break_state_) { + case __GB9c_indic_conjunct_break_state::__Consonant: + if (__break == __inCB_property::__Extend) { + return false; + } + if (__break == __inCB_property::__Linker) { + __GB9c_indic_conjunct_break_state_ = __GB9c_indic_conjunct_break_state::__Linker; + return false; + } + __active_rule_ = __rule::__none; + return __evaluate_none(__next_code_point, __next_property); + + case __GB9c_indic_conjunct_break_state::__Linker: + if (__break == __inCB_property::__Extend) { + return false; + } + if (__break == __inCB_property::__Linker) { + return false; + } + if (__break == __inCB_property::__Consonant) { + __GB9c_indic_conjunct_break_state_ = __GB9c_indic_conjunct_break_state::__Consonant; + return false; + } + __active_rule_ = __rule::__none; + return __evaluate_none(__next_code_point, __next_property); + } + __libcpp_unreachable(); + } + + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + __evaluate_GB11_emoji(char32_t __next_code_point, __EGC_property __next_property) { + switch (__GB11_emoji_state_) { + case __GB11_emoji_state::__Extended_Pictographic: + if (__next_property == __EGC_property::__Extend) { + __GB11_emoji_state_ = __GB11_emoji_state::__Extend; + return false; + } + [[fallthrough]]; + case __GB11_emoji_state::__Extend: + if (__next_property == __EGC_property::__ZWJ) { + __GB11_emoji_state_ = __GB11_emoji_state::__ZWJ; + return false; + } + if (__next_property == __EGC_property::__Extend) + return false; + __active_rule_ = __rule::__none; + return __evaluate_none(__next_code_point, __next_property); + + case __GB11_emoji_state::__ZWJ: + if (__next_property == __EGC_property::__Extended_Pictographic) { + __GB11_emoji_state_ = __GB11_emoji_state::__Extended_Pictographic; + return false; + } + __active_rule_ = __rule::__none; + return __evaluate_none(__next_code_point, __next_property); + } + __libcpp_unreachable(); + } + + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool + __evaluate_GB12_GB13_regional_indicator(char32_t __next_code_point, __EGC_property __next_property) { + __active_rule_ = __rule::__none; + if (__next_property == __EGC_property::__Regional_Indicator) + return false; + return __evaluate_none(__next_code_point, __next_property); + } + + char32_t __prev_code_point_; + __EGC_property __prev_property_; + + enum class __rule { + __none, + __GB9c_indic_conjunct_break, + __GB11_emoji, + __GB12_GB13_regional_indicator, + }; + __rule __active_rule_ = __rule::__none; + + enum class __GB11_emoji_state { + __Extended_Pictographic, + __Extend, + __ZWJ, + }; + __GB11_emoji_state __GB11_emoji_state_ = __GB11_emoji_state::__Extended_Pictographic; + + enum class __GB9c_indic_conjunct_break_state { + __Consonant, + __Linker, + }; + + __GB9c_indic_conjunct_break_state __GB9c_indic_conjunct_break_state_ = __GB9c_indic_conjunct_break_state::__Consonant; + + // NOLINTEND(readability-identifier-naming) +}; /// Helper class to extract an extended grapheme cluster from a Unicode character range. /// @@ -384,11 +527,11 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool __at_extended_grapheme_cluster_break( /// Therefore only this code point is extracted. template class __extended_grapheme_cluster_view { + using _Iterator = typename basic_string_view<_CharT>::const_iterator; + public: - _LIBCPP_HIDE_FROM_ABI constexpr explicit __extended_grapheme_cluster_view(const _CharT* __first, const _CharT* __last) - : __code_point_view_(__first, __last), - __next_code_point_(__code_point_view_.__consume()), - __next_prop_(__extended_grapheme_custer_property_boundary::__get_property(__next_code_point_)) {} + _LIBCPP_HIDE_FROM_ABI constexpr explicit __extended_grapheme_cluster_view(_Iterator __first, _Iterator __last) + : __code_point_view_(__first, __last), __at_break_(__code_point_view_.__consume().__code_point) {} struct __cluster { /// The first code point of the extended grapheme cluster. @@ -401,51 +544,27 @@ class __extended_grapheme_cluster_view { /// /// It's expected the caller has the start position and thus can determine /// the code unit range of the extended grapheme cluster. - const _CharT* __last_; + _Iterator __last_; }; - _LIBCPP_HIDE_FROM_ABI constexpr __cluster __consume() { - _LIBCPP_ASSERT( - __next_prop_ != __extended_grapheme_custer_property_boundary::__property::__eot, - "can't move beyond the end of input"); - char32_t __code_point = __next_code_point_; - if (!__code_point_view_.__at_end()) - return {__code_point, __get_break()}; - - __next_prop_ = __extended_grapheme_custer_property_boundary::__property::__eot; - return {__code_point, __code_point_view_.__position()}; + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __cluster __consume() { + char32_t __code_point = __at_break_.__current_code_point(); + _Iterator __position = __code_point_view_.__position(); + while (!__code_point_view_.__at_end()) { + if (__at_break_(__code_point_view_.__consume().__code_point)) + break; + __position = __code_point_view_.__position(); + } + return {__code_point, __position}; } private: __code_point_view<_CharT> __code_point_view_; - - char32_t __next_code_point_; - __extended_grapheme_custer_property_boundary::__property __next_prop_; - - _LIBCPP_HIDE_FROM_ABI constexpr const _CharT* __get_break() { - bool __ri_break_allowed = true; - bool __has_extened_pictographic = false; - while (true) { - const _CharT* __result = __code_point_view_.__position(); - __extended_grapheme_custer_property_boundary::__property __prev = __next_prop_; - if (__code_point_view_.__at_end()) { - __next_prop_ = __extended_grapheme_custer_property_boundary::__property::__eot; - return __result; - } - __next_code_point_ = __code_point_view_.__consume(); - __next_prop_ = __extended_grapheme_custer_property_boundary::__get_property(__next_code_point_); - - __has_extened_pictographic |= - __prev == __extended_grapheme_custer_property_boundary::__property::__Extended_Pictographic; - - if (__at_extended_grapheme_cluster_break(__ri_break_allowed, __has_extened_pictographic, __prev, __next_prop_)) - return __result; - } - } + __extended_grapheme_cluster_break __at_break_; }; -template -__extended_grapheme_cluster_view(const _CharT*, const _CharT*) -> __extended_grapheme_cluster_view<_CharT>; +template +__extended_grapheme_cluster_view(_Iterator, _Iterator) -> __extended_grapheme_cluster_view>; # else // _LIBCPP_HAS_NO_UNICODE @@ -453,36 +572,30 @@ __extended_grapheme_cluster_view(const _CharT*, const _CharT*) -> __extended_gra // This makes it easier to write code agnostic of the _LIBCPP_HAS_NO_UNICODE define. template class __code_point_view { + using _Iterator = typename basic_string_view<_CharT>::const_iterator; + public: - _LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(const _CharT* __first, const _CharT* __last) + _LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(_Iterator __first, _Iterator __last) : __first_(__first), __last_(__last) {} _LIBCPP_HIDE_FROM_ABI constexpr bool __at_end() const noexcept { return __first_ == __last_; } - _LIBCPP_HIDE_FROM_ABI constexpr const _CharT* __position() const noexcept { return __first_; } - - _LIBCPP_HIDE_FROM_ABI constexpr char32_t __consume() noexcept { - _LIBCPP_ASSERT(__first_ != __last_, "can't move beyond the end of input"); - return *__first_++; - } - -# if _LIBCPP_STD_VER > 20 - _LIBCPP_HIDE_FROM_ABI constexpr __consume_p2286_result __consume_p2286() noexcept { - _LIBCPP_ASSERT(__first_ != __last_, "can't move beyond the end of input"); + _LIBCPP_HIDE_FROM_ABI constexpr _Iterator __position() const noexcept { return __first_; } - return {0, std::make_unsigned_t<_CharT>(*__first_++)}; + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __consume_result __consume() noexcept { + _LIBCPP_ASSERT_INTERNAL(__first_ != __last_, "can't move beyond the end of input"); + return {static_cast(*__first_++)}; } -# endif // _LIBCPP_STD_VER > 20 private: - const _CharT* __first_; - const _CharT* __last_; + _Iterator __first_; + _Iterator __last_; }; # endif // _LIBCPP_HAS_NO_UNICODE } // namespace __unicode -#endif //_LIBCPP_STD_VER > 17 +#endif //_LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/binary_function.h b/include/c++/v1/__functional/binary_function.h index fdedb8b1..ddee3b17 100644 --- a/include/c++/v1/__functional/binary_function.h +++ b/include/c++/v1/__functional/binary_function.h @@ -21,20 +21,20 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 binary_function -{ - typedef _Arg1 first_argument_type; - typedef _Arg2 second_argument_type; - typedef _Result result_type; +struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 binary_function { + typedef _Arg1 first_argument_type; + typedef _Arg2 second_argument_type; + typedef _Result result_type; }; #endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) -template struct __binary_function_keep_layout_base { +template +struct __binary_function_keep_layout_base { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using first_argument_type _LIBCPP_DEPRECATED_IN_CXX17 = _Arg1; + using first_argument_type _LIBCPP_DEPRECATED_IN_CXX17 = _Arg1; using second_argument_type _LIBCPP_DEPRECATED_IN_CXX17 = _Arg2; - using result_type _LIBCPP_DEPRECATED_IN_CXX17 = _Result; + using result_type _LIBCPP_DEPRECATED_IN_CXX17 = _Result; #endif }; diff --git a/include/c++/v1/__functional/binary_negate.h b/include/c++/v1/__functional/binary_negate.h index 73ecea99..ce52b5ae 100644 --- a/include/c++/v1/__functional/binary_negate.h +++ b/include/c++/v1/__functional/binary_negate.h @@ -25,23 +25,24 @@ template class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 binary_negate : public __binary_function -{ - _Predicate __pred_; + bool> { + _Predicate __pred_; + public: - _LIBCPP_INLINE_VISIBILITY explicit _LIBCPP_CONSTEXPR_SINCE_CXX14 - binary_negate(const _Predicate& __pred) : __pred_(__pred) {} + _LIBCPP_HIDE_FROM_ABI explicit _LIBCPP_CONSTEXPR_SINCE_CXX14 binary_negate(const _Predicate& __pred) + : __pred_(__pred) {} - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const typename _Predicate::first_argument_type& __x, - const typename _Predicate::second_argument_type& __y) const - {return !__pred_(__x, __y);} + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()( + const typename _Predicate::first_argument_type& __x, const typename _Predicate::second_argument_type& __y) const { + return !__pred_(__x, __y); + } }; template -_LIBCPP_DEPRECATED_IN_CXX17 inline _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY -binary_negate<_Predicate> -not2(const _Predicate& __pred) {return binary_negate<_Predicate>(__pred);} +_LIBCPP_DEPRECATED_IN_CXX17 inline _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI binary_negate<_Predicate> +not2(const _Predicate& __pred) { + return binary_negate<_Predicate>(__pred); +} #endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) diff --git a/include/c++/v1/__functional/bind.h b/include/c++/v1/__functional/bind.h index 297e4e51..b4f46441 100644 --- a/include/c++/v1/__functional/bind.h +++ b/include/c++/v1/__functional/bind.h @@ -13,9 +13,12 @@ #include <__config> #include <__functional/invoke.h> #include <__functional/weak_result_type.h> +#include <__fwd/functional.h> +#include <__type_traits/decay.h> +#include <__type_traits/is_reference_wrapper.h> +#include <__type_traits/is_void.h> #include #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -23,363 +26,267 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -struct is_bind_expression : _If< - _IsSame<_Tp, __remove_cvref_t<_Tp> >::value, - false_type, - is_bind_expression<__remove_cvref_t<_Tp> > -> {}; +template +struct is_bind_expression + : _If< _IsSame<_Tp, __remove_cvref_t<_Tp> >::value, false_type, is_bind_expression<__remove_cvref_t<_Tp> > > {}; -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template -inline constexpr size_t is_bind_expression_v = is_bind_expression<_Tp>::value; +inline constexpr bool is_bind_expression_v = is_bind_expression<_Tp>::value; #endif -template -struct is_placeholder : _If< - _IsSame<_Tp, __remove_cvref_t<_Tp> >::value, - integral_constant, - is_placeholder<__remove_cvref_t<_Tp> > -> {}; +template +struct is_placeholder + : _If< _IsSame<_Tp, __remove_cvref_t<_Tp> >::value, + integral_constant, + is_placeholder<__remove_cvref_t<_Tp> > > {}; -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template -inline constexpr size_t is_placeholder_v = is_placeholder<_Tp>::value; +inline constexpr int is_placeholder_v = is_placeholder<_Tp>::value; #endif -namespace placeholders -{ +namespace placeholders { -template struct __ph {}; - -#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY) -_LIBCPP_FUNC_VIS extern const __ph<1> _1; -_LIBCPP_FUNC_VIS extern const __ph<2> _2; -_LIBCPP_FUNC_VIS extern const __ph<3> _3; -_LIBCPP_FUNC_VIS extern const __ph<4> _4; -_LIBCPP_FUNC_VIS extern const __ph<5> _5; -_LIBCPP_FUNC_VIS extern const __ph<6> _6; -_LIBCPP_FUNC_VIS extern const __ph<7> _7; -_LIBCPP_FUNC_VIS extern const __ph<8> _8; -_LIBCPP_FUNC_VIS extern const __ph<9> _9; -_LIBCPP_FUNC_VIS extern const __ph<10> _10; -#else -/* inline */ constexpr __ph<1> _1{}; -/* inline */ constexpr __ph<2> _2{}; -/* inline */ constexpr __ph<3> _3{}; -/* inline */ constexpr __ph<4> _4{}; -/* inline */ constexpr __ph<5> _5{}; -/* inline */ constexpr __ph<6> _6{}; -/* inline */ constexpr __ph<7> _7{}; -/* inline */ constexpr __ph<8> _8{}; -/* inline */ constexpr __ph<9> _9{}; -/* inline */ constexpr __ph<10> _10{}; -#endif // defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY) +template +struct __ph {}; -} // namespace placeholders +// C++17 recommends that we implement placeholders as `inline constexpr`, but allows +// implementing them as `extern `. Libc++ implements them as +// `extern const` in all standard modes to avoid an ABI break in C++03: making them +// `inline constexpr` requires removing their definition in the shared library to +// avoid ODR violations, which is an ABI break. +// +// In practice, since placeholders are empty, `extern const` is almost impossible +// to distinguish from `inline constexpr` from a usage stand point. +_LIBCPP_EXPORTED_FROM_ABI extern const __ph<1> _1; +_LIBCPP_EXPORTED_FROM_ABI extern const __ph<2> _2; +_LIBCPP_EXPORTED_FROM_ABI extern const __ph<3> _3; +_LIBCPP_EXPORTED_FROM_ABI extern const __ph<4> _4; +_LIBCPP_EXPORTED_FROM_ABI extern const __ph<5> _5; +_LIBCPP_EXPORTED_FROM_ABI extern const __ph<6> _6; +_LIBCPP_EXPORTED_FROM_ABI extern const __ph<7> _7; +_LIBCPP_EXPORTED_FROM_ABI extern const __ph<8> _8; +_LIBCPP_EXPORTED_FROM_ABI extern const __ph<9> _9; +_LIBCPP_EXPORTED_FROM_ABI extern const __ph<10> _10; -template -struct is_placeholder > - : public integral_constant {}; +} // namespace placeholders +template +struct is_placeholder > : public integral_constant {}; #ifndef _LIBCPP_CXX03_LANG template -inline _LIBCPP_INLINE_VISIBILITY -_Tp& -__mu(reference_wrapper<_Tp> __t, _Uj&) -{ - return __t.get(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp& __mu(reference_wrapper<_Tp> __t, _Uj&) { + return __t.get(); } -template -inline _LIBCPP_INLINE_VISIBILITY -typename __invoke_of<_Ti&, _Uj...>::type -__mu_expand(_Ti& __ti, tuple<_Uj...>& __uj, __tuple_indices<_Indx...>) -{ - return __ti(_VSTD::forward<_Uj>(_VSTD::get<_Indx>(__uj))...); +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 typename __invoke_of<_Ti&, _Uj...>::type +__mu_expand(_Ti& __ti, tuple<_Uj...>& __uj, __tuple_indices<_Indx...>) { + return __ti(std::forward<_Uj>(std::get<_Indx>(__uj))...); } -template -inline _LIBCPP_INLINE_VISIBILITY -typename __enable_if_t -< - is_bind_expression<_Ti>::value, - __invoke_of<_Ti&, _Uj...> ->::type -__mu(_Ti& __ti, tuple<_Uj...>& __uj) -{ - typedef typename __make_tuple_indices::type __indices; - return _VSTD::__mu_expand(__ti, __uj, __indices()); +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 typename __invoke_of<_Ti&, _Uj...>::type +__mu(_Ti& __ti, tuple<_Uj...>& __uj) { + typedef typename __make_tuple_indices::type __indices; + return std::__mu_expand(__ti, __uj, __indices()); } -template +template struct __mu_return2 {}; template -struct __mu_return2 -{ - typedef typename tuple_element::value - 1, _Uj>::type type; +struct __mu_return2 { + typedef typename tuple_element::value - 1, _Uj>::type type; }; -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - 0 < is_placeholder<_Ti>::value, - typename __mu_return2<0 < is_placeholder<_Ti>::value, _Ti, _Uj>::type ->::type -__mu(_Ti&, _Uj& __uj) -{ - const size_t _Indx = is_placeholder<_Ti>::value - 1; - return _VSTD::forward::type>(_VSTD::get<_Indx>(__uj)); +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +typename __mu_return2<0 < is_placeholder<_Ti>::value, _Ti, _Uj>::type +__mu(_Ti&, _Uj& __uj) { + const size_t __indx = is_placeholder<_Ti>::value - 1; + return std::forward::type>(std::get<__indx>(__uj)); } -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_bind_expression<_Ti>::value && - is_placeholder<_Ti>::value == 0 && - !__is_reference_wrapper<_Ti>::value, - _Ti& ->::type -__mu(_Ti& __ti, _Uj&) -{ - return __ti; +template ::value && is_placeholder<_Ti>::value == 0 && + !__is_reference_wrapper<_Ti>::value, + int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Ti& __mu(_Ti& __ti, _Uj&) { + return __ti; } -template +template struct __mu_return_impl; -template -struct __mu_return_invokable // false +template +struct __mu_return_invokable // false { - typedef __nat type; + typedef __nat type; }; -template -struct __mu_return_invokable -{ - typedef typename __invoke_of<_Ti&, _Uj...>::type type; +template +struct __mu_return_invokable { + typedef typename __invoke_of<_Ti&, _Uj...>::type type; }; -template +template struct __mu_return_impl<_Ti, false, true, false, tuple<_Uj...> > - : public __mu_return_invokable<__invokable<_Ti&, _Uj...>::value, _Ti, _Uj...> -{ -}; + : public __mu_return_invokable<__invokable<_Ti&, _Uj...>::value, _Ti, _Uj...> {}; template -struct __mu_return_impl<_Ti, false, false, true, _TupleUj> -{ - typedef typename tuple_element::value - 1, - _TupleUj>::type&& type; +struct __mu_return_impl<_Ti, false, false, true, _TupleUj> { + typedef typename tuple_element::value - 1, _TupleUj>::type&& type; }; template -struct __mu_return_impl<_Ti, true, false, false, _TupleUj> -{ - typedef typename _Ti::type& type; +struct __mu_return_impl<_Ti, true, false, false, _TupleUj> { + typedef typename _Ti::type& type; }; template -struct __mu_return_impl<_Ti, false, false, false, _TupleUj> -{ - typedef _Ti& type; +struct __mu_return_impl<_Ti, false, false, false, _TupleUj> { + typedef _Ti& type; }; template struct __mu_return - : public __mu_return_impl<_Ti, - __is_reference_wrapper<_Ti>::value, - is_bind_expression<_Ti>::value, - 0 < is_placeholder<_Ti>::value && - is_placeholder<_Ti>::value <= tuple_size<_TupleUj>::value, - _TupleUj> -{ -}; + : public __mu_return_impl< + _Ti, + __is_reference_wrapper<_Ti>::value, + is_bind_expression<_Ti>::value, + 0 < is_placeholder<_Ti>::value && is_placeholder<_Ti>::value <= tuple_size<_TupleUj>::value, + _TupleUj> {}; template -struct __is_valid_bind_return -{ - static const bool value = false; +struct __is_valid_bind_return { + static const bool value = false; }; -template -struct __is_valid_bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj> -{ - static const bool value = __invokable<_Fp, - typename __mu_return<_BoundArgs, _TupleUj>::type...>::value; +template +struct __is_valid_bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj> { + static const bool value = __invokable<_Fp, typename __mu_return<_BoundArgs, _TupleUj>::type...>::value; }; -template -struct __is_valid_bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj> -{ - static const bool value = __invokable<_Fp, - typename __mu_return::type...>::value; +template +struct __is_valid_bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj> { + static const bool value = __invokable<_Fp, typename __mu_return::type...>::value; }; -template ::value> +template ::value> struct __bind_return; -template -struct __bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj, true> -{ - typedef typename __invoke_of - < - _Fp&, - typename __mu_return - < - _BoundArgs, - _TupleUj - >::type... - >::type type; +template +struct __bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj, true> { + typedef typename __invoke_of< _Fp&, typename __mu_return< _BoundArgs, _TupleUj >::type... >::type type; }; -template -struct __bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj, true> -{ - typedef typename __invoke_of - < - _Fp&, - typename __mu_return - < - const _BoundArgs, - _TupleUj - >::type... - >::type type; +template +struct __bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj, true> { + typedef typename __invoke_of< _Fp&, typename __mu_return< const _BoundArgs, _TupleUj >::type... >::type type; }; -template -inline _LIBCPP_INLINE_VISIBILITY -typename __bind_return<_Fp, _BoundArgs, _Args>::type -__apply_functor(_Fp& __f, _BoundArgs& __bound_args, __tuple_indices<_Indx...>, - _Args&& __args) -{ - return _VSTD::__invoke(__f, _VSTD::__mu(_VSTD::get<_Indx>(__bound_args), __args)...); +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 typename __bind_return<_Fp, _BoundArgs, _Args>::type +__apply_functor(_Fp& __f, _BoundArgs& __bound_args, __tuple_indices<_Indx...>, _Args&& __args) { + return std::__invoke(__f, std::__mu(std::get<_Indx>(__bound_args), __args)...); } -template -class __bind : public __weak_result_type::type> -{ +template +class __bind : public __weak_result_type<__decay_t<_Fp> > { protected: - typedef typename decay<_Fp>::type _Fd; - typedef tuple::type...> _Td; + using _Fd = __decay_t<_Fp>; + typedef tuple<__decay_t<_BoundArgs>...> _Td; + private: - _Fd __f_; - _Td __bound_args_; + _Fd __f_; + _Td __bound_args_; + + typedef typename __make_tuple_indices::type __indices; - typedef typename __make_tuple_indices::type __indices; public: - template ::value && - !is_same<__libcpp_remove_reference_t<_Gp>, - __bind>::value - >::type> - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - explicit __bind(_Gp&& __f, _BA&& ...__bound_args) - : __f_(_VSTD::forward<_Gp>(__f)), - __bound_args_(_VSTD::forward<_BA>(__bound_args)...) {} - - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type - operator()(_Args&& ...__args) - { - return _VSTD::__apply_functor(__f_, __bound_args_, __indices(), - tuple<_Args&&...>(_VSTD::forward<_Args>(__args)...)); - } - - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - typename __bind_return >::type - operator()(_Args&& ...__args) const - { - return _VSTD::__apply_functor(__f_, __bound_args_, __indices(), - tuple<_Args&&...>(_VSTD::forward<_Args>(__args)...)); - } + template < + class _Gp, + class... _BA, + __enable_if_t::value && !is_same<__libcpp_remove_reference_t<_Gp>, __bind>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit __bind(_Gp&& __f, _BA&&... __bound_args) + : __f_(std::forward<_Gp>(__f)), __bound_args_(std::forward<_BA>(__bound_args)...) {} + + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type + operator()(_Args&&... __args) { + return std::__apply_functor(__f_, __bound_args_, __indices(), tuple<_Args&&...>(std::forward<_Args>(__args)...)); + } + + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 + typename __bind_return >::type + operator()(_Args&&... __args) const { + return std::__apply_functor(__f_, __bound_args_, __indices(), tuple<_Args&&...>(std::forward<_Args>(__args)...)); + } }; -template +template struct is_bind_expression<__bind<_Fp, _BoundArgs...> > : public true_type {}; -template -class __bind_r - : public __bind<_Fp, _BoundArgs...> -{ - typedef __bind<_Fp, _BoundArgs...> base; - typedef typename base::_Fd _Fd; - typedef typename base::_Td _Td; +template +class __bind_r : public __bind<_Fp, _BoundArgs...> { + typedef __bind<_Fp, _BoundArgs...> base; + typedef typename base::_Fd _Fd; + typedef typename base::_Td _Td; + public: - typedef _Rp result_type; - - - template ::value && - !is_same<__libcpp_remove_reference_t<_Gp>, - __bind_r>::value - >::type> - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - explicit __bind_r(_Gp&& __f, _BA&& ...__bound_args) - : base(_VSTD::forward<_Gp>(__f), - _VSTD::forward<_BA>(__bound_args)...) {} - - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - typename enable_if - < - is_convertible >::type, - result_type>::value || is_void<_Rp>::value, - result_type - >::type - operator()(_Args&& ...__args) - { - typedef __invoke_void_return_wrapper<_Rp> _Invoker; - return _Invoker::__call(static_cast(*this), _VSTD::forward<_Args>(__args)...); - } - - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - typename enable_if - < - is_convertible >::type, - result_type>::value || is_void<_Rp>::value, - result_type - >::type - operator()(_Args&& ...__args) const - { - typedef __invoke_void_return_wrapper<_Rp> _Invoker; - return _Invoker::__call(static_cast(*this), _VSTD::forward<_Args>(__args)...); - } + typedef _Rp result_type; + + template < + class _Gp, + class... _BA, + __enable_if_t::value && !is_same<__libcpp_remove_reference_t<_Gp>, __bind_r>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit __bind_r(_Gp&& __f, _BA&&... __bound_args) + : base(std::forward<_Gp>(__f), std::forward<_BA>(__bound_args)...) {} + + template < + class... _Args, + __enable_if_t >::type, result_type>::value || + is_void<_Rp>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 result_type operator()(_Args&&... __args) { + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(static_cast(*this), std::forward<_Args>(__args)...); + } + + template >::type, + result_type>::value || + is_void<_Rp>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 result_type operator()(_Args&&... __args) const { + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(static_cast(*this), std::forward<_Args>(__args)...); + } }; -template +template struct is_bind_expression<__bind_r<_Rp, _Fp, _BoundArgs...> > : public true_type {}; -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -__bind<_Fp, _BoundArgs...> -bind(_Fp&& __f, _BoundArgs&&... __bound_args) -{ - typedef __bind<_Fp, _BoundArgs...> type; - return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...); +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bind<_Fp, _BoundArgs...> +bind(_Fp&& __f, _BoundArgs&&... __bound_args) { + typedef __bind<_Fp, _BoundArgs...> type; + return type(std::forward<_Fp>(__f), std::forward<_BoundArgs>(__bound_args)...); } -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -__bind_r<_Rp, _Fp, _BoundArgs...> -bind(_Fp&& __f, _BoundArgs&&... __bound_args) -{ - typedef __bind_r<_Rp, _Fp, _BoundArgs...> type; - return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...); +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bind_r<_Rp, _Fp, _BoundArgs...> +bind(_Fp&& __f, _BoundArgs&&... __bound_args) { + typedef __bind_r<_Rp, _Fp, _BoundArgs...> type; + return type(std::forward<_Fp>(__f), std::forward<_BoundArgs>(__bound_args)...); } #endif // _LIBCPP_CXX03_LANG diff --git a/include/c++/v1/__functional/bind_back.h b/include/c++/v1/__functional/bind_back.h index f0a6e498..e44768d2 100644 --- a/include/c++/v1/__functional/bind_back.h +++ b/include/c++/v1/__functional/bind_back.h @@ -13,10 +13,10 @@ #include <__config> #include <__functional/invoke.h> #include <__functional/perfect_forward.h> +#include <__type_traits/decay.h> #include <__utility/forward.h> #include <__utility/integer_sequence.h> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -24,40 +24,59 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template > struct __bind_back_op; -template +template struct __bind_back_op<_NBound, index_sequence<_Ip...>> { - template - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Fn&& __f, _BoundArgs&& __bound_args, _Args&&... __args) const - noexcept(noexcept(_VSTD::invoke(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)..., _VSTD::get<_Ip>(_VSTD::forward<_BoundArgs>(__bound_args))...))) - -> decltype( _VSTD::invoke(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)..., _VSTD::get<_Ip>(_VSTD::forward<_BoundArgs>(__bound_args))...)) - { return _VSTD::invoke(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)..., _VSTD::get<_Ip>(_VSTD::forward<_BoundArgs>(__bound_args))...); } + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Fn&& __f, _BoundArgs&& __bound_args, _Args&&... __args) const + noexcept(noexcept(std::invoke(std::forward<_Fn>(__f), + std::forward<_Args>(__args)..., + std::get<_Ip>(std::forward<_BoundArgs>(__bound_args))...))) + -> decltype(std::invoke(std::forward<_Fn>(__f), + std::forward<_Args>(__args)..., + std::get<_Ip>(std::forward<_BoundArgs>(__bound_args))...)) { + return std::invoke(std::forward<_Fn>(__f), + std::forward<_Args>(__args)..., + std::get<_Ip>(std::forward<_BoundArgs>(__bound_args))...); + } }; template struct __bind_back_t : __perfect_forward<__bind_back_op>, _Fn, _BoundArgs> { - using __perfect_forward<__bind_back_op>, _Fn, _BoundArgs>::__perfect_forward; + using __perfect_forward<__bind_back_op>, _Fn, _BoundArgs>::__perfect_forward; }; -template , _Fn>, - is_move_constructible>, - is_constructible, _Args>..., - is_move_constructible>... - >::value ->> -_LIBCPP_HIDE_FROM_ABI -constexpr auto __bind_back(_Fn&& __f, _Args&&... __args) - noexcept(noexcept(__bind_back_t, tuple...>>(_VSTD::forward<_Fn>(__f), _VSTD::forward_as_tuple(_VSTD::forward<_Args>(__args)...)))) - -> decltype( __bind_back_t, tuple...>>(_VSTD::forward<_Fn>(__f), _VSTD::forward_as_tuple(_VSTD::forward<_Args>(__args)...))) - { return __bind_back_t, tuple...>>(_VSTD::forward<_Fn>(__f), _VSTD::forward_as_tuple(_VSTD::forward<_Args>(__args)...)); } +template + requires is_constructible_v, _Fn> && is_move_constructible_v> && + (is_constructible_v, _Args> && ...) && (is_move_constructible_v> && ...) +_LIBCPP_HIDE_FROM_ABI constexpr auto __bind_back(_Fn&& __f, _Args&&... __args) noexcept( + noexcept(__bind_back_t, tuple...>>( + std::forward<_Fn>(__f), std::forward_as_tuple(std::forward<_Args>(__args)...)))) + -> decltype(__bind_back_t, tuple...>>( + std::forward<_Fn>(__f), std::forward_as_tuple(std::forward<_Args>(__args)...))) { + return __bind_back_t, tuple...>>( + std::forward<_Fn>(__f), std::forward_as_tuple(std::forward<_Args>(__args)...)); +} -#endif // _LIBCPP_STD_VER > 17 +# if _LIBCPP_STD_VER >= 23 +template +_LIBCPP_HIDE_FROM_ABI constexpr auto bind_back(_Fn&& __f, _Args&&... __args) { + static_assert(is_constructible_v, _Fn>, "bind_back requires decay_t to be constructible from F"); + static_assert(is_move_constructible_v>, "bind_back requires decay_t to be move constructible"); + static_assert((is_constructible_v, _Args> && ...), + "bind_back requires all decay_t to be constructible from respective Args"); + static_assert((is_move_constructible_v> && ...), + "bind_back requires all decay_t to be move constructible"); + return __bind_back_t, tuple...>>( + std::forward<_Fn>(__f), std::forward_as_tuple(std::forward<_Args>(__args)...)); +} +# endif // _LIBCPP_STD_VER >= 23 + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/bind_front.h b/include/c++/v1/__functional/bind_front.h index 22fb3a69..87ef3aff 100644 --- a/include/c++/v1/__functional/bind_front.h +++ b/include/c++/v1/__functional/bind_front.h @@ -13,8 +13,11 @@ #include <__config> #include <__functional/invoke.h> #include <__functional/perfect_forward.h> +#include <__type_traits/conjunction.h> +#include <__type_traits/decay.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_constructible.h> #include <__utility/forward.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -22,36 +25,29 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 struct __bind_front_op { - template - _LIBCPP_HIDE_FROM_ABI - constexpr auto operator()(_Args&& ...__args) const - noexcept(noexcept(_VSTD::invoke(_VSTD::forward<_Args>(__args)...))) - -> decltype( _VSTD::invoke(_VSTD::forward<_Args>(__args)...)) - { return _VSTD::invoke(_VSTD::forward<_Args>(__args)...); } + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) const noexcept( + noexcept(std::invoke(std::forward<_Args>(__args)...))) -> decltype(std::invoke(std::forward<_Args>(__args)...)) { + return std::invoke(std::forward<_Args>(__args)...); + } }; -template +template struct __bind_front_t : __perfect_forward<__bind_front_op, _Fn, _BoundArgs...> { - using __perfect_forward<__bind_front_op, _Fn, _BoundArgs...>::__perfect_forward; + using __perfect_forward<__bind_front_op, _Fn, _BoundArgs...>::__perfect_forward; }; -template , _Fn>, - is_move_constructible>, - is_constructible, _Args>..., - is_move_constructible>... - >::value ->> -_LIBCPP_HIDE_FROM_ABI -constexpr auto bind_front(_Fn&& __f, _Args&&... __args) { - return __bind_front_t, decay_t<_Args>...>(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)...); +template + requires is_constructible_v, _Fn> && is_move_constructible_v> && + (is_constructible_v, _Args> && ...) && (is_move_constructible_v> && ...) +_LIBCPP_HIDE_FROM_ABI constexpr auto bind_front(_Fn&& __f, _Args&&... __args) { + return __bind_front_t, decay_t<_Args>...>(std::forward<_Fn>(__f), std::forward<_Args>(__args)...); } -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/binder1st.h b/include/c++/v1/__functional/binder1st.h index dea22c70..04b51fef 100644 --- a/include/c++/v1/__functional/binder1st.h +++ b/include/c++/v1/__functional/binder1st.h @@ -21,30 +21,31 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) -template +template class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 binder1st - : public __unary_function -{ + : public __unary_function { protected: - __Operation op; - typename __Operation::first_argument_type value; + _Operation op; + typename _Operation::first_argument_type value; + public: - _LIBCPP_INLINE_VISIBILITY binder1st(const __Operation& __x, - const typename __Operation::first_argument_type __y) - : op(__x), value(__y) {} - _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() - (typename __Operation::second_argument_type& __x) const - {return op(value, __x);} - _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() - (const typename __Operation::second_argument_type& __x) const - {return op(value, __x);} + _LIBCPP_HIDE_FROM_ABI binder1st(const _Operation& __x, const typename _Operation::first_argument_type __y) + : op(__x), value(__y) {} + _LIBCPP_HIDE_FROM_ABI typename _Operation::result_type + operator()(typename _Operation::second_argument_type& __x) const { + return op(value, __x); + } + _LIBCPP_HIDE_FROM_ABI typename _Operation::result_type + operator()(const typename _Operation::second_argument_type& __x) const { + return op(value, __x); + } }; -template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -binder1st<__Operation> -bind1st(const __Operation& __op, const _Tp& __x) - {return binder1st<__Operation>(__op, __x);} +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI binder1st<_Operation> +bind1st(const _Operation& __op, const _Tp& __x) { + return binder1st<_Operation>(__op, __x); +} #endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) diff --git a/include/c++/v1/__functional/binder2nd.h b/include/c++/v1/__functional/binder2nd.h index c98a146b..9d22e443 100644 --- a/include/c++/v1/__functional/binder2nd.h +++ b/include/c++/v1/__functional/binder2nd.h @@ -21,30 +21,31 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) -template +template class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 binder2nd - : public __unary_function -{ + : public __unary_function { protected: - __Operation op; - typename __Operation::second_argument_type value; + _Operation op; + typename _Operation::second_argument_type value; + public: - _LIBCPP_INLINE_VISIBILITY - binder2nd(const __Operation& __x, const typename __Operation::second_argument_type __y) - : op(__x), value(__y) {} - _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() - ( typename __Operation::first_argument_type& __x) const - {return op(__x, value);} - _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() - (const typename __Operation::first_argument_type& __x) const - {return op(__x, value);} + _LIBCPP_HIDE_FROM_ABI binder2nd(const _Operation& __x, const typename _Operation::second_argument_type __y) + : op(__x), value(__y) {} + _LIBCPP_HIDE_FROM_ABI typename _Operation::result_type + operator()(typename _Operation::first_argument_type& __x) const { + return op(__x, value); + } + _LIBCPP_HIDE_FROM_ABI typename _Operation::result_type + operator()(const typename _Operation::first_argument_type& __x) const { + return op(__x, value); + } }; -template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -binder2nd<__Operation> -bind2nd(const __Operation& __op, const _Tp& __x) - {return binder2nd<__Operation>(__op, __x);} +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI binder2nd<_Operation> +bind2nd(const _Operation& __op, const _Tp& __x) { + return binder2nd<_Operation>(__op, __x); +} #endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) diff --git a/include/c++/v1/__functional/boyer_moore_searcher.h b/include/c++/v1/__functional/boyer_moore_searcher.h index a6750893..648b60c5 100644 --- a/include/c++/v1/__functional/boyer_moore_searcher.h +++ b/include/c++/v1/__functional/boyer_moore_searcher.h @@ -20,47 +20,38 @@ #include <__iterator/distance.h> #include <__iterator/iterator_traits.h> #include <__memory/shared_ptr.h> +#include <__type_traits/make_unsigned.h> #include <__utility/pair.h> #include #include #include -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 _LIBCPP_PUSH_MACROS -#include <__undef_macros> +# include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD -template +template class _BMSkipTable; // General case for BM data searching; use a map -template +template class _BMSkipTable<_Key, _Value, _Hash, _BinaryPredicate, false> { private: using value_type = _Value; - using key_type = _Key; + using key_type = _Key; const value_type __default_value_; unordered_map<_Key, _Value, _Hash, _BinaryPredicate> __table_; public: - _LIBCPP_HIDE_FROM_ABI - explicit _BMSkipTable(size_t __sz, value_type __default_value, _Hash __hash, _BinaryPredicate __pred) - : __default_value_(__default_value), - __table_(__sz, __hash, __pred) {} + _LIBCPP_HIDE_FROM_ABI explicit _BMSkipTable( + size_t __sz, value_type __default_value, _Hash __hash, _BinaryPredicate __pred) + : __default_value_(__default_value), __table_(__sz, __hash, __pred) {} - _LIBCPP_HIDE_FROM_ABI void insert(const key_type& __key, value_type __val) { - __table_[__key] = __val; - } + _LIBCPP_HIDE_FROM_ABI void insert(const key_type& __key, value_type __val) { __table_[__key] = __val; } _LIBCPP_HIDE_FROM_ABI value_type operator[](const key_type& __key) const { auto __it = __table_.find(__key); @@ -69,14 +60,11 @@ class _BMSkipTable<_Key, _Value, _Hash, _BinaryPredicate, false> { }; // Special case small numeric values; use an array -template +template class _BMSkipTable<_Key, _Value, _Hash, _BinaryPredicate, true> { private: using value_type = _Value; - using key_type = _Key; + using key_type = _Key; using unsigned_key_type = make_unsigned_t; std::array __table_; @@ -97,33 +85,33 @@ class _BMSkipTable<_Key, _Value, _Hash, _BinaryPredicate, true> { }; template ::value_type>, + class _Hash = hash::value_type>, class _BinaryPredicate = equal_to<>> class _LIBCPP_TEMPLATE_VIS boyer_moore_searcher { private: using difference_type = typename std::iterator_traits<_RandomAccessIterator1>::difference_type; - using value_type = typename std::iterator_traits<_RandomAccessIterator1>::value_type; - using __skip_table_type = _BMSkipTable - && sizeof(value_type) == 1 - && is_same_v<_Hash, hash> - && is_same_v<_BinaryPredicate, equal_to<>>>; + using value_type = typename std::iterator_traits<_RandomAccessIterator1>::value_type; + using __skip_table_type = + _BMSkipTable && sizeof(value_type) == 1 && is_same_v<_Hash, hash> && + is_same_v<_BinaryPredicate, equal_to<>>>; public: - boyer_moore_searcher(_RandomAccessIterator1 __first, - _RandomAccessIterator1 __last, - _Hash __hash = _Hash(), - _BinaryPredicate __pred = _BinaryPredicate()) - : __first_(__first), - __last_(__last), - __pred_(__pred), - __pattern_length_(__last - __first), - __skip_table_(std::make_shared<__skip_table_type>(__pattern_length_, -1, __hash, __pred_)), - __suffix_(std::__allocate_shared_unbounded_array( - allocator(), __pattern_length_ + 1)) { + _LIBCPP_HIDE_FROM_ABI boyer_moore_searcher( + _RandomAccessIterator1 __first, + _RandomAccessIterator1 __last, + _Hash __hash = _Hash(), + _BinaryPredicate __pred = _BinaryPredicate()) + : __first_(__first), + __last_(__last), + __pred_(__pred), + __pattern_length_(__last - __first), + __skip_table_(std::make_shared<__skip_table_type>(__pattern_length_, -1, __hash, __pred_)), + __suffix_(std::__allocate_shared_unbounded_array( + allocator(), __pattern_length_ + 1)) { difference_type __i = 0; while (__first != __last) { __skip_table_->insert(*__first, __i); @@ -134,7 +122,7 @@ class _LIBCPP_TEMPLATE_VIS boyer_moore_searcher { } template - pair<_RandomAccessIterator2, _RandomAccessIterator2> + _LIBCPP_HIDE_FROM_ABI pair<_RandomAccessIterator2, _RandomAccessIterator2> operator()(_RandomAccessIterator2 __first, _RandomAccessIterator2 __last) const { static_assert(__is_same_uncvref::value_type, typename iterator_traits<_RandomAccessIterator2>::value_type>::value, @@ -158,10 +146,10 @@ class _LIBCPP_TEMPLATE_VIS boyer_moore_searcher { shared_ptr __suffix_; template - pair<_RandomAccessIterator2, _RandomAccessIterator2> + _LIBCPP_HIDE_FROM_ABI pair<_RandomAccessIterator2, _RandomAccessIterator2> __search(_RandomAccessIterator2 __f, _RandomAccessIterator2 __l) const { - _RandomAccessIterator2 __current = __f; - const _RandomAccessIterator2 __last = __l - __pattern_length_; + _RandomAccessIterator2 __current = __f; + const _RandomAccessIterator2 __last = __l - __pattern_length_; const __skip_table_type& __skip_table = *__skip_table_; while (__current <= __last) { @@ -183,11 +171,12 @@ class _LIBCPP_TEMPLATE_VIS boyer_moore_searcher { } template - void __compute_bm_prefix(_Iterator __first, _Iterator __last, _BinaryPredicate __pred, _Container& __prefix) { + _LIBCPP_HIDE_FROM_ABI void + __compute_bm_prefix(_Iterator __first, _Iterator __last, _BinaryPredicate __pred, _Container& __prefix) { const size_t __count = __last - __first; __prefix[0] = 0; - size_t __k = 0; + size_t __k = 0; for (size_t __i = 1; __i != __count; ++__i) { while (__k > 0 && !__pred(__first[__k], __first[__i])) @@ -199,7 +188,8 @@ class _LIBCPP_TEMPLATE_VIS boyer_moore_searcher { } } - void __build_suffix_table(_RandomAccessIterator1 __first, _RandomAccessIterator1 __last, _BinaryPredicate __pred) { + _LIBCPP_HIDE_FROM_ABI void + __build_suffix_table(_RandomAccessIterator1 __first, _RandomAccessIterator1 __last, _BinaryPredicate __pred) { const size_t __count = __last - __first; if (__count == 0) @@ -215,7 +205,7 @@ class _LIBCPP_TEMPLATE_VIS boyer_moore_searcher { __compute_bm_prefix(_ReverseIter(__last), _ReverseIter(__first), __pred, __scratch); for (size_t __i = 0; __i != __count; ++__i) { - const size_t __j = __count - __scratch[__i]; + const size_t __j = __count - __scratch[__i]; const difference_type __k = __i - __scratch[__i] + 1; if (__suffix_[__j] > __k) @@ -226,30 +216,31 @@ class _LIBCPP_TEMPLATE_VIS boyer_moore_searcher { _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(boyer_moore_searcher); template ::value_type>, + class _Hash = hash::value_type>, class _BinaryPredicate = equal_to<>> class _LIBCPP_TEMPLATE_VIS boyer_moore_horspool_searcher { private: using difference_type = typename iterator_traits<_RandomAccessIterator1>::difference_type; - using value_type = typename iterator_traits<_RandomAccessIterator1>::value_type; - using __skip_table_type = _BMSkipTable - && sizeof(value_type) == 1 - && is_same_v<_Hash, hash> - && is_same_v<_BinaryPredicate, equal_to<>>>; + using value_type = typename iterator_traits<_RandomAccessIterator1>::value_type; + using __skip_table_type = + _BMSkipTable && sizeof(value_type) == 1 && is_same_v<_Hash, hash> && + is_same_v<_BinaryPredicate, equal_to<>>>; + public: - boyer_moore_horspool_searcher(_RandomAccessIterator1 __first, - _RandomAccessIterator1 __last, - _Hash __hash = _Hash(), - _BinaryPredicate __pred = _BinaryPredicate()) - : __first_(__first), - __last_(__last), - __pred_(__pred), - __pattern_length_(__last - __first), - __skip_table_(std::make_shared<__skip_table_type>(__pattern_length_, __pattern_length_, __hash, __pred_)) { + _LIBCPP_HIDE_FROM_ABI boyer_moore_horspool_searcher( + _RandomAccessIterator1 __first, + _RandomAccessIterator1 __last, + _Hash __hash = _Hash(), + _BinaryPredicate __pred = _BinaryPredicate()) + : __first_(__first), + __last_(__last), + __pred_(__pred), + __pattern_length_(__last - __first), + __skip_table_(std::make_shared<__skip_table_type>(__pattern_length_, __pattern_length_, __hash, __pred_)) { if (__first == __last) return; --__last; @@ -262,7 +253,7 @@ class _LIBCPP_TEMPLATE_VIS boyer_moore_horspool_searcher { } template - pair<_RandomAccessIterator2, _RandomAccessIterator2> + _LIBCPP_HIDE_FROM_ABI pair<_RandomAccessIterator2, _RandomAccessIterator2> operator()(_RandomAccessIterator2 __first, _RandomAccessIterator2 __last) const { static_assert(__is_same_uncvref::value_type, typename std::iterator_traits<_RandomAccessIterator2>::value_type>::value, @@ -286,10 +277,10 @@ class _LIBCPP_TEMPLATE_VIS boyer_moore_horspool_searcher { shared_ptr<__skip_table_type> __skip_table_; template - pair<_RandomAccessIterator2, _RandomAccessIterator2> + _LIBCPP_HIDE_FROM_ABI pair<_RandomAccessIterator2, _RandomAccessIterator2> __search(_RandomAccessIterator2 __f, _RandomAccessIterator2 __l) const { - _RandomAccessIterator2 __current = __f; - const _RandomAccessIterator2 __last = __l - __pattern_length_; + _RandomAccessIterator2 __current = __f; + const _RandomAccessIterator2 __last = __l - __pattern_length_; const __skip_table_type& __skip_table = *__skip_table_; while (__current <= __last) { @@ -310,6 +301,6 @@ _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 #endif // _LIBCPP___FUNCTIONAL_BOYER_MOORE_SEARCHER_H diff --git a/include/c++/v1/__functional/compose.h b/include/c++/v1/__functional/compose.h index 25213f28..4b86dd37 100644 --- a/include/c++/v1/__functional/compose.h +++ b/include/c++/v1/__functional/compose.h @@ -13,8 +13,8 @@ #include <__config> #include <__functional/invoke.h> #include <__functional/perfect_forward.h> +#include <__type_traits/decay.h> #include <__utility/forward.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -22,30 +22,31 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 struct __compose_op { - template - _LIBCPP_HIDE_FROM_ABI - constexpr auto operator()(_Fn1&& __f1, _Fn2&& __f2, _Args&&... __args) const - noexcept(noexcept(_VSTD::invoke(_VSTD::forward<_Fn1>(__f1), _VSTD::invoke(_VSTD::forward<_Fn2>(__f2), _VSTD::forward<_Args>(__args)...)))) - -> decltype( _VSTD::invoke(_VSTD::forward<_Fn1>(__f1), _VSTD::invoke(_VSTD::forward<_Fn2>(__f2), _VSTD::forward<_Args>(__args)...))) - { return _VSTD::invoke(_VSTD::forward<_Fn1>(__f1), _VSTD::invoke(_VSTD::forward<_Fn2>(__f2), _VSTD::forward<_Args>(__args)...)); } + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Fn1&& __f1, _Fn2&& __f2, _Args&&... __args) const noexcept(noexcept( + std::invoke(std::forward<_Fn1>(__f1), std::invoke(std::forward<_Fn2>(__f2), std::forward<_Args>(__args)...)))) + -> decltype(std::invoke(std::forward<_Fn1>(__f1), + std::invoke(std::forward<_Fn2>(__f2), std::forward<_Args>(__args)...))) { + return std::invoke(std::forward<_Fn1>(__f1), std::invoke(std::forward<_Fn2>(__f2), std::forward<_Args>(__args)...)); + } }; template struct __compose_t : __perfect_forward<__compose_op, _Fn1, _Fn2> { - using __perfect_forward<__compose_op, _Fn1, _Fn2>::__perfect_forward; + using __perfect_forward<__compose_op, _Fn1, _Fn2>::__perfect_forward; }; template -_LIBCPP_HIDE_FROM_ABI -constexpr auto __compose(_Fn1&& __f1, _Fn2&& __f2) - noexcept(noexcept(__compose_t, decay_t<_Fn2>>(_VSTD::forward<_Fn1>(__f1), _VSTD::forward<_Fn2>(__f2)))) - -> decltype( __compose_t, decay_t<_Fn2>>(_VSTD::forward<_Fn1>(__f1), _VSTD::forward<_Fn2>(__f2))) - { return __compose_t, decay_t<_Fn2>>(_VSTD::forward<_Fn1>(__f1), _VSTD::forward<_Fn2>(__f2)); } +_LIBCPP_HIDE_FROM_ABI constexpr auto __compose(_Fn1&& __f1, _Fn2&& __f2) noexcept( + noexcept(__compose_t, decay_t<_Fn2>>(std::forward<_Fn1>(__f1), std::forward<_Fn2>(__f2)))) + -> decltype(__compose_t, decay_t<_Fn2>>(std::forward<_Fn1>(__f1), std::forward<_Fn2>(__f2))) { + return __compose_t, decay_t<_Fn2>>(std::forward<_Fn1>(__f1), std::forward<_Fn2>(__f2)); +} -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/default_searcher.h b/include/c++/v1/__functional/default_searcher.h index e4151e58..db89d107 100644 --- a/include/c++/v1/__functional/default_searcher.h +++ b/include/c++/v1/__functional/default_searcher.h @@ -23,34 +23,31 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 // default searcher -template> +template > class _LIBCPP_TEMPLATE_VIS default_searcher { public: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - default_searcher(_ForwardIterator __f, _ForwardIterator __l, - _BinaryPredicate __p = _BinaryPredicate()) - : __first_(__f), __last_(__l), __pred_(__p) {} - - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - pair<_ForwardIterator2, _ForwardIterator2> - operator () (_ForwardIterator2 __f, _ForwardIterator2 __l) const - { - auto __proj = __identity(); - return std::__search_impl(__f, __l, __first_, __last_, __pred_, __proj, __proj); - } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 + default_searcher(_ForwardIterator __f, _ForwardIterator __l, _BinaryPredicate __p = _BinaryPredicate()) + : __first_(__f), __last_(__l), __pred_(__p) {} + + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator2, _ForwardIterator2> + operator()(_ForwardIterator2 __f, _ForwardIterator2 __l) const { + auto __proj = __identity(); + return std::__search_impl(__f, __l, __first_, __last_, __pred_, __proj, __proj); + } private: - _ForwardIterator __first_; - _ForwardIterator __last_; - _BinaryPredicate __pred_; + _ForwardIterator __first_; + _ForwardIterator __last_; + _BinaryPredicate __pred_; }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(default_searcher); -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/function.h b/include/c++/v1/__functional/function.h index 9f92f618..c7b98035 100644 --- a/include/c++/v1/__functional/function.h +++ b/include/c++/v1/__functional/function.h @@ -12,6 +12,7 @@ #include <__assert> #include <__config> +#include <__exception/exception.h> #include <__functional/binary_function.h> #include <__functional/invoke.h> #include <__functional/unary_function.h> @@ -23,21 +24,30 @@ #include <__memory/builtin_new_allocator.h> #include <__memory/compressed_pair.h> #include <__memory/unique_ptr.h> +#include <__type_traits/aligned_storage.h> +#include <__type_traits/decay.h> +#include <__type_traits/is_core_convertible.h> +#include <__type_traits/is_scalar.h> +#include <__type_traits/is_trivially_constructible.h> +#include <__type_traits/is_trivially_destructible.h> +#include <__type_traits/is_void.h> #include <__type_traits/strip_signature.h> #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/piecewise_construct.h> #include <__utility/swap.h> -#include +#include <__verbose_abort> #include #include -#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + #ifndef _LIBCPP_CXX03_LANG _LIBCPP_BEGIN_NAMESPACE_STD @@ -45,84 +55,80 @@ _LIBCPP_BEGIN_NAMESPACE_STD // bad_function_call _LIBCPP_DIAGNOSTIC_PUSH +# if !_LIBCPP_AVAILABILITY_HAS_BAD_FUNCTION_CALL_KEY_FUNCTION _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wweak-vtables") -class _LIBCPP_EXCEPTION_ABI bad_function_call - : public exception -{ +# endif +class _LIBCPP_EXPORTED_FROM_ABI bad_function_call : public exception { public: + _LIBCPP_HIDE_FROM_ABI bad_function_call() _NOEXCEPT = default; + _LIBCPP_HIDE_FROM_ABI bad_function_call(const bad_function_call&) _NOEXCEPT = default; + _LIBCPP_HIDE_FROM_ABI bad_function_call& operator=(const bad_function_call&) _NOEXCEPT = default; // Note that when a key function is not used, every translation unit that uses // bad_function_call will end up containing a weak definition of the vtable and // typeinfo. -#ifdef _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION - ~bad_function_call() _NOEXCEPT override; -#else - ~bad_function_call() _NOEXCEPT override {} -#endif - -#ifdef _LIBCPP_ABI_BAD_FUNCTION_CALL_GOOD_WHAT_MESSAGE - const char* what() const _NOEXCEPT override; -#endif +# if _LIBCPP_AVAILABILITY_HAS_BAD_FUNCTION_CALL_KEY_FUNCTION + ~bad_function_call() _NOEXCEPT override; +# else + _LIBCPP_HIDE_FROM_ABI_VIRTUAL ~bad_function_call() _NOEXCEPT override {} +# endif + +# ifdef _LIBCPP_ABI_BAD_FUNCTION_CALL_GOOD_WHAT_MESSAGE + const char* what() const _NOEXCEPT override; +# endif }; _LIBCPP_DIAGNOSTIC_POP -_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY -void __throw_bad_function_call() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - throw bad_function_call(); -#else - _VSTD::abort(); -#endif +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void __throw_bad_function_call() { +# ifndef _LIBCPP_HAS_NO_EXCEPTIONS + throw bad_function_call(); +# else + _LIBCPP_VERBOSE_ABORT("bad_function_call was thrown in -fno-exceptions mode"); +# endif } -template class _LIBCPP_TEMPLATE_VIS function; // undefined +template +class _LIBCPP_TEMPLATE_VIS function; // undefined -namespace __function -{ +namespace __function { -template -struct __maybe_derive_from_unary_function -{ -}; +template +struct __maybe_derive_from_unary_function {}; -template -struct __maybe_derive_from_unary_function<_Rp(_A1)> - : public __unary_function<_A1, _Rp> -{ -}; +template +struct __maybe_derive_from_unary_function<_Rp(_A1)> : public __unary_function<_A1, _Rp> {}; -template -struct __maybe_derive_from_binary_function -{ -}; +template +struct __maybe_derive_from_binary_function {}; -template -struct __maybe_derive_from_binary_function<_Rp(_A1, _A2)> - : public __binary_function<_A1, _A2, _Rp> -{ -}; +template +struct __maybe_derive_from_binary_function<_Rp(_A1, _A2)> : public __binary_function<_A1, _A2, _Rp> {}; template -_LIBCPP_INLINE_VISIBILITY -bool __not_null(_Fp const&) { return true; } +_LIBCPP_HIDE_FROM_ABI bool __not_null(_Fp const&) { + return true; +} template -_LIBCPP_INLINE_VISIBILITY -bool __not_null(_Fp* __ptr) { return __ptr; } +_LIBCPP_HIDE_FROM_ABI bool __not_null(_Fp* __ptr) { + return __ptr; +} template -_LIBCPP_INLINE_VISIBILITY -bool __not_null(_Ret _Class::*__ptr) { return __ptr; } +_LIBCPP_HIDE_FROM_ABI bool __not_null(_Ret _Class::*__ptr) { + return __ptr; +} template -_LIBCPP_INLINE_VISIBILITY -bool __not_null(function<_Fp> const& __f) { return !!__f; } +_LIBCPP_HIDE_FROM_ABI bool __not_null(function<_Fp> const& __f) { + return !!__f; +} -#ifdef _LIBCPP_HAS_EXTENSION_BLOCKS -template -_LIBCPP_INLINE_VISIBILITY -bool __not_null(_Rp (^__p)(_Args...)) { return __p; } -#endif +# ifdef _LIBCPP_HAS_EXTENSION_BLOCKS +template +_LIBCPP_HIDE_FROM_ABI bool __not_null(_Rp (^__p)(_Args...)) { + return __p; +} +# endif } // namespace __function @@ -130,84 +136,60 @@ namespace __function { // __alloc_func holds a functor and an allocator. -template class __alloc_func; +template +class __alloc_func; template class __default_alloc_func; template -class __alloc_func<_Fp, _Ap, _Rp(_ArgTypes...)> -{ - __compressed_pair<_Fp, _Ap> __f_; - - public: - typedef _LIBCPP_NODEBUG _Fp _Target; - typedef _LIBCPP_NODEBUG _Ap _Alloc; - - _LIBCPP_INLINE_VISIBILITY - const _Target& __target() const { return __f_.first(); } - - // WIN32 APIs may define __allocator, so use __get_allocator instead. - _LIBCPP_INLINE_VISIBILITY - const _Alloc& __get_allocator() const { return __f_.second(); } - - _LIBCPP_INLINE_VISIBILITY - explicit __alloc_func(_Target&& __f) - : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)), - _VSTD::forward_as_tuple()) - { - } +class __alloc_func<_Fp, _Ap, _Rp(_ArgTypes...)> { + __compressed_pair<_Fp, _Ap> __f_; - _LIBCPP_INLINE_VISIBILITY - explicit __alloc_func(const _Target& __f, const _Alloc& __a) - : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f), - _VSTD::forward_as_tuple(__a)) - { - } +public: + typedef _LIBCPP_NODEBUG _Fp _Target; + typedef _LIBCPP_NODEBUG _Ap _Alloc; - _LIBCPP_INLINE_VISIBILITY - explicit __alloc_func(const _Target& __f, _Alloc&& __a) - : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f), - _VSTD::forward_as_tuple(_VSTD::move(__a))) - { - } + _LIBCPP_HIDE_FROM_ABI const _Target& __target() const { return __f_.first(); } - _LIBCPP_INLINE_VISIBILITY - explicit __alloc_func(_Target&& __f, _Alloc&& __a) - : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)), - _VSTD::forward_as_tuple(_VSTD::move(__a))) - { - } + // WIN32 APIs may define __allocator, so use __get_allocator instead. + _LIBCPP_HIDE_FROM_ABI const _Alloc& __get_allocator() const { return __f_.second(); } - _LIBCPP_INLINE_VISIBILITY - _Rp operator()(_ArgTypes&&... __arg) - { - typedef __invoke_void_return_wrapper<_Rp> _Invoker; - return _Invoker::__call(__f_.first(), - _VSTD::forward<_ArgTypes>(__arg)...); - } + _LIBCPP_HIDE_FROM_ABI explicit __alloc_func(_Target&& __f) + : __f_(piecewise_construct, std::forward_as_tuple(std::move(__f)), std::forward_as_tuple()) {} - _LIBCPP_INLINE_VISIBILITY - __alloc_func* __clone() const - { - typedef allocator_traits<_Alloc> __alloc_traits; - typedef __rebind_alloc<__alloc_traits, __alloc_func> _AA; - _AA __a(__f_.second()); - typedef __allocator_destructor<_AA> _Dp; - unique_ptr<__alloc_func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new ((void*)__hold.get()) __alloc_func(__f_.first(), _Alloc(__a)); - return __hold.release(); - } + _LIBCPP_HIDE_FROM_ABI explicit __alloc_func(const _Target& __f, const _Alloc& __a) + : __f_(piecewise_construct, std::forward_as_tuple(__f), std::forward_as_tuple(__a)) {} - _LIBCPP_INLINE_VISIBILITY - void destroy() _NOEXCEPT { __f_.~__compressed_pair<_Target, _Alloc>(); } + _LIBCPP_HIDE_FROM_ABI explicit __alloc_func(const _Target& __f, _Alloc&& __a) + : __f_(piecewise_construct, std::forward_as_tuple(__f), std::forward_as_tuple(std::move(__a))) {} - static void __destroy_and_delete(__alloc_func* __f) { - typedef allocator_traits<_Alloc> __alloc_traits; - typedef __rebind_alloc<__alloc_traits, __alloc_func> _FunAlloc; - _FunAlloc __a(__f->__get_allocator()); - __f->destroy(); - __a.deallocate(__f, 1); - } + _LIBCPP_HIDE_FROM_ABI explicit __alloc_func(_Target&& __f, _Alloc&& __a) + : __f_(piecewise_construct, std::forward_as_tuple(std::move(__f)), std::forward_as_tuple(std::move(__a))) {} + + _LIBCPP_HIDE_FROM_ABI _Rp operator()(_ArgTypes&&... __arg) { + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(__f_.first(), std::forward<_ArgTypes>(__arg)...); + } + + _LIBCPP_HIDE_FROM_ABI __alloc_func* __clone() const { + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __rebind_alloc<__alloc_traits, __alloc_func> _AA; + _AA __a(__f_.second()); + typedef __allocator_destructor<_AA> _Dp; + unique_ptr<__alloc_func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new ((void*)__hold.get()) __alloc_func(__f_.first(), _Alloc(__a)); + return __hold.release(); + } + + _LIBCPP_HIDE_FROM_ABI void destroy() _NOEXCEPT { __f_.~__compressed_pair<_Target, _Alloc>(); } + + _LIBCPP_HIDE_FROM_ABI static void __destroy_and_delete(__alloc_func* __f) { + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __rebind_alloc<__alloc_traits, __alloc_func> _FunAlloc; + _FunAlloc __a(__f->__get_allocator()); + __f->destroy(); + __a.deallocate(__f, 1); + } }; template @@ -217,454 +199,377 @@ class __default_alloc_func<_Fp, _Rp(_ArgTypes...)> { public: typedef _LIBCPP_NODEBUG _Fp _Target; - _LIBCPP_INLINE_VISIBILITY - const _Target& __target() const { return __f_; } + _LIBCPP_HIDE_FROM_ABI const _Target& __target() const { return __f_; } - _LIBCPP_INLINE_VISIBILITY - explicit __default_alloc_func(_Target&& __f) : __f_(_VSTD::move(__f)) {} + _LIBCPP_HIDE_FROM_ABI explicit __default_alloc_func(_Target&& __f) : __f_(std::move(__f)) {} - _LIBCPP_INLINE_VISIBILITY - explicit __default_alloc_func(const _Target& __f) : __f_(__f) {} + _LIBCPP_HIDE_FROM_ABI explicit __default_alloc_func(const _Target& __f) : __f_(__f) {} - _LIBCPP_INLINE_VISIBILITY - _Rp operator()(_ArgTypes&&... __arg) { + _LIBCPP_HIDE_FROM_ABI _Rp operator()(_ArgTypes&&... __arg) { typedef __invoke_void_return_wrapper<_Rp> _Invoker; - return _Invoker::__call(__f_, _VSTD::forward<_ArgTypes>(__arg)...); + return _Invoker::__call(__f_, std::forward<_ArgTypes>(__arg)...); } - _LIBCPP_INLINE_VISIBILITY - __default_alloc_func* __clone() const { - __builtin_new_allocator::__holder_t __hold = - __builtin_new_allocator::__allocate_type<__default_alloc_func>(1); - __default_alloc_func* __res = - ::new ((void*)__hold.get()) __default_alloc_func(__f_); + _LIBCPP_HIDE_FROM_ABI __default_alloc_func* __clone() const { + __builtin_new_allocator::__holder_t __hold = __builtin_new_allocator::__allocate_type<__default_alloc_func>(1); + __default_alloc_func* __res = ::new ((void*)__hold.get()) __default_alloc_func(__f_); (void)__hold.release(); return __res; } - _LIBCPP_INLINE_VISIBILITY - void destroy() _NOEXCEPT { __f_.~_Target(); } + _LIBCPP_HIDE_FROM_ABI void destroy() _NOEXCEPT { __f_.~_Target(); } - static void __destroy_and_delete(__default_alloc_func* __f) { + _LIBCPP_HIDE_FROM_ABI static void __destroy_and_delete(__default_alloc_func* __f) { __f->destroy(); - __builtin_new_allocator::__deallocate_type<__default_alloc_func>(__f, 1); + __builtin_new_allocator::__deallocate_type<__default_alloc_func>(__f, 1); } }; // __base provides an abstract interface for copyable functors. -template class _LIBCPP_TEMPLATE_VIS __base; +template +class _LIBCPP_TEMPLATE_VIS __base; -template -class __base<_Rp(_ArgTypes...)> -{ - __base(const __base&); - __base& operator=(const __base&); +template +class __base<_Rp(_ArgTypes...)> { public: - _LIBCPP_INLINE_VISIBILITY __base() {} - _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual ~__base() {} - virtual __base* __clone() const = 0; - virtual void __clone(__base*) const = 0; - virtual void destroy() _NOEXCEPT = 0; - virtual void destroy_deallocate() _NOEXCEPT = 0; - virtual _Rp operator()(_ArgTypes&& ...) = 0; -#ifndef _LIBCPP_HAS_NO_RTTI - virtual const void* target(const type_info&) const _NOEXCEPT = 0; - virtual const std::type_info& target_type() const _NOEXCEPT = 0; -#endif // _LIBCPP_HAS_NO_RTTI + __base(const __base&) = delete; + __base& operator=(const __base&) = delete; + + _LIBCPP_HIDE_FROM_ABI __base() {} + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual ~__base() {} + virtual __base* __clone() const = 0; + virtual void __clone(__base*) const = 0; + virtual void destroy() _NOEXCEPT = 0; + virtual void destroy_deallocate() _NOEXCEPT = 0; + virtual _Rp operator()(_ArgTypes&&...) = 0; +# ifndef _LIBCPP_HAS_NO_RTTI + virtual const void* target(const type_info&) const _NOEXCEPT = 0; + virtual const std::type_info& target_type() const _NOEXCEPT = 0; +# endif // _LIBCPP_HAS_NO_RTTI }; // __func implements __base for a given functor type. -template class __func; +template +class __func; + +template +class __func<_Fp, _Alloc, _Rp(_ArgTypes...)> : public __base<_Rp(_ArgTypes...)> { + __alloc_func<_Fp, _Alloc, _Rp(_ArgTypes...)> __f_; -template -class __func<_Fp, _Alloc, _Rp(_ArgTypes...)> - : public __base<_Rp(_ArgTypes...)> -{ - __alloc_func<_Fp, _Alloc, _Rp(_ArgTypes...)> __f_; public: - _LIBCPP_INLINE_VISIBILITY - explicit __func(_Fp&& __f) - : __f_(_VSTD::move(__f)) {} - - _LIBCPP_INLINE_VISIBILITY - explicit __func(const _Fp& __f, const _Alloc& __a) - : __f_(__f, __a) {} - - _LIBCPP_INLINE_VISIBILITY - explicit __func(const _Fp& __f, _Alloc&& __a) - : __f_(__f, _VSTD::move(__a)) {} - - _LIBCPP_INLINE_VISIBILITY - explicit __func(_Fp&& __f, _Alloc&& __a) - : __f_(_VSTD::move(__f), _VSTD::move(__a)) {} - - virtual __base<_Rp(_ArgTypes...)>* __clone() const; - virtual void __clone(__base<_Rp(_ArgTypes...)>*) const; - virtual void destroy() _NOEXCEPT; - virtual void destroy_deallocate() _NOEXCEPT; - virtual _Rp operator()(_ArgTypes&&... __arg); -#ifndef _LIBCPP_HAS_NO_RTTI - virtual const void* target(const type_info&) const _NOEXCEPT; - virtual const std::type_info& target_type() const _NOEXCEPT; -#endif // _LIBCPP_HAS_NO_RTTI + _LIBCPP_HIDE_FROM_ABI explicit __func(_Fp&& __f) : __f_(std::move(__f)) {} + + _LIBCPP_HIDE_FROM_ABI explicit __func(const _Fp& __f, const _Alloc& __a) : __f_(__f, __a) {} + + _LIBCPP_HIDE_FROM_ABI explicit __func(const _Fp& __f, _Alloc&& __a) : __f_(__f, std::move(__a)) {} + + _LIBCPP_HIDE_FROM_ABI explicit __func(_Fp&& __f, _Alloc&& __a) : __f_(std::move(__f), std::move(__a)) {} + + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual __base<_Rp(_ArgTypes...)>* __clone() const; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void __clone(__base<_Rp(_ArgTypes...)>*) const; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void destroy() _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void destroy_deallocate() _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual _Rp operator()(_ArgTypes&&... __arg); +# ifndef _LIBCPP_HAS_NO_RTTI + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual const void* target(const type_info&) const _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual const std::type_info& target_type() const _NOEXCEPT; +# endif // _LIBCPP_HAS_NO_RTTI }; -template -__base<_Rp(_ArgTypes...)>* -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone() const -{ - typedef allocator_traits<_Alloc> __alloc_traits; - typedef __rebind_alloc<__alloc_traits, __func> _Ap; - _Ap __a(__f_.__get_allocator()); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new ((void*)__hold.get()) __func(__f_.__target(), _Alloc(__a)); - return __hold.release(); +template +__base<_Rp(_ArgTypes...)>* __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone() const { + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __rebind_alloc<__alloc_traits, __func> _Ap; + _Ap __a(__f_.__get_allocator()); + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new ((void*)__hold.get()) __func(__f_.__target(), _Alloc(__a)); + return __hold.release(); } -template -void -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone(__base<_Rp(_ArgTypes...)>* __p) const -{ - ::new ((void*)__p) __func(__f_.__target(), __f_.__get_allocator()); +template +void __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone(__base<_Rp(_ArgTypes...)>* __p) const { + ::new ((void*)__p) __func(__f_.__target(), __f_.__get_allocator()); } -template -void -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy() _NOEXCEPT -{ - __f_.destroy(); +template +void __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy() _NOEXCEPT { + __f_.destroy(); } -template -void -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy_deallocate() _NOEXCEPT -{ - typedef allocator_traits<_Alloc> __alloc_traits; - typedef __rebind_alloc<__alloc_traits, __func> _Ap; - _Ap __a(__f_.__get_allocator()); - __f_.destroy(); - __a.deallocate(this, 1); +template +void __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy_deallocate() _NOEXCEPT { + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __rebind_alloc<__alloc_traits, __func> _Ap; + _Ap __a(__f_.__get_allocator()); + __f_.destroy(); + __a.deallocate(this, 1); } -template -_Rp -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::operator()(_ArgTypes&& ... __arg) -{ - return __f_(_VSTD::forward<_ArgTypes>(__arg)...); +template +_Rp __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::operator()(_ArgTypes&&... __arg) { + return __f_(std::forward<_ArgTypes>(__arg)...); } -#ifndef _LIBCPP_HAS_NO_RTTI +# ifndef _LIBCPP_HAS_NO_RTTI -template -const void* -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target(const type_info& __ti) const _NOEXCEPT -{ - if (__ti == typeid(_Fp)) - return _VSTD::addressof(__f_.__target()); - return nullptr; +template +const void* __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target(const type_info& __ti) const _NOEXCEPT { + if (__ti == typeid(_Fp)) + return std::addressof(__f_.__target()); + return nullptr; } -template -const std::type_info& -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target_type() const _NOEXCEPT -{ - return typeid(_Fp); +template +const std::type_info& __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target_type() const _NOEXCEPT { + return typeid(_Fp); } -#endif // _LIBCPP_HAS_NO_RTTI +# endif // _LIBCPP_HAS_NO_RTTI // __value_func creates a value-type from a __func. -template class __value_func; +template +class __value_func; -template class __value_func<_Rp(_ArgTypes...)> -{ - _LIBCPP_SUPPRESS_DEPRECATED_PUSH - typename aligned_storage<3 * sizeof(void*)>::type __buf_; - _LIBCPP_SUPPRESS_DEPRECATED_POP +template +class __value_func<_Rp(_ArgTypes...)> { + _LIBCPP_SUPPRESS_DEPRECATED_PUSH + typename aligned_storage<3 * sizeof(void*)>::type __buf_; + _LIBCPP_SUPPRESS_DEPRECATED_POP - typedef __base<_Rp(_ArgTypes...)> __func; - __func* __f_; + typedef __base<_Rp(_ArgTypes...)> __func; + __func* __f_; - _LIBCPP_NO_CFI static __func* __as_base(void* __p) - { - return reinterpret_cast<__func*>(__p); - } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_NO_CFI static __func* __as_base(void* __p) { return reinterpret_cast<__func*>(__p); } - public: - _LIBCPP_INLINE_VISIBILITY - __value_func() _NOEXCEPT : __f_(nullptr) {} - - template - _LIBCPP_INLINE_VISIBILITY __value_func(_Fp&& __f, const _Alloc& __a) - : __f_(nullptr) - { - typedef allocator_traits<_Alloc> __alloc_traits; - typedef __function::__func<_Fp, _Alloc, _Rp(_ArgTypes...)> _Fun; - typedef __rebind_alloc<__alloc_traits, _Fun> _FunAlloc; - - if (__function::__not_null(__f)) - { - _FunAlloc __af(__a); - if (sizeof(_Fun) <= sizeof(__buf_) && - is_nothrow_copy_constructible<_Fp>::value && - is_nothrow_copy_constructible<_FunAlloc>::value) - { - __f_ = - ::new ((void*)&__buf_) _Fun(_VSTD::move(__f), _Alloc(__af)); - } - else - { - typedef __allocator_destructor<_FunAlloc> _Dp; - unique_ptr<__func, _Dp> __hold(__af.allocate(1), _Dp(__af, 1)); - ::new ((void*)__hold.get()) _Fun(_VSTD::move(__f), _Alloc(__a)); - __f_ = __hold.release(); - } - } - } +public: + _LIBCPP_HIDE_FROM_ABI __value_func() _NOEXCEPT : __f_(nullptr) {} - template ::type, __value_func>::value>::type> - _LIBCPP_INLINE_VISIBILITY explicit __value_func(_Fp&& __f) - : __value_func(_VSTD::forward<_Fp>(__f), allocator<_Fp>()) {} - - _LIBCPP_INLINE_VISIBILITY - __value_func(const __value_func& __f) - { - if (__f.__f_ == nullptr) - __f_ = nullptr; - else if ((void*)__f.__f_ == &__f.__buf_) - { - __f_ = __as_base(&__buf_); - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); + template + _LIBCPP_HIDE_FROM_ABI __value_func(_Fp&& __f, const _Alloc& __a) : __f_(nullptr) { + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __function::__func<_Fp, _Alloc, _Rp(_ArgTypes...)> _Fun; + typedef __rebind_alloc<__alloc_traits, _Fun> _FunAlloc; + + if (__function::__not_null(__f)) { + _FunAlloc __af(__a); + if (sizeof(_Fun) <= sizeof(__buf_) && is_nothrow_copy_constructible<_Fp>::value && + is_nothrow_copy_constructible<_FunAlloc>::value) { + __f_ = ::new ((void*)&__buf_) _Fun(std::move(__f), _Alloc(__af)); + } else { + typedef __allocator_destructor<_FunAlloc> _Dp; + unique_ptr<__func, _Dp> __hold(__af.allocate(1), _Dp(__af, 1)); + ::new ((void*)__hold.get()) _Fun(std::move(__f), _Alloc(__a)); + __f_ = __hold.release(); + } } + } - _LIBCPP_INLINE_VISIBILITY - __value_func(__value_func&& __f) _NOEXCEPT - { - if (__f.__f_ == nullptr) - __f_ = nullptr; - else if ((void*)__f.__f_ == &__f.__buf_) - { - __f_ = __as_base(&__buf_); - __f.__f_->__clone(__f_); - } - else - { - __f_ = __f.__f_; - __f.__f_ = nullptr; - } - } + template , __value_func>::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI explicit __value_func(_Fp&& __f) : __value_func(std::forward<_Fp>(__f), allocator<_Fp>()) {} + + _LIBCPP_HIDE_FROM_ABI __value_func(const __value_func& __f) { + if (__f.__f_ == nullptr) + __f_ = nullptr; + else if ((void*)__f.__f_ == &__f.__buf_) { + __f_ = __as_base(&__buf_); + __f.__f_->__clone(__f_); + } else + __f_ = __f.__f_->__clone(); + } - _LIBCPP_INLINE_VISIBILITY - ~__value_func() - { - if ((void*)__f_ == &__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); + _LIBCPP_HIDE_FROM_ABI __value_func(__value_func&& __f) _NOEXCEPT { + if (__f.__f_ == nullptr) + __f_ = nullptr; + else if ((void*)__f.__f_ == &__f.__buf_) { + __f_ = __as_base(&__buf_); + __f.__f_->__clone(__f_); + } else { + __f_ = __f.__f_; + __f.__f_ = nullptr; } + } - _LIBCPP_INLINE_VISIBILITY - __value_func& operator=(__value_func&& __f) - { - *this = nullptr; - if (__f.__f_ == nullptr) - __f_ = nullptr; - else if ((void*)__f.__f_ == &__f.__buf_) - { - __f_ = __as_base(&__buf_); - __f.__f_->__clone(__f_); - } - else - { - __f_ = __f.__f_; - __f.__f_ = nullptr; - } - return *this; - } + _LIBCPP_HIDE_FROM_ABI ~__value_func() { + if ((void*)__f_ == &__buf_) + __f_->destroy(); + else if (__f_) + __f_->destroy_deallocate(); + } - _LIBCPP_INLINE_VISIBILITY - __value_func& operator=(nullptr_t) - { - __func* __f = __f_; - __f_ = nullptr; - if ((void*)__f == &__buf_) - __f->destroy(); - else if (__f) - __f->destroy_deallocate(); - return *this; + _LIBCPP_HIDE_FROM_ABI __value_func& operator=(__value_func&& __f) { + *this = nullptr; + if (__f.__f_ == nullptr) + __f_ = nullptr; + else if ((void*)__f.__f_ == &__f.__buf_) { + __f_ = __as_base(&__buf_); + __f.__f_->__clone(__f_); + } else { + __f_ = __f.__f_; + __f.__f_ = nullptr; } + return *this; + } - _LIBCPP_INLINE_VISIBILITY - _Rp operator()(_ArgTypes&&... __args) const - { - if (__f_ == nullptr) - __throw_bad_function_call(); - return (*__f_)(_VSTD::forward<_ArgTypes>(__args)...); - } + _LIBCPP_HIDE_FROM_ABI __value_func& operator=(nullptr_t) { + __func* __f = __f_; + __f_ = nullptr; + if ((void*)__f == &__buf_) + __f->destroy(); + else if (__f) + __f->destroy_deallocate(); + return *this; + } - _LIBCPP_INLINE_VISIBILITY - void swap(__value_func& __f) _NOEXCEPT - { - if (&__f == this) - return; - if ((void*)__f_ == &__buf_ && (void*)__f.__f_ == &__f.__buf_) - { - _LIBCPP_SUPPRESS_DEPRECATED_PUSH - typename aligned_storage::type __tempbuf; - _LIBCPP_SUPPRESS_DEPRECATED_POP - __func* __t = __as_base(&__tempbuf); - __f_->__clone(__t); - __f_->destroy(); - __f_ = nullptr; - __f.__f_->__clone(__as_base(&__buf_)); - __f.__f_->destroy(); - __f.__f_ = nullptr; - __f_ = __as_base(&__buf_); - __t->__clone(__as_base(&__f.__buf_)); - __t->destroy(); - __f.__f_ = __as_base(&__f.__buf_); - } - else if ((void*)__f_ == &__buf_) - { - __f_->__clone(__as_base(&__f.__buf_)); - __f_->destroy(); - __f_ = __f.__f_; - __f.__f_ = __as_base(&__f.__buf_); - } - else if ((void*)__f.__f_ == &__f.__buf_) - { - __f.__f_->__clone(__as_base(&__buf_)); - __f.__f_->destroy(); - __f.__f_ = __f_; - __f_ = __as_base(&__buf_); - } - else - _VSTD::swap(__f_, __f.__f_); - } + _LIBCPP_HIDE_FROM_ABI _Rp operator()(_ArgTypes&&... __args) const { + if (__f_ == nullptr) + __throw_bad_function_call(); + return (*__f_)(std::forward<_ArgTypes>(__args)...); + } - _LIBCPP_INLINE_VISIBILITY - explicit operator bool() const _NOEXCEPT { return __f_ != nullptr; } + _LIBCPP_HIDE_FROM_ABI void swap(__value_func& __f) _NOEXCEPT { + if (&__f == this) + return; + if ((void*)__f_ == &__buf_ && (void*)__f.__f_ == &__f.__buf_) { + _LIBCPP_SUPPRESS_DEPRECATED_PUSH + typename aligned_storage::type __tempbuf; + _LIBCPP_SUPPRESS_DEPRECATED_POP + __func* __t = __as_base(&__tempbuf); + __f_->__clone(__t); + __f_->destroy(); + __f_ = nullptr; + __f.__f_->__clone(__as_base(&__buf_)); + __f.__f_->destroy(); + __f.__f_ = nullptr; + __f_ = __as_base(&__buf_); + __t->__clone(__as_base(&__f.__buf_)); + __t->destroy(); + __f.__f_ = __as_base(&__f.__buf_); + } else if ((void*)__f_ == &__buf_) { + __f_->__clone(__as_base(&__f.__buf_)); + __f_->destroy(); + __f_ = __f.__f_; + __f.__f_ = __as_base(&__f.__buf_); + } else if ((void*)__f.__f_ == &__f.__buf_) { + __f.__f_->__clone(__as_base(&__buf_)); + __f.__f_->destroy(); + __f.__f_ = __f_; + __f_ = __as_base(&__buf_); + } else + std::swap(__f_, __f.__f_); + } -#ifndef _LIBCPP_HAS_NO_RTTI - _LIBCPP_INLINE_VISIBILITY - const std::type_info& target_type() const _NOEXCEPT - { - if (__f_ == nullptr) - return typeid(void); - return __f_->target_type(); - } + _LIBCPP_HIDE_FROM_ABI explicit operator bool() const _NOEXCEPT { return __f_ != nullptr; } - template - _LIBCPP_INLINE_VISIBILITY const _Tp* target() const _NOEXCEPT - { - if (__f_ == nullptr) - return nullptr; - return (const _Tp*)__f_->target(typeid(_Tp)); - } -#endif // _LIBCPP_HAS_NO_RTTI +# ifndef _LIBCPP_HAS_NO_RTTI + _LIBCPP_HIDE_FROM_ABI const std::type_info& target_type() const _NOEXCEPT { + if (__f_ == nullptr) + return typeid(void); + return __f_->target_type(); + } + + template + _LIBCPP_HIDE_FROM_ABI const _Tp* target() const _NOEXCEPT { + if (__f_ == nullptr) + return nullptr; + return (const _Tp*)__f_->target(typeid(_Tp)); + } +# endif // _LIBCPP_HAS_NO_RTTI }; // Storage for a functor object, to be used with __policy to manage copy and // destruction. -union __policy_storage -{ - mutable char __small[sizeof(void*) * 2]; - void* __large; +union __policy_storage { + mutable char __small[sizeof(void*) * 2]; + void* __large; }; // True if _Fun can safely be held in __policy_storage.__small. template struct __use_small_storage : public integral_constant< - bool, sizeof(_Fun) <= sizeof(__policy_storage) && - _LIBCPP_ALIGNOF(_Fun) <= _LIBCPP_ALIGNOF(__policy_storage) && - is_trivially_copy_constructible<_Fun>::value && - is_trivially_destructible<_Fun>::value> {}; + bool, + sizeof(_Fun) <= sizeof(__policy_storage)&& _LIBCPP_ALIGNOF(_Fun) <= _LIBCPP_ALIGNOF(__policy_storage) && + is_trivially_copy_constructible<_Fun>::value && is_trivially_destructible<_Fun>::value> {}; // Policy contains information about how to copy, destroy, and move the // underlying functor. You can think of it as a vtable of sorts. -struct __policy -{ - // Used to copy or destroy __large values. null for trivial objects. - void* (*const __clone)(const void*); - void (*const __destroy)(void*); - - // True if this is the null policy (no value). - const bool __is_null; - - // The target type. May be null if RTTI is disabled. - const std::type_info* const __type_info; - - // Returns a pointer to a static policy object suitable for the functor - // type. - template - _LIBCPP_INLINE_VISIBILITY static const __policy* __create() - { - return __choose_policy<_Fun>(__use_small_storage<_Fun>()); - } +struct __policy { + // Used to copy or destroy __large values. null for trivial objects. + void* (*const __clone)(const void*); + void (*const __destroy)(void*); + + // True if this is the null policy (no value). + const bool __is_null; + + // The target type. May be null if RTTI is disabled. + const std::type_info* const __type_info; + + // Returns a pointer to a static policy object suitable for the functor + // type. + template + _LIBCPP_HIDE_FROM_ABI static const __policy* __create() { + return __choose_policy<_Fun>(__use_small_storage<_Fun>()); + } - _LIBCPP_INLINE_VISIBILITY - static const __policy* __create_empty() - { - static const _LIBCPP_CONSTEXPR __policy __policy_ = {nullptr, nullptr, - true, -#ifndef _LIBCPP_HAS_NO_RTTI - &typeid(void) -#else - nullptr -#endif - }; - return &__policy_; - } + _LIBCPP_HIDE_FROM_ABI static const __policy* __create_empty() { + static constexpr __policy __policy = { + nullptr, + nullptr, + true, +# ifndef _LIBCPP_HAS_NO_RTTI + &typeid(void) +# else + nullptr +# endif + }; + return &__policy; + } - private: - template static void* __large_clone(const void* __s) - { - const _Fun* __f = static_cast(__s); - return __f->__clone(); - } +private: + template + _LIBCPP_HIDE_FROM_ABI static void* __large_clone(const void* __s) { + const _Fun* __f = static_cast(__s); + return __f->__clone(); + } - template - static void __large_destroy(void* __s) { - _Fun::__destroy_and_delete(static_cast<_Fun*>(__s)); - } + template + _LIBCPP_HIDE_FROM_ABI static void __large_destroy(void* __s) { + _Fun::__destroy_and_delete(static_cast<_Fun*>(__s)); + } - template - _LIBCPP_INLINE_VISIBILITY static const __policy* - __choose_policy(/* is_small = */ false_type) { - static const _LIBCPP_CONSTEXPR __policy __policy_ = { - &__large_clone<_Fun>, &__large_destroy<_Fun>, false, -#ifndef _LIBCPP_HAS_NO_RTTI - &typeid(typename _Fun::_Target) -#else - nullptr -#endif - }; - return &__policy_; - } + template + _LIBCPP_HIDE_FROM_ABI static const __policy* __choose_policy(/* is_small = */ false_type) { + static constexpr __policy __policy = { + &__large_clone<_Fun>, + &__large_destroy<_Fun>, + false, +# ifndef _LIBCPP_HAS_NO_RTTI + &typeid(typename _Fun::_Target) +# else + nullptr +# endif + }; + return &__policy; + } - template - _LIBCPP_INLINE_VISIBILITY static const __policy* - __choose_policy(/* is_small = */ true_type) - { - static const _LIBCPP_CONSTEXPR __policy __policy_ = { - nullptr, nullptr, false, -#ifndef _LIBCPP_HAS_NO_RTTI - &typeid(typename _Fun::_Target) -#else - nullptr -#endif - }; - return &__policy_; - } + template + _LIBCPP_HIDE_FROM_ABI static const __policy* __choose_policy(/* is_small = */ true_type) { + static constexpr __policy __policy = { + nullptr, + nullptr, + false, +# ifndef _LIBCPP_HAS_NO_RTTI + &typeid(typename _Fun::_Target) +# else + nullptr +# endif + }; + return &__policy; + } }; // Used to choose between perfect forwarding or pass-by-value. Pass-by-value is @@ -674,543 +579,470 @@ using __fast_forward = __conditional_t::value, _Tp, _Tp&&>; // __policy_invoker calls an instance of __alloc_func held in __policy_storage. -template struct __policy_invoker; +template +struct __policy_invoker; template -struct __policy_invoker<_Rp(_ArgTypes...)> -{ - typedef _Rp (*__Call)(const __policy_storage*, - __fast_forward<_ArgTypes>...); - - __Call __call_; - - // Creates an invoker that throws bad_function_call. - _LIBCPP_INLINE_VISIBILITY - __policy_invoker() : __call_(&__call_empty) {} - - // Creates an invoker that calls the given instance of __func. - template - _LIBCPP_INLINE_VISIBILITY static __policy_invoker __create() - { - return __policy_invoker(&__call_impl<_Fun>); - } +struct __policy_invoker<_Rp(_ArgTypes...)> { + typedef _Rp (*__Call)(const __policy_storage*, __fast_forward<_ArgTypes>...); - private: - _LIBCPP_INLINE_VISIBILITY - explicit __policy_invoker(__Call __c) : __call_(__c) {} + __Call __call_; - static _Rp __call_empty(const __policy_storage*, - __fast_forward<_ArgTypes>...) - { - __throw_bad_function_call(); - } + // Creates an invoker that throws bad_function_call. + _LIBCPP_HIDE_FROM_ABI __policy_invoker() : __call_(&__call_empty) {} - template - static _Rp __call_impl(const __policy_storage* __buf, - __fast_forward<_ArgTypes>... __args) - { - _Fun* __f = reinterpret_cast<_Fun*>(__use_small_storage<_Fun>::value - ? &__buf->__small - : __buf->__large); - return (*__f)(_VSTD::forward<_ArgTypes>(__args)...); - } + // Creates an invoker that calls the given instance of __func. + template + _LIBCPP_HIDE_FROM_ABI static __policy_invoker __create() { + return __policy_invoker(&__call_impl<_Fun>); + } + +private: + _LIBCPP_HIDE_FROM_ABI explicit __policy_invoker(__Call __c) : __call_(__c) {} + + _LIBCPP_HIDE_FROM_ABI static _Rp __call_empty(const __policy_storage*, __fast_forward<_ArgTypes>...) { + __throw_bad_function_call(); + } + + template + _LIBCPP_HIDE_FROM_ABI static _Rp __call_impl(const __policy_storage* __buf, __fast_forward<_ArgTypes>... __args) { + _Fun* __f = reinterpret_cast<_Fun*>(__use_small_storage<_Fun>::value ? &__buf->__small : __buf->__large); + return (*__f)(std::forward<_ArgTypes>(__args)...); + } }; // __policy_func uses a __policy and __policy_invoker to create a type-erased, // copyable functor. -template class __policy_func; - -template class __policy_func<_Rp(_ArgTypes...)> -{ - // Inline storage for small objects. - __policy_storage __buf_; - - // Calls the value stored in __buf_. This could technically be part of - // policy, but storing it here eliminates a level of indirection inside - // operator(). - typedef __function::__policy_invoker<_Rp(_ArgTypes...)> __invoker; - __invoker __invoker_; - - // The policy that describes how to move / copy / destroy __buf_. Never - // null, even if the function is empty. - const __policy* __policy_; - - public: - _LIBCPP_INLINE_VISIBILITY - __policy_func() : __policy_(__policy::__create_empty()) {} - - template - _LIBCPP_INLINE_VISIBILITY __policy_func(_Fp&& __f, const _Alloc& __a) - : __policy_(__policy::__create_empty()) - { - typedef __alloc_func<_Fp, _Alloc, _Rp(_ArgTypes...)> _Fun; - typedef allocator_traits<_Alloc> __alloc_traits; - typedef __rebind_alloc<__alloc_traits, _Fun> _FunAlloc; - - if (__function::__not_null(__f)) - { - __invoker_ = __invoker::template __create<_Fun>(); - __policy_ = __policy::__create<_Fun>(); - - _FunAlloc __af(__a); - if (__use_small_storage<_Fun>()) - { - ::new ((void*)&__buf_.__small) - _Fun(_VSTD::move(__f), _Alloc(__af)); - } - else - { - typedef __allocator_destructor<_FunAlloc> _Dp; - unique_ptr<_Fun, _Dp> __hold(__af.allocate(1), _Dp(__af, 1)); - ::new ((void*)__hold.get()) - _Fun(_VSTD::move(__f), _Alloc(__af)); - __buf_.__large = __hold.release(); - } - } - } +template +class __policy_func; - template ::type, __policy_func>::value>::type> - _LIBCPP_INLINE_VISIBILITY explicit __policy_func(_Fp&& __f) - : __policy_(__policy::__create_empty()) { - typedef __default_alloc_func<_Fp, _Rp(_ArgTypes...)> _Fun; - - if (__function::__not_null(__f)) { - __invoker_ = __invoker::template __create<_Fun>(); - __policy_ = __policy::__create<_Fun>(); - if (__use_small_storage<_Fun>()) { - ::new ((void*)&__buf_.__small) _Fun(_VSTD::move(__f)); - } else { - __builtin_new_allocator::__holder_t __hold = - __builtin_new_allocator::__allocate_type<_Fun>(1); - __buf_.__large = ::new ((void*)__hold.get()) _Fun(_VSTD::move(__f)); - (void)__hold.release(); - } +template +class __policy_func<_Rp(_ArgTypes...)> { + // Inline storage for small objects. + __policy_storage __buf_; + + // Calls the value stored in __buf_. This could technically be part of + // policy, but storing it here eliminates a level of indirection inside + // operator(). + typedef __function::__policy_invoker<_Rp(_ArgTypes...)> __invoker; + __invoker __invoker_; + + // The policy that describes how to move / copy / destroy __buf_. Never + // null, even if the function is empty. + const __policy* __policy_; + +public: + _LIBCPP_HIDE_FROM_ABI __policy_func() : __policy_(__policy::__create_empty()) {} + + template + _LIBCPP_HIDE_FROM_ABI __policy_func(_Fp&& __f, const _Alloc& __a) : __policy_(__policy::__create_empty()) { + typedef __alloc_func<_Fp, _Alloc, _Rp(_ArgTypes...)> _Fun; + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __rebind_alloc<__alloc_traits, _Fun> _FunAlloc; + + if (__function::__not_null(__f)) { + __invoker_ = __invoker::template __create<_Fun>(); + __policy_ = __policy::__create<_Fun>(); + + _FunAlloc __af(__a); + if (__use_small_storage<_Fun>()) { + ::new ((void*)&__buf_.__small) _Fun(std::move(__f), _Alloc(__af)); + } else { + typedef __allocator_destructor<_FunAlloc> _Dp; + unique_ptr<_Fun, _Dp> __hold(__af.allocate(1), _Dp(__af, 1)); + ::new ((void*)__hold.get()) _Fun(std::move(__f), _Alloc(__af)); + __buf_.__large = __hold.release(); } } + } - _LIBCPP_INLINE_VISIBILITY - __policy_func(const __policy_func& __f) - : __buf_(__f.__buf_), __invoker_(__f.__invoker_), - __policy_(__f.__policy_) - { - if (__policy_->__clone) - __buf_.__large = __policy_->__clone(__f.__buf_.__large); + template , __policy_func>::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI explicit __policy_func(_Fp&& __f) : __policy_(__policy::__create_empty()) { + typedef __default_alloc_func<_Fp, _Rp(_ArgTypes...)> _Fun; + + if (__function::__not_null(__f)) { + __invoker_ = __invoker::template __create<_Fun>(); + __policy_ = __policy::__create<_Fun>(); + if (__use_small_storage<_Fun>()) { + ::new ((void*)&__buf_.__small) _Fun(std::move(__f)); + } else { + __builtin_new_allocator::__holder_t __hold = __builtin_new_allocator::__allocate_type<_Fun>(1); + __buf_.__large = ::new ((void*)__hold.get()) _Fun(std::move(__f)); + (void)__hold.release(); + } } + } - _LIBCPP_INLINE_VISIBILITY - __policy_func(__policy_func&& __f) - : __buf_(__f.__buf_), __invoker_(__f.__invoker_), - __policy_(__f.__policy_) - { - if (__policy_->__destroy) - { - __f.__policy_ = __policy::__create_empty(); - __f.__invoker_ = __invoker(); - } - } + _LIBCPP_HIDE_FROM_ABI __policy_func(const __policy_func& __f) + : __buf_(__f.__buf_), __invoker_(__f.__invoker_), __policy_(__f.__policy_) { + if (__policy_->__clone) + __buf_.__large = __policy_->__clone(__f.__buf_.__large); + } - _LIBCPP_INLINE_VISIBILITY - ~__policy_func() - { - if (__policy_->__destroy) - __policy_->__destroy(__buf_.__large); + _LIBCPP_HIDE_FROM_ABI __policy_func(__policy_func&& __f) + : __buf_(__f.__buf_), __invoker_(__f.__invoker_), __policy_(__f.__policy_) { + if (__policy_->__destroy) { + __f.__policy_ = __policy::__create_empty(); + __f.__invoker_ = __invoker(); } + } - _LIBCPP_INLINE_VISIBILITY - __policy_func& operator=(__policy_func&& __f) - { - *this = nullptr; - __buf_ = __f.__buf_; - __invoker_ = __f.__invoker_; - __policy_ = __f.__policy_; - __f.__policy_ = __policy::__create_empty(); - __f.__invoker_ = __invoker(); - return *this; - } + _LIBCPP_HIDE_FROM_ABI ~__policy_func() { + if (__policy_->__destroy) + __policy_->__destroy(__buf_.__large); + } - _LIBCPP_INLINE_VISIBILITY - __policy_func& operator=(nullptr_t) - { - const __policy* __p = __policy_; - __policy_ = __policy::__create_empty(); - __invoker_ = __invoker(); - if (__p->__destroy) - __p->__destroy(__buf_.__large); - return *this; - } + _LIBCPP_HIDE_FROM_ABI __policy_func& operator=(__policy_func&& __f) { + *this = nullptr; + __buf_ = __f.__buf_; + __invoker_ = __f.__invoker_; + __policy_ = __f.__policy_; + __f.__policy_ = __policy::__create_empty(); + __f.__invoker_ = __invoker(); + return *this; + } - _LIBCPP_INLINE_VISIBILITY - _Rp operator()(_ArgTypes&&... __args) const - { - return __invoker_.__call_(_VSTD::addressof(__buf_), - _VSTD::forward<_ArgTypes>(__args)...); - } + _LIBCPP_HIDE_FROM_ABI __policy_func& operator=(nullptr_t) { + const __policy* __p = __policy_; + __policy_ = __policy::__create_empty(); + __invoker_ = __invoker(); + if (__p->__destroy) + __p->__destroy(__buf_.__large); + return *this; + } - _LIBCPP_INLINE_VISIBILITY - void swap(__policy_func& __f) - { - _VSTD::swap(__invoker_, __f.__invoker_); - _VSTD::swap(__policy_, __f.__policy_); - _VSTD::swap(__buf_, __f.__buf_); - } + _LIBCPP_HIDE_FROM_ABI _Rp operator()(_ArgTypes&&... __args) const { + return __invoker_.__call_(std::addressof(__buf_), std::forward<_ArgTypes>(__args)...); + } - _LIBCPP_INLINE_VISIBILITY - explicit operator bool() const _NOEXCEPT - { - return !__policy_->__is_null; - } + _LIBCPP_HIDE_FROM_ABI void swap(__policy_func& __f) { + std::swap(__invoker_, __f.__invoker_); + std::swap(__policy_, __f.__policy_); + std::swap(__buf_, __f.__buf_); + } -#ifndef _LIBCPP_HAS_NO_RTTI - _LIBCPP_INLINE_VISIBILITY - const std::type_info& target_type() const _NOEXCEPT - { - return *__policy_->__type_info; - } + _LIBCPP_HIDE_FROM_ABI explicit operator bool() const _NOEXCEPT { return !__policy_->__is_null; } - template - _LIBCPP_INLINE_VISIBILITY const _Tp* target() const _NOEXCEPT - { - if (__policy_->__is_null || typeid(_Tp) != *__policy_->__type_info) - return nullptr; - if (__policy_->__clone) // Out of line storage. - return reinterpret_cast(__buf_.__large); - else - return reinterpret_cast(&__buf_.__small); - } -#endif // _LIBCPP_HAS_NO_RTTI +# ifndef _LIBCPP_HAS_NO_RTTI + _LIBCPP_HIDE_FROM_ABI const std::type_info& target_type() const _NOEXCEPT { return *__policy_->__type_info; } + + template + _LIBCPP_HIDE_FROM_ABI const _Tp* target() const _NOEXCEPT { + if (__policy_->__is_null || typeid(_Tp) != *__policy_->__type_info) + return nullptr; + if (__policy_->__clone) // Out of line storage. + return reinterpret_cast(__buf_.__large); + else + return reinterpret_cast(&__buf_.__small); + } +# endif // _LIBCPP_HAS_NO_RTTI }; -#if defined(_LIBCPP_HAS_BLOCKS_RUNTIME) +# if defined(_LIBCPP_HAS_BLOCKS_RUNTIME) -extern "C" void *_Block_copy(const void *); -extern "C" void _Block_release(const void *); +extern "C" void* _Block_copy(const void*); +extern "C" void _Block_release(const void*); -template -class __func<_Rp1(^)(_ArgTypes1...), _Alloc, _Rp(_ArgTypes...)> - : public __base<_Rp(_ArgTypes...)> -{ - typedef _Rp1(^__block_type)(_ArgTypes1...); - __block_type __f_; +template +class __func<_Rp1 (^)(_ArgTypes1...), _Alloc, _Rp(_ArgTypes...)> : public __base<_Rp(_ArgTypes...)> { + typedef _Rp1 (^__block_type)(_ArgTypes1...); + __block_type __f_; public: - _LIBCPP_INLINE_VISIBILITY - explicit __func(__block_type const& __f) -#ifdef _LIBCPP_HAS_OBJC_ARC - : __f_(__f) -#else - : __f_(reinterpret_cast<__block_type>(__f ? _Block_copy(__f) : nullptr)) -#endif - { } + _LIBCPP_HIDE_FROM_ABI explicit __func(__block_type const& __f) +# ifdef _LIBCPP_HAS_OBJC_ARC + : __f_(__f) +# else + : __f_(reinterpret_cast<__block_type>(__f ? _Block_copy(__f) : nullptr)) +# endif + { + } - // [TODO] add && to save on a retain + // [TODO] add && to save on a retain - _LIBCPP_INLINE_VISIBILITY - explicit __func(__block_type __f, const _Alloc& /* unused */) -#ifdef _LIBCPP_HAS_OBJC_ARC - : __f_(__f) -#else - : __f_(reinterpret_cast<__block_type>(__f ? _Block_copy(__f) : nullptr)) -#endif - { } - - virtual __base<_Rp(_ArgTypes...)>* __clone() const { - _LIBCPP_ASSERT(false, - "Block pointers are just pointers, so they should always fit into " - "std::function's small buffer optimization. This function should " - "never be invoked."); - return nullptr; - } + _LIBCPP_HIDE_FROM_ABI explicit __func(__block_type __f, const _Alloc& /* unused */) +# ifdef _LIBCPP_HAS_OBJC_ARC + : __f_(__f) +# else + : __f_(reinterpret_cast<__block_type>(__f ? _Block_copy(__f) : nullptr)) +# endif + { + } - virtual void __clone(__base<_Rp(_ArgTypes...)>* __p) const { - ::new ((void*)__p) __func(__f_); - } + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual __base<_Rp(_ArgTypes...)>* __clone() const { + _LIBCPP_ASSERT_INTERNAL( + false, + "Block pointers are just pointers, so they should always fit into " + "std::function's small buffer optimization. This function should " + "never be invoked."); + return nullptr; + } - virtual void destroy() _NOEXCEPT { -#ifndef _LIBCPP_HAS_OBJC_ARC - if (__f_) - _Block_release(__f_); -#endif - __f_ = 0; - } + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void __clone(__base<_Rp(_ArgTypes...)>* __p) const { + ::new ((void*)__p) __func(__f_); + } - virtual void destroy_deallocate() _NOEXCEPT { - _LIBCPP_ASSERT(false, - "Block pointers are just pointers, so they should always fit into " - "std::function's small buffer optimization. This function should " - "never be invoked."); - } + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void destroy() _NOEXCEPT { +# ifndef _LIBCPP_HAS_OBJC_ARC + if (__f_) + _Block_release(__f_); +# endif + __f_ = 0; + } - virtual _Rp operator()(_ArgTypes&& ... __arg) { - return _VSTD::__invoke(__f_, _VSTD::forward<_ArgTypes>(__arg)...); - } + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void destroy_deallocate() _NOEXCEPT { + _LIBCPP_ASSERT_INTERNAL( + false, + "Block pointers are just pointers, so they should always fit into " + "std::function's small buffer optimization. This function should " + "never be invoked."); + } -#ifndef _LIBCPP_HAS_NO_RTTI - virtual const void* target(type_info const& __ti) const _NOEXCEPT { - if (__ti == typeid(__func::__block_type)) - return &__f_; - return (const void*)nullptr; - } + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual _Rp operator()(_ArgTypes&&... __arg) { + return std::__invoke(__f_, std::forward<_ArgTypes>(__arg)...); + } - virtual const std::type_info& target_type() const _NOEXCEPT { - return typeid(__func::__block_type); - } -#endif // _LIBCPP_HAS_NO_RTTI +# ifndef _LIBCPP_HAS_NO_RTTI + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual const void* target(type_info const& __ti) const _NOEXCEPT { + if (__ti == typeid(__func::__block_type)) + return &__f_; + return (const void*)nullptr; + } + + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual const std::type_info& target_type() const _NOEXCEPT { + return typeid(__func::__block_type); + } +# endif // _LIBCPP_HAS_NO_RTTI }; -#endif // _LIBCPP_HAS_EXTENSION_BLOCKS +# endif // _LIBCPP_HAS_EXTENSION_BLOCKS } // namespace __function -template +template class _LIBCPP_TEMPLATE_VIS function<_Rp(_ArgTypes...)> : public __function::__maybe_derive_from_unary_function<_Rp(_ArgTypes...)>, - public __function::__maybe_derive_from_binary_function<_Rp(_ArgTypes...)> -{ -#ifndef _LIBCPP_ABI_OPTIMIZED_FUNCTION - typedef __function::__value_func<_Rp(_ArgTypes...)> __func; -#else - typedef __function::__policy_func<_Rp(_ArgTypes...)> __func; -#endif - - __func __f_; - - template , function>, - __invokable<_Fp, _ArgTypes...> - >::value> - struct __callable; - template - struct __callable<_Fp, true> - { - static const bool value = is_void<_Rp>::value || - __is_core_convertible::type, - _Rp>::value; - }; - template - struct __callable<_Fp, false> - { - static const bool value = false; - }; - + public __function::__maybe_derive_from_binary_function<_Rp(_ArgTypes...)> { +# ifndef _LIBCPP_ABI_OPTIMIZED_FUNCTION + typedef __function::__value_func<_Rp(_ArgTypes...)> __func; +# else + typedef __function::__policy_func<_Rp(_ArgTypes...)> __func; +# endif + + __func __f_; + + template , function>, __invokable<_Fp, _ArgTypes...> >::value> + struct __callable; template - using _EnableIfLValueCallable = typename enable_if<__callable<_Fp&>::value>::type; -public: - typedef _Rp result_type; - - // construct/copy/destroy: - _LIBCPP_INLINE_VISIBILITY - function() _NOEXCEPT { } - _LIBCPP_INLINE_VISIBILITY - function(nullptr_t) _NOEXCEPT {} - function(const function&); - function(function&&) _NOEXCEPT; - template> - function(_Fp); - -#if _LIBCPP_STD_VER <= 14 - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&) _NOEXCEPT {} - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&, nullptr_t) _NOEXCEPT {} - template - function(allocator_arg_t, const _Alloc&, const function&); - template - function(allocator_arg_t, const _Alloc&, function&&); - template> - function(allocator_arg_t, const _Alloc& __a, _Fp __f); -#endif - - function& operator=(const function&); - function& operator=(function&&) _NOEXCEPT; - function& operator=(nullptr_t) _NOEXCEPT; - template::type>> - function& operator=(_Fp&&); + struct __callable<_Fp, true> { + static const bool value = + is_void<_Rp>::value || __is_core_convertible::type, _Rp>::value; + }; + template + struct __callable<_Fp, false> { + static const bool value = false; + }; - ~function(); + template + using _EnableIfLValueCallable = __enable_if_t<__callable<_Fp&>::value>; - // function modifiers: - void swap(function&) _NOEXCEPT; +public: + typedef _Rp result_type; + + // construct/copy/destroy: + _LIBCPP_HIDE_FROM_ABI function() _NOEXCEPT {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDE_FROM_ABI function(nullptr_t) _NOEXCEPT {} + _LIBCPP_HIDE_FROM_ABI function(const function&); + _LIBCPP_HIDE_FROM_ABI function(function&&) _NOEXCEPT; + template > + _LIBCPP_HIDE_FROM_ABI function(_Fp); + +# if _LIBCPP_STD_VER <= 14 + template + _LIBCPP_HIDE_FROM_ABI function(allocator_arg_t, const _Alloc&) _NOEXCEPT {} + template + _LIBCPP_HIDE_FROM_ABI function(allocator_arg_t, const _Alloc&, nullptr_t) _NOEXCEPT {} + template + _LIBCPP_HIDE_FROM_ABI function(allocator_arg_t, const _Alloc&, const function&); + template + _LIBCPP_HIDE_FROM_ABI function(allocator_arg_t, const _Alloc&, function&&); + template > + _LIBCPP_HIDE_FROM_ABI function(allocator_arg_t, const _Alloc& __a, _Fp __f); +# endif + + _LIBCPP_HIDE_FROM_ABI function& operator=(const function&); + _LIBCPP_HIDE_FROM_ABI function& operator=(function&&) _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI function& operator=(nullptr_t) _NOEXCEPT; + template >> + _LIBCPP_HIDE_FROM_ABI function& operator=(_Fp&&); + + _LIBCPP_HIDE_FROM_ABI ~function(); + + // function modifiers: + _LIBCPP_HIDE_FROM_ABI void swap(function&) _NOEXCEPT; + +# if _LIBCPP_STD_VER <= 14 + template + _LIBCPP_HIDE_FROM_ABI void assign(_Fp&& __f, const _Alloc& __a) { + function(allocator_arg, __a, std::forward<_Fp>(__f)).swap(*this); + } +# endif -#if _LIBCPP_STD_VER <= 14 - template - _LIBCPP_INLINE_VISIBILITY - void assign(_Fp&& __f, const _Alloc& __a) - {function(allocator_arg, __a, _VSTD::forward<_Fp>(__f)).swap(*this);} -#endif + // function capacity: + _LIBCPP_HIDE_FROM_ABI explicit operator bool() const _NOEXCEPT { return static_cast(__f_); } - // function capacity: - _LIBCPP_INLINE_VISIBILITY - explicit operator bool() const _NOEXCEPT { - return static_cast(__f_); - } + // deleted overloads close possible hole in the type system + template + bool operator==(const function<_R2(_ArgTypes2...)>&) const = delete; +# if _LIBCPP_STD_VER <= 17 + template + bool operator!=(const function<_R2(_ArgTypes2...)>&) const = delete; +# endif - // deleted overloads close possible hole in the type system - template - bool operator==(const function<_R2(_ArgTypes2...)>&) const = delete; - template - bool operator!=(const function<_R2(_ArgTypes2...)>&) const = delete; public: - // function invocation: - _Rp operator()(_ArgTypes...) const; - -#ifndef _LIBCPP_HAS_NO_RTTI - // function target access: - const std::type_info& target_type() const _NOEXCEPT; - template _Tp* target() _NOEXCEPT; - template const _Tp* target() const _NOEXCEPT; -#endif // _LIBCPP_HAS_NO_RTTI + // function invocation: + _LIBCPP_HIDE_FROM_ABI _Rp operator()(_ArgTypes...) const; + +# ifndef _LIBCPP_HAS_NO_RTTI + // function target access: + _LIBCPP_HIDE_FROM_ABI const std::type_info& target_type() const _NOEXCEPT; + template + _LIBCPP_HIDE_FROM_ABI _Tp* target() _NOEXCEPT; + template + _LIBCPP_HIDE_FROM_ABI const _Tp* target() const _NOEXCEPT; +# endif // _LIBCPP_HAS_NO_RTTI }; -#if _LIBCPP_STD_VER >= 17 -template -function(_Rp(*)(_Ap...)) -> function<_Rp(_Ap...)>; +# if _LIBCPP_STD_VER >= 17 +template +function(_Rp (*)(_Ap...)) -> function<_Rp(_Ap...)>; -template::type> +template ::type> function(_Fp) -> function<_Stripped>; -#endif // _LIBCPP_STD_VER >= 17 +# endif // _LIBCPP_STD_VER >= 17 -template +template function<_Rp(_ArgTypes...)>::function(const function& __f) : __f_(__f.__f_) {} -#if _LIBCPP_STD_VER <= 14 -template +# if _LIBCPP_STD_VER <= 14 +template template -function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&, - const function& __f) : __f_(__f.__f_) {} -#endif +function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&, const function& __f) : __f_(__f.__f_) {} +# endif template -function<_Rp(_ArgTypes...)>::function(function&& __f) _NOEXCEPT - : __f_(_VSTD::move(__f.__f_)) {} +function<_Rp(_ArgTypes...)>::function(function&& __f) _NOEXCEPT : __f_(std::move(__f.__f_)) {} -#if _LIBCPP_STD_VER <= 14 -template +# if _LIBCPP_STD_VER <= 14 +template template -function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&, - function&& __f) - : __f_(_VSTD::move(__f.__f_)) {} -#endif +function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&, function&& __f) : __f_(std::move(__f.__f_)) {} +# endif template template -function<_Rp(_ArgTypes...)>::function(_Fp __f) : __f_(_VSTD::move(__f)) {} +function<_Rp(_ArgTypes...)>::function(_Fp __f) : __f_(std::move(__f)) {} -#if _LIBCPP_STD_VER <= 14 +# if _LIBCPP_STD_VER <= 14 template template -function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc& __a, - _Fp __f) - : __f_(_VSTD::move(__f), __a) {} -#endif +function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc& __a, _Fp __f) : __f_(std::move(__f), __a) {} +# endif -template -function<_Rp(_ArgTypes...)>& -function<_Rp(_ArgTypes...)>::operator=(const function& __f) -{ - function(__f).swap(*this); - return *this; +template +function<_Rp(_ArgTypes...)>& function<_Rp(_ArgTypes...)>::operator=(const function& __f) { + function(__f).swap(*this); + return *this; } -template -function<_Rp(_ArgTypes...)>& -function<_Rp(_ArgTypes...)>::operator=(function&& __f) _NOEXCEPT -{ - __f_ = _VSTD::move(__f.__f_); - return *this; +template +function<_Rp(_ArgTypes...)>& function<_Rp(_ArgTypes...)>::operator=(function&& __f) _NOEXCEPT { + __f_ = std::move(__f.__f_); + return *this; } -template -function<_Rp(_ArgTypes...)>& -function<_Rp(_ArgTypes...)>::operator=(nullptr_t) _NOEXCEPT -{ - __f_ = nullptr; - return *this; +template +function<_Rp(_ArgTypes...)>& function<_Rp(_ArgTypes...)>::operator=(nullptr_t) _NOEXCEPT { + __f_ = nullptr; + return *this; } -template +template template -function<_Rp(_ArgTypes...)>& -function<_Rp(_ArgTypes...)>::operator=(_Fp&& __f) -{ - function(_VSTD::forward<_Fp>(__f)).swap(*this); - return *this; +function<_Rp(_ArgTypes...)>& function<_Rp(_ArgTypes...)>::operator=(_Fp&& __f) { + function(std::forward<_Fp>(__f)).swap(*this); + return *this; } -template +template function<_Rp(_ArgTypes...)>::~function() {} -template -void -function<_Rp(_ArgTypes...)>::swap(function& __f) _NOEXCEPT -{ - __f_.swap(__f.__f_); +template +void function<_Rp(_ArgTypes...)>::swap(function& __f) _NOEXCEPT { + __f_.swap(__f.__f_); } -template -_Rp -function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) const -{ - return __f_(_VSTD::forward<_ArgTypes>(__arg)...); +template +_Rp function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) const { + return __f_(std::forward<_ArgTypes>(__arg)...); } -#ifndef _LIBCPP_HAS_NO_RTTI +# ifndef _LIBCPP_HAS_NO_RTTI -template -const std::type_info& -function<_Rp(_ArgTypes...)>::target_type() const _NOEXCEPT -{ - return __f_.target_type(); +template +const std::type_info& function<_Rp(_ArgTypes...)>::target_type() const _NOEXCEPT { + return __f_.target_type(); } -template +template template -_Tp* -function<_Rp(_ArgTypes...)>::target() _NOEXCEPT -{ - return (_Tp*)(__f_.template target<_Tp>()); +_Tp* function<_Rp(_ArgTypes...)>::target() _NOEXCEPT { + return (_Tp*)(__f_.template target<_Tp>()); } -template +template template -const _Tp* -function<_Rp(_ArgTypes...)>::target() const _NOEXCEPT -{ - return __f_.template target<_Tp>(); +const _Tp* function<_Rp(_ArgTypes...)>::target() const _NOEXCEPT { + return __f_.template target<_Tp>(); } -#endif // _LIBCPP_HAS_NO_RTTI +# endif // _LIBCPP_HAS_NO_RTTI template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return !__f;} +inline _LIBCPP_HIDE_FROM_ABI bool operator==(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT { + return !__f; +} + +# if _LIBCPP_STD_VER <= 17 template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return !__f;} +inline _LIBCPP_HIDE_FROM_ABI bool operator==(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT { + return !__f; +} template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return (bool)__f;} +inline _LIBCPP_HIDE_FROM_ABI bool operator!=(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT { + return (bool)__f; +} template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return (bool)__f;} +inline _LIBCPP_HIDE_FROM_ABI bool operator!=(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT { + return (bool)__f; +} + +# endif // _LIBCPP_STD_VER <= 17 template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(function<_Rp(_ArgTypes...)>& __x, function<_Rp(_ArgTypes...)>& __y) _NOEXCEPT -{return __x.swap(__y);} +inline _LIBCPP_HIDE_FROM_ABI void swap(function<_Rp(_ArgTypes...)>& __x, function<_Rp(_ArgTypes...)>& __y) _NOEXCEPT { + return __x.swap(__y); +} _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_CXX03_LANG +_LIBCPP_POP_MACROS + #endif // _LIBCPP___FUNCTIONAL_FUNCTION_H diff --git a/include/c++/v1/__functional/hash.h b/include/c++/v1/__functional/hash.h index 39382aa9..a9e450ed 100644 --- a/include/c++/v1/__functional/hash.h +++ b/include/c++/v1/__functional/hash.h @@ -10,23 +10,18 @@ #define _LIBCPP___FUNCTIONAL_HASH_H #include <__config> -#include <__functional/invoke.h> #include <__functional/unary_function.h> -#include <__fwd/hash.h> -#include <__tuple_dir/sfinae_helpers.h> -#include <__type_traits/is_copy_constructible.h> -#include <__type_traits/is_default_constructible.h> +#include <__fwd/functional.h> +#include <__type_traits/conjunction.h> +#include <__type_traits/invoke.h> +#include <__type_traits/is_constructible.h> #include <__type_traits/is_enum.h> -#include <__type_traits/is_move_constructible.h> #include <__type_traits/underlying_type.h> -#include <__utility/forward.h> -#include <__utility/move.h> #include <__utility/pair.h> #include <__utility/swap.h> #include #include #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -35,93 +30,117 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY -_Size -__loadword(const void* __p) -{ - _Size __r; - _VSTD::memcpy(&__r, __p, sizeof(__r)); - return __r; +inline _LIBCPP_HIDE_FROM_ABI _Size __loadword(const void* __p) { + _Size __r; + std::memcpy(&__r, __p, sizeof(__r)); + return __r; } // We use murmur2 when size_t is 32 bits, and cityhash64 when size_t // is 64 bits. This is because cityhash64 uses 64bit x 64bit // multiplication, which can be very slow on 32-bit systems. -template +template struct __murmur2_or_cityhash; template -struct __murmur2_or_cityhash<_Size, 32> -{ - inline _Size operator()(const void* __key, _Size __len) - _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK; -}; - -// murmur2 -template -_Size -__murmur2_or_cityhash<_Size, 32>::operator()(const void* __key, _Size __len) -{ - const _Size __m = 0x5bd1e995; - const _Size __r = 24; - _Size __h = __len; +struct __murmur2_or_cityhash<_Size, 32> { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK _Size + operator()(const void* __key, _Size __len) const { + // murmur2 + const _Size __m = 0x5bd1e995; + const _Size __r = 24; + _Size __h = __len; const unsigned char* __data = static_cast(__key); - for (; __len >= 4; __data += 4, __len -= 4) - { - _Size __k = std::__loadword<_Size>(__data); - __k *= __m; - __k ^= __k >> __r; - __k *= __m; - __h *= __m; - __h ^= __k; + for (; __len >= 4; __data += 4, __len -= 4) { + _Size __k = std::__loadword<_Size>(__data); + __k *= __m; + __k ^= __k >> __r; + __k *= __m; + __h *= __m; + __h ^= __k; } - switch (__len) - { + switch (__len) { case 3: - __h ^= static_cast<_Size>(__data[2] << 16); - _LIBCPP_FALLTHROUGH(); + __h ^= static_cast<_Size>(__data[2] << 16); + _LIBCPP_FALLTHROUGH(); case 2: - __h ^= static_cast<_Size>(__data[1] << 8); - _LIBCPP_FALLTHROUGH(); + __h ^= static_cast<_Size>(__data[1] << 8); + _LIBCPP_FALLTHROUGH(); case 1: - __h ^= __data[0]; - __h *= __m; + __h ^= __data[0]; + __h *= __m; } __h ^= __h >> 13; __h *= __m; __h ^= __h >> 15; return __h; -} + } +}; template -struct __murmur2_or_cityhash<_Size, 64> -{ - inline _Size operator()(const void* __key, _Size __len) _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK; +struct __murmur2_or_cityhash<_Size, 64> { + // cityhash64 + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK _Size + operator()(const void* __key, _Size __len) const { + const char* __s = static_cast(__key); + if (__len <= 32) { + if (__len <= 16) { + return __hash_len_0_to_16(__s, __len); + } else { + return __hash_len_17_to_32(__s, __len); + } + } else if (__len <= 64) { + return __hash_len_33_to_64(__s, __len); + } + + // For strings over 64 bytes we hash the end first, and then as we + // loop we keep 56 bytes of state: v, w, x, y, and z. + _Size __x = std::__loadword<_Size>(__s + __len - 40); + _Size __y = std::__loadword<_Size>(__s + __len - 16) + std::__loadword<_Size>(__s + __len - 56); + _Size __z = + __hash_len_16(std::__loadword<_Size>(__s + __len - 48) + __len, std::__loadword<_Size>(__s + __len - 24)); + pair<_Size, _Size> __v = __weak_hash_len_32_with_seeds(__s + __len - 64, __len, __z); + pair<_Size, _Size> __w = __weak_hash_len_32_with_seeds(__s + __len - 32, __y + __k1, __x); + __x = __x * __k1 + std::__loadword<_Size>(__s); + + // Decrease len to the nearest multiple of 64, and operate on 64-byte chunks. + __len = (__len - 1) & ~static_cast<_Size>(63); + do { + __x = __rotate(__x + __y + __v.first + std::__loadword<_Size>(__s + 8), 37) * __k1; + __y = __rotate(__y + __v.second + std::__loadword<_Size>(__s + 48), 42) * __k1; + __x ^= __w.second; + __y += __v.first + std::__loadword<_Size>(__s + 40); + __z = __rotate(__z + __w.first, 33) * __k1; + __v = __weak_hash_len_32_with_seeds(__s, __v.second * __k1, __x + __w.first); + __w = __weak_hash_len_32_with_seeds(__s + 32, __z + __w.second, __y + std::__loadword<_Size>(__s + 16)); + std::swap(__z, __x); + __s += 64; + __len -= 64; + } while (__len != 0); + return __hash_len_16(__hash_len_16(__v.first, __w.first) + __shift_mix(__y) * __k1 + __z, + __hash_len_16(__v.second, __w.second) + __x); + } - private: +private: // Some primes between 2^63 and 2^64. static const _Size __k0 = 0xc3a5c85c97cb3127ULL; static const _Size __k1 = 0xb492b66fbe98f273ULL; static const _Size __k2 = 0x9ae16a3b2f90404fULL; static const _Size __k3 = 0xc949d7c7509e6557ULL; - static _Size __rotate(_Size __val, int __shift) { + _LIBCPP_HIDE_FROM_ABI static _Size __rotate(_Size __val, int __shift) { return __shift == 0 ? __val : ((__val >> __shift) | (__val << (64 - __shift))); } - static _Size __rotate_by_at_least_1(_Size __val, int __shift) { + _LIBCPP_HIDE_FROM_ABI static _Size __rotate_by_at_least_1(_Size __val, int __shift) { return (__val >> __shift) | (__val << (64 - __shift)); } - static _Size __shift_mix(_Size __val) { - return __val ^ (__val >> 47); - } + _LIBCPP_HIDE_FROM_ABI static _Size __shift_mix(_Size __val) { return __val ^ (__val >> 47); } - static _Size __hash_len_16(_Size __u, _Size __v) - _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK - { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK static _Size __hash_len_16(_Size __u, _Size __v) { const _Size __mul = 0x9ddfea08eb382d69ULL; - _Size __a = (__u ^ __v) * __mul; + _Size __a = (__u ^ __v) * __mul; __a ^= (__a >> 47); _Size __b = (__v ^ __a) * __mul; __b ^= (__b >> 47); @@ -129,9 +148,8 @@ struct __murmur2_or_cityhash<_Size, 64> return __b; } - static _Size __hash_len_0_to_16(const char* __s, _Size __len) - _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK - { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK static _Size + __hash_len_0_to_16(const char* __s, _Size __len) { if (__len > 8) { const _Size __a = std::__loadword<_Size>(__s); const _Size __b = std::__loadword<_Size>(__s + __len - 8); @@ -150,33 +168,29 @@ struct __murmur2_or_cityhash<_Size, 64> const unsigned char __a = static_cast(__s[0]); const unsigned char __b = static_cast(__s[__len >> 1]); const unsigned char __c = static_cast(__s[__len - 1]); - const uint32_t __y = static_cast(__a) + - (static_cast(__b) << 8); - const uint32_t __z = __len + (static_cast(__c) << 2); + const uint32_t __y = static_cast(__a) + (static_cast(__b) << 8); + const uint32_t __z = __len + (static_cast(__c) << 2); return __shift_mix(__y * __k2 ^ __z * __k3) * __k2; } return __k2; } - static _Size __hash_len_17_to_32(const char *__s, _Size __len) - _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK - { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK static _Size + __hash_len_17_to_32(const char* __s, _Size __len) { const _Size __a = std::__loadword<_Size>(__s) * __k1; const _Size __b = std::__loadword<_Size>(__s + 8); const _Size __c = std::__loadword<_Size>(__s + __len - 8) * __k2; const _Size __d = std::__loadword<_Size>(__s + __len - 16) * __k0; - return __hash_len_16(__rotate(__a - __b, 43) + __rotate(__c, 30) + __d, - __a + __rotate(__b ^ __k3, 20) - __c + __len); + return __hash_len_16( + __rotate(__a - __b, 43) + __rotate(__c, 30) + __d, __a + __rotate(__b ^ __k3, 20) - __c + __len); } // Return a 16-byte hash for 48 bytes. Quick and dirty. // Callers do best to use "random-looking" values for a and b. - static pair<_Size, _Size> __weak_hash_len_32_with_seeds( - _Size __w, _Size __x, _Size __y, _Size __z, _Size __a, _Size __b) - _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK - { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK static pair<_Size, _Size> + __weak_hash_len_32_with_seeds(_Size __w, _Size __x, _Size __y, _Size __z, _Size __a, _Size __b) { __a += __w; - __b = __rotate(__b + __a + __z, 21); + __b = __rotate(__b + __a + __z, 21); const _Size __c = __a; __a += __x; __a += __y; @@ -185,25 +199,22 @@ struct __murmur2_or_cityhash<_Size, 64> } // Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty. - static pair<_Size, _Size> __weak_hash_len_32_with_seeds( - const char* __s, _Size __a, _Size __b) - _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK - { - return __weak_hash_len_32_with_seeds(std::__loadword<_Size>(__s), - std::__loadword<_Size>(__s + 8), - std::__loadword<_Size>(__s + 16), - std::__loadword<_Size>(__s + 24), - __a, - __b); + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK static pair<_Size, _Size> + __weak_hash_len_32_with_seeds(const char* __s, _Size __a, _Size __b) { + return __weak_hash_len_32_with_seeds( + std::__loadword<_Size>(__s), + std::__loadword<_Size>(__s + 8), + std::__loadword<_Size>(__s + 16), + std::__loadword<_Size>(__s + 24), + __a, + __b); } // Return an 8-byte hash for 33 to 64 bytes. - static _Size __hash_len_33_to_64(const char *__s, size_t __len) - _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK - { + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK static _Size + __hash_len_33_to_64(const char* __s, size_t __len) { _Size __z = std::__loadword<_Size>(__s + 24); - _Size __a = std::__loadword<_Size>(__s) + - (__len + std::__loadword<_Size>(__s + __len - 16)) * __k0; + _Size __a = std::__loadword<_Size>(__s) + (__len + std::__loadword<_Size>(__s + __len - 16)) * __k0; _Size __b = __rotate(__a + __z, 52); _Size __c = __rotate(__a, 37); __a += std::__loadword<_Size>(__s + 8); @@ -211,7 +222,7 @@ struct __murmur2_or_cityhash<_Size, 64> __a += std::__loadword<_Size>(__s + 16); _Size __vf = __a + __z; _Size __vs = __b + __rotate(__a, 31) + __c; - __a = std::__loadword<_Size>(__s + 16) + std::__loadword<_Size>(__s + __len - 32); + __a = std::__loadword<_Size>(__s + 16) + std::__loadword<_Size>(__s + __len - 32); __z += std::__loadword<_Size>(__s + __len - 8); __b = __rotate(__a + __z, 52); __c = __rotate(__a, 37); @@ -220,160 +231,85 @@ struct __murmur2_or_cityhash<_Size, 64> __a += std::__loadword<_Size>(__s + __len - 16); _Size __wf = __a + __z; _Size __ws = __b + __rotate(__a, 31) + __c; - _Size __r = __shift_mix((__vf + __ws) * __k2 + (__wf + __vs) * __k0); + _Size __r = __shift_mix((__vf + __ws) * __k2 + (__wf + __vs) * __k0); return __shift_mix(__r * __k0 + __vs) * __k2; } }; -// cityhash64 -template -_Size -__murmur2_or_cityhash<_Size, 64>::operator()(const void* __key, _Size __len) -{ - const char* __s = static_cast(__key); - if (__len <= 32) { - if (__len <= 16) { - return __hash_len_0_to_16(__s, __len); - } else { - return __hash_len_17_to_32(__s, __len); - } - } else if (__len <= 64) { - return __hash_len_33_to_64(__s, __len); - } - - // For strings over 64 bytes we hash the end first, and then as we - // loop we keep 56 bytes of state: v, w, x, y, and z. - _Size __x = std::__loadword<_Size>(__s + __len - 40); - _Size __y = std::__loadword<_Size>(__s + __len - 16) + - std::__loadword<_Size>(__s + __len - 56); - _Size __z = __hash_len_16(std::__loadword<_Size>(__s + __len - 48) + __len, - std::__loadword<_Size>(__s + __len - 24)); - pair<_Size, _Size> __v = __weak_hash_len_32_with_seeds(__s + __len - 64, __len, __z); - pair<_Size, _Size> __w = __weak_hash_len_32_with_seeds(__s + __len - 32, __y + __k1, __x); - __x = __x * __k1 + std::__loadword<_Size>(__s); - - // Decrease len to the nearest multiple of 64, and operate on 64-byte chunks. - __len = (__len - 1) & ~static_cast<_Size>(63); - do { - __x = __rotate(__x + __y + __v.first + std::__loadword<_Size>(__s + 8), 37) * __k1; - __y = __rotate(__y + __v.second + std::__loadword<_Size>(__s + 48), 42) * __k1; - __x ^= __w.second; - __y += __v.first + std::__loadword<_Size>(__s + 40); - __z = __rotate(__z + __w.first, 33) * __k1; - __v = __weak_hash_len_32_with_seeds(__s, __v.second * __k1, __x + __w.first); - __w = __weak_hash_len_32_with_seeds(__s + 32, __z + __w.second, - __y + std::__loadword<_Size>(__s + 16)); - _VSTD::swap(__z, __x); - __s += 64; - __len -= 64; - } while (__len != 0); - return __hash_len_16( - __hash_len_16(__v.first, __w.first) + __shift_mix(__y) * __k1 + __z, - __hash_len_16(__v.second, __w.second) + __x); -} - template struct __scalar_hash; template -struct __scalar_hash<_Tp, 0> - : public __unary_function<_Tp, size_t> -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(_Tp __v) const _NOEXCEPT - { - union - { - _Tp __t; - size_t __a; - } __u; - __u.__a = 0; - __u.__t = __v; - return __u.__a; - } +struct __scalar_hash<_Tp, 0> : public __unary_function<_Tp, size_t> { + _LIBCPP_HIDE_FROM_ABI size_t operator()(_Tp __v) const _NOEXCEPT { + union { + _Tp __t; + size_t __a; + } __u; + __u.__a = 0; + __u.__t = __v; + return __u.__a; + } }; template -struct __scalar_hash<_Tp, 1> - : public __unary_function<_Tp, size_t> -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(_Tp __v) const _NOEXCEPT - { - union - { - _Tp __t; - size_t __a; - } __u; - __u.__t = __v; - return __u.__a; - } +struct __scalar_hash<_Tp, 1> : public __unary_function<_Tp, size_t> { + _LIBCPP_HIDE_FROM_ABI size_t operator()(_Tp __v) const _NOEXCEPT { + union { + _Tp __t; + size_t __a; + } __u; + __u.__t = __v; + return __u.__a; + } }; template -struct __scalar_hash<_Tp, 2> - : public __unary_function<_Tp, size_t> -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(_Tp __v) const _NOEXCEPT - { - union - { - _Tp __t; - struct - { - size_t __a; - size_t __b; - } __s; - } __u; - __u.__t = __v; - return __murmur2_or_cityhash()(&__u, sizeof(__u)); - } +struct __scalar_hash<_Tp, 2> : public __unary_function<_Tp, size_t> { + _LIBCPP_HIDE_FROM_ABI size_t operator()(_Tp __v) const _NOEXCEPT { + union { + _Tp __t; + struct { + size_t __a; + size_t __b; + } __s; + } __u; + __u.__t = __v; + return __murmur2_or_cityhash()(&__u, sizeof(__u)); + } }; template -struct __scalar_hash<_Tp, 3> - : public __unary_function<_Tp, size_t> -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(_Tp __v) const _NOEXCEPT - { - union - { - _Tp __t; - struct - { - size_t __a; - size_t __b; - size_t __c; - } __s; - } __u; - __u.__t = __v; - return __murmur2_or_cityhash()(&__u, sizeof(__u)); - } +struct __scalar_hash<_Tp, 3> : public __unary_function<_Tp, size_t> { + _LIBCPP_HIDE_FROM_ABI size_t operator()(_Tp __v) const _NOEXCEPT { + union { + _Tp __t; + struct { + size_t __a; + size_t __b; + size_t __c; + } __s; + } __u; + __u.__t = __v; + return __murmur2_or_cityhash()(&__u, sizeof(__u)); + } }; template -struct __scalar_hash<_Tp, 4> - : public __unary_function<_Tp, size_t> -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(_Tp __v) const _NOEXCEPT - { - union - { - _Tp __t; - struct - { - size_t __a; - size_t __b; - size_t __c; - size_t __d; - } __s; - } __u; - __u.__t = __v; - return __murmur2_or_cityhash()(&__u, sizeof(__u)); - } +struct __scalar_hash<_Tp, 4> : public __unary_function<_Tp, size_t> { + _LIBCPP_HIDE_FROM_ABI size_t operator()(_Tp __v) const _NOEXCEPT { + union { + _Tp __t; + struct { + size_t __a; + size_t __b; + size_t __c; + size_t __d; + } __s; + } __u; + __u.__t = __v; + return __murmur2_or_cityhash()(&__u, sizeof(__u)); + } }; struct _PairT { @@ -381,314 +317,223 @@ struct _PairT { size_t second; }; -_LIBCPP_INLINE_VISIBILITY -inline size_t __hash_combine(size_t __lhs, size_t __rhs) _NOEXCEPT { - typedef __scalar_hash<_PairT> _HashT; - const _PairT __p = {__lhs, __rhs}; - return _HashT()(__p); +_LIBCPP_HIDE_FROM_ABI inline size_t __hash_combine(size_t __lhs, size_t __rhs) _NOEXCEPT { + typedef __scalar_hash<_PairT> _HashT; + const _PairT __p = {__lhs, __rhs}; + return _HashT()(__p); } -template -struct _LIBCPP_TEMPLATE_VIS hash<_Tp*> - : public __unary_function<_Tp*, size_t> -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(_Tp* __v) const _NOEXCEPT - { - union - { - _Tp* __t; - size_t __a; - } __u; - __u.__t = __v; - return __murmur2_or_cityhash()(&__u, sizeof(__u)); - } +template +struct _LIBCPP_TEMPLATE_VIS hash<_Tp*> : public __unary_function<_Tp*, size_t> { + _LIBCPP_HIDE_FROM_ABI size_t operator()(_Tp* __v) const _NOEXCEPT { + union { + _Tp* __t; + size_t __a; + } __u; + __u.__t = __v; + return __murmur2_or_cityhash()(&__u, sizeof(__u)); + } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(bool __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(bool __v) const _NOEXCEPT { return static_cast(__v); } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(char __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(char __v) const _NOEXCEPT { return static_cast(__v); } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(signed char __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(signed char __v) const _NOEXCEPT { return static_cast(__v); } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned char __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(unsigned char __v) const _NOEXCEPT { return static_cast(__v); } }; #ifndef _LIBCPP_HAS_NO_CHAR8_T template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(char8_t __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(char8_t __v) const _NOEXCEPT { return static_cast(__v); } }; #endif // !_LIBCPP_HAS_NO_CHAR8_T template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(char16_t __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(char16_t __v) const _NOEXCEPT { return static_cast(__v); } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(char32_t __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(char32_t __v) const _NOEXCEPT { return static_cast(__v); } }; #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(wchar_t __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(wchar_t __v) const _NOEXCEPT { return static_cast(__v); } }; #endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(short __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(short __v) const _NOEXCEPT { return static_cast(__v); } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned short __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(unsigned short __v) const _NOEXCEPT { return static_cast(__v); } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(int __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(int __v) const _NOEXCEPT { return static_cast(__v); } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned int __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(unsigned int __v) const _NOEXCEPT { return static_cast(__v); } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(long __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(long __v) const _NOEXCEPT { return static_cast(__v); } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned long __v) const _NOEXCEPT {return static_cast(__v);} +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(unsigned long __v) const _NOEXCEPT { return static_cast(__v); } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __scalar_hash -{ -}; +struct _LIBCPP_TEMPLATE_VIS hash : public __scalar_hash {}; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __scalar_hash -{ -}; +struct _LIBCPP_TEMPLATE_VIS hash : public __scalar_hash {}; #ifndef _LIBCPP_HAS_NO_INT128 template <> -struct _LIBCPP_TEMPLATE_VIS hash<__int128_t> - : public __scalar_hash<__int128_t> -{ -}; +struct _LIBCPP_TEMPLATE_VIS hash<__int128_t> : public __scalar_hash<__int128_t> {}; template <> -struct _LIBCPP_TEMPLATE_VIS hash<__uint128_t> - : public __scalar_hash<__uint128_t> -{ -}; +struct _LIBCPP_TEMPLATE_VIS hash<__uint128_t> : public __scalar_hash<__uint128_t> {}; #endif template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __scalar_hash -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(float __v) const _NOEXCEPT - { - // -0.0 and 0.0 should return same hash - if (__v == 0.0f) - return 0; - return __scalar_hash::operator()(__v); - } +struct _LIBCPP_TEMPLATE_VIS hash : public __scalar_hash { + _LIBCPP_HIDE_FROM_ABI size_t operator()(float __v) const _NOEXCEPT { + // -0.0 and 0.0 should return same hash + if (__v == 0.0f) + return 0; + return __scalar_hash::operator()(__v); + } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __scalar_hash -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(double __v) const _NOEXCEPT - { - // -0.0 and 0.0 should return same hash - if (__v == 0.0) - return 0; - return __scalar_hash::operator()(__v); - } +struct _LIBCPP_TEMPLATE_VIS hash : public __scalar_hash { + _LIBCPP_HIDE_FROM_ABI size_t operator()(double __v) const _NOEXCEPT { + // -0.0 and 0.0 should return same hash + if (__v == 0.0) + return 0; + return __scalar_hash::operator()(__v); + } }; template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __scalar_hash -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(long double __v) const _NOEXCEPT - { - // -0.0 and 0.0 should return same hash - if (__v == 0.0L) - return 0; +struct _LIBCPP_TEMPLATE_VIS hash : public __scalar_hash { + _LIBCPP_HIDE_FROM_ABI size_t operator()(long double __v) const _NOEXCEPT { + // -0.0 and 0.0 should return same hash + if (__v == 0.0L) + return 0; #if defined(__i386__) || (defined(__x86_64__) && defined(__ILP32__)) - // Zero out padding bits - union - { - long double __t; - struct - { - size_t __a; - size_t __b; - size_t __c; - size_t __d; - } __s; - } __u; - __u.__s.__a = 0; - __u.__s.__b = 0; - __u.__s.__c = 0; - __u.__s.__d = 0; - __u.__t = __v; - return __u.__s.__a ^ __u.__s.__b ^ __u.__s.__c ^ __u.__s.__d; + // Zero out padding bits + union { + long double __t; + struct { + size_t __a; + size_t __b; + size_t __c; + size_t __d; + } __s; + } __u; + __u.__s.__a = 0; + __u.__s.__b = 0; + __u.__s.__c = 0; + __u.__s.__d = 0; + __u.__t = __v; + return __u.__s.__a ^ __u.__s.__b ^ __u.__s.__c ^ __u.__s.__d; #elif defined(__x86_64__) - // Zero out padding bits - union - { - long double __t; - struct - { - size_t __a; - size_t __b; - } __s; - } __u; - __u.__s.__a = 0; - __u.__s.__b = 0; - __u.__t = __v; - return __u.__s.__a ^ __u.__s.__b; + // Zero out padding bits + union { + long double __t; + struct { + size_t __a; + size_t __b; + } __s; + } __u; + __u.__s.__a = 0; + __u.__s.__b = 0; + __u.__t = __v; + return __u.__s.__a ^ __u.__s.__b; #else - return __scalar_hash::operator()(__v); + return __scalar_hash::operator()(__v); #endif - } + } }; template ::value> -struct _LIBCPP_TEMPLATE_VIS __enum_hash - : public __unary_function<_Tp, size_t> -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(_Tp __v) const _NOEXCEPT - { - typedef typename underlying_type<_Tp>::type type; - return hash()(static_cast(__v)); - } +struct _LIBCPP_TEMPLATE_VIS __enum_hash : public __unary_function<_Tp, size_t> { + _LIBCPP_HIDE_FROM_ABI size_t operator()(_Tp __v) const _NOEXCEPT { + typedef typename underlying_type<_Tp>::type type; + return hash()(static_cast(__v)); + } }; template struct _LIBCPP_TEMPLATE_VIS __enum_hash<_Tp, false> { - __enum_hash() = delete; - __enum_hash(__enum_hash const&) = delete; - __enum_hash& operator=(__enum_hash const&) = delete; + __enum_hash() = delete; + __enum_hash(__enum_hash const&) = delete; + __enum_hash& operator=(__enum_hash const&) = delete; }; template -struct _LIBCPP_TEMPLATE_VIS hash : public __enum_hash<_Tp> -{ -}; +struct _LIBCPP_TEMPLATE_VIS hash : public __enum_hash<_Tp> {}; -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template <> -struct _LIBCPP_TEMPLATE_VIS hash - : public __unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(nullptr_t) const _NOEXCEPT { - return 662607004ull; - } +struct _LIBCPP_TEMPLATE_VIS hash : public __unary_function { + _LIBCPP_HIDE_FROM_ABI size_t operator()(nullptr_t) const _NOEXCEPT { return 662607004ull; } }; #endif #ifndef _LIBCPP_CXX03_LANG template -using __check_hash_requirements _LIBCPP_NODEBUG = integral_constant::value && - is_move_constructible<_Hash>::value && - __invokable_r::value ->; +using __check_hash_requirements _LIBCPP_NODEBUG = + integral_constant::value && is_move_constructible<_Hash>::value && + __invokable_r::value >; template > -using __has_enabled_hash _LIBCPP_NODEBUG = integral_constant::value && - is_default_constructible<_Hash>::value ->; +using __has_enabled_hash _LIBCPP_NODEBUG = + integral_constant::value && is_default_constructible<_Hash>::value >; -#if _LIBCPP_STD_VER > 14 +# if _LIBCPP_STD_VER >= 17 template using __enable_hash_helper_imp _LIBCPP_NODEBUG = _Type; -template -using __enable_hash_helper _LIBCPP_NODEBUG = __enable_hash_helper_imp<_Type, - typename enable_if<__all<__has_enabled_hash<_Keys>::value...>::value>::type ->; -#else -template +template +using __enable_hash_helper _LIBCPP_NODEBUG = + __enable_hash_helper_imp<_Type, __enable_if_t<__all<__has_enabled_hash<_Keys>::value...>::value> >; +# else +template using __enable_hash_helper _LIBCPP_NODEBUG = _Type; -#endif +# endif #endif // !_LIBCPP_CXX03_LANG diff --git a/include/c++/v1/__functional/identity.h b/include/c++/v1/__functional/identity.h index 2fe3acca..8468de3d 100644 --- a/include/c++/v1/__functional/identity.h +++ b/include/c++/v1/__functional/identity.h @@ -11,6 +11,8 @@ #define _LIBCPP___FUNCTIONAL_IDENTITY_H #include <__config> +#include <__fwd/functional.h> +#include <__type_traits/integral_constant.h> #include <__utility/forward.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -19,27 +21,44 @@ _LIBCPP_BEGIN_NAMESPACE_STD +template +struct __is_identity : false_type {}; + struct __identity { template - _LIBCPP_NODISCARD _LIBCPP_CONSTEXPR _Tp&& operator()(_Tp&& __t) const _NOEXCEPT { + _LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Tp&& operator()(_Tp&& __t) const _NOEXCEPT { return std::forward<_Tp>(__t); } using is_transparent = void; }; -#if _LIBCPP_STD_VER > 17 +template <> +struct __is_identity<__identity> : true_type {}; +template <> +struct __is_identity > : true_type {}; +template <> +struct __is_identity > : true_type {}; + +#if _LIBCPP_STD_VER >= 20 struct identity { - template - _LIBCPP_NODISCARD_EXT constexpr _Tp&& operator()(_Tp&& __t) const noexcept - { - return _VSTD::forward<_Tp>(__t); - } + template + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp&& operator()(_Tp&& __t) const noexcept { + return std::forward<_Tp>(__t); + } - using is_transparent = void; + using is_transparent = void; }; -#endif // _LIBCPP_STD_VER > 17 + +template <> +struct __is_identity : true_type {}; +template <> +struct __is_identity > : true_type {}; +template <> +struct __is_identity > : true_type {}; + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/invoke.h b/include/c++/v1/__functional/invoke.h index 48e6eac3..ef4bf25f 100644 --- a/include/c++/v1/__functional/invoke.h +++ b/include/c++/v1/__functional/invoke.h @@ -11,535 +11,43 @@ #define _LIBCPP___FUNCTIONAL_INVOKE_H #include <__config> -#include <__type_traits/add_lvalue_reference.h> -#include <__type_traits/apply_cv.h> -#include <__type_traits/conditional.h> -#include <__type_traits/decay.h> -#include <__type_traits/enable_if.h> -#include <__type_traits/integral_constant.h> -#include <__type_traits/is_base_of.h> -#include <__type_traits/is_core_convertible.h> -#include <__type_traits/is_member_function_pointer.h> -#include <__type_traits/is_member_object_pointer.h> -#include <__type_traits/is_reference_wrapper.h> -#include <__type_traits/is_same.h> -#include <__type_traits/is_void.h> -#include <__type_traits/nat.h> -#include <__type_traits/remove_cv.h> -#include <__utility/declval.h> +#include <__type_traits/invoke.h> #include <__utility/forward.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif -// TODO: Disentangle the type traits and std::invoke properly - _LIBCPP_BEGIN_NAMESPACE_STD -struct __any -{ - __any(...); -}; - -template -struct __member_pointer_traits_imp -{ -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...), true, false> -{ - typedef _Class _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...), true, false> -{ - typedef _Class _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const, true, false> -{ - typedef _Class const _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const, true, false> -{ - typedef _Class const _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile, true, false> -{ - typedef _Class volatile _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile, true, false> -{ - typedef _Class volatile _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile, true, false> -{ - typedef _Class const volatile _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile, true, false> -{ - typedef _Class const volatile _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) &, true, false> -{ - typedef _Class& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) &, true, false> -{ - typedef _Class& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const&, true, false> -{ - typedef _Class const& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const&, true, false> -{ - typedef _Class const& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile&, true, false> -{ - typedef _Class volatile& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile&, true, false> -{ - typedef _Class volatile& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile&, true, false> -{ - typedef _Class const volatile& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile&, true, false> -{ - typedef _Class const volatile& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) &&, true, false> -{ - typedef _Class&& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) &&, true, false> -{ - typedef _Class&& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const&&, true, false> -{ - typedef _Class const&& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const&&, true, false> -{ - typedef _Class const&& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile&&, true, false> -{ - typedef _Class volatile&& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile&&, true, false> -{ - typedef _Class volatile&& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile&&, true, false> -{ - typedef _Class const volatile&& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param...); -}; - -template -struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile&&, true, false> -{ - typedef _Class const volatile&& _ClassType; - typedef _Rp _ReturnType; - typedef _Rp (_FnType) (_Param..., ...); -}; - -template -struct __member_pointer_traits_imp<_Rp _Class::*, false, true> -{ - typedef _Class _ClassType; - typedef _Rp _ReturnType; -}; - -template -struct __member_pointer_traits - : public __member_pointer_traits_imp<__remove_cv_t<_MP>, - is_member_function_pointer<_MP>::value, - is_member_object_pointer<_MP>::value> -{ -// typedef ... _ClassType; -// typedef ... _ReturnType; -// typedef ... _FnType; -}; - -template -struct __member_pointer_class_type {}; - -template -struct __member_pointer_class_type<_Ret _ClassType::*> { - typedef _ClassType type; -}; - -template ::type, - class _DecayA0 = typename decay<_A0>::type, - class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> -using __enable_if_bullet1 = typename enable_if - < - is_member_function_pointer<_DecayFp>::value - && is_base_of<_ClassT, _DecayA0>::value - >::type; - -template ::type, - class _DecayA0 = typename decay<_A0>::type> -using __enable_if_bullet2 = typename enable_if - < - is_member_function_pointer<_DecayFp>::value - && __is_reference_wrapper<_DecayA0>::value - >::type; - -template ::type, - class _DecayA0 = typename decay<_A0>::type, - class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> -using __enable_if_bullet3 = typename enable_if - < - is_member_function_pointer<_DecayFp>::value - && !is_base_of<_ClassT, _DecayA0>::value - && !__is_reference_wrapper<_DecayA0>::value - >::type; - -template ::type, - class _DecayA0 = typename decay<_A0>::type, - class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> -using __enable_if_bullet4 = typename enable_if - < - is_member_object_pointer<_DecayFp>::value - && is_base_of<_ClassT, _DecayA0>::value - >::type; - -template ::type, - class _DecayA0 = typename decay<_A0>::type> -using __enable_if_bullet5 = typename enable_if - < - is_member_object_pointer<_DecayFp>::value - && __is_reference_wrapper<_DecayA0>::value - >::type; - -template ::type, - class _DecayA0 = typename decay<_A0>::type, - class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> -using __enable_if_bullet6 = typename enable_if - < - is_member_object_pointer<_DecayFp>::value - && !is_base_of<_ClassT, _DecayA0>::value - && !__is_reference_wrapper<_DecayA0>::value - >::type; - -// __invoke forward declarations - -// fall back - none of the bullets - -template -__nat __invoke(__any, _Args&& ...__args); - -// bullets 1, 2 and 3 - -template > -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR decltype((std::declval<_A0>().*std::declval<_Fp>())(std::declval<_Args>()...)) -__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) - _NOEXCEPT_(noexcept((static_cast<_A0&&>(__a0).*__f)(static_cast<_Args&&>(__args)...))) - { return (static_cast<_A0&&>(__a0).*__f)(static_cast<_Args&&>(__args)...); } - -template > -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR decltype((std::declval<_A0>().get().*std::declval<_Fp>())(std::declval<_Args>()...)) -__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) - _NOEXCEPT_(noexcept((__a0.get().*__f)(static_cast<_Args&&>(__args)...))) - { return (__a0.get().*__f)(static_cast<_Args&&>(__args)...); } - -template > -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR decltype(((*std::declval<_A0>()).*std::declval<_Fp>())(std::declval<_Args>()...)) -__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) - _NOEXCEPT_(noexcept(((*static_cast<_A0&&>(__a0)).*__f)(static_cast<_Args&&>(__args)...))) - { return ((*static_cast<_A0&&>(__a0)).*__f)(static_cast<_Args&&>(__args)...); } - -// bullets 4, 5 and 6 - -template > -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR decltype(std::declval<_A0>().*std::declval<_Fp>()) -__invoke(_Fp&& __f, _A0&& __a0) - _NOEXCEPT_(noexcept(static_cast<_A0&&>(__a0).*__f)) - { return static_cast<_A0&&>(__a0).*__f; } - -template > -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR decltype(std::declval<_A0>().get().*std::declval<_Fp>()) -__invoke(_Fp&& __f, _A0&& __a0) - _NOEXCEPT_(noexcept(__a0.get().*__f)) - { return __a0.get().*__f; } - -template > -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR decltype((*std::declval<_A0>()).*std::declval<_Fp>()) -__invoke(_Fp&& __f, _A0&& __a0) - _NOEXCEPT_(noexcept((*static_cast<_A0&&>(__a0)).*__f)) - { return (*static_cast<_A0&&>(__a0)).*__f; } - -// bullet 7 - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR decltype(std::declval<_Fp>()(std::declval<_Args>()...)) -__invoke(_Fp&& __f, _Args&& ...__args) - _NOEXCEPT_(noexcept(static_cast<_Fp&&>(__f)(static_cast<_Args&&>(__args)...))) - { return static_cast<_Fp&&>(__f)(static_cast<_Args&&>(__args)...); } - -// __invokable -template -struct __invokable_r -{ - template - static decltype(std::__invoke(std::declval<_XFp>(), std::declval<_XArgs>()...)) __try_call(int); - template - static __nat __try_call(...); - - // FIXME: Check that _Ret, _Fp, and _Args... are all complete types, cv void, - // or incomplete array types as required by the standard. - using _Result = decltype(__try_call<_Fp, _Args...>(0)); - - using type = __conditional_t< - _IsNotSame<_Result, __nat>::value, - __conditional_t::value, true_type, __is_core_convertible<_Result, _Ret> >, - false_type>; - static const bool value = type::value; -}; -template -using __invokable = __invokable_r; - -template -struct __nothrow_invokable_r_imp { - static const bool value = false; -}; - -template -struct __nothrow_invokable_r_imp -{ - typedef __nothrow_invokable_r_imp _ThisT; - - template - static void __test_noexcept(_Tp) _NOEXCEPT; - -#ifdef _LIBCPP_CXX03_LANG - static const bool value = false; -#else - static const bool value = noexcept(_ThisT::__test_noexcept<_Ret>( - _VSTD::__invoke(std::declval<_Fp>(), std::declval<_Args>()...))); -#endif -}; - -template -struct __nothrow_invokable_r_imp -{ -#ifdef _LIBCPP_CXX03_LANG - static const bool value = false; -#else - static const bool value = noexcept( - _VSTD::__invoke(std::declval<_Fp>(), std::declval<_Args>()...)); -#endif -}; - -template -using __nothrow_invokable_r = - __nothrow_invokable_r_imp< - __invokable_r<_Ret, _Fp, _Args...>::value, - is_void<_Ret>::value, - _Ret, _Fp, _Args... - >; - -template -using __nothrow_invokable = - __nothrow_invokable_r_imp< - __invokable<_Fp, _Args...>::value, - true, void, _Fp, _Args... - >; - -template -struct __invoke_of - : public enable_if< - __invokable<_Fp, _Args...>::value, - typename __invokable_r::_Result> -{ -}; - -template ::value> -struct __invoke_void_return_wrapper -{ - template - static _Ret __call(_Args&&... __args) { - return std::__invoke(std::forward<_Args>(__args)...); - } -}; - -template -struct __invoke_void_return_wrapper<_Ret, true> -{ - template - static void __call(_Args&&... __args) { - std::__invoke(std::forward<_Args>(__args)...); - } -}; - -#if _LIBCPP_STD_VER > 14 - -// is_invocable - -template -struct _LIBCPP_TEMPLATE_VIS is_invocable - : integral_constant::value> {}; - -template -struct _LIBCPP_TEMPLATE_VIS is_invocable_r - : integral_constant::value> {}; - -template -inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value; - -template -inline constexpr bool is_invocable_r_v = is_invocable_r<_Ret, _Fn, _Args...>::value; - -// is_nothrow_invocable - -template -struct _LIBCPP_TEMPLATE_VIS is_nothrow_invocable - : integral_constant::value> {}; - -template -struct _LIBCPP_TEMPLATE_VIS is_nothrow_invocable_r - : integral_constant::value> {}; - -template -inline constexpr bool is_nothrow_invocable_v = is_nothrow_invocable<_Fn, _Args...>::value; - -template -inline constexpr bool is_nothrow_invocable_r_v = is_nothrow_invocable_r<_Ret, _Fn, _Args...>::value; +#if _LIBCPP_STD_VER >= 17 template -struct _LIBCPP_TEMPLATE_VIS invoke_result - : __invoke_of<_Fn, _Args...> -{ -}; - -template -using invoke_result_t = typename invoke_result<_Fn, _Args...>::type; - -template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 invoke_result_t<_Fn, _Args...> -invoke(_Fn&& __f, _Args&&... __args) - noexcept(is_nothrow_invocable_v<_Fn, _Args...>) -{ - return _VSTD::__invoke(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)...); +invoke(_Fn&& __f, _Args&&... __args) noexcept(is_nothrow_invocable_v<_Fn, _Args...>) { + return std::__invoke(std::forward<_Fn>(__f), std::forward<_Args>(__args)...); } -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 + +#if _LIBCPP_STD_VER >= 23 +template + requires is_invocable_r_v<_Result, _Fn, _Args...> +_LIBCPP_HIDE_FROM_ABI constexpr _Result +invoke_r(_Fn&& __f, _Args&&... __args) noexcept(is_nothrow_invocable_r_v<_Result, _Fn, _Args...>) { + if constexpr (is_void_v<_Result>) { + static_cast(std::invoke(std::forward<_Fn>(__f), std::forward<_Args>(__args)...)); + } else { + // TODO: Use reference_converts_from_temporary_v once implemented + // using _ImplicitInvokeResult = invoke_result_t<_Fn, _Args...>; + // static_assert(!reference_converts_from_temporary_v<_Result, _ImplicitInvokeResult>, + static_assert(true, + "Returning from invoke_r would bind a temporary object to the reference return type, " + "which would result in a dangling reference."); + return std::invoke(std::forward<_Fn>(__f), std::forward<_Args>(__args)...); + } +} +#endif _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/is_transparent.h b/include/c++/v1/__functional/is_transparent.h index c7a0ee9e..b2d62f2e 100644 --- a/include/c++/v1/__functional/is_transparent.h +++ b/include/c++/v1/__functional/is_transparent.h @@ -11,7 +11,7 @@ #define _LIBCPP___FUNCTIONAL_IS_TRANSPARENT #include <__config> -#include +#include <__type_traits/void_t.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -19,14 +19,13 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template -struct __is_transparent : false_type {}; +inline const bool __is_transparent_v = false; template -struct __is_transparent<_Tp, _Up, __void_t > - : true_type {}; +inline const bool __is_transparent_v<_Tp, _Up, __void_t > = true; #endif diff --git a/include/c++/v1/__functional/mem_fn.h b/include/c++/v1/__functional/mem_fn.h index 8b516270..ee07a717 100644 --- a/include/c++/v1/__functional/mem_fn.h +++ b/include/c++/v1/__functional/mem_fn.h @@ -15,7 +15,6 @@ #include <__functional/invoke.h> #include <__functional/weak_result_type.h> #include <__utility/forward.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -24,34 +23,30 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -class __mem_fn : public __weak_result_type<_Tp> -{ +class __mem_fn : public __weak_result_type<_Tp> { public: - // types - typedef _Tp type; + // types + typedef _Tp type; + private: - type __f_; + type __f_; public: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - __mem_fn(type __f) _NOEXCEPT : __f_(__f) {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __mem_fn(type __f) _NOEXCEPT : __f_(__f) {} - // invoke - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + // invoke + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 - typename __invoke_return::type - operator() (_ArgTypes&&... __args) const { - return std::__invoke(__f_, std::forward<_ArgTypes>(__args)...); - } + typename __invoke_return::type + operator()(_ArgTypes&&... __args) const { + return std::__invoke(__f_, std::forward<_ArgTypes>(__args)...); + } }; -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -__mem_fn<_Rp _Tp::*> -mem_fn(_Rp _Tp::* __pm) _NOEXCEPT -{ - return __mem_fn<_Rp _Tp::*>(__pm); +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __mem_fn<_Rp _Tp::*> mem_fn(_Rp _Tp::*__pm) _NOEXCEPT { + return __mem_fn<_Rp _Tp::*>(__pm); } _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/mem_fun_ref.h b/include/c++/v1/__functional/mem_fun_ref.h index 65aab069..c344420b 100644 --- a/include/c++/v1/__functional/mem_fun_ref.h +++ b/include/c++/v1/__functional/mem_fun_ref.h @@ -22,149 +22,122 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) -template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun_t - : public __unary_function<_Tp*, _Sp> -{ - _Sp (_Tp::*__p_)(); +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun_t : public __unary_function<_Tp*, _Sp> { + _Sp (_Tp::*__p_)(); + public: - _LIBCPP_INLINE_VISIBILITY explicit mem_fun_t(_Sp (_Tp::*__p)()) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp* __p) const - {return (__p->*__p_)();} + _LIBCPP_HIDE_FROM_ABI explicit mem_fun_t(_Sp (_Tp::*__p)()) : __p_(__p) {} + _LIBCPP_HIDE_FROM_ABI _Sp operator()(_Tp* __p) const { return (__p->*__p_)(); } }; -template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun1_t - : public __binary_function<_Tp*, _Ap, _Sp> -{ - _Sp (_Tp::*__p_)(_Ap); +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun1_t : public __binary_function<_Tp*, _Ap, _Sp> { + _Sp (_Tp::*__p_)(_Ap); + public: - _LIBCPP_INLINE_VISIBILITY explicit mem_fun1_t(_Sp (_Tp::*__p)(_Ap)) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp* __p, _Ap __x) const - {return (__p->*__p_)(__x);} + _LIBCPP_HIDE_FROM_ABI explicit mem_fun1_t(_Sp (_Tp::*__p)(_Ap)) : __p_(__p) {} + _LIBCPP_HIDE_FROM_ABI _Sp operator()(_Tp* __p, _Ap __x) const { return (__p->*__p_)(__x); } }; -template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -mem_fun_t<_Sp,_Tp> -mem_fun(_Sp (_Tp::*__f)()) - {return mem_fun_t<_Sp,_Tp>(__f);} - -template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -mem_fun1_t<_Sp,_Tp,_Ap> -mem_fun(_Sp (_Tp::*__f)(_Ap)) - {return mem_fun1_t<_Sp,_Tp,_Ap>(__f);} - -template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun_ref_t - : public __unary_function<_Tp, _Sp> -{ - _Sp (_Tp::*__p_)(); +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI mem_fun_t<_Sp, _Tp> mem_fun(_Sp (_Tp::*__f)()) { + return mem_fun_t<_Sp, _Tp>(__f); +} + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI mem_fun1_t<_Sp, _Tp, _Ap> mem_fun(_Sp (_Tp::*__f)(_Ap)) { + return mem_fun1_t<_Sp, _Tp, _Ap>(__f); +} + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun_ref_t : public __unary_function<_Tp, _Sp> { + _Sp (_Tp::*__p_)(); + public: - _LIBCPP_INLINE_VISIBILITY explicit mem_fun_ref_t(_Sp (_Tp::*__p)()) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp& __p) const - {return (__p.*__p_)();} + _LIBCPP_HIDE_FROM_ABI explicit mem_fun_ref_t(_Sp (_Tp::*__p)()) : __p_(__p) {} + _LIBCPP_HIDE_FROM_ABI _Sp operator()(_Tp& __p) const { return (__p.*__p_)(); } }; -template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun1_ref_t - : public __binary_function<_Tp, _Ap, _Sp> -{ - _Sp (_Tp::*__p_)(_Ap); +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun1_ref_t : public __binary_function<_Tp, _Ap, _Sp> { + _Sp (_Tp::*__p_)(_Ap); + public: - _LIBCPP_INLINE_VISIBILITY explicit mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap)) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp& __p, _Ap __x) const - {return (__p.*__p_)(__x);} + _LIBCPP_HIDE_FROM_ABI explicit mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap)) : __p_(__p) {} + _LIBCPP_HIDE_FROM_ABI _Sp operator()(_Tp& __p, _Ap __x) const { return (__p.*__p_)(__x); } }; -template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -mem_fun_ref_t<_Sp,_Tp> -mem_fun_ref(_Sp (_Tp::*__f)()) - {return mem_fun_ref_t<_Sp,_Tp>(__f);} +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI mem_fun_ref_t<_Sp, _Tp> mem_fun_ref(_Sp (_Tp::*__f)()) { + return mem_fun_ref_t<_Sp, _Tp>(__f); +} -template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -mem_fun1_ref_t<_Sp,_Tp,_Ap> -mem_fun_ref(_Sp (_Tp::*__f)(_Ap)) - {return mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);} +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI mem_fun1_ref_t<_Sp, _Tp, _Ap> +mem_fun_ref(_Sp (_Tp::*__f)(_Ap)) { + return mem_fun1_ref_t<_Sp, _Tp, _Ap>(__f); +} template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun_t - : public __unary_function -{ - _Sp (_Tp::*__p_)() const; +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun_t : public __unary_function { + _Sp (_Tp::*__p_)() const; + public: - _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun_t(_Sp (_Tp::*__p)() const) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp* __p) const - {return (__p->*__p_)();} + _LIBCPP_HIDE_FROM_ABI explicit const_mem_fun_t(_Sp (_Tp::*__p)() const) : __p_(__p) {} + _LIBCPP_HIDE_FROM_ABI _Sp operator()(const _Tp* __p) const { return (__p->*__p_)(); } }; template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun1_t - : public __binary_function -{ - _Sp (_Tp::*__p_)(_Ap) const; +class _LIBCPP_TEMPLATE_VIS +_LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun1_t : public __binary_function { + _Sp (_Tp::*__p_)(_Ap) const; + public: - _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun1_t(_Sp (_Tp::*__p)(_Ap) const) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp* __p, _Ap __x) const - {return (__p->*__p_)(__x);} + _LIBCPP_HIDE_FROM_ABI explicit const_mem_fun1_t(_Sp (_Tp::*__p)(_Ap) const) : __p_(__p) {} + _LIBCPP_HIDE_FROM_ABI _Sp operator()(const _Tp* __p, _Ap __x) const { return (__p->*__p_)(__x); } }; template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -const_mem_fun_t<_Sp,_Tp> -mem_fun(_Sp (_Tp::*__f)() const) - {return const_mem_fun_t<_Sp,_Tp>(__f);} +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI const_mem_fun_t<_Sp, _Tp> mem_fun(_Sp (_Tp::*__f)() const) { + return const_mem_fun_t<_Sp, _Tp>(__f); +} template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -const_mem_fun1_t<_Sp,_Tp,_Ap> -mem_fun(_Sp (_Tp::*__f)(_Ap) const) - {return const_mem_fun1_t<_Sp,_Tp,_Ap>(__f);} +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI const_mem_fun1_t<_Sp, _Tp, _Ap> +mem_fun(_Sp (_Tp::*__f)(_Ap) const) { + return const_mem_fun1_t<_Sp, _Tp, _Ap>(__f); +} template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun_ref_t - : public __unary_function<_Tp, _Sp> -{ - _Sp (_Tp::*__p_)() const; +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun_ref_t : public __unary_function<_Tp, _Sp> { + _Sp (_Tp::*__p_)() const; + public: - _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun_ref_t(_Sp (_Tp::*__p)() const) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp& __p) const - {return (__p.*__p_)();} + _LIBCPP_HIDE_FROM_ABI explicit const_mem_fun_ref_t(_Sp (_Tp::*__p)() const) : __p_(__p) {} + _LIBCPP_HIDE_FROM_ABI _Sp operator()(const _Tp& __p) const { return (__p.*__p_)(); } }; template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun1_ref_t - : public __binary_function<_Tp, _Ap, _Sp> -{ - _Sp (_Tp::*__p_)(_Ap) const; +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun1_ref_t : public __binary_function<_Tp, _Ap, _Sp> { + _Sp (_Tp::*__p_)(_Ap) const; + public: - _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap) const) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp& __p, _Ap __x) const - {return (__p.*__p_)(__x);} + _LIBCPP_HIDE_FROM_ABI explicit const_mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap) const) : __p_(__p) {} + _LIBCPP_HIDE_FROM_ABI _Sp operator()(const _Tp& __p, _Ap __x) const { return (__p.*__p_)(__x); } }; template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -const_mem_fun_ref_t<_Sp,_Tp> -mem_fun_ref(_Sp (_Tp::*__f)() const) - {return const_mem_fun_ref_t<_Sp,_Tp>(__f);} +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI const_mem_fun_ref_t<_Sp, _Tp> +mem_fun_ref(_Sp (_Tp::*__f)() const) { + return const_mem_fun_ref_t<_Sp, _Tp>(__f); +} template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -const_mem_fun1_ref_t<_Sp,_Tp,_Ap> -mem_fun_ref(_Sp (_Tp::*__f)(_Ap) const) - {return const_mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);} +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI const_mem_fun1_ref_t<_Sp, _Tp, _Ap> +mem_fun_ref(_Sp (_Tp::*__f)(_Ap) const) { + return const_mem_fun1_ref_t<_Sp, _Tp, _Ap>(__f); +} #endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) diff --git a/include/c++/v1/__functional/not_fn.h b/include/c++/v1/__functional/not_fn.h index 79d9a871..4b3ce552 100644 --- a/include/c++/v1/__functional/not_fn.h +++ b/include/c++/v1/__functional/not_fn.h @@ -13,8 +13,10 @@ #include <__config> #include <__functional/invoke.h> #include <__functional/perfect_forward.h> +#include <__type_traits/decay.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_constructible.h> #include <__utility/forward.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -22,32 +24,29 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 struct __not_fn_op { - template - _LIBCPP_HIDE_FROM_ABI - _LIBCPP_CONSTEXPR_SINCE_CXX20 auto operator()(_Args&&... __args) const - noexcept(noexcept(!_VSTD::invoke(_VSTD::forward<_Args>(__args)...))) - -> decltype( !_VSTD::invoke(_VSTD::forward<_Args>(__args)...)) - { return !_VSTD::invoke(_VSTD::forward<_Args>(__args)...); } + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 auto operator()(_Args&&... __args) const + noexcept(noexcept(!std::invoke(std::forward<_Args>(__args)...))) + -> decltype(!std::invoke(std::forward<_Args>(__args)...)) { + return !std::invoke(std::forward<_Args>(__args)...); + } }; template struct __not_fn_t : __perfect_forward<__not_fn_op, _Fn> { - using __perfect_forward<__not_fn_op, _Fn>::__perfect_forward; + using __perfect_forward<__not_fn_op, _Fn>::__perfect_forward; }; -template , _Fn> && - is_move_constructible_v> ->> -_LIBCPP_HIDE_FROM_ABI -_LIBCPP_CONSTEXPR_SINCE_CXX20 auto not_fn(_Fn&& __f) { - return __not_fn_t>(_VSTD::forward<_Fn>(__f)); +template , _Fn> && is_move_constructible_v> >> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 auto not_fn(_Fn&& __f) { + return __not_fn_t>(std::forward<_Fn>(__f)); } -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/operations.h b/include/c++/v1/__functional/operations.h index 8a781efb..0a6320f1 100644 --- a/include/c++/v1/__functional/operations.h +++ b/include/c++/v1/__functional/operations.h @@ -13,6 +13,7 @@ #include <__config> #include <__functional/binary_function.h> #include <__functional/unary_function.h> +#include <__type_traits/desugars_to.h> #include <__utility/forward.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -23,555 +24,515 @@ _LIBCPP_BEGIN_NAMESPACE_STD // Arithmetic operations -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS plus - : __binary_function<_Tp, _Tp, _Tp> -{ - typedef _Tp __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x + __y;} +struct _LIBCPP_TEMPLATE_VIS plus : __binary_function<_Tp, _Tp, _Tp> { + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI _Tp operator()(const _Tp& __x, const _Tp& __y) const { + return __x + __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(plus); -#if _LIBCPP_STD_VER > 11 +// The non-transparent std::plus specialization is only equivalent to a raw plus +// operator when we don't perform an implicit conversion when calling it. +template +inline const bool __desugars_to_v<__plus_tag, plus<_Tp>, _Tp, _Tp> = true; + +template +inline const bool __desugars_to_v<__plus_tag, plus, _Tp, _Up> = true; + +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS plus -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS plus { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) + std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) + std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) + std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS minus - : __binary_function<_Tp, _Tp, _Tp> -{ - typedef _Tp __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x - __y;} +struct _LIBCPP_TEMPLATE_VIS minus : __binary_function<_Tp, _Tp, _Tp> { + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI _Tp operator()(const _Tp& __x, const _Tp& __y) const { + return __x - __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(minus); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS minus -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS minus { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) - std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) - std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) - std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS multiplies - : __binary_function<_Tp, _Tp, _Tp> -{ - typedef _Tp __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x * __y;} +struct _LIBCPP_TEMPLATE_VIS multiplies : __binary_function<_Tp, _Tp, _Tp> { + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI _Tp operator()(const _Tp& __x, const _Tp& __y) const { + return __x * __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(multiplies); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS multiplies -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS multiplies { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) * std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) * std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) * std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS divides - : __binary_function<_Tp, _Tp, _Tp> -{ - typedef _Tp __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x / __y;} +struct _LIBCPP_TEMPLATE_VIS divides : __binary_function<_Tp, _Tp, _Tp> { + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI _Tp operator()(const _Tp& __x, const _Tp& __y) const { + return __x / __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(divides); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS divides -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS divides { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) / std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) / std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) / std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS modulus - : __binary_function<_Tp, _Tp, _Tp> -{ - typedef _Tp __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x % __y;} +struct _LIBCPP_TEMPLATE_VIS modulus : __binary_function<_Tp, _Tp, _Tp> { + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI _Tp operator()(const _Tp& __x, const _Tp& __y) const { + return __x % __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(modulus); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS modulus -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS modulus { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) % std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) % std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) % std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS negate - : __unary_function<_Tp, _Tp> -{ - typedef _Tp __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x) const - {return -__x;} +struct _LIBCPP_TEMPLATE_VIS negate : __unary_function<_Tp, _Tp> { + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI _Tp operator()(const _Tp& __x) const { return -__x; } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(negate); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS negate -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_Tp&& __x) const - noexcept(noexcept(- _VSTD::forward<_Tp>(__x))) - -> decltype( - _VSTD::forward<_Tp>(__x)) - { return - _VSTD::forward<_Tp>(__x); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS negate { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_Tp&& __x) const + noexcept(noexcept(-std::forward<_Tp>(__x))) // + -> decltype(-std::forward<_Tp>(__x)) { + return -std::forward<_Tp>(__x); + } + typedef void is_transparent; }; #endif // Bitwise operations -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS bit_and - : __binary_function<_Tp, _Tp, _Tp> -{ - typedef _Tp __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x & __y;} +struct _LIBCPP_TEMPLATE_VIS bit_and : __binary_function<_Tp, _Tp, _Tp> { + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI _Tp operator()(const _Tp& __x, const _Tp& __y) const { + return __x & __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(bit_and); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS bit_and -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS bit_and { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) & + std::forward<_T2>(__u))) -> decltype(std::forward<_T1>(__t) & std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) & std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template -struct _LIBCPP_TEMPLATE_VIS bit_not - : __unary_function<_Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x) const - {return ~__x;} +struct _LIBCPP_TEMPLATE_VIS bit_not : __unary_function<_Tp, _Tp> { + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI _Tp operator()(const _Tp& __x) const { return ~__x; } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(bit_not); template <> -struct _LIBCPP_TEMPLATE_VIS bit_not -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_Tp&& __x) const - noexcept(noexcept(~_VSTD::forward<_Tp>(__x))) - -> decltype( ~_VSTD::forward<_Tp>(__x)) - { return ~_VSTD::forward<_Tp>(__x); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS bit_not { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_Tp&& __x) const + noexcept(noexcept(~std::forward<_Tp>(__x))) // + -> decltype(~std::forward<_Tp>(__x)) { + return ~std::forward<_Tp>(__x); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS bit_or - : __binary_function<_Tp, _Tp, _Tp> -{ - typedef _Tp __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x | __y;} +struct _LIBCPP_TEMPLATE_VIS bit_or : __binary_function<_Tp, _Tp, _Tp> { + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI _Tp operator()(const _Tp& __x, const _Tp& __y) const { + return __x | __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(bit_or); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS bit_or -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS bit_or { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) | std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) | std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) | std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS bit_xor - : __binary_function<_Tp, _Tp, _Tp> -{ - typedef _Tp __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x ^ __y;} +struct _LIBCPP_TEMPLATE_VIS bit_xor : __binary_function<_Tp, _Tp, _Tp> { + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI _Tp operator()(const _Tp& __x, const _Tp& __y) const { + return __x ^ __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(bit_xor); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS bit_xor -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS bit_xor { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) ^ std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) ^ std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) ^ std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif // Comparison operations -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS equal_to - : __binary_function<_Tp, _Tp, bool> -{ - typedef bool __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x == __y;} +struct _LIBCPP_TEMPLATE_VIS equal_to : __binary_function<_Tp, _Tp, bool> { + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(const _Tp& __x, const _Tp& __y) const { + return __x == __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(equal_to); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS equal_to -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS equal_to { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) == std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) == std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) == std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +// The non-transparent std::equal_to specialization is only equivalent to a raw equality +// comparison when we don't perform an implicit conversion when calling it. +template +inline const bool __desugars_to_v<__equal_tag, equal_to<_Tp>, _Tp, _Tp> = true; + +// In the transparent case, we do not enforce that +template +inline const bool __desugars_to_v<__equal_tag, equal_to, _Tp, _Up> = true; + +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS not_equal_to - : __binary_function<_Tp, _Tp, bool> -{ - typedef bool __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x != __y;} +struct _LIBCPP_TEMPLATE_VIS not_equal_to : __binary_function<_Tp, _Tp, bool> { + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(const _Tp& __x, const _Tp& __y) const { + return __x != __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(not_equal_to); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS not_equal_to -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS not_equal_to { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) != std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) != std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) != std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS less - : __binary_function<_Tp, _Tp, bool> -{ - typedef bool __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x < __y;} +struct _LIBCPP_TEMPLATE_VIS less : __binary_function<_Tp, _Tp, bool> { + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(const _Tp& __x, const _Tp& __y) const { + return __x < __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(less); -#if _LIBCPP_STD_VER > 11 +template +inline const bool __desugars_to_v<__less_tag, less<_Tp>, _Tp, _Tp> = true; + +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS less -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS less { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) < std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) < std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) < std::forward<_T2>(__u); + } + typedef void is_transparent; }; + +template +inline const bool __desugars_to_v<__less_tag, less<>, _Tp, _Tp> = true; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS less_equal - : __binary_function<_Tp, _Tp, bool> -{ - typedef bool __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x <= __y;} +struct _LIBCPP_TEMPLATE_VIS less_equal : __binary_function<_Tp, _Tp, bool> { + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(const _Tp& __x, const _Tp& __y) const { + return __x <= __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(less_equal); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS less_equal -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS less_equal { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) <= std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) <= std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) <= std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS greater_equal - : __binary_function<_Tp, _Tp, bool> -{ - typedef bool __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x >= __y;} +struct _LIBCPP_TEMPLATE_VIS greater_equal : __binary_function<_Tp, _Tp, bool> { + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(const _Tp& __x, const _Tp& __y) const { + return __x >= __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(greater_equal); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS greater_equal -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS greater_equal { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) >= + std::forward<_T2>(__u))) -> decltype(std::forward<_T1>(__t) >= std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) >= std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS greater - : __binary_function<_Tp, _Tp, bool> -{ - typedef bool __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x > __y;} +struct _LIBCPP_TEMPLATE_VIS greater : __binary_function<_Tp, _Tp, bool> { + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(const _Tp& __x, const _Tp& __y) const { + return __x > __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(greater); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS greater -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS greater { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) > std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) > std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) > std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif // Logical operations -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS logical_and - : __binary_function<_Tp, _Tp, bool> -{ - typedef bool __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x && __y;} +struct _LIBCPP_TEMPLATE_VIS logical_and : __binary_function<_Tp, _Tp, bool> { + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(const _Tp& __x, const _Tp& __y) const { + return __x && __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(logical_and); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS logical_and -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS logical_and { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) && std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) && std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) && std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS logical_not - : __unary_function<_Tp, bool> -{ - typedef bool __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x) const - {return !__x;} +struct _LIBCPP_TEMPLATE_VIS logical_not : __unary_function<_Tp, bool> { + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(const _Tp& __x) const { return !__x; } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(logical_not); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS logical_not -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_Tp&& __x) const - noexcept(noexcept(!_VSTD::forward<_Tp>(__x))) - -> decltype( !_VSTD::forward<_Tp>(__x)) - { return !_VSTD::forward<_Tp>(__x); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS logical_not { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_Tp&& __x) const + noexcept(noexcept(!std::forward<_Tp>(__x))) // + -> decltype(!std::forward<_Tp>(__x)) { + return !std::forward<_Tp>(__x); + } + typedef void is_transparent; }; #endif -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template #else template #endif -struct _LIBCPP_TEMPLATE_VIS logical_or - : __binary_function<_Tp, _Tp, bool> -{ - typedef bool __result_type; // used by valarray - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x || __y;} +struct _LIBCPP_TEMPLATE_VIS logical_or : __binary_function<_Tp, _Tp, bool> { + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool operator()(const _Tp& __x, const _Tp& __y) const { + return __x || __y; + } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(logical_or); -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template <> -struct _LIBCPP_TEMPLATE_VIS logical_or -{ - template - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - noexcept(noexcept(_VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u))) - -> decltype( _VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u); } - typedef void is_transparent; +struct _LIBCPP_TEMPLATE_VIS logical_or { + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(std::forward<_T1>(__t) || std::forward<_T2>(__u))) // + -> decltype(std::forward<_T1>(__t) || std::forward<_T2>(__u)) { + return std::forward<_T1>(__t) || std::forward<_T2>(__u); + } + typedef void is_transparent; }; #endif diff --git a/include/c++/v1/__functional/perfect_forward.h b/include/c++/v1/__functional/perfect_forward.h index 9ffea1a8..74177c78 100644 --- a/include/c++/v1/__functional/perfect_forward.h +++ b/include/c++/v1/__functional/perfect_forward.h @@ -11,19 +11,25 @@ #define _LIBCPP___FUNCTIONAL_PERFECT_FORWARD_H #include <__config> +#include <__type_traits/enable_if.h> +#include <__type_traits/invoke.h> +#include <__type_traits/is_constructible.h> #include <__utility/declval.h> #include <__utility/forward.h> +#include <__utility/integer_sequence.h> #include <__utility/move.h> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template struct __perfect_forward_impl; @@ -34,61 +40,65 @@ struct __perfect_forward_impl<_Op, index_sequence<_Idx...>, _BoundArgs...> { tuple<_BoundArgs...> __bound_args_; public: - template , _Args&&...> - >> - explicit constexpr __perfect_forward_impl(_Args&&... __bound_args) - : __bound_args_(_VSTD::forward<_Args>(__bound_args)...) {} + template , _Args&&...> >> + _LIBCPP_HIDE_FROM_ABI explicit constexpr __perfect_forward_impl(_Args&&... __bound_args) + : __bound_args_(std::forward<_Args>(__bound_args)...) {} - __perfect_forward_impl(__perfect_forward_impl const&) = default; - __perfect_forward_impl(__perfect_forward_impl&&) = default; + _LIBCPP_HIDE_FROM_ABI __perfect_forward_impl(__perfect_forward_impl const&) = default; + _LIBCPP_HIDE_FROM_ABI __perfect_forward_impl(__perfect_forward_impl&&) = default; - __perfect_forward_impl& operator=(__perfect_forward_impl const&) = default; - __perfect_forward_impl& operator=(__perfect_forward_impl&&) = default; + _LIBCPP_HIDE_FROM_ABI __perfect_forward_impl& operator=(__perfect_forward_impl const&) = default; + _LIBCPP_HIDE_FROM_ABI __perfect_forward_impl& operator=(__perfect_forward_impl&&) = default; template >> - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) & - noexcept(noexcept(_Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...))) - -> decltype( _Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...)) - { return _Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...); } + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) & noexcept( + noexcept(_Op()(std::get<_Idx>(__bound_args_)..., std::forward<_Args>(__args)...))) + -> decltype(_Op()(std::get<_Idx>(__bound_args_)..., std::forward<_Args>(__args)...)) { + return _Op()(std::get<_Idx>(__bound_args_)..., std::forward<_Args>(__args)...); + } template >> auto operator()(_Args&&...) & = delete; template >> - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) const& - noexcept(noexcept(_Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...))) - -> decltype( _Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...)) - { return _Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...); } + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) const& noexcept( + noexcept(_Op()(std::get<_Idx>(__bound_args_)..., std::forward<_Args>(__args)...))) + -> decltype(_Op()(std::get<_Idx>(__bound_args_)..., std::forward<_Args>(__args)...)) { + return _Op()(std::get<_Idx>(__bound_args_)..., std::forward<_Args>(__args)...); + } template >> auto operator()(_Args&&...) const& = delete; template >> - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) && - noexcept(noexcept(_Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...))) - -> decltype( _Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...)) - { return _Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...); } + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) && noexcept( + noexcept(_Op()(std::get<_Idx>(std::move(__bound_args_))..., std::forward<_Args>(__args)...))) + -> decltype(_Op()(std::get<_Idx>(std::move(__bound_args_))..., std::forward<_Args>(__args)...)) { + return _Op()(std::get<_Idx>(std::move(__bound_args_))..., std::forward<_Args>(__args)...); + } template >> auto operator()(_Args&&...) && = delete; template >> - _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) const&& - noexcept(noexcept(_Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...))) - -> decltype( _Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...)) - { return _Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...); } + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) const&& noexcept( + noexcept(_Op()(std::get<_Idx>(std::move(__bound_args_))..., std::forward<_Args>(__args)...))) + -> decltype(_Op()(std::get<_Idx>(std::move(__bound_args_))..., std::forward<_Args>(__args)...)) { + return _Op()(std::get<_Idx>(std::move(__bound_args_))..., std::forward<_Args>(__args)...); + } template >> auto operator()(_Args&&...) const&& = delete; }; // __perfect_forward implements a perfect-forwarding call wrapper as explained in [func.require]. -template +template using __perfect_forward = __perfect_forward_impl<_Op, index_sequence_for<_Args...>, _Args...>; -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___FUNCTIONAL_PERFECT_FORWARD_H diff --git a/include/c++/v1/__functional/pointer_to_binary_function.h b/include/c++/v1/__functional/pointer_to_binary_function.h index b2676c58..e345250d 100644 --- a/include/c++/v1/__functional/pointer_to_binary_function.h +++ b/include/c++/v1/__functional/pointer_to_binary_function.h @@ -22,22 +22,20 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 pointer_to_binary_function - : public __binary_function<_Arg1, _Arg2, _Result> -{ - _Result (*__f_)(_Arg1, _Arg2); +class _LIBCPP_TEMPLATE_VIS +_LIBCPP_DEPRECATED_IN_CXX11 pointer_to_binary_function : public __binary_function<_Arg1, _Arg2, _Result> { + _Result (*__f_)(_Arg1, _Arg2); + public: - _LIBCPP_INLINE_VISIBILITY explicit pointer_to_binary_function(_Result (*__f)(_Arg1, _Arg2)) - : __f_(__f) {} - _LIBCPP_INLINE_VISIBILITY _Result operator()(_Arg1 __x, _Arg2 __y) const - {return __f_(__x, __y);} + _LIBCPP_HIDE_FROM_ABI explicit pointer_to_binary_function(_Result (*__f)(_Arg1, _Arg2)) : __f_(__f) {} + _LIBCPP_HIDE_FROM_ABI _Result operator()(_Arg1 __x, _Arg2 __y) const { return __f_(__x, __y); } }; template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -pointer_to_binary_function<_Arg1,_Arg2,_Result> -ptr_fun(_Result (*__f)(_Arg1,_Arg2)) - {return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f);} +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI pointer_to_binary_function<_Arg1, _Arg2, _Result> +ptr_fun(_Result (*__f)(_Arg1, _Arg2)) { + return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__f); +} #endif diff --git a/include/c++/v1/__functional/pointer_to_unary_function.h b/include/c++/v1/__functional/pointer_to_unary_function.h index 77d07adf..3a5d153d 100644 --- a/include/c++/v1/__functional/pointer_to_unary_function.h +++ b/include/c++/v1/__functional/pointer_to_unary_function.h @@ -22,22 +22,20 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 pointer_to_unary_function - : public __unary_function<_Arg, _Result> -{ - _Result (*__f_)(_Arg); +class _LIBCPP_TEMPLATE_VIS +_LIBCPP_DEPRECATED_IN_CXX11 pointer_to_unary_function : public __unary_function<_Arg, _Result> { + _Result (*__f_)(_Arg); + public: - _LIBCPP_INLINE_VISIBILITY explicit pointer_to_unary_function(_Result (*__f)(_Arg)) - : __f_(__f) {} - _LIBCPP_INLINE_VISIBILITY _Result operator()(_Arg __x) const - {return __f_(__x);} + _LIBCPP_HIDE_FROM_ABI explicit pointer_to_unary_function(_Result (*__f)(_Arg)) : __f_(__f) {} + _LIBCPP_HIDE_FROM_ABI _Result operator()(_Arg __x) const { return __f_(__x); } }; template -_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY -pointer_to_unary_function<_Arg,_Result> -ptr_fun(_Result (*__f)(_Arg)) - {return pointer_to_unary_function<_Arg,_Result>(__f);} +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI pointer_to_unary_function<_Arg, _Result> +ptr_fun(_Result (*__f)(_Arg)) { + return pointer_to_unary_function<_Arg, _Result>(__f); +} #endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) diff --git a/include/c++/v1/__functional/ranges_operations.h b/include/c++/v1/__functional/ranges_operations.h index 87081dd5..27f06ead 100644 --- a/include/c++/v1/__functional/ranges_operations.h +++ b/include/c++/v1/__functional/ranges_operations.h @@ -13,6 +13,7 @@ #include <__concepts/equality_comparable.h> #include <__concepts/totally_ordered.h> #include <__config> +#include <__type_traits/desugars_to.h> #include <__utility/forward.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -21,16 +22,16 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 namespace ranges { struct equal_to { template - requires equality_comparable_with<_Tp, _Up> - [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const - noexcept(noexcept(bool(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u)))) { - return _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u); + requires equality_comparable_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(bool(std::forward<_Tp>(__t) == std::forward<_Up>(__u)))) { + return std::forward<_Tp>(__t) == std::forward<_Up>(__u); } using is_transparent = void; @@ -38,10 +39,10 @@ struct equal_to { struct not_equal_to { template - requires equality_comparable_with<_Tp, _Up> - [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const - noexcept(noexcept(bool(!(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u))))) { - return !(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u)); + requires equality_comparable_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(bool(!(std::forward<_Tp>(__t) == std::forward<_Up>(__u))))) { + return !(std::forward<_Tp>(__t) == std::forward<_Up>(__u)); } using is_transparent = void; @@ -49,10 +50,10 @@ struct not_equal_to { struct less { template - requires totally_ordered_with<_Tp, _Up> - [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const - noexcept(noexcept(bool(_VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u)))) { - return _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u); + requires totally_ordered_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(bool(std::forward<_Tp>(__t) < std::forward<_Up>(__u)))) { + return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } using is_transparent = void; @@ -60,10 +61,10 @@ struct less { struct less_equal { template - requires totally_ordered_with<_Tp, _Up> - [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const - noexcept(noexcept(bool(!(_VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t))))) { - return !(_VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t)); + requires totally_ordered_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(bool(!(std::forward<_Up>(__u) < std::forward<_Tp>(__t))))) { + return !(std::forward<_Up>(__u) < std::forward<_Tp>(__t)); } using is_transparent = void; @@ -71,10 +72,10 @@ struct less_equal { struct greater { template - requires totally_ordered_with<_Tp, _Up> - [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const - noexcept(noexcept(bool(_VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t)))) { - return _VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t); + requires totally_ordered_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(bool(std::forward<_Up>(__u) < std::forward<_Tp>(__t)))) { + return std::forward<_Up>(__u) < std::forward<_Tp>(__t); } using is_transparent = void; @@ -82,10 +83,10 @@ struct greater { struct greater_equal { template - requires totally_ordered_with<_Tp, _Up> - [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const - noexcept(noexcept(bool(!(_VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u))))) { - return !(_VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u)); + requires totally_ordered_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(bool(!(std::forward<_Tp>(__t) < std::forward<_Up>(__u))))) { + return !(std::forward<_Tp>(__t) < std::forward<_Up>(__u)); } using is_transparent = void; @@ -93,7 +94,15 @@ struct greater_equal { } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +// For ranges we do not require that the types on each side of the equality +// operator are of the same type +template +inline const bool __desugars_to_v<__equal_tag, ranges::equal_to, _Tp, _Up> = true; + +template +inline const bool __desugars_to_v<__less_tag, ranges::less, _Tp, _Up> = true; + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/reference_wrapper.h b/include/c++/v1/__functional/reference_wrapper.h index c377b643..3570e267 100644 --- a/include/c++/v1/__functional/reference_wrapper.h +++ b/include/c++/v1/__functional/reference_wrapper.h @@ -10,12 +10,16 @@ #ifndef _LIBCPP___FUNCTIONAL_REFERENCE_WRAPPER_H #define _LIBCPP___FUNCTIONAL_REFERENCE_WRAPPER_H +#include <__compare/synth_three_way.h> +#include <__concepts/boolean_testable.h> #include <__config> #include <__functional/invoke.h> #include <__functional/weak_result_type.h> #include <__memory/addressof.h> #include <__type_traits/enable_if.h> +#include <__type_traits/is_const.h> #include <__type_traits/remove_cvref.h> +#include <__type_traits/void_t.h> #include <__utility/declval.h> #include <__utility/forward.h> @@ -26,79 +30,124 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -class _LIBCPP_TEMPLATE_VIS reference_wrapper : public __weak_result_type<_Tp> -{ +class _LIBCPP_TEMPLATE_VIS reference_wrapper : public __weak_result_type<_Tp> { public: - // types - typedef _Tp type; + // types + typedef _Tp type; + private: - type* __f_; + type* __f_; - static void __fun(_Tp&) _NOEXCEPT; - static void __fun(_Tp&&) = delete; + static void __fun(_Tp&) _NOEXCEPT; + static void __fun(_Tp&&) = delete; // NOLINT(modernize-use-equals-delete) ; This is llvm.org/PR54276 public: - template ::value, decltype(__fun(std::declval<_Up>())) > > - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - reference_wrapper(_Up&& __u) _NOEXCEPT_(noexcept(__fun(std::declval<_Up>()))) { - type& __f = static_cast<_Up&&>(__u); - __f_ = _VSTD::addressof(__f); + template ()))>, + __enable_if_t::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 reference_wrapper(_Up&& __u) + _NOEXCEPT_(noexcept(__fun(std::declval<_Up>()))) { + type& __f = static_cast<_Up&&>(__u); + __f_ = std::addressof(__f); + } + + // access + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 operator type&() const _NOEXCEPT { return *__f_; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 type& get() const _NOEXCEPT { return *__f_; } + + // invoke + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 typename __invoke_of::type + operator()(_ArgTypes&&... __args) const +#if _LIBCPP_STD_VER >= 17 + // Since is_nothrow_invocable requires C++17 LWG3764 is not backported + // to earlier versions. + noexcept(is_nothrow_invocable_v<_Tp&, _ArgTypes...>) +#endif + { + return std::__invoke(get(), std::forward<_ArgTypes>(__args)...); + } + +#if _LIBCPP_STD_VER >= 26 + + // [refwrap.comparisons], comparisons + + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(reference_wrapper __x, reference_wrapper __y) + requires requires { + { __x.get() == __y.get() } -> __boolean_testable; } + { + return __x.get() == __y.get(); + } - // access - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - operator type&() const _NOEXCEPT {return *__f_;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - type& get() const _NOEXCEPT {return *__f_;} - - // invoke - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 - typename __invoke_of::type - operator() (_ArgTypes&&... __args) const { - return std::__invoke(get(), std::forward<_ArgTypes>(__args)...); + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(reference_wrapper __x, const _Tp& __y) + requires requires { + { __x.get() == __y } -> __boolean_testable; } + { + return __x.get() == __y; + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(reference_wrapper __x, reference_wrapper __y) + requires(!is_const_v<_Tp>) && requires { + { __x.get() == __y.get() } -> __boolean_testable; + } + { + return __x.get() == __y.get(); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr auto operator<=>(reference_wrapper __x, reference_wrapper __y) + requires requires { std::__synth_three_way(__x.get(), __y.get()); } + { + return std::__synth_three_way(__x.get(), __y.get()); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr auto operator<=>(reference_wrapper __x, const _Tp& __y) + requires requires { std::__synth_three_way(__x.get(), __y); } + { + return std::__synth_three_way(__x.get(), __y); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr auto operator<=>(reference_wrapper __x, reference_wrapper __y) + requires(!is_const_v<_Tp>) && requires { std::__synth_three_way(__x.get(), __y.get()); } + { + return std::__synth_three_way(__x.get(), __y.get()); + } + +#endif // _LIBCPP_STD_VER >= 26 }; -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template reference_wrapper(_Tp&) -> reference_wrapper<_Tp>; #endif template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -reference_wrapper<_Tp> -ref(_Tp& __t) _NOEXCEPT -{ - return reference_wrapper<_Tp>(__t); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 reference_wrapper<_Tp> ref(_Tp& __t) _NOEXCEPT { + return reference_wrapper<_Tp>(__t); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -reference_wrapper<_Tp> -ref(reference_wrapper<_Tp> __t) _NOEXCEPT -{ - return __t; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 reference_wrapper<_Tp> +ref(reference_wrapper<_Tp> __t) _NOEXCEPT { + return __t; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -reference_wrapper -cref(const _Tp& __t) _NOEXCEPT -{ - return reference_wrapper(__t); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 reference_wrapper cref(const _Tp& __t) _NOEXCEPT { + return reference_wrapper(__t); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -reference_wrapper -cref(reference_wrapper<_Tp> __t) _NOEXCEPT -{ - return __t; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 reference_wrapper +cref(reference_wrapper<_Tp> __t) _NOEXCEPT { + return __t; } -template void ref(const _Tp&&) = delete; -template void cref(const _Tp&&) = delete; +template +void ref(const _Tp&&) = delete; +template +void cref(const _Tp&&) = delete; _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__functional/unary_function.h b/include/c++/v1/__functional/unary_function.h index f07cac17..69b1bc94 100644 --- a/include/c++/v1/__functional/unary_function.h +++ b/include/c++/v1/__functional/unary_function.h @@ -20,18 +20,18 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 unary_function -{ - typedef _Arg argument_type; - typedef _Result result_type; +struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 unary_function { + typedef _Arg argument_type; + typedef _Result result_type; }; #endif // _LIBCPP_STD_VER <= 14 -template struct __unary_function_keep_layout_base { +template +struct __unary_function_keep_layout_base { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) using argument_type _LIBCPP_DEPRECATED_IN_CXX17 = _Arg; - using result_type _LIBCPP_DEPRECATED_IN_CXX17 = _Result; + using result_type _LIBCPP_DEPRECATED_IN_CXX17 = _Result; #endif }; diff --git a/include/c++/v1/__functional/unary_negate.h b/include/c++/v1/__functional/unary_negate.h index ab87e86d..5bd487a9 100644 --- a/include/c++/v1/__functional/unary_negate.h +++ b/include/c++/v1/__functional/unary_negate.h @@ -22,23 +22,24 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) template -class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 unary_negate - : public __unary_function -{ - _Predicate __pred_; +class _LIBCPP_TEMPLATE_VIS +_LIBCPP_DEPRECATED_IN_CXX17 unary_negate : public __unary_function { + _Predicate __pred_; + public: - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - explicit unary_negate(const _Predicate& __pred) - : __pred_(__pred) {} - _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY - bool operator()(const typename _Predicate::argument_type& __x) const - {return !__pred_(__x);} + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI explicit unary_negate(const _Predicate& __pred) + : __pred_(__pred) {} + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI bool + operator()(const typename _Predicate::argument_type& __x) const { + return !__pred_(__x); + } }; template -_LIBCPP_DEPRECATED_IN_CXX17 inline _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY -unary_negate<_Predicate> -not1(const _Predicate& __pred) {return unary_negate<_Predicate>(__pred);} +_LIBCPP_DEPRECATED_IN_CXX17 inline _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI unary_negate<_Predicate> +not1(const _Predicate& __pred) { + return unary_negate<_Predicate>(__pred); +} #endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) diff --git a/include/c++/v1/__functional/unwrap_ref.h b/include/c++/v1/__functional/unwrap_ref.h deleted file mode 100644 index da000d80..00000000 --- a/include/c++/v1/__functional/unwrap_ref.h +++ /dev/null @@ -1,58 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___FUNCTIONAL_UNWRAP_REF_H -#define _LIBCPP___FUNCTIONAL_UNWRAP_REF_H - -#include <__config> -#include <__type_traits/decay.h> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -struct __unwrap_reference { typedef _LIBCPP_NODEBUG _Tp type; }; - -template -class reference_wrapper; - -template -struct __unwrap_reference > { typedef _LIBCPP_NODEBUG _Tp& type; }; - -template -struct decay; - -#if _LIBCPP_STD_VER > 17 -template -struct unwrap_reference : __unwrap_reference<_Tp> { }; - -template -using unwrap_reference_t = typename unwrap_reference<_Tp>::type; - -template -struct unwrap_ref_decay : unwrap_reference::type> { }; - -template -using unwrap_ref_decay_t = typename unwrap_ref_decay<_Tp>::type; -#endif // > C++17 - -template -struct __unwrap_ref_decay -#if _LIBCPP_STD_VER > 17 - : unwrap_ref_decay<_Tp> -#else - : __unwrap_reference::type> -#endif -{ }; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___FUNCTIONAL_UNWRAP_REF_H diff --git a/include/c++/v1/__functional/weak_result_type.h b/include/c++/v1/__functional/weak_result_type.h index 18d1bf71..ad7a8395 100644 --- a/include/c++/v1/__functional/weak_result_type.h +++ b/include/c++/v1/__functional/weak_result_type.h @@ -25,268 +25,205 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -struct __has_result_type -{ +struct __has_result_type { private: - template static false_type __test(...); - template static true_type __test(typename _Up::result_type* = 0); + template + static false_type __test(...); + template + static true_type __test(typename _Up::result_type* = 0); + public: - static const bool value = decltype(__test<_Tp>(0))::value; + static const bool value = decltype(__test<_Tp>(0))::value; }; // __weak_result_type template -struct __derives_from_unary_function -{ +struct __derives_from_unary_function { private: - struct __two {char __lx; char __lxx;}; - static __two __test(...); - template - static __unary_function<_Ap, _Rp> - __test(const volatile __unary_function<_Ap, _Rp>*); + struct __two { + char __lx; + char __lxx; + }; + static __two __test(...); + template + static __unary_function<_Ap, _Rp> __test(const volatile __unary_function<_Ap, _Rp>*); public: - static const bool value = !is_same::value; - typedef decltype(__test((_Tp*)0)) type; + static const bool value = !is_same::value; + typedef decltype(__test((_Tp*)0)) type; }; template -struct __derives_from_binary_function -{ +struct __derives_from_binary_function { private: - struct __two {char __lx; char __lxx;}; - static __two __test(...); - template - static __binary_function<_A1, _A2, _Rp> - __test(const volatile __binary_function<_A1, _A2, _Rp>*); + struct __two { + char __lx; + char __lxx; + }; + static __two __test(...); + template + static __binary_function<_A1, _A2, _Rp> __test(const volatile __binary_function<_A1, _A2, _Rp>*); public: - static const bool value = !is_same::value; - typedef decltype(__test((_Tp*)0)) type; + static const bool value = !is_same::value; + typedef decltype(__test((_Tp*)0)) type; }; template ::value> -struct __maybe_derive_from_unary_function // bool is true - : public __derives_from_unary_function<_Tp>::type -{ -}; +struct __maybe_derive_from_unary_function // bool is true + : public __derives_from_unary_function<_Tp>::type {}; template -struct __maybe_derive_from_unary_function<_Tp, false> -{ -}; +struct __maybe_derive_from_unary_function<_Tp, false> {}; template ::value> -struct __maybe_derive_from_binary_function // bool is true - : public __derives_from_binary_function<_Tp>::type -{ -}; +struct __maybe_derive_from_binary_function // bool is true + : public __derives_from_binary_function<_Tp>::type {}; template -struct __maybe_derive_from_binary_function<_Tp, false> -{ -}; +struct __maybe_derive_from_binary_function<_Tp, false> {}; template ::value> struct __weak_result_type_imp // bool is true : public __maybe_derive_from_unary_function<_Tp>, - public __maybe_derive_from_binary_function<_Tp> -{ + public __maybe_derive_from_binary_function<_Tp> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = typename _Tp::result_type; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = typename _Tp::result_type; #endif }; template struct __weak_result_type_imp<_Tp, false> - : public __maybe_derive_from_unary_function<_Tp>, - public __maybe_derive_from_binary_function<_Tp> -{ -}; + : public __maybe_derive_from_unary_function<_Tp>, public __maybe_derive_from_binary_function<_Tp> {}; template -struct __weak_result_type - : public __weak_result_type_imp<_Tp> -{ -}; +struct __weak_result_type : public __weak_result_type_imp<_Tp> {}; // 0 argument case template -struct __weak_result_type<_Rp ()> -{ +struct __weak_result_type<_Rp()> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; #endif }; template -struct __weak_result_type<_Rp (&)()> -{ +struct __weak_result_type<_Rp (&)()> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; #endif }; template -struct __weak_result_type<_Rp (*)()> -{ +struct __weak_result_type<_Rp (*)()> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; #endif }; // 1 argument case template -struct __weak_result_type<_Rp (_A1)> - : public __unary_function<_A1, _Rp> -{ -}; +struct __weak_result_type<_Rp(_A1)> : public __unary_function<_A1, _Rp> {}; template -struct __weak_result_type<_Rp (&)(_A1)> - : public __unary_function<_A1, _Rp> -{ -}; +struct __weak_result_type<_Rp (&)(_A1)> : public __unary_function<_A1, _Rp> {}; template -struct __weak_result_type<_Rp (*)(_A1)> - : public __unary_function<_A1, _Rp> -{ -}; +struct __weak_result_type<_Rp (*)(_A1)> : public __unary_function<_A1, _Rp> {}; template -struct __weak_result_type<_Rp (_Cp::*)()> - : public __unary_function<_Cp*, _Rp> -{ -}; +struct __weak_result_type<_Rp (_Cp::*)()> : public __unary_function<_Cp*, _Rp> {}; template -struct __weak_result_type<_Rp (_Cp::*)() const> - : public __unary_function -{ -}; +struct __weak_result_type<_Rp (_Cp::*)() const> : public __unary_function {}; template -struct __weak_result_type<_Rp (_Cp::*)() volatile> - : public __unary_function -{ -}; +struct __weak_result_type<_Rp (_Cp::*)() volatile> : public __unary_function {}; template -struct __weak_result_type<_Rp (_Cp::*)() const volatile> - : public __unary_function -{ -}; +struct __weak_result_type<_Rp (_Cp::*)() const volatile> : public __unary_function {}; // 2 argument case template -struct __weak_result_type<_Rp (_A1, _A2)> - : public __binary_function<_A1, _A2, _Rp> -{ -}; +struct __weak_result_type<_Rp(_A1, _A2)> : public __binary_function<_A1, _A2, _Rp> {}; template -struct __weak_result_type<_Rp (*)(_A1, _A2)> - : public __binary_function<_A1, _A2, _Rp> -{ -}; +struct __weak_result_type<_Rp (*)(_A1, _A2)> : public __binary_function<_A1, _A2, _Rp> {}; template -struct __weak_result_type<_Rp (&)(_A1, _A2)> - : public __binary_function<_A1, _A2, _Rp> -{ -}; +struct __weak_result_type<_Rp (&)(_A1, _A2)> : public __binary_function<_A1, _A2, _Rp> {}; template -struct __weak_result_type<_Rp (_Cp::*)(_A1)> - : public __binary_function<_Cp*, _A1, _Rp> -{ -}; +struct __weak_result_type<_Rp (_Cp::*)(_A1)> : public __binary_function<_Cp*, _A1, _Rp> {}; template -struct __weak_result_type<_Rp (_Cp::*)(_A1) const> - : public __binary_function -{ -}; +struct __weak_result_type<_Rp (_Cp::*)(_A1) const> : public __binary_function {}; template -struct __weak_result_type<_Rp (_Cp::*)(_A1) volatile> - : public __binary_function -{ -}; +struct __weak_result_type<_Rp (_Cp::*)(_A1) volatile> : public __binary_function {}; template -struct __weak_result_type<_Rp (_Cp::*)(_A1) const volatile> - : public __binary_function -{ +struct __weak_result_type<_Rp (_Cp::*)(_A1) const volatile> : public __binary_function { }; // 3 or more arguments -template -struct __weak_result_type<_Rp (_A1, _A2, _A3, _A4...)> -{ +template +struct __weak_result_type<_Rp(_A1, _A2, _A3, _A4...)> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; #endif }; -template -struct __weak_result_type<_Rp (&)(_A1, _A2, _A3, _A4...)> -{ +template +struct __weak_result_type<_Rp (&)(_A1, _A2, _A3, _A4...)> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; #endif }; -template -struct __weak_result_type<_Rp (*)(_A1, _A2, _A3, _A4...)> -{ +template +struct __weak_result_type<_Rp (*)(_A1, _A2, _A3, _A4...)> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; #endif }; -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...)> -{ +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...)> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; #endif }; -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const> -{ +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; #endif }; -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) volatile> -{ +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) volatile> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; #endif }; -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const volatile> -{ +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const volatile> { #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) - using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; #endif }; -template -struct __invoke_return -{ - typedef decltype(_VSTD::__invoke(std::declval<_Tp>(), std::declval<_Args>()...)) type; +template +struct __invoke_return { + typedef decltype(std::__invoke(std::declval<_Tp>(), std::declval<_Args>()...)) type; }; _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__fwd/array.h b/include/c++/v1/__fwd/array.h index 9a79effb..794779ae 100644 --- a/include/c++/v1/__fwd/array.h +++ b/include/c++/v1/__fwd/array.h @@ -10,7 +10,8 @@ #define _LIBCPP___FWD_ARRAY_H #include <__config> -#include +#include <__cstddef/size_t.h> +#include <__type_traits/integral_constant.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -21,6 +22,26 @@ _LIBCPP_BEGIN_NAMESPACE_STD template struct _LIBCPP_TEMPLATE_VIS array; +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp& get(array<_Tp, _Size>&) _NOEXCEPT; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp& get(const array<_Tp, _Size>&) _NOEXCEPT; + +#ifndef _LIBCPP_CXX03_LANG +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp&& get(array<_Tp, _Size>&&) _NOEXCEPT; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp&& get(const array<_Tp, _Size>&&) _NOEXCEPT; +#endif + +template +inline const bool __is_std_array_v = false; + +template +inline const bool __is_std_array_v > = true; + _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___FWD_ARRAY_H diff --git a/include/c++/v1/__fwd/get.h b/include/c++/v1/__fwd/get.h deleted file mode 100644 index ec1fab46..00000000 --- a/include/c++/v1/__fwd/get.h +++ /dev/null @@ -1,115 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___FWD_GET_H -#define _LIBCPP___FWD_GET_H - -#include <__concepts/copyable.h> -#include <__config> -#include <__fwd/array.h> -#include <__fwd/pair.h> -#include <__fwd/subrange.h> -#include <__fwd/tuple.h> -#include <__tuple_dir/tuple_element.h> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -#ifndef _LIBCPP_CXX03_LANG - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -typename tuple_element<_Ip, tuple<_Tp...> >::type& -get(tuple<_Tp...>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -const typename tuple_element<_Ip, tuple<_Tp...> >::type& -get(const tuple<_Tp...>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -typename tuple_element<_Ip, tuple<_Tp...> >::type&& -get(tuple<_Tp...>&&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -const typename tuple_element<_Ip, tuple<_Tp...> >::type&& -get(const tuple<_Tp...>&&) _NOEXCEPT; - -#endif //_LIBCPP_CXX03_LANG - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -typename tuple_element<_Ip, pair<_T1, _T2> >::type& -get(pair<_T1, _T2>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -const typename tuple_element<_Ip, pair<_T1, _T2> >::type& -get(const pair<_T1, _T2>&) _NOEXCEPT; - -#ifndef _LIBCPP_CXX03_LANG -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -typename tuple_element<_Ip, pair<_T1, _T2> >::type&& -get(pair<_T1, _T2>&&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -const typename tuple_element<_Ip, pair<_T1, _T2> >::type&& -get(const pair<_T1, _T2>&&) _NOEXCEPT; -#endif - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Tp& -get(array<_Tp, _Size>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -const _Tp& -get(const array<_Tp, _Size>&) _NOEXCEPT; - -#ifndef _LIBCPP_CXX03_LANG -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Tp&& -get(array<_Tp, _Size>&&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -const _Tp&& -get(const array<_Tp, _Size>&&) _NOEXCEPT; -#endif - -#if _LIBCPP_STD_VER >= 20 - -namespace ranges { - -template - requires((_Index == 0 && copyable<_Iter>) || _Index == 1) -_LIBCPP_HIDE_FROM_ABI constexpr auto get(const subrange<_Iter, _Sent, _Kind>& __subrange); - -template - requires(_Index < 2) -_LIBCPP_HIDE_FROM_ABI constexpr auto get(subrange<_Iter, _Sent, _Kind>&& __subrange); - -} // namespace ranges - -using ranges::get; - -#endif // _LIBCPP_STD_VER >= 20 - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___FWD_GET_H diff --git a/include/c++/v1/__fwd/hash.h b/include/c++/v1/__fwd/hash.h deleted file mode 100644 index af9eca87..00000000 --- a/include/c++/v1/__fwd/hash.h +++ /dev/null @@ -1,25 +0,0 @@ -//===---------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===---------------------------------------------------------------------===// - -#ifndef _LIBCPP___FWD_HASH_H -#define _LIBCPP___FWD_HASH_H - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -struct _LIBCPP_TEMPLATE_VIS hash; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___FWD_HASH_H diff --git a/include/c++/v1/__fwd/memory_resource.h b/include/c++/v1/__fwd/memory_resource.h index 718a9078..d68b2c2b 100644 --- a/include/c++/v1/__fwd/memory_resource.h +++ b/include/c++/v1/__fwd/memory_resource.h @@ -19,7 +19,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD namespace pmr { template -class _LIBCPP_TEMPLATE_VIS polymorphic_allocator; +class _LIBCPP_AVAILABILITY_PMR _LIBCPP_TEMPLATE_VIS polymorphic_allocator; } // namespace pmr _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__fwd/pair.h b/include/c++/v1/__fwd/pair.h index 3844014d..b8ba2b7e 100644 --- a/include/c++/v1/__fwd/pair.h +++ b/include/c++/v1/__fwd/pair.h @@ -10,6 +10,8 @@ #define _LIBCPP___FWD_PAIR_H #include <__config> +#include <__cstddef/size_t.h> +#include <__fwd/tuple.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -20,6 +22,24 @@ _LIBCPP_BEGIN_NAMESPACE_STD template struct _LIBCPP_TEMPLATE_VIS pair; +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Ip, pair<_T1, _T2> >::type& +get(pair<_T1, _T2>&) _NOEXCEPT; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, pair<_T1, _T2> >::type& +get(const pair<_T1, _T2>&) _NOEXCEPT; + +#ifndef _LIBCPP_CXX03_LANG +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Ip, pair<_T1, _T2> >::type&& +get(pair<_T1, _T2>&&) _NOEXCEPT; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, pair<_T1, _T2> >::type&& +get(const pair<_T1, _T2>&&) _NOEXCEPT; +#endif + _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___FWD_PAIR_H diff --git a/include/c++/v1/__fwd/span.h b/include/c++/v1/__fwd/span.h index 943cb13f..5d473ee5 100644 --- a/include/c++/v1/__fwd/span.h +++ b/include/c++/v1/__fwd/span.h @@ -11,7 +11,7 @@ #define _LIBCPP___FWD_SPAN_H #include <__config> -#include +#include <__cstddef/size_t.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -23,10 +23,11 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 inline constexpr size_t dynamic_extent = numeric_limits::max(); -template class span; +template +class span; #endif diff --git a/include/c++/v1/__fwd/string.h b/include/c++/v1/__fwd/string.h index 7ab5561b..2418e1f9 100644 --- a/include/c++/v1/__fwd/string.h +++ b/include/c++/v1/__fwd/string.h @@ -10,6 +10,7 @@ #define _LIBCPP___FWD_STRING_H #include <__config> +#include <__fwd/memory.h> #include <__fwd/memory_resource.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -38,9 +39,6 @@ template <> struct char_traits; #endif -template -class _LIBCPP_TEMPLATE_VIS allocator; - template , class _Allocator = allocator<_CharT> > class _LIBCPP_TEMPLATE_VIS basic_string; @@ -61,21 +59,20 @@ using u32string = basic_string; namespace pmr { template > -using basic_string = std::basic_string<_CharT, _Traits, polymorphic_allocator<_CharT>>; +using basic_string _LIBCPP_AVAILABILITY_PMR = std::basic_string<_CharT, _Traits, polymorphic_allocator<_CharT>>; -using string = basic_string; +using string _LIBCPP_AVAILABILITY_PMR = basic_string; # ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS -using wstring = basic_string; +using wstring _LIBCPP_AVAILABILITY_PMR = basic_string; # endif # ifndef _LIBCPP_HAS_NO_CHAR8_T -using u8string = basic_string; +using u8string _LIBCPP_AVAILABILITY_PMR = basic_string; # endif -using u16string = basic_string; -using u32string = basic_string; - +using u16string _LIBCPP_AVAILABILITY_PMR = basic_string; +using u32string _LIBCPP_AVAILABILITY_PMR = basic_string; } // namespace pmr #endif // _LIBCPP_STD_VER >= 17 diff --git a/include/c++/v1/__fwd/string_view.h b/include/c++/v1/__fwd/string_view.h index 48189902..72a64be5 100644 --- a/include/c++/v1/__fwd/string_view.h +++ b/include/c++/v1/__fwd/string_view.h @@ -11,7 +11,7 @@ #define _LIBCPP___FWD_STRING_VIEW_H #include <__config> -#include // char_traits +#include <__fwd/string.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -19,17 +19,17 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template > +template > class _LIBCPP_TEMPLATE_VIS basic_string_view; -typedef basic_string_view string_view; +typedef basic_string_view string_view; #ifndef _LIBCPP_HAS_NO_CHAR8_T -typedef basic_string_view u8string_view; +typedef basic_string_view u8string_view; #endif typedef basic_string_view u16string_view; typedef basic_string_view u32string_view; #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS -typedef basic_string_view wstring_view; +typedef basic_string_view wstring_view; #endif // clang-format off diff --git a/include/c++/v1/__fwd/subrange.h b/include/c++/v1/__fwd/subrange.h index 8f723924..5b3a07e5 100644 --- a/include/c++/v1/__fwd/subrange.h +++ b/include/c++/v1/__fwd/subrange.h @@ -9,7 +9,10 @@ #ifndef _LIBCPP___FWD_SUBRANGE_H #define _LIBCPP___FWD_SUBRANGE_H +#include <__concepts/copyable.h> #include <__config> +#include <__cstddef/size_t.h> +#include <__iterator/concepts.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -17,20 +20,28 @@ #if _LIBCPP_STD_VER >= 20 -#include <__iterator/concepts.h> - _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { -enum class _LIBCPP_ENUM_VIS subrange_kind : bool { unsized, sized }; +enum class subrange_kind : bool { unsized, sized }; template _Sent, subrange_kind _Kind> requires(_Kind == subrange_kind::sized || !sized_sentinel_for<_Sent, _Iter>) class _LIBCPP_TEMPLATE_VIS subrange; +template + requires((_Index == 0 && copyable<_Iter>) || _Index == 1) +_LIBCPP_HIDE_FROM_ABI constexpr auto get(const subrange<_Iter, _Sent, _Kind>&); + +template + requires(_Index < 2) +_LIBCPP_HIDE_FROM_ABI constexpr auto get(subrange<_Iter, _Sent, _Kind>&&); + } // namespace ranges +using ranges::get; + _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 20 diff --git a/include/c++/v1/__fwd/tuple.h b/include/c++/v1/__fwd/tuple.h index 16b3fabb..2ed32bc0 100644 --- a/include/c++/v1/__fwd/tuple.h +++ b/include/c++/v1/__fwd/tuple.h @@ -10,6 +10,7 @@ #define _LIBCPP___FWD_TUPLE_H #include <__config> +#include <__cstddef/size_t.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -17,11 +18,33 @@ _LIBCPP_BEGIN_NAMESPACE_STD +template +struct _LIBCPP_TEMPLATE_VIS tuple_element; + #ifndef _LIBCPP_CXX03_LANG template class _LIBCPP_TEMPLATE_VIS tuple; +template +struct _LIBCPP_TEMPLATE_VIS tuple_size; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Ip, tuple<_Tp...> >::type& +get(tuple<_Tp...>&) _NOEXCEPT; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, tuple<_Tp...> >::type& +get(const tuple<_Tp...>&) _NOEXCEPT; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Ip, tuple<_Tp...> >::type&& +get(tuple<_Tp...>&&) _NOEXCEPT; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, tuple<_Tp...> >::type&& +get(const tuple<_Tp...>&&) _NOEXCEPT; + #endif // _LIBCPP_CXX03_LANG _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__hash_table b/include/c++/v1/__hash_table index f8896c86..02575852 100644 --- a/include/c++/v1/__hash_table +++ b/include/c++/v1/__hash_table @@ -15,16 +15,27 @@ #include <__assert> #include <__bit/countl.h> #include <__config> -#include <__debug> #include <__functional/hash.h> +#include <__functional/invoke.h> #include <__iterator/iterator_traits.h> #include <__memory/addressof.h> #include <__memory/allocator_traits.h> #include <__memory/compressed_pair.h> +#include <__memory/construct_at.h> #include <__memory/pointer_traits.h> #include <__memory/swap_allocator.h> #include <__memory/unique_ptr.h> #include <__type_traits/can_extract_key.h> +#include <__type_traits/conditional.h> +#include <__type_traits/is_const.h> +#include <__type_traits/is_constructible.h> +#include <__type_traits/is_nothrow_assignable.h> +#include <__type_traits/is_nothrow_constructible.h> +#include <__type_traits/is_pointer.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/is_swappable.h> +#include <__type_traits/remove_const.h> +#include <__type_traits/remove_cvref.h> #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/pair.h> @@ -32,7 +43,7 @@ #include #include #include -#include +#include // __launder #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -41,7 +52,6 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> - _LIBCPP_BEGIN_NAMESPACE_STD template @@ -53,95 +63,100 @@ struct __is_hash_value_type_imp : false_type {}; template struct __is_hash_value_type_imp<__hash_value_type<_Key, _Value> > : true_type {}; -template +template struct __is_hash_value_type : false_type {}; template struct __is_hash_value_type<_One> : __is_hash_value_type_imp<__remove_cvref_t<_One> > {}; -_LIBCPP_FUNC_VIS -size_t __next_prime(size_t __n); +_LIBCPP_EXPORTED_FROM_ABI size_t __next_prime(size_t __n); template -struct __hash_node_base -{ - typedef typename pointer_traits<_NodePtr>::element_type __node_type; - typedef __hash_node_base __first_node; - typedef __rebind_pointer_t<_NodePtr, __first_node> __node_base_pointer; - typedef _NodePtr __node_pointer; +struct __hash_node_base { + typedef typename pointer_traits<_NodePtr>::element_type __node_type; + typedef __hash_node_base __first_node; + typedef __rebind_pointer_t<_NodePtr, __first_node> __node_base_pointer; + typedef _NodePtr __node_pointer; #if defined(_LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB) typedef __node_base_pointer __next_pointer; #else - typedef __conditional_t::value, __node_base_pointer, __node_pointer> __next_pointer; + typedef __conditional_t::value, __node_base_pointer, __node_pointer> __next_pointer; #endif - __next_pointer __next_; + __next_pointer __next_; - _LIBCPP_INLINE_VISIBILITY - __next_pointer __ptr() _NOEXCEPT { - return static_cast<__next_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(*this)); - } + _LIBCPP_HIDE_FROM_ABI __next_pointer __ptr() _NOEXCEPT { + return static_cast<__next_pointer>(pointer_traits<__node_base_pointer>::pointer_to(*this)); + } - _LIBCPP_INLINE_VISIBILITY - __node_pointer __upcast() _NOEXCEPT { - return static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(*this)); - } + _LIBCPP_HIDE_FROM_ABI __node_pointer __upcast() _NOEXCEPT { + return static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(*this)); + } - _LIBCPP_INLINE_VISIBILITY - size_t __hash() const _NOEXCEPT { - return static_cast<__node_type const&>(*this).__hash_; - } + _LIBCPP_HIDE_FROM_ABI size_t __hash() const _NOEXCEPT { return static_cast<__node_type const&>(*this).__hash_; } - _LIBCPP_INLINE_VISIBILITY __hash_node_base() _NOEXCEPT : __next_(nullptr) {} + _LIBCPP_HIDE_FROM_ABI __hash_node_base() _NOEXCEPT : __next_(nullptr) {} + _LIBCPP_HIDE_FROM_ABI explicit __hash_node_base(__next_pointer __next) _NOEXCEPT : __next_(__next) {} }; template -struct _LIBCPP_STANDALONE_DEBUG __hash_node - : public __hash_node_base - < - __rebind_pointer_t<_VoidPtr, __hash_node<_Tp, _VoidPtr> > - > -{ - typedef _Tp __node_value_type; +struct __hash_node : public __hash_node_base< __rebind_pointer_t<_VoidPtr, __hash_node<_Tp, _VoidPtr> > > { + typedef _Tp __node_value_type; + using _Base = __hash_node_base<__rebind_pointer_t<_VoidPtr, __hash_node<_Tp, _VoidPtr> > >; + using __next_pointer = typename _Base::__next_pointer; + + size_t __hash_; + + // We allow starting the lifetime of nodes without initializing the value held by the node, + // since that is handled by the hash table itself in order to be allocator-aware. +#ifndef _LIBCPP_CXX03_LANG + +private: + union { + _Tp __value_; + }; - size_t __hash_; - __node_value_type __value_; +public: + _LIBCPP_HIDE_FROM_ABI _Tp& __get_value() { return __value_; } +#else + +private: + _ALIGNAS_TYPE(_Tp) char __buffer_[sizeof(_Tp)]; + +public: + _LIBCPP_HIDE_FROM_ABI _Tp& __get_value() { return *std::__launder(reinterpret_cast<_Tp*>(&__buffer_)); } +#endif + + _LIBCPP_HIDE_FROM_ABI explicit __hash_node(__next_pointer __next, size_t __hash) : _Base(__next), __hash_(__hash) {} + _LIBCPP_HIDE_FROM_ABI ~__hash_node() {} }; -inline _LIBCPP_INLINE_VISIBILITY -bool -__is_hash_power2(size_t __bc) -{ - return __bc > 2 && !(__bc & (__bc - 1)); -} +inline _LIBCPP_HIDE_FROM_ABI bool __is_hash_power2(size_t __bc) { return __bc > 2 && !(__bc & (__bc - 1)); } -inline _LIBCPP_INLINE_VISIBILITY -size_t -__constrain_hash(size_t __h, size_t __bc) -{ - return !(__bc & (__bc - 1)) ? __h & (__bc - 1) : - (__h < __bc ? __h : __h % __bc); +inline _LIBCPP_HIDE_FROM_ABI size_t __constrain_hash(size_t __h, size_t __bc) { + return !(__bc & (__bc - 1)) ? __h & (__bc - 1) : (__h < __bc ? __h : __h % __bc); } -inline _LIBCPP_INLINE_VISIBILITY -size_t -__next_hash_pow2(size_t __n) -{ - return __n < 2 ? __n : (size_t(1) << (numeric_limits::digits - __libcpp_clz(__n-1))); +inline _LIBCPP_HIDE_FROM_ABI size_t __next_hash_pow2(size_t __n) { + return __n < 2 ? __n : (size_t(1) << (numeric_limits::digits - __libcpp_clz(__n - 1))); } +template +class __hash_table; -template class __hash_table; - -template class _LIBCPP_TEMPLATE_VIS __hash_iterator; -template class _LIBCPP_TEMPLATE_VIS __hash_const_iterator; -template class _LIBCPP_TEMPLATE_VIS __hash_local_iterator; -template class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator; -template class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; -template class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; +template +class _LIBCPP_TEMPLATE_VIS __hash_iterator; +template +class _LIBCPP_TEMPLATE_VIS __hash_const_iterator; +template +class _LIBCPP_TEMPLATE_VIS __hash_local_iterator; +template +class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator; +template +class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; +template +class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; template struct __hash_key_value_types { @@ -151,73 +166,47 @@ struct __hash_key_value_types { typedef _Tp __container_value_type; static const bool __is_map = false; - _LIBCPP_INLINE_VISIBILITY - static key_type const& __get_key(_Tp const& __v) { - return __v; - } - _LIBCPP_INLINE_VISIBILITY - static __container_value_type const& __get_value(__node_value_type const& __v) { - return __v; - } - _LIBCPP_INLINE_VISIBILITY - static __container_value_type* __get_ptr(__node_value_type& __n) { - return _VSTD::addressof(__n); - } - _LIBCPP_INLINE_VISIBILITY - static __container_value_type&& __move(__node_value_type& __v) { - return _VSTD::move(__v); - } + _LIBCPP_HIDE_FROM_ABI static key_type const& __get_key(_Tp const& __v) { return __v; } + _LIBCPP_HIDE_FROM_ABI static __container_value_type const& __get_value(__node_value_type const& __v) { return __v; } + _LIBCPP_HIDE_FROM_ABI static __container_value_type* __get_ptr(__node_value_type& __n) { return std::addressof(__n); } + _LIBCPP_HIDE_FROM_ABI static __container_value_type&& __move(__node_value_type& __v) { return std::move(__v); } }; template struct __hash_key_value_types<__hash_value_type<_Key, _Tp> > { - typedef _Key key_type; - typedef _Tp mapped_type; - typedef __hash_value_type<_Key, _Tp> __node_value_type; - typedef pair __container_value_type; - typedef __container_value_type __map_value_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef __hash_value_type<_Key, _Tp> __node_value_type; + typedef pair __container_value_type; + typedef __container_value_type __map_value_type; static const bool __is_map = true; - _LIBCPP_INLINE_VISIBILITY - static key_type const& __get_key(__container_value_type const& __v) { - return __v.first; - } + _LIBCPP_HIDE_FROM_ABI static key_type const& __get_key(__container_value_type const& __v) { return __v.first; } - template - _LIBCPP_INLINE_VISIBILITY - static __enable_if_t<__is_same_uncvref<_Up, __node_value_type>::value, __container_value_type const&> - __get_value(_Up& __t) { + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI static __container_value_type const& __get_value(_Up& __t) { return __t.__get_value(); } - template - _LIBCPP_INLINE_VISIBILITY - static __enable_if_t<__is_same_uncvref<_Up, __container_value_type>::value, __container_value_type const&> - __get_value(_Up& __t) { + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI static __container_value_type const& __get_value(_Up& __t) { return __t; } - _LIBCPP_INLINE_VISIBILITY - static __container_value_type* __get_ptr(__node_value_type& __n) { - return _VSTD::addressof(__n.__get_value()); - } - _LIBCPP_INLINE_VISIBILITY - static pair __move(__node_value_type& __v) { - return __v.__move(); + _LIBCPP_HIDE_FROM_ABI static __container_value_type* __get_ptr(__node_value_type& __n) { + return std::addressof(__n.__get_value()); } + _LIBCPP_HIDE_FROM_ABI static pair __move(__node_value_type& __v) { return __v.__move(); } }; -template , - bool = _KVTypes::__is_map> +template , bool = _KVTypes::__is_map> struct __hash_map_pointer_types {}; template struct __hash_map_pointer_types<_Tp, _AllocPtr, _KVTypes, true> { - typedef typename _KVTypes::__map_value_type _Mv; - typedef __rebind_pointer_t<_AllocPtr, _Mv> - __map_value_type_pointer; - typedef __rebind_pointer_t<_AllocPtr, const _Mv> - __const_map_value_type_pointer; + typedef typename _KVTypes::__map_value_type _Mv; + typedef __rebind_pointer_t<_AllocPtr, _Mv> __map_value_type_pointer; + typedef __rebind_pointer_t<_AllocPtr, const _Mv> __const_map_value_type_pointer; }; template ::element_type> @@ -225,39 +214,36 @@ struct __hash_node_types; template struct __hash_node_types<_NodePtr, __hash_node<_Tp, _VoidPtr> > - : public __hash_key_value_types<_Tp>, __hash_map_pointer_types<_Tp, _VoidPtr> + : public __hash_key_value_types<_Tp>, + __hash_map_pointer_types<_Tp, _VoidPtr> { - typedef __hash_key_value_types<_Tp> __base; + typedef __hash_key_value_types<_Tp> __base; public: typedef ptrdiff_t difference_type; typedef size_t size_type; - typedef __rebind_pointer_t<_NodePtr, void> __void_pointer; + typedef __rebind_pointer_t<_NodePtr, void> __void_pointer; - typedef typename pointer_traits<_NodePtr>::element_type __node_type; - typedef _NodePtr __node_pointer; + typedef typename pointer_traits<_NodePtr>::element_type __node_type; + typedef _NodePtr __node_pointer; - typedef __hash_node_base<__node_pointer> __node_base_type; - typedef __rebind_pointer_t<_NodePtr, __node_base_type> - __node_base_pointer; + typedef __hash_node_base<__node_pointer> __node_base_type; + typedef __rebind_pointer_t<_NodePtr, __node_base_type> __node_base_pointer; - typedef typename __node_base_type::__next_pointer __next_pointer; + typedef typename __node_base_type::__next_pointer __next_pointer; - typedef _Tp __node_value_type; - typedef __rebind_pointer_t<_VoidPtr, __node_value_type> - __node_value_type_pointer; - typedef __rebind_pointer_t<_VoidPtr, const __node_value_type> - __const_node_value_type_pointer; + typedef _Tp __node_value_type; + typedef __rebind_pointer_t<_VoidPtr, __node_value_type> __node_value_type_pointer; + typedef __rebind_pointer_t<_VoidPtr, const __node_value_type> __const_node_value_type_pointer; private: - static_assert(!is_const<__node_type>::value, - "_NodePtr should never be a pointer to const"); - static_assert((is_same::element_type, void>::value), - "_VoidPtr does not point to unqualified void type"); - static_assert((is_same<__rebind_pointer_t<_VoidPtr, __node_type>, - _NodePtr>::value), "_VoidPtr does not rebind to _NodePtr."); + static_assert(!is_const<__node_type>::value, "_NodePtr should never be a pointer to const"); + static_assert(is_same::element_type, void>::value, + "_VoidPtr does not point to unqualified void type"); + static_assert(is_same<__rebind_pointer_t<_VoidPtr, __node_type>, _NodePtr>::value, + "_VoidPtr does not rebind to _NodePtr."); }; template @@ -271,7 +257,6 @@ struct __hash_node_types_from_iterator<__hash_local_iterator<_NodePtr> > : __has template struct __hash_node_types_from_iterator<__hash_const_local_iterator<_NodePtr> > : __hash_node_types<_NodePtr> {}; - template struct __make_hash_node_types { typedef __hash_node<_NodeValueTp, _VoidPtr> _NodeTp; @@ -280,584 +265,390 @@ struct __make_hash_node_types { }; template -class _LIBCPP_TEMPLATE_VIS __hash_iterator -{ - typedef __hash_node_types<_NodePtr> _NodeTypes; - typedef _NodePtr __node_pointer; - typedef typename _NodeTypes::__next_pointer __next_pointer; +class _LIBCPP_TEMPLATE_VIS __hash_iterator { + typedef __hash_node_types<_NodePtr> _NodeTypes; + typedef _NodePtr __node_pointer; + typedef typename _NodeTypes::__next_pointer __next_pointer; - __next_pointer __node_; + __next_pointer __node_; public: - typedef forward_iterator_tag iterator_category; - typedef typename _NodeTypes::__node_value_type value_type; - typedef typename _NodeTypes::difference_type difference_type; - typedef value_type& reference; - typedef typename _NodeTypes::__node_value_type_pointer pointer; - - _LIBCPP_INLINE_VISIBILITY __hash_iterator() _NOEXCEPT : __node_(nullptr) { - _VSTD::__debug_db_insert_i(this); - } - -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - _LIBCPP_INLINE_VISIBILITY - __hash_iterator(const __hash_iterator& __i) - : __node_(__i.__node_) - { - __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); - } - - _LIBCPP_INLINE_VISIBILITY - ~__hash_iterator() - { - __get_db()->__erase_i(this); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_iterator& operator=(const __hash_iterator& __i) - { - if (this != _VSTD::addressof(__i)) - { - __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); - __node_ = __i.__node_; - } - return *this; - } -#endif // _LIBCPP_ENABLE_DEBUG_MODE - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container iterator"); - return __node_->__upcast()->__value_; - } + typedef forward_iterator_tag iterator_category; + typedef typename _NodeTypes::__node_value_type value_type; + typedef typename _NodeTypes::difference_type difference_type; + typedef value_type& reference; + typedef typename _NodeTypes::__node_value_type_pointer pointer; + + _LIBCPP_HIDE_FROM_ABI __hash_iterator() _NOEXCEPT : __node_(nullptr) {} + + _LIBCPP_HIDE_FROM_ABI reference operator*() const { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to dereference a non-dereferenceable unordered container iterator"); + return __node_->__upcast()->__get_value(); + } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container iterator"); - return pointer_traits::pointer_to(__node_->__upcast()->__value_); - } + _LIBCPP_HIDE_FROM_ABI pointer operator->() const { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to dereference a non-dereferenceable unordered container iterator"); + return pointer_traits::pointer_to(__node_->__upcast()->__get_value()); + } - _LIBCPP_INLINE_VISIBILITY - __hash_iterator& operator++() { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment a non-incrementable unordered container iterator"); - __node_ = __node_->__next_; - return *this; - } + _LIBCPP_HIDE_FROM_ABI __hash_iterator& operator++() { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to increment a non-incrementable unordered container iterator"); + __node_ = __node_->__next_; + return *this; + } - _LIBCPP_INLINE_VISIBILITY - __hash_iterator operator++(int) - { - __hash_iterator __t(*this); - ++(*this); - return __t; - } + _LIBCPP_HIDE_FROM_ABI __hash_iterator operator++(int) { + __hash_iterator __t(*this); + ++(*this); + return __t; + } - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __hash_iterator& __x, const __hash_iterator& __y) - { - return __x.__node_ == __y.__node_; - } - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __hash_iterator& __x, const __hash_iterator& __y) - {return !(__x == __y);} + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const __hash_iterator& __x, const __hash_iterator& __y) { + return __x.__node_ == __y.__node_; + } + friend _LIBCPP_HIDE_FROM_ABI bool operator!=(const __hash_iterator& __x, const __hash_iterator& __y) { + return !(__x == __y); + } private: - _LIBCPP_INLINE_VISIBILITY - explicit __hash_iterator(__next_pointer __node, const void* __c) _NOEXCEPT - : __node_(__node) - { - (void)__c; -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - __get_db()->__insert_ic(this, __c); -#endif - } - template friend class __hash_table; - template friend class _LIBCPP_TEMPLATE_VIS __hash_const_iterator; - template friend class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; - template friend class _LIBCPP_TEMPLATE_VIS unordered_map; - template friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; + _LIBCPP_HIDE_FROM_ABI explicit __hash_iterator(__next_pointer __node) _NOEXCEPT : __node_(__node) {} + + template + friend class __hash_table; + template + friend class _LIBCPP_TEMPLATE_VIS __hash_const_iterator; + template + friend class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; + template + friend class _LIBCPP_TEMPLATE_VIS unordered_map; + template + friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; }; template -class _LIBCPP_TEMPLATE_VIS __hash_const_iterator -{ - static_assert(!is_const::element_type>::value, ""); - typedef __hash_node_types<_NodePtr> _NodeTypes; - typedef _NodePtr __node_pointer; - typedef typename _NodeTypes::__next_pointer __next_pointer; +class _LIBCPP_TEMPLATE_VIS __hash_const_iterator { + static_assert(!is_const::element_type>::value, ""); + typedef __hash_node_types<_NodePtr> _NodeTypes; + typedef _NodePtr __node_pointer; + typedef typename _NodeTypes::__next_pointer __next_pointer; - __next_pointer __node_; + __next_pointer __node_; public: - typedef __hash_iterator<_NodePtr> __non_const_iterator; - - typedef forward_iterator_tag iterator_category; - typedef typename _NodeTypes::__node_value_type value_type; - typedef typename _NodeTypes::difference_type difference_type; - typedef const value_type& reference; - typedef typename _NodeTypes::__const_node_value_type_pointer pointer; + typedef __hash_iterator<_NodePtr> __non_const_iterator; + typedef forward_iterator_tag iterator_category; + typedef typename _NodeTypes::__node_value_type value_type; + typedef typename _NodeTypes::difference_type difference_type; + typedef const value_type& reference; + typedef typename _NodeTypes::__const_node_value_type_pointer pointer; - _LIBCPP_INLINE_VISIBILITY __hash_const_iterator() _NOEXCEPT : __node_(nullptr) { - _VSTD::__debug_db_insert_i(this); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator(const __non_const_iterator& __x) _NOEXCEPT - : __node_(__x.__node_) - { -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - __get_db()->__iterator_copy(this, _VSTD::addressof(__x)); -#endif - } + _LIBCPP_HIDE_FROM_ABI __hash_const_iterator() _NOEXCEPT : __node_(nullptr) {} -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator(const __hash_const_iterator& __i) - : __node_(__i.__node_) - { - __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); - } - - _LIBCPP_INLINE_VISIBILITY - ~__hash_const_iterator() - { - __get_db()->__erase_i(this); - } + _LIBCPP_HIDE_FROM_ABI __hash_const_iterator(const __non_const_iterator& __x) _NOEXCEPT : __node_(__x.__node_) {} - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator& operator=(const __hash_const_iterator& __i) - { - if (this != _VSTD::addressof(__i)) - { - __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); - __node_ = __i.__node_; - } - return *this; - } -#endif // _LIBCPP_ENABLE_DEBUG_MODE - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container const_iterator"); - return __node_->__upcast()->__value_; - } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container const_iterator"); - return pointer_traits::pointer_to(__node_->__upcast()->__value_); - } + _LIBCPP_HIDE_FROM_ABI reference operator*() const { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to dereference a non-dereferenceable unordered container const_iterator"); + return __node_->__upcast()->__get_value(); + } + _LIBCPP_HIDE_FROM_ABI pointer operator->() const { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to dereference a non-dereferenceable unordered container const_iterator"); + return pointer_traits::pointer_to(__node_->__upcast()->__get_value()); + } - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator& operator++() { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment a non-incrementable unordered container const_iterator"); - __node_ = __node_->__next_; - return *this; - } + _LIBCPP_HIDE_FROM_ABI __hash_const_iterator& operator++() { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to increment a non-incrementable unordered container const_iterator"); + __node_ = __node_->__next_; + return *this; + } - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator operator++(int) - { - __hash_const_iterator __t(*this); - ++(*this); - return __t; - } + _LIBCPP_HIDE_FROM_ABI __hash_const_iterator operator++(int) { + __hash_const_iterator __t(*this); + ++(*this); + return __t; + } - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __hash_const_iterator& __x, const __hash_const_iterator& __y) - { - return __x.__node_ == __y.__node_; - } - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __hash_const_iterator& __x, const __hash_const_iterator& __y) - {return !(__x == __y);} + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const __hash_const_iterator& __x, const __hash_const_iterator& __y) { + return __x.__node_ == __y.__node_; + } + friend _LIBCPP_HIDE_FROM_ABI bool operator!=(const __hash_const_iterator& __x, const __hash_const_iterator& __y) { + return !(__x == __y); + } private: - _LIBCPP_INLINE_VISIBILITY - explicit __hash_const_iterator(__next_pointer __node, const void* __c) _NOEXCEPT - : __node_(__node) - { - (void)__c; -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - __get_db()->__insert_ic(this, __c); -#endif - } - template friend class __hash_table; - template friend class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; - template friend class _LIBCPP_TEMPLATE_VIS unordered_map; - template friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; + _LIBCPP_HIDE_FROM_ABI explicit __hash_const_iterator(__next_pointer __node) _NOEXCEPT : __node_(__node) {} + + template + friend class __hash_table; + template + friend class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; + template + friend class _LIBCPP_TEMPLATE_VIS unordered_map; + template + friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; }; template -class _LIBCPP_TEMPLATE_VIS __hash_local_iterator -{ - typedef __hash_node_types<_NodePtr> _NodeTypes; - typedef _NodePtr __node_pointer; - typedef typename _NodeTypes::__next_pointer __next_pointer; +class _LIBCPP_TEMPLATE_VIS __hash_local_iterator { + typedef __hash_node_types<_NodePtr> _NodeTypes; + typedef _NodePtr __node_pointer; + typedef typename _NodeTypes::__next_pointer __next_pointer; - __next_pointer __node_; - size_t __bucket_; - size_t __bucket_count_; + __next_pointer __node_; + size_t __bucket_; + size_t __bucket_count_; public: - typedef forward_iterator_tag iterator_category; - typedef typename _NodeTypes::__node_value_type value_type; - typedef typename _NodeTypes::difference_type difference_type; - typedef value_type& reference; - typedef typename _NodeTypes::__node_value_type_pointer pointer; - - _LIBCPP_INLINE_VISIBILITY __hash_local_iterator() _NOEXCEPT : __node_(nullptr) { - _VSTD::__debug_db_insert_i(this); - } - -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator(const __hash_local_iterator& __i) - : __node_(__i.__node_), - __bucket_(__i.__bucket_), - __bucket_count_(__i.__bucket_count_) - { - __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); - } - - _LIBCPP_INLINE_VISIBILITY - ~__hash_local_iterator() - { - __get_db()->__erase_i(this); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator& operator=(const __hash_local_iterator& __i) - { - if (this != _VSTD::addressof(__i)) - { - __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); - __node_ = __i.__node_; - __bucket_ = __i.__bucket_; - __bucket_count_ = __i.__bucket_count_; - } - return *this; - } -#endif // _LIBCPP_ENABLE_DEBUG_MODE - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container local_iterator"); - return __node_->__upcast()->__value_; - } + typedef forward_iterator_tag iterator_category; + typedef typename _NodeTypes::__node_value_type value_type; + typedef typename _NodeTypes::difference_type difference_type; + typedef value_type& reference; + typedef typename _NodeTypes::__node_value_type_pointer pointer; + + _LIBCPP_HIDE_FROM_ABI __hash_local_iterator() _NOEXCEPT : __node_(nullptr) {} + + _LIBCPP_HIDE_FROM_ABI reference operator*() const { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to dereference a non-dereferenceable unordered container local_iterator"); + return __node_->__upcast()->__get_value(); + } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container local_iterator"); - return pointer_traits::pointer_to(__node_->__upcast()->__value_); - } + _LIBCPP_HIDE_FROM_ABI pointer operator->() const { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to dereference a non-dereferenceable unordered container local_iterator"); + return pointer_traits::pointer_to(__node_->__upcast()->__get_value()); + } - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator& operator++() { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment a non-incrementable unordered container local_iterator"); - __node_ = __node_->__next_; - if (__node_ != nullptr && std::__constrain_hash(__node_->__hash(), __bucket_count_) != __bucket_) - __node_ = nullptr; - return *this; - } + _LIBCPP_HIDE_FROM_ABI __hash_local_iterator& operator++() { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to increment a non-incrementable unordered container local_iterator"); + __node_ = __node_->__next_; + if (__node_ != nullptr && std::__constrain_hash(__node_->__hash(), __bucket_count_) != __bucket_) + __node_ = nullptr; + return *this; + } - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator operator++(int) - { - __hash_local_iterator __t(*this); - ++(*this); - return __t; - } + _LIBCPP_HIDE_FROM_ABI __hash_local_iterator operator++(int) { + __hash_local_iterator __t(*this); + ++(*this); + return __t; + } - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __hash_local_iterator& __x, const __hash_local_iterator& __y) - { - return __x.__node_ == __y.__node_; - } - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __hash_local_iterator& __x, const __hash_local_iterator& __y) - {return !(__x == __y);} + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const __hash_local_iterator& __x, const __hash_local_iterator& __y) { + return __x.__node_ == __y.__node_; + } + friend _LIBCPP_HIDE_FROM_ABI bool operator!=(const __hash_local_iterator& __x, const __hash_local_iterator& __y) { + return !(__x == __y); + } private: - _LIBCPP_INLINE_VISIBILITY - explicit __hash_local_iterator(__next_pointer __node, size_t __bucket, - size_t __bucket_count, const void* __c) _NOEXCEPT - : __node_(__node), - __bucket_(__bucket), - __bucket_count_(__bucket_count) - { - (void)__c; -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - __get_db()->__insert_ic(this, __c); -#endif - if (__node_ != nullptr) - __node_ = __node_->__next_; - } - template friend class __hash_table; - template friend class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator; - template friend class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; + _LIBCPP_HIDE_FROM_ABI explicit __hash_local_iterator( + __next_pointer __node, size_t __bucket, size_t __bucket_count) _NOEXCEPT + : __node_(__node), + __bucket_(__bucket), + __bucket_count_(__bucket_count) { + if (__node_ != nullptr) + __node_ = __node_->__next_; + } + + template + friend class __hash_table; + template + friend class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator; + template + friend class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; }; template -class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator -{ - typedef __hash_node_types<_ConstNodePtr> _NodeTypes; - typedef _ConstNodePtr __node_pointer; - typedef typename _NodeTypes::__next_pointer __next_pointer; - - __next_pointer __node_; - size_t __bucket_; - size_t __bucket_count_; - - typedef pointer_traits<__node_pointer> __pointer_traits; - typedef typename __pointer_traits::element_type __node; - typedef __remove_const_t<__node> __non_const_node; - typedef __rebind_pointer_t<__node_pointer, __non_const_node> - __non_const_node_pointer; -public: - typedef __hash_local_iterator<__non_const_node_pointer> - __non_const_iterator; - - typedef forward_iterator_tag iterator_category; - typedef typename _NodeTypes::__node_value_type value_type; - typedef typename _NodeTypes::difference_type difference_type; - typedef const value_type& reference; - typedef typename _NodeTypes::__const_node_value_type_pointer pointer; +class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator { + typedef __hash_node_types<_ConstNodePtr> _NodeTypes; + typedef _ConstNodePtr __node_pointer; + typedef typename _NodeTypes::__next_pointer __next_pointer; + __next_pointer __node_; + size_t __bucket_; + size_t __bucket_count_; - _LIBCPP_INLINE_VISIBILITY __hash_const_local_iterator() _NOEXCEPT : __node_(nullptr) { - _VSTD::__debug_db_insert_i(this); - } + typedef pointer_traits<__node_pointer> __pointer_traits; + typedef typename __pointer_traits::element_type __node; + typedef __remove_const_t<__node> __non_const_node; + typedef __rebind_pointer_t<__node_pointer, __non_const_node> __non_const_node_pointer; - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator(const __non_const_iterator& __x) _NOEXCEPT - : __node_(__x.__node_), - __bucket_(__x.__bucket_), - __bucket_count_(__x.__bucket_count_) - { -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - __get_db()->__iterator_copy(this, _VSTD::addressof(__x)); -#endif - } +public: + typedef __hash_local_iterator<__non_const_node_pointer> __non_const_iterator; -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator(const __hash_const_local_iterator& __i) - : __node_(__i.__node_), - __bucket_(__i.__bucket_), - __bucket_count_(__i.__bucket_count_) - { - __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); - } + typedef forward_iterator_tag iterator_category; + typedef typename _NodeTypes::__node_value_type value_type; + typedef typename _NodeTypes::difference_type difference_type; + typedef const value_type& reference; + typedef typename _NodeTypes::__const_node_value_type_pointer pointer; - _LIBCPP_INLINE_VISIBILITY - ~__hash_const_local_iterator() - { - __get_db()->__erase_i(this); - } + _LIBCPP_HIDE_FROM_ABI __hash_const_local_iterator() _NOEXCEPT : __node_(nullptr) {} - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator& operator=(const __hash_const_local_iterator& __i) - { - if (this != _VSTD::addressof(__i)) - { - __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); - __node_ = __i.__node_; - __bucket_ = __i.__bucket_; - __bucket_count_ = __i.__bucket_count_; - } - return *this; - } -#endif // _LIBCPP_ENABLE_DEBUG_MODE + _LIBCPP_HIDE_FROM_ABI __hash_const_local_iterator(const __non_const_iterator& __x) _NOEXCEPT + : __node_(__x.__node_), + __bucket_(__x.__bucket_), + __bucket_count_(__x.__bucket_count_) {} - _LIBCPP_INLINE_VISIBILITY - reference operator*() const { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); - return __node_->__upcast()->__value_; - } + _LIBCPP_HIDE_FROM_ABI reference operator*() const { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); + return __node_->__upcast()->__get_value(); + } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); - return pointer_traits::pointer_to(__node_->__upcast()->__value_); - } + _LIBCPP_HIDE_FROM_ABI pointer operator->() const { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); + return pointer_traits::pointer_to(__node_->__upcast()->__get_value()); + } - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator& operator++() { - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment a non-incrementable unordered container const_local_iterator"); - __node_ = __node_->__next_; - if (__node_ != nullptr && std::__constrain_hash(__node_->__hash(), __bucket_count_) != __bucket_) - __node_ = nullptr; - return *this; - } + _LIBCPP_HIDE_FROM_ABI __hash_const_local_iterator& operator++() { + _LIBCPP_ASSERT_NON_NULL( + __node_ != nullptr, "Attempted to increment a non-incrementable unordered container const_local_iterator"); + __node_ = __node_->__next_; + if (__node_ != nullptr && std::__constrain_hash(__node_->__hash(), __bucket_count_) != __bucket_) + __node_ = nullptr; + return *this; + } - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator operator++(int) - { - __hash_const_local_iterator __t(*this); - ++(*this); - return __t; - } + _LIBCPP_HIDE_FROM_ABI __hash_const_local_iterator operator++(int) { + __hash_const_local_iterator __t(*this); + ++(*this); + return __t; + } - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __hash_const_local_iterator& __x, const __hash_const_local_iterator& __y) - { - return __x.__node_ == __y.__node_; - } - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __hash_const_local_iterator& __x, const __hash_const_local_iterator& __y) - {return !(__x == __y);} + friend _LIBCPP_HIDE_FROM_ABI bool + operator==(const __hash_const_local_iterator& __x, const __hash_const_local_iterator& __y) { + return __x.__node_ == __y.__node_; + } + friend _LIBCPP_HIDE_FROM_ABI bool + operator!=(const __hash_const_local_iterator& __x, const __hash_const_local_iterator& __y) { + return !(__x == __y); + } private: - _LIBCPP_INLINE_VISIBILITY - explicit __hash_const_local_iterator(__next_pointer __node_ptr, size_t __bucket, - size_t __bucket_count, const void* __c) _NOEXCEPT - : __node_(__node_ptr), - __bucket_(__bucket), - __bucket_count_(__bucket_count) - { - (void)__c; -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - __get_db()->__insert_ic(this, __c); -#endif - if (__node_ != nullptr) - __node_ = __node_->__next_; - } - template friend class __hash_table; - template friend class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; + _LIBCPP_HIDE_FROM_ABI explicit __hash_const_local_iterator( + __next_pointer __node_ptr, size_t __bucket, size_t __bucket_count) _NOEXCEPT + : __node_(__node_ptr), + __bucket_(__bucket), + __bucket_count_(__bucket_count) { + if (__node_ != nullptr) + __node_ = __node_->__next_; + } + + template + friend class __hash_table; + template + friend class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; }; template -class __bucket_list_deallocator -{ - typedef _Alloc allocator_type; - typedef allocator_traits __alloc_traits; - typedef typename __alloc_traits::size_type size_type; +class __bucket_list_deallocator { + typedef _Alloc allocator_type; + typedef allocator_traits __alloc_traits; + typedef typename __alloc_traits::size_type size_type; + + __compressed_pair __data_; - __compressed_pair __data_; public: - typedef typename __alloc_traits::pointer pointer; - - _LIBCPP_INLINE_VISIBILITY - __bucket_list_deallocator() - _NOEXCEPT_(is_nothrow_default_constructible::value) - : __data_(0, __default_init_tag()) {} - - _LIBCPP_INLINE_VISIBILITY - __bucket_list_deallocator(const allocator_type& __a, size_type __size) - _NOEXCEPT_(is_nothrow_copy_constructible::value) - : __data_(__size, __a) {} - - _LIBCPP_INLINE_VISIBILITY - __bucket_list_deallocator(__bucket_list_deallocator&& __x) - _NOEXCEPT_(is_nothrow_move_constructible::value) - : __data_(_VSTD::move(__x.__data_)) - { - __x.size() = 0; - } + typedef typename __alloc_traits::pointer pointer; - _LIBCPP_INLINE_VISIBILITY - size_type& size() _NOEXCEPT {return __data_.first();} - _LIBCPP_INLINE_VISIBILITY - size_type size() const _NOEXCEPT {return __data_.first();} + _LIBCPP_HIDE_FROM_ABI __bucket_list_deallocator() _NOEXCEPT_(is_nothrow_default_constructible::value) + : __data_(0, __default_init_tag()) {} - _LIBCPP_INLINE_VISIBILITY - allocator_type& __alloc() _NOEXCEPT {return __data_.second();} - _LIBCPP_INLINE_VISIBILITY - const allocator_type& __alloc() const _NOEXCEPT {return __data_.second();} + _LIBCPP_HIDE_FROM_ABI __bucket_list_deallocator(const allocator_type& __a, size_type __size) + _NOEXCEPT_(is_nothrow_copy_constructible::value) + : __data_(__size, __a) {} - _LIBCPP_INLINE_VISIBILITY - void operator()(pointer __p) _NOEXCEPT - { - __alloc_traits::deallocate(__alloc(), __p, size()); - } + _LIBCPP_HIDE_FROM_ABI __bucket_list_deallocator(__bucket_list_deallocator&& __x) + _NOEXCEPT_(is_nothrow_move_constructible::value) + : __data_(std::move(__x.__data_)) { + __x.size() = 0; + } + + _LIBCPP_HIDE_FROM_ABI size_type& size() _NOEXCEPT { return __data_.first(); } + _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __data_.first(); } + + _LIBCPP_HIDE_FROM_ABI allocator_type& __alloc() _NOEXCEPT { return __data_.second(); } + _LIBCPP_HIDE_FROM_ABI const allocator_type& __alloc() const _NOEXCEPT { return __data_.second(); } + + _LIBCPP_HIDE_FROM_ABI void operator()(pointer __p) _NOEXCEPT { __alloc_traits::deallocate(__alloc(), __p, size()); } }; -template class __hash_map_node_destructor; +template +class __hash_map_node_destructor; template -class __hash_node_destructor -{ - typedef _Alloc allocator_type; - typedef allocator_traits __alloc_traits; +class __hash_node_destructor { + typedef _Alloc allocator_type; + typedef allocator_traits __alloc_traits; public: - typedef typename __alloc_traits::pointer pointer; + typedef typename __alloc_traits::pointer pointer; + private: - typedef __hash_node_types _NodeTypes; + typedef __hash_node_types _NodeTypes; - allocator_type& __na_; + allocator_type& __na_; public: - bool __value_constructed; - - __hash_node_destructor(__hash_node_destructor const&) = default; - __hash_node_destructor& operator=(const __hash_node_destructor&) = delete; - - - _LIBCPP_INLINE_VISIBILITY - explicit __hash_node_destructor(allocator_type& __na, - bool __constructed = false) _NOEXCEPT - : __na_(__na), - __value_constructed(__constructed) - {} - - _LIBCPP_INLINE_VISIBILITY - void operator()(pointer __p) _NOEXCEPT - { - if (__value_constructed) - __alloc_traits::destroy(__na_, _NodeTypes::__get_ptr(__p->__value_)); - if (__p) - __alloc_traits::deallocate(__na_, __p, 1); + bool __value_constructed; + + _LIBCPP_HIDE_FROM_ABI __hash_node_destructor(__hash_node_destructor const&) = default; + _LIBCPP_HIDE_FROM_ABI __hash_node_destructor& operator=(const __hash_node_destructor&) = delete; + + _LIBCPP_HIDE_FROM_ABI explicit __hash_node_destructor(allocator_type& __na, bool __constructed = false) _NOEXCEPT + : __na_(__na), + __value_constructed(__constructed) {} + + _LIBCPP_HIDE_FROM_ABI void operator()(pointer __p) _NOEXCEPT { + if (__value_constructed) { + __alloc_traits::destroy(__na_, _NodeTypes::__get_ptr(__p->__get_value())); + std::__destroy_at(std::addressof(*__p)); } + if (__p) + __alloc_traits::deallocate(__na_, __p, 1); + } - template friend class __hash_map_node_destructor; + template + friend class __hash_map_node_destructor; }; -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template struct __generic_container_node_destructor; template -struct __generic_container_node_destructor<__hash_node<_Tp, _VoidPtr>, _Alloc> - : __hash_node_destructor<_Alloc> -{ - using __hash_node_destructor<_Alloc>::__hash_node_destructor; +struct __generic_container_node_destructor<__hash_node<_Tp, _VoidPtr>, _Alloc> : __hash_node_destructor<_Alloc> { + using __hash_node_destructor<_Alloc>::__hash_node_destructor; }; #endif template struct __enforce_unordered_container_requirements { #ifndef _LIBCPP_CXX03_LANG - static_assert(__check_hash_requirements<_Key, _Hash>::value, - "the specified hash does not meet the Hash requirements"); - static_assert(is_copy_constructible<_Equal>::value, - "the specified comparator is required to be copy constructible"); + static_assert(__check_hash_requirements<_Key, _Hash>::value, + "the specified hash does not meet the Hash requirements"); + static_assert(is_copy_constructible<_Equal>::value, "the specified comparator is required to be copy constructible"); #endif - typedef int type; + typedef int type; }; template #ifndef _LIBCPP_CXX03_LANG - _LIBCPP_DIAGNOSE_WARNING(!__invokable<_Equal const&, _Key const&, _Key const&>::value, - "the specified comparator type does not provide a viable const call operator") - _LIBCPP_DIAGNOSE_WARNING(!__invokable<_Hash const&, _Key const&>::value, - "the specified hash functor does not provide a viable const call operator") +_LIBCPP_DIAGNOSE_WARNING(!__invokable<_Equal const&, _Key const&, _Key const&>::value, + "the specified comparator type does not provide a viable const call operator") +_LIBCPP_DIAGNOSE_WARNING(!__invokable<_Hash const&, _Key const&>::value, + "the specified hash functor does not provide a viable const call operator") #endif -typename __enforce_unordered_container_requirements<_Key, _Hash, _Equal>::type -__diagnose_unordered_container_requirements(int); + typename __enforce_unordered_container_requirements<_Key, _Hash, _Equal>::type + __diagnose_unordered_container_requirements(int); // This dummy overload is used so that the compiler won't emit a spurious // "no matching function for call to __diagnose_unordered_xxx" diagnostic @@ -866,912 +657,670 @@ template int __diagnose_unordered_container_requirements(void*); template -class __hash_table -{ +class __hash_table { public: - typedef _Tp value_type; - typedef _Hash hasher; - typedef _Equal key_equal; - typedef _Alloc allocator_type; + typedef _Tp value_type; + typedef _Hash hasher; + typedef _Equal key_equal; + typedef _Alloc allocator_type; private: - typedef allocator_traits __alloc_traits; - typedef typename - __make_hash_node_types::type - _NodeTypes; -public: + typedef allocator_traits __alloc_traits; + typedef typename __make_hash_node_types::type _NodeTypes; - typedef typename _NodeTypes::__node_value_type __node_value_type; - typedef typename _NodeTypes::__container_value_type __container_value_type; - typedef typename _NodeTypes::key_type key_type; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename __alloc_traits::pointer pointer; - typedef typename __alloc_traits::const_pointer const_pointer; +public: + typedef typename _NodeTypes::__node_value_type __node_value_type; + typedef typename _NodeTypes::__container_value_type __container_value_type; + typedef typename _NodeTypes::key_type key_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef typename __alloc_traits::pointer pointer; + typedef typename __alloc_traits::const_pointer const_pointer; #ifndef _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE - typedef typename __alloc_traits::size_type size_type; + typedef typename __alloc_traits::size_type size_type; #else - typedef typename _NodeTypes::size_type size_type; + typedef typename _NodeTypes::size_type size_type; #endif - typedef typename _NodeTypes::difference_type difference_type; + typedef typename _NodeTypes::difference_type difference_type; + public: - // Create __node - - typedef typename _NodeTypes::__node_type __node; - typedef __rebind_alloc<__alloc_traits, __node> __node_allocator; - typedef allocator_traits<__node_allocator> __node_traits; - typedef typename _NodeTypes::__void_pointer __void_pointer; - typedef typename _NodeTypes::__node_pointer __node_pointer; - typedef typename _NodeTypes::__node_pointer __node_const_pointer; - typedef typename _NodeTypes::__node_base_type __first_node; - typedef typename _NodeTypes::__node_base_pointer __node_base_pointer; - typedef typename _NodeTypes::__next_pointer __next_pointer; + // Create __node + + typedef typename _NodeTypes::__node_type __node; + typedef __rebind_alloc<__alloc_traits, __node> __node_allocator; + typedef allocator_traits<__node_allocator> __node_traits; + typedef typename _NodeTypes::__void_pointer __void_pointer; + typedef typename _NodeTypes::__node_pointer __node_pointer; + typedef typename _NodeTypes::__node_pointer __node_const_pointer; + typedef typename _NodeTypes::__node_base_type __first_node; + typedef typename _NodeTypes::__node_base_pointer __node_base_pointer; + typedef typename _NodeTypes::__next_pointer __next_pointer; private: - // check for sane allocator pointer rebinding semantics. Rebinding the - // allocator for a new pointer type should be exactly the same as rebinding - // the pointer using 'pointer_traits'. - static_assert((is_same<__node_pointer, typename __node_traits::pointer>::value), - "Allocator does not rebind pointers in a sane manner."); - typedef __rebind_alloc<__node_traits, __first_node> __node_base_allocator; - typedef allocator_traits<__node_base_allocator> __node_base_traits; - static_assert((is_same<__node_base_pointer, typename __node_base_traits::pointer>::value), - "Allocator does not rebind pointers in a sane manner."); + // check for sane allocator pointer rebinding semantics. Rebinding the + // allocator for a new pointer type should be exactly the same as rebinding + // the pointer using 'pointer_traits'. + static_assert(is_same<__node_pointer, typename __node_traits::pointer>::value, + "Allocator does not rebind pointers in a sane manner."); + typedef __rebind_alloc<__node_traits, __first_node> __node_base_allocator; + typedef allocator_traits<__node_base_allocator> __node_base_traits; + static_assert(is_same<__node_base_pointer, typename __node_base_traits::pointer>::value, + "Allocator does not rebind pointers in a sane manner."); private: + typedef __rebind_alloc<__node_traits, __next_pointer> __pointer_allocator; + typedef __bucket_list_deallocator<__pointer_allocator> __bucket_list_deleter; + typedef unique_ptr<__next_pointer[], __bucket_list_deleter> __bucket_list; + typedef allocator_traits<__pointer_allocator> __pointer_alloc_traits; + typedef typename __bucket_list_deleter::pointer __node_pointer_pointer; + + // --- Member data begin --- + __bucket_list __bucket_list_; + __compressed_pair<__first_node, __node_allocator> __p1_; + __compressed_pair __p2_; + __compressed_pair __p3_; + // --- Member data end --- + + _LIBCPP_HIDE_FROM_ABI size_type& size() _NOEXCEPT { return __p2_.first(); } - typedef __rebind_alloc<__node_traits, __next_pointer> __pointer_allocator; - typedef __bucket_list_deallocator<__pointer_allocator> __bucket_list_deleter; - typedef unique_ptr<__next_pointer[], __bucket_list_deleter> __bucket_list; - typedef allocator_traits<__pointer_allocator> __pointer_alloc_traits; - typedef typename __bucket_list_deleter::pointer __node_pointer_pointer; - - // --- Member data begin --- - __bucket_list __bucket_list_; - __compressed_pair<__first_node, __node_allocator> __p1_; - __compressed_pair __p2_; - __compressed_pair __p3_; - // --- Member data end --- - - _LIBCPP_INLINE_VISIBILITY - size_type& size() _NOEXCEPT {return __p2_.first();} public: - _LIBCPP_INLINE_VISIBILITY - size_type size() const _NOEXCEPT {return __p2_.first();} - - _LIBCPP_INLINE_VISIBILITY - hasher& hash_function() _NOEXCEPT {return __p2_.second();} - _LIBCPP_INLINE_VISIBILITY - const hasher& hash_function() const _NOEXCEPT {return __p2_.second();} - - _LIBCPP_INLINE_VISIBILITY - float& max_load_factor() _NOEXCEPT {return __p3_.first();} - _LIBCPP_INLINE_VISIBILITY - float max_load_factor() const _NOEXCEPT {return __p3_.first();} - - _LIBCPP_INLINE_VISIBILITY - key_equal& key_eq() _NOEXCEPT {return __p3_.second();} - _LIBCPP_INLINE_VISIBILITY - const key_equal& key_eq() const _NOEXCEPT {return __p3_.second();} - - _LIBCPP_INLINE_VISIBILITY - __node_allocator& __node_alloc() _NOEXCEPT {return __p1_.second();} - _LIBCPP_INLINE_VISIBILITY - const __node_allocator& __node_alloc() const _NOEXCEPT - {return __p1_.second();} + _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __p2_.first(); } + + _LIBCPP_HIDE_FROM_ABI hasher& hash_function() _NOEXCEPT { return __p2_.second(); } + _LIBCPP_HIDE_FROM_ABI const hasher& hash_function() const _NOEXCEPT { return __p2_.second(); } + + _LIBCPP_HIDE_FROM_ABI float& max_load_factor() _NOEXCEPT { return __p3_.first(); } + _LIBCPP_HIDE_FROM_ABI float max_load_factor() const _NOEXCEPT { return __p3_.first(); } + + _LIBCPP_HIDE_FROM_ABI key_equal& key_eq() _NOEXCEPT { return __p3_.second(); } + _LIBCPP_HIDE_FROM_ABI const key_equal& key_eq() const _NOEXCEPT { return __p3_.second(); } + + _LIBCPP_HIDE_FROM_ABI __node_allocator& __node_alloc() _NOEXCEPT { return __p1_.second(); } + _LIBCPP_HIDE_FROM_ABI const __node_allocator& __node_alloc() const _NOEXCEPT { return __p1_.second(); } public: - typedef __hash_iterator<__node_pointer> iterator; - typedef __hash_const_iterator<__node_pointer> const_iterator; - typedef __hash_local_iterator<__node_pointer> local_iterator; - typedef __hash_const_local_iterator<__node_pointer> const_local_iterator; - - _LIBCPP_INLINE_VISIBILITY - __hash_table() - _NOEXCEPT_( - is_nothrow_default_constructible<__bucket_list>::value && - is_nothrow_default_constructible<__first_node>::value && - is_nothrow_default_constructible<__node_allocator>::value && - is_nothrow_default_constructible::value && - is_nothrow_default_constructible::value); - _LIBCPP_INLINE_VISIBILITY - __hash_table(const hasher& __hf, const key_equal& __eql); - __hash_table(const hasher& __hf, const key_equal& __eql, - const allocator_type& __a); - explicit __hash_table(const allocator_type& __a); - __hash_table(const __hash_table& __u); - __hash_table(const __hash_table& __u, const allocator_type& __a); - __hash_table(__hash_table&& __u) - _NOEXCEPT_( - is_nothrow_move_constructible<__bucket_list>::value && - is_nothrow_move_constructible<__first_node>::value && - is_nothrow_move_constructible<__node_allocator>::value && - is_nothrow_move_constructible::value && - is_nothrow_move_constructible::value); - __hash_table(__hash_table&& __u, const allocator_type& __a); - ~__hash_table(); - - __hash_table& operator=(const __hash_table& __u); - _LIBCPP_INLINE_VISIBILITY - __hash_table& operator=(__hash_table&& __u) - _NOEXCEPT_( - __node_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable<__node_allocator>::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable::value); - template - void __assign_unique(_InputIterator __first, _InputIterator __last); - template - void __assign_multi(_InputIterator __first, _InputIterator __last); - - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const _NOEXCEPT - { - return _VSTD::min( - __node_traits::max_size(__node_alloc()), - numeric_limits::max() - ); - } + typedef __hash_iterator<__node_pointer> iterator; + typedef __hash_const_iterator<__node_pointer> const_iterator; + typedef __hash_local_iterator<__node_pointer> local_iterator; + typedef __hash_const_local_iterator<__node_pointer> const_local_iterator; + + _LIBCPP_HIDE_FROM_ABI __hash_table() _NOEXCEPT_( + is_nothrow_default_constructible<__bucket_list>::value&& is_nothrow_default_constructible<__first_node>::value&& + is_nothrow_default_constructible<__node_allocator>::value&& is_nothrow_default_constructible::value&& + is_nothrow_default_constructible::value); + _LIBCPP_HIDE_FROM_ABI __hash_table(const hasher& __hf, const key_equal& __eql); + _LIBCPP_HIDE_FROM_ABI __hash_table(const hasher& __hf, const key_equal& __eql, const allocator_type& __a); + _LIBCPP_HIDE_FROM_ABI explicit __hash_table(const allocator_type& __a); + _LIBCPP_HIDE_FROM_ABI __hash_table(const __hash_table& __u); + _LIBCPP_HIDE_FROM_ABI __hash_table(const __hash_table& __u, const allocator_type& __a); + _LIBCPP_HIDE_FROM_ABI __hash_table(__hash_table&& __u) _NOEXCEPT_( + is_nothrow_move_constructible<__bucket_list>::value&& is_nothrow_move_constructible<__first_node>::value&& + is_nothrow_move_constructible<__node_allocator>::value&& is_nothrow_move_constructible::value&& + is_nothrow_move_constructible::value); + _LIBCPP_HIDE_FROM_ABI __hash_table(__hash_table&& __u, const allocator_type& __a); + _LIBCPP_HIDE_FROM_ABI ~__hash_table(); + + _LIBCPP_HIDE_FROM_ABI __hash_table& operator=(const __hash_table& __u); + _LIBCPP_HIDE_FROM_ABI __hash_table& operator=(__hash_table&& __u) + _NOEXCEPT_(__node_traits::propagate_on_container_move_assignment::value&& + is_nothrow_move_assignable<__node_allocator>::value&& is_nothrow_move_assignable::value&& + is_nothrow_move_assignable::value); + template + _LIBCPP_HIDE_FROM_ABI void __assign_unique(_InputIterator __first, _InputIterator __last); + template + _LIBCPP_HIDE_FROM_ABI void __assign_multi(_InputIterator __first, _InputIterator __last); + + _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { + return std::min(__node_traits::max_size(__node_alloc()), numeric_limits::max()); + } private: - _LIBCPP_INLINE_VISIBILITY - __next_pointer __node_insert_multi_prepare(size_t __cp_hash, - value_type& __cp_val); - _LIBCPP_INLINE_VISIBILITY - void __node_insert_multi_perform(__node_pointer __cp, - __next_pointer __pn) _NOEXCEPT; - - _LIBCPP_INLINE_VISIBILITY - __next_pointer __node_insert_unique_prepare(size_t __nd_hash, - value_type& __nd_val); - _LIBCPP_INLINE_VISIBILITY - void __node_insert_unique_perform(__node_pointer __ptr) _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI __next_pointer __node_insert_multi_prepare(size_t __cp_hash, value_type& __cp_val); + _LIBCPP_HIDE_FROM_ABI void __node_insert_multi_perform(__node_pointer __cp, __next_pointer __pn) _NOEXCEPT; + + _LIBCPP_HIDE_FROM_ABI __next_pointer __node_insert_unique_prepare(size_t __nd_hash, value_type& __nd_val); + _LIBCPP_HIDE_FROM_ABI void __node_insert_unique_perform(__node_pointer __ptr) _NOEXCEPT; public: - _LIBCPP_INLINE_VISIBILITY - pair __node_insert_unique(__node_pointer __nd); - _LIBCPP_INLINE_VISIBILITY - iterator __node_insert_multi(__node_pointer __nd); - _LIBCPP_INLINE_VISIBILITY - iterator __node_insert_multi(const_iterator __p, - __node_pointer __nd); - - template - _LIBCPP_INLINE_VISIBILITY - pair __emplace_unique_key_args(_Key const& __k, _Args&&... __args); - - template - _LIBCPP_INLINE_VISIBILITY - pair __emplace_unique_impl(_Args&&... __args); - - template - _LIBCPP_INLINE_VISIBILITY - pair __emplace_unique(_Pp&& __x) { - return __emplace_unique_extract_key(_VSTD::forward<_Pp>(__x), - __can_extract_key<_Pp, key_type>()); - } + _LIBCPP_HIDE_FROM_ABI pair __node_insert_unique(__node_pointer __nd); + _LIBCPP_HIDE_FROM_ABI iterator __node_insert_multi(__node_pointer __nd); + _LIBCPP_HIDE_FROM_ABI iterator __node_insert_multi(const_iterator __p, __node_pointer __nd); - template - _LIBCPP_INLINE_VISIBILITY - __enable_if_t<__can_extract_map_key<_First, key_type, __container_value_type>::value, pair > - __emplace_unique(_First&& __f, _Second&& __s) { - return __emplace_unique_key_args(__f, _VSTD::forward<_First>(__f), - _VSTD::forward<_Second>(__s)); - } + template + _LIBCPP_HIDE_FROM_ABI pair __emplace_unique_key_args(_Key const& __k, _Args&&... __args); - template - _LIBCPP_INLINE_VISIBILITY - pair __emplace_unique(_Args&&... __args) { - return __emplace_unique_impl(_VSTD::forward<_Args>(__args)...); - } + template + _LIBCPP_HIDE_FROM_ABI pair __emplace_unique_impl(_Args&&... __args); - template - _LIBCPP_INLINE_VISIBILITY - pair - __emplace_unique_extract_key(_Pp&& __x, __extract_key_fail_tag) { - return __emplace_unique_impl(_VSTD::forward<_Pp>(__x)); - } - template - _LIBCPP_INLINE_VISIBILITY - pair - __emplace_unique_extract_key(_Pp&& __x, __extract_key_self_tag) { - return __emplace_unique_key_args(__x, _VSTD::forward<_Pp>(__x)); - } - template - _LIBCPP_INLINE_VISIBILITY - pair - __emplace_unique_extract_key(_Pp&& __x, __extract_key_first_tag) { - return __emplace_unique_key_args(__x.first, _VSTD::forward<_Pp>(__x)); - } + template + _LIBCPP_HIDE_FROM_ABI pair __emplace_unique(_Pp&& __x) { + return __emplace_unique_extract_key(std::forward<_Pp>(__x), __can_extract_key<_Pp, key_type>()); + } - template - _LIBCPP_INLINE_VISIBILITY - iterator __emplace_multi(_Args&&... __args); - template - _LIBCPP_INLINE_VISIBILITY - iterator __emplace_hint_multi(const_iterator __p, _Args&&... __args); + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI pair __emplace_unique(_First&& __f, _Second&& __s) { + return __emplace_unique_key_args(__f, std::forward<_First>(__f), std::forward<_Second>(__s)); + } + template + _LIBCPP_HIDE_FROM_ABI pair __emplace_unique(_Args&&... __args) { + return __emplace_unique_impl(std::forward<_Args>(__args)...); + } - _LIBCPP_INLINE_VISIBILITY - pair - __insert_unique(__container_value_type&& __x) { - return __emplace_unique_key_args(_NodeTypes::__get_key(__x), _VSTD::move(__x)); - } + template + _LIBCPP_HIDE_FROM_ABI pair __emplace_unique_extract_key(_Pp&& __x, __extract_key_fail_tag) { + return __emplace_unique_impl(std::forward<_Pp>(__x)); + } + template + _LIBCPP_HIDE_FROM_ABI pair __emplace_unique_extract_key(_Pp&& __x, __extract_key_self_tag) { + return __emplace_unique_key_args(__x, std::forward<_Pp>(__x)); + } + template + _LIBCPP_HIDE_FROM_ABI pair __emplace_unique_extract_key(_Pp&& __x, __extract_key_first_tag) { + return __emplace_unique_key_args(__x.first, std::forward<_Pp>(__x)); + } - template ::value> > - _LIBCPP_INLINE_VISIBILITY - pair __insert_unique(_Pp&& __x) { - return __emplace_unique(_VSTD::forward<_Pp>(__x)); - } + template + _LIBCPP_HIDE_FROM_ABI iterator __emplace_multi(_Args&&... __args); + template + _LIBCPP_HIDE_FROM_ABI iterator __emplace_hint_multi(const_iterator __p, _Args&&... __args); - template - _LIBCPP_INLINE_VISIBILITY - iterator __insert_multi(_Pp&& __x) { - return __emplace_multi(_VSTD::forward<_Pp>(__x)); - } + _LIBCPP_HIDE_FROM_ABI pair __insert_unique(__container_value_type&& __x) { + return __emplace_unique_key_args(_NodeTypes::__get_key(__x), std::move(__x)); + } - template - _LIBCPP_INLINE_VISIBILITY - iterator __insert_multi(const_iterator __p, _Pp&& __x) { - return __emplace_hint_multi(__p, _VSTD::forward<_Pp>(__x)); - } + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI pair __insert_unique(_Pp&& __x) { + return __emplace_unique(std::forward<_Pp>(__x)); + } - _LIBCPP_INLINE_VISIBILITY - pair __insert_unique(const __container_value_type& __x) { - return __emplace_unique_key_args(_NodeTypes::__get_key(__x), __x); - } + template + _LIBCPP_HIDE_FROM_ABI iterator __insert_multi(_Pp&& __x) { + return __emplace_multi(std::forward<_Pp>(__x)); + } -#if _LIBCPP_STD_VER > 14 - template - _LIBCPP_INLINE_VISIBILITY - _InsertReturnType __node_handle_insert_unique(_NodeHandle&& __nh); - template - _LIBCPP_INLINE_VISIBILITY - iterator __node_handle_insert_unique(const_iterator __hint, - _NodeHandle&& __nh); - template - _LIBCPP_INLINE_VISIBILITY - void __node_handle_merge_unique(_Table& __source); - - template - _LIBCPP_INLINE_VISIBILITY - iterator __node_handle_insert_multi(_NodeHandle&& __nh); - template - _LIBCPP_INLINE_VISIBILITY - iterator __node_handle_insert_multi(const_iterator __hint, _NodeHandle&& __nh); - template - _LIBCPP_INLINE_VISIBILITY - void __node_handle_merge_multi(_Table& __source); - - template - _LIBCPP_INLINE_VISIBILITY - _NodeHandle __node_handle_extract(key_type const& __key); - template - _LIBCPP_INLINE_VISIBILITY - _NodeHandle __node_handle_extract(const_iterator __it); + template + _LIBCPP_HIDE_FROM_ABI iterator __insert_multi(const_iterator __p, _Pp&& __x) { + return __emplace_hint_multi(__p, std::forward<_Pp>(__x)); + } + + _LIBCPP_HIDE_FROM_ABI pair __insert_unique(const __container_value_type& __x) { + return __emplace_unique_key_args(_NodeTypes::__get_key(__x), __x); + } + +#if _LIBCPP_STD_VER >= 17 + template + _LIBCPP_HIDE_FROM_ABI _InsertReturnType __node_handle_insert_unique(_NodeHandle&& __nh); + template + _LIBCPP_HIDE_FROM_ABI iterator __node_handle_insert_unique(const_iterator __hint, _NodeHandle&& __nh); + template + _LIBCPP_HIDE_FROM_ABI void __node_handle_merge_unique(_Table& __source); + + template + _LIBCPP_HIDE_FROM_ABI iterator __node_handle_insert_multi(_NodeHandle&& __nh); + template + _LIBCPP_HIDE_FROM_ABI iterator __node_handle_insert_multi(const_iterator __hint, _NodeHandle&& __nh); + template + _LIBCPP_HIDE_FROM_ABI void __node_handle_merge_multi(_Table& __source); + + template + _LIBCPP_HIDE_FROM_ABI _NodeHandle __node_handle_extract(key_type const& __key); + template + _LIBCPP_HIDE_FROM_ABI _NodeHandle __node_handle_extract(const_iterator __it); #endif - void clear() _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY void __rehash_unique(size_type __n) { __rehash(__n); } - _LIBCPP_INLINE_VISIBILITY void __rehash_multi(size_type __n) { __rehash(__n); } - _LIBCPP_INLINE_VISIBILITY void __reserve_unique(size_type __n) - { - __rehash_unique(static_cast(std::ceil(__n / max_load_factor()))); - } - _LIBCPP_INLINE_VISIBILITY void __reserve_multi(size_type __n) - { - __rehash_multi(static_cast(std::ceil(__n / max_load_factor()))); - } + _LIBCPP_HIDE_FROM_ABI void clear() _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI void __rehash_unique(size_type __n) { __rehash(__n); } + _LIBCPP_HIDE_FROM_ABI void __rehash_multi(size_type __n) { __rehash(__n); } + _LIBCPP_HIDE_FROM_ABI void __reserve_unique(size_type __n) { + __rehash_unique(static_cast(std::ceil(__n / max_load_factor()))); + } + _LIBCPP_HIDE_FROM_ABI void __reserve_multi(size_type __n) { + __rehash_multi(static_cast(std::ceil(__n / max_load_factor()))); + } - _LIBCPP_INLINE_VISIBILITY - size_type bucket_count() const _NOEXCEPT - { - return __bucket_list_.get_deleter().size(); - } + _LIBCPP_HIDE_FROM_ABI size_type bucket_count() const _NOEXCEPT { return __bucket_list_.get_deleter().size(); } - _LIBCPP_INLINE_VISIBILITY - iterator begin() _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY - iterator end() _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const _NOEXCEPT; - - template - _LIBCPP_INLINE_VISIBILITY - size_type bucket(const _Key& __k) const - { - _LIBCPP_ASSERT(bucket_count() > 0, - "unordered container::bucket(key) called when bucket_count() == 0"); - return std::__constrain_hash(hash_function()(__k), bucket_count()); - } + _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT; + + template + _LIBCPP_HIDE_FROM_ABI size_type bucket(const _Key& __k) const { + _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN( + bucket_count() > 0, "unordered container::bucket(key) called when bucket_count() == 0"); + return std::__constrain_hash(hash_function()(__k), bucket_count()); + } - template - iterator find(const _Key& __x); - template - const_iterator find(const _Key& __x) const; - - typedef __hash_node_destructor<__node_allocator> _Dp; - typedef unique_ptr<__node, _Dp> __node_holder; - - iterator erase(const_iterator __p); - iterator erase(const_iterator __first, const_iterator __last); - template - size_type __erase_unique(const _Key& __k); - template - size_type __erase_multi(const _Key& __k); - __node_holder remove(const_iterator __p) _NOEXCEPT; - - template - _LIBCPP_INLINE_VISIBILITY - size_type __count_unique(const _Key& __k) const; - template - size_type __count_multi(const _Key& __k) const; - - template - pair - __equal_range_unique(const _Key& __k); - template - pair - __equal_range_unique(const _Key& __k) const; - - template - pair - __equal_range_multi(const _Key& __k); - template - pair - __equal_range_multi(const _Key& __k) const; - - void swap(__hash_table& __u) + template + _LIBCPP_HIDE_FROM_ABI iterator find(const _Key& __x); + template + _LIBCPP_HIDE_FROM_ABI const_iterator find(const _Key& __x) const; + + typedef __hash_node_destructor<__node_allocator> _Dp; + typedef unique_ptr<__node, _Dp> __node_holder; + + _LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __p); + _LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __first, const_iterator __last); + template + _LIBCPP_HIDE_FROM_ABI size_type __erase_unique(const _Key& __k); + template + _LIBCPP_HIDE_FROM_ABI size_type __erase_multi(const _Key& __k); + _LIBCPP_HIDE_FROM_ABI __node_holder remove(const_iterator __p) _NOEXCEPT; + + template + _LIBCPP_HIDE_FROM_ABI size_type __count_unique(const _Key& __k) const; + template + _LIBCPP_HIDE_FROM_ABI size_type __count_multi(const _Key& __k) const; + + template + _LIBCPP_HIDE_FROM_ABI pair __equal_range_unique(const _Key& __k); + template + _LIBCPP_HIDE_FROM_ABI pair __equal_range_unique(const _Key& __k) const; + + template + _LIBCPP_HIDE_FROM_ABI pair __equal_range_multi(const _Key& __k); + template + _LIBCPP_HIDE_FROM_ABI pair __equal_range_multi(const _Key& __k) const; + + _LIBCPP_HIDE_FROM_ABI void swap(__hash_table& __u) #if _LIBCPP_STD_VER <= 11 - _NOEXCEPT_( - __is_nothrow_swappable::value && __is_nothrow_swappable::value - && (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value - || __is_nothrow_swappable<__pointer_allocator>::value) - && (!__node_traits::propagate_on_container_swap::value - || __is_nothrow_swappable<__node_allocator>::value) - ); + _NOEXCEPT_(__is_nothrow_swappable_v&& __is_nothrow_swappable_v && + (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value || + __is_nothrow_swappable_v<__pointer_allocator>) && + (!__node_traits::propagate_on_container_swap::value || __is_nothrow_swappable_v<__node_allocator>)); #else - _NOEXCEPT_(__is_nothrow_swappable::value && __is_nothrow_swappable::value); + _NOEXCEPT_(__is_nothrow_swappable_v&& __is_nothrow_swappable_v); #endif - _LIBCPP_INLINE_VISIBILITY - size_type max_bucket_count() const _NOEXCEPT - {return max_size(); } - size_type bucket_size(size_type __n) const; - _LIBCPP_INLINE_VISIBILITY float load_factor() const _NOEXCEPT - { - size_type __bc = bucket_count(); - return __bc != 0 ? (float)size() / __bc : 0.f; - } - _LIBCPP_INLINE_VISIBILITY void max_load_factor(float __mlf) _NOEXCEPT - { - _LIBCPP_ASSERT(__mlf > 0, - "unordered container::max_load_factor(lf) called with lf <= 0"); - max_load_factor() = _VSTD::max(__mlf, load_factor()); - } + _LIBCPP_HIDE_FROM_ABI size_type max_bucket_count() const _NOEXCEPT { return max_size(); } + _LIBCPP_HIDE_FROM_ABI size_type bucket_size(size_type __n) const; + _LIBCPP_HIDE_FROM_ABI float load_factor() const _NOEXCEPT { + size_type __bc = bucket_count(); + return __bc != 0 ? (float)size() / __bc : 0.f; + } + _LIBCPP_HIDE_FROM_ABI void max_load_factor(float __mlf) _NOEXCEPT { + // While passing a non-positive load factor is undefined behavior, in practice the result will be benign (the + // call will be equivalent to `max_load_factor(load_factor())`, which is also the case for passing a valid value + // less than the current `load_factor`). + _LIBCPP_ASSERT_PEDANTIC(__mlf > 0, "unordered container::max_load_factor(lf) called with lf <= 0"); + max_load_factor() = std::max(__mlf, load_factor()); + } - _LIBCPP_INLINE_VISIBILITY - local_iterator - begin(size_type __n) - { - _LIBCPP_ASSERT(__n < bucket_count(), - "unordered container::begin(n) called with n >= bucket_count()"); - return local_iterator(__bucket_list_[__n], __n, bucket_count(), this); - } + _LIBCPP_HIDE_FROM_ABI local_iterator begin(size_type __n) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n < bucket_count(), "unordered container::begin(n) called with n >= bucket_count()"); + return local_iterator(__bucket_list_[__n], __n, bucket_count()); + } - _LIBCPP_INLINE_VISIBILITY - local_iterator - end(size_type __n) - { - _LIBCPP_ASSERT(__n < bucket_count(), - "unordered container::end(n) called with n >= bucket_count()"); - return local_iterator(nullptr, __n, bucket_count(), this); - } + _LIBCPP_HIDE_FROM_ABI local_iterator end(size_type __n) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n < bucket_count(), "unordered container::end(n) called with n >= bucket_count()"); + return local_iterator(nullptr, __n, bucket_count()); + } - _LIBCPP_INLINE_VISIBILITY - const_local_iterator - cbegin(size_type __n) const - { - _LIBCPP_ASSERT(__n < bucket_count(), - "unordered container::cbegin(n) called with n >= bucket_count()"); - return const_local_iterator(__bucket_list_[__n], __n, bucket_count(), this); - } + _LIBCPP_HIDE_FROM_ABI const_local_iterator cbegin(size_type __n) const { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n < bucket_count(), "unordered container::cbegin(n) called with n >= bucket_count()"); + return const_local_iterator(__bucket_list_[__n], __n, bucket_count()); + } - _LIBCPP_INLINE_VISIBILITY - const_local_iterator - cend(size_type __n) const - { - _LIBCPP_ASSERT(__n < bucket_count(), - "unordered container::cend(n) called with n >= bucket_count()"); - return const_local_iterator(nullptr, __n, bucket_count(), this); - } + _LIBCPP_HIDE_FROM_ABI const_local_iterator cend(size_type __n) const { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n < bucket_count(), "unordered container::cend(n) called with n >= bucket_count()"); + return const_local_iterator(nullptr, __n, bucket_count()); + } -#ifdef _LIBCPP_ENABLE_DEBUG_MODE +private: + template + _LIBCPP_HIDE_FROM_ABI void __rehash(size_type __n); + template + _LIBCPP_HIDE_FROM_ABI void __do_rehash(size_type __n); - bool __dereferenceable(const const_iterator* __i) const; - bool __decrementable(const const_iterator* __i) const; - bool __addable(const const_iterator* __i, ptrdiff_t __n) const; - bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const; + template + _LIBCPP_HIDE_FROM_ABI __node_holder __construct_node(_Args&&... __args); -#endif // _LIBCPP_ENABLE_DEBUG_MODE + template + _LIBCPP_HIDE_FROM_ABI __node_holder __construct_node_hash(size_t __hash, _First&& __f, _Rest&&... __rest); -private: - template void __rehash(size_type __n); - template void __do_rehash(size_type __n); - - template - __node_holder __construct_node(_Args&& ...__args); - - template - __node_holder __construct_node_hash(size_t __hash, _First&& __f, _Rest&&... __rest); - - - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __hash_table& __u) - {__copy_assign_alloc(__u, integral_constant());} - void __copy_assign_alloc(const __hash_table& __u, true_type); - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __hash_table&, false_type) {} - - void __move_assign(__hash_table& __u, false_type); - void __move_assign(__hash_table& __u, true_type) - _NOEXCEPT_( - is_nothrow_move_assignable<__node_allocator>::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable::value); - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__hash_table& __u) - _NOEXCEPT_( - !__node_traits::propagate_on_container_move_assignment::value || - (is_nothrow_move_assignable<__pointer_allocator>::value && - is_nothrow_move_assignable<__node_allocator>::value)) - {__move_assign_alloc(__u, integral_constant());} - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__hash_table& __u, true_type) - _NOEXCEPT_( - is_nothrow_move_assignable<__pointer_allocator>::value && - is_nothrow_move_assignable<__node_allocator>::value) - { - __bucket_list_.get_deleter().__alloc() = - _VSTD::move(__u.__bucket_list_.get_deleter().__alloc()); - __node_alloc() = _VSTD::move(__u.__node_alloc()); - } - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__hash_table&, false_type) _NOEXCEPT {} + _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __hash_table& __u) { + __copy_assign_alloc(__u, integral_constant()); + } + _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __hash_table& __u, true_type); + _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __hash_table&, false_type) {} + + _LIBCPP_HIDE_FROM_ABI void __move_assign(__hash_table& __u, false_type); + _LIBCPP_HIDE_FROM_ABI void __move_assign(__hash_table& __u, true_type) + _NOEXCEPT_(is_nothrow_move_assignable<__node_allocator>::value&& is_nothrow_move_assignable::value&& + is_nothrow_move_assignable::value); + _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(__hash_table& __u) _NOEXCEPT_( + !__node_traits::propagate_on_container_move_assignment::value || + (is_nothrow_move_assignable<__pointer_allocator>::value && is_nothrow_move_assignable<__node_allocator>::value)) { + __move_assign_alloc(__u, integral_constant()); + } + _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(__hash_table& __u, true_type) _NOEXCEPT_( + is_nothrow_move_assignable<__pointer_allocator>::value&& is_nothrow_move_assignable<__node_allocator>::value) { + __bucket_list_.get_deleter().__alloc() = std::move(__u.__bucket_list_.get_deleter().__alloc()); + __node_alloc() = std::move(__u.__node_alloc()); + } + _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(__hash_table&, false_type) _NOEXCEPT {} - void __deallocate_node(__next_pointer __np) _NOEXCEPT; - __next_pointer __detach() _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI void __deallocate_node(__next_pointer __np) _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI __next_pointer __detach() _NOEXCEPT; - template friend class _LIBCPP_TEMPLATE_VIS unordered_map; - template friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; + template + friend class _LIBCPP_TEMPLATE_VIS unordered_map; + template + friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; }; template -inline -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table() - _NOEXCEPT_( - is_nothrow_default_constructible<__bucket_list>::value && - is_nothrow_default_constructible<__first_node>::value && - is_nothrow_default_constructible<__node_allocator>::value && - is_nothrow_default_constructible::value && - is_nothrow_default_constructible::value) - : __p2_(0, __default_init_tag()), - __p3_(1.0f, __default_init_tag()) -{ -} +inline __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table() _NOEXCEPT_( + is_nothrow_default_constructible<__bucket_list>::value&& is_nothrow_default_constructible<__first_node>::value&& + is_nothrow_default_constructible<__node_allocator>::value&& is_nothrow_default_constructible::value&& + is_nothrow_default_constructible::value) + : __p2_(0, __default_init_tag()), __p3_(1.0f, __default_init_tag()) {} template -inline -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const hasher& __hf, - const key_equal& __eql) - : __bucket_list_(nullptr, __bucket_list_deleter()), - __p1_(), - __p2_(0, __hf), - __p3_(1.0f, __eql) -{ -} +inline __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const hasher& __hf, const key_equal& __eql) + : __bucket_list_(nullptr, __bucket_list_deleter()), __p1_(), __p2_(0, __hf), __p3_(1.0f, __eql) {} template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const hasher& __hf, - const key_equal& __eql, - const allocator_type& __a) +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table( + const hasher& __hf, const key_equal& __eql, const allocator_type& __a) : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), __p1_(__default_init_tag(), __node_allocator(__a)), __p2_(0, __hf), - __p3_(1.0f, __eql) -{ -} + __p3_(1.0f, __eql) {} template __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const allocator_type& __a) : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), __p1_(__default_init_tag(), __node_allocator(__a)), __p2_(0, __default_init_tag()), - __p3_(1.0f, __default_init_tag()) -{ -} + __p3_(1.0f, __default_init_tag()) {} template __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const __hash_table& __u) : __bucket_list_(nullptr, - __bucket_list_deleter(allocator_traits<__pointer_allocator>:: - select_on_container_copy_construction( - __u.__bucket_list_.get_deleter().__alloc()), 0)), - __p1_(__default_init_tag(), allocator_traits<__node_allocator>:: - select_on_container_copy_construction(__u.__node_alloc())), + __bucket_list_deleter(allocator_traits<__pointer_allocator>::select_on_container_copy_construction( + __u.__bucket_list_.get_deleter().__alloc()), + 0)), + __p1_(__default_init_tag(), + allocator_traits<__node_allocator>::select_on_container_copy_construction(__u.__node_alloc())), __p2_(0, __u.hash_function()), - __p3_(__u.__p3_) -{ -} + __p3_(__u.__p3_) {} template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const __hash_table& __u, - const allocator_type& __a) +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const __hash_table& __u, const allocator_type& __a) : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), __p1_(__default_init_tag(), __node_allocator(__a)), __p2_(0, __u.hash_function()), - __p3_(__u.__p3_) -{ -} + __p3_(__u.__p3_) {} template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u) - _NOEXCEPT_( - is_nothrow_move_constructible<__bucket_list>::value && - is_nothrow_move_constructible<__first_node>::value && - is_nothrow_move_constructible<__node_allocator>::value && - is_nothrow_move_constructible::value && +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u) _NOEXCEPT_( + is_nothrow_move_constructible<__bucket_list>::value&& is_nothrow_move_constructible<__first_node>::value&& + is_nothrow_move_constructible<__node_allocator>::value&& is_nothrow_move_constructible::value&& is_nothrow_move_constructible::value) - : __bucket_list_(_VSTD::move(__u.__bucket_list_)), - __p1_(_VSTD::move(__u.__p1_)), - __p2_(_VSTD::move(__u.__p2_)), - __p3_(_VSTD::move(__u.__p3_)) -{ - if (size() > 0) - { - __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = - __p1_.first().__ptr(); - __u.__p1_.first().__next_ = nullptr; - __u.size() = 0; - } + : __bucket_list_(std::move(__u.__bucket_list_)), + __p1_(std::move(__u.__p1_)), + __p2_(std::move(__u.__p2_)), + __p3_(std::move(__u.__p3_)) { + if (size() > 0) { + __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = __p1_.first().__ptr(); + __u.__p1_.first().__next_ = nullptr; + __u.size() = 0; + } } template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u, - const allocator_type& __a) +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u, const allocator_type& __a) : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), __p1_(__default_init_tag(), __node_allocator(__a)), - __p2_(0, _VSTD::move(__u.hash_function())), - __p3_(_VSTD::move(__u.__p3_)) -{ - if (__a == allocator_type(__u.__node_alloc())) - { - __bucket_list_.reset(__u.__bucket_list_.release()); - __bucket_list_.get_deleter().size() = __u.__bucket_list_.get_deleter().size(); - __u.__bucket_list_.get_deleter().size() = 0; - if (__u.size() > 0) - { - __p1_.first().__next_ = __u.__p1_.first().__next_; - __u.__p1_.first().__next_ = nullptr; - __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = - __p1_.first().__ptr(); - size() = __u.size(); - __u.size() = 0; - } + __p2_(0, std::move(__u.hash_function())), + __p3_(std::move(__u.__p3_)) { + if (__a == allocator_type(__u.__node_alloc())) { + __bucket_list_.reset(__u.__bucket_list_.release()); + __bucket_list_.get_deleter().size() = __u.__bucket_list_.get_deleter().size(); + __u.__bucket_list_.get_deleter().size() = 0; + if (__u.size() > 0) { + __p1_.first().__next_ = __u.__p1_.first().__next_; + __u.__p1_.first().__next_ = nullptr; + __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = __p1_.first().__ptr(); + size() = __u.size(); + __u.size() = 0; } + } } template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::~__hash_table() -{ +__hash_table<_Tp, _Hash, _Equal, _Alloc>::~__hash_table() { #if defined(_LIBCPP_CXX03_LANG) - static_assert((is_copy_constructible::value), - "Predicate must be copy-constructible."); - static_assert((is_copy_constructible::value), - "Hasher must be copy-constructible."); + static_assert(is_copy_constructible::value, "Predicate must be copy-constructible."); + static_assert(is_copy_constructible::value, "Hasher must be copy-constructible."); #endif - __deallocate_node(__p1_.first().__next_); - std::__debug_db_erase_c(this); + __deallocate_node(__p1_.first().__next_); } template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__copy_assign_alloc( - const __hash_table& __u, true_type) -{ - if (__node_alloc() != __u.__node_alloc()) - { - clear(); - __bucket_list_.reset(); - __bucket_list_.get_deleter().size() = 0; - } - __bucket_list_.get_deleter().__alloc() = __u.__bucket_list_.get_deleter().__alloc(); - __node_alloc() = __u.__node_alloc(); +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__copy_assign_alloc(const __hash_table& __u, true_type) { + if (__node_alloc() != __u.__node_alloc()) { + clear(); + __bucket_list_.reset(); + __bucket_list_.get_deleter().size() = 0; + } + __bucket_list_.get_deleter().__alloc() = __u.__bucket_list_.get_deleter().__alloc(); + __node_alloc() = __u.__node_alloc(); } template -__hash_table<_Tp, _Hash, _Equal, _Alloc>& -__hash_table<_Tp, _Hash, _Equal, _Alloc>::operator=(const __hash_table& __u) -{ - if (this != _VSTD::addressof(__u)) - { - __copy_assign_alloc(__u); - hash_function() = __u.hash_function(); - key_eq() = __u.key_eq(); - max_load_factor() = __u.max_load_factor(); - __assign_multi(__u.begin(), __u.end()); - } - return *this; +__hash_table<_Tp, _Hash, _Equal, _Alloc>& __hash_table<_Tp, _Hash, _Equal, _Alloc>::operator=(const __hash_table& __u) { + if (this != std::addressof(__u)) { + __copy_assign_alloc(__u); + hash_function() = __u.hash_function(); + key_eq() = __u.key_eq(); + max_load_factor() = __u.max_load_factor(); + __assign_multi(__u.begin(), __u.end()); + } + return *this; } template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__deallocate_node(__next_pointer __np) - _NOEXCEPT -{ - __node_allocator& __na = __node_alloc(); - while (__np != nullptr) - { - __next_pointer __next = __np->__next_; -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - __c_node* __c = __get_db()->__find_c_and_lock(this); - for (__i_node** __p = __c->end_; __p != __c->beg_; ) - { - --__p; - iterator* __i = static_cast((*__p)->__i_); - if (__i->__node_ == __np) - { - (*__p)->__c_ = nullptr; - if (--__c->end_ != __p) - _VSTD::memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); - } - } - __get_db()->unlock(); -#endif - __node_pointer __real_np = __np->__upcast(); - __node_traits::destroy(__na, _NodeTypes::__get_ptr(__real_np->__value_)); - __node_traits::deallocate(__na, __real_np, 1); - __np = __next; - } +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__deallocate_node(__next_pointer __np) _NOEXCEPT { + __node_allocator& __na = __node_alloc(); + while (__np != nullptr) { + __next_pointer __next = __np->__next_; + __node_pointer __real_np = __np->__upcast(); + __node_traits::destroy(__na, _NodeTypes::__get_ptr(__real_np->__get_value())); + std::__destroy_at(std::addressof(*__real_np)); + __node_traits::deallocate(__na, __real_np, 1); + __np = __next; + } } template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__next_pointer -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__detach() _NOEXCEPT -{ - size_type __bc = bucket_count(); - for (size_type __i = 0; __i < __bc; ++__i) - __bucket_list_[__i] = nullptr; - size() = 0; - __next_pointer __cache = __p1_.first().__next_; - __p1_.first().__next_ = nullptr; - return __cache; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__detach() _NOEXCEPT { + size_type __bc = bucket_count(); + for (size_type __i = 0; __i < __bc; ++__i) + __bucket_list_[__i] = nullptr; + size() = 0; + __next_pointer __cache = __p1_.first().__next_; + __p1_.first().__next_ = nullptr; + return __cache; +} + +template +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign(__hash_table& __u, true_type) + _NOEXCEPT_(is_nothrow_move_assignable<__node_allocator>::value&& is_nothrow_move_assignable::value&& + is_nothrow_move_assignable::value) { + clear(); + __bucket_list_.reset(__u.__bucket_list_.release()); + __bucket_list_.get_deleter().size() = __u.__bucket_list_.get_deleter().size(); + __u.__bucket_list_.get_deleter().size() = 0; + __move_assign_alloc(__u); + size() = __u.size(); + hash_function() = std::move(__u.hash_function()); + max_load_factor() = __u.max_load_factor(); + key_eq() = std::move(__u.key_eq()); + __p1_.first().__next_ = __u.__p1_.first().__next_; + if (size() > 0) { + __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = __p1_.first().__ptr(); + __u.__p1_.first().__next_ = nullptr; + __u.size() = 0; + } } template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign( - __hash_table& __u, true_type) - _NOEXCEPT_( - is_nothrow_move_assignable<__node_allocator>::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable::value) -{ - clear(); - __bucket_list_.reset(__u.__bucket_list_.release()); - __bucket_list_.get_deleter().size() = __u.__bucket_list_.get_deleter().size(); - __u.__bucket_list_.get_deleter().size() = 0; - __move_assign_alloc(__u); - size() = __u.size(); - hash_function() = _VSTD::move(__u.hash_function()); +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign(__hash_table& __u, false_type) { + if (__node_alloc() == __u.__node_alloc()) + __move_assign(__u, true_type()); + else { + hash_function() = std::move(__u.hash_function()); + key_eq() = std::move(__u.key_eq()); max_load_factor() = __u.max_load_factor(); - key_eq() = _VSTD::move(__u.key_eq()); - __p1_.first().__next_ = __u.__p1_.first().__next_; - if (size() > 0) - { - __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = - __p1_.first().__ptr(); - __u.__p1_.first().__next_ = nullptr; - __u.size() = 0; - } - std::__debug_db_swap(this, std::addressof(__u)); -} - -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign( - __hash_table& __u, false_type) -{ - if (__node_alloc() == __u.__node_alloc()) - __move_assign(__u, true_type()); - else - { - hash_function() = _VSTD::move(__u.hash_function()); - key_eq() = _VSTD::move(__u.key_eq()); - max_load_factor() = __u.max_load_factor(); - if (bucket_count() != 0) - { - __next_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - const_iterator __i = __u.begin(); - while (__cache != nullptr && __u.size() != 0) - { - __cache->__upcast()->__value_ = - _VSTD::move(__u.remove(__i++)->__value_); - __next_pointer __next = __cache->__next_; - __node_insert_multi(__cache->__upcast()); - __cache = __next; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __deallocate_node(__cache); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __deallocate_node(__cache); - } + if (bucket_count() != 0) { + __next_pointer __cache = __detach(); +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS + try { +#endif // _LIBCPP_HAS_NO_EXCEPTIONS const_iterator __i = __u.begin(); - while (__u.size() != 0) - { - __node_holder __h = __construct_node(_NodeTypes::__move(__u.remove(__i++)->__value_)); - __node_insert_multi(__h.get()); - __h.release(); + while (__cache != nullptr && __u.size() != 0) { + __cache->__upcast()->__get_value() = std::move(__u.remove(__i++)->__get_value()); + __next_pointer __next = __cache->__next_; + __node_insert_multi(__cache->__upcast()); + __cache = __next; } +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS + } catch (...) { + __deallocate_node(__cache); + throw; + } +#endif // _LIBCPP_HAS_NO_EXCEPTIONS + __deallocate_node(__cache); + } + const_iterator __i = __u.begin(); + while (__u.size() != 0) { + __node_holder __h = __construct_node(_NodeTypes::__move(__u.remove(__i++)->__get_value())); + __node_insert_multi(__h.get()); + __h.release(); } + } } template -inline -__hash_table<_Tp, _Hash, _Equal, _Alloc>& -__hash_table<_Tp, _Hash, _Equal, _Alloc>::operator=(__hash_table&& __u) - _NOEXCEPT_( - __node_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable<__node_allocator>::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable::value) -{ - __move_assign(__u, integral_constant()); - return *this; +inline __hash_table<_Tp, _Hash, _Equal, _Alloc>& +__hash_table<_Tp, _Hash, _Equal, _Alloc>::operator=(__hash_table&& __u) _NOEXCEPT_( + __node_traits::propagate_on_container_move_assignment::value&& is_nothrow_move_assignable<__node_allocator>::value&& + is_nothrow_move_assignable::value&& is_nothrow_move_assignable::value) { + __move_assign(__u, integral_constant()); + return *this; } template template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_unique(_InputIterator __first, - _InputIterator __last) -{ - typedef iterator_traits<_InputIterator> _ITraits; - typedef typename _ITraits::value_type _ItValueType; - static_assert((is_same<_ItValueType, __container_value_type>::value), - "__assign_unique may only be called with the containers value type"); - - if (bucket_count() != 0) - { - __next_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (; __cache != nullptr && __first != __last; ++__first) - { - __cache->__upcast()->__value_ = *__first; - __next_pointer __next = __cache->__next_; - __node_insert_unique(__cache->__upcast()); - __cache = __next; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __deallocate_node(__cache); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __deallocate_node(__cache); - } - for (; __first != __last; ++__first) - __insert_unique(*__first); +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_unique(_InputIterator __first, _InputIterator __last) { + typedef iterator_traits<_InputIterator> _ITraits; + typedef typename _ITraits::value_type _ItValueType; + static_assert(is_same<_ItValueType, __container_value_type>::value, + "__assign_unique may only be called with the containers value type"); + + if (bucket_count() != 0) { + __next_pointer __cache = __detach(); +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS + try { +#endif // _LIBCPP_HAS_NO_EXCEPTIONS + for (; __cache != nullptr && __first != __last; ++__first) { + __cache->__upcast()->__get_value() = *__first; + __next_pointer __next = __cache->__next_; + __node_insert_unique(__cache->__upcast()); + __cache = __next; + } +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS + } catch (...) { + __deallocate_node(__cache); + throw; + } +#endif // _LIBCPP_HAS_NO_EXCEPTIONS + __deallocate_node(__cache); + } + for (; __first != __last; ++__first) + __insert_unique(*__first); } template template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_multi(_InputIterator __first, - _InputIterator __last) -{ - typedef iterator_traits<_InputIterator> _ITraits; - typedef typename _ITraits::value_type _ItValueType; - static_assert((is_same<_ItValueType, __container_value_type>::value || - is_same<_ItValueType, __node_value_type>::value), - "__assign_multi may only be called with the containers value type" - " or the nodes value type"); - if (bucket_count() != 0) - { - __next_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (; __cache != nullptr && __first != __last; ++__first) - { - __cache->__upcast()->__value_ = *__first; - __next_pointer __next = __cache->__next_; - __node_insert_multi(__cache->__upcast()); - __cache = __next; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __deallocate_node(__cache); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __deallocate_node(__cache); - } - for (; __first != __last; ++__first) - __insert_multi(_NodeTypes::__get_value(*__first)); +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_multi(_InputIterator __first, _InputIterator __last) { + typedef iterator_traits<_InputIterator> _ITraits; + typedef typename _ITraits::value_type _ItValueType; + static_assert( + (is_same<_ItValueType, __container_value_type>::value || is_same<_ItValueType, __node_value_type>::value), + "__assign_multi may only be called with the containers value type" + " or the nodes value type"); + if (bucket_count() != 0) { + __next_pointer __cache = __detach(); +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS + try { +#endif // _LIBCPP_HAS_NO_EXCEPTIONS + for (; __cache != nullptr && __first != __last; ++__first) { + __cache->__upcast()->__get_value() = *__first; + __next_pointer __next = __cache->__next_; + __node_insert_multi(__cache->__upcast()); + __cache = __next; + } +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS + } catch (...) { + __deallocate_node(__cache); + throw; + } +#endif // _LIBCPP_HAS_NO_EXCEPTIONS + __deallocate_node(__cache); + } + for (; __first != __last; ++__first) + __insert_multi(_NodeTypes::__get_value(*__first)); } template -inline -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::begin() _NOEXCEPT -{ - return iterator(__p1_.first().__next_, this); +inline typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::begin() _NOEXCEPT { + return iterator(__p1_.first().__next_); } template -inline -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::end() _NOEXCEPT -{ - return iterator(nullptr, this); +inline typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::end() _NOEXCEPT { + return iterator(nullptr); } template -inline -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::begin() const _NOEXCEPT -{ - return const_iterator(__p1_.first().__next_, this); +inline typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::begin() const _NOEXCEPT { + return const_iterator(__p1_.first().__next_); } template -inline -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::end() const _NOEXCEPT -{ - return const_iterator(nullptr, this); +inline typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::end() const _NOEXCEPT { + return const_iterator(nullptr); } template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::clear() _NOEXCEPT -{ - if (size() > 0) - { - __deallocate_node(__p1_.first().__next_); - __p1_.first().__next_ = nullptr; - size_type __bc = bucket_count(); - for (size_type __i = 0; __i < __bc; ++__i) - __bucket_list_[__i] = nullptr; - size() = 0; - } +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::clear() _NOEXCEPT { + if (size() > 0) { + __deallocate_node(__p1_.first().__next_); + __p1_.first().__next_ = nullptr; + size_type __bc = bucket_count(); + for (size_type __i = 0; __i < __bc; ++__i) + __bucket_list_[__i] = nullptr; + size() = 0; + } } - // Prepare the container for an insertion of the value __value with the hash // __hash. This does a lookup into the container to see if __value is already // present, and performs a rehash if necessary. Returns a pointer to the @@ -1780,34 +1329,28 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::clear() _NOEXCEPT // Note that this function does forward exceptions if key_eq() throws, and never // mutates __value or actually inserts into the map. template -_LIBCPP_INLINE_VISIBILITY -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__next_pointer -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_prepare( - size_t __hash, value_type& __value) -{ - size_type __bc = bucket_count(); - - if (__bc != 0) - { - size_t __chash = std::__constrain_hash(__hash, __bc); - __next_pointer __ndptr = __bucket_list_[__chash]; - if (__ndptr != nullptr) - { - for (__ndptr = __ndptr->__next_; __ndptr != nullptr && - std::__constrain_hash(__ndptr->__hash(), __bc) == __chash; - __ndptr = __ndptr->__next_) - { - if (key_eq()(__ndptr->__upcast()->__value_, __value)) - return __ndptr; - } - } +_LIBCPP_HIDE_FROM_ABI typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__next_pointer +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_prepare(size_t __hash, value_type& __value) { + size_type __bc = bucket_count(); + + if (__bc != 0) { + size_t __chash = std::__constrain_hash(__hash, __bc); + __next_pointer __ndptr = __bucket_list_[__chash]; + if (__ndptr != nullptr) { + for (__ndptr = __ndptr->__next_; + __ndptr != nullptr && + (__ndptr->__hash() == __hash || std::__constrain_hash(__ndptr->__hash(), __bc) == __chash); + __ndptr = __ndptr->__next_) { + if ((__ndptr->__hash() == __hash) && key_eq()(__ndptr->__upcast()->__get_value(), __value)) + return __ndptr; + } } - if (size()+1 > __bc * max_load_factor() || __bc == 0) - { - __rehash_unique(_VSTD::max(2 * __bc + !std::__is_hash_power2(__bc), - size_type(std::ceil(float(size() + 1) / max_load_factor())))); - } - return nullptr; + } + if (size() + 1 > __bc * max_load_factor() || __bc == 0) { + __rehash_unique(std::max( + 2 * __bc + !std::__is_hash_power2(__bc), size_type(std::ceil(float(size() + 1) / max_load_factor())))); + } + return nullptr; } // Insert the node __nd into the container by pushing it into the right bucket, @@ -1815,50 +1358,41 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_prepare( // rehashing has already occurred and that no element with the same key exists // in the map. template -_LIBCPP_INLINE_VISIBILITY -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_perform( - __node_pointer __nd) _NOEXCEPT -{ - size_type __bc = bucket_count(); - size_t __chash = std::__constrain_hash(__nd->__hash(), __bc); - // insert_after __bucket_list_[__chash], or __first_node if bucket is null - __next_pointer __pn = __bucket_list_[__chash]; - if (__pn == nullptr) - { - __pn =__p1_.first().__ptr(); - __nd->__next_ = __pn->__next_; - __pn->__next_ = __nd->__ptr(); - // fix up __bucket_list_ - __bucket_list_[__chash] = __pn; - if (__nd->__next_ != nullptr) - __bucket_list_[std::__constrain_hash(__nd->__next_->__hash(), __bc)] = __nd->__ptr(); - } - else - { - __nd->__next_ = __pn->__next_; - __pn->__next_ = __nd->__ptr(); - } - ++size(); +_LIBCPP_HIDE_FROM_ABI void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_perform(__node_pointer __nd) _NOEXCEPT { + size_type __bc = bucket_count(); + size_t __chash = std::__constrain_hash(__nd->__hash(), __bc); + // insert_after __bucket_list_[__chash], or __first_node if bucket is null + __next_pointer __pn = __bucket_list_[__chash]; + if (__pn == nullptr) { + __pn = __p1_.first().__ptr(); + __nd->__next_ = __pn->__next_; + __pn->__next_ = __nd->__ptr(); + // fix up __bucket_list_ + __bucket_list_[__chash] = __pn; + if (__nd->__next_ != nullptr) + __bucket_list_[std::__constrain_hash(__nd->__next_->__hash(), __bc)] = __nd->__ptr(); + } else { + __nd->__next_ = __pn->__next_; + __pn->__next_ = __nd->__ptr(); + } + ++size(); } template pair::iterator, bool> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique(__node_pointer __nd) -{ - __nd->__hash_ = hash_function()(__nd->__value_); - __next_pointer __existing_node = - __node_insert_unique_prepare(__nd->__hash(), __nd->__value_); - - // Insert the node, unless it already exists in the container. - bool __inserted = false; - if (__existing_node == nullptr) - { - __node_insert_unique_perform(__nd); - __existing_node = __nd->__ptr(); - __inserted = true; - } - return pair(iterator(__existing_node, this), __inserted); +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique(__node_pointer __nd) { + __nd->__hash_ = hash_function()(__nd->__get_value()); + __next_pointer __existing_node = __node_insert_unique_prepare(__nd->__hash(), __nd->__get_value()); + + // Insert the node, unless it already exists in the container. + bool __inserted = false; + if (__existing_node == nullptr) { + __node_insert_unique_perform(__nd); + __existing_node = __nd->__ptr(); + __inserted = true; + } + return pair(iterator(__existing_node), __inserted); } // Prepare the container for an insertion of the value __cp_val with the hash @@ -1870,40 +1404,34 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique(__node_pointer __ // mutates __value or actually inserts into the map. template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__next_pointer -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_prepare( - size_t __cp_hash, value_type& __cp_val) -{ - size_type __bc = bucket_count(); - if (size()+1 > __bc * max_load_factor() || __bc == 0) - { - __rehash_multi(_VSTD::max(2 * __bc + !std::__is_hash_power2(__bc), - size_type(std::ceil(float(size() + 1) / max_load_factor())))); - __bc = bucket_count(); - } - size_t __chash = std::__constrain_hash(__cp_hash, __bc); - __next_pointer __pn = __bucket_list_[__chash]; - if (__pn != nullptr) - { - for (bool __found = false; __pn->__next_ != nullptr && - std::__constrain_hash(__pn->__next_->__hash(), __bc) == __chash; - __pn = __pn->__next_) - { - // __found key_eq() action - // false false loop - // true true loop - // false true set __found to true - // true false break - if (__found != (__pn->__next_->__hash() == __cp_hash && - key_eq()(__pn->__next_->__upcast()->__value_, __cp_val))) - { - if (!__found) - __found = true; - else - break; - } - } +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_prepare(size_t __cp_hash, value_type& __cp_val) { + size_type __bc = bucket_count(); + if (size() + 1 > __bc * max_load_factor() || __bc == 0) { + __rehash_multi(std::max( + 2 * __bc + !std::__is_hash_power2(__bc), size_type(std::ceil(float(size() + 1) / max_load_factor())))); + __bc = bucket_count(); + } + size_t __chash = std::__constrain_hash(__cp_hash, __bc); + __next_pointer __pn = __bucket_list_[__chash]; + if (__pn != nullptr) { + for (bool __found = false; + __pn->__next_ != nullptr && std::__constrain_hash(__pn->__next_->__hash(), __bc) == __chash; + __pn = __pn->__next_) { + // __found key_eq() action + // false false loop + // true true loop + // false true set __found to true + // true false break + if (__found != + (__pn->__next_->__hash() == __cp_hash && key_eq()(__pn->__next_->__upcast()->__get_value(), __cp_val))) { + if (!__found) + __found = true; + else + break; + } } - return __pn; + } + return __pn; } // Insert the node __cp into the container after __pn (which is the last node in @@ -1912,802 +1440,603 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_prepare( // all we need to do is update the bucket and size(). Assumes that __cp->__hash // is up-to-date. template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_perform( - __node_pointer __cp, __next_pointer __pn) _NOEXCEPT -{ - size_type __bc = bucket_count(); - size_t __chash = std::__constrain_hash(__cp->__hash_, __bc); - if (__pn == nullptr) - { - __pn =__p1_.first().__ptr(); - __cp->__next_ = __pn->__next_; - __pn->__next_ = __cp->__ptr(); - // fix up __bucket_list_ - __bucket_list_[__chash] = __pn; - if (__cp->__next_ != nullptr) - __bucket_list_[std::__constrain_hash(__cp->__next_->__hash(), __bc)] - = __cp->__ptr(); - } - else - { - __cp->__next_ = __pn->__next_; - __pn->__next_ = __cp->__ptr(); - if (__cp->__next_ != nullptr) - { - size_t __nhash = std::__constrain_hash(__cp->__next_->__hash(), __bc); - if (__nhash != __chash) - __bucket_list_[__nhash] = __cp->__ptr(); - } +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_perform( + __node_pointer __cp, __next_pointer __pn) _NOEXCEPT { + size_type __bc = bucket_count(); + size_t __chash = std::__constrain_hash(__cp->__hash_, __bc); + if (__pn == nullptr) { + __pn = __p1_.first().__ptr(); + __cp->__next_ = __pn->__next_; + __pn->__next_ = __cp->__ptr(); + // fix up __bucket_list_ + __bucket_list_[__chash] = __pn; + if (__cp->__next_ != nullptr) + __bucket_list_[std::__constrain_hash(__cp->__next_->__hash(), __bc)] = __cp->__ptr(); + } else { + __cp->__next_ = __pn->__next_; + __pn->__next_ = __cp->__ptr(); + if (__cp->__next_ != nullptr) { + size_t __nhash = std::__constrain_hash(__cp->__next_->__hash(), __bc); + if (__nhash != __chash) + __bucket_list_[__nhash] = __cp->__ptr(); } - ++size(); + } + ++size(); } - template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi(__node_pointer __cp) -{ - __cp->__hash_ = hash_function()(__cp->__value_); - __next_pointer __pn = __node_insert_multi_prepare(__cp->__hash(), __cp->__value_); - __node_insert_multi_perform(__cp, __pn); +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi(__node_pointer __cp) { + __cp->__hash_ = hash_function()(__cp->__get_value()); + __next_pointer __pn = __node_insert_multi_prepare(__cp->__hash(), __cp->__get_value()); + __node_insert_multi_perform(__cp, __pn); - return iterator(__cp->__ptr(), this); + return iterator(__cp->__ptr()); } template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi( - const_iterator __p, __node_pointer __cp) -{ - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__find_c_from_i(_VSTD::addressof(__p)) == this, - "unordered container::emplace_hint(const_iterator, args...) called with an iterator not" - " referring to this unordered container"); - if (__p != end() && key_eq()(*__p, __cp->__value_)) - { - __next_pointer __np = __p.__node_; - __cp->__hash_ = __np->__hash(); - size_type __bc = bucket_count(); - if (size()+1 > __bc * max_load_factor() || __bc == 0) - { - __rehash_multi(_VSTD::max(2 * __bc + !std::__is_hash_power2(__bc), - size_type(std::ceil(float(size() + 1) / max_load_factor())))); - __bc = bucket_count(); - } - size_t __chash = std::__constrain_hash(__cp->__hash_, __bc); - __next_pointer __pp = __bucket_list_[__chash]; - while (__pp->__next_ != __np) - __pp = __pp->__next_; - __cp->__next_ = __np; - __pp->__next_ = static_cast<__next_pointer>(__cp); - ++size(); - return iterator(static_cast<__next_pointer>(__cp), this); - } - return __node_insert_multi(__cp); +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi(const_iterator __p, __node_pointer __cp) { + if (__p != end() && key_eq()(*__p, __cp->__get_value())) { + __next_pointer __np = __p.__node_; + __cp->__hash_ = __np->__hash(); + size_type __bc = bucket_count(); + if (size() + 1 > __bc * max_load_factor() || __bc == 0) { + __rehash_multi(std::max( + 2 * __bc + !std::__is_hash_power2(__bc), size_type(std::ceil(float(size() + 1) / max_load_factor())))); + __bc = bucket_count(); + } + size_t __chash = std::__constrain_hash(__cp->__hash_, __bc); + __next_pointer __pp = __bucket_list_[__chash]; + while (__pp->__next_ != __np) + __pp = __pp->__next_; + __cp->__next_ = __np; + __pp->__next_ = static_cast<__next_pointer>(__cp); + ++size(); + return iterator(static_cast<__next_pointer>(__cp)); + } + return __node_insert_multi(__cp); } - - template -template +template pair::iterator, bool> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_key_args(_Key const& __k, _Args&&... __args) -{ - - size_t __hash = hash_function()(__k); - size_type __bc = bucket_count(); - bool __inserted = false; - __next_pointer __nd; - size_t __chash; - if (__bc != 0) - { - __chash = std::__constrain_hash(__hash, __bc); - __nd = __bucket_list_[__chash]; - if (__nd != nullptr) - { - for (__nd = __nd->__next_; __nd != nullptr && - (__nd->__hash() == __hash || std::__constrain_hash(__nd->__hash(), __bc) == __chash); - __nd = __nd->__next_) - { - if (key_eq()(__nd->__upcast()->__value_, __k)) - goto __done; - } - } +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_key_args(_Key const& __k, _Args&&... __args) { + size_t __hash = hash_function()(__k); + size_type __bc = bucket_count(); + bool __inserted = false; + __next_pointer __nd; + size_t __chash; + if (__bc != 0) { + __chash = std::__constrain_hash(__hash, __bc); + __nd = __bucket_list_[__chash]; + if (__nd != nullptr) { + for (__nd = __nd->__next_; + __nd != nullptr && (__nd->__hash() == __hash || std::__constrain_hash(__nd->__hash(), __bc) == __chash); + __nd = __nd->__next_) { + if ((__nd->__hash() == __hash) && key_eq()(__nd->__upcast()->__get_value(), __k)) + goto __done; + } } - { - __node_holder __h = __construct_node_hash(__hash, _VSTD::forward<_Args>(__args)...); - if (size()+1 > __bc * max_load_factor() || __bc == 0) - { - __rehash_unique(_VSTD::max(2 * __bc + !std::__is_hash_power2(__bc), - size_type(std::ceil(float(size() + 1) / max_load_factor())))); - __bc = bucket_count(); - __chash = std::__constrain_hash(__hash, __bc); - } - // insert_after __bucket_list_[__chash], or __first_node if bucket is null - __next_pointer __pn = __bucket_list_[__chash]; - if (__pn == nullptr) - { - __pn = __p1_.first().__ptr(); - __h->__next_ = __pn->__next_; - __pn->__next_ = __h.get()->__ptr(); - // fix up __bucket_list_ - __bucket_list_[__chash] = __pn; - if (__h->__next_ != nullptr) - __bucket_list_[std::__constrain_hash(__h->__next_->__hash(), __bc)] - = __h.get()->__ptr(); - } - else - { - __h->__next_ = __pn->__next_; - __pn->__next_ = static_cast<__next_pointer>(__h.get()); - } - __nd = static_cast<__next_pointer>(__h.release()); - // increment size - ++size(); - __inserted = true; + } + { + __node_holder __h = __construct_node_hash(__hash, std::forward<_Args>(__args)...); + if (size() + 1 > __bc * max_load_factor() || __bc == 0) { + __rehash_unique(std::max( + 2 * __bc + !std::__is_hash_power2(__bc), size_type(std::ceil(float(size() + 1) / max_load_factor())))); + __bc = bucket_count(); + __chash = std::__constrain_hash(__hash, __bc); } + // insert_after __bucket_list_[__chash], or __first_node if bucket is null + __next_pointer __pn = __bucket_list_[__chash]; + if (__pn == nullptr) { + __pn = __p1_.first().__ptr(); + __h->__next_ = __pn->__next_; + __pn->__next_ = __h.get()->__ptr(); + // fix up __bucket_list_ + __bucket_list_[__chash] = __pn; + if (__h->__next_ != nullptr) + __bucket_list_[std::__constrain_hash(__h->__next_->__hash(), __bc)] = __h.get()->__ptr(); + } else { + __h->__next_ = __pn->__next_; + __pn->__next_ = static_cast<__next_pointer>(__h.get()); + } + __nd = static_cast<__next_pointer>(__h.release()); + // increment size + ++size(); + __inserted = true; + } __done: - return pair(iterator(__nd, this), __inserted); + return pair(iterator(__nd), __inserted); } template template pair::iterator, bool> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_impl(_Args&&... __args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - pair __r = __node_insert_unique(__h.get()); - if (__r.second) - __h.release(); - return __r; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_impl(_Args&&... __args) { + __node_holder __h = __construct_node(std::forward<_Args>(__args)...); + pair __r = __node_insert_unique(__h.get()); + if (__r.second) + __h.release(); + return __r; } template template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_multi(_Args&&... __args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - iterator __r = __node_insert_multi(__h.get()); - __h.release(); - return __r; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_multi(_Args&&... __args) { + __node_holder __h = __construct_node(std::forward<_Args>(__args)...); + iterator __r = __node_insert_multi(__h.get()); + __h.release(); + return __r; } template template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_hint_multi( - const_iterator __p, _Args&&... __args) -{ - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__find_c_from_i(_VSTD::addressof(__p)) == this, - "unordered container::emplace_hint(const_iterator, args...) called with an iterator not" - " referring to this unordered container"); - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - iterator __r = __node_insert_multi(__p, __h.get()); - __h.release(); - return __r; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_hint_multi(const_iterator __p, _Args&&... __args) { + __node_holder __h = __construct_node(std::forward<_Args>(__args)...); + iterator __r = __node_insert_multi(__p, __h.get()); + __h.release(); + return __r; } -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template template -_LIBCPP_INLINE_VISIBILITY -_InsertReturnType -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_unique( - _NodeHandle&& __nh) -{ - if (__nh.empty()) - return _InsertReturnType{end(), false, _NodeHandle()}; - pair __result = __node_insert_unique(__nh.__ptr_); - if (__result.second) - __nh.__release_ptr(); - return _InsertReturnType{__result.first, __result.second, _VSTD::move(__nh)}; +_LIBCPP_HIDE_FROM_ABI _InsertReturnType +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_unique(_NodeHandle&& __nh) { + if (__nh.empty()) + return _InsertReturnType{end(), false, _NodeHandle()}; + pair __result = __node_insert_unique(__nh.__ptr_); + if (__result.second) + __nh.__release_ptr(); + return _InsertReturnType{__result.first, __result.second, std::move(__nh)}; } template template -_LIBCPP_INLINE_VISIBILITY -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_unique( - const_iterator, _NodeHandle&& __nh) -{ - if (__nh.empty()) - return end(); - pair __result = __node_insert_unique(__nh.__ptr_); - if (__result.second) - __nh.__release_ptr(); - return __result.first; +_LIBCPP_HIDE_FROM_ABI typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_unique(const_iterator, _NodeHandle&& __nh) { + if (__nh.empty()) + return end(); + pair __result = __node_insert_unique(__nh.__ptr_); + if (__result.second) + __nh.__release_ptr(); + return __result.first; } template template -_LIBCPP_INLINE_VISIBILITY -_NodeHandle -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_extract( - key_type const& __key) -{ - iterator __i = find(__key); - if (__i == end()) - return _NodeHandle(); - return __node_handle_extract<_NodeHandle>(__i); +_LIBCPP_HIDE_FROM_ABI _NodeHandle +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_extract(key_type const& __key) { + iterator __i = find(__key); + if (__i == end()) + return _NodeHandle(); + return __node_handle_extract<_NodeHandle>(__i); } template template -_LIBCPP_INLINE_VISIBILITY -_NodeHandle -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_extract( - const_iterator __p) -{ - allocator_type __alloc(__node_alloc()); - return _NodeHandle(remove(__p).release(), __alloc); +_LIBCPP_HIDE_FROM_ABI _NodeHandle __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_extract(const_iterator __p) { + allocator_type __alloc(__node_alloc()); + return _NodeHandle(remove(__p).release(), __alloc); } template template -_LIBCPP_INLINE_VISIBILITY -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_merge_unique( - _Table& __source) -{ - static_assert(is_same<__node, typename _Table::__node>::value, ""); - - for (typename _Table::iterator __it = __source.begin(); - __it != __source.end();) - { - __node_pointer __src_ptr = __it.__node_->__upcast(); - size_t __hash = hash_function()(__src_ptr->__value_); - __next_pointer __existing_node = - __node_insert_unique_prepare(__hash, __src_ptr->__value_); - auto __prev_iter = __it++; - if (__existing_node == nullptr) - { - (void)__source.remove(__prev_iter).release(); - __src_ptr->__hash_ = __hash; - __node_insert_unique_perform(__src_ptr); - } +_LIBCPP_HIDE_FROM_ABI void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_merge_unique(_Table& __source) { + static_assert(is_same<__node, typename _Table::__node>::value, ""); + + for (typename _Table::iterator __it = __source.begin(); __it != __source.end();) { + __node_pointer __src_ptr = __it.__node_->__upcast(); + size_t __hash = hash_function()(__src_ptr->__get_value()); + __next_pointer __existing_node = __node_insert_unique_prepare(__hash, __src_ptr->__get_value()); + auto __prev_iter = __it++; + if (__existing_node == nullptr) { + (void)__source.remove(__prev_iter).release(); + __src_ptr->__hash_ = __hash; + __node_insert_unique_perform(__src_ptr); } + } } template template -_LIBCPP_INLINE_VISIBILITY -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_multi( - _NodeHandle&& __nh) -{ - if (__nh.empty()) - return end(); - iterator __result = __node_insert_multi(__nh.__ptr_); - __nh.__release_ptr(); - return __result; +_LIBCPP_HIDE_FROM_ABI typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_multi(_NodeHandle&& __nh) { + if (__nh.empty()) + return end(); + iterator __result = __node_insert_multi(__nh.__ptr_); + __nh.__release_ptr(); + return __result; } template template -_LIBCPP_INLINE_VISIBILITY -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_multi( - const_iterator __hint, _NodeHandle&& __nh) -{ - if (__nh.empty()) - return end(); - iterator __result = __node_insert_multi(__hint, __nh.__ptr_); - __nh.__release_ptr(); - return __result; +_LIBCPP_HIDE_FROM_ABI typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_multi(const_iterator __hint, _NodeHandle&& __nh) { + if (__nh.empty()) + return end(); + iterator __result = __node_insert_multi(__hint, __nh.__ptr_); + __nh.__release_ptr(); + return __result; } template template -_LIBCPP_INLINE_VISIBILITY -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_merge_multi( - _Table& __source) -{ - static_assert(is_same::value, ""); - - for (typename _Table::iterator __it = __source.begin(); - __it != __source.end();) - { - __node_pointer __src_ptr = __it.__node_->__upcast(); - size_t __src_hash = hash_function()(__src_ptr->__value_); - __next_pointer __pn = - __node_insert_multi_prepare(__src_hash, __src_ptr->__value_); - (void)__source.remove(__it++).release(); - __src_ptr->__hash_ = __src_hash; - __node_insert_multi_perform(__src_ptr, __pn); - } +_LIBCPP_HIDE_FROM_ABI void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_merge_multi(_Table& __source) { + static_assert(is_same::value, ""); + + for (typename _Table::iterator __it = __source.begin(); __it != __source.end();) { + __node_pointer __src_ptr = __it.__node_->__upcast(); + size_t __src_hash = hash_function()(__src_ptr->__get_value()); + __next_pointer __pn = __node_insert_multi_prepare(__src_hash, __src_ptr->__get_value()); + (void)__source.remove(__it++).release(); + __src_ptr->__hash_ = __src_hash; + __node_insert_multi_perform(__src_ptr, __pn); + } } -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 template template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__rehash(size_type __n) -_LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK -{ - if (__n == 1) - __n = 2; - else if (__n & (__n - 1)) - __n = std::__next_prime(__n); - size_type __bc = bucket_count(); - if (__n > __bc) - __do_rehash<_UniqueKeys>(__n); - else if (__n < __bc) - { - __n = _VSTD::max - ( - __n, - std::__is_hash_power2(__bc) ? std::__next_hash_pow2(size_t(std::ceil(float(size()) / max_load_factor()))) : - std::__next_prime(size_t(std::ceil(float(size()) / max_load_factor()))) - ); - if (__n < __bc) - __do_rehash<_UniqueKeys>(__n); - } +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__rehash(size_type __n) _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK { + if (__n == 1) + __n = 2; + else if (__n & (__n - 1)) + __n = std::__next_prime(__n); + size_type __bc = bucket_count(); + if (__n > __bc) + __do_rehash<_UniqueKeys>(__n); + else if (__n < __bc) { + __n = std::max( + __n, + std::__is_hash_power2(__bc) ? std::__next_hash_pow2(size_t(std::ceil(float(size()) / max_load_factor()))) + : std::__next_prime(size_t(std::ceil(float(size()) / max_load_factor())))); + if (__n < __bc) + __do_rehash<_UniqueKeys>(__n); + } } template template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__do_rehash(size_type __nbc) -{ - std::__debug_db_invalidate_all(this); - __pointer_allocator& __npa = __bucket_list_.get_deleter().__alloc(); - __bucket_list_.reset(__nbc > 0 ? - __pointer_alloc_traits::allocate(__npa, __nbc) : nullptr); - __bucket_list_.get_deleter().size() = __nbc; - if (__nbc > 0) - { - for (size_type __i = 0; __i < __nbc; ++__i) - __bucket_list_[__i] = nullptr; - __next_pointer __pp = __p1_.first().__ptr(); - __next_pointer __cp = __pp->__next_; - if (__cp != nullptr) - { - size_type __chash = std::__constrain_hash(__cp->__hash(), __nbc); +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__do_rehash(size_type __nbc) { + __pointer_allocator& __npa = __bucket_list_.get_deleter().__alloc(); + __bucket_list_.reset(__nbc > 0 ? __pointer_alloc_traits::allocate(__npa, __nbc) : nullptr); + __bucket_list_.get_deleter().size() = __nbc; + if (__nbc > 0) { + for (size_type __i = 0; __i < __nbc; ++__i) + __bucket_list_[__i] = nullptr; + __next_pointer __pp = __p1_.first().__ptr(); + __next_pointer __cp = __pp->__next_; + if (__cp != nullptr) { + size_type __chash = std::__constrain_hash(__cp->__hash(), __nbc); + __bucket_list_[__chash] = __pp; + size_type __phash = __chash; + for (__pp = __cp, void(), __cp = __cp->__next_; __cp != nullptr; __cp = __pp->__next_) { + __chash = std::__constrain_hash(__cp->__hash(), __nbc); + if (__chash == __phash) + __pp = __cp; + else { + if (__bucket_list_[__chash] == nullptr) { __bucket_list_[__chash] = __pp; - size_type __phash = __chash; - for (__pp = __cp, void(), __cp = __cp->__next_; __cp != nullptr; - __cp = __pp->__next_) - { - __chash = std::__constrain_hash(__cp->__hash(), __nbc); - if (__chash == __phash) - __pp = __cp; - else - { - if (__bucket_list_[__chash] == nullptr) - { - __bucket_list_[__chash] = __pp; - __pp = __cp; - __phash = __chash; - } - else - { - __next_pointer __np = __cp; - if _LIBCPP_CONSTEXPR_SINCE_CXX17 (!_UniqueKeys) - { - for (; __np->__next_ != nullptr && - key_eq()(__cp->__upcast()->__value_, - __np->__next_->__upcast()->__value_); - __np = __np->__next_) - ; - } - __pp->__next_ = __np->__next_; - __np->__next_ = __bucket_list_[__chash]->__next_; - __bucket_list_[__chash]->__next_ = __cp; - - } - } + __pp = __cp; + __phash = __chash; + } else { + __next_pointer __np = __cp; + if _LIBCPP_CONSTEXPR_SINCE_CXX17 (!_UniqueKeys) { + for (; __np->__next_ != nullptr && + key_eq()(__cp->__upcast()->__get_value(), __np->__next_->__upcast()->__get_value()); + __np = __np->__next_) + ; } + __pp->__next_ = __np->__next_; + __np->__next_ = __bucket_list_[__chash]->__next_; + __bucket_list_[__chash]->__next_ = __cp; + } } + } } + } } template template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) -{ - size_t __hash = hash_function()(__k); - size_type __bc = bucket_count(); - if (__bc != 0) - { - size_t __chash = std::__constrain_hash(__hash, __bc); - __next_pointer __nd = __bucket_list_[__chash]; - if (__nd != nullptr) - { - for (__nd = __nd->__next_; __nd != nullptr && - (__nd->__hash() == __hash - || std::__constrain_hash(__nd->__hash(), __bc) == __chash); - __nd = __nd->__next_) - { - if ((__nd->__hash() == __hash) - && key_eq()(__nd->__upcast()->__value_, __k)) - return iterator(__nd, this); - } - } +__hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) { + size_t __hash = hash_function()(__k); + size_type __bc = bucket_count(); + if (__bc != 0) { + size_t __chash = std::__constrain_hash(__hash, __bc); + __next_pointer __nd = __bucket_list_[__chash]; + if (__nd != nullptr) { + for (__nd = __nd->__next_; + __nd != nullptr && (__nd->__hash() == __hash || std::__constrain_hash(__nd->__hash(), __bc) == __chash); + __nd = __nd->__next_) { + if ((__nd->__hash() == __hash) && key_eq()(__nd->__upcast()->__get_value(), __k)) + return iterator(__nd); + } } - return end(); + } + return end(); } template template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) const -{ - size_t __hash = hash_function()(__k); - size_type __bc = bucket_count(); - if (__bc != 0) - { - size_t __chash = std::__constrain_hash(__hash, __bc); - __next_pointer __nd = __bucket_list_[__chash]; - if (__nd != nullptr) - { - for (__nd = __nd->__next_; __nd != nullptr && - (__hash == __nd->__hash() - || std::__constrain_hash(__nd->__hash(), __bc) == __chash); - __nd = __nd->__next_) - { - if ((__nd->__hash() == __hash) - && key_eq()(__nd->__upcast()->__value_, __k)) - return const_iterator(__nd, this); - } - } - +__hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) const { + size_t __hash = hash_function()(__k); + size_type __bc = bucket_count(); + if (__bc != 0) { + size_t __chash = std::__constrain_hash(__hash, __bc); + __next_pointer __nd = __bucket_list_[__chash]; + if (__nd != nullptr) { + for (__nd = __nd->__next_; + __nd != nullptr && (__hash == __nd->__hash() || std::__constrain_hash(__nd->__hash(), __bc) == __chash); + __nd = __nd->__next_) { + if ((__nd->__hash() == __hash) && key_eq()(__nd->__upcast()->__get_value(), __k)) + return const_iterator(__nd); + } } - return end(); + } + return end(); } template -template +template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node(_Args&& ...__args) -{ - static_assert(!__is_hash_value_type<_Args...>::value, - "Construct cannot be called with a hash value type"); - __node_allocator& __na = __node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), _VSTD::forward<_Args>(__args)...); - __h.get_deleter().__value_constructed = true; - __h->__hash_ = hash_function()(__h->__value_); - __h->__next_ = nullptr; - return __h; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node(_Args&&... __args) { + static_assert(!__is_hash_value_type<_Args...>::value, "Construct cannot be called with a hash value type"); + __node_allocator& __na = __node_alloc(); + __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); + + // Begin the lifetime of the node itself. Note that this doesn't begin the lifetime of the value + // held inside the node, since we need to use the allocator's construct() method for that. + // + // We don't use the allocator's construct() method to construct the node itself since the + // Cpp17FooInsertable named requirements don't require the allocator's construct() method + // to work on anything other than the value_type. + std::__construct_at(std::addressof(*__h), /* next = */ nullptr, /* hash = */ 0); + + // Now construct the value_type using the allocator's construct() method. + __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__get_value()), std::forward<_Args>(__args)...); + __h.get_deleter().__value_constructed = true; + + __h->__hash_ = hash_function()(__h->__get_value()); + return __h; } template -template +template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node_hash( - size_t __hash, _First&& __f, _Rest&& ...__rest) -{ - static_assert(!__is_hash_value_type<_First, _Rest...>::value, - "Construct cannot be called with a hash value type"); - __node_allocator& __na = __node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), - _VSTD::forward<_First>(__f), - _VSTD::forward<_Rest>(__rest)...); - __h.get_deleter().__value_constructed = true; - __h->__hash_ = __hash; - __h->__next_ = nullptr; - return __h; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node_hash(size_t __hash, _First&& __f, _Rest&&... __rest) { + static_assert(!__is_hash_value_type<_First, _Rest...>::value, "Construct cannot be called with a hash value type"); + __node_allocator& __na = __node_alloc(); + __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); + std::__construct_at(std::addressof(*__h), /* next = */ nullptr, /* hash = */ __hash); + __node_traits::construct( + __na, _NodeTypes::__get_ptr(__h->__get_value()), std::forward<_First>(__f), std::forward<_Rest>(__rest)...); + __h.get_deleter().__value_constructed = true; + return __h; } template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::erase(const_iterator __p) -{ - __next_pointer __np = __p.__node_; - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__find_c_from_i(_VSTD::addressof(__p)) == this, - "unordered container erase(iterator) called with an iterator not" - " referring to this container"); - _LIBCPP_ASSERT(__p != end(), - "unordered container erase(iterator) called with a non-dereferenceable iterator"); - iterator __r(__np, this); - ++__r; - remove(__p); - return __r; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::erase(const_iterator __p) { + __next_pointer __np = __p.__node_; + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __p != end(), "unordered container::erase(iterator) called with a non-dereferenceable iterator"); + iterator __r(__np); + ++__r; + remove(__p); + return __r; } template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::erase(const_iterator __first, - const_iterator __last) -{ - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__find_c_from_i(_VSTD::addressof(__first)) == this, - "unordered container::erase(iterator, iterator) called with an iterator not" - " referring to this container"); - _LIBCPP_DEBUG_ASSERT(__get_const_db()->__find_c_from_i(_VSTD::addressof(__last)) == this, - "unordered container::erase(iterator, iterator) called with an iterator not" - " referring to this container"); - for (const_iterator __p = __first; __first != __last; __p = __first) - { - ++__first; - erase(__p); - } - __next_pointer __np = __last.__node_; - return iterator (__np, this); +__hash_table<_Tp, _Hash, _Equal, _Alloc>::erase(const_iterator __first, const_iterator __last) { + for (const_iterator __p = __first; __first != __last; __p = __first) { + ++__first; + erase(__p); + } + __next_pointer __np = __last.__node_; + return iterator(__np); } template template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__erase_unique(const _Key& __k) -{ - iterator __i = find(__k); - if (__i == end()) - return 0; - erase(__i); - return 1; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__erase_unique(const _Key& __k) { + iterator __i = find(__k); + if (__i == end()) + return 0; + erase(__i); + return 1; } template template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__erase_multi(const _Key& __k) -{ - size_type __r = 0; - iterator __i = find(__k); - if (__i != end()) - { - iterator __e = end(); - do - { - erase(__i++); - ++__r; - } while (__i != __e && key_eq()(*__i, __k)); - } - return __r; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__erase_multi(const _Key& __k) { + size_type __r = 0; + iterator __i = find(__k); + if (__i != end()) { + iterator __e = end(); + do { + erase(__i++); + ++__r; + } while (__i != __e && key_eq()(*__i, __k)); + } + return __r; } template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder -__hash_table<_Tp, _Hash, _Equal, _Alloc>::remove(const_iterator __p) _NOEXCEPT -{ - // current node - __next_pointer __cn = __p.__node_; - size_type __bc = bucket_count(); - size_t __chash = std::__constrain_hash(__cn->__hash(), __bc); - // find previous node - __next_pointer __pn = __bucket_list_[__chash]; - for (; __pn->__next_ != __cn; __pn = __pn->__next_) - ; - // Fix up __bucket_list_ - // if __pn is not in same bucket (before begin is not in same bucket) && - // if __cn->__next_ is not in same bucket (nullptr is not in same bucket) - if (__pn == __p1_.first().__ptr() - || std::__constrain_hash(__pn->__hash(), __bc) != __chash) - { - if (__cn->__next_ == nullptr - || std::__constrain_hash(__cn->__next_->__hash(), __bc) != __chash) - __bucket_list_[__chash] = nullptr; - } - // if __cn->__next_ is not in same bucket (nullptr is in same bucket) - if (__cn->__next_ != nullptr) - { - size_t __nhash = std::__constrain_hash(__cn->__next_->__hash(), __bc); - if (__nhash != __chash) - __bucket_list_[__nhash] = __pn; - } - // remove __cn - __pn->__next_ = __cn->__next_; - __cn->__next_ = nullptr; - --size(); -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - __c_node* __c = __get_db()->__find_c_and_lock(this); - for (__i_node** __dp = __c->end_; __dp != __c->beg_; ) - { - --__dp; - iterator* __i = static_cast((*__dp)->__i_); - if (__i->__node_ == __cn) - { - (*__dp)->__c_ = nullptr; - if (--__c->end_ != __dp) - _VSTD::memmove(__dp, __dp+1, (__c->end_ - __dp)*sizeof(__i_node*)); - } - } - __get_db()->unlock(); -#endif - return __node_holder(__cn->__upcast(), _Dp(__node_alloc(), true)); +__hash_table<_Tp, _Hash, _Equal, _Alloc>::remove(const_iterator __p) _NOEXCEPT { + // current node + __next_pointer __cn = __p.__node_; + size_type __bc = bucket_count(); + size_t __chash = std::__constrain_hash(__cn->__hash(), __bc); + // find previous node + __next_pointer __pn = __bucket_list_[__chash]; + for (; __pn->__next_ != __cn; __pn = __pn->__next_) + ; + // Fix up __bucket_list_ + // if __pn is not in same bucket (before begin is not in same bucket) && + // if __cn->__next_ is not in same bucket (nullptr is not in same bucket) + if (__pn == __p1_.first().__ptr() || std::__constrain_hash(__pn->__hash(), __bc) != __chash) { + if (__cn->__next_ == nullptr || std::__constrain_hash(__cn->__next_->__hash(), __bc) != __chash) + __bucket_list_[__chash] = nullptr; + } + // if __cn->__next_ is not in same bucket (nullptr is in same bucket) + if (__cn->__next_ != nullptr) { + size_t __nhash = std::__constrain_hash(__cn->__next_->__hash(), __bc); + if (__nhash != __chash) + __bucket_list_[__nhash] = __pn; + } + // remove __cn + __pn->__next_ = __cn->__next_; + __cn->__next_ = nullptr; + --size(); + return __node_holder(__cn->__upcast(), _Dp(__node_alloc(), true)); } template template -inline -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__count_unique(const _Key& __k) const -{ - return static_cast(find(__k) != end()); +inline typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__count_unique(const _Key& __k) const { + return static_cast(find(__k) != end()); } template template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__count_multi(const _Key& __k) const -{ - size_type __r = 0; - const_iterator __i = find(__k); - if (__i != end()) - { - const_iterator __e = end(); - do - { - ++__i; - ++__r; - } while (__i != __e && key_eq()(*__i, __k)); - } - return __r; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__count_multi(const _Key& __k) const { + size_type __r = 0; + const_iterator __i = find(__k); + if (__i != end()) { + const_iterator __e = end(); + do { + ++__i; + ++__r; + } while (__i != __e && key_eq()(*__i, __k)); + } + return __r; } template template pair::iterator, typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_unique( - const _Key& __k) -{ - iterator __i = find(__k); - iterator __j = __i; - if (__i != end()) - ++__j; - return pair(__i, __j); +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_unique(const _Key& __k) { + iterator __i = find(__k); + iterator __j = __i; + if (__i != end()) + ++__j; + return pair(__i, __j); } template template pair::const_iterator, typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_unique( - const _Key& __k) const -{ - const_iterator __i = find(__k); - const_iterator __j = __i; - if (__i != end()) - ++__j; - return pair(__i, __j); +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_unique(const _Key& __k) const { + const_iterator __i = find(__k); + const_iterator __j = __i; + if (__i != end()) + ++__j; + return pair(__i, __j); } template template pair::iterator, typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_multi( - const _Key& __k) -{ - iterator __i = find(__k); - iterator __j = __i; - if (__i != end()) - { - iterator __e = end(); - do - { - ++__j; - } while (__j != __e && key_eq()(*__j, __k)); - } - return pair(__i, __j); +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_multi(const _Key& __k) { + iterator __i = find(__k); + iterator __j = __i; + if (__i != end()) { + iterator __e = end(); + do { + ++__j; + } while (__j != __e && key_eq()(*__j, __k)); + } + return pair(__i, __j); } template template pair::const_iterator, typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_multi( - const _Key& __k) const -{ - const_iterator __i = find(__k); - const_iterator __j = __i; - if (__i != end()) - { - const_iterator __e = end(); - do - { - ++__j; - } while (__j != __e && key_eq()(*__j, __k)); - } - return pair(__i, __j); +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_multi(const _Key& __k) const { + const_iterator __i = find(__k); + const_iterator __j = __i; + if (__i != end()) { + const_iterator __e = end(); + do { + ++__j; + } while (__j != __e && key_eq()(*__j, __k)); + } + return pair(__i, __j); } template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::swap(__hash_table& __u) +void __hash_table<_Tp, _Hash, _Equal, _Alloc>::swap(__hash_table& __u) #if _LIBCPP_STD_VER <= 11 - _NOEXCEPT_( - __is_nothrow_swappable::value && __is_nothrow_swappable::value - && (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value - || __is_nothrow_swappable<__pointer_allocator>::value) - && (!__node_traits::propagate_on_container_swap::value - || __is_nothrow_swappable<__node_allocator>::value) - ) + _NOEXCEPT_(__is_nothrow_swappable_v&& __is_nothrow_swappable_v && + (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value || + __is_nothrow_swappable_v<__pointer_allocator>) && + (!__node_traits::propagate_on_container_swap::value || __is_nothrow_swappable_v<__node_allocator>)) #else - _NOEXCEPT_(__is_nothrow_swappable::value && __is_nothrow_swappable::value) + _NOEXCEPT_(__is_nothrow_swappable_v&& __is_nothrow_swappable_v) #endif { - _LIBCPP_ASSERT(__node_traits::propagate_on_container_swap::value || - this->__node_alloc() == __u.__node_alloc(), - "list::swap: Either propagate_on_container_swap must be true" - " or the allocators must compare equal"); - { + _LIBCPP_ASSERT_COMPATIBLE_ALLOCATOR( + __node_traits::propagate_on_container_swap::value || this->__node_alloc() == __u.__node_alloc(), + "unordered container::swap: Either propagate_on_container_swap " + "must be true or the allocators must compare equal"); + { __node_pointer_pointer __npp = __bucket_list_.release(); __bucket_list_.reset(__u.__bucket_list_.release()); __u.__bucket_list_.reset(__npp); - } - _VSTD::swap(__bucket_list_.get_deleter().size(), __u.__bucket_list_.get_deleter().size()); - _VSTD::__swap_allocator(__bucket_list_.get_deleter().__alloc(), - __u.__bucket_list_.get_deleter().__alloc()); - _VSTD::__swap_allocator(__node_alloc(), __u.__node_alloc()); - _VSTD::swap(__p1_.first().__next_, __u.__p1_.first().__next_); - __p2_.swap(__u.__p2_); - __p3_.swap(__u.__p3_); - if (size() > 0) - __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = - __p1_.first().__ptr(); - if (__u.size() > 0) - __u.__bucket_list_[std::__constrain_hash(__u.__p1_.first().__next_->__hash(), __u.bucket_count())] = - __u.__p1_.first().__ptr(); - std::__debug_db_swap(this, std::addressof(__u)); + } + std::swap(__bucket_list_.get_deleter().size(), __u.__bucket_list_.get_deleter().size()); + std::__swap_allocator(__bucket_list_.get_deleter().__alloc(), __u.__bucket_list_.get_deleter().__alloc()); + std::__swap_allocator(__node_alloc(), __u.__node_alloc()); + std::swap(__p1_.first().__next_, __u.__p1_.first().__next_); + __p2_.swap(__u.__p2_); + __p3_.swap(__u.__p3_); + if (size() > 0) + __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = __p1_.first().__ptr(); + if (__u.size() > 0) + __u.__bucket_list_[std::__constrain_hash(__u.__p1_.first().__next_->__hash(), __u.bucket_count())] = + __u.__p1_.first().__ptr(); } template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type -__hash_table<_Tp, _Hash, _Equal, _Alloc>::bucket_size(size_type __n) const -{ - _LIBCPP_ASSERT(__n < bucket_count(), - "unordered container::bucket_size(n) called with n >= bucket_count()"); - __next_pointer __np = __bucket_list_[__n]; - size_type __bc = bucket_count(); - size_type __r = 0; - if (__np != nullptr) - { - for (__np = __np->__next_; __np != nullptr && - std::__constrain_hash(__np->__hash(), __bc) == __n; - __np = __np->__next_, (void) ++__r) - ; - } - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(__hash_table<_Tp, _Hash, _Equal, _Alloc>& __x, - __hash_table<_Tp, _Hash, _Equal, _Alloc>& __y) - _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) -{ - __x.swap(__y); -} - -#ifdef _LIBCPP_ENABLE_DEBUG_MODE - -template -bool -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__dereferenceable(const const_iterator* __i) const -{ - return __i->__node_ != nullptr; -} - -template -bool -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__decrementable(const const_iterator*) const -{ - return false; -} - -template -bool -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__addable(const const_iterator*, ptrdiff_t) const -{ - return false; +__hash_table<_Tp, _Hash, _Equal, _Alloc>::bucket_size(size_type __n) const { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n < bucket_count(), "unordered container::bucket_size(n) called with n >= bucket_count()"); + __next_pointer __np = __bucket_list_[__n]; + size_type __bc = bucket_count(); + size_type __r = 0; + if (__np != nullptr) { + for (__np = __np->__next_; __np != nullptr && std::__constrain_hash(__np->__hash(), __bc) == __n; + __np = __np->__next_, (void)++__r) + ; + } + return __r; } template -bool -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__subscriptable(const const_iterator*, ptrdiff_t) const -{ - return false; +inline _LIBCPP_HIDE_FROM_ABI void +swap(__hash_table<_Tp, _Hash, _Equal, _Alloc>& __x, __hash_table<_Tp, _Hash, _Equal, _Alloc>& __y) + _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) { + __x.swap(__y); } -#endif // _LIBCPP_ENABLE_DEBUG_MODE - _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/include/c++/v1/__ios/fpos.h b/include/c++/v1/__ios/fpos.h index 87f0135f..1af1e23e 100644 --- a/include/c++/v1/__ios/fpos.h +++ b/include/c++/v1/__ios/fpos.h @@ -11,7 +11,7 @@ #define _LIBCPP___IOS_FPOS_H #include <__config> -#include +#include <__fwd/ios.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -57,20 +57,17 @@ class _LIBCPP_TEMPLATE_VIS fpos { }; template -inline _LIBCPP_HIDE_FROM_ABI -streamoff operator-(const fpos<_StateT>& __x, const fpos<_StateT>& __y) { +inline _LIBCPP_HIDE_FROM_ABI streamoff operator-(const fpos<_StateT>& __x, const fpos<_StateT>& __y) { return streamoff(__x) - streamoff(__y); } template -inline _LIBCPP_HIDE_FROM_ABI -bool operator==(const fpos<_StateT>& __x, const fpos<_StateT>& __y) { +inline _LIBCPP_HIDE_FROM_ABI bool operator==(const fpos<_StateT>& __x, const fpos<_StateT>& __y) { return streamoff(__x) == streamoff(__y); } template -inline _LIBCPP_HIDE_FROM_ABI -bool operator!=(const fpos<_StateT>& __x, const fpos<_StateT>& __y) { +inline _LIBCPP_HIDE_FROM_ABI bool operator!=(const fpos<_StateT>& __x, const fpos<_StateT>& __y) { return streamoff(__x) != streamoff(__y); } diff --git a/include/c++/v1/__iterator/access.h b/include/c++/v1/__iterator/access.h index 0b8d5230..acc4f60b 100644 --- a/include/c++/v1/__iterator/access.h +++ b/include/c++/v1/__iterator/access.h @@ -20,106 +20,72 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Tp* -begin(_Tp (&__array)[_Np]) -{ - return __array; +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Tp* begin(_Tp (&__array)[_Np]) _NOEXCEPT { + return __array; } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -_Tp* -end(_Tp (&__array)[_Np]) -{ - return __array + _Np; +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Tp* end(_Tp (&__array)[_Np]) _NOEXCEPT { + return __array + _Np; } #if !defined(_LIBCPP_CXX03_LANG) template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto -begin(_Cp& __c) -> decltype(__c.begin()) -{ - return __c.begin(); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto begin(_Cp& __c) -> decltype(__c.begin()) { + return __c.begin(); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto -begin(const _Cp& __c) -> decltype(__c.begin()) -{ - return __c.begin(); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto begin(const _Cp& __c) -> decltype(__c.begin()) { + return __c.begin(); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto -end(_Cp& __c) -> decltype(__c.end()) -{ - return __c.end(); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto end(_Cp& __c) -> decltype(__c.end()) { + return __c.end(); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto -end(const _Cp& __c) -> decltype(__c.end()) -{ - return __c.end(); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto end(const _Cp& __c) -> decltype(__c.end()) { + return __c.end(); } -#if _LIBCPP_STD_VER > 11 +# if _LIBCPP_STD_VER >= 14 template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -auto cbegin(const _Cp& __c) -> decltype(_VSTD::begin(__c)) -{ - return _VSTD::begin(__c); +_LIBCPP_HIDE_FROM_ABI constexpr auto +cbegin(const _Cp& __c) noexcept(noexcept(std::begin(__c))) -> decltype(std::begin(__c)) { + return std::begin(__c); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -auto cend(const _Cp& __c) -> decltype(_VSTD::end(__c)) -{ - return _VSTD::end(__c); +_LIBCPP_HIDE_FROM_ABI constexpr auto cend(const _Cp& __c) noexcept(noexcept(std::end(__c))) -> decltype(std::end(__c)) { + return std::end(__c); } -#endif - +# endif -#else // defined(_LIBCPP_CXX03_LANG) +#else // defined(_LIBCPP_CXX03_LANG) template -_LIBCPP_INLINE_VISIBILITY -typename _Cp::iterator -begin(_Cp& __c) -{ - return __c.begin(); +_LIBCPP_HIDE_FROM_ABI typename _Cp::iterator begin(_Cp& __c) { + return __c.begin(); } template -_LIBCPP_INLINE_VISIBILITY -typename _Cp::const_iterator -begin(const _Cp& __c) -{ - return __c.begin(); +_LIBCPP_HIDE_FROM_ABI typename _Cp::const_iterator begin(const _Cp& __c) { + return __c.begin(); } template -_LIBCPP_INLINE_VISIBILITY -typename _Cp::iterator -end(_Cp& __c) -{ - return __c.end(); +_LIBCPP_HIDE_FROM_ABI typename _Cp::iterator end(_Cp& __c) { + return __c.end(); } template -_LIBCPP_INLINE_VISIBILITY -typename _Cp::const_iterator -end(const _Cp& __c) -{ - return __c.end(); +_LIBCPP_HIDE_FROM_ABI typename _Cp::const_iterator end(const _Cp& __c) { + return __c.end(); } #endif // !defined(_LIBCPP_CXX03_LANG) diff --git a/include/c++/v1/__iterator/advance.h b/include/c++/v1/__iterator/advance.h index 154c2736..296db1aa 100644 --- a/include/c++/v1/__iterator/advance.h +++ b/include/c++/v1/__iterator/advance.h @@ -23,25 +23,27 @@ #include <__utility/declval.h> #include <__utility/move.h> #include <__utility/unreachable.h> -#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -void __advance(_InputIter& __i, typename iterator_traits<_InputIter>::difference_type __n, input_iterator_tag) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 void +__advance(_InputIter& __i, typename iterator_traits<_InputIter>::difference_type __n, input_iterator_tag) { for (; __n > 0; --__n) ++__i; } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -void __advance(_BiDirIter& __i, typename iterator_traits<_BiDirIter>::difference_type __n, bidirectional_iterator_tag) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 void +__advance(_BiDirIter& __i, typename iterator_traits<_BiDirIter>::difference_type __n, bidirectional_iterator_tag) { if (__n >= 0) for (; __n > 0; --__n) ++__i; @@ -51,25 +53,25 @@ void __advance(_BiDirIter& __i, typename iterator_traits<_BiDirIter>::difference } template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -void __advance(_RandIter& __i, typename iterator_traits<_RandIter>::difference_type __n, random_access_iterator_tag) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 void +__advance(_RandIter& __i, typename iterator_traits<_RandIter>::difference_type __n, random_access_iterator_tag) { __i += __n; } -template < - class _InputIter, class _Distance, - class _IntegralDistance = decltype(_VSTD::__convert_to_integral(std::declval<_Distance>())), - class = __enable_if_t::value> > -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -void advance(_InputIter& __i, _Distance __orig_n) { +template < class _InputIter, + class _Distance, + class _IntegralDistance = decltype(std::__convert_to_integral(std::declval<_Distance>())), + __enable_if_t::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 void advance(_InputIter& __i, _Distance __orig_n) { typedef typename iterator_traits<_InputIter>::difference_type _Difference; - _Difference __n = static_cast<_Difference>(_VSTD::__convert_to_integral(__orig_n)); - _LIBCPP_ASSERT(__n >= 0 || __is_cpp17_bidirectional_iterator<_InputIter>::value, - "Attempt to advance(it, n) with negative n on a non-bidirectional iterator"); - _VSTD::__advance(__i, __n, typename iterator_traits<_InputIter>::iterator_category()); + _Difference __n = static_cast<_Difference>(std::__convert_to_integral(__orig_n)); + // Calling `advance` with a negative value on a non-bidirectional iterator is a no-op in the current implementation. + _LIBCPP_ASSERT_PEDANTIC(__n >= 0 || __has_bidirectional_iterator_category<_InputIter>::value, + "Attempt to advance(it, n) with negative n on a non-bidirectional iterator"); + std::__advance(__i, __n, typename iterator_traits<_InputIter>::iterator_category()); } -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [range.iter.op.advance] @@ -79,8 +81,7 @@ namespace __advance { struct __fn { private: template - _LIBCPP_HIDE_FROM_ABI - static constexpr void __advance_forward(_Ip& __i, iter_difference_t<_Ip> __n) { + _LIBCPP_HIDE_FROM_ABI static constexpr void __advance_forward(_Ip& __i, iter_difference_t<_Ip> __n) { while (__n > 0) { --__n; ++__i; @@ -88,8 +89,7 @@ struct __fn { } template - _LIBCPP_HIDE_FROM_ABI - static constexpr void __advance_backward(_Ip& __i, iter_difference_t<_Ip> __n) { + _LIBCPP_HIDE_FROM_ABI static constexpr void __advance_backward(_Ip& __i, iter_difference_t<_Ip> __n) { while (__n < 0) { ++__n; --__i; @@ -99,10 +99,10 @@ struct __fn { public: // Preconditions: If `I` does not model `bidirectional_iterator`, `n` is not negative. template - _LIBCPP_HIDE_FROM_ABI - constexpr void operator()(_Ip& __i, iter_difference_t<_Ip> __n) const { - _LIBCPP_ASSERT(__n >= 0 || bidirectional_iterator<_Ip>, - "If `n < 0`, then `bidirectional_iterator` must be true."); + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_Ip& __i, iter_difference_t<_Ip> __n) const { + // Calling `advance` with a negative value on a non-bidirectional iterator is a no-op in the current implementation. + _LIBCPP_ASSERT_PEDANTIC( + __n >= 0 || bidirectional_iterator<_Ip>, "If `n < 0`, then `bidirectional_iterator` must be true."); // If `I` models `random_access_iterator`, equivalent to `i += n`. if constexpr (random_access_iterator<_Ip>) { @@ -121,14 +121,16 @@ struct __fn { } } - // Preconditions: Either `assignable_from || sized_sentinel_for` is modeled, or [i, bound_sentinel) denotes a range. + // Preconditions: Either `assignable_from || sized_sentinel_for` is modeled, or [i, bound_sentinel) + // denotes a range. template _Sp> _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_Ip& __i, _Sp __bound_sentinel) const { // If `I` and `S` model `assignable_from`, equivalent to `i = std::move(bound_sentinel)`. if constexpr (assignable_from<_Ip&, _Sp>) { - __i = _VSTD::move(__bound_sentinel); + __i = std::move(__bound_sentinel); } - // Otherwise, if `S` and `I` model `sized_sentinel_for`, equivalent to `ranges::advance(i, bound_sentinel - i)`. + // Otherwise, if `S` and `I` model `sized_sentinel_for`, equivalent to `ranges::advance(i, bound_sentinel - + // i)`. else if constexpr (sized_sentinel_for<_Sp, _Ip>) { (*this)(__i, __bound_sentinel - __i); } @@ -143,25 +145,23 @@ struct __fn { // Preconditions: // * If `n > 0`, [i, bound_sentinel) denotes a range. // * If `n == 0`, [i, bound_sentinel) or [bound_sentinel, i) denotes a range. - // * If `n < 0`, [bound_sentinel, i) denotes a range, `I` models `bidirectional_iterator`, and `I` and `S` model `same_as`. + // * If `n < 0`, [bound_sentinel, i) denotes a range, `I` models `bidirectional_iterator`, and `I` and `S` model + // `same_as`. // Returns: `n - M`, where `M` is the difference between the ending and starting position. template _Sp> - _LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Ip> operator()(_Ip& __i, iter_difference_t<_Ip> __n, - _Sp __bound_sentinel) const { - _LIBCPP_ASSERT((__n >= 0) || (bidirectional_iterator<_Ip> && same_as<_Ip, _Sp>), - "If `n < 0`, then `bidirectional_iterator && same_as` must be true."); + _LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Ip> + operator()(_Ip& __i, iter_difference_t<_Ip> __n, _Sp __bound_sentinel) const { + // Calling `advance` with a negative value on a non-bidirectional iterator is a no-op in the current implementation. + _LIBCPP_ASSERT_PEDANTIC((__n >= 0) || (bidirectional_iterator<_Ip> && same_as<_Ip, _Sp>), + "If `n < 0`, then `bidirectional_iterator && same_as` must be true."); // If `S` and `I` model `sized_sentinel_for`: if constexpr (sized_sentinel_for<_Sp, _Ip>) { // If |n| >= |bound_sentinel - i|, equivalent to `ranges::advance(i, bound_sentinel)`. // __magnitude_geq(a, b) returns |a| >= |b|, assuming they have the same sign. - auto __magnitude_geq = [](auto __a, auto __b) { - return __a == 0 ? __b == 0 : - __a > 0 ? __a >= __b : - __a <= __b; - }; - if (const auto __M = __bound_sentinel - __i; __magnitude_geq(__n, __M)) { + auto __magnitude_geq = [](auto __a, auto __b) { return __a == 0 ? __b == 0 : __a > 0 ? __a >= __b : __a <= __b; }; + if (const auto __m = __bound_sentinel - __i; __magnitude_geq(__n, __m)) { (*this)(__i, __bound_sentinel); - return __n - __M; + return __n - __m; } // Otherwise, equivalent to `ranges::advance(i, n)`. @@ -170,14 +170,14 @@ struct __fn { } else { // Otherwise, if `n` is non-negative, while `bool(i != bound_sentinel)` is true, increments `i` but at // most `n` times. - while (__i != __bound_sentinel && __n > 0) { + while (__n > 0 && __i != __bound_sentinel) { ++__i; --__n; } // Otherwise, while `bool(i != bound_sentinel)` is true, decrements `i` but at most `-n` times. if constexpr (bidirectional_iterator<_Ip> && same_as<_Ip, _Sp>) { - while (__i != __bound_sentinel && __n < 0) { + while (__n < 0 && __i != __bound_sentinel) { --__i; ++__n; } @@ -192,12 +192,14 @@ struct __fn { } // namespace __advance inline namespace __cpo { - inline constexpr auto advance = __advance::__fn{}; +inline constexpr auto advance = __advance::__fn{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_ADVANCE_H diff --git a/include/c++/v1/__iterator/back_insert_iterator.h b/include/c++/v1/__iterator/back_insert_iterator.h index 4c00a7e3..6d3dd4b1 100644 --- a/include/c++/v1/__iterator/back_insert_iterator.h +++ b/include/c++/v1/__iterator/back_insert_iterator.h @@ -21,6 +21,9 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_SUPPRESS_DEPRECATED_PUSH @@ -30,44 +33,53 @@ class _LIBCPP_TEMPLATE_VIS back_insert_iterator : public iterator #endif { -_LIBCPP_SUPPRESS_DEPRECATED_POP + _LIBCPP_SUPPRESS_DEPRECATED_POP + protected: - _Container* container; + _Container* container; + public: - typedef output_iterator_tag iterator_category; - typedef void value_type; -#if _LIBCPP_STD_VER > 17 - typedef ptrdiff_t difference_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; +#if _LIBCPP_STD_VER >= 20 + typedef ptrdiff_t difference_type; #else - typedef void difference_type; + typedef void difference_type; #endif - typedef void pointer; - typedef void reference; - typedef _Container container_type; + typedef void pointer; + typedef void reference; + typedef _Container container_type; - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit back_insert_iterator(_Container& __x) : container(_VSTD::addressof(__x)) {} - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& operator=(const typename _Container::value_type& __value) - {container->push_back(__value); return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit back_insert_iterator(_Container& __x) + : container(std::addressof(__x)) {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& + operator=(const typename _Container::value_type& __value) { + container->push_back(__value); + return *this; + } #ifndef _LIBCPP_CXX03_LANG - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& operator=(typename _Container::value_type&& __value) - {container->push_back(_VSTD::move(__value)); return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& + operator=(typename _Container::value_type&& __value) { + container->push_back(std::move(__value)); + return *this; + } #endif // _LIBCPP_CXX03_LANG - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& operator*() {return *this;} - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& operator++() {return *this;} - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator operator++(int) {return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& operator*() { return *this; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& operator++() { return *this; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator operator++(int) { return *this; } - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Container* __get_container() const { return container; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Container* __get_container() const { return container; } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(back_insert_iterator); template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -back_insert_iterator<_Container> -back_inserter(_Container& __x) -{ - return back_insert_iterator<_Container>(__x); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator<_Container> +back_inserter(_Container& __x) { + return back_insert_iterator<_Container>(__x); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_BACK_INSERT_ITERATOR_H diff --git a/include/c++/v1/__iterator/bounded_iter.h b/include/c++/v1/__iterator/bounded_iter.h index 2682f2a6..8a81c9ff 100644 --- a/include/c++/v1/__iterator/bounded_iter.h +++ b/include/c++/v1/__iterator/bounded_iter.h @@ -11,6 +11,8 @@ #define _LIBCPP___ITERATOR_BOUNDED_ITER_H #include <__assert> +#include <__compare/ordering.h> +#include <__compare/three_way_comparable.h> #include <__config> #include <__iterator/iterator_traits.h> #include <__memory/pointer_traits.h> @@ -23,39 +25,49 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD // Iterator wrapper that carries the valid range it is allowed to access. // // This is a simple iterator wrapper for contiguous iterators that points -// within a [begin, end) range and carries these bounds with it. The iterator -// ensures that it is pointing within that [begin, end) range when it is -// dereferenced. +// within a [begin, end] range and carries these bounds with it. The iterator +// ensures that it is pointing within [begin, end) range when it is +// dereferenced. It also ensures that it is never iterated outside of +// [begin, end]. This is important for two reasons: +// +// 1. It allows `operator*` and `operator++` bounds checks to be `iter != end`. +// This is both less for the optimizer to prove, and aligns with how callers +// typically use iterators. // -// Arithmetic operations are allowed and the bounds of the resulting iterator -// are not checked. Hence, it is possible to create an iterator pointing outside -// its range, but it is not possible to dereference it. -template ::value > > +// 2. Advancing an iterator out of bounds is undefined behavior (see the table +// in [input.iterators]). In particular, when the underlying iterator is a +// pointer, it is undefined at the language level (see [expr.add]). If +// bounded iterators exhibited this undefined behavior, we risk compiler +// optimizations deleting non-redundant bounds checks. +template ::value > > struct __bounded_iter { using value_type = typename iterator_traits<_Iterator>::value_type; using difference_type = typename iterator_traits<_Iterator>::difference_type; using pointer = typename iterator_traits<_Iterator>::pointer; using reference = typename iterator_traits<_Iterator>::reference; using iterator_category = typename iterator_traits<_Iterator>::iterator_category; -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 using iterator_concept = contiguous_iterator_tag; #endif // Create a singular iterator. // - // Such an iterator does not point to any object and is conceptually out of bounds, so it is - // not dereferenceable. Observing operations like comparison and assignment are valid. + // Such an iterator points past the end of an empty span, so it is not dereferenceable. + // Observing operations like comparison and assignment are valid. _LIBCPP_HIDE_FROM_ABI __bounded_iter() = default; _LIBCPP_HIDE_FROM_ABI __bounded_iter(__bounded_iter const&) = default; _LIBCPP_HIDE_FROM_ABI __bounded_iter(__bounded_iter&&) = default; - template ::value > > + template ::value, int> = 0> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR __bounded_iter(__bounded_iter<_OtherIterator> const& __other) _NOEXCEPT : __current_(__other.__current_), __begin_(__other.__begin_), @@ -67,18 +79,20 @@ struct __bounded_iter { private: // Create an iterator wrapping the given iterator, and whose bounds are described - // by the provided [begin, end) range. + // by the provided [begin, end] range. // - // This constructor does not check whether the resulting iterator is within its bounds. - // However, it does check that the provided [begin, end) range is a valid range (that - // is, begin <= end). + // The constructor does not check whether the resulting iterator is within its bounds. It is a + // responsibility of the container to ensure that the given bounds are valid. // // Since it is non-standard for iterators to have this constructor, __bounded_iter must // be created via `std::__make_bounded_iter`. - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit __bounded_iter( - _Iterator __current, _Iterator __begin, _Iterator __end) + _LIBCPP_HIDE_FROM_ABI + _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit __bounded_iter(_Iterator __current, _Iterator __begin, _Iterator __end) : __current_(__current), __begin_(__begin), __end_(__end) { - _LIBCPP_ASSERT(__begin <= __end, "__bounded_iter(current, begin, end): [begin, end) is not a valid range"); + _LIBCPP_ASSERT_INTERNAL( + __begin <= __current, "__bounded_iter(current, begin, end): current and begin are inconsistent"); + _LIBCPP_ASSERT_INTERNAL( + __current <= __end, "__bounded_iter(current, begin, end): current and end are inconsistent"); } template @@ -87,30 +101,37 @@ struct __bounded_iter { public: // Dereference and indexing operations. // - // These operations check that the iterator is dereferenceable, that is within [begin, end). + // These operations check that the iterator is dereferenceable. Since the class invariant is + // that the iterator is always within `[begin, end]`, we only need to check it's not pointing to + // `end`. This is easier for the optimizer because it aligns with the `iter != container.end()` + // checks that typical callers already use (see + // https://github.com/llvm/llvm-project/issues/78829). _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 reference operator*() const _NOEXCEPT { - _LIBCPP_ASSERT( - __in_bounds(__current_), "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __current_ != __end_, "__bounded_iter::operator*: Attempt to dereference an iterator at the end"); return *__current_; } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pointer operator->() const _NOEXCEPT { - _LIBCPP_ASSERT( - __in_bounds(__current_), "__bounded_iter::operator->: Attempt to dereference an out-of-range iterator"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __current_ != __end_, "__bounded_iter::operator->: Attempt to dereference an iterator at the end"); return std::__to_address(__current_); } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 reference operator[](difference_type __n) const _NOEXCEPT { - _LIBCPP_ASSERT( - __in_bounds(__current_ + __n), "__bounded_iter::operator[]: Attempt to index an iterator out-of-range"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n >= __begin_ - __current_, "__bounded_iter::operator[]: Attempt to index an iterator past the start"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n < __end_ - __current_, "__bounded_iter::operator[]: Attempt to index an iterator at or past the end"); return __current_[__n]; } // Arithmetic operations. // - // These operations do not check that the resulting iterator is within the bounds, since that - // would make it impossible to create a past-the-end iterator. + // These operations check that the iterator remains within `[begin, end]`. _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __bounded_iter& operator++() _NOEXCEPT { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __current_ != __end_, "__bounded_iter::operator++: Attempt to advance an iterator past the end"); ++__current_; return *this; } @@ -121,6 +142,8 @@ struct __bounded_iter { } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __bounded_iter& operator--() _NOEXCEPT { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __current_ != __begin_, "__bounded_iter::operator--: Attempt to rewind an iterator past the start"); --__current_; return *this; } @@ -131,6 +154,10 @@ struct __bounded_iter { } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __bounded_iter& operator+=(difference_type __n) _NOEXCEPT { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n >= __begin_ - __current_, "__bounded_iter::operator+=: Attempt to rewind an iterator past the start"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n <= __end_ - __current_, "__bounded_iter::operator+=: Attempt to advance an iterator past the end"); __current_ += __n; return *this; } @@ -148,6 +175,10 @@ struct __bounded_iter { } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __bounded_iter& operator-=(difference_type __n) _NOEXCEPT { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n <= __current_ - __begin_, "__bounded_iter::operator-=: Attempt to rewind an iterator past the start"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __n >= __current_ - __end_, "__bounded_iter::operator-=: Attempt to advance an iterator past the end"); __current_ -= __n; return *this; } @@ -172,10 +203,15 @@ struct __bounded_iter { operator==(__bounded_iter const& __x, __bounded_iter const& __y) _NOEXCEPT { return __x.__current_ == __y.__current_; } + +#if _LIBCPP_STD_VER <= 17 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR friend bool operator!=(__bounded_iter const& __x, __bounded_iter const& __y) _NOEXCEPT { return __x.__current_ != __y.__current_; } +#endif + + // TODO(mordante) disable these overloads in the LLVM 20 release. _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR friend bool operator<(__bounded_iter const& __x, __bounded_iter const& __y) _NOEXCEPT { return __x.__current_ < __y.__current_; @@ -193,16 +229,30 @@ struct __bounded_iter { return __x.__current_ >= __y.__current_; } -private: - // Return whether the given iterator is in the bounds of this __bounded_iter. - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool __in_bounds(_Iterator const& __iter) const { - return __iter >= __begin_ && __iter < __end_; +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI constexpr friend strong_ordering + operator<=>(__bounded_iter const& __x, __bounded_iter const& __y) noexcept { + if constexpr (three_way_comparable<_Iterator, strong_ordering>) { + return __x.__current_ <=> __y.__current_; + } else { + if (__x.__current_ < __y.__current_) + return strong_ordering::less; + + if (__x.__current_ == __y.__current_) + return strong_ordering::equal; + + return strong_ordering::greater; + } } +#endif // _LIBCPP_STD_VER >= 20 +private: template friend struct pointer_traits; + template + friend struct __bounded_iter; _Iterator __current_; // current iterator - _Iterator __begin_, __end_; // valid range represented as [begin, end) + _Iterator __begin_, __end_; // valid range represented as [begin, end] }; template @@ -212,7 +262,7 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR __bounded_iter<_It> __make_bounded_iter( #if _LIBCPP_STD_VER <= 17 template -struct __is_cpp17_contiguous_iterator<__bounded_iter<_Iterator> > : true_type {}; +struct __libcpp_is_contiguous_iterator<__bounded_iter<_Iterator> > : true_type {}; #endif template @@ -228,4 +278,6 @@ struct pointer_traits<__bounded_iter<_Iterator> > { _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_BOUNDED_ITER_H diff --git a/include/c++/v1/__iterator/common_iterator.h b/include/c++/v1/__iterator/common_iterator.h index f7883e2c..199de2cc 100644 --- a/include/c++/v1/__iterator/common_iterator.h +++ b/include/c++/v1/__iterator/common_iterator.h @@ -25,6 +25,7 @@ #include <__iterator/iter_swap.h> #include <__iterator/iterator_traits.h> #include <__iterator/readable_traits.h> +#include <__memory/addressof.h> #include <__type_traits/is_pointer.h> #include <__utility/declval.h> #include @@ -33,119 +34,131 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 -template +template concept __can_use_postfix_proxy = - constructible_from, iter_reference_t<_Iter>> && - move_constructible>; + constructible_from, iter_reference_t<_Iter>> && move_constructible>; -template _Sent> - requires (!same_as<_Iter, _Sent> && copyable<_Iter>) +template _Sent> + requires(!same_as<_Iter, _Sent> && copyable<_Iter>) class common_iterator { struct __proxy { - constexpr const iter_value_t<_Iter>* operator->() const noexcept { - return _VSTD::addressof(__value_); + _LIBCPP_HIDE_FROM_ABI constexpr const iter_value_t<_Iter>* operator->() const noexcept { + return std::addressof(__value_); } iter_value_t<_Iter> __value_; }; struct __postfix_proxy { - constexpr const iter_value_t<_Iter>& operator*() const noexcept { - return __value_; - } + _LIBCPP_HIDE_FROM_ABI constexpr const iter_value_t<_Iter>& operator*() const noexcept { return __value_; } iter_value_t<_Iter> __value_; }; -public: variant<_Iter, _Sent> __hold_; + template _OtherSent> + requires(!same_as<_OtherIter, _OtherSent> && copyable<_OtherIter>) + friend class common_iterator; - common_iterator() requires default_initializable<_Iter> = default; +public: + _LIBCPP_HIDE_FROM_ABI common_iterator() + requires default_initializable<_Iter> + = default; - constexpr common_iterator(_Iter __i) : __hold_(in_place_type<_Iter>, _VSTD::move(__i)) {} - constexpr common_iterator(_Sent __s) : __hold_(in_place_type<_Sent>, _VSTD::move(__s)) {} + _LIBCPP_HIDE_FROM_ABI constexpr common_iterator(_Iter __i) : __hold_(in_place_type<_Iter>, std::move(__i)) {} + _LIBCPP_HIDE_FROM_ABI constexpr common_iterator(_Sent __s) : __hold_(in_place_type<_Sent>, std::move(__s)) {} - template + template requires convertible_to && convertible_to - constexpr common_iterator(const common_iterator<_I2, _S2>& __other) - : __hold_([&]() -> variant<_Iter, _Sent> { - _LIBCPP_ASSERT(!__other.__hold_.valueless_by_exception(), "Attempted to construct from a valueless common_iterator"); - if (__other.__hold_.index() == 0) - return variant<_Iter, _Sent>{in_place_index<0>, _VSTD::__unchecked_get<0>(__other.__hold_)}; - return variant<_Iter, _Sent>{in_place_index<1>, _VSTD::__unchecked_get<1>(__other.__hold_)}; - }()) {} - - template + _LIBCPP_HIDE_FROM_ABI constexpr common_iterator(const common_iterator<_I2, _S2>& __other) + : __hold_([&]() -> variant<_Iter, _Sent> { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !__other.__hold_.valueless_by_exception(), "Attempted to construct from a valueless common_iterator"); + if (__other.__hold_.index() == 0) + return variant<_Iter, _Sent>{in_place_index<0>, std::__unchecked_get<0>(__other.__hold_)}; + return variant<_Iter, _Sent>{in_place_index<1>, std::__unchecked_get<1>(__other.__hold_)}; + }()) {} + + template requires convertible_to && convertible_to && assignable_from<_Iter&, const _I2&> && assignable_from<_Sent&, const _S2&> - common_iterator& operator=(const common_iterator<_I2, _S2>& __other) { - _LIBCPP_ASSERT(!__other.__hold_.valueless_by_exception(), "Attempted to assign from a valueless common_iterator"); + _LIBCPP_HIDE_FROM_ABI common_iterator& operator=(const common_iterator<_I2, _S2>& __other) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !__other.__hold_.valueless_by_exception(), "Attempted to assign from a valueless common_iterator"); - auto __idx = __hold_.index(); + auto __idx = __hold_.index(); auto __other_idx = __other.__hold_.index(); // If they're the same index, just assign. if (__idx == 0 && __other_idx == 0) - _VSTD::__unchecked_get<0>(__hold_) = _VSTD::__unchecked_get<0>(__other.__hold_); + std::__unchecked_get<0>(__hold_) = std::__unchecked_get<0>(__other.__hold_); else if (__idx == 1 && __other_idx == 1) - _VSTD::__unchecked_get<1>(__hold_) = _VSTD::__unchecked_get<1>(__other.__hold_); + std::__unchecked_get<1>(__hold_) = std::__unchecked_get<1>(__other.__hold_); // Otherwise replace with the oposite element. else if (__other_idx == 1) - __hold_.template emplace<1>(_VSTD::__unchecked_get<1>(__other.__hold_)); + __hold_.template emplace<1>(std::__unchecked_get<1>(__other.__hold_)); else if (__other_idx == 0) - __hold_.template emplace<0>(_VSTD::__unchecked_get<0>(__other.__hold_)); + __hold_.template emplace<0>(std::__unchecked_get<0>(__other.__hold_)); return *this; } - constexpr decltype(auto) operator*() - { - _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__hold_), "Attempted to dereference a non-dereferenceable common_iterator"); - return *_VSTD::__unchecked_get<_Iter>(__hold_); + _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator*() { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + std::holds_alternative<_Iter>(__hold_), "Attempted to dereference a non-dereferenceable common_iterator"); + return *std::__unchecked_get<_Iter>(__hold_); } - constexpr decltype(auto) operator*() const + _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator*() const requires __dereferenceable { - _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__hold_), "Attempted to dereference a non-dereferenceable common_iterator"); - return *_VSTD::__unchecked_get<_Iter>(__hold_); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + std::holds_alternative<_Iter>(__hold_), "Attempted to dereference a non-dereferenceable common_iterator"); + return *std::__unchecked_get<_Iter>(__hold_); } - template - decltype(auto) operator->() const - requires indirectly_readable && - (requires(const _I2& __i) { __i.operator->(); } || - is_reference_v> || - constructible_from, iter_reference_t<_I2>>) + template + _LIBCPP_HIDE_FROM_ABI auto operator->() const + requires indirectly_readable && (requires(const _I2& __i) { + __i.operator->(); + } || is_reference_v> || constructible_from, iter_reference_t<_I2>>) { - _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__hold_), "Attempted to dereference a non-dereferenceable common_iterator"); - if constexpr (is_pointer_v<_Iter> || requires(const _Iter& __i) { __i.operator->(); }) { - return _VSTD::__unchecked_get<_Iter>(__hold_); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + std::holds_alternative<_Iter>(__hold_), "Attempted to dereference a non-dereferenceable common_iterator"); + if constexpr (is_pointer_v<_Iter> || requires(const _Iter& __i) { __i.operator->(); }) { + return std::__unchecked_get<_Iter>(__hold_); } else if constexpr (is_reference_v>) { - auto&& __tmp = *_VSTD::__unchecked_get<_Iter>(__hold_); - return _VSTD::addressof(__tmp); + auto&& __tmp = *std::__unchecked_get<_Iter>(__hold_); + return std::addressof(__tmp); } else { - return __proxy{*_VSTD::__unchecked_get<_Iter>(__hold_)}; + return __proxy{*std::__unchecked_get<_Iter>(__hold_)}; } } - common_iterator& operator++() { - _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__hold_), "Attempted to increment a non-dereferenceable common_iterator"); - ++_VSTD::__unchecked_get<_Iter>(__hold_); return *this; + _LIBCPP_HIDE_FROM_ABI common_iterator& operator++() { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + std::holds_alternative<_Iter>(__hold_), "Attempted to increment a non-dereferenceable common_iterator"); + ++std::__unchecked_get<_Iter>(__hold_); + return *this; } - decltype(auto) operator++(int) { - _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__hold_), "Attempted to increment a non-dereferenceable common_iterator"); + _LIBCPP_HIDE_FROM_ABI decltype(auto) operator++(int) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + std::holds_alternative<_Iter>(__hold_), "Attempted to increment a non-dereferenceable common_iterator"); if constexpr (forward_iterator<_Iter>) { auto __tmp = *this; ++*this; return __tmp; - } else if constexpr (requires (_Iter& __i) { { *__i++ } -> __can_reference; } || - !__can_use_postfix_proxy<_Iter>) { - return _VSTD::__unchecked_get<_Iter>(__hold_)++; + } else if constexpr (requires(_Iter& __i) { + { *__i++ } -> __can_reference; + } || !__can_use_postfix_proxy<_Iter>) { + return std::__unchecked_get<_Iter>(__hold_)++; } else { auto __p = __postfix_proxy{**this}; ++*this; @@ -153,12 +166,14 @@ class common_iterator { } } - template _S2> + template _S2> requires sentinel_for<_Sent, _I2> - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator==(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) { - _LIBCPP_ASSERT(!__x.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); - _LIBCPP_ASSERT(!__y.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); + _LIBCPP_HIDE_FROM_ABI friend constexpr bool + operator==(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !__x.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !__y.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); auto __x_index = __x.__hold_.index(); auto __y_index = __y.__hold_.index(); @@ -167,17 +182,19 @@ class common_iterator { return true; if (__x_index == 0) - return _VSTD::__unchecked_get<_Iter>(__x.__hold_) == _VSTD::__unchecked_get<_S2>(__y.__hold_); + return std::__unchecked_get<_Iter>(__x.__hold_) == std::__unchecked_get<_S2>(__y.__hold_); - return _VSTD::__unchecked_get<_Sent>(__x.__hold_) == _VSTD::__unchecked_get<_I2>(__y.__hold_); + return std::__unchecked_get<_Sent>(__x.__hold_) == std::__unchecked_get<_I2>(__y.__hold_); } - template _S2> + template _S2> requires sentinel_for<_Sent, _I2> && equality_comparable_with<_Iter, _I2> - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator==(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) { - _LIBCPP_ASSERT(!__x.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); - _LIBCPP_ASSERT(!__y.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); + _LIBCPP_HIDE_FROM_ABI friend constexpr bool + operator==(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !__x.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !__y.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); auto __x_index = __x.__hold_.index(); auto __y_index = __y.__hold_.index(); @@ -186,20 +203,22 @@ class common_iterator { return true; if (__x_index == 0 && __y_index == 0) - return _VSTD::__unchecked_get<_Iter>(__x.__hold_) == _VSTD::__unchecked_get<_I2>(__y.__hold_); + return std::__unchecked_get<_Iter>(__x.__hold_) == std::__unchecked_get<_I2>(__y.__hold_); if (__x_index == 0) - return _VSTD::__unchecked_get<_Iter>(__x.__hold_) == _VSTD::__unchecked_get<_S2>(__y.__hold_); + return std::__unchecked_get<_Iter>(__x.__hold_) == std::__unchecked_get<_S2>(__y.__hold_); - return _VSTD::__unchecked_get<_Sent>(__x.__hold_) == _VSTD::__unchecked_get<_I2>(__y.__hold_); + return std::__unchecked_get<_Sent>(__x.__hold_) == std::__unchecked_get<_I2>(__y.__hold_); } - template _I2, sized_sentinel_for<_Iter> _S2> + template _I2, sized_sentinel_for<_Iter> _S2> requires sized_sentinel_for<_Sent, _I2> - _LIBCPP_HIDE_FROM_ABI - friend constexpr iter_difference_t<_I2> operator-(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) { - _LIBCPP_ASSERT(!__x.__hold_.valueless_by_exception(), "Attempted to subtract from a valueless common_iterator"); - _LIBCPP_ASSERT(!__y.__hold_.valueless_by_exception(), "Attempted to subtract a valueless common_iterator"); + _LIBCPP_HIDE_FROM_ABI friend constexpr iter_difference_t<_I2> + operator-(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !__x.__hold_.valueless_by_exception(), "Attempted to subtract from a valueless common_iterator"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + !__y.__hold_.valueless_by_exception(), "Attempted to subtract a valueless common_iterator"); auto __x_index = __x.__hold_.index(); auto __y_index = __y.__hold_.index(); @@ -208,74 +227,73 @@ class common_iterator { return 0; if (__x_index == 0 && __y_index == 0) - return _VSTD::__unchecked_get<_Iter>(__x.__hold_) - _VSTD::__unchecked_get<_I2>(__y.__hold_); + return std::__unchecked_get<_Iter>(__x.__hold_) - std::__unchecked_get<_I2>(__y.__hold_); if (__x_index == 0) - return _VSTD::__unchecked_get<_Iter>(__x.__hold_) - _VSTD::__unchecked_get<_S2>(__y.__hold_); + return std::__unchecked_get<_Iter>(__x.__hold_) - std::__unchecked_get<_S2>(__y.__hold_); - return _VSTD::__unchecked_get<_Sent>(__x.__hold_) - _VSTD::__unchecked_get<_I2>(__y.__hold_); + return std::__unchecked_get<_Sent>(__x.__hold_) - std::__unchecked_get<_I2>(__y.__hold_); } - _LIBCPP_HIDE_FROM_ABI friend constexpr iter_rvalue_reference_t<_Iter> iter_move(const common_iterator& __i) - noexcept(noexcept(ranges::iter_move(std::declval()))) - requires input_iterator<_Iter> + _LIBCPP_HIDE_FROM_ABI friend constexpr iter_rvalue_reference_t<_Iter> + iter_move(const common_iterator& __i) noexcept(noexcept(ranges::iter_move(std::declval()))) + requires input_iterator<_Iter> { - _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__i.__hold_), "Attempted to iter_move a non-dereferenceable common_iterator"); - return ranges::iter_move( _VSTD::__unchecked_get<_Iter>(__i.__hold_)); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + std::holds_alternative<_Iter>(__i.__hold_), "Attempted to iter_move a non-dereferenceable common_iterator"); + return ranges::iter_move(std::__unchecked_get<_Iter>(__i.__hold_)); } - template _I2, class _S2> - _LIBCPP_HIDE_FROM_ABI friend constexpr void iter_swap(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) - noexcept(noexcept(ranges::iter_swap(std::declval(), std::declval()))) - { - _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__x.__hold_), "Attempted to iter_swap a non-dereferenceable common_iterator"); - _LIBCPP_ASSERT(std::holds_alternative<_I2>(__y.__hold_), "Attempted to iter_swap a non-dereferenceable common_iterator"); - return ranges::iter_swap(_VSTD::__unchecked_get<_Iter>(__x.__hold_), _VSTD::__unchecked_get<_I2>(__y.__hold_)); + template _I2, class _S2> + _LIBCPP_HIDE_FROM_ABI friend constexpr void + iter_swap(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) noexcept( + noexcept(ranges::iter_swap(std::declval(), std::declval()))) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + std::holds_alternative<_Iter>(__x.__hold_), "Attempted to iter_swap a non-dereferenceable common_iterator"); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + std::holds_alternative<_I2>(__y.__hold_), "Attempted to iter_swap a non-dereferenceable common_iterator"); + return ranges::iter_swap(std::__unchecked_get<_Iter>(__x.__hold_), std::__unchecked_get<_I2>(__y.__hold_)); } }; -template +template struct incrementable_traits> { using difference_type = iter_difference_t<_Iter>; }; -template -concept __denotes_forward_iter = - requires { typename iterator_traits<_Iter>::iterator_category; } && - derived_from::iterator_category, forward_iterator_tag>; +template +concept __denotes_forward_iter = requires { + typename iterator_traits<_Iter>::iterator_category; +} && derived_from::iterator_category, forward_iterator_tag>; -template -concept __common_iter_has_ptr_op = requires(const common_iterator<_Iter, _Sent>& __a) { - __a.operator->(); -}; +template +concept __common_iter_has_ptr_op = requires(const common_iterator<_Iter, _Sent>& __a) { __a.operator->(); }; -template +template struct __arrow_type_or_void { - using type = void; + using type = void; }; -template +template requires __common_iter_has_ptr_op<_Iter, _Sent> struct __arrow_type_or_void<_Iter, _Sent> { - using type = decltype(std::declval&>().operator->()); + using type = decltype(std::declval&>().operator->()); }; -template +template struct iterator_traits> { - using iterator_concept = _If, - forward_iterator_tag, - input_iterator_tag>; - using iterator_category = _If<__denotes_forward_iter<_Iter>, - forward_iterator_tag, - input_iterator_tag>; - using pointer = typename __arrow_type_or_void<_Iter, _Sent>::type; - using value_type = iter_value_t<_Iter>; - using difference_type = iter_difference_t<_Iter>; - using reference = iter_reference_t<_Iter>; + using iterator_concept = _If, forward_iterator_tag, input_iterator_tag>; + using iterator_category = _If<__denotes_forward_iter<_Iter>, forward_iterator_tag, input_iterator_tag>; + using pointer = typename __arrow_type_or_void<_Iter, _Sent>::type; + using value_type = iter_value_t<_Iter>; + using difference_type = iter_difference_t<_Iter>; + using reference = iter_reference_t<_Iter>; }; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_COMMON_ITERATOR_H diff --git a/include/c++/v1/__iterator/concepts.h b/include/c++/v1/__iterator/concepts.h index d9d40a42..9726e861 100644 --- a/include/c++/v1/__iterator/concepts.h +++ b/include/c++/v1/__iterator/concepts.h @@ -34,6 +34,7 @@ #include <__memory/pointer_traits.h> #include <__type_traits/add_pointer.h> #include <__type_traits/common_reference.h> +#include <__type_traits/integral_constant.h> #include <__type_traits/is_pointer.h> #include <__type_traits/is_reference.h> #include <__type_traits/remove_cv.h> @@ -46,254 +47,211 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [iterator.concept.readable] -template +template concept __indirectly_readable_impl = - requires(const _In __i) { - typename iter_value_t<_In>; - typename iter_reference_t<_In>; - typename iter_rvalue_reference_t<_In>; - { *__i } -> same_as>; - { ranges::iter_move(__i) } -> same_as>; - } && - common_reference_with&&, iter_value_t<_In>&> && - common_reference_with&&, iter_rvalue_reference_t<_In>&&> && - common_reference_with&&, const iter_value_t<_In>&>; - -template + requires(const _In __i) { + typename iter_value_t<_In>; + typename iter_reference_t<_In>; + typename iter_rvalue_reference_t<_In>; + { *__i } -> same_as>; + { ranges::iter_move(__i) } -> same_as>; + } && common_reference_with&&, iter_value_t<_In>&> && + common_reference_with&&, iter_rvalue_reference_t<_In>&&> && + common_reference_with&&, const iter_value_t<_In>&>; + +template concept indirectly_readable = __indirectly_readable_impl>; -template +template using iter_common_reference_t = common_reference_t, iter_value_t<_Tp>&>; // [iterator.concept.writable] -template -concept indirectly_writable = - requires(_Out&& __o, _Tp&& __t) { - *__o = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving - *_VSTD::forward<_Out>(__o) = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving - const_cast&&>(*__o) = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving - const_cast&&>(*_VSTD::forward<_Out>(__o)) = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving - }; +template +concept indirectly_writable = requires(_Out&& __o, _Tp&& __t) { + *__o = std::forward<_Tp>(__t); // not required to be equality-preserving + *std::forward<_Out>(__o) = std::forward<_Tp>(__t); // not required to be equality-preserving + const_cast&&>(*__o) = std::forward<_Tp>(__t); // not required to be equality-preserving + const_cast&&>(*std::forward<_Out>(__o)) = + std::forward<_Tp>(__t); // not required to be equality-preserving +}; // [iterator.concept.winc] -template +template concept __integer_like = integral<_Tp> && !same_as<_Tp, bool>; -template +template concept __signed_integer_like = signed_integral<_Tp>; -template +template concept weakly_incrementable = - // TODO: remove this once the clang bug is fixed (bugs.llvm.org/PR48173). - !same_as<_Ip, bool> && // Currently, clang does not handle bool correctly. - movable<_Ip> && - requires(_Ip __i) { - typename iter_difference_t<_Ip>; - requires __signed_integer_like>; - { ++__i } -> same_as<_Ip&>; // not required to be equality-preserving - __i++; // not required to be equality-preserving - }; + // TODO: remove this once the clang bug is fixed (bugs.llvm.org/PR48173). + !same_as<_Ip, bool> && // Currently, clang does not handle bool correctly. + movable<_Ip> && requires(_Ip __i) { + typename iter_difference_t<_Ip>; + requires __signed_integer_like>; + { ++__i } -> same_as<_Ip&>; // not required to be equality-preserving + __i++; // not required to be equality-preserving + }; // [iterator.concept.inc] -template -concept incrementable = - regular<_Ip> && - weakly_incrementable<_Ip> && - requires(_Ip __i) { - { __i++ } -> same_as<_Ip>; - }; +template +concept incrementable = regular<_Ip> && weakly_incrementable<_Ip> && requires(_Ip __i) { + { __i++ } -> same_as<_Ip>; +}; // [iterator.concept.iterator] -template -concept input_or_output_iterator = - requires(_Ip __i) { - { *__i } -> __can_reference; - } && - weakly_incrementable<_Ip>; +template +concept input_or_output_iterator = requires(_Ip __i) { + { *__i } -> __can_reference; +} && weakly_incrementable<_Ip>; // [iterator.concept.sentinel] -template -concept sentinel_for = - semiregular<_Sp> && - input_or_output_iterator<_Ip> && - __weakly_equality_comparable_with<_Sp, _Ip>; +template +concept sentinel_for = semiregular<_Sp> && input_or_output_iterator<_Ip> && __weakly_equality_comparable_with<_Sp, _Ip>; -template +template inline constexpr bool disable_sized_sentinel_for = false; -template +template concept sized_sentinel_for = - sentinel_for<_Sp, _Ip> && - !disable_sized_sentinel_for, remove_cv_t<_Ip>> && - requires(const _Ip& __i, const _Sp& __s) { - { __s - __i } -> same_as>; - { __i - __s } -> same_as>; - }; + sentinel_for<_Sp, _Ip> && !disable_sized_sentinel_for, remove_cv_t<_Ip>> && + requires(const _Ip& __i, const _Sp& __s) { + { __s - __i } -> same_as>; + { __i - __s } -> same_as>; + }; // [iterator.concept.input] -template -concept input_iterator = - input_or_output_iterator<_Ip> && - indirectly_readable<_Ip> && - requires { typename _ITER_CONCEPT<_Ip>; } && - derived_from<_ITER_CONCEPT<_Ip>, input_iterator_tag>; +template +concept input_iterator = input_or_output_iterator<_Ip> && indirectly_readable<_Ip> && requires { + typename _ITER_CONCEPT<_Ip>; +} && derived_from<_ITER_CONCEPT<_Ip>, input_iterator_tag>; // [iterator.concept.output] -template +template concept output_iterator = - input_or_output_iterator<_Ip> && - indirectly_writable<_Ip, _Tp> && - requires (_Ip __it, _Tp&& __t) { - *__it++ = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving - }; + input_or_output_iterator<_Ip> && indirectly_writable<_Ip, _Tp> && requires(_Ip __it, _Tp&& __t) { + *__it++ = std::forward<_Tp>(__t); // not required to be equality-preserving + }; // [iterator.concept.forward] -template +template concept forward_iterator = - input_iterator<_Ip> && - derived_from<_ITER_CONCEPT<_Ip>, forward_iterator_tag> && - incrementable<_Ip> && - sentinel_for<_Ip, _Ip>; + input_iterator<_Ip> && derived_from<_ITER_CONCEPT<_Ip>, forward_iterator_tag> && incrementable<_Ip> && + sentinel_for<_Ip, _Ip>; // [iterator.concept.bidir] -template +template concept bidirectional_iterator = - forward_iterator<_Ip> && - derived_from<_ITER_CONCEPT<_Ip>, bidirectional_iterator_tag> && - requires(_Ip __i) { - { --__i } -> same_as<_Ip&>; - { __i-- } -> same_as<_Ip>; - }; - -template + forward_iterator<_Ip> && derived_from<_ITER_CONCEPT<_Ip>, bidirectional_iterator_tag> && requires(_Ip __i) { + { --__i } -> same_as<_Ip&>; + { __i-- } -> same_as<_Ip>; + }; + +template concept random_access_iterator = - bidirectional_iterator<_Ip> && - derived_from<_ITER_CONCEPT<_Ip>, random_access_iterator_tag> && - totally_ordered<_Ip> && - sized_sentinel_for<_Ip, _Ip> && - requires(_Ip __i, const _Ip __j, const iter_difference_t<_Ip> __n) { - { __i += __n } -> same_as<_Ip&>; - { __j + __n } -> same_as<_Ip>; - { __n + __j } -> same_as<_Ip>; - { __i -= __n } -> same_as<_Ip&>; - { __j - __n } -> same_as<_Ip>; - { __j[__n] } -> same_as>; - }; - -template + bidirectional_iterator<_Ip> && derived_from<_ITER_CONCEPT<_Ip>, random_access_iterator_tag> && + totally_ordered<_Ip> && sized_sentinel_for<_Ip, _Ip> && + requires(_Ip __i, const _Ip __j, const iter_difference_t<_Ip> __n) { + { __i += __n } -> same_as<_Ip&>; + { __j + __n } -> same_as<_Ip>; + { __n + __j } -> same_as<_Ip>; + { __i -= __n } -> same_as<_Ip&>; + { __j - __n } -> same_as<_Ip>; + { __j[__n] } -> same_as>; + }; + +template concept contiguous_iterator = - random_access_iterator<_Ip> && - derived_from<_ITER_CONCEPT<_Ip>, contiguous_iterator_tag> && - is_lvalue_reference_v> && - same_as, remove_cvref_t>> && - requires(const _Ip& __i) { - { _VSTD::to_address(__i) } -> same_as>>; - }; - -template + random_access_iterator<_Ip> && derived_from<_ITER_CONCEPT<_Ip>, contiguous_iterator_tag> && + is_lvalue_reference_v> && same_as, remove_cvref_t>> && + requires(const _Ip& __i) { + { std::to_address(__i) } -> same_as>>; + }; + +template concept __has_arrow = input_iterator<_Ip> && (is_pointer_v<_Ip> || requires(_Ip __i) { __i.operator->(); }); // [indirectcallable.indirectinvocable] -template +template concept indirectly_unary_invocable = - indirectly_readable<_It> && - copy_constructible<_Fp> && - invocable<_Fp&, iter_value_t<_It>&> && - invocable<_Fp&, iter_reference_t<_It>> && - invocable<_Fp&, iter_common_reference_t<_It>> && - common_reference_with< - invoke_result_t<_Fp&, iter_value_t<_It>&>, - invoke_result_t<_Fp&, iter_reference_t<_It>>>; - -template + indirectly_readable<_It> && copy_constructible<_Fp> && invocable<_Fp&, iter_value_t<_It>&> && + invocable<_Fp&, iter_reference_t<_It>> && + common_reference_with< invoke_result_t<_Fp&, iter_value_t<_It>&>, invoke_result_t<_Fp&, iter_reference_t<_It>>>; + +template concept indirectly_regular_unary_invocable = - indirectly_readable<_It> && - copy_constructible<_Fp> && - regular_invocable<_Fp&, iter_value_t<_It>&> && - regular_invocable<_Fp&, iter_reference_t<_It>> && - regular_invocable<_Fp&, iter_common_reference_t<_It>> && - common_reference_with< - invoke_result_t<_Fp&, iter_value_t<_It>&>, - invoke_result_t<_Fp&, iter_reference_t<_It>>>; - -template + indirectly_readable<_It> && copy_constructible<_Fp> && regular_invocable<_Fp&, iter_value_t<_It>&> && + regular_invocable<_Fp&, iter_reference_t<_It>> && + common_reference_with< invoke_result_t<_Fp&, iter_value_t<_It>&>, invoke_result_t<_Fp&, iter_reference_t<_It>>>; + +template concept indirect_unary_predicate = - indirectly_readable<_It> && - copy_constructible<_Fp> && - predicate<_Fp&, iter_value_t<_It>&> && - predicate<_Fp&, iter_reference_t<_It>> && - predicate<_Fp&, iter_common_reference_t<_It>>; + indirectly_readable<_It> && copy_constructible<_Fp> && predicate<_Fp&, iter_value_t<_It>&> && + predicate<_Fp&, iter_reference_t<_It>>; -template +template concept indirect_binary_predicate = - indirectly_readable<_It1> && indirectly_readable<_It2> && - copy_constructible<_Fp> && - predicate<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> && - predicate<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> && - predicate<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> && - predicate<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>> && - predicate<_Fp&, iter_common_reference_t<_It1>, iter_common_reference_t<_It2>>; - -template + indirectly_readable<_It1> && indirectly_readable<_It2> && copy_constructible<_Fp> && + predicate<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> && + predicate<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> && + predicate<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> && + predicate<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>>; + +template concept indirect_equivalence_relation = - indirectly_readable<_It1> && indirectly_readable<_It2> && - copy_constructible<_Fp> && - equivalence_relation<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> && - equivalence_relation<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> && - equivalence_relation<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> && - equivalence_relation<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>> && - equivalence_relation<_Fp&, iter_common_reference_t<_It1>, iter_common_reference_t<_It2>>; - -template + indirectly_readable<_It1> && indirectly_readable<_It2> && copy_constructible<_Fp> && + equivalence_relation<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> && + equivalence_relation<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> && + equivalence_relation<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> && + equivalence_relation<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>>; + +template concept indirect_strict_weak_order = - indirectly_readable<_It1> && indirectly_readable<_It2> && - copy_constructible<_Fp> && - strict_weak_order<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> && - strict_weak_order<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> && - strict_weak_order<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> && - strict_weak_order<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>> && - strict_weak_order<_Fp&, iter_common_reference_t<_It1>, iter_common_reference_t<_It2>>; - -template - requires (indirectly_readable<_Its> && ...) && invocable<_Fp, iter_reference_t<_Its>...> + indirectly_readable<_It1> && indirectly_readable<_It2> && copy_constructible<_Fp> && + strict_weak_order<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> && + strict_weak_order<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> && + strict_weak_order<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> && + strict_weak_order<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>>; + +template + requires(indirectly_readable<_Its> && ...) && invocable<_Fp, iter_reference_t<_Its>...> using indirect_result_t = invoke_result_t<_Fp, iter_reference_t<_Its>...>; -template -concept indirectly_movable = - indirectly_readable<_In> && - indirectly_writable<_Out, iter_rvalue_reference_t<_In>>; +template +concept indirectly_movable = indirectly_readable<_In> && indirectly_writable<_Out, iter_rvalue_reference_t<_In>>; -template +template concept indirectly_movable_storable = - indirectly_movable<_In, _Out> && - indirectly_writable<_Out, iter_value_t<_In>> && - movable> && - constructible_from, iter_rvalue_reference_t<_In>> && - assignable_from&, iter_rvalue_reference_t<_In>>; - -template -concept indirectly_copyable = - indirectly_readable<_In> && - indirectly_writable<_Out, iter_reference_t<_In>>; - -template + indirectly_movable<_In, _Out> && indirectly_writable<_Out, iter_value_t<_In>> && movable> && + constructible_from, iter_rvalue_reference_t<_In>> && + assignable_from&, iter_rvalue_reference_t<_In>>; + +template +concept indirectly_copyable = indirectly_readable<_In> && indirectly_writable<_Out, iter_reference_t<_In>>; + +template concept indirectly_copyable_storable = - indirectly_copyable<_In, _Out> && - indirectly_writable<_Out, iter_value_t<_In>&> && - indirectly_writable<_Out, const iter_value_t<_In>&> && - indirectly_writable<_Out, iter_value_t<_In>&&> && - indirectly_writable<_Out, const iter_value_t<_In>&&> && - copyable> && - constructible_from, iter_reference_t<_In>> && - assignable_from&, iter_reference_t<_In>>; + indirectly_copyable<_In, _Out> && indirectly_writable<_Out, iter_value_t<_In>&> && + indirectly_writable<_Out, const iter_value_t<_In>&> && indirectly_writable<_Out, iter_value_t<_In>&&> && + indirectly_writable<_Out, const iter_value_t<_In>&&> && copyable> && + constructible_from, iter_reference_t<_In>> && + assignable_from&, iter_reference_t<_In>>; // Note: indirectly_swappable is located in iter_swap.h to prevent a dependency cycle // (both iter_swap and indirectly_swappable require indirectly_readable). -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +template +using __has_random_access_iterator_category_or_concept +#if _LIBCPP_STD_VER >= 20 + = integral_constant>; +#else // _LIBCPP_STD_VER < 20 + = __has_random_access_iterator_category<_Tp>; +#endif // _LIBCPP_STD_VER _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/counted_iterator.h b/include/c++/v1/__iterator/counted_iterator.h index 5fdbff4b..ea2832e3 100644 --- a/include/c++/v1/__iterator/counted_iterator.h +++ b/include/c++/v1/__iterator/counted_iterator.h @@ -34,135 +34,126 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 -template +template struct __counted_iterator_concept {}; -template +template requires requires { typename _Iter::iterator_concept; } struct __counted_iterator_concept<_Iter> { using iterator_concept = typename _Iter::iterator_concept; }; -template +template struct __counted_iterator_category {}; -template +template requires requires { typename _Iter::iterator_category; } struct __counted_iterator_category<_Iter> { using iterator_category = typename _Iter::iterator_category; }; -template +template struct __counted_iterator_value_type {}; -template +template struct __counted_iterator_value_type<_Iter> { using value_type = iter_value_t<_Iter>; }; -template +template class counted_iterator - : public __counted_iterator_concept<_Iter> - , public __counted_iterator_category<_Iter> - , public __counted_iterator_value_type<_Iter> -{ + : public __counted_iterator_concept<_Iter>, + public __counted_iterator_category<_Iter>, + public __counted_iterator_value_type<_Iter> { public: - _LIBCPP_NO_UNIQUE_ADDRESS _Iter __current_ = _Iter(); - iter_difference_t<_Iter> __count_ = 0; - - using iterator_type = _Iter; + using iterator_type = _Iter; using difference_type = iter_difference_t<_Iter>; - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator() requires default_initializable<_Iter> = default; + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator() + requires default_initializable<_Iter> + = default; - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator(_Iter __iter, iter_difference_t<_Iter> __n) - : __current_(_VSTD::move(__iter)), __count_(__n) { - _LIBCPP_ASSERT(__n >= 0, "__n must not be negative."); + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator(_Iter __iter, iter_difference_t<_Iter> __n) + : __current_(std::move(__iter)), __count_(__n) { + _LIBCPP_ASSERT_UNCATEGORIZED(__n >= 0, "__n must not be negative."); } - template + template requires convertible_to - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator(const counted_iterator<_I2>& __other) - : __current_(__other.__current_), __count_(__other.__count_) {} + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator(const counted_iterator<_I2>& __other) + : __current_(__other.__current_), __count_(__other.__count_) {} - template + template requires assignable_from<_Iter&, const _I2&> - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator& operator=(const counted_iterator<_I2>& __other) { + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator& operator=(const counted_iterator<_I2>& __other) { __current_ = __other.__current_; - __count_ = __other.__count_; + __count_ = __other.__count_; return *this; } - _LIBCPP_HIDE_FROM_ABI - constexpr const _Iter& base() const& noexcept { return __current_; } + _LIBCPP_HIDE_FROM_ABI constexpr const _Iter& base() const& noexcept { return __current_; } - _LIBCPP_HIDE_FROM_ABI - constexpr _Iter base() && { return _VSTD::move(__current_); } + _LIBCPP_HIDE_FROM_ABI constexpr _Iter base() && { return std::move(__current_); } - _LIBCPP_HIDE_FROM_ABI - constexpr iter_difference_t<_Iter> count() const noexcept { return __count_; } + _LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Iter> count() const noexcept { return __count_; } - _LIBCPP_HIDE_FROM_ABI - constexpr decltype(auto) operator*() { - _LIBCPP_ASSERT(__count_ > 0, "Iterator is equal to or past end."); + _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator*() { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__count_ > 0, "Iterator is equal to or past end."); return *__current_; } - _LIBCPP_HIDE_FROM_ABI - constexpr decltype(auto) operator*() const + _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator*() const requires __dereferenceable { - _LIBCPP_ASSERT(__count_ > 0, "Iterator is equal to or past end."); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__count_ > 0, "Iterator is equal to or past end."); return *__current_; } - _LIBCPP_HIDE_FROM_ABI - constexpr auto operator->() const noexcept + _LIBCPP_HIDE_FROM_ABI constexpr auto operator->() const noexcept requires contiguous_iterator<_Iter> { - return _VSTD::to_address(__current_); + return std::to_address(__current_); } - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator& operator++() { - _LIBCPP_ASSERT(__count_ > 0, "Iterator already at or past end."); + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator& operator++() { + _LIBCPP_ASSERT_UNCATEGORIZED(__count_ > 0, "Iterator already at or past end."); ++__current_; --__count_; return *this; } - _LIBCPP_HIDE_FROM_ABI - decltype(auto) operator++(int) { - _LIBCPP_ASSERT(__count_ > 0, "Iterator already at or past end."); + _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator++(int) { + _LIBCPP_ASSERT_UNCATEGORIZED(__count_ > 0, "Iterator already at or past end."); --__count_; -#ifndef _LIBCPP_NO_EXCEPTIONS - try { return __current_++; } - catch(...) { ++__count_; throw; } -#else +# ifndef _LIBCPP_HAS_NO_EXCEPTIONS + try { + return __current_++; + } catch (...) { + ++__count_; + throw; + } +# else return __current_++; -#endif // _LIBCPP_NO_EXCEPTIONS +# endif // _LIBCPP_HAS_NO_EXCEPTIONS } - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator operator++(int) + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator operator++(int) requires forward_iterator<_Iter> { - _LIBCPP_ASSERT(__count_ > 0, "Iterator already at or past end."); + _LIBCPP_ASSERT_UNCATEGORIZED(__count_ > 0, "Iterator already at or past end."); counted_iterator __tmp = *this; ++*this; return __tmp; } - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator& operator--() + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator& operator--() requires bidirectional_iterator<_Iter> { --__current_; @@ -170,8 +161,7 @@ class counted_iterator return *this; } - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator operator--(int) + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator operator--(int) requires bidirectional_iterator<_Iter> { counted_iterator __tmp = *this; @@ -179,132 +169,121 @@ class counted_iterator return __tmp; } - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator operator+(iter_difference_t<_Iter> __n) const + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator operator+(iter_difference_t<_Iter> __n) const requires random_access_iterator<_Iter> { return counted_iterator(__current_ + __n, __count_ - __n); } - _LIBCPP_HIDE_FROM_ABI - friend constexpr counted_iterator operator+( - iter_difference_t<_Iter> __n, const counted_iterator& __x) + _LIBCPP_HIDE_FROM_ABI friend constexpr counted_iterator + operator+(iter_difference_t<_Iter> __n, const counted_iterator& __x) requires random_access_iterator<_Iter> { return __x + __n; } - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator& operator+=(iter_difference_t<_Iter> __n) + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator& operator+=(iter_difference_t<_Iter> __n) requires random_access_iterator<_Iter> { - _LIBCPP_ASSERT(__n <= __count_, "Cannot advance iterator past end."); + _LIBCPP_ASSERT_UNCATEGORIZED(__n <= __count_, "Cannot advance iterator past end."); __current_ += __n; __count_ -= __n; return *this; } - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator operator-(iter_difference_t<_Iter> __n) const + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator operator-(iter_difference_t<_Iter> __n) const requires random_access_iterator<_Iter> { return counted_iterator(__current_ - __n, __count_ + __n); } - template _I2> - _LIBCPP_HIDE_FROM_ABI - friend constexpr iter_difference_t<_I2> operator-( - const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs) - { + template _I2> + _LIBCPP_HIDE_FROM_ABI friend constexpr iter_difference_t<_I2> + operator-(const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs) { return __rhs.__count_ - __lhs.__count_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr iter_difference_t<_Iter> operator-( - const counted_iterator& __lhs, default_sentinel_t) - { + _LIBCPP_HIDE_FROM_ABI friend constexpr iter_difference_t<_Iter> + operator-(const counted_iterator& __lhs, default_sentinel_t) { return -__lhs.__count_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr iter_difference_t<_Iter> operator-( - default_sentinel_t, const counted_iterator& __rhs) - { + _LIBCPP_HIDE_FROM_ABI friend constexpr iter_difference_t<_Iter> + operator-(default_sentinel_t, const counted_iterator& __rhs) { return __rhs.__count_; } - _LIBCPP_HIDE_FROM_ABI - constexpr counted_iterator& operator-=(iter_difference_t<_Iter> __n) + _LIBCPP_HIDE_FROM_ABI constexpr counted_iterator& operator-=(iter_difference_t<_Iter> __n) requires random_access_iterator<_Iter> { - _LIBCPP_ASSERT(-__n <= __count_, "Attempt to subtract too large of a size: " - "counted_iterator would be decremented before the " - "first element of its range."); + _LIBCPP_ASSERT_UNCATEGORIZED( + -__n <= __count_, + "Attempt to subtract too large of a size: " + "counted_iterator would be decremented before the " + "first element of its range."); __current_ -= __n; __count_ += __n; return *this; } - _LIBCPP_HIDE_FROM_ABI - constexpr decltype(auto) operator[](iter_difference_t<_Iter> __n) const + _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator[](iter_difference_t<_Iter> __n) const requires random_access_iterator<_Iter> { - _LIBCPP_ASSERT(__n < __count_, "Subscript argument must be less than size."); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__n < __count_, "Subscript argument must be less than size."); return __current_[__n]; } - template _I2> - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator==( - const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs) - { + template _I2> + _LIBCPP_HIDE_FROM_ABI friend constexpr bool + operator==(const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs) { return __lhs.__count_ == __rhs.__count_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr bool operator==( - const counted_iterator& __lhs, default_sentinel_t) - { + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const counted_iterator& __lhs, default_sentinel_t) { return __lhs.__count_ == 0; } - template _I2> - _LIBCPP_HIDE_FROM_ABI friend constexpr strong_ordering operator<=>( - const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs) - { + template _I2> + _LIBCPP_HIDE_FROM_ABI friend constexpr strong_ordering + operator<=>(const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs) { return __rhs.__count_ <=> __lhs.__count_; } - _LIBCPP_HIDE_FROM_ABI - friend constexpr iter_rvalue_reference_t<_Iter> iter_move(const counted_iterator& __i) - noexcept(noexcept(ranges::iter_move(__i.__current_))) - requires input_iterator<_Iter> + _LIBCPP_HIDE_FROM_ABI friend constexpr iter_rvalue_reference_t<_Iter> + iter_move(const counted_iterator& __i) noexcept(noexcept(ranges::iter_move(__i.__current_))) + requires input_iterator<_Iter> { - _LIBCPP_ASSERT(__i.__count_ > 0, "Iterator must not be past end of range."); + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__i.__count_ > 0, "Iterator must not be past end of range."); return ranges::iter_move(__i.__current_); } - template _I2> - _LIBCPP_HIDE_FROM_ABI - friend constexpr void iter_swap(const counted_iterator& __x, const counted_iterator<_I2>& __y) - noexcept(noexcept(ranges::iter_swap(__x.__current_, __y.__current_))) - { - _LIBCPP_ASSERT(__x.__count_ > 0 && __y.__count_ > 0, - "Iterators must not be past end of range."); + template _I2> + _LIBCPP_HIDE_FROM_ABI friend constexpr void + iter_swap(const counted_iterator& __x, + const counted_iterator<_I2>& __y) noexcept(noexcept(ranges::iter_swap(__x.__current_, __y.__current_))) { + _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS( + __x.__count_ > 0 && __y.__count_ > 0, "Iterators must not be past end of range."); return ranges::iter_swap(__x.__current_, __y.__current_); } + +private: + _LIBCPP_NO_UNIQUE_ADDRESS _Iter __current_ = _Iter(); + iter_difference_t<_Iter> __count_ = 0; + template + friend class counted_iterator; }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(counted_iterator); -template +template requires same_as<_ITER_TRAITS<_Iter>, iterator_traits<_Iter>> struct iterator_traits> : iterator_traits<_Iter> { - using pointer = conditional_t, - add_pointer_t>, void>; + using pointer = conditional_t, add_pointer_t>, void>; }; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_COUNTED_ITERATOR_H diff --git a/include/c++/v1/__iterator/data.h b/include/c++/v1/__iterator/data.h index 88eb752b..b7c16036 100644 --- a/include/c++/v1/__iterator/data.h +++ b/include/c++/v1/__iterator/data.h @@ -20,29 +20,27 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 - -template constexpr -_LIBCPP_INLINE_VISIBILITY -auto data(_Cont& __c) -_NOEXCEPT_(noexcept(__c.data())) --> decltype (__c.data()) -{ return __c.data(); } - -template constexpr -_LIBCPP_INLINE_VISIBILITY -auto data(const _Cont& __c) -_NOEXCEPT_(noexcept(__c.data())) --> decltype (__c.data()) -{ return __c.data(); } +#if _LIBCPP_STD_VER >= 17 + +template +constexpr _LIBCPP_HIDE_FROM_ABI auto data(_Cont& __c) noexcept(noexcept(__c.data())) -> decltype(__c.data()) { + return __c.data(); +} + +template +constexpr _LIBCPP_HIDE_FROM_ABI auto data(const _Cont& __c) noexcept(noexcept(__c.data())) -> decltype(__c.data()) { + return __c.data(); +} template -_LIBCPP_INLINE_VISIBILITY -constexpr _Tp* data(_Tp (&__array)[_Sz]) noexcept { return __array; } +_LIBCPP_HIDE_FROM_ABI constexpr _Tp* data(_Tp (&__array)[_Sz]) noexcept { + return __array; +} template -_LIBCPP_INLINE_VISIBILITY -constexpr const _Ep* data(initializer_list<_Ep> __il) noexcept { return __il.begin(); } +_LIBCPP_HIDE_FROM_ABI constexpr const _Ep* data(initializer_list<_Ep> __il) noexcept { + return __il.begin(); +} #endif diff --git a/include/c++/v1/__iterator/default_sentinel.h b/include/c++/v1/__iterator/default_sentinel.h index 669032aa..3b65f442 100644 --- a/include/c++/v1/__iterator/default_sentinel.h +++ b/include/c++/v1/__iterator/default_sentinel.h @@ -18,12 +18,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 -struct default_sentinel_t { }; +struct default_sentinel_t {}; inline constexpr default_sentinel_t default_sentinel{}; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/distance.h b/include/c++/v1/__iterator/distance.h index 681e20d0..75bd49c9 100644 --- a/include/c++/v1/__iterator/distance.h +++ b/include/c++/v1/__iterator/distance.h @@ -27,33 +27,27 @@ _LIBCPP_BEGIN_NAMESPACE_STD template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -typename iterator_traits<_InputIter>::difference_type -__distance(_InputIter __first, _InputIter __last, input_iterator_tag) -{ - typename iterator_traits<_InputIter>::difference_type __r(0); - for (; __first != __last; ++__first) - ++__r; - return __r; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 typename iterator_traits<_InputIter>::difference_type +__distance(_InputIter __first, _InputIter __last, input_iterator_tag) { + typename iterator_traits<_InputIter>::difference_type __r(0); + for (; __first != __last; ++__first) + ++__r; + return __r; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -typename iterator_traits<_RandIter>::difference_type -__distance(_RandIter __first, _RandIter __last, random_access_iterator_tag) -{ - return __last - __first; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 typename iterator_traits<_RandIter>::difference_type +__distance(_RandIter __first, _RandIter __last, random_access_iterator_tag) { + return __last - __first; } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -typename iterator_traits<_InputIter>::difference_type -distance(_InputIter __first, _InputIter __last) -{ - return _VSTD::__distance(__first, __last, typename iterator_traits<_InputIter>::iterator_category()); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 typename iterator_traits<_InputIter>::difference_type +distance(_InputIter __first, _InputIter __last) { + return std::__distance(__first, __last, typename iterator_traits<_InputIter>::iterator_category()); } -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [range.iter.op.distance] @@ -61,10 +55,9 @@ namespace ranges { namespace __distance { struct __fn { - template _Sp> - requires (!sized_sentinel_for<_Sp, _Ip>) - _LIBCPP_HIDE_FROM_ABI - constexpr iter_difference_t<_Ip> operator()(_Ip __first, _Sp __last) const { + template _Sp> + requires(!sized_sentinel_for<_Sp, _Ip>) + _LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Ip> operator()(_Ip __first, _Sp __last) const { iter_difference_t<_Ip> __n = 0; while (__first != __last) { ++__first; @@ -73,9 +66,8 @@ struct __fn { return __n; } - template> _Sp> - _LIBCPP_HIDE_FROM_ABI - constexpr iter_difference_t<_Ip> operator()(_Ip&& __first, _Sp __last) const { + template > _Sp> + _LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Ip> operator()(_Ip&& __first, _Sp __last) const { if constexpr (sized_sentinel_for<_Sp, __remove_cvref_t<_Ip>>) { return __last - __first; } else { @@ -83,9 +75,8 @@ struct __fn { } } - template - _LIBCPP_HIDE_FROM_ABI - constexpr range_difference_t<_Rp> operator()(_Rp&& __r) const { + template + _LIBCPP_HIDE_FROM_ABI constexpr range_difference_t<_Rp> operator()(_Rp&& __r) const { if constexpr (sized_range<_Rp>) { return static_cast>(ranges::size(__r)); } else { @@ -97,11 +88,11 @@ struct __fn { } // namespace __distance inline namespace __cpo { - inline constexpr auto distance = __distance::__fn{}; +inline constexpr auto distance = __distance::__fn{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/empty.h b/include/c++/v1/__iterator/empty.h index 748ca9ec..773f2776 100644 --- a/include/c++/v1/__iterator/empty.h +++ b/include/c++/v1/__iterator/empty.h @@ -20,24 +20,25 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template -_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY -constexpr auto empty(const _Cont& __c) -_NOEXCEPT_(noexcept(__c.empty())) --> decltype (__c.empty()) -{ return __c.empty(); } +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto +empty(const _Cont& __c) noexcept(noexcept(__c.empty())) -> decltype(__c.empty()) { + return __c.empty(); +} template -_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY -constexpr bool empty(const _Tp (&)[_Sz]) noexcept { return false; } +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool empty(const _Tp (&)[_Sz]) noexcept { + return false; +} template -_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY -constexpr bool empty(initializer_list<_Ep> __il) noexcept { return __il.size() == 0; } +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool empty(initializer_list<_Ep> __il) noexcept { + return __il.size() == 0; +} -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/erase_if_container.h b/include/c++/v1/__iterator/erase_if_container.h index d7c71a94..0f87f50c 100644 --- a/include/c++/v1/__iterator/erase_if_container.h +++ b/include/c++/v1/__iterator/erase_if_container.h @@ -16,12 +16,13 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD template -_LIBCPP_HIDE_FROM_ABI -typename _Container::size_type -__libcpp_erase_if_container(_Container& __c, _Predicate& __pred) { +_LIBCPP_HIDE_FROM_ABI typename _Container::size_type __libcpp_erase_if_container(_Container& __c, _Predicate& __pred) { typename _Container::size_type __old_size = __c.size(); const typename _Container::iterator __last = __c.end(); @@ -37,4 +38,6 @@ __libcpp_erase_if_container(_Container& __c, _Predicate& __pred) { _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_ERASE_IF_CONTAINER_H diff --git a/include/c++/v1/__iterator/front_insert_iterator.h b/include/c++/v1/__iterator/front_insert_iterator.h index e278359d..7f2c54ec 100644 --- a/include/c++/v1/__iterator/front_insert_iterator.h +++ b/include/c++/v1/__iterator/front_insert_iterator.h @@ -21,6 +21,9 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_SUPPRESS_DEPRECATED_PUSH @@ -30,42 +33,51 @@ class _LIBCPP_TEMPLATE_VIS front_insert_iterator : public iterator #endif { -_LIBCPP_SUPPRESS_DEPRECATED_POP + _LIBCPP_SUPPRESS_DEPRECATED_POP + protected: - _Container* container; + _Container* container; + public: - typedef output_iterator_tag iterator_category; - typedef void value_type; -#if _LIBCPP_STD_VER > 17 - typedef ptrdiff_t difference_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; +#if _LIBCPP_STD_VER >= 20 + typedef ptrdiff_t difference_type; #else - typedef void difference_type; + typedef void difference_type; #endif - typedef void pointer; - typedef void reference; - typedef _Container container_type; + typedef void pointer; + typedef void reference; + typedef _Container container_type; - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit front_insert_iterator(_Container& __x) : container(_VSTD::addressof(__x)) {} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& operator=(const typename _Container::value_type& __value) - {container->push_front(__value); return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit front_insert_iterator(_Container& __x) + : container(std::addressof(__x)) {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& + operator=(const typename _Container::value_type& __value) { + container->push_front(__value); + return *this; + } #ifndef _LIBCPP_CXX03_LANG - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& operator=(typename _Container::value_type&& __value) - {container->push_front(_VSTD::move(__value)); return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& + operator=(typename _Container::value_type&& __value) { + container->push_front(std::move(__value)); + return *this; + } #endif // _LIBCPP_CXX03_LANG - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& operator*() {return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& operator++() {return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator operator++(int) {return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& operator*() { return *this; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& operator++() { return *this; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator operator++(int) { return *this; } }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(front_insert_iterator); template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -front_insert_iterator<_Container> -front_inserter(_Container& __x) -{ - return front_insert_iterator<_Container>(__x); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator<_Container> +front_inserter(_Container& __x) { + return front_insert_iterator<_Container>(__x); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_FRONT_INSERT_ITERATOR_H diff --git a/include/c++/v1/__iterator/incrementable_traits.h b/include/c++/v1/__iterator/incrementable_traits.h index 3d06dc05..a228b228 100644 --- a/include/c++/v1/__iterator/incrementable_traits.h +++ b/include/c++/v1/__iterator/incrementable_traits.h @@ -26,36 +26,36 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [incrementable.traits] -template struct incrementable_traits {}; +template +struct incrementable_traits {}; -template -requires is_object_v<_Tp> +template + requires is_object_v<_Tp> struct incrementable_traits<_Tp*> { using difference_type = ptrdiff_t; }; -template +template struct incrementable_traits : incrementable_traits<_Ip> {}; -template +template concept __has_member_difference_type = requires { typename _Tp::difference_type; }; -template<__has_member_difference_type _Tp> +template <__has_member_difference_type _Tp> struct incrementable_traits<_Tp> { using difference_type = typename _Tp::difference_type; }; -template -concept __has_integral_minus = - requires(const _Tp& __x, const _Tp& __y) { - { __x - __y } -> integral; - }; +template +concept __has_integral_minus = requires(const _Tp& __x, const _Tp& __y) { + { __x - __y } -> integral; +}; -template<__has_integral_minus _Tp> -requires (!__has_member_difference_type<_Tp>) +template <__has_integral_minus _Tp> + requires(!__has_member_difference_type<_Tp>) struct incrementable_traits<_Tp> { using difference_type = make_signed_t() - std::declval<_Tp>())>; }; @@ -67,11 +67,12 @@ struct iterator_traits; // `incrementable_traits::difference_type` if `iterator_traits` names a specialization // generated from the primary template, and `iterator_traits::difference_type` otherwise. template -using iter_difference_t = typename conditional_t<__is_primary_template > >::value, - incrementable_traits >, - iterator_traits > >::difference_type; +using iter_difference_t = + typename conditional_t<__is_primary_template > >::value, + incrementable_traits >, + iterator_traits > >::difference_type; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/indirectly_comparable.h b/include/c++/v1/__iterator/indirectly_comparable.h index 868190fc..e8a7398b 100644 --- a/include/c++/v1/__iterator/indirectly_comparable.h +++ b/include/c++/v1/__iterator/indirectly_comparable.h @@ -21,13 +21,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template -concept indirectly_comparable = - indirect_binary_predicate<_Rp, projected<_I1, _P1>, projected<_I2, _P2>>; +concept indirectly_comparable = indirect_binary_predicate<_Rp, projected<_I1, _P1>, projected<_I2, _P2>>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/insert_iterator.h b/include/c++/v1/__iterator/insert_iterator.h index ecaea61c..8b7574dc 100644 --- a/include/c++/v1/__iterator/insert_iterator.h +++ b/include/c++/v1/__iterator/insert_iterator.h @@ -22,9 +22,12 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template using __insert_iterator_iter_t = ranges::iterator_t<_Container>; #else @@ -39,43 +42,54 @@ class _LIBCPP_TEMPLATE_VIS insert_iterator : public iterator #endif { -_LIBCPP_SUPPRESS_DEPRECATED_POP + _LIBCPP_SUPPRESS_DEPRECATED_POP + protected: - _Container* container; - __insert_iterator_iter_t<_Container> iter; + _Container* container; + __insert_iterator_iter_t<_Container> iter; + public: - typedef output_iterator_tag iterator_category; - typedef void value_type; -#if _LIBCPP_STD_VER > 17 - typedef ptrdiff_t difference_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; +#if _LIBCPP_STD_VER >= 20 + typedef ptrdiff_t difference_type; #else - typedef void difference_type; + typedef void difference_type; #endif - typedef void pointer; - typedef void reference; - typedef _Container container_type; + typedef void pointer; + typedef void reference; + typedef _Container container_type; - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator(_Container& __x, __insert_iterator_iter_t<_Container> __i) - : container(_VSTD::addressof(__x)), iter(__i) {} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator=(const typename _Container::value_type& __value) - {iter = container->insert(iter, __value); ++iter; return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 + insert_iterator(_Container& __x, __insert_iterator_iter_t<_Container> __i) + : container(std::addressof(__x)), iter(__i) {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& + operator=(const typename _Container::value_type& __value) { + iter = container->insert(iter, __value); + ++iter; + return *this; + } #ifndef _LIBCPP_CXX03_LANG - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator=(typename _Container::value_type&& __value) - {iter = container->insert(iter, _VSTD::move(__value)); ++iter; return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& + operator=(typename _Container::value_type&& __value) { + iter = container->insert(iter, std::move(__value)); + ++iter; + return *this; + } #endif // _LIBCPP_CXX03_LANG - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator*() {return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator++() {return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator++(int) {return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator*() { return *this; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator++() { return *this; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator++(int) { return *this; } }; template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 -insert_iterator<_Container> -inserter(_Container& __x, __insert_iterator_iter_t<_Container> __i) -{ - return insert_iterator<_Container>(__x, __i); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator<_Container> +inserter(_Container& __x, __insert_iterator_iter_t<_Container> __i) { + return insert_iterator<_Container>(__x, __i); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_INSERT_ITERATOR_H diff --git a/include/c++/v1/__iterator/istream_iterator.h b/include/c++/v1/__iterator/istream_iterator.h index a056961c..58c9ac6d 100644 --- a/include/c++/v1/__iterator/istream_iterator.h +++ b/include/c++/v1/__iterator/istream_iterator.h @@ -11,12 +11,13 @@ #define _LIBCPP___ITERATOR_ISTREAM_ITERATOR_H #include <__config> +#include <__fwd/istream.h> +#include <__fwd/string.h> #include <__iterator/default_sentinel.h> #include <__iterator/iterator.h> #include <__iterator/iterator_traits.h> #include <__memory/addressof.h> #include -#include // for forward declarations of char_traits and basic_istream #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -25,78 +26,73 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_SUPPRESS_DEPRECATED_PUSH -template , class _Distance = ptrdiff_t> +template , class _Distance = ptrdiff_t> class _LIBCPP_TEMPLATE_VIS istream_iterator #if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES) : public iterator #endif { -_LIBCPP_SUPPRESS_DEPRECATED_POP + _LIBCPP_SUPPRESS_DEPRECATED_POP + public: - typedef input_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _Distance difference_type; - typedef const _Tp* pointer; - typedef const _Tp& reference; - typedef _CharT char_type; - typedef _Traits traits_type; - typedef basic_istream<_CharT,_Traits> istream_type; + typedef input_iterator_tag iterator_category; + typedef _Tp value_type; + typedef _Distance difference_type; + typedef const _Tp* pointer; + typedef const _Tp& reference; + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_istream<_CharT, _Traits> istream_type; + private: - istream_type* __in_stream_; - _Tp __value_; + istream_type* __in_stream_; + _Tp __value_; + public: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR istream_iterator() : __in_stream_(nullptr), __value_() {} -#if _LIBCPP_STD_VER > 17 - _LIBCPP_HIDE_FROM_ABI constexpr istream_iterator(default_sentinel_t) : istream_iterator() {} -#endif // _LIBCPP_STD_VER > 17 - _LIBCPP_INLINE_VISIBILITY istream_iterator(istream_type& __s) : __in_stream_(_VSTD::addressof(__s)) - { - if (!(*__in_stream_ >> __value_)) - __in_stream_ = nullptr; - } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR istream_iterator() : __in_stream_(nullptr), __value_() {} +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI constexpr istream_iterator(default_sentinel_t) : istream_iterator() {} +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI istream_iterator(istream_type& __s) : __in_stream_(std::addressof(__s)) { + if (!(*__in_stream_ >> __value_)) + __in_stream_ = nullptr; + } - _LIBCPP_INLINE_VISIBILITY const _Tp& operator*() const {return __value_;} - _LIBCPP_INLINE_VISIBILITY const _Tp* operator->() const {return _VSTD::addressof((operator*()));} - _LIBCPP_INLINE_VISIBILITY istream_iterator& operator++() - { - if (!(*__in_stream_ >> __value_)) - __in_stream_ = nullptr; - return *this; - } - _LIBCPP_INLINE_VISIBILITY istream_iterator operator++(int) - {istream_iterator __t(*this); ++(*this); return __t;} + _LIBCPP_HIDE_FROM_ABI const _Tp& operator*() const { return __value_; } + _LIBCPP_HIDE_FROM_ABI const _Tp* operator->() const { return std::addressof((operator*())); } + _LIBCPP_HIDE_FROM_ABI istream_iterator& operator++() { + if (!(*__in_stream_ >> __value_)) + __in_stream_ = nullptr; + return *this; + } + _LIBCPP_HIDE_FROM_ABI istream_iterator operator++(int) { + istream_iterator __t(*this); + ++(*this); + return __t; + } - template - friend _LIBCPP_INLINE_VISIBILITY - bool - operator==(const istream_iterator<_Up, _CharU, _TraitsU, _DistanceU>& __x, - const istream_iterator<_Up, _CharU, _TraitsU, _DistanceU>& __y); + template + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const istream_iterator<_Up, _CharU, _TraitsU, _DistanceU>& __x, + const istream_iterator<_Up, _CharU, _TraitsU, _DistanceU>& __y); -#if _LIBCPP_STD_VER > 17 - friend _LIBCPP_HIDE_FROM_ABI bool operator==(const istream_iterator& __i, default_sentinel_t) { - return __i.__in_stream_ == nullptr; - } -#endif // _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const istream_iterator& __i, default_sentinel_t) { + return __i.__in_stream_ == nullptr; + } +#endif // _LIBCPP_STD_VER >= 20 }; template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __x, - const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __y) -{ - return __x.__in_stream_ == __y.__in_stream_; +inline _LIBCPP_HIDE_FROM_ABI bool operator==(const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __x, + const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __y) { + return __x.__in_stream_ == __y.__in_stream_; } #if _LIBCPP_STD_VER <= 17 template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __x, - const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __y) -{ - return !(__x == __y); +inline _LIBCPP_HIDE_FROM_ABI bool operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __x, + const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __y) { + return !(__x == __y); } #endif // _LIBCPP_STD_VER <= 17 diff --git a/include/c++/v1/__iterator/istreambuf_iterator.h b/include/c++/v1/__iterator/istreambuf_iterator.h index bc53a6a1..51c4ecff 100644 --- a/include/c++/v1/__iterator/istreambuf_iterator.h +++ b/include/c++/v1/__iterator/istreambuf_iterator.h @@ -11,10 +11,11 @@ #define _LIBCPP___ITERATOR_ISTREAMBUF_ITERATOR_H #include <__config> +#include <__fwd/istream.h> +#include <__fwd/streambuf.h> #include <__iterator/default_sentinel.h> #include <__iterator/iterator.h> #include <__iterator/iterator_traits.h> -#include // for forward declaration of basic_streambuf #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -23,95 +24,84 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_SUPPRESS_DEPRECATED_PUSH -template +template class _LIBCPP_TEMPLATE_VIS istreambuf_iterator #if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES) - : public iterator + : public iterator #endif { -_LIBCPP_SUPPRESS_DEPRECATED_POP + _LIBCPP_SUPPRESS_DEPRECATED_POP + public: - typedef input_iterator_tag iterator_category; - typedef _CharT value_type; - typedef typename _Traits::off_type difference_type; - typedef _CharT* pointer; - typedef _CharT reference; - typedef _CharT char_type; - typedef _Traits traits_type; - typedef typename _Traits::int_type int_type; - typedef basic_streambuf<_CharT,_Traits> streambuf_type; - typedef basic_istream<_CharT,_Traits> istream_type; + typedef input_iterator_tag iterator_category; + typedef _CharT value_type; + typedef typename _Traits::off_type difference_type; + typedef _CharT* pointer; + typedef _CharT reference; + typedef _CharT char_type; + typedef _Traits traits_type; + typedef typename _Traits::int_type int_type; + typedef basic_streambuf<_CharT, _Traits> streambuf_type; + typedef basic_istream<_CharT, _Traits> istream_type; + private: - mutable streambuf_type* __sbuf_; - - class __proxy - { - char_type __keep_; - streambuf_type* __sbuf_; - _LIBCPP_INLINE_VISIBILITY - explicit __proxy(char_type __c, streambuf_type* __s) - : __keep_(__c), __sbuf_(__s) {} - friend class istreambuf_iterator; - public: - _LIBCPP_INLINE_VISIBILITY char_type operator*() const {return __keep_;} - }; - - _LIBCPP_INLINE_VISIBILITY - bool __test_for_eof() const - { - if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sgetc(), traits_type::eof())) - __sbuf_ = nullptr; - return __sbuf_ == nullptr; - } + mutable streambuf_type* __sbuf_; + + class __proxy { + char_type __keep_; + streambuf_type* __sbuf_; + _LIBCPP_HIDE_FROM_ABI explicit __proxy(char_type __c, streambuf_type* __s) : __keep_(__c), __sbuf_(__s) {} + friend class istreambuf_iterator; + + public: + _LIBCPP_HIDE_FROM_ABI char_type operator*() const { return __keep_; } + }; + + _LIBCPP_HIDE_FROM_ABI bool __test_for_eof() const { + if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sgetc(), traits_type::eof())) + __sbuf_ = nullptr; + return __sbuf_ == nullptr; + } + public: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR istreambuf_iterator() _NOEXCEPT : __sbuf_(nullptr) {} -#if _LIBCPP_STD_VER > 17 - _LIBCPP_INLINE_VISIBILITY constexpr istreambuf_iterator(default_sentinel_t) noexcept - : istreambuf_iterator() {} -#endif // _LIBCPP_STD_VER > 17 - _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(istream_type& __s) _NOEXCEPT - : __sbuf_(__s.rdbuf()) {} - _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(streambuf_type* __s) _NOEXCEPT - : __sbuf_(__s) {} - _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(const __proxy& __p) _NOEXCEPT - : __sbuf_(__p.__sbuf_) {} - - _LIBCPP_INLINE_VISIBILITY char_type operator*() const - {return static_cast(__sbuf_->sgetc());} - _LIBCPP_INLINE_VISIBILITY istreambuf_iterator& operator++() - { - __sbuf_->sbumpc(); - return *this; - } - _LIBCPP_INLINE_VISIBILITY __proxy operator++(int) - { - return __proxy(__sbuf_->sbumpc(), __sbuf_); - } - - _LIBCPP_INLINE_VISIBILITY bool equal(const istreambuf_iterator& __b) const - {return __test_for_eof() == __b.__test_for_eof();} - -#if _LIBCPP_STD_VER > 17 - friend _LIBCPP_HIDE_FROM_ABI bool operator==(const istreambuf_iterator& __i, default_sentinel_t) { - return __i.__test_for_eof(); - } -#endif // _LIBCPP_STD_VER > 17 + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR istreambuf_iterator() _NOEXCEPT : __sbuf_(nullptr) {} +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI constexpr istreambuf_iterator(default_sentinel_t) noexcept : istreambuf_iterator() {} +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI istreambuf_iterator(istream_type& __s) _NOEXCEPT : __sbuf_(__s.rdbuf()) {} + _LIBCPP_HIDE_FROM_ABI istreambuf_iterator(streambuf_type* __s) _NOEXCEPT : __sbuf_(__s) {} + _LIBCPP_HIDE_FROM_ABI istreambuf_iterator(const __proxy& __p) _NOEXCEPT : __sbuf_(__p.__sbuf_) {} + + _LIBCPP_HIDE_FROM_ABI char_type operator*() const { return static_cast(__sbuf_->sgetc()); } + _LIBCPP_HIDE_FROM_ABI istreambuf_iterator& operator++() { + __sbuf_->sbumpc(); + return *this; + } + _LIBCPP_HIDE_FROM_ABI __proxy operator++(int) { return __proxy(__sbuf_->sbumpc(), __sbuf_); } + + _LIBCPP_HIDE_FROM_ABI bool equal(const istreambuf_iterator& __b) const { + return __test_for_eof() == __b.__test_for_eof(); + } + +#if _LIBCPP_STD_VER >= 20 + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const istreambuf_iterator& __i, default_sentinel_t) { + return __i.__test_for_eof(); + } +#endif // _LIBCPP_STD_VER >= 20 }; template -inline _LIBCPP_INLINE_VISIBILITY -bool operator==(const istreambuf_iterator<_CharT,_Traits>& __a, - const istreambuf_iterator<_CharT,_Traits>& __b) - {return __a.equal(__b);} +inline _LIBCPP_HIDE_FROM_ABI bool +operator==(const istreambuf_iterator<_CharT, _Traits>& __a, const istreambuf_iterator<_CharT, _Traits>& __b) { + return __a.equal(__b); +} #if _LIBCPP_STD_VER <= 17 template -inline _LIBCPP_INLINE_VISIBILITY -bool operator!=(const istreambuf_iterator<_CharT,_Traits>& __a, - const istreambuf_iterator<_CharT,_Traits>& __b) - {return !__a.equal(__b);} +inline _LIBCPP_HIDE_FROM_ABI bool +operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, const istreambuf_iterator<_CharT, _Traits>& __b) { + return !__a.equal(__b); +} #endif // _LIBCPP_STD_VER <= 17 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/iter_move.h b/include/c++/v1/__iterator/iter_move.h index a7d9413f..ba8aed3c 100644 --- a/include/c++/v1/__iterator/iter_move.h +++ b/include/c++/v1/__iterator/iter_move.h @@ -23,82 +23,81 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [iterator.cust.move] namespace ranges { namespace __iter_move { -void iter_move(); +void iter_move() = delete; + +template +concept __unqualified_iter_move = __class_or_enum> && requires(_Tp&& __t) { + // NOLINTNEXTLINE(libcpp-robust-against-adl) iter_swap ADL calls should only be made through ranges::iter_swap + iter_move(std::forward<_Tp>(__t)); +}; + +template +concept __move_deref = !__unqualified_iter_move<_Tp> && requires(_Tp&& __t) { + *__t; + requires is_lvalue_reference_v; +}; template -concept __unqualified_iter_move = - __class_or_enum> && - requires (_Tp&& __t) { - // NOLINTNEXTLINE(libcpp-robust-against-adl) iter_swap ADL calls should only be made through ranges::iter_swap - iter_move(std::forward<_Tp>(__t)); - }; - -template -concept __move_deref = - !__unqualified_iter_move<_Tp> && - requires (_Tp&& __t) { - *__t; - requires is_lvalue_reference_v; - }; - -template -concept __just_deref = - !__unqualified_iter_move<_Tp> && - !__move_deref<_Tp> && - requires (_Tp&& __t) { - *__t; - requires (!is_lvalue_reference_v); - }; +concept __just_deref = !__unqualified_iter_move<_Tp> && !__move_deref<_Tp> && requires(_Tp&& __t) { + *__t; + requires(!is_lvalue_reference_v); +}; // [iterator.cust.move] struct __fn { // NOLINTBEGIN(libcpp-robust-against-adl) iter_move ADL calls should only be made through ranges::iter_move - template + template requires __unqualified_iter_move<_Ip> [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator()(_Ip&& __i) const - noexcept(noexcept(iter_move(std::forward<_Ip>(__i)))) - { + noexcept(noexcept(iter_move(std::forward<_Ip>(__i)))) { return iter_move(std::forward<_Ip>(__i)); } // NOLINTEND(libcpp-robust-against-adl) - template + template requires __move_deref<_Ip> [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Ip&& __i) const - noexcept(noexcept(std::move(*std::forward<_Ip>(__i)))) - -> decltype( std::move(*std::forward<_Ip>(__i))) - { return std::move(*std::forward<_Ip>(__i)); } + noexcept(noexcept(std::move(*std::forward<_Ip>(__i)))) -> decltype(std::move(*std::forward<_Ip>(__i))) { + return std::move(*std::forward<_Ip>(__i)); + } - template + template requires __just_deref<_Ip> [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Ip&& __i) const - noexcept(noexcept(*std::forward<_Ip>(__i))) - -> decltype( *std::forward<_Ip>(__i)) - { return *std::forward<_Ip>(__i); } + noexcept(noexcept(*std::forward<_Ip>(__i))) -> decltype(*std::forward<_Ip>(__i)) { + return *std::forward<_Ip>(__i); + } }; } // namespace __iter_move inline namespace __cpo { - inline constexpr auto iter_move = __iter_move::__fn{}; +inline constexpr auto iter_move = __iter_move::__fn{}; } // namespace __cpo } // namespace ranges -template<__dereferenceable _Tp> - requires requires(_Tp& __t) { { ranges::iter_move(__t) } -> __can_reference; } +template <__dereferenceable _Tp> + requires requires(_Tp& __t) { + { ranges::iter_move(__t) } -> __can_reference; + } using iter_rvalue_reference_t = decltype(ranges::iter_move(std::declval<_Tp&>())); -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_ITER_MOVE_H diff --git a/include/c++/v1/__iterator/iter_swap.h b/include/c++/v1/__iterator/iter_swap.h index d4c0dca1..01ab1b97 100644 --- a/include/c++/v1/__iterator/iter_swap.h +++ b/include/c++/v1/__iterator/iter_swap.h @@ -26,88 +26,83 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [iter.cust.swap] namespace ranges { namespace __iter_swap { - template - void iter_swap(_I1, _I2) = delete; +template +void iter_swap(_I1, _I2) = delete; - template - concept __unqualified_iter_swap = - (__class_or_enum> || __class_or_enum>) && - requires (_T1&& __x, _T2&& __y) { +template +concept __unqualified_iter_swap = + (__class_or_enum> || __class_or_enum>) && requires(_T1&& __x, _T2&& __y) { // NOLINTNEXTLINE(libcpp-robust-against-adl) iter_swap ADL calls should only be made through ranges::iter_swap - iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y)); + iter_swap(std::forward<_T1>(__x), std::forward<_T2>(__y)); }; - template - concept __readable_swappable = +template +concept __readable_swappable = indirectly_readable<_T1> && indirectly_readable<_T2> && swappable_with, iter_reference_t<_T2>>; - - struct __fn { - // NOLINTBEGIN(libcpp-robust-against-adl) iter_swap ADL calls should only be made through ranges::iter_swap - template - requires __unqualified_iter_swap<_T1, _T2> - _LIBCPP_HIDE_FROM_ABI - constexpr void operator()(_T1&& __x, _T2&& __y) const - noexcept(noexcept(iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y)))) - { - (void)iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y)); - } - // NOLINTEND(libcpp-robust-against-adl) - - template - requires (!__unqualified_iter_swap<_T1, _T2>) && - __readable_swappable<_T1, _T2> - _LIBCPP_HIDE_FROM_ABI - constexpr void operator()(_T1&& __x, _T2&& __y) const - noexcept(noexcept(ranges::swap(*_VSTD::forward<_T1>(__x), *_VSTD::forward<_T2>(__y)))) - { - ranges::swap(*_VSTD::forward<_T1>(__x), *_VSTD::forward<_T2>(__y)); - } - - template - requires (!__unqualified_iter_swap<_T1, _T2> && - !__readable_swappable<_T1, _T2>) && - indirectly_movable_storable<_T1, _T2> && - indirectly_movable_storable<_T2, _T1> - _LIBCPP_HIDE_FROM_ABI - constexpr void operator()(_T1&& __x, _T2&& __y) const - noexcept(noexcept(iter_value_t<_T2>(ranges::iter_move(__y))) && - noexcept(*__y = ranges::iter_move(__x)) && - noexcept(*_VSTD::forward<_T1>(__x) = std::declval>())) - { - iter_value_t<_T2> __old(ranges::iter_move(__y)); - *__y = ranges::iter_move(__x); - *_VSTD::forward<_T1>(__x) = _VSTD::move(__old); - } - }; +struct __fn { + // NOLINTBEGIN(libcpp-robust-against-adl) iter_swap ADL calls should only be made through ranges::iter_swap + template + requires __unqualified_iter_swap<_T1, _T2> + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_T1&& __x, _T2&& __y) const + noexcept(noexcept(iter_swap(std::forward<_T1>(__x), std::forward<_T2>(__y)))) { + (void)iter_swap(std::forward<_T1>(__x), std::forward<_T2>(__y)); + } + // NOLINTEND(libcpp-robust-against-adl) + + template + requires(!__unqualified_iter_swap<_T1, _T2>) && __readable_swappable<_T1, _T2> + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_T1&& __x, _T2&& __y) const + noexcept(noexcept(ranges::swap(*std::forward<_T1>(__x), *std::forward<_T2>(__y)))) { + ranges::swap(*std::forward<_T1>(__x), *std::forward<_T2>(__y)); + } + + template + requires(!__unqualified_iter_swap<_T1, _T2> && // + !__readable_swappable<_T1, _T2>) && // + indirectly_movable_storable<_T1, _T2> && // + indirectly_movable_storable<_T2, _T1> + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_T1&& __x, _T2&& __y) const + noexcept(noexcept(iter_value_t<_T2>(ranges::iter_move(__y))) && // + noexcept(*__y = ranges::iter_move(__x)) && // + noexcept(*std::forward<_T1>(__x) = std::declval>())) { + iter_value_t<_T2> __old(ranges::iter_move(__y)); + *__y = ranges::iter_move(__x); + *std::forward<_T1>(__x) = std::move(__old); + } +}; } // namespace __iter_swap inline namespace __cpo { - inline constexpr auto iter_swap = __iter_swap::__fn{}; +inline constexpr auto iter_swap = __iter_swap::__fn{}; } // namespace __cpo } // namespace ranges -template +template concept indirectly_swappable = - indirectly_readable<_I1> && indirectly_readable<_I2> && - requires(const _I1 __i1, const _I2 __i2) { - ranges::iter_swap(__i1, __i1); - ranges::iter_swap(__i2, __i2); - ranges::iter_swap(__i1, __i2); - ranges::iter_swap(__i2, __i1); - }; + indirectly_readable<_I1> && indirectly_readable<_I2> && requires(const _I1 __i1, const _I2 __i2) { + ranges::iter_swap(__i1, __i1); + ranges::iter_swap(__i2, __i2); + ranges::iter_swap(__i1, __i2); + ranges::iter_swap(__i2, __i1); + }; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_ITER_SWAP_H diff --git a/include/c++/v1/__iterator/iterator.h b/include/c++/v1/__iterator/iterator.h index b417eeab..ba9308f3 100644 --- a/include/c++/v1/__iterator/iterator.h +++ b/include/c++/v1/__iterator/iterator.h @@ -19,15 +19,13 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 iterator -{ - typedef _Tp value_type; - typedef _Distance difference_type; - typedef _Pointer pointer; - typedef _Reference reference; - typedef _Category iterator_category; +template +struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 iterator { + typedef _Tp value_type; + typedef _Distance difference_type; + typedef _Pointer pointer; + typedef _Reference reference; + typedef _Category iterator_category; }; _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/iterator_traits.h b/include/c++/v1/__iterator/iterator_traits.h index c9d8944b..4d9ad480 100644 --- a/include/c++/v1/__iterator/iterator_traits.h +++ b/include/c++/v1/__iterator/iterator_traits.h @@ -21,10 +21,11 @@ #include <__fwd/pair.h> #include <__iterator/incrementable_traits.h> #include <__iterator/readable_traits.h> -#include <__type_traits/add_const.h> #include <__type_traits/common_reference.h> #include <__type_traits/conditional.h> #include <__type_traits/disjunction.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/integral_constant.h> #include <__type_traits/is_convertible.h> #include <__type_traits/is_object.h> #include <__type_traits/is_primary_template.h> @@ -43,15 +44,13 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template using __with_reference = _Tp&; template -concept __can_reference = requires { - typename __with_reference<_Tp>; -}; +concept __can_reference = requires { typename __with_reference<_Tp>; }; template concept __dereferenceable = requires(_Tp& __t) { @@ -59,30 +58,26 @@ concept __dereferenceable = requires(_Tp& __t) { }; // [iterator.traits] -template<__dereferenceable _Tp> +template <__dereferenceable _Tp> using iter_reference_t = decltype(*std::declval<_Tp&>()); -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 template struct _LIBCPP_TEMPLATE_VIS iterator_traits; struct _LIBCPP_TEMPLATE_VIS input_iterator_tag {}; struct _LIBCPP_TEMPLATE_VIS output_iterator_tag {}; -struct _LIBCPP_TEMPLATE_VIS forward_iterator_tag : public input_iterator_tag {}; +struct _LIBCPP_TEMPLATE_VIS forward_iterator_tag : public input_iterator_tag {}; struct _LIBCPP_TEMPLATE_VIS bidirectional_iterator_tag : public forward_iterator_tag {}; struct _LIBCPP_TEMPLATE_VIS random_access_iterator_tag : public bidirectional_iterator_tag {}; -#if _LIBCPP_STD_VER > 17 -struct _LIBCPP_TEMPLATE_VIS contiguous_iterator_tag : public random_access_iterator_tag {}; +#if _LIBCPP_STD_VER >= 20 +struct _LIBCPP_TEMPLATE_VIS contiguous_iterator_tag : public random_access_iterator_tag {}; #endif template struct __iter_traits_cache { - using type = _If< - __is_primary_template >::value, - _Iter, - iterator_traits<_Iter> - >; + using type = _If< __is_primary_template >::value, _Iter, iterator_traits<_Iter> >; }; template using _ITER_TRAITS = typename __iter_traits_cache<_Iter>::type; @@ -97,266 +92,257 @@ struct __iter_concept_category_test { }; struct __iter_concept_random_fallback { template - using _Apply = __enable_if_t< - __is_primary_template >::value, - random_access_iterator_tag - >; + using _Apply = __enable_if_t< __is_primary_template >::value, random_access_iterator_tag >; }; -template struct __test_iter_concept - : _IsValidExpansion<_Tester::template _Apply, _Iter>, - _Tester -{ -}; +template +struct __test_iter_concept : _IsValidExpansion<_Tester::template _Apply, _Iter>, _Tester {}; template struct __iter_concept_cache { - using type = _Or< - __test_iter_concept<_Iter, __iter_concept_concept_test>, - __test_iter_concept<_Iter, __iter_concept_category_test>, - __test_iter_concept<_Iter, __iter_concept_random_fallback> - >; + using type = _Or< __test_iter_concept<_Iter, __iter_concept_concept_test>, + __test_iter_concept<_Iter, __iter_concept_category_test>, + __test_iter_concept<_Iter, __iter_concept_random_fallback> >; }; template using _ITER_CONCEPT = typename __iter_concept_cache<_Iter>::type::template _Apply<_Iter>; - template -struct __has_iterator_typedefs -{ +struct __has_iterator_typedefs { private: - template static false_type __test(...); - template static true_type __test(__void_t* = nullptr, - __void_t* = nullptr, - __void_t* = nullptr, - __void_t* = nullptr, - __void_t* = nullptr); + template + static false_type __test(...); + template + static true_type + __test(__void_t* = nullptr, + __void_t* = nullptr, + __void_t* = nullptr, + __void_t* = nullptr, + __void_t* = nullptr); + public: - static const bool value = decltype(__test<_Tp>(0,0,0,0,0))::value; + static const bool value = decltype(__test<_Tp>(nullptr, nullptr, nullptr, nullptr, nullptr))::value; }; - template -struct __has_iterator_category -{ +struct __has_iterator_category { private: - template static false_type __test(...); - template static true_type __test(typename _Up::iterator_category* = nullptr); + template + static false_type __test(...); + template + static true_type __test(typename _Up::iterator_category* = nullptr); + public: - static const bool value = decltype(__test<_Tp>(nullptr))::value; + static const bool value = decltype(__test<_Tp>(nullptr))::value; }; template -struct __has_iterator_concept -{ +struct __has_iterator_concept { private: - template static false_type __test(...); - template static true_type __test(typename _Up::iterator_concept* = nullptr); + template + static false_type __test(...); + template + static true_type __test(typename _Up::iterator_concept* = nullptr); + public: - static const bool value = decltype(__test<_Tp>(nullptr))::value; + static const bool value = decltype(__test<_Tp>(nullptr))::value; }; -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // The `cpp17-*-iterator` exposition-only concepts have very similar names to the `Cpp17*Iterator` named requirements // from `[iterator.cpp17]`. To avoid confusion between the two, the exposition-only concepts have been banished to // a "detail" namespace indicating they have a niche use-case. namespace __iterator_traits_detail { -template -concept __cpp17_iterator = - requires(_Ip __i) { - { *__i } -> __can_reference; - { ++__i } -> same_as<_Ip&>; - { *__i++ } -> __can_reference; - } && - copyable<_Ip>; - -template -concept __cpp17_input_iterator = - __cpp17_iterator<_Ip> && - equality_comparable<_Ip> && - requires(_Ip __i) { - typename incrementable_traits<_Ip>::difference_type; - typename indirectly_readable_traits<_Ip>::value_type; - typename common_reference_t&&, - typename indirectly_readable_traits<_Ip>::value_type&>; - typename common_reference_t::value_type&>; - requires signed_integral::difference_type>; - }; - -template +template +concept __cpp17_iterator = requires(_Ip __i) { + { *__i } -> __can_reference; + { ++__i } -> same_as<_Ip&>; + { *__i++ } -> __can_reference; +} && copyable<_Ip>; + +template +concept __cpp17_input_iterator = __cpp17_iterator<_Ip> && equality_comparable<_Ip> && requires(_Ip __i) { + typename incrementable_traits<_Ip>::difference_type; + typename indirectly_readable_traits<_Ip>::value_type; + typename common_reference_t&&, typename indirectly_readable_traits<_Ip>::value_type&>; + typename common_reference_t::value_type&>; + requires signed_integral::difference_type>; +}; + +template concept __cpp17_forward_iterator = - __cpp17_input_iterator<_Ip> && - constructible_from<_Ip> && - is_lvalue_reference_v> && - same_as>, - typename indirectly_readable_traits<_Ip>::value_type> && - requires(_Ip __i) { - { __i++ } -> convertible_to<_Ip const&>; - { *__i++ } -> same_as>; - }; - -template -concept __cpp17_bidirectional_iterator = - __cpp17_forward_iterator<_Ip> && - requires(_Ip __i) { - { --__i } -> same_as<_Ip&>; - { __i-- } -> convertible_to<_Ip const&>; - { *__i-- } -> same_as>; - }; - -template + __cpp17_input_iterator<_Ip> && constructible_from<_Ip> && is_reference_v> && + same_as>, typename indirectly_readable_traits<_Ip>::value_type> && + requires(_Ip __i) { + { __i++ } -> convertible_to<_Ip const&>; + { *__i++ } -> same_as>; + }; + +template +concept __cpp17_bidirectional_iterator = __cpp17_forward_iterator<_Ip> && requires(_Ip __i) { + { --__i } -> same_as<_Ip&>; + { __i-- } -> convertible_to<_Ip const&>; + { *__i-- } -> same_as>; +}; + +template concept __cpp17_random_access_iterator = - __cpp17_bidirectional_iterator<_Ip> && - totally_ordered<_Ip> && - requires(_Ip __i, typename incrementable_traits<_Ip>::difference_type __n) { - { __i += __n } -> same_as<_Ip&>; - { __i -= __n } -> same_as<_Ip&>; - { __i + __n } -> same_as<_Ip>; - { __n + __i } -> same_as<_Ip>; - { __i - __n } -> same_as<_Ip>; - { __i - __i } -> same_as; // NOLINT(misc-redundant-expression) ; This is llvm.org/PR54114 - { __i[__n] } -> convertible_to>; - }; + __cpp17_bidirectional_iterator<_Ip> && totally_ordered<_Ip> && + requires(_Ip __i, typename incrementable_traits<_Ip>::difference_type __n) { + { __i += __n } -> same_as<_Ip&>; + { __i -= __n } -> same_as<_Ip&>; + { __i + __n } -> same_as<_Ip>; + { __n + __i } -> same_as<_Ip>; + { __i - __n } -> same_as<_Ip>; + { __i - __i } -> same_as; // NOLINT(misc-redundant-expression) ; This is llvm.org/PR54114 + { __i[__n] } -> convertible_to>; + }; } // namespace __iterator_traits_detail -template +template concept __has_member_reference = requires { typename _Ip::reference; }; -template +template concept __has_member_pointer = requires { typename _Ip::pointer; }; -template +template concept __has_member_iterator_category = requires { typename _Ip::iterator_category; }; -template +template concept __specifies_members = requires { - typename _Ip::value_type; - typename _Ip::difference_type; - requires __has_member_reference<_Ip>; - requires __has_member_iterator_category<_Ip>; - }; + typename _Ip::value_type; + typename _Ip::difference_type; + requires __has_member_reference<_Ip>; + requires __has_member_iterator_category<_Ip>; +}; -template +template struct __iterator_traits_member_pointer_or_void { using type = void; }; -template<__has_member_pointer _Tp> +template <__has_member_pointer _Tp> struct __iterator_traits_member_pointer_or_void<_Tp> { using type = typename _Tp::pointer; }; -template -concept __cpp17_iterator_missing_members = - !__specifies_members<_Tp> && - __iterator_traits_detail::__cpp17_iterator<_Tp>; +template +concept __cpp17_iterator_missing_members = !__specifies_members<_Tp> && __iterator_traits_detail::__cpp17_iterator<_Tp>; -template +template concept __cpp17_input_iterator_missing_members = - __cpp17_iterator_missing_members<_Tp> && - __iterator_traits_detail::__cpp17_input_iterator<_Tp>; + __cpp17_iterator_missing_members<_Tp> && __iterator_traits_detail::__cpp17_input_iterator<_Tp>; // Otherwise, `pointer` names `void`. -template -struct __iterator_traits_member_pointer_or_arrow_or_void { using type = void; }; +template +struct __iterator_traits_member_pointer_or_arrow_or_void { + using type = void; +}; // [iterator.traits]/3.2.1 // If the qualified-id `I::pointer` is valid and denotes a type, `pointer` names that type. -template<__has_member_pointer _Ip> -struct __iterator_traits_member_pointer_or_arrow_or_void<_Ip> { using type = typename _Ip::pointer; }; +template <__has_member_pointer _Ip> +struct __iterator_traits_member_pointer_or_arrow_or_void<_Ip> { + using type = typename _Ip::pointer; +}; // Otherwise, if `decltype(declval().operator->())` is well-formed, then `pointer` names that // type. -template +template requires requires(_Ip& __i) { __i.operator->(); } && (!__has_member_pointer<_Ip>) struct __iterator_traits_member_pointer_or_arrow_or_void<_Ip> { using type = decltype(std::declval<_Ip&>().operator->()); }; // Otherwise, `reference` names `iter-reference-t`. -template -struct __iterator_traits_member_reference { using type = iter_reference_t<_Ip>; }; +template +struct __iterator_traits_member_reference { + using type = iter_reference_t<_Ip>; +}; // [iterator.traits]/3.2.2 // If the qualified-id `I::reference` is valid and denotes a type, `reference` names that type. -template<__has_member_reference _Ip> -struct __iterator_traits_member_reference<_Ip> { using type = typename _Ip::reference; }; +template <__has_member_reference _Ip> +struct __iterator_traits_member_reference<_Ip> { + using type = typename _Ip::reference; +}; // [iterator.traits]/3.2.3.4 // input_iterator_tag -template +template struct __deduce_iterator_category { using type = input_iterator_tag; }; // [iterator.traits]/3.2.3.1 // `random_access_iterator_tag` if `I` satisfies `cpp17-random-access-iterator`, or otherwise -template<__iterator_traits_detail::__cpp17_random_access_iterator _Ip> +template <__iterator_traits_detail::__cpp17_random_access_iterator _Ip> struct __deduce_iterator_category<_Ip> { using type = random_access_iterator_tag; }; // [iterator.traits]/3.2.3.2 // `bidirectional_iterator_tag` if `I` satisfies `cpp17-bidirectional-iterator`, or otherwise -template<__iterator_traits_detail::__cpp17_bidirectional_iterator _Ip> +template <__iterator_traits_detail::__cpp17_bidirectional_iterator _Ip> struct __deduce_iterator_category<_Ip> { using type = bidirectional_iterator_tag; }; // [iterator.traits]/3.2.3.3 // `forward_iterator_tag` if `I` satisfies `cpp17-forward-iterator`, or otherwise -template<__iterator_traits_detail::__cpp17_forward_iterator _Ip> +template <__iterator_traits_detail::__cpp17_forward_iterator _Ip> struct __deduce_iterator_category<_Ip> { using type = forward_iterator_tag; }; -template +template struct __iterator_traits_iterator_category : __deduce_iterator_category<_Ip> {}; // [iterator.traits]/3.2.3 // If the qualified-id `I::iterator-category` is valid and denotes a type, `iterator-category` names // that type. -template<__has_member_iterator_category _Ip> +template <__has_member_iterator_category _Ip> struct __iterator_traits_iterator_category<_Ip> { using type = typename _Ip::iterator_category; }; // otherwise, it names void. -template -struct __iterator_traits_difference_type { using type = void; }; +template +struct __iterator_traits_difference_type { + using type = void; +}; // If the qualified-id `incrementable_traits::difference_type` is valid and denotes a type, then // `difference_type` names that type; -template -requires requires { typename incrementable_traits<_Ip>::difference_type; } +template + requires requires { typename incrementable_traits<_Ip>::difference_type; } struct __iterator_traits_difference_type<_Ip> { using type = typename incrementable_traits<_Ip>::difference_type; }; // [iterator.traits]/3.4 // Otherwise, `iterator_traits` has no members by any of the above names. -template +template struct __iterator_traits {}; // [iterator.traits]/3.1 // If `I` has valid ([temp.deduct]) member types `difference-type`, `value-type`, `reference`, and // `iterator-category`, then `iterator-traits` has the following publicly accessible members: -template<__specifies_members _Ip> +template <__specifies_members _Ip> struct __iterator_traits<_Ip> { - using iterator_category = typename _Ip::iterator_category; - using value_type = typename _Ip::value_type; - using difference_type = typename _Ip::difference_type; - using pointer = typename __iterator_traits_member_pointer_or_void<_Ip>::type; - using reference = typename _Ip::reference; + using iterator_category = typename _Ip::iterator_category; + using value_type = typename _Ip::value_type; + using difference_type = typename _Ip::difference_type; + using pointer = typename __iterator_traits_member_pointer_or_void<_Ip>::type; + using reference = typename _Ip::reference; }; // [iterator.traits]/3.2 // Otherwise, if `I` satisfies the exposition-only concept `cpp17-input-iterator`, // `iterator-traits` has the following publicly accessible members: -template<__cpp17_input_iterator_missing_members _Ip> +template <__cpp17_input_iterator_missing_members _Ip> struct __iterator_traits<_Ip> { using iterator_category = typename __iterator_traits_iterator_category<_Ip>::type; using value_type = typename indirectly_readable_traits<_Ip>::value_type; @@ -367,7 +353,7 @@ struct __iterator_traits<_Ip> { // Otherwise, if `I` satisfies the exposition-only concept `cpp17-iterator`, then // `iterator_traits` has the following publicly accessible members: -template<__cpp17_iterator_missing_members _Ip> +template <__cpp17_iterator_missing_members _Ip> struct __iterator_traits<_Ip> { using iterator_category = output_iterator_tag; using value_type = void; @@ -376,36 +362,33 @@ struct __iterator_traits<_Ip> { using reference = void; }; -template +template struct iterator_traits : __iterator_traits<_Ip> { using __primary_template = iterator_traits; }; -#else // _LIBCPP_STD_VER > 17 +#else // _LIBCPP_STD_VER >= 20 -template struct __iterator_traits {}; +template +struct __iterator_traits {}; -template struct __iterator_traits_impl {}; +template +struct __iterator_traits_impl {}; template -struct __iterator_traits_impl<_Iter, true> -{ - typedef typename _Iter::difference_type difference_type; - typedef typename _Iter::value_type value_type; - typedef typename _Iter::pointer pointer; - typedef typename _Iter::reference reference; - typedef typename _Iter::iterator_category iterator_category; +struct __iterator_traits_impl<_Iter, true> { + typedef typename _Iter::difference_type difference_type; + typedef typename _Iter::value_type value_type; + typedef typename _Iter::pointer pointer; + typedef typename _Iter::reference reference; + typedef typename _Iter::iterator_category iterator_category; }; template struct __iterator_traits<_Iter, true> - : __iterator_traits_impl - < - _Iter, - is_convertible::value || - is_convertible::value - > -{}; + : __iterator_traits_impl< _Iter, + is_convertible::value || + is_convertible::value > {}; // iterator_traits will only have the nested types if Iterator::iterator_category // exists. Else iterator_traits will be an empty class. This is a @@ -413,114 +396,106 @@ struct __iterator_traits<_Iter, true> // the client expects instead of failing at compile time. template -struct _LIBCPP_TEMPLATE_VIS iterator_traits - : __iterator_traits<_Iter, __has_iterator_typedefs<_Iter>::value> { - +struct _LIBCPP_TEMPLATE_VIS iterator_traits : __iterator_traits<_Iter, __has_iterator_typedefs<_Iter>::value> { using __primary_template = iterator_traits; }; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 -template -#if _LIBCPP_STD_VER > 17 -requires is_object_v<_Tp> +template +#if _LIBCPP_STD_VER >= 20 + requires is_object_v<_Tp> #endif -struct _LIBCPP_TEMPLATE_VIS iterator_traits<_Tp*> -{ - typedef ptrdiff_t difference_type; - typedef __remove_cv_t<_Tp> value_type; - typedef _Tp* pointer; - typedef _Tp& reference; - typedef random_access_iterator_tag iterator_category; -#if _LIBCPP_STD_VER > 17 - typedef contiguous_iterator_tag iterator_concept; +struct _LIBCPP_TEMPLATE_VIS iterator_traits<_Tp*> { + typedef ptrdiff_t difference_type; + typedef __remove_cv_t<_Tp> value_type; + typedef _Tp* pointer; + typedef _Tp& reference; + typedef random_access_iterator_tag iterator_category; +#if _LIBCPP_STD_VER >= 20 + typedef contiguous_iterator_tag iterator_concept; #endif }; template >::value> -struct __has_iterator_category_convertible_to - : is_convertible::iterator_category, _Up> -{}; +struct __has_iterator_category_convertible_to : is_convertible::iterator_category, _Up> { +}; template struct __has_iterator_category_convertible_to<_Tp, _Up, false> : false_type {}; template ::value> -struct __has_iterator_concept_convertible_to - : is_convertible -{}; +struct __has_iterator_concept_convertible_to : is_convertible {}; template struct __has_iterator_concept_convertible_to<_Tp, _Up, false> : false_type {}; template -struct __is_cpp17_input_iterator : public __has_iterator_category_convertible_to<_Tp, input_iterator_tag> {}; +using __has_input_iterator_category = __has_iterator_category_convertible_to<_Tp, input_iterator_tag>; template -struct __is_cpp17_forward_iterator : public __has_iterator_category_convertible_to<_Tp, forward_iterator_tag> {}; +using __has_forward_iterator_category = __has_iterator_category_convertible_to<_Tp, forward_iterator_tag>; template -struct __is_cpp17_bidirectional_iterator : public __has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag> {}; +using __has_bidirectional_iterator_category = __has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag>; template -struct __is_cpp17_random_access_iterator : public __has_iterator_category_convertible_to<_Tp, random_access_iterator_tag> {}; +using __has_random_access_iterator_category = __has_iterator_category_convertible_to<_Tp, random_access_iterator_tag>; -// __is_cpp17_contiguous_iterator determines if an iterator is known by +// __libcpp_is_contiguous_iterator determines if an iterator is known by // libc++ to be contiguous, either because it advertises itself as such // (in C++20) or because it is a pointer type or a known trivial wrapper // around a (possibly fancy) pointer type, such as __wrap_iter. // Such iterators receive special "contiguous" optimizations in // std::copy and std::sort. // -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template -struct __is_cpp17_contiguous_iterator : _Or< - __has_iterator_category_convertible_to<_Tp, contiguous_iterator_tag>, - __has_iterator_concept_convertible_to<_Tp, contiguous_iterator_tag> -> {}; +struct __libcpp_is_contiguous_iterator + : _Or< __has_iterator_category_convertible_to<_Tp, contiguous_iterator_tag>, + __has_iterator_concept_convertible_to<_Tp, contiguous_iterator_tag> > {}; #else template -struct __is_cpp17_contiguous_iterator : false_type {}; +struct __libcpp_is_contiguous_iterator : false_type {}; #endif // Any native pointer which is an iterator is also a contiguous iterator. template -struct __is_cpp17_contiguous_iterator<_Up*> : true_type {}; - +struct __libcpp_is_contiguous_iterator<_Up*> : true_type {}; template class __wrap_iter; template -struct __is_exactly_cpp17_input_iterator - : public integral_constant::value && - !__has_iterator_category_convertible_to<_Tp, forward_iterator_tag>::value> {}; +using __has_exactly_input_iterator_category = + integral_constant::value && + !__has_iterator_category_convertible_to<_Tp, forward_iterator_tag>::value>; template -struct __is_exactly_cpp17_forward_iterator - : public integral_constant::value && - !__has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag>::value> {}; +using __has_exactly_forward_iterator_category = + integral_constant::value && + !__has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag>::value>; template -struct __is_exactly_cpp17_bidirectional_iterator - : public integral_constant::value && - !__has_iterator_category_convertible_to<_Tp, random_access_iterator_tag>::value> {}; +using __has_exactly_bidirectional_iterator_category = + integral_constant::value && + !__has_iterator_category_convertible_to<_Tp, random_access_iterator_tag>::value>; -template +template using __iter_value_type = typename iterator_traits<_InputIterator>::value_type; -template +template using __iter_key_type = __remove_const_t::value_type::first_type>; -template +template using __iter_mapped_type = typename iterator_traits<_InputIterator>::value_type::second_type; -template -using __iter_to_alloc_type = pair< - typename add_const::value_type::first_type>::type, - typename iterator_traits<_InputIterator>::value_type::second_type>; +template +using __iter_to_alloc_type = + pair::value_type::first_type, + typename iterator_traits<_InputIterator>::value_type::second_type>; template using __iterator_category_type = typename iterator_traits<_Iter>::iterator_category; @@ -531,8 +506,24 @@ using __iterator_pointer_type = typename iterator_traits<_Iter>::pointer; template using __iter_diff_t = typename iterator_traits<_Iter>::difference_type; -template -using __iter_value_type = typename iterator_traits<_InputIterator>::value_type; +template +using __iter_reference = typename iterator_traits<_Iter>::reference; + +#if _LIBCPP_STD_VER >= 20 + +// [readable.traits] + +// Let `RI` be `remove_cvref_t`. The type `iter_value_t` denotes +// `indirectly_readable_traits::value_type` if `iterator_traits` names a specialization +// generated from the primary template, and `iterator_traits::value_type` otherwise. +// This has to be in this file and not readable_traits.h to break the include cycle between the two. +template +using iter_value_t = + typename conditional_t<__is_primary_template > >::value, + indirectly_readable_traits >, + iterator_traits > >::value_type; + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/iterator_with_data.h b/include/c++/v1/__iterator/iterator_with_data.h index 06c2fa69..afdc0a4e 100644 --- a/include/c++/v1/__iterator/iterator_with_data.h +++ b/include/c++/v1/__iterator/iterator_with_data.h @@ -24,6 +24,9 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + #if _LIBCPP_STD_VER >= 20 _LIBCPP_BEGIN_NAMESPACE_STD @@ -97,4 +100,6 @@ _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 20 +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_ITERATOR_WITH_DATA_H diff --git a/include/c++/v1/__iterator/mergeable.h b/include/c++/v1/__iterator/mergeable.h index b9f2d081..7976d751 100644 --- a/include/c++/v1/__iterator/mergeable.h +++ b/include/c++/v1/__iterator/mergeable.h @@ -22,19 +22,20 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 - -template +#if _LIBCPP_STD_VER >= 20 + +template concept mergeable = - input_iterator<_Input1> && - input_iterator<_Input2> && - weakly_incrementable<_Output> && - indirectly_copyable<_Input1, _Output> && - indirectly_copyable<_Input2, _Output> && + input_iterator<_Input1> && input_iterator<_Input2> && weakly_incrementable<_Output> && + indirectly_copyable<_Input1, _Output> && indirectly_copyable<_Input2, _Output> && indirect_strict_weak_order<_Comp, projected<_Input1, _Proj1>, projected<_Input2, _Proj2>>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/move_iterator.h b/include/c++/v1/__iterator/move_iterator.h index fa806dba..a1c53e9b 100644 --- a/include/c++/v1/__iterator/move_iterator.h +++ b/include/c++/v1/__iterator/move_iterator.h @@ -39,297 +39,309 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 -template +#if _LIBCPP_STD_VER >= 20 +template struct __move_iter_category_base {}; -template +template requires requires { typename iterator_traits<_Iter>::iterator_category; } struct __move_iter_category_base<_Iter> { - using iterator_category = _If< - derived_from::iterator_category, random_access_iterator_tag>, - random_access_iterator_tag, - typename iterator_traits<_Iter>::iterator_category - >; + using iterator_category = + _If< derived_from::iterator_category, random_access_iterator_tag>, + random_access_iterator_tag, + typename iterator_traits<_Iter>::iterator_category >; }; -template +template concept __move_iter_comparable = requires { - { std::declval() == std::declval<_Sent>() } -> convertible_to; + { std::declval() == std::declval<_Sent>() } -> convertible_to; }; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 template class _LIBCPP_TEMPLATE_VIS move_iterator -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 : public __move_iter_category_base<_Iter> #endif { -public: -#if _LIBCPP_STD_VER > 17 - using iterator_type = _Iter; - using iterator_concept = input_iterator_tag; - // iterator_category is inherited and not always present - using value_type = iter_value_t<_Iter>; - using difference_type = iter_difference_t<_Iter>; - using pointer = _Iter; - using reference = iter_rvalue_reference_t<_Iter>; -#else - typedef _Iter iterator_type; - typedef _If< - __is_cpp17_random_access_iterator<_Iter>::value, - random_access_iterator_tag, - typename iterator_traits<_Iter>::iterator_category - > iterator_category; - typedef typename iterator_traits::value_type value_type; - typedef typename iterator_traits::difference_type difference_type; - typedef iterator_type pointer; - - typedef typename iterator_traits::reference __reference; - typedef typename conditional< - is_reference<__reference>::value, - __libcpp_remove_reference_t<__reference>&&, - __reference - >::type reference; -#endif // _LIBCPP_STD_VER > 17 - - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - explicit move_iterator(_Iter __i) : __current_(std::move(__i)) {} - - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator& operator++() { ++__current_; return *this; } - - _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - pointer operator->() const { return __current_; } - -#if _LIBCPP_STD_VER > 17 - _LIBCPP_HIDE_FROM_ABI constexpr - move_iterator() requires is_constructible_v<_Iter> : __current_() {} - - template - requires (!_IsSame<_Up, _Iter>::value) && convertible_to - _LIBCPP_HIDE_FROM_ABI constexpr - move_iterator(const move_iterator<_Up>& __u) : __current_(__u.base()) {} - - template - requires (!_IsSame<_Up, _Iter>::value) && - convertible_to && - assignable_from<_Iter&, const _Up&> - _LIBCPP_HIDE_FROM_ABI constexpr - move_iterator& operator=(const move_iterator<_Up>& __u) { - __current_ = __u.base(); - return *this; - } +#if _LIBCPP_STD_VER >= 20 - _LIBCPP_HIDE_FROM_ABI constexpr const _Iter& base() const & noexcept { return __current_; } - _LIBCPP_HIDE_FROM_ABI constexpr _Iter base() && { return std::move(__current_); } - - _LIBCPP_HIDE_FROM_ABI constexpr - reference operator*() const { return ranges::iter_move(__current_); } - _LIBCPP_HIDE_FROM_ABI constexpr - reference operator[](difference_type __n) const { return ranges::iter_move(__current_ + __n); } - - _LIBCPP_HIDE_FROM_ABI constexpr - auto operator++(int) - requires forward_iterator<_Iter> - { - move_iterator __tmp(*this); ++__current_; return __tmp; +private: + _LIBCPP_HIDE_FROM_ABI static constexpr auto __get_iter_concept() { + if constexpr (random_access_iterator<_Iter>) { + return random_access_iterator_tag{}; + } else if constexpr (bidirectional_iterator<_Iter>) { + return bidirectional_iterator_tag{}; + } else if constexpr (forward_iterator<_Iter>) { + return forward_iterator_tag{}; + } else { + return input_iterator_tag{}; } + } +#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_HIDE_FROM_ABI constexpr - void operator++(int) { ++__current_; } +public: +#if _LIBCPP_STD_VER >= 20 + using iterator_type = _Iter; + using iterator_concept = decltype(__get_iter_concept()); + // iterator_category is inherited and not always present + using value_type = iter_value_t<_Iter>; + using difference_type = iter_difference_t<_Iter>; + using pointer = _Iter; + using reference = iter_rvalue_reference_t<_Iter>; #else - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator() : __current_() {} - - template ::value && is_convertible::value - > > - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator(const move_iterator<_Up>& __u) : __current_(__u.base()) {} - - template ::value && - is_convertible::value && - is_assignable<_Iter&, const _Up&>::value - > > - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator& operator=(const move_iterator<_Up>& __u) { - __current_ = __u.base(); - return *this; - } + typedef _Iter iterator_type; + typedef _If< __has_random_access_iterator_category<_Iter>::value, + random_access_iterator_tag, + typename iterator_traits<_Iter>::iterator_category > + iterator_category; + typedef typename iterator_traits::value_type value_type; + typedef typename iterator_traits::difference_type difference_type; + typedef iterator_type pointer; + + typedef typename iterator_traits::reference __reference; + typedef __conditional_t::value, __libcpp_remove_reference_t<__reference>&&, __reference> + reference; +#endif // _LIBCPP_STD_VER >= 20 + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 explicit move_iterator(_Iter __i) : __current_(std::move(__i)) {} + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator& operator++() { + ++__current_; + return *this; + } + + _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pointer operator->() const { + return __current_; + } + +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI constexpr move_iterator() + requires is_constructible_v<_Iter> + : __current_() {} + + template + requires(!_IsSame<_Up, _Iter>::value) && convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr move_iterator(const move_iterator<_Up>& __u) : __current_(__u.base()) {} + + template + requires(!_IsSame<_Up, _Iter>::value) && convertible_to && assignable_from<_Iter&, const _Up&> + _LIBCPP_HIDE_FROM_ABI constexpr move_iterator& operator=(const move_iterator<_Up>& __u) { + __current_ = __u.base(); + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr const _Iter& base() const& noexcept { return __current_; } + _LIBCPP_HIDE_FROM_ABI constexpr _Iter base() && { return std::move(__current_); } + + _LIBCPP_HIDE_FROM_ABI constexpr reference operator*() const { return ranges::iter_move(__current_); } + _LIBCPP_HIDE_FROM_ABI constexpr reference operator[](difference_type __n) const { + return ranges::iter_move(__current_ + __n); + } + + _LIBCPP_HIDE_FROM_ABI constexpr auto operator++(int) + requires forward_iterator<_Iter> + { + move_iterator __tmp(*this); + ++__current_; + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI constexpr void operator++(int) { ++__current_; } +#else + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator() : __current_() {} + + template ::value && is_convertible::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator(const move_iterator<_Up>& __u) + : __current_(__u.base()) {} + + template ::value && is_convertible::value && + is_assignable<_Iter&, const _Up&>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator& operator=(const move_iterator<_Up>& __u) { + __current_ = __u.base(); + return *this; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 _Iter base() const { return __current_; } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference operator*() const { + return static_cast(*__current_); + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference operator[](difference_type __n) const { + return static_cast(__current_[__n]); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator operator++(int) { + move_iterator __tmp(*this); + ++__current_; + return __tmp; + } +#endif // _LIBCPP_STD_VER >= 20 + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator& operator--() { + --__current_; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator operator--(int) { + move_iterator __tmp(*this); + --__current_; + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator operator+(difference_type __n) const { + return move_iterator(__current_ + __n); + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator& operator+=(difference_type __n) { + __current_ += __n; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator operator-(difference_type __n) const { + return move_iterator(__current_ - __n); + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator& operator-=(difference_type __n) { + __current_ -= __n; + return *this; + } + +#if _LIBCPP_STD_VER >= 20 + template _Sent> + friend _LIBCPP_HIDE_FROM_ABI constexpr bool operator==(const move_iterator& __x, const move_sentinel<_Sent>& __y) + requires __move_iter_comparable<_Iter, _Sent> + { + return __x.base() == __y.base(); + } - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - _Iter base() const { return __current_; } - - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - reference operator*() const { return static_cast(*__current_); } - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - reference operator[](difference_type __n) const { return static_cast(__current_[__n]); } - - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator operator++(int) { move_iterator __tmp(*this); ++__current_; return __tmp; } -#endif // _LIBCPP_STD_VER > 17 - - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator& operator--() { --__current_; return *this; } - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator operator--(int) { move_iterator __tmp(*this); --__current_; return __tmp; } - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator operator+(difference_type __n) const { return move_iterator(__current_ + __n); } - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator& operator+=(difference_type __n) { __current_ += __n; return *this; } - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator operator-(difference_type __n) const { return move_iterator(__current_ - __n); } - _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 - move_iterator& operator-=(difference_type __n) { __current_ -= __n; return *this; } - -#if _LIBCPP_STD_VER > 17 - template _Sent> - friend _LIBCPP_HIDE_FROM_ABI constexpr - bool operator==(const move_iterator& __x, const move_sentinel<_Sent>& __y) - requires __move_iter_comparable<_Iter, _Sent> - { - return __x.base() == __y.base(); - } + template _Sent> + friend _LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Iter> + operator-(const move_sentinel<_Sent>& __x, const move_iterator& __y) { + return __x.base() - __y.base(); + } - template _Sent> - friend _LIBCPP_HIDE_FROM_ABI constexpr - iter_difference_t<_Iter> operator-(const move_sentinel<_Sent>& __x, const move_iterator& __y) - { - return __x.base() - __y.base(); - } + template _Sent> + friend _LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Iter> + operator-(const move_iterator& __x, const move_sentinel<_Sent>& __y) { + return __x.base() - __y.base(); + } - template _Sent> - friend _LIBCPP_HIDE_FROM_ABI constexpr - iter_difference_t<_Iter> operator-(const move_iterator& __x, const move_sentinel<_Sent>& __y) - { - return __x.base() - __y.base(); - } + friend _LIBCPP_HIDE_FROM_ABI constexpr iter_rvalue_reference_t<_Iter> + iter_move(const move_iterator& __i) noexcept(noexcept(ranges::iter_move(__i.__current_))) { + return ranges::iter_move(__i.__current_); + } - friend _LIBCPP_HIDE_FROM_ABI constexpr - iter_rvalue_reference_t<_Iter> iter_move(const move_iterator& __i) - noexcept(noexcept(ranges::iter_move(__i.__current_))) - { - return ranges::iter_move(__i.__current_); - } - - template _It2> - friend _LIBCPP_HIDE_FROM_ABI constexpr - void iter_swap(const move_iterator& __x, const move_iterator<_It2>& __y) - noexcept(noexcept(ranges::iter_swap(__x.__current_, __y.__current_))) - { - return ranges::iter_swap(__x.__current_, __y.__current_); - } -#endif // _LIBCPP_STD_VER > 17 + template _It2> + friend _LIBCPP_HIDE_FROM_ABI constexpr void + iter_swap(const move_iterator& __x, + const move_iterator<_It2>& __y) noexcept(noexcept(ranges::iter_swap(__x.__current_, __y.__current_))) { + return ranges::iter_swap(__x.__current_, __y.__current_); + } +#endif // _LIBCPP_STD_VER >= 20 private: - template friend class move_iterator; + template + friend class move_iterator; - _Iter __current_; + _Iter __current_; }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(move_iterator); template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool operator==(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() == __y.base(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool +operator==(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) { + return __x.base() == __y.base(); } #if _LIBCPP_STD_VER <= 17 template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool operator!=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() != __y.base(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool +operator!=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) { + return __x.base() != __y.base(); } #endif // _LIBCPP_STD_VER <= 17 template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool operator<(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() < __y.base(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool +operator<(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) { + return __x.base() < __y.base(); } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool operator>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() > __y.base(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool +operator>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) { + return __x.base() > __y.base(); } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool operator<=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() <= __y.base(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool +operator<=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) { + return __x.base() <= __y.base(); } template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool operator>=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() >= __y.base(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool +operator>=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) { + return __x.base() >= __y.base(); } -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template _Iter2> -inline _LIBCPP_HIDE_FROM_ABI constexpr -auto operator<=>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) - -> compare_three_way_result_t<_Iter1, _Iter2> -{ - return __x.base() <=> __y.base(); +inline _LIBCPP_HIDE_FROM_ABI constexpr auto +operator<=>(const move_iterator<_Iter1>& __x, + const move_iterator<_Iter2>& __y) -> compare_three_way_result_t<_Iter1, _Iter2> { + return __x.base() <=> __y.base(); } -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #ifndef _LIBCPP_CXX03_LANG template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto operator-(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) - -> decltype(__x.base() - __y.base()) -{ - return __x.base() - __y.base(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto +operator-(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -> decltype(__x.base() - __y.base()) { + return __x.base() - __y.base(); } #else template -inline _LIBCPP_HIDE_FROM_ABI -typename move_iterator<_Iter1>::difference_type -operator-(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() - __y.base(); +inline _LIBCPP_HIDE_FROM_ABI typename move_iterator<_Iter1>::difference_type +operator-(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) { + return __x.base() - __y.base(); } #endif // !_LIBCPP_CXX03_LANG -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template -inline _LIBCPP_HIDE_FROM_ABI constexpr -move_iterator<_Iter> operator+(iter_difference_t<_Iter> __n, const move_iterator<_Iter>& __x) - requires requires { { __x.base() + __n } -> same_as<_Iter>; } +inline _LIBCPP_HIDE_FROM_ABI constexpr move_iterator<_Iter> +operator+(iter_difference_t<_Iter> __n, const move_iterator<_Iter>& __x) + requires requires { + { __x.base() + __n } -> same_as<_Iter>; + } { - return __x + __n; + return __x + __n; } #else template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -move_iterator<_Iter> -operator+(typename move_iterator<_Iter>::difference_type __n, const move_iterator<_Iter>& __x) -{ - return move_iterator<_Iter>(__x.base() + __n); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator<_Iter> +operator+(typename move_iterator<_Iter>::difference_type __n, const move_iterator<_Iter>& __x) { + return move_iterator<_Iter>(__x.base() + __n); } -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 + +#if _LIBCPP_STD_VER >= 20 +template + requires(!sized_sentinel_for<_Iter1, _Iter2>) +inline constexpr bool disable_sized_sentinel_for, move_iterator<_Iter2>> = true; +#endif // _LIBCPP_STD_VER >= 20 template -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 -move_iterator<_Iter> -make_move_iterator(_Iter __i) -{ - return move_iterator<_Iter>(std::move(__i)); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 move_iterator<_Iter> make_move_iterator(_Iter __i) { + return move_iterator<_Iter>(std::move(__i)); } _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_MOVE_ITERATOR_H diff --git a/include/c++/v1/__iterator/move_sentinel.h b/include/c++/v1/__iterator/move_sentinel.h index 0d7336a1..4a2a09ef 100644 --- a/include/c++/v1/__iterator/move_sentinel.h +++ b/include/c++/v1/__iterator/move_sentinel.h @@ -19,41 +19,43 @@ # pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template -class _LIBCPP_TEMPLATE_VIS move_sentinel -{ +class _LIBCPP_TEMPLATE_VIS move_sentinel { public: - _LIBCPP_HIDE_FROM_ABI - move_sentinel() = default; + _LIBCPP_HIDE_FROM_ABI move_sentinel() = default; - _LIBCPP_HIDE_FROM_ABI constexpr - explicit move_sentinel(_Sent __s) : __last_(std::move(__s)) {} + _LIBCPP_HIDE_FROM_ABI constexpr explicit move_sentinel(_Sent __s) : __last_(std::move(__s)) {} template requires convertible_to - _LIBCPP_HIDE_FROM_ABI constexpr - move_sentinel(const move_sentinel<_S2>& __s) : __last_(__s.base()) {} + _LIBCPP_HIDE_FROM_ABI constexpr move_sentinel(const move_sentinel<_S2>& __s) : __last_(__s.base()) {} template requires assignable_from<_Sent&, const _S2&> - _LIBCPP_HIDE_FROM_ABI constexpr - move_sentinel& operator=(const move_sentinel<_S2>& __s) - { __last_ = __s.base(); return *this; } + _LIBCPP_HIDE_FROM_ABI constexpr move_sentinel& operator=(const move_sentinel<_S2>& __s) { + __last_ = __s.base(); + return *this; + } - constexpr _Sent base() const { return __last_; } + _LIBCPP_HIDE_FROM_ABI constexpr _Sent base() const { return __last_; } private: - _Sent __last_ = _Sent(); + _Sent __last_ = _Sent(); }; _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(move_sentinel); -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP___ITERATOR_MOVE_SENTINEL_H diff --git a/include/c++/v1/__iterator/next.h b/include/c++/v1/__iterator/next.h index 49970ae2..21d3688a 100644 --- a/include/c++/v1/__iterator/next.h +++ b/include/c++/v1/__iterator/next.h @@ -24,18 +24,19 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - typename enable_if<__is_cpp17_input_iterator<_InputIter>::value, _InputIter>::type - next(_InputIter __x, typename iterator_traits<_InputIter>::difference_type __n = 1) { - _LIBCPP_ASSERT(__n >= 0 || __is_cpp17_bidirectional_iterator<_InputIter>::value, - "Attempt to next(it, n) with negative n on a non-bidirectional iterator"); - - _VSTD::advance(__x, __n); +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 _InputIter +next(_InputIter __x, typename iterator_traits<_InputIter>::difference_type __n = 1) { + // Calling `advance` with a negative value on a non-bidirectional iterator is a no-op in the current implementation. + // Note that this check duplicates the similar check in `std::advance`. + _LIBCPP_ASSERT_PEDANTIC(__n >= 0 || __has_bidirectional_iterator_category<_InputIter>::value, + "Attempt to next(it, n) with negative n on a non-bidirectional iterator"); + + std::advance(__x, __n); return __x; } -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [range.iter.op.next] @@ -44,15 +45,13 @@ namespace __next { struct __fn { template - _LIBCPP_HIDE_FROM_ABI - constexpr _Ip operator()(_Ip __x) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Ip operator()(_Ip __x) const { ++__x; return __x; } template - _LIBCPP_HIDE_FROM_ABI - constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n) const { ranges::advance(__x, __n); return __x; } @@ -73,11 +72,11 @@ struct __fn { } // namespace __next inline namespace __cpo { - inline constexpr auto next = __next::__fn{}; +inline constexpr auto next = __next::__fn{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/ostream_iterator.h b/include/c++/v1/__iterator/ostream_iterator.h index d16f5a26..05697e62 100644 --- a/include/c++/v1/__iterator/ostream_iterator.h +++ b/include/c++/v1/__iterator/ostream_iterator.h @@ -11,11 +11,12 @@ #define _LIBCPP___ITERATOR_OSTREAM_ITERATOR_H #include <__config> +#include <__fwd/ostream.h> +#include <__fwd/string.h> #include <__iterator/iterator.h> #include <__iterator/iterator_traits.h> #include <__memory/addressof.h> #include -#include // for forward declarations of char_traits and basic_ostream #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -30,40 +31,43 @@ class _LIBCPP_TEMPLATE_VIS ostream_iterator : public iterator #endif { -_LIBCPP_SUPPRESS_DEPRECATED_POP + _LIBCPP_SUPPRESS_DEPRECATED_POP + public: - typedef output_iterator_tag iterator_category; - typedef void value_type; -#if _LIBCPP_STD_VER > 17 - typedef ptrdiff_t difference_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; +#if _LIBCPP_STD_VER >= 20 + typedef ptrdiff_t difference_type; #else - typedef void difference_type; + typedef void difference_type; #endif - typedef void pointer; - typedef void reference; - typedef _CharT char_type; - typedef _Traits traits_type; - typedef basic_ostream<_CharT, _Traits> ostream_type; + typedef void pointer; + typedef void reference; + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_ostream<_CharT, _Traits> ostream_type; private: - ostream_type* __out_stream_; - const char_type* __delim_; + ostream_type* __out_stream_; + const char_type* __delim_; + public: - _LIBCPP_INLINE_VISIBILITY ostream_iterator(ostream_type& __s) _NOEXCEPT - : __out_stream_(_VSTD::addressof(__s)), __delim_(nullptr) {} - _LIBCPP_INLINE_VISIBILITY ostream_iterator(ostream_type& __s, const _CharT* __delimiter) _NOEXCEPT - : __out_stream_(_VSTD::addressof(__s)), __delim_(__delimiter) {} - _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator=(const _Tp& __value) - { - *__out_stream_ << __value; - if (__delim_) - *__out_stream_ << __delim_; - return *this; - } + _LIBCPP_HIDE_FROM_ABI ostream_iterator(ostream_type& __s) _NOEXCEPT + : __out_stream_(std::addressof(__s)), + __delim_(nullptr) {} + _LIBCPP_HIDE_FROM_ABI ostream_iterator(ostream_type& __s, const _CharT* __delimiter) _NOEXCEPT + : __out_stream_(std::addressof(__s)), + __delim_(__delimiter) {} + _LIBCPP_HIDE_FROM_ABI ostream_iterator& operator=(const _Tp& __value) { + *__out_stream_ << __value; + if (__delim_) + *__out_stream_ << __delim_; + return *this; + } - _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator*() {return *this;} - _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator++() {return *this;} - _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator++(int) {return *this;} + _LIBCPP_HIDE_FROM_ABI ostream_iterator& operator*() { return *this; } + _LIBCPP_HIDE_FROM_ABI ostream_iterator& operator++() { return *this; } + _LIBCPP_HIDE_FROM_ABI ostream_iterator& operator++(int) { return *this; } }; _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/ostreambuf_iterator.h b/include/c++/v1/__iterator/ostreambuf_iterator.h index b75f7b6e..dda0094d 100644 --- a/include/c++/v1/__iterator/ostreambuf_iterator.h +++ b/include/c++/v1/__iterator/ostreambuf_iterator.h @@ -29,47 +29,42 @@ class _LIBCPP_TEMPLATE_VIS ostreambuf_iterator : public iterator #endif { -_LIBCPP_SUPPRESS_DEPRECATED_POP + _LIBCPP_SUPPRESS_DEPRECATED_POP + public: - typedef output_iterator_tag iterator_category; - typedef void value_type; -#if _LIBCPP_STD_VER > 17 - typedef ptrdiff_t difference_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; +#if _LIBCPP_STD_VER >= 20 + typedef ptrdiff_t difference_type; #else - typedef void difference_type; + typedef void difference_type; #endif - typedef void pointer; - typedef void reference; - typedef _CharT char_type; - typedef _Traits traits_type; - typedef basic_streambuf<_CharT, _Traits> streambuf_type; - typedef basic_ostream<_CharT, _Traits> ostream_type; + typedef void pointer; + typedef void reference; + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_streambuf<_CharT, _Traits> streambuf_type; + typedef basic_ostream<_CharT, _Traits> ostream_type; private: - streambuf_type* __sbuf_; + streambuf_type* __sbuf_; + public: - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator(ostream_type& __s) _NOEXCEPT - : __sbuf_(__s.rdbuf()) {} - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator(streambuf_type* __s) _NOEXCEPT - : __sbuf_(__s) {} - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator=(_CharT __c) - { - if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sputc(__c), traits_type::eof())) - __sbuf_ = nullptr; - return *this; - } - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator*() {return *this;} - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++() {return *this;} - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++(int) {return *this;} - _LIBCPP_INLINE_VISIBILITY bool failed() const _NOEXCEPT {return __sbuf_ == nullptr;} + _LIBCPP_HIDE_FROM_ABI ostreambuf_iterator(ostream_type& __s) _NOEXCEPT : __sbuf_(__s.rdbuf()) {} + _LIBCPP_HIDE_FROM_ABI ostreambuf_iterator(streambuf_type* __s) _NOEXCEPT : __sbuf_(__s) {} + _LIBCPP_HIDE_FROM_ABI ostreambuf_iterator& operator=(_CharT __c) { + if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sputc(__c), traits_type::eof())) + __sbuf_ = nullptr; + return *this; + } + _LIBCPP_HIDE_FROM_ABI ostreambuf_iterator& operator*() { return *this; } + _LIBCPP_HIDE_FROM_ABI ostreambuf_iterator& operator++() { return *this; } + _LIBCPP_HIDE_FROM_ABI ostreambuf_iterator& operator++(int) { return *this; } + _LIBCPP_HIDE_FROM_ABI bool failed() const _NOEXCEPT { return __sbuf_ == nullptr; } - template - friend - _LIBCPP_HIDE_FROM_ABI - ostreambuf_iterator<_Ch, _Tr> - __pad_and_output(ostreambuf_iterator<_Ch, _Tr> __s, - const _Ch* __ob, const _Ch* __op, const _Ch* __oe, - ios_base& __iob, _Ch __fl); + template + friend _LIBCPP_HIDE_FROM_ABI ostreambuf_iterator<_Ch, _Tr> __pad_and_output( + ostreambuf_iterator<_Ch, _Tr> __s, const _Ch* __ob, const _Ch* __op, const _Ch* __oe, ios_base& __iob, _Ch __fl); }; _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/permutable.h b/include/c++/v1/__iterator/permutable.h index 28d193ea..f65ba3bf 100644 --- a/include/c++/v1/__iterator/permutable.h +++ b/include/c++/v1/__iterator/permutable.h @@ -20,15 +20,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template concept permutable = - forward_iterator<_Iterator> && - indirectly_movable_storable<_Iterator, _Iterator> && + forward_iterator<_Iterator> && indirectly_movable_storable<_Iterator, _Iterator> && indirectly_swappable<_Iterator, _Iterator>; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/prev.h b/include/c++/v1/__iterator/prev.h index af1e1bab..2f0e6a08 100644 --- a/include/c++/v1/__iterator/prev.h +++ b/include/c++/v1/__iterator/prev.h @@ -24,17 +24,18 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - typename enable_if<__is_cpp17_input_iterator<_InputIter>::value, _InputIter>::type - prev(_InputIter __x, typename iterator_traits<_InputIter>::difference_type __n = 1) { - _LIBCPP_ASSERT(__n <= 0 || __is_cpp17_bidirectional_iterator<_InputIter>::value, - "Attempt to prev(it, n) with a positive n on a non-bidirectional iterator"); - _VSTD::advance(__x, -__n); +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 _InputIter +prev(_InputIter __x, typename iterator_traits<_InputIter>::difference_type __n = 1) { + // Calling `advance` with a negative value on a non-bidirectional iterator is a no-op in the current implementation. + // Note that this check duplicates the similar check in `std::advance`. + _LIBCPP_ASSERT_PEDANTIC(__n <= 0 || __has_bidirectional_iterator_category<_InputIter>::value, + "Attempt to prev(it, n) with a positive n on a non-bidirectional iterator"); + std::advance(__x, -__n); return __x; } -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [range.iter.op.prev] @@ -43,15 +44,13 @@ namespace __prev { struct __fn { template - _LIBCPP_HIDE_FROM_ABI - constexpr _Ip operator()(_Ip __x) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Ip operator()(_Ip __x) const { --__x; return __x; } template - _LIBCPP_HIDE_FROM_ABI - constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n) const { + _LIBCPP_HIDE_FROM_ABI constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n) const { ranges::advance(__x, -__n); return __x; } @@ -66,11 +65,11 @@ struct __fn { } // namespace __prev inline namespace __cpo { - inline constexpr auto prev = __prev::__fn{}; +inline constexpr auto prev = __prev::__fn{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/projected.h b/include/c++/v1/__iterator/projected.h index 19c076b2..463d07b0 100644 --- a/include/c++/v1/__iterator/projected.h +++ b/include/c++/v1/__iterator/projected.h @@ -12,7 +12,7 @@ #include <__config> #include <__iterator/concepts.h> -#include <__iterator/incrementable_traits.h> +#include <__iterator/incrementable_traits.h> // iter_difference_t #include <__type_traits/remove_cvref.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -21,20 +21,32 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 -template _Proj> -struct projected { - using value_type = remove_cvref_t>; - indirect_result_t<_Proj&, _It> operator*() const; // not defined +template +struct __projected_impl { + struct __type { + using value_type = remove_cvref_t>; + indirect_result_t<_Proj&, _It> operator*() const; // not defined + }; }; -template -struct incrementable_traits> { - using difference_type = iter_difference_t<_It>; +template +struct __projected_impl<_It, _Proj> { + struct __type { + using value_type = remove_cvref_t>; + using difference_type = iter_difference_t<_It>; + indirect_result_t<_Proj&, _It> operator*() const; // not defined + }; }; -#endif // _LIBCPP_STD_VER > 17 +// Note that we implement std::projected in a way that satisfies P2538R1 even in standard +// modes before C++26 to avoid breaking the ABI between standard modes (even though ABI +// breaks with std::projected are expected to have essentially no impact). +template _Proj> +using projected = typename __projected_impl<_It, _Proj>::__type; + +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/readable_traits.h b/include/c++/v1/__iterator/readable_traits.h index 8f17757c..25e74567 100644 --- a/include/c++/v1/__iterator/readable_traits.h +++ b/include/c++/v1/__iterator/readable_traits.h @@ -26,66 +26,55 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 // [readable.traits] -template struct __cond_value_type {}; +template +struct __cond_value_type {}; -template -requires is_object_v<_Tp> -struct __cond_value_type<_Tp> { using value_type = remove_cv_t<_Tp>; }; +template + requires is_object_v<_Tp> +struct __cond_value_type<_Tp> { + using value_type = remove_cv_t<_Tp>; +}; -template +template concept __has_member_value_type = requires { typename _Tp::value_type; }; -template +template concept __has_member_element_type = requires { typename _Tp::element_type; }; -template struct indirectly_readable_traits {}; +template +struct indirectly_readable_traits {}; -template -requires is_array_v<_Ip> +template + requires is_array_v<_Ip> struct indirectly_readable_traits<_Ip> { using value_type = remove_cv_t>; }; -template +template struct indirectly_readable_traits : indirectly_readable_traits<_Ip> {}; -template +template struct indirectly_readable_traits<_Tp*> : __cond_value_type<_Tp> {}; -template<__has_member_value_type _Tp> -struct indirectly_readable_traits<_Tp> - : __cond_value_type {}; +template <__has_member_value_type _Tp> +struct indirectly_readable_traits<_Tp> : __cond_value_type {}; -template<__has_member_element_type _Tp> -struct indirectly_readable_traits<_Tp> - : __cond_value_type {}; +template <__has_member_element_type _Tp> +struct indirectly_readable_traits<_Tp> : __cond_value_type {}; -template<__has_member_value_type _Tp> +template <__has_member_value_type _Tp> requires __has_member_element_type<_Tp> struct indirectly_readable_traits<_Tp> {}; -template<__has_member_value_type _Tp> +template <__has_member_value_type _Tp> requires __has_member_element_type<_Tp> && - same_as, - remove_cv_t> -struct indirectly_readable_traits<_Tp> - : __cond_value_type {}; - -template -struct iterator_traits; - -// Let `RI` be `remove_cvref_t`. The type `iter_value_t` denotes -// `indirectly_readable_traits::value_type` if `iterator_traits` names a specialization -// generated from the primary template, and `iterator_traits::value_type` otherwise. -template -using iter_value_t = typename conditional_t<__is_primary_template > >::value, - indirectly_readable_traits >, - iterator_traits > >::value_type; + same_as, remove_cv_t> +struct indirectly_readable_traits<_Tp> : __cond_value_type {}; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/reverse_access.h b/include/c++/v1/__iterator/reverse_access.h index 79b599c4..54d7270b 100644 --- a/include/c++/v1/__iterator/reverse_access.h +++ b/include/c++/v1/__iterator/reverse_access.h @@ -21,79 +21,59 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np]) -{ - return reverse_iterator<_Tp*>(__array + _Np); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np]) { + return reverse_iterator<_Tp*>(__array + _Np); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -reverse_iterator<_Tp*> rend(_Tp (&__array)[_Np]) -{ - return reverse_iterator<_Tp*>(__array); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator<_Tp*> rend(_Tp (&__array)[_Np]) { + return reverse_iterator<_Tp*>(__array); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -reverse_iterator rbegin(initializer_list<_Ep> __il) -{ - return reverse_iterator(__il.end()); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rbegin(initializer_list<_Ep> __il) { + return reverse_iterator(__il.end()); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -reverse_iterator rend(initializer_list<_Ep> __il) -{ - return reverse_iterator(__il.begin()); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rend(initializer_list<_Ep> __il) { + return reverse_iterator(__il.begin()); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto rbegin(_Cp& __c) -> decltype(__c.rbegin()) -{ - return __c.rbegin(); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto rbegin(_Cp& __c) -> decltype(__c.rbegin()) { + return __c.rbegin(); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto rbegin(const _Cp& __c) -> decltype(__c.rbegin()) -{ - return __c.rbegin(); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto rbegin(const _Cp& __c) -> decltype(__c.rbegin()) { + return __c.rbegin(); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto rend(_Cp& __c) -> decltype(__c.rend()) -{ - return __c.rend(); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto rend(_Cp& __c) -> decltype(__c.rend()) { + return __c.rend(); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto rend(const _Cp& __c) -> decltype(__c.rend()) -{ - return __c.rend(); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto rend(const _Cp& __c) -> decltype(__c.rend()) { + return __c.rend(); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto crbegin(const _Cp& __c) -> decltype(_VSTD::rbegin(__c)) -{ - return _VSTD::rbegin(__c); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto crbegin(const _Cp& __c) -> decltype(std::rbegin(__c)) { + return std::rbegin(__c); } template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto crend(const _Cp& __c) -> decltype(_VSTD::rend(__c)) -{ - return _VSTD::rend(__c); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto crend(const _Cp& __c) -> decltype(std::rend(__c)) { + return std::rend(__c); } -#endif // _LIBCPP_STD_VER > 11 +#endif // _LIBCPP_STD_VER >= 14 _LIBCPP_END_NAMESPACE_STD diff --git a/include/c++/v1/__iterator/reverse_iterator.h b/include/c++/v1/__iterator/reverse_iterator.h index f272e03c..50c0f21e 100644 --- a/include/c++/v1/__iterator/reverse_iterator.h +++ b/include/c++/v1/__iterator/reverse_iterator.h @@ -34,7 +34,7 @@ #include <__type_traits/enable_if.h> #include <__type_traits/is_assignable.h> #include <__type_traits/is_convertible.h> -#include <__type_traits/is_nothrow_copy_constructible.h> +#include <__type_traits/is_nothrow_constructible.h> #include <__type_traits/is_pointer.h> #include <__type_traits/is_same.h> #include <__utility/declval.h> @@ -57,440 +57,283 @@ class _LIBCPP_TEMPLATE_VIS reverse_iterator typename iterator_traits<_Iter>::reference> #endif { -_LIBCPP_SUPPRESS_DEPRECATED_POP + _LIBCPP_SUPPRESS_DEPRECATED_POP + private: #ifndef _LIBCPP_ABI_NO_ITERATOR_BASES - _Iter __t_; // no longer used as of LWG #2360, not removed due to ABI break + _Iter __t_; // no longer used as of LWG #2360, not removed due to ABI break #endif -#if _LIBCPP_STD_VER > 17 - static_assert(__is_cpp17_bidirectional_iterator<_Iter>::value || bidirectional_iterator<_Iter>, - "reverse_iterator requires It to be a bidirectional iterator."); -#endif // _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 + static_assert(__has_bidirectional_iterator_category<_Iter>::value || bidirectional_iterator<_Iter>, + "reverse_iterator requires It to be a bidirectional iterator."); +#endif // _LIBCPP_STD_VER >= 20 protected: - _Iter current; + _Iter current; + public: - using iterator_type = _Iter; - - using iterator_category = _If<__is_cpp17_random_access_iterator<_Iter>::value, - random_access_iterator_tag, - typename iterator_traits<_Iter>::iterator_category>; - using pointer = typename iterator_traits<_Iter>::pointer; -#if _LIBCPP_STD_VER > 17 - using iterator_concept = _If, random_access_iterator_tag, bidirectional_iterator_tag>; - using value_type = iter_value_t<_Iter>; - using difference_type = iter_difference_t<_Iter>; - using reference = iter_reference_t<_Iter>; + using iterator_type = _Iter; + + using iterator_category = + _If<__has_random_access_iterator_category<_Iter>::value, + random_access_iterator_tag, + typename iterator_traits<_Iter>::iterator_category>; + using pointer = typename iterator_traits<_Iter>::pointer; +#if _LIBCPP_STD_VER >= 20 + using iterator_concept = _If, random_access_iterator_tag, bidirectional_iterator_tag>; + using value_type = iter_value_t<_Iter>; + using difference_type = iter_difference_t<_Iter>; + using reference = iter_reference_t<_Iter>; #else - using value_type = typename iterator_traits<_Iter>::value_type; - using difference_type = typename iterator_traits<_Iter>::difference_type; - using reference = typename iterator_traits<_Iter>::reference; + using value_type = typename iterator_traits<_Iter>::value_type; + using difference_type = typename iterator_traits<_Iter>::difference_type; + using reference = typename iterator_traits<_Iter>::reference; #endif #ifndef _LIBCPP_ABI_NO_ITERATOR_BASES - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator() : __t_(), current() {} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - explicit reverse_iterator(_Iter __x) : __t_(__x), current(__x) {} - - template ::value && is_convertible<_Up const&, _Iter>::value - > > - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator(const reverse_iterator<_Up>& __u) - : __t_(__u.base()), current(__u.base()) - { } - - template ::value && - is_convertible<_Up const&, _Iter>::value && - is_assignable<_Iter&, _Up const&>::value - > > - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator& operator=(const reverse_iterator<_Up>& __u) { - __t_ = current = __u.base(); - return *this; - } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator() : __t_(), current() {} + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 explicit reverse_iterator(_Iter __x) : __t_(__x), current(__x) {} + + template ::value && is_convertible<_Up const&, _Iter>::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator(const reverse_iterator<_Up>& __u) + : __t_(__u.base()), current(__u.base()) {} + + template ::value && is_convertible<_Up const&, _Iter>::value && + is_assignable<_Iter&, _Up const&>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator& operator=(const reverse_iterator<_Up>& __u) { + __t_ = current = __u.base(); + return *this; + } #else - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator() : current() {} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - explicit reverse_iterator(_Iter __x) : current(__x) {} - - template ::value && is_convertible<_Up const&, _Iter>::value - > > - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator(const reverse_iterator<_Up>& __u) - : current(__u.base()) - { } - - template ::value && - is_convertible<_Up const&, _Iter>::value && - is_assignable<_Iter&, _Up const&>::value - > > - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator& operator=(const reverse_iterator<_Up>& __u) { - current = __u.base(); - return *this; - } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator() : current() {} + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 explicit reverse_iterator(_Iter __x) : current(__x) {} + + template ::value && is_convertible<_Up const&, _Iter>::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator(const reverse_iterator<_Up>& __u) + : current(__u.base()) {} + + template ::value && is_convertible<_Up const&, _Iter>::value && + is_assignable<_Iter&, _Up const&>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator& operator=(const reverse_iterator<_Up>& __u) { + current = __u.base(); + return *this; + } #endif - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - _Iter base() const {return current;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reference operator*() const {_Iter __tmp = current; return *--__tmp;} - -#if _LIBCPP_STD_VER > 17 - _LIBCPP_INLINE_VISIBILITY - constexpr pointer operator->() const - requires is_pointer_v<_Iter> || requires(const _Iter __i) { __i.operator->(); } - { - if constexpr (is_pointer_v<_Iter>) { - return std::prev(current); - } else { - return std::prev(current).operator->(); - } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 _Iter base() const { return current; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference operator*() const { + _Iter __tmp = current; + return *--__tmp; + } + +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI constexpr pointer operator->() const + requires is_pointer_v<_Iter> || requires(const _Iter __i) { __i.operator->(); } + { + if constexpr (is_pointer_v<_Iter>) { + return std::prev(current); + } else { + return std::prev(current).operator->(); } + } #else - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - pointer operator->() const { - return std::addressof(operator*()); - } -#endif // _LIBCPP_STD_VER > 17 - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator& operator++() {--current; return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator operator++(int) {reverse_iterator __tmp(*this); --current; return __tmp;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator& operator--() {++current; return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator operator--(int) {reverse_iterator __tmp(*this); ++current; return __tmp;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator operator+(difference_type __n) const {return reverse_iterator(current - __n);} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator& operator+=(difference_type __n) {current -= __n; return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator operator-(difference_type __n) const {return reverse_iterator(current + __n);} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reverse_iterator& operator-=(difference_type __n) {current += __n; return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 - reference operator[](difference_type __n) const {return *(*this + __n);} - -#if _LIBCPP_STD_VER > 17 - _LIBCPP_HIDE_FROM_ABI friend constexpr - iter_rvalue_reference_t<_Iter> iter_move(const reverse_iterator& __i) - noexcept(is_nothrow_copy_constructible_v<_Iter> && - noexcept(ranges::iter_move(--std::declval<_Iter&>()))) { - auto __tmp = __i.base(); - return ranges::iter_move(--__tmp); - } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pointer operator->() const { return std::addressof(operator*()); } +#endif // _LIBCPP_STD_VER >= 20 - template _Iter2> - _LIBCPP_HIDE_FROM_ABI friend constexpr - void iter_swap(const reverse_iterator& __x, const reverse_iterator<_Iter2>& __y) - noexcept(is_nothrow_copy_constructible_v<_Iter> && - is_nothrow_copy_constructible_v<_Iter2> && - noexcept(ranges::iter_swap(--std::declval<_Iter&>(), --std::declval<_Iter2&>()))) { - auto __xtmp = __x.base(); - auto __ytmp = __y.base(); - ranges::iter_swap(--__xtmp, --__ytmp); - } -#endif // _LIBCPP_STD_VER > 17 + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator& operator++() { + --current; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator operator++(int) { + reverse_iterator __tmp(*this); + --current; + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator& operator--() { + ++current; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator operator--(int) { + reverse_iterator __tmp(*this); + ++current; + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator operator+(difference_type __n) const { + return reverse_iterator(current - __n); + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator& operator+=(difference_type __n) { + current -= __n; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator operator-(difference_type __n) const { + return reverse_iterator(current + __n); + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator& operator-=(difference_type __n) { + current += __n; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference operator[](difference_type __n) const { + return *(*this + __n); + } + +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI friend constexpr iter_rvalue_reference_t<_Iter> iter_move(const reverse_iterator& __i) noexcept( + is_nothrow_copy_constructible_v<_Iter> && noexcept(ranges::iter_move(--std::declval<_Iter&>()))) { + auto __tmp = __i.base(); + return ranges::iter_move(--__tmp); + } + + template _Iter2> + _LIBCPP_HIDE_FROM_ABI friend constexpr void + iter_swap(const reverse_iterator& __x, const reverse_iterator<_Iter2>& __y) noexcept( + is_nothrow_copy_constructible_v<_Iter> && is_nothrow_copy_constructible_v<_Iter2> && + noexcept(ranges::iter_swap(--std::declval<_Iter&>(), --std::declval<_Iter2&>()))) { + auto __xtmp = __x.base(); + auto __ytmp = __y.base(); + ranges::iter_swap(--__xtmp, --__ytmp); + } +#endif // _LIBCPP_STD_VER >= 20 }; template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool operator==(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -#if _LIBCPP_STD_VER > 17 - requires requires { - { __x.base() == __y.base() } -> convertible_to; - } -#endif // _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() == __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 { - return __x.base() == __y.base(); + return __x.base() == __y.base(); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool operator<(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -#if _LIBCPP_STD_VER > 17 - requires requires { - { __x.base() > __y.base() } -> convertible_to; - } -#endif // _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() > __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 { - return __x.base() > __y.base(); + return __x.base() > __y.base(); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool operator!=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -#if _LIBCPP_STD_VER > 17 - requires requires { - { __x.base() != __y.base() } -> convertible_to; - } -#endif // _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() != __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 { - return __x.base() != __y.base(); + return __x.base() != __y.base(); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool operator>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -#if _LIBCPP_STD_VER > 17 - requires requires { - { __x.base() < __y.base() } -> convertible_to; - } -#endif // _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() < __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 { - return __x.base() < __y.base(); + return __x.base() < __y.base(); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool operator>=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -#if _LIBCPP_STD_VER > 17 - requires requires { - { __x.base() <= __y.base() } -> convertible_to; - } -#endif // _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() <= __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 { - return __x.base() <= __y.base(); + return __x.base() <= __y.base(); } template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -bool +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 bool operator<=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -#if _LIBCPP_STD_VER > 17 - requires requires { - { __x.base() >= __y.base() } -> convertible_to; - } -#endif // _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() >= __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 { - return __x.base() >= __y.base(); + return __x.base() >= __y.base(); } -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template _Iter2> -_LIBCPP_HIDE_FROM_ABI constexpr -compare_three_way_result_t<_Iter1, _Iter2> -operator<=>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -{ - return __y.base() <=> __x.base(); +_LIBCPP_HIDE_FROM_ABI constexpr compare_three_way_result_t<_Iter1, _Iter2> +operator<=>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) { + return __y.base() <=> __x.base(); } -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 #ifndef _LIBCPP_CXX03_LANG template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -auto -operator-(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) --> decltype(__y.base() - __x.base()) -{ - return __y.base() - __x.base(); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 auto +operator-(const reverse_iterator<_Iter1>& __x, + const reverse_iterator<_Iter2>& __y) -> decltype(__y.base() - __x.base()) { + return __y.base() - __x.base(); } #else template -inline _LIBCPP_INLINE_VISIBILITY -typename reverse_iterator<_Iter1>::difference_type -operator-(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -{ - return __y.base() - __x.base(); +inline _LIBCPP_HIDE_FROM_ABI typename reverse_iterator<_Iter1>::difference_type +operator-(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) { + return __y.base() - __x.base(); } #endif template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -reverse_iterator<_Iter> -operator+(typename reverse_iterator<_Iter>::difference_type __n, const reverse_iterator<_Iter>& __x) -{ - return reverse_iterator<_Iter>(__x.base() - __n); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator<_Iter> +operator+(typename reverse_iterator<_Iter>::difference_type __n, const reverse_iterator<_Iter>& __x) { + return reverse_iterator<_Iter>(__x.base() - __n); } -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20 template - requires (!sized_sentinel_for<_Iter1, _Iter2>) + requires(!sized_sentinel_for<_Iter1, _Iter2>) inline constexpr bool disable_sized_sentinel_for, reverse_iterator<_Iter2>> = true; -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20 -#if _LIBCPP_STD_VER > 11 +#if _LIBCPP_STD_VER >= 14 template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 -reverse_iterator<_Iter> make_reverse_iterator(_Iter __i) -{ - return reverse_iterator<_Iter>(__i); +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator<_Iter> make_reverse_iterator(_Iter __i) { + return reverse_iterator<_Iter>(__i); } #endif -#if _LIBCPP_STD_VER <= 17 -template -using __unconstrained_reverse_iterator = reverse_iterator<_Iter>; -#else - -// __unconstrained_reverse_iterator allows us to use reverse iterators in the implementation of algorithms by working -// around a language issue in C++20. -// In C++20, when a reverse iterator wraps certain C++20-hostile iterators, calling comparison operators on it will -// result in a compilation error. However, calling comparison operators on the pristine hostile iterator is not -// an error. Thus, we cannot use reverse_iterators in the implementation of an algorithm that accepts a -// C++20-hostile iterator. This class is an internal workaround -- it is a copy of reverse_iterator with -// tweaks to make it support hostile iterators. -// -// A C++20-hostile iterator is one that defines a comparison operator where one of the arguments is an exact match -// and the other requires an implicit conversion, for example: -// friend bool operator==(const BaseIter&, const DerivedIter&); -// -// C++20 rules for rewriting equality operators create another overload of this function with parameters reversed: -// friend bool operator==(const DerivedIter&, const BaseIter&); -// -// This creates an ambiguity in overload resolution. -// -// Clang treats this ambiguity differently in different contexts. When operator== is actually called in the function -// body, the code is accepted with a warning. When a concept requires operator== to be a valid expression, however, -// it evaluates to false. Thus, the implementation of reverse_iterator::operator== can actually call operator== on its -// base iterators, but the constraints on reverse_iterator::operator== prevent it from being considered during overload -// resolution. This class simply removes the problematic constraints from comparison functions. -template -class __unconstrained_reverse_iterator { - _Iter __iter_; - -public: - static_assert(__is_cpp17_bidirectional_iterator<_Iter>::value || bidirectional_iterator<_Iter>); - - using iterator_type = _Iter; - using iterator_category = - _If<__is_cpp17_random_access_iterator<_Iter>::value, random_access_iterator_tag, __iterator_category_type<_Iter>>; - using pointer = __iterator_pointer_type<_Iter>; - using value_type = iter_value_t<_Iter>; - using difference_type = iter_difference_t<_Iter>; - using reference = iter_reference_t<_Iter>; - - _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator() = default; - _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator(const __unconstrained_reverse_iterator&) = default; - _LIBCPP_HIDE_FROM_ABI constexpr explicit __unconstrained_reverse_iterator(_Iter __iter) : __iter_(__iter) {} - - _LIBCPP_HIDE_FROM_ABI constexpr _Iter base() const { return __iter_; } - _LIBCPP_HIDE_FROM_ABI constexpr reference operator*() const { - auto __tmp = __iter_; - return *--__tmp; - } - - _LIBCPP_HIDE_FROM_ABI constexpr pointer operator->() const { - if constexpr (is_pointer_v<_Iter>) { - return std::prev(__iter_); - } else { - return std::prev(__iter_).operator->(); - } - } - - _LIBCPP_HIDE_FROM_ABI friend constexpr - iter_rvalue_reference_t<_Iter> iter_move(const __unconstrained_reverse_iterator& __i) - noexcept(is_nothrow_copy_constructible_v<_Iter> && - noexcept(ranges::iter_move(--std::declval<_Iter&>()))) { - auto __tmp = __i.base(); - return ranges::iter_move(--__tmp); - } - - _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator& operator++() { - --__iter_; - return *this; - } - - _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator operator++(int) { - auto __tmp = *this; - --__iter_; - return __tmp; - } - - _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator& operator--() { - ++__iter_; - return *this; - } - - _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator operator--(int) { - auto __tmp = *this; - ++__iter_; - return __tmp; - } - - _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator& operator+=(difference_type __n) { - __iter_ -= __n; - return *this; - } - - _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator& operator-=(difference_type __n) { - __iter_ += __n; - return *this; - } - - _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator operator+(difference_type __n) const { - return __unconstrained_reverse_iterator(__iter_ - __n); - } - - _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator operator-(difference_type __n) const { - return __unconstrained_reverse_iterator(__iter_ + __n); - } - - _LIBCPP_HIDE_FROM_ABI constexpr difference_type operator-(const __unconstrained_reverse_iterator& __other) const { - return __other.__iter_ - __iter_; - } - - _LIBCPP_HIDE_FROM_ABI constexpr auto operator[](difference_type __n) const { return *(*this + __n); } - - // Deliberately unconstrained unlike the comparison functions in `reverse_iterator` -- see the class comment for the - // rationale. - _LIBCPP_HIDE_FROM_ABI friend constexpr bool - operator==(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { - return __lhs.base() == __rhs.base(); - } - - _LIBCPP_HIDE_FROM_ABI friend constexpr bool - operator!=(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { - return __lhs.base() != __rhs.base(); - } - - _LIBCPP_HIDE_FROM_ABI friend constexpr bool - operator<(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { - return __lhs.base() > __rhs.base(); - } - - _LIBCPP_HIDE_FROM_ABI friend constexpr bool - operator>(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { - return __lhs.base() < __rhs.base(); - } - - _LIBCPP_HIDE_FROM_ABI friend constexpr bool - operator<=(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { - return __lhs.base() >= __rhs.base(); - } - - _LIBCPP_HIDE_FROM_ABI friend constexpr bool - operator>=(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { - return __lhs.base() <= __rhs.base(); - } -}; - -#endif // _LIBCPP_STD_VER <= 17 +#if _LIBCPP_STD_VER >= 20 +template +_LIBCPP_HIDE_FROM_ABI constexpr ranges::subrange>, + reverse_iterator>> +__reverse_range(_Range&& __range) { + auto __first = ranges::begin(__range); + return {std::make_reverse_iterator(ranges::next(__first, ranges::end(__range))), std::make_reverse_iterator(__first)}; +} +#endif -template